Code Review 回顾:算法稳定币 Basis_ASI:BAS

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

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

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

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

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

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

Basis机制

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

ConsenSys Mesh选择Codefi Staking运营其在以太坊上的验证器:据官方消息,ConsenSys Mesh选择了ConsenSys的机构级质押服务Codefi Staking来运营其在以太坊上的验证器。

ConsenSys于2020年12月推出Codefi Staking,作为一个面向交易所、托管方、基金、钱包和其他机构的以太坊质押即服务平台。Codefi Staking有助于消除质押ETH的技术和操作风险,帮助机构实现回报最大化。如今,Codefi Staking运行着超过8000个以太坊验证器节点,拥有99.95%的正常运行时间记录。

Codefi Staking将在其多区域、多云和多客户端平台上分发MESH的验证器。在与Codefi Staking合作时,MESH将保留对其ETH的托管和控制权。[2022/6/1 3:56:48]

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

ABIT与CoinCodex达成战略合作协议:据ABIT平台官方消息,ABIT交易平台现已与数字货币行情接入平台及排名网站CoinCodex正式达成战略合作协议。

CoinCodex是全球性的数字货币行情接入平台及排名网站,汇集了全球上千种数字货币类型及数百家数字货币交易平台的实时行情,旨在为全球数字货币爱好者提供及时、准确、客观的信息参考。

ABIT是创立于澳大利亚的交易平台,致力于为全球用户提供安全、稳定、高效的数字资产交易服务。

基于此次战略合作,CoinCodex将对ABIT平台完整行情及数据进行全面的对接,从而实现ABIT行情在CoinCodex全平台上的实时同步更新,使全球更多用户可以通过第三方平台了解ABIT。[2020/4/22]

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

声音 | Cody Sanford:T-Mobile在身份和访问管理等多个领域探索区块链技术的应用:据福布斯消息,T-Mobile执行副总裁兼CIO Cody Sanford表示,“T-Mobile对潜在的区块链技术感到兴奋,这些技术可为我们的业务和客户提高安全性、降低成本和消除痛点。身份和访问管理是我们在该领域取得进展的一个很好例子。我们正在与标准机构和开源社区合作,开发基于区块链的自主身份解决方案,该解决方案可以极大改变人们与信息交互的方式。\" 该公司一直致力于区块链在多领域的应用,比如NEXT Identity Project。“这是一个私有区块链解决方案,我们正在与开源社区合作开发,以改进管理员工权限的方式以及相关审计和治理。”该项目着眼于2019年“其1.0里程碑并进入生产阶段”。他还指出,与国际合作伙伴合作,利用区块链技术改善移动网络漫游领域。T-Mobile与企业以太网联盟、Hyperledger项目和W3C合作,也是Cascadia区块链理事会创始成员之一。 他解释,区块链是5G和物联网服务自动化和安全性难题中的一个重要部分。“我们一直在探索区块链智能合约如何允许我们实施新的分布式安全模型。”该公司也认识到区块链在面向客户的忠诚度、广告和内容管理领域的可能性。[2019/6/14]

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

动态 | 韩国CacaoEncoder在用户PC中植入挖矿程序进行挖矿:韩国饰品编辑软件CacaoEncoder在用户PC中偷偷植入虚拟货币采矿程序,并其进行采矿。其CacaoEncoder中植入的采矿程序是门罗币的采矿程序。[2018/7/2]

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

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

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

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

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

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

Ripple旗下智能合约结算系统Codius或将复活 :据Bitdays消息,Ripple旗下的Codius项目已表现出可能将被复活的迹象。Ripple在2015年中止了智能合约结算系统Codius的开发,原因是当时的虚拟货币市场尚处于早期阶段,智能合约结算没有实用基础。不过如今,Codius的相关网站已重新开放,同时似乎在暗示该项目已进入了测试阶段。[2018/5/9]

剩下的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:15ms0-3:897ms