比特币价格·比特币行情
Ctrl+D收藏简单区块链

Code Review 回顾:算法稳定币 Basis

作者:

时间:2021/1/7 20:56:42

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

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

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

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

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

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

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

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

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

优先还债,所以先给持有 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%会进入到 Community Development Fund(社区发展基金)

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

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

发给债券持有人

uint256 treasuryReserve = ...;

accumulatedSeigniorage = accumulatedSeigniorage.add(treasuryReserve);

给股票持有人(BAS),也就是给 boardroom

IBoardroom(boardroom).allocateSeigniorage(boardroomReserve);Boardroom.solBoardroom 相当于董事会,是 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[block.number][tx.origin] = true;_status[block.number][msg.sender] = true;总结Basis 的代码很巧妙,化繁为简,也很整洁,通过 3 种 token 的互相转化,保持价格稳定。AMPL 的供应量是自动调整的,而 Basis 的 token 供应调整是通过激励用户的投机行为,让用户主动参与的。

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

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

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

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

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

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

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

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

uint256 treasuryReserve = ...;

accumulatedSeigniorage = accumulatedSeigniorage.add(treasuryReserve);

IBoardroom(boardroom).allocateSeigniorage(boardroomReserve);Boardroom.solBoardroom 相当于董事会,是 Basis 股份的持有者。合约的主要方法有:

allocateSeigniorage:计算可以分配多少钱 

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[block.number][tx.origin] = true;_status[block.number][msg.sender] = true;总结Basis 的代码很巧妙,化繁为简,也很整洁,通过 3 种 token 的互相转化,保持价格稳定。AMPL 的供应量是自动调整的,而 Basis 的 token 供应调整是通过激励用户的投机行为,让用户主动参与的。

ABIT与CoinCodex达成战略合作协议:据ABIT平台官方消息,ABIT交易平台现已与数字货币行情接入平台及排名网站CoinCodex正式达成战略合作协议。 \nCoinCodex是全球性的数字货币行情接入平台及排名网站,汇集了全球上千种数字货币类型及数百家数字货币交易平台的实时行情,旨在为全球数字货币爱好者提供及时、准确、客观的信息参考。 \nABIT是创立于澳大利亚的交易平台,致力于为全球用户提供安全、稳定、高效的数字资产交易服务。 \n基于此次战略合作,CoinCodex将对ABIT平台完整行情及数据进行全面的对接,从而实现ABIT行情在CoinCodex全平台上的实时同步更新,使全球更多用户可以通过第三方平台了解ABIT。[2020/4/22]

动态 | Codebase Ventures子公司测试以太坊游戏加密猫:金色财经报道,Codebase Ventures区块链子公司Arcology正在其区块链网络上测试基于以太坊的游戏CryptoKitties(加密猫)。由于交易量大,该游戏可能会造成严重的网络拥堵。Arcology提供了一个允许并行处理多笔交易的解决方案,可以根据可用的计算机数量线性扩大交易处理。[2020/2/20]

动态 | Codebase Ventures任命Zach Stadnyk为其子公司首席执行官:早期区块链和加密投资公司Codebase Ventures周四宣布,任命企业财务和咨询专业人士Zach Stadnyk为其子公司Code Cannabis Investments的总裁兼首席执行官。 Odaily星球日报注:Codebase Ventures七月宣布成立子公司Code Cannabis Investments,将专注于对大麻产业的投资。(Proactive Investors)[2019/8/23]

标签:

区块链热门资讯
一文了解 Plasm:波卡上的 ETH 2.0

Plasm 是一个基于波卡的可扩展的智能合约链,使用 Parity 的 Substrate 开发,并设计为 Polkadot 的平行链。成为 Polkadot 的平行链,就意味着 Plasm 需要赢得平行链插槽的拍卖。

2021/1/7 22:01:18
金色DeFi日报 | YFI创始人更新Pickle、Cream、Cover等四项全新版项目审计结果

DeFi数据 1.DeFi总市值:278.91亿美元市值前十币种涨跌幅,金色财经制图,数据来源Coingecko 2.过去24小时去中心化交易所的交易量:18.9亿美元 交易量排名前十的DEX 数据来源:Debank 3.DeFi借贷平台借款总量:39.2亿美元DeFi借贷平台借款占比,金色财经制图。

2021/1/7 21:55:45
晚间必读5篇 | 算法稳定币风起:博弈 投机 套利

1.金色观察 | 算法稳定币风起:博弈 投机 套利 作为加密领域最重要的赛道之一,稳定币的整体市值已经超过305亿美元。成为继比特币、以太坊之后,加密领域最耀眼的明星。在市值蒸蒸日上的发展中,稳定币已经出现了三种实现模式:法定货币抵押的稳定币(USDT)、加密货币抵押的稳定币(Dai)、以及无抵押/算法式(铸币权模式)的稳定币(Basis)。

2021/1/7 21:07:34
2021的布局终极策略:回顾从312到现在涨到10倍

在2021年的开始,当市场开始突袭向上,我们来回顾一下比特币过去一年的整体走势,来对未来的布局做一个简单的梳理。 备注:本文有很多的K线图,但并不是做技术分析,只是复盘一下比特币的走势。

2021/1/7 20:03:22
2020 年 DeFi 八大关键趋势 哪些会延续?

把握 DeFi下一波趋势。 2020 年是时代性的一年。对于 DeFi 来说,在过去一年里,也从初兴转向爆发,我们见证了 DeFi 的力量。  2020 年年初,DeFi 的创业者、开发者和投资者才刚刚开始了解和把玩  DeFi 这一 乐高玩具,但到了年底 DeFi 为加密社区带来了最大的增长动能。DeFi 的热点,DeFi 的模因,无处不在。

2021/1/7 20:03:16
数字人民币“硬钱包”首次亮相 能给生活带来哪些便利

1月5日一大早,上海同仁医院呼吸与危重症医学科医生于亦鸣结束夜班,来到员工餐厅购买早餐。他取出一张带有显示屏的卡片,在员工餐厅的支付终端上轻轻一碰,即刻完成了支付。顺利取餐后,于医生又来到旁边的咖啡吧,外带一杯咖啡,同样使用卡片快速完成了支付。 这是数字人民币“硬钱包”的首次亮相。

2021/1/7 19:25:51