广告

算法稳定币 Basis

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。

算法稳定币经历了几个阶段,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);

ISimpleERCFund(fund).deposit(...)
  • 发给债券持有人

	
	
	

uint256 treasuryReserve = ...;

accumulatedSeigniorage = accumulatedSeigniorage.add(treasuryReserve);

emit TreasuryFunded(now, treasuryReserve);
  • 给股票持有人(BAS),也就是给 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[block.number][tx.origin] = true;
_status[block.number][msg.sender] = true;

总结

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

24小时热点

什么是元宇宙?元宇宙怎么玩?

元宇宙是运用数字技术构建且与现实世界相连交互的虚拟世界,元宇 ...

718

波场区块链浏览器

元宇宙平台合法吗

现在,元宇宙平台备受热捧,但有人质疑其合法性。在此,我们将对 ...

747742

T网

“加一数藏”国内数字藏品(NFT)符合当地法规吗?

“加一数藏”国内数字藏品(NFT)符合当地法规吗? 【简介 ...

10967

艺藏

元宇宙游戏:加密货币如何构建虚拟世界和经济

近年来,虚拟宇宙概念已经从科幻小说转变为快速新兴的数字前沿。 ...

1560

区块链圈小菜鸡

“Meta彼岸”国内数字藏品(NFT)如何交易?

Meta彼岸是一个为国内数字藏品交易提供一站式服务的区块链商 ...

25325

启元数藏

千禧年世界七大数学难题

美国麻州的克雷(Clay)数学研究所于2000年5月24日在 ...

41410

5A数字

sdfs是什么?

SDFS(分布式文件系统)是一种面向分布式计算环境的用于集中 ...

107057

P网(Poloniex)交易所

pha币在元宇宙中的地位和作用

元宇宙概念的兴起,越来越多的加密货币开始在这一新兴领域中发挥 ...

7611

波场区块链浏览器

元宇宙赋能厦门数字文旅论坛成功举办

元宇宙赋能厦门数字文旅论坛在4月19日拉开帷幕,中国信息通信 ...

8462

波场区块链浏览器

通俗易懂的元宇宙简介

元宇宙指的就是虚拟的世界,最早在1992年科幻作品小说《雪崩 ...

1556

波场区块链浏览器
广告

热点专题

NFT艺术品到底是什么?

Beeple,“EVERYDAYS: THE FIRST 5 ...

2302429

Opera House

最全的NFT发展史

当我们理解一个新生事物,必须要首先了解其起源,通过对其源头以 ...

1741884

iBox

“华英会”诈骗圈钱5000亿!崩盘后将会凄惨无比

“华英会”崩盘的预警已多次发出,尽管尚未正式宣布崩盘,但大家 ...

1267346

Magic Eden

什么是IDO?这种模式会带来怎样的影响?

要理解IDO(Initial DeFi Offering)初 ...

1142184

Bitstamp交易所

有黑客采取新型 USDT 假充值手法

根据慢雾区情报,有黑客采取新型 USDT 假充值手法,黑客采 ...

996155

区块链博客

4种利用永续合约资金费率套利的策略

下文将介绍在保持市场中立的条件下,如何从永续掉期资金费率中套 ...

902904

DCG区块链孵化器

链圈百科:韩国政府机构组织图

一、行政院 韩国行政院是一个由政府的行政机构组成的中央政府 ...

817844

BitKeep钱包

国内NFT平台是怎么赚钱的?

2021年被称为NFT的“元年”,互联网巨头、各大企业、艺术 ...

797900

CoinBene满币网

元宇宙平台合法吗

现在,元宇宙平台备受热捧,但有人质疑其合法性。在此,我们将对 ...

747742

T网

宝二爷郭宏才的乘风破浪之旅

10年后的比特币会涨到10万美元吗?宝二爷说过:“先吹吹牛B ...

705946

QuillAudits