Code Review 回顾:算法稳定币 Basis

2021年1月6日晚上9点,我们组织大家一起review了算法稳定币中的Basis,视频回顾在这里:https://www.bilibili.com/video/BV1bK4y157aR/,非常感谢菠菜的分享。

目前的稳定币一共分为三种:

锚定法币,比如USDT和USDC,也包括交易所发行的稳定币,例如BUSD、HUSD等。

链上资产抵押型,比如MakerDAO的DAI和Synthetix的sUSD。

算法稳定币,比如AMPL、ESD、Frax,还有今天要说的Basis。

波卡周报:Gavin Wood将在Polkadot Decode宣布平行链拍卖时间:波卡中国社区PolkaWorld官方发布最新一期波卡周报。具体重要内容包括:1.Polkadot 发布 v0.9.1 版本,并在 Kusama 网络成功部署了代码审计后的平行链、拍卖和众贷功能。关于拍卖的具体时间公布,Gavin 在 Riot 群中回复称将在 Polkadot Decode 大会上宣布。

2.波卡的第 23 次全民公投(增加一个新的身份注册人员)目前以 93.55% 的赞成票失败。由于投票率较低,必须有 98% 左右的人赞成才能通过。

3.经过与社区的讨论,Klever 决定在他们的钱包提案中添加一个额外的浏览器签名者。

4.Kusama 网络发起 108 号公投,有人提议为 Polkadot 上丢失的账户设置一个救援者,但 Polkassembly 上还没有添加任何细节。

5.Cumulus 发布了 polkadot v0.9.1 的分支!这个使用了 Polkadot 版本的分支和一些在 Substrate 中修复的分支。同时 Rococo-v1 可能会被弃用。

6.Rococo 目前没有在进行的拍卖,但平行链仍然可以手动添加或移除。

7.Polkadot Decoded 将于下周 19 号到 20 号举行。[2021/5/16 22:08:02]

算法稳定币经历了几个阶段,basis是一个很新的项目,采用了三币模型。

LAVAswap与CodeBank达成战略合作:火币生态链的全新DEX项目LAVAswap宣布与金色财经旗下钱包CodeBank达成战略合作。目前,LAVAswap已在CodeBank上架。

金色财经旗下钱包CodeBank是一款去中心化钱包应用,旨在让用户简单管理数字资产,目前支持火币生态链HECO(ETH、DOT等公链陆续引入中),内置DAPP等。LAVAswap是基于火币生态链的全新DEX,包括质押池、流动性矿池、DEX、跨链资产桥等。[2021/2/18 17:26:37]

Basis机制

Basis有三个币:BAC、BAS、BAB,三者相当于货币,股票和债券。可以将Basis理解为一个央行,BAC是央行发行的货币;BAS是央行的股东持有的股票,需要承担系统风险,也获取系统的收益;BAB是债券,相当于央行的债券。这3个都是erc20token,BAB目前没有日期限制,只要在合适的价格就可以兑付。

开发者Cody Burns所持ETC域名竞标结束 ETC Labs现控制相关网站:12月8日,Ethereum Classic Collective (ECC)执行董事Bob Summerwill发推,对ETC开发者Cody Burns持有的ETC域名的竞标已经结束,Ethereum Classic Labs现控制ethereumclassic.org网站,而不是ethereumclassic.github.io网站。[2020/12/8 14:35:40]

BAC价格调节机制就是一个市场供需的调节机制。

当BAC价格少于1美元,需要减少BAC流通,让BAC的价格自然上升到1美元

动态 | 匿名人士请愿将比特币添加到Unicode联盟表情符号列表中:金色财经报道,一位匿名人士发起请愿要求管理字符的非盈利机构Unicode联盟将比特币(?)添加到其表情符号(emoji)列表中。加密货币社区的许多成员认为这可能会给比特币带来更多的采用机会。截至目前,该请愿书已获得39个签名。[2019/12/25]

BAC价格少于1美元,用户可以用申购债券BAB,方式是销毁BAC,得到BAB

BAB价格=BAC价格的平方,因为BAC价格小于1,所以平方后的BAB的价格会更低

未来可以用一个BAB换回一个BAC

当BAC价格超过1美元,需要增加BAC流通,让BAC的价格自然下降到1美元

目前的阈值是当BAC>1.05时,可以触发系统增发BAC

增发的BAC会发给持有BAB和BAS的用户

动态 | 东京工业大学将实施使用区块链和加密货币的QRcode hunt计划:据coinpost报道,日本东京工业大学将在10月6~7日举行的校园文化节(学园祭)上,实施使用了区块链和加密货币的QRcode hunt(二维码赏金)计划,据主办方的调查,此次在校园文化节尝试使用在以太坊上发行的自有加密货币,为日本首次。在这个计划的游戏中,参加者将使用专用的钱包,寻找隐藏在学校内的二维码,来竞争获得的加密货币数量。[2018/9/30]

优先还债,所以先给持有BAB的用户,方式是销毁BAB,得到BAC

剩下的BAC给BAS持有人,如果没有剩余,则不给BAS持有人分配

BAS相当于股东,只有锁定到boardroom合约的BAS才能获得这部分收益

代码解读

源码:https://github.com/Basis-Cash/basiscash-protocol

treasury.sol

合约中主要的方法包括:

setFund:修改社区发展基金接收地址?

setFundAllocationRate:修改社区发展基金从BAC增发中接收的比率?

getBondOraclePrice:通过预言机获取Uniswap上BAB的价格?

getSeigniorageOraclePrice:通过预言机获取Uniswap上BAC的价格

bugBonds:购买债券,targetPrice参数是给前端进行校验的,只有当BAC小于1美元才能执行

redeemBonds:赎回债券,BAC价格要大于1.05美元才能执行

allocateSeigniorage:分配系统收入

价格小于1.05不执行,大于1.05才计算发多少钱

需要在一个epoch开始后才能执行,代码中的checkEpoch是1个modifier,用来检查这个条件

计算增发量,并增发

uint256?seigniorage?=?cashSupply.mul(percentage).div(1e18);?

IBasisAsset(cash).mint(address(this),?seigniorage);

每次增发的总量的2%会进入到CommunityDevelopmentFund

uint256?fundReserve?=?seigniorage.mul(fundAllocationRate).div(100);

IERC20(cash).safeApprove(fund,?fundReserve);

ISimpleERCFund(fund).deposit(...)

发给债券持有人

uint256?treasuryReserve?=?...;

accumulatedSeigniorage?=?accumulatedSeigniorage.add(treasuryReserve);

emit?TreasuryFunded(now,?treasuryReserve);

给股票持有人,也就是给boardroom

IBoardroom(boardroom).allocateSeigniorage(boardroomReserve);

Boardroom.sol

Boardroom相当于董事会,是Basis股份的持有者。合约的主要方法有:

allocateSeigniorage:计算可以分配多少钱?

claimReward:取钱操作

Timelock.sol

时间锁是治理体系不可或缺的一部分,通过Timelock限制超级用户对系统参数的修改,使普通用户有足够的时间进行决策,这里的Timelock,参数需要等待至少2天才能生效。

uint256?public?constant?MINIMUM_DELAY?=?2?days;uint256?public?constant?GRACE_PERIOD?=?14?days;uint256?public?constant?MAXIMUM_DELAY?=?30?days;

还有个巧妙的onlyOneBlock,限制1个块中只能有1个操作者,防止多次调用。

_status?=?true;_status?=?true;

总结

Basis的代码很巧妙,化繁为简,也很整洁,通过3种token的互相转化,保持价格稳定。AMPL的供应量是自动调整的,而Basis的token供应调整是通过激励用户的投机行为,让用户主动参与的。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

银河链

[0:31ms0-3:638ms