火星链 火星链
Ctrl+D收藏火星链
首页 > 屎币 > 正文

SYN:研究 | 深入Defi系列之Synthetix

作者:

时间:1900/1/1 0:00:00

在阅读本文前建议先阅读SynthetixLitepaper和一文读懂Defi热门项目Synthetix。这里先简单的介绍几个术语,Synthetix是一个Defi项目的名称,SNX是一种扩展了ERC20协议的代币,也是Synthetix的激励代币。Synth是指合成资产,比如sUSD、sBTC、iBTC等都是合成资产,其中s开头的是指做多,i开头的是指做空。债务池是指所有Synth的汇总,在Synthetix引入超额抵押借贷之后,要扣减借贷产生的Synth。债务池对应的抵押物SNX能捕获Synthetix交易合约产生的费用以及流动性挖矿产生的SNX,因此抵押SNX是有利可图的。

SNX

Synthetix的运行需要SNX,那么SNX是怎么产生的呢?根据icodrops的数据SNX在2018年3月启动ICO,初始发行100000000个,其中60%通过公开市场销售。

从2019年3月开始Synthetix启动了货币供应计划到2023年8月SNX的总供应量将会从100000000个增长到260263816个。新增的SNX会按比例分配给抵押了的SNX持有者,SNX奖励的细节会在后文讲述。

Synth

Synth有三种途径产生:

第一种是通过超额抵押铸造,这种方式的抵押物只有SNX,产生的Synth只有sUSD。

第二种是通过超额抵押借贷,这种方式目前的抵押物只有ETH,产生的Synth有sUSD和sETH。

第三种是通过交易。比如当你通过SNX抵押出sUSD之后如果想持有sBTC,那么可以在Synthetix的交易合约中先销毁sUSD然后铸造出sBTC,sUSD兑换sBTC的价格由Oracle提供。

抵押和交易产生Synth没有数量限制,而借贷产生的Synth有数量限制。借贷产生的债务不会进入债务池,也无法享有交易产生的手续费和流动性挖矿奖励。

SNX超额抵押铸造

SNX通过超额抵押可以铸造出sUSD,抵押后的SNX无法被转移,然后通过销毁sUSD可以解锁SNX使其重新能够流通,如果SNX的抵押率不足则会面临被清算的风险。

铸造

抵押账户上的SNX铸造sUSD的公式如下:

amount(sUSD)=amount(SNX)*price(SNX)*I-Ratio

美国货币监理署代理署长:美国银行正在研究是否支持比特币和加密资产:美国货币监理署(OCC)代理署长Brian Brooks表示,美国银行机构正在研究为感兴趣的客户提供支持加密资产的方法。在播客节目中,Brian Brooks分享了他对美国银行在货币监理署(OCC)决定授予银行托管加密货币的权利后开始探索加密途径的看法。Brooks认为,开发内部框架以充当加密货币托管人所涉及的复杂性将促使银行继续接触现有的中心化交易所来存储客户的加密货币。他补充说,从长期来看,增加银行对加密货币的支持,可能会为目前不愿进入加密市场的普通投资者打开空间。另外,Brian Brooks还表示,目前有四千万到五千万美国人拥有加密资产。(The Daily Hodl)[2020/10/31 11:20:02]

Synthetix中很多运算上都是以sUSD作为计价单位,而I-Ratio是发行率。假定SNX的价格是100,那么抵押100个SNX产生的sUSD是2000个。

账户上所有可用来抵押的SNX由三个部分组成:

collateral(SNX)=amount(synthetix)+amount(synthetixEscrow)+amount(rewardEscrow)

amount(synthetix)是指SNX合约的余额,amount(synthetixEscrow)是指SNX托管合约的余额,amount(rewardEscrow)是指SNX奖励合约的余额。

抵押的SNX是被转移到哪个合约上了吗?不是的,抵押之后账户的SNX合约余额依然不会发生变化。但是当需要转移账户上的SNX时,合约会判断可以被转移的SNX数量。

tranferable(SNX)=amount(synthetix)-debt(SNX)

debt(SNX)是指以SNX作为计价单位的债务数量。由于债务池中的资产价格是在波动的,所以债务池的总债务数量也会波动,为了计算当前时刻账户的债务数量需要记录账户在债务池中的占比ownership。

debt=ownership*totalDebt

比如说账户在t0时刻的ownership是10%,totalDebt是100sUSD,则在t0时刻账户的debt是10sUSD。当t1(t1>t0)时刻totalDebt上升到200sUSD,则账户的debt变成了20sUSD。债务总量上升一般是债务池中资产价格的上涨导致的。debt(SNX)上升会导致tranferable(SNX)下降,账户的债务比上升。账户的债务比上升到一定程度就无法从FeePool中提取手续费和流动性挖矿奖励。当账户的债务比上升到一定程度的时候任何人都可以对这笔债务进行清算。

Conflux研究总监杨光:第三代公链需要解决公链性能问题:金色财经现场报道,8月6日2020 Cointelegraph中文大湾区·国际区块链周在深圳举行。Conflux研究总监杨光在“第三代公链的技术演进之路”圆桌主题论坛上表示,从用户角度来说,第三代公链应该去解决用户需要解决的问题。区块链改进的重大方向或者第三代公链需要解决公链的性能问题,性能提升能带来应用的量变,性能问题不应该依靠分片来解决,最好就是只在一条链上解决。[2020/8/6]

为了记录每个账户的债务占比,Synthetix引入了两个关键性的数据结构:IssuanceData和debtLedger

issuanceData记录每个账户的债务信息。initialDebtOwnership是指账户的债务在债务池中的占比,debtEntryIndex是debtLedger中对应的index。任何时候对账户进行新增债务或者销毁债务操作都会延展debtLedger,并重新设置账户的initialDebtOwnership和debtEntryIndex。

令在debtLedger的index=i时的总债务为t(i),debtLedger为d(i),账户A的债务为d(A),在index=i+1时

initialDebtOwnership(A)=d(A)/t(i+1)

debtEntryIndex(A)=i+1

d(i+1)的递推公式为:

d(i+1)=d(i)*,i>0

d(0)=1,i=0

如下图所示账户A给系统新增第一笔债务100sUSD,系统总债务是100sUSD,账户A的债务占比是1

然后当B增加900sUSD之后,d(1)=d(0)*t(0)/t(1)=0.1,如下所示

此时账户A的债务占比计算公式为:

debtOwnership(A)=*initialDebtOwnership(A)=*1=0.1

事实上当账户A的debtEntryIndex为i,对于任意debtLedger的index为j(j>i)时计算账户A的债务占比公式为:

debtOwnership(A)=*initialDebtOwnership(A)

公式右侧的推导过程如下:

声音 | 姚前:央行数字货币未来还需要研究量子货币:据《比较》第98辑消息,姚前表示,展望未来,央行数字货币还需要研究量子货币。量子货币可以解决经典数字货币最头痛的双花问题。理想的量子货币相当于同时结合了传统货币(纸币)和经典数字货币的优点,并避免了它们各自在本质上难以克服的缺点。当前,可部分应用量子技术为数字货币的设计和实现提供服务。[2018/11/23]

*initialDebtOwnership(A)=**..**initialDebtOwnership(A)=**..**initialDebtOwnership(A)=*=d(A)/t(j)

而d(A)/t(j)正好就是账户A在index=j时的债务占比。

销毁

一般情况下铸造sUSD之后再销毁会有一个等待期,这个等待期目前是1天。销毁sUSD能降低debt(SNX),从而使tranferable(SNX)变大。销毁的过程跟铸造类似,比如账户B销毁200个sUSD,系统总债务变为800sUSD,B的债务占比变成0.875

而A的债务占比根据公式计算为0.125

debtOwnership(A)=*initialDebtOwnership(A)=*1=0.125

debtOwnership(A)=d(A)/t(2)=100/800=0.125

清算

账户的债务比C-Ratio是指账户的债务与账户上可用的SNX之间的比值:

C-Ratio=debt(SNX)/collateral(SNX)

债务池中的资产的报价单位都是以sUSD,因此debt(SNX)会同时受到资产价格和SNX价格的影响。也就是说假如SNX价格不变,债务池中的资产价格上涨则debt(SNX)会变大。相对的,如果SNX价格下跌,而债务池中的资产价格不变,debt(SNX)也会变大。

当账户的C-Ratio超过一定的阈值会被清算,任何人都可以对C-Ratio超过阈值的账户进行清算。但是清算有一个缓冲期,在缓冲期内等待被清算的账户依然可以通过增加collateral(SNX)或者销毁一定的债务来降低C-Ratio。

被清算的账户会施加一定比率的罚金p。假定被清算账户是A,清算账户是B,清算过程是将B的sUSD销毁,然后将A的(1+p)倍等值的SNX转移给B,因此B的清算收益率是p。清算的目标是使账户A的C-Ratio恢复到初始的I-Ratio。令账户A的债务为D,抵押物为C,罚金比率为p,I-Ratio为r,需要清算掉的债务为F,则F必须要满足如下公式:

猎豹移动傅盛:2017年总营收49.75亿元,已着手研究区块链:今日,猎豹移动(NYSE: CMCM)发布了截至2017第四季度财报及2017全年财报。财报显示,第四季度总收入环比增长16.2%至13.88亿元,移动收入同比增长17.8%至12.18亿元,创历史新高。对此,猎豹移动董事长兼首席执行官傅盛表示:“猎豹移动在2017年四季度取得了十分强劲的业绩。未来,我们将继续使用人工智能技术提升我们的产品和服务。我们也相信诸如区块链等新科技将为猎豹带来更多发展机会。”[2018/3/19]

(D-F)/(V-(1+p)*F)=r

从而得到

F=(D-V*r)/(1-(1+p)*r)

ETH超额抵押借贷

通过抵押ETH可以从Synthetix系统中借出sETH和sUSD,抵押1个ETH可以借出0.8个sETH或者借出0.67个sUSD。为了控制风险,借出的sETH和sUSD总量是有上限的,sETH最多能借出5000个,sUSD最多能借出1000万个。赎回债务需要付出一定的利息,产生的利息会转换成sUSD注入到FeePool中分配给SNX的抵押持有者。如果ETH价格下跌导致抵押率不足,则债务会面临被清算的风险。

Synthetix交易

在Synthetix中除了sUSD和sETH可以通过铸造或者借贷发行外,其它的Synth都是通过交易产生的。Synthetix交易对以(src,dest)来表示,src指将会销毁的Synth,dest指将会发行的Synth,比如(sUSD,sBTC)意味着销毁sUSD然后发行sBTC。这点跟订单簿或者AMM区别很大,由于没有对手方所以Synthetix也不会有滑点和深度的问题,但风险就在于流动性可能不足,举个极端的例子:

系统总债务暴涨到10100sUSD之后,A和B分别承担5050sUSD的债务。为了保证债务比符合0.2的要求账户A必须要补充价值24750sUSD的SNX,对A来说这是没啥意义的,也不会有人愿意清算这笔债务。账户B可以销毁5050sUSD的债务来解锁价值500sUSD的SNX,但是剩下的4950sUSD只有名义上价值500sUSD的SNX作为抵押,使得sUSD基本上毫无价值,所以这笔获利也无法兑现。

除了流动性问题还有另外一个问题,那就是单个交易对发生报价错误会导致全体SNX抵押者极大的损失。比如上面那个BTC价格暴涨的例子,可能真实的价格是101,但是由于报价错误导致价格暴涨了100倍。如果抵押的SNX足够多,则B就获利巨大,而损失则由全体SNX持有人承担。再加上没有深度限制,B如果发现Oracle还在mempool中的交易价格为10000,而真实价格为101,则B可以提前以100的价格买入足够多的sBTC,等到Oracle的报价上链,再以10000的价格卖出sBTC,这个过程SNX抵押者的损失会无限放大。也许Oracle是诚实的,但Oracle也可能犯错,然后上报一个跟真实价格差异巨大的价格。

交通银行金融研究中心何飞:警惕资本市场炒作区块链概念:交通银行金融研究中心高级研究员何飞在接受人民日报采访时表示,“区块链技术还不太成熟,可应用场景比较有限,更应警惕资本市场炒作概念。”何飞说,区块链热潮的背后免不了会有一些搞噱头想投机的公司,他们并没有真正开展业务,只是企图到资本市场捞一笔就走,要谨防由此出现“劣币驱逐良币”,导致真正想开展业务的机构退出市场,影响区块链技术的应用。[2018/2/26]

为了避免这个问题SIP-65引入了一种价格保护机制,Synthetix会记录每个Synth上一次交易的报价lastExchangeRate,使用lastExchangeRate与当前交易时的报价currentRate进行对比。如果倍数超过一定的阈值交易会失败,这个交易对会被暂停直到protocalDao查明原因再重新恢复交易。

正常情况下行情不会在短时间内有一个超过3倍的插针,所以由于价格保护机制导致交易对被暂停实际上是非常罕见的情况。但是因为以太坊拥堵导致Oracle的价格不能及时的上链倒是可能经常发生。一旦价格不能及时上链就会有被套利的空间,比如

在上图所示过程中先观察到未上链的Oracle报价会比链上最新的报价高10%,所以立即买入1sBTC,然后等Oracle的报价交易上链再以这个价格卖出1sBTC,这样就可以无风险套利10%。为了缓解这个问题SIP-37引入了交易修正机制,通过交易得到的dest必须等待一个交易窗口期之后才能卖出。比如上面这个例子假设在交易窗口期内t1时刻Oracle的报价上链了,那么再卖出1sBTC时需要先对TX0的交易进行修正。TX0会重新以1sBTC=110sUSD的价格来核算,账户需要给系统退还100*(1/100-1/110)约为0.09个sBTC。之所以说是缓解而不是解决是因为Oracle的报价可能过了窗口期都没能上链,那么套利还是会发生。反过来如果链上价格比实际价格高,那么购买1个sBTC就亏了,这个时候系统会将差价返还给账户。交易修正除了在交易过程中会引入,凡是需要转出或者销毁Synth的地方都会引入,比如转出Synth、铸造sUSD、销毁债务、清算债务。

FeePool

FeePool负责收集交易产生的费用和流动性挖矿产生的奖励,费用和奖励的分配要依照SNX抵押者在债务池中的债务占比来决定。比如产生了100sUSD的交易费用,账户A的债务占比是10%,那么账户A就可以分配10sUSD的交易费用。假如账户A刚发行债务把奖励取走,然后就立即把债务销毁,那A就基本上不用承担债务池膨胀的风险而获得收益。实际上这个风险就由其它一直进行SNX抵押的账户在承担,显然这对其它账户来说是不公平的。

为了解决这个问题FeePool引入了结算周期的概念,结算周期有两类,一类是已经封闭的结算周期,一类是开放的结算周期。封闭的结算周期内的费用和奖励可以领取,开放的不行。一个开放的结算周期达到7天后就可以开启新的结算周期,然后这个开放的结算周期就变成了封闭的结算周期,而之前封闭的结算周期内的费用和奖励延展到这个新产生的封闭结算周期中。结算周期的数据结构如下:

FeePool会缓存账户的债务占比信息,然后找到离费用周期结束的debtLedgerindex最近的债务占比来计算费用和奖励。如下图所示,F0和F1是已经封闭且延展过的的结算周期,F2是可以提取奖励和费用的结算周期,F3是正在开放的结算周期,d10是F2结束时刻对应的debtLedger,d0是由账户A的债务变更引发的。

账户A如果提取奖励和费用,其占比的计算公式为:

p=(d10/d0)*initialDebtOwnership(A)

也就是计算账户A在d10时的债务占比。如果账户A有多次债务变更操作,比如d0和d5

则p的计算公式为:

p=(d10/d5)*initialDebtOwnership(A)

也就是说取尽可能离d10近的债务变更操作对应的debtLedger值。

FeePool这种工作模式会带来一个问题,如果F0和F1有未提取的费用和奖励延展到F2,那么可以在F2中发行债务,然后等F2进入封闭期提取费用。令F0、F1和F2未提取的费用分别为f0、f1和f2,账户A在F2期间的费用占比为p,则账户A可以提取非费用为

f=p*(f0+f1+f2)

也就是说虽然账户A在F0和F1期间对系统不承担任何债务,但依然能拿到一部分费用。所以当费用周期结束后应该尽可能的把账户上的费用和奖励提取干净,否则会便宜后面周期发行债务的账户。

提取费用和奖励的前提是账户的债务比不能过高,这个阈值目前是1.01*I-Ratio。费用是直接打到账户地址上,而SNX奖励是放在了第三方托管合约上。

SNX供应计划

SNX奖励由SNX供应计划合约注入到FeePool,然后FeePool发放给SNX托管合约,被托管的奖励要延迟一年才能领取。为什么要给抵押SNX的账户奖励呢?首先我们看一下比特币的激励机制,比特币给矿工奖励,矿工通过挖矿来保障比特币网络的安全。在比特币总量没有达到2100万个之前,比特币跟央行的法币一样是一个通胀币,只不过通胀速率逐年降低而已。那为什么持有者认为比特币是有稀缺性呢?原因在于通胀预期是固定的,也即所有人都知道比特币的发行规律,并且知道当发行完2100万个之后就不再发行。所以一个去中心化的激励机制中,一定时间内的货币发行并不可怕,只要货币发行是对网络的核心价值有用,然后发行计划是有预期那么对整个网络就是有正面意义的。

在SNX网络中最核心的价值就是抵押物,只有足额的抵押物才能有更多的做多和做空交易,才能产生更多的交易手续费从而提升网络的价值形成一个正向循环。基于此SNX从2019年3月开启了投放SNX的计划,这个投放计划类似于比特币也是按周期奖励减半:

但货币新增突然断崖式的下降会可能会对系统产生一个不可预测的不好结果。比如在比特币网络上如果减半周期叠加币价低迷,那么减半周期到来时很多老的矿机因为无利可图而关机,这个会导致比特币算力出现断崖式下降。为了避免这个问题,Synthetix后来又优化了货币投放计划:

这个优化首先是让货币供应速率平缓下降,其次是在货币供应计划结束后继续以2.5%每年的速率增发SNX。

Synth价格

Synth分为做多的Synth和做空的Synth,sBTC的价格就是Oracle的报价,其中sUSD的价格总是1。做空的价格跟基准报价有关:

如图所示,黑色的箭头表示sBTC的价格走势,红色的箭头表示iBTC的价格走势。当sBTC的价格为120时,iBTC的价格为200-120=80;

当sBTC的价格为10时,iBTC的价格为200-10=190,但由于190超过的upperLimit,所以最终iBTC的价格为180。如果frozenAtUpperLimit为false,则iBTC的价格不会被锁定在上边界,等到sBTC价格上升时,iBTC的价格会回落。反之,iBTC的价格就会一直被锁定在上边界。

反向价格信息由系统提供,并且反向价格信息也可以根据需要更新,比如说重新设置基准价。

结束语

Synthetix是一个非常优秀的Defi项目,它可以让我们交易各种资产的风险敞口,由于是与系统对所以交易的深度极佳。以太坊的特性使得开发一个复杂的Defi项目变得十分困难,在这个黑暗森林里不仅仅面临合约逻辑错误这种基础性风险,还面临交易抢跑、Oracle报价延迟、报价错误等业务性风险。Synthetix在这方面做了非常多的努力,比如通过交易熔断来控制单个交易对报价错误的风险、通过交易修正来缓解Oracle报价不及时的问题。Synthetix对去中心化项目的激励问题理解的也非常深刻,为什么激励?怎么激励?这些都需要想清楚,而不仅仅是增发token去割韭菜,激励过程也要注意减少一些不必要的经济学博弈。在项目的开发上,Synthetix对Gas的优化也做了一些努力,比如缓存全局债务总量来减少计算量。

Synthetix也有一些需要改进的地方,在费用和奖励的分配上更有利于巨鲸账户,这点倒是可以参考sushi的分配方式进行优化。使用Proxy的模式虽然便于迁移,但是业务上需要向后兼容容易带来代码的复杂性。随着功能的越来越复杂,代码出现逻辑错误的可能性也会越来越大。

本文链接:https://www.8btc.com/article/6589014

转载请注明文章出处

标签:SNXSYNSUSDUSDsnx币最新消息syn币前景ASUSDCUSDC

屎币热门资讯
CHC:马云三个月后浮出水面,阿里巴巴股价上涨8%

yJackMa回来了。嗯,不是以终结者的方式,而是据信直到最近才失踪了几周的阿里巴巴联合创始人,在一次教育活动中出现了录像带,他向中国农村地区的老师致辞.

1900/1/1 0:00:00
TPS:MDX (Mdex) 项目介绍

一、项目简介Mdex是基于火币生态链和以太坊的双链DEX模型,并支持流动性和交易挖矿的“双重挖矿机制”.

1900/1/1 0:00:00
比特币:通化核心要点

1.坚持非必要不返通不出省。建议全市居民联系在外地工作的亲属留在所在地过春节;非必要不出省,不前往疫情发生地.

1900/1/1 0:00:00
JUS:币圈雨哲:1.24 早间行情分析及操作建议

今日快讯:据消息,1月23日,北京市政协十三届四次会议召开记者会。北京市政协委员、中国雄安集团数字城市科技有限公司总经理王臻在会上表示,数字经济目前在北京有两个需要重要推进的点.

1900/1/1 0:00:00
COM:关于MASS交易送积分 轮盘转不停 奖励发放公告

HomiEx已完成"MASS交易送积分轮盘转不停"所有奖励已全部分发,请在“钱包-资产记录”查看分发结果.

1900/1/1 0:00:00
SDT:BBKX平台0201全新挖矿空投及销毁公示

亲爱的BBKX用户0201全新挖矿云算力抢购活动已于近日圆满结束,感谢各位用户的热情参与。根据全新挖矿规则,共计1562500枚BBK将空投给USDT专场云算力抢购用户,共有以下两位用户获得BB.

1900/1/1 0:00:00