摘要: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的核心卖点
去中心化
。GMX是一个去中心化的永续合约交易平台,所有资产由智能合约保管,智能合约开源,所有运营数据也是公开透明的。
全额保证金
。GMX上面的所有杠杆订单都是有全额保证金的,保障用户的收益能够钢性对付,很多中心化交易所都无法做到全额保证金。
无需许可Permissionless
。所有人都可以公平得参与平台做市,并且根据GMX和GLP持有量平等地分到平台的盈利。
市场报价去中心化
。系统报价主要由ChainLink和报价机器人组成,报价公开透明,有效避免了恶意插针等扰乱市场的行为。
3 GMX的系统整体设计
3.1 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加减仓业务流程
创建订单流程
用户在Web页面发起市价或者限价单,并发送Transaction到链上。
Transaction会根据用户的提交参数,选择调用市价单或者限价单合约来创建订单。
结束,等待交易机器人执行交易。
执行订单流程
执行交易机器人根据市场价选择执行市价单或者限价单,并发送交易到链上。
Transaction会根据会根据机器人的提交参数,选择调用市价单或者限价单合约和执行订单。
市价单或者限价单合约会调用Vault合约来执行加减仓操作。
4.1.2 GMX加减仓流程解读
从加减仓业务流程中可以看出,订单的创建和执行是2个独立的步骤。首先,用户创建市价单和限价单,并由市价单合约和限价单合约来保存订单数据。然后,订单执行机器人会异步调用市价单合约和限价单合约来执行订单。订单执行机器人可以根据当前的市价选择哪些订单可以被执行。
手续费 = 交易手续费 + 资金费用
交易手续费:价减仓USD金额 * 0.1%。
资金费用:仓位总USD价值 * 时间间隔 * 单位USD单位时间间隔的费率。
爆仓条件
另外还需要判断是否爆仓,满足一下条件之一就有可能爆仓。
条件一:抵押品总USD价值 + 仓位盈亏USD价值 < 资金USD费用 + 清算USD费用。
条件二:(抵押品总USD价值 + 仓位盈亏USD价值) * 最大杠杆倍数 < 仓位总USD价值。 其中,清算USD费用由管理员设置。
相关合约地址
合约名称 | 合约地址 |
市价单合约 | 0xb87a436b93ffe9d75c5cfa7bacfff96430b09868 |
限价单合约 | 0x09f77e8a13de9a35a7231028187e9fd5db8a2acb |
Vault合约 | 0x489ee077994b6658eafa855c308275ead8097c4a |
相关交易操作交易Hash
操作名称 | 交易Hash |
用户发起市价单加仓交易 | 0x3230e702a44c6029790d279d0a11e87f89474a9fec251aa0b7f5070aab38104b |
用户发起市价单减仓交易 | 0x7d359cb6a1744f87c6b4cc1ff93a8b8ee9fc6bbfa73227e8c7d8b59214a8a368 |
执行机器人执行市价单 | 0x5f5a3a90ed30b099ad456f14e7ea580cea3f25cd4bdf2d491ae5e18eadd87ff2 |
执行机器人执行限价单 | 0x3cc5b3bd1fc5efeba0cbf1cfc5752773d9476c15b2fb8cc3bb5dc02b8480b5af |
4.2 GMX清算业务逻辑
4.2.1 GMX清算业务流程
清算流程
清算机器人发送清算交易,并广播到链上
仓位管理合约调用Vault合约执行清算逻辑
4.2.2 GMX清算流程解读
清算流程主要清算机器人来发起,清算机器人会监控合约中的Position,并调用合约方法来对爆仓的Position进行清算。完成清算任务后,清算机器人收到一笔清算手续费。
仓位清算条件
满足一下条件之一就可以被清算
条件一:抵押品总USD价值 + 仓位盈亏USD价值 < 资金USD费用 + 清算USD费用
条件二:(抵押品总USD价值 + 仓位盈亏USD价值) * 最大杠杆倍数 < 仓位总USD价值 其中,清算USD费用大小由管理员设置。
相关合约地址
合约名称 | 合约地址 |
仓位管理合约 | 0x75e42e6f01baf1d6022bea862a28774a9f8a4a0c |
Vault合约 | 0x489ee077994b6658eafa855c308275ead8097c4a |
相关交易操作交易Hash
操作名称 | 交易Hash |
清算机器人发起清算流程 | 0xccca7adf093d4e20ed25d2d479419a1efaac964c337beea958f214b4db195c34 |
4.3 GMX现货交易业务逻辑
4.3.1 GMX现货交易业务流程
现货交易流程
用户发起现货交易,并广播到链上。
Router合约调用Vault合约执行现货交易。
Vault合约从Token价格合约获取价格,并执行交易
4.3.2 GMX现货交易流程解读
GMX的现货交易不是主流的AMM,而是通过Chainlink获取TokenIn价格,然后计算出TokenOut的数量。具体计算过程如下
先从Token价格合约获取tokenInUSDPrice和tokenOutUSDPrice。
计算tokenOutAmount:tokenOutAmount = tokenInAmount * tokenInUSDPrice / tokenOutUSDPrice。
相关合约地址
合约名称 | 合约地址 |
Router合约 | 0xabbc5f99639c9b6bcb58544ddf04efa6802f4064 |
Vault合约 | 0x489ee077994b6658eafa855c308275ead8097c4a |
Token价格合约 | 0x2d68011bca022ed0e474264145f46cc4de96a002 |
相关交易操作交易Hash
操作名称 | 交易Hash |
用户发起现货交易 | 0x0da7809c5f6372b5cc7342493fa405d0215d56ac47167b2682797df3ac4fca64 |
4.4 GMX质押和解除业务逻辑
4.4.1 GMX质押业务流程
GMX质押流程
用户向RewardRouter合约发起GMX质押。
RewardRouter合约调用sGMX RewardTracker合约,质押GMX并得到sGMX。
RewardRouter合约调用sbGMX RewardTracker合约,质押sGMX并得到sbGMX。
RewardRouter合约调用sbfGMX RewardTracker合约,质押sbGMX并得到sbfGMX。
用户最终得到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解除质押流程
用户向RewardRouter合约发起GMX解除质押
RewardRouter合约调用sbfGMX RewardTracker合约,解除质押sbfGMX并得到sbGMX
RewardRouter合约调用sbGMX RewardTracker合约,解除质押sbGMX并得到sGMX
RewardRouter合约调用sGMX RewardTracker合约,解除质押sGMX并得到GMX
用户最终得到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质押业务流程
GLP质押流程
用户调用RewardRouter合约,发起GLP Mint和质押流程。
RewardRouter合约调用GlpManager合约,发起GLP Mint。
GlpManager合约调用Vault合约,消耗eth并mint 相应数量的USDg。
GlpManager合约调用GLP合约,消耗USDg并Mint GLP。
RewardRouter合约调用fGLP RewardTracker合约,质押GLP并得到fGLP。
RewardRouter合约调用fsGLP RewardTracker合约,质押fGLP并得到fsGLP。
最终用户得到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 |
相关交