对GMX的深度解读:分散永续合约交易所

摘要:2GMX的核心卖点去中心化。GMX是一个去中心化的永续合约交易平台,所有资产由智能合约保管,智能合约开源,所有运营数据也是公开透明的。"size":uint256,//Position大小"collateral":uint256,//抵押品价格USD...

0 GMX项目发展史

在2020年10月,xvi10启动了 xvix-contracts

项目,并部署到了Ethereum Mainnet。 在2021年3月,xvi10把 xvix-contracts

升级为 gambit-contracts

,并部署到了BSC。 在2021年9月,xvi10基于 gambit-contracts

启动GMX项目,并部署到了Arbitrum One。 在启动一周后,GMX完成了第一次升级,在eth、wbtc和usdc的基础上,添加了link、uni和usdt。 在启动三个月后,GMX,完成了第二次升级,部署到了Avalanche链上。

1 GMX的产品设计目标

GMX的产品设计目标是打造一个去中心化的永续合约和现货交易平台。不需要任何注册、KYC和地域限制等限制,用户即可方便地用它进行链上资产交易和合约交易。

2 GMX的核心卖点

  1. 去中心化

    。GMX是一个去中心化的永续合约交易平台,所有资产由智能合约保管,智能合约开源,所有运营数据也是公开透明的。

  2. 全额保证金

    。GMX上面的所有杠杆订单都是有全额保证金的,保障用户的收益能够钢性对付,很多中心化交易所都无法做到全额保证金。

  3. 无需许可Permissionless

    。所有人都可以公平得参与平台做市,并且根据GMX和GLP持有量平等地分到平台的盈利。

  4. 市场报价去中心化

    。系统报价主要由ChainLink和报价机器人组成,报价公开透明,有效避免了恶意插针等扰乱市场的行为。

3 GMX的系统整体设计

3.1 GMX系统架构图

对GMX的深度解读:分散永续合约交易所

其中,Vault合约是整个GMX的核心,负责管理GMX平台的全部资产。

3.2 系统核心数据模型

{
	

"id": keccak256(_account, _collateralToken, _indexToken, _isLong),

// 仓位ID

"size": uint256,

// Position大小

"collateral": uint256,

// 抵押品价格 USD

"averagePrice": uint256,

// 平均持仓价格 USD

"entryFundingRate": uint256,

// 入场资金费率

"reserveAmount": uint256,

// 抵押品token储备数量

"realisedPnl": int256,

// 已兑付盈亏

"lastIncreasedTime": uint256,

// 最后加仓时间 }

盈亏USD价值计算:

delta = position.size * (currentPrice - position.averagePrice) / position.averagePrice

4 GMX核心业务逻辑解读

了解了GMX系统设计框架,那么解析来就逐个解析它的核心业务流程。

4.1 GMX加减仓业务逻辑

4.1.1 GMX加减仓业务流程

对GMX的深度解读:分散永续合约交易所

创建订单流程

  1. 用户在Web页面发起市价或者限价单,并发送Transaction到链上。

  2. Transaction会根据用户的提交参数,选择调用市价单或者限价单合约来创建订单。

  3. 结束,等待交易机器人执行交易。


执行订单流程

  1. 执行交易机器人根据市场价选择执行市价单或者限价单,并发送交易到链上。

  2. Transaction会根据会根据机器人的提交参数,选择调用市价单或者限价单合约和执行订单。

  3. 市价单或者限价单合约会调用Vault合约来执行加减仓操作。

4.1.2 GMX加减仓流程解读

从加减仓业务流程中可以看出,订单的创建和执行是2个独立的步骤。首先,用户创建市价单和限价单,并由市价单合约和限价单合约来保存订单数据。然后,订单执行机器人会异步调用市价单合约和限价单合约来执行订单。订单执行机器人可以根据当前的市价选择哪些订单可以被执行。

手续费 = 交易手续费 + 资金费用

  1. 交易手续费:价减仓USD金额 * 0.1%。

  2. 资金费用:仓位总USD价值 * 时间间隔 * 单位USD单位时间间隔的费率。

爆仓条件

另外还需要判断是否爆仓,满足一下条件之一就有可能爆仓。

  1. 条件一:抵押品总USD价值 + 仓位盈亏USD价值 < 资金USD费用 + 清算USD费用。

  2. 条件二:(抵押品总USD价值 + 仓位盈亏USD价值) * 最大杠杆倍数 < 仓位总USD价值。 其中,清算USD费用由管理员设置。

相关合约地址

合约名称

合约地址

市价单合约

0xb87a436b93ffe9d75c5cfa7bacfff96430b09868

限价单合约

0x09f77e8a13de9a35a7231028187e9fd5db8a2acb

Vault合约

0x489ee077994b6658eafa855c308275ead8097c4a

相关交易操作交易Hash

操作名称

交易Hash

用户发起市价单加仓交易

0x3230e702a44c6029790d279d0a11e87f89474a9fec251aa0b7f5070aab38104b

用户发起市价单减仓交易

0x7d359cb6a1744f87c6b4cc1ff93a8b8ee9fc6bbfa73227e8c7d8b59214a8a368

执行机器人执行市价单

0x5f5a3a90ed30b099ad456f14e7ea580cea3f25cd4bdf2d491ae5e18eadd87ff2

执行机器人执行限价单

0x3cc5b3bd1fc5efeba0cbf1cfc5752773d9476c15b2fb8cc3bb5dc02b8480b5af

4.2 GMX清算业务逻辑

4.2.1 GMX清算业务流程

对GMX的深度解读:分散永续合约交易所


清算流程

  1. 清算机器人发送清算交易,并广播到链上

  2. 仓位管理合约调用Vault合约执行清算逻辑

4.2.2 GMX清算流程解读

清算流程主要清算机器人来发起,清算机器人会监控合约中的Position,并调用合约方法来对爆仓的Position进行清算。完成清算任务后,清算机器人收到一笔清算手续费。

仓位清算条件

满足一下条件之一就可以被清算

  1. 条件一:抵押品总USD价值 + 仓位盈亏USD价值 < 资金USD费用 + 清算USD费用

  2. 条件二:(抵押品总USD价值 + 仓位盈亏USD价值) * 最大杠杆倍数 < 仓位总USD价值 其中,清算USD费用大小由管理员设置。

相关合约地址

合约名称

合约地址

仓位管理合约

0x75e42e6f01baf1d6022bea862a28774a9f8a4a0c

Vault合约

0x489ee077994b6658eafa855c308275ead8097c4a

相关交易操作交易Hash

操作名称

交易Hash

清算机器人发起清算流程

0xccca7adf093d4e20ed25d2d479419a1efaac964c337beea958f214b4db195c34

4.3 GMX现货交易业务逻辑

4.3.1 GMX现货交易业务流程

对GMX的深度解读:分散永续合约交易所

现货交易流程

  1. 用户发起现货交易,并广播到链上。

  2. Router合约调用Vault合约执行现货交易。

  3. Vault合约从Token价格合约获取价格,并执行交易

4.3.2 GMX现货交易流程解读

GMX的现货交易不是主流的AMM,而是通过Chainlink获取TokenIn价格,然后计算出TokenOut的数量。具体计算过程如下

  1. 先从Token价格合约获取tokenInUSDPrice和tokenOutUSDPrice。

  2. 计算tokenOutAmount:tokenOutAmount = tokenInAmount * tokenInUSDPrice / tokenOutUSDPrice。

相关合约地址

合约名称

合约地址

Router合约

0xabbc5f99639c9b6bcb58544ddf04efa6802f4064

Vault合约

0x489ee077994b6658eafa855c308275ead8097c4a

Token价格合约

0x2d68011bca022ed0e474264145f46cc4de96a002

相关交易操作交易Hash

操作名称

交易Hash

用户发起现货交易

0x0da7809c5f6372b5cc7342493fa405d0215d56ac47167b2682797df3ac4fca64

4.4 GMX质押和解除业务逻辑

4.4.1 GMX质押业务流程

对GMX的深度解读:分散永续合约交易所

GMX质押流程

  1. 用户向RewardRouter合约发起GMX质押。

  2. RewardRouter合约调用sGMX RewardTracker合约,质押GMX并得到sGMX。

  3. RewardRouter合约调用sbGMX RewardTracker合约,质押sGMX并得到sbGMX。

  4. RewardRouter合约调用sbfGMX RewardTracker合约,质押sbGMX并得到sbfGMX。

  5. 用户最终得到sbfGMX。

4.4.2 GMX质押流程解读

质押业务由用户发起,质押核心业务逻辑在RewardRouter核心实现。质押具体逻辑主要由sGMX RewardTracker合约、sbGMX RewardTracker合约和sbfGMX RewardTracker合约来实现,它们的作用分别为

  • sGMX RewardTracker合约是sGMX的ERC20合约,同时负责质押GMX并Mint sGMX。质押GMX的用户可以获取esGMX Token奖励。

  • sbGMX RewardTracker合约是sbGMX的ERC20合约,同时负责质押sGMX并Mint sbGMX。质押sGMX的用户可以获取bnGMX Token奖励。

  • sbfGMX RewardTracker合约是sbfGMX的ERC20合约,同时负责质押sbGMX并Mint sbfGMX。质押sbGMX的用户可以获取平台手续费,以WETH结算。 这样做的好处是RewardTracker合约即作为ERC20合约,又负责了质押业务,节省了合约gas成本。

esGMX是什么

esGMX等同与GMX,但是esGMX无法转账交易。用户可以把esGMX质押到gmxVestor合约,一年时间内esGMX就会在一年时间内线性地转换为GMX。

bnGMX是什么

bnGMX会在restake进行二次质押,并且提升用户的APR。但是在unstake的时候,就会burn掉。

相关合约地址

合约名称

合约地址

RewardRouter合约

0xa906f338cb21815cbc4bc87ace9e68c87ef8d8f1

sGMX RewardTracker合约

0x908c4d94d34924765f1edc22a1dd098397c59dd4

sbGMX RewardTracker合约

0x4d268a7d4c16ceb5a606c173bd974984343fea13

sbfGMX RewardTracker合约

0xd2d1162512f927a7e282ef43a362659e4f2a728f

相关交易操作交易Hash

操作名称

交易Hash

GMX质押

0xf885f7691effca2b0ba23423fa38941d3c2341598c6de208f025375e91d3c4e1

4.4.3 GMX解除质押业务流程

对GMX的深度解读:分散永续合约交易所

GMX解除质押流程

  1. 用户向RewardRouter合约发起GMX解除质押

  2. RewardRouter合约调用sbfGMX RewardTracker合约,解除质押sbfGMX并得到sbGMX

  3. RewardRouter合约调用sbGMX RewardTracker合约,解除质押sbGMX并得到sGMX

  4. RewardRouter合约调用sGMX RewardTracker合约,解除质押sGMX并得到GMX

  5. 用户最终得到GMX

4.4.4 GMX解除质押流程解读

GMX解除质押业务流程就是质押流程的逆向操作,输入是sbfGMX,最终得到GMX。

相关合约地址

合约名称

合约地址

RewardRouter合约

0xa906f338cb21815cbc4bc87ace9e68c87ef8d8f1

sGMX RewardTracker合约

0x908c4d94d34924765f1edc22a1dd098397c59dd4

sbGMX RewardTracker合约

0x4d268a7d4c16ceb5a606c173bd974984343fea13

sbfGMX RewardTracker合约

0xd2d1162512f927a7e282ef43a362659e4f2a728f

相关交易操作交易Hash

操作名称

交易Hash

GMX解除质押

0x1dc5efbc0ddfe09c3596407d1974647b787f77794a415e81df11ff21e8d683c3

4.5 GLP质押和解除业务逻辑

4.5.1 GLP质押业务流程

对GMX的深度解读:分散永续合约交易所

GLP质押流程

  1. 用户调用RewardRouter合约,发起GLP Mint和质押流程。

  2. RewardRouter合约调用GlpManager合约,发起GLP Mint。

  3. GlpManager合约调用Vault合约,消耗eth并mint 相应数量的USDg。

  4. GlpManager合约调用GLP合约,消耗USDg并Mint GLP。

  5. RewardRouter合约调用fGLP RewardTracker合约,质押GLP并得到fGLP。

  6. RewardRouter合约调用fsGLP RewardTracker合约,质押fGLP并得到fsGLP。

  7. 最终用户得到fsGLP。

4.5.2 GLP质押流程解读

GLP的Mint和质押流程需要先通过GlpManager合约,把输入的eth兑换成USDg,1 USDg = 1 USD。再用USDg来兑换GLP。完成GLP兑换后再通过fGLP RewardTracker合约和fsGLP RewardTracker合约的循环质押,最终得到fsGLP。

  • fGLP RewardTracker合约是fGLP的ERC20合约,同时负责质押GLP并Mint fGLP。质押GLP可以获得平台手续费,以WETH结算。

  • fsGLP RewardTracker合约是fsGLP的ERC20合约,同时负责质押fGLP并Mint fsGLP。质押fGLP可以获得esGMX Token奖励。

相关合约地址

合约名称

合约地址

RewardRouter合约

0xa906f338cb21815cbc4bc87ace9e68c87ef8d8f1

GlpManager合约

0x3963ffc9dff443c2a94f21b129d429891e32ec18

Vault合约

0x489ee077994b6658eafa855c308275ead8097c4a

GLP合约

0x4277f8f2c384827b5273592ff7cebd9f2c1ac258

fGLP RewardTracker合约

0x4e971a87900b931ff39d1aad67697f49835400b6

fsGLP RewardTracker合约

0x1addd80e6039594ee970e5872d247bf0414c8903

相关交

相关推荐