查看原文
其他

利用去中心化对赌合约(期货)设计一个稳定币

闪电 黄世亮 闪电HSL 2019-05-08

第0章 引言

本文介绍一种不依赖于特定中心化机构,完全依赖市场和合约,并且不需要法币抵押,却能获得稳定锚定法币的办法。


第1章 一个链上对赌合约

我们现在来利用比特币现金来设计一个链上的对赌合约。

A赌BCH涨;B赌BCH跌。即开仓后,如果BCH比开仓时价格涨了,则A赢钱,反之B赢钱。

假定每人赌资nBCH。即每人出nBCH进赌池。(为了计算方便,我们假设不允许小数出现,只赌整个币)

假设开仓价格x$/BCH。

现在要平仓了,现在价格 y$/BCH

赌局权益计算公式如下:

A赌涨,A的收益为

(x/x-x/y)*n

B赌跌,B的收益为

(x/y-x/x)*n

比如,n=1;x=500$/bch;y=600$/bch

A的收益为,

500/500-500/600*1=0.1667BCH

B的收益为:

500/600-500/500*1=-0.1667BCH

A的余额为 

1+0.1667=1.1667BCH 

1.1667*600=700.02 $

B的余额为 

1-0.1667=0.8333BCH 

0.8333*600=499.98 $

 

现在假设 n =1 ; x = 500; y = 400

A的收益为,

500*1/500-500*1/400*1=-0.25BCH

B的收益为:

500*1/400-500*1/500*1=0.25BCH

A的余额为 

1-0.25=0.75 BCH   0.75*400=300.0 $

B的余额为 

1+0.25=1.25 BCH   1.25*400=500  $



你会发现,B赌跌,无论BCH的价格涨跌,B的权益都稳定锚定在开仓时的权益。这就是稳定币需要的。

B赌跌,是不会爆仓的,哪怕是x=500$,y=5万$,涨了100倍,B的权益= (500/50000-500/500)*1+1=0.01BCH,换成成美元,0.01*50000=500.0 $。

但A是会爆仓的,如果x=500$,y=250 $,A的权益 = (500/500-500/250)*1+1=0 BCH,即此时,A的币100%输给了B。如果BCH价格跌到50%,还继续跌,B虽然得到了两个币,但总市值已经无法锚定500美元了。

但,我们先不考虑A会爆仓的情况。

 

第2章Oracle

现在我们来将上述对赌合约,设计成交易上链,并且让B的权益是可以转让,就可以获得一个稳定币。

但还缺一个环节,平仓价格数据如何获得?这里需要Oracle。Oracle是一个发布信息的主体。

Oracle本身有一个数字身份,比如BCH上的Oracle就一定有一对公私钥对,向外界公布其公钥。如果Oracle要发布什么信息,那就拿这个公钥和信息,用他的私钥进行签名。外界就可以用这个公钥和签名,来验证这条信息确实是Oracle发布。

Oracle就可以发布价格数据,一般会发布,价格,和价格的hash值,以及对该信息的签名信息。

一个链上的对赌合约,就可以使用Oracle发布的价格hash值和签名信息,做条件判断来计算对赌结果。

 

第3章 结束语

更多详细的细节,我还需要去研究。




广告位招租 




(欢迎加我微信号:HSL13116885 加入我的知识星球)







另请阅读:只有我认为USDT不会倒闭吗?——USDT祭旗开启稳定币大战


上一篇:如何判断一个人说的观点是否可信


文章已于修改

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存