# 深入探索GainsNetwork机制设计 **Published by:** [Alexy](https://paragraph.com/@alexy-2/) **Published on:** 2023-04-03 **URL:** https://paragraph.com/@alexy-2/gainsnetwork ## Content 一、前言早前写过一篇简单对比GMX,GNS和Dydx这几个比较火热的DEX的文章,但由于刚开始用Mirror写东西,好多格式没有调整清楚,再加上篇幅有限,文章内容也比较简单: https://mirror.xyz/0xB99aFA8FaCC1477670911c7fCAEb81DdC2Aa1388/OUfiOchzMW7LLojXBzeZUXP9X8hQB78aHyeEMLOo5fQ 文章中大多数是这几个DEX的功能以及其优劣的探讨。最近在看新的DEX项目时有了几点机制设计上的疑问,于是回头来这几个明星项目找灵感,发现GainsNetwork在机制设计上不断的进化,非常有意思,特翻出来具体的机制设计分享给大家。二、Gains Network早期设计值得一提的是,Gains Network在经历了2022年中最大的黑天鹅事件Luna之后,变得格外谨慎,从机制上做了很多的保护。首先来看看在此之前的一些机制设计:超额抵押的DAI来作为流动性池,用户stake DAI来获取一些交易费用的收入(10%~25%);用户可以随时取出质押的DAI,但是并非立即取出,而是连续4天每天取出25%。这样的设计是减小了流动性池子在极端情况下被挤兑的风险,毕竟给了4天的时间上的buffer,可以给团队一些应对或是用别的手段补充流动性的操作时间。随着在GainsNetwork上的Trader亏钱亏的多了,Vault中的DAI会增加。当DAI处于超额抵押的时候(大于130%),DAI会被用来在市场上缓慢的持续回购GNS并直接销毁。当然了,如果说DAI的抵押率不足100%, 会自动的去Mint GNS并在市场上缓慢的出售换成DAI来补充进流动性池。其实大多数类似的设计都建立在这么一个理念之上:“Traders嘛,总是亏的比赚的多”,所以对于LP来讲和Traders做对手交易是稳赚不赔,所以在上面GainsNetwork的机制中,基本上DAI都是处于一个超额抵押的过程,这也是大多数人觉得这个机制好像没什么毛病的原因。 但GainsNetwork的团队就是喜欢革自己的命,觉得此前的这个机制还不够复杂不够精细,具体有哪些问题呢?下面部分会详细写到。三、团队认为的缺陷团队认为的缺陷主要分在四个方面,风险的把控,资金效率,激励的分配,可组合性(原文这里用的是Composability这个词),下面分别看一下GainsNetwork的团队是如何考虑的。 1. Risk Management 风险把控 在原本的模式当中,其实风险并不是均匀分布的。假设在抵押率不足的时候金库的挤兑发生,那么早早进行withdraw的用户可以正常在4天内取出资产,但最后进行withdraw的用户一定会遭受到损失。 并且这种抵押率的设计,并没有考虑到未平仓交易的损益。比如说一个质押者为了减少自己的风险,可能会以其他质押者的损失为代价,抢先平仓一笔盈利巨大的交易。 2. Efficiency 资金效率 当抵押率超过了130%,按照上面的机制设计,会用多出的DAI来去市场上购买GNS并销毁。这一条机制其实会被抢跑攻击。例如说一些arbitrager观察发现抵押率即将超过130%,便可以提前买入GNS来赚取国库购入GNS而拉高价格的价差。并且,在协议层面去购买并销毁GNS其实也会有很多滑点和gas费的损耗。 3. Incentive Alignment 激励分配 其实这一条比较好理解,当一个staker看到抵押率100%以下时,代表着金库的风险更大一些,此时如果Stake他的DAI,理应比在抵押率130%时去抵押获得更高的收益,也是相当于take了一部分风险。但以上的机制并无此设计。还有就是从协议层面,其实是希望看到更多长期staker的,但很多protocol都会有的自动复投来激励长期staker的功能,在Gains的老机制里并没有。最后,团队想要对金库的稳定性进行激励,大部分的Defi会按比例奖励那些长期的DAI staker。 4. Composability 可组合性 这条也比较好理解。我用Uniswap来做一个对比,当在Uni上提供流动性时,Uni会为你mint一个nft来代表你的LP仓位。而远古时期的GainsNetwork并没有这样的设计,对于用户来说减少了很多可玩性。比如想将Staked DAI转移到另一个钱包地址时,只能进行unstake & restake;又或是不能根据自己的staked仓位去其他的Defi上组合利用自己的资产。 这些部分属于团队认为的设计缺陷,确实从用户体验以及主流Defi设计来看,其中有很多改进的空间,于是GainsNetwork的团队憋了个大招,搞出来一个非常复杂却又非常精细的模型机制来填补上面的一些短板。以下是正文开始了,内容会比较长,希望大家有耐心能看完。四、gDAI设计在团队的新设计中,也是截至写这篇文章时一直都在用的机制,就是gDAI。GainsNetwork用了ERC-4626的标准:ERC-4626同样被用于Yearn Finance、Alchemix的Vault设计当中,在本篇文章中ERC-4626并不是重点,所以想了解更多可以点击下面链接: https://erc4626.info/ 当一个DAI被存入Vault中,便会自动为用户mint一个gDAI。每一个gDAI都代表了在Vault中质押的DAI。并且,在mint gDAI时,还会根据用户锁定gDAI的时长以及金库的抵押率来获得一定的折扣:锁定gDAI(2周~1年)时间越长折扣越大,为了鼓励长期持有;在抵押率低于100%的时候,会有一个最大的折扣5%。在抵押率100%以上低于150%时,折扣从5%衰减至0%。也是一个变相激励大家去为金库提供流动性的一个设计。同时,在锁定gDAI后,用户会获得一个ERC721代币,也就是一个NFT。这个NFT可以被用来在其他的协议里提供流动性or质押等等,但前提是有其他的协议基于此来往上叠Defi乐高(这一点其实GMX的生态做的很不错了,很多对于GLP的生态乐高项目)。当然了,用户持有这个NFT就会持续分到trading fee。 其次,团队引入了一个全局概念,就是Epoch。团队定义一个Epoch是3天。至于为什么要引入这个概念,我后续在细节上会讲清楚,其实就是Epoch在计算收益、提款等等地方会发挥一些时间维度的作用。 比如说在提款时,之前的设计是分4天来提款,其实已经一定程度上减轻了挤兑风险了。但是不够细致,新的设计时基于抵押率的:当抵押率超过120%时:1个Epoch来提款(也就是3天)当抵押率为110%-120%时:2个Epoch(6天)抵押率低于110%时:3个Epoch(9天)以下图为例,灰色的线代表着抵押率。截至写文章当日在Arbitrum上的的抵押率为105%,在这种情况下取出自己的DAI就需要3个Epoch,也就是9天的时间。整体来看,在Arbitrum上抵押率除过刚开始,基本上都是处于100%~110%这个数据区间的。数据取自于Dune接下来就是gDAI的价格计算,也是团队设计的比较大的一个变化,我会带大家简单的推导一下(Btw,在计算gDAI价格时也用到了Epoch的设计,但具体Epoch是怎么实施的,和本文重点无关,就简单略过)。 具体的计算公式如下: gDAI = 1 + accRewardsPerToken — Math.max(0, accPnlPerTokenUsed) 其中accRewardsPerToken代表着:累计每一个gDAI背后能够收获的交易费用。而accPnlPerTokenUsed代表着在每一个Epoch开始时,gDAI的累计PnL收益。 前者accRewardsPerToken是肯定一直在增加的,因为只要有交易产生,就有交易的费用产生。我们可以用具体例子来算一下这个公式会给gDAI带来的价格变化,假设我们只用过去24小时的数据来简化的计算一下,实际计算过程中考虑了Epoch,3天为一个Epoch,只是Dune上没有按照Epoch维度给出相关数据,我就浅拿24小时数据来简单*3,然后看一下Trader fee和PNL对于gDAI价格的影响变化:数据来自于Dune96978 * 3 = 290934;-324427 * 3 = -973281;数据来自于Dune其实我们简单看一下就能明白:公式的最大值就是 1 + accRewardsPerToken,因为后面的— Math.max(0, accPnlPerTokenUsed)部分最大值只能取0。 将上面的数据带入之前的公式得到: gDAI = 1 + 290934/44213917 - max(0, -973281/44213917) = 1.00658 从上面也可以看出来,如果PNL是负数时,max(0, -973281/44213917)取值只能为0,也就是说Trader亏掉的钱并没有给累加到gDAI的价格上去,那是去哪儿了呢?稍等我们再假设一下:把PNL设置为正值(也就是Traders一直在盈利),则max(0,973281/44213917)就会取正值为0.022,则原式: gDAI = 1 + 290934/44213917 - max(0, 973281/44213917) = 0.98458 这就很奇怪了,Traders亏钱LP挣钱没有反馈在gDAI价格增加当中,Traders挣钱LP亏钱却使得gDAI价格变低了?当然,根据数据表现以及大家的基本理念,traders长时间维度来看都是会亏损的,所以以上gDAI小于1的价格应该也比较难出现。 所以这个公式的好处在于,在大多数情况下PnL都是负数,所以这部分Traders亏的钱,被用作来直接说增加了整个池子的抵押率或TVL(我看大部分讲GNS的机制都会把这个原封不动的翻译为“保护层”,比较难以理解),并不会直接用于gDAI的价格上涨,而这个机制就是为了防止在未来抵押率不足100%时gDAI的价格下跌。 并且,以往情况下Trading fees之前是直接奖励给DAI stakers的,但是通过这个公式,就相当于自动的把fee的奖励给到了gDAI价格,从而形成了复利,不需要stakers再去手动复利了。 如果懒得看以上推导,简化的结论在这里:交易费用不仅能够增加gDAI的价格,还增加了TVL,防止抵押率低于100%用作于抗风险。 对于LP的激励 根据上面的模式,无论是在超额抵押还是抵押率不足的情况下,这个机制会天然的对LP产生激励。特别是在抵押率小于100%时,会出现LP的套利机会,简单假设如果在抵押率为90%的时候去抵押(假设累计分配的费用为 0),则 gDAI 价格为 0.9 DAI。一旦金库恢复到 100% 抵押,那么其存款价值将增加 11%。当然了团队为了减少gDAI超发的风险,设置了每日最多只能增发2%的gDAI上限。五、GNS设计在上面的介绍中,Traders亏的那部分去哪儿了呢?一部分去到了DAI的抵押池子里,那另一部分呢? 一定比例的Traders亏的钱进入到另一个OTC池子当中,而这个池子用来回购GNS并且销毁的;任何人都可以将自己的GNS在这里卖出而获得DAI。具体这个**比例,**则是按照金库的抵押率来进行调整的:如果抵押率在100%的时候,那这个比例也会低一些,因为希望更多的钱能够直接以DAI的形式进入到金库当中,来迅速增加抵押率。如果超过100%,那这个比例会相对变高,因为可以提升OTC交易GNS的流动性,并加强销毁的机制。这样的机制其实能够达到自我调节抵押率,并且也能一定程度上缓解GNS的抛压,为供给方制造一些通缩的压力。 当抵押率小于100%时,也会自动铸造GNS并出售 GNS 场外交易来补充抵押率,每 24 小时上限为 $GNS 总供应量的 0.05%(每年 18.25%)。与之前的机制相比,因为有上限,所以会更加安全的慢慢补充金库,而不会有太大的通胀风险,所以一定程度上也是增加了GNS的内在价值。六、结语GNS确实并不能算是目前DEX里的龙头,但从Dune上来看,交易者的数量在不断的增长,而且有一个非常有意思的现象就是:在Gains Network上的交易,自2022年起交易量以及金额都在不断的增加,但是反观大家都在吹捧的合成资产的交易量占比却没有明显提升:可以预见的是,后续可能会有越来越多的资产种类能够通过DEX的形式来进行交易,而目前也是越来越多DEX也会涉足这个领域,例如本来GMX下一个版本大计划并不是要做合成资产的,但眼看这块肉太香了于是宣布也要上合成资产交易。 但不论是合成资产,还是crypto原生的交易,良好的用户体验,以及更加精巧的风险控制机制,是需要Defi buidlers去思考的。一个随着外部不断进步变化积极进取的DEX,才能够在下一个牛市来临之际化茧成蝶破圈而生。 再回到Gains Network,团队后续的计划是可能会有很多类似于gDAI的池子上线,gETC,gBTC等等,也期待在gDAI上能够看到各种Lego生态,也欢迎大家关注我的twitter,有问题可以一起交流探讨。 https://twitter.com/SchwiftyKid ## Publication Information - [Alexy](https://paragraph.com/@alexy-2/): Publication homepage - [All Posts](https://paragraph.com/@alexy-2/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@alexy-2): Subscribe to updates - [Twitter](https://twitter.com/SchwiftyKid): Follow on Twitter