Gemini稳定币智能合约研究报告
作者: 金丘区块链研究院 洪蜀宁
Gemini稳定币概况
纽约金融服务局(NYDFS)于9月10日批准了Gemini Trust LLC发行的Gemini Dollar(代码GUSD),这是全球首个合规稳定币,由全美最大的托管银行道富银行(State Street Bank)负责资金托管,并聘请了第三方注册会计师事务所定期进行独立审计,相比于之前Tether公司发行的USDT等稳定币,在资金安全性方面有了重大的进步。
与USDT基于比特币的Omni协议发行方式不同,GUSD是基于以太坊的ERC20代币,更加便于与占市场绝大多数份额的其它ERC20代币进行去中心化的交易,这也是GUSD的一大优势。笔者从Gemini公司官网找到了GUSD合约的源代码链接,并进行了详细的研究分析。
GUSD智能合约代码分析
合约结构分析
GUSD共包含6个智能合约,分别为ERC20Proxy、ERC20Impl、ERC20Store、PrintLimit以及2个独立的Custodian合约,所有合约均由地址0x4c2F150Fc90fed3d8281114c2349f1906cdE5346创建。
合约之间的相互依赖关系见下图。
可以看出,GUSD的合约结构与其白皮书所描述的是一致的,各合约的功能如下:
- ERC20Proxy合约:即白皮书中的Proxy合约,是GUSD对外提供服务的接口,所有功能均通过ERC20Impl合约实现。这个合约是唯一且永久不变的。
- ERC20Impl合约:即白皮书中的Impl合约,实现了GUSD几乎所有的功能,如发行、销毁、转账等等。这个合约是可以升级的。
- ERC20Store合约:即白皮书中的Store合约,实现了GUSD数据储存功能,保存了所有账户的余额以及总发行量等信息。这个合约也是唯一且永久不变的。
- PrintLimit合约:对发行量的上限进行管理,允许指定的账户提升或降低发行总量上限。GUSD发行总量无法超过该上限。
- Custodian合约:用于权限管理,所有需要权限的操作均通过Custodian合约来调用。在合约中设置了多种权限管理模式,如双人控制、离线签名、延时生效等。
上图最下方的地址0xd24400ae8bfebb18ca49be86258a3c749cf46853是极为关键的管理账号,掌握了GUSD发行、销毁、合约升级、权限管理等所有的核心权限,相当于Linux操作系统的root账户。该账号一旦丢失或被盗,将会造成系统的崩溃。
合约功能分析
继续对合约的源代码进行分析,各合约的功能和继承关系见下图。
类MVC模式
可见Proxy、Impl、Store三个合约构成了一种类似于MVC的设计模式:Proxy相当于View,Impl相当于Controller,Store相当于Model。作为Controller的Impl合约实现了绝大多数业务逻辑,由于其并不存储数据,故可以任意升级替换而不影响用户资金。相信这样的模式会因其灵活性被将来的项目普遍模仿。
Impl合约可替换
Impl合约的可替换性是通过ERC20ImplUpgradable合约实现的,该合约通过requestImplChange和lconfirmImplChange两个方法允许Custodian为Proxy指定新的Impl合约地址,之后Proxy将会调用新的Impl合约中的代码。
合约治理
Custodian合约通过一种称为解锁(Unlock)的机制来实现灵活的权限控制。解锁操作要么由主账户(即前述0xd24400地址)、要么由任意账户发送1个以上的ETH进行申请,申请时可指定一个回调函数(任意的合约调用操作)。该申请需要等待一段时间方可生效,主账户发起的申请需等待2天,其他账户发起的需等待一周。申请生效后,需由2个不同的管理员签名生成确认交易(目前共有6个管理员账户),2个签名验证无误后,Custodian合约会自动调用之前指定的回调函数,从而实现管理机制的调整。
而Custodian合约本身也是可替换的,可以通过CustodianUpgradeable合约的requestCustodianChange和confirmCustodianChange方法指定新的Custodian合约地址,从而调整对Proxy、Impl、Store合约权限管理的机制。
结论
优点
- 代码规范,注释较为丰富且合理。
- 参考MVC模式实现的Proxy、Impl、Store合约具备充分的灵活性,便于BUG修复和功能升级。
- Custodian机制灵活,且可任意调整管理机制。
缺陷
- 主账户权限过于集中,未进行分权治理,风险极高,是系统安全的瓶颈,会成为黑客和内部人员攻击的重点目标。
- 未实现专门的监管接口,监管指令仍需通过主账户进行操作,无法防范Gemini公司作恶的情形。
- 发行过程未能实现双人操作,如果能改为Gemini公司申请发行、托管银行审核确认的方式则更能减少超发风险。
- Custodian解锁机制的回调函数过于灵活,万一调用了错误的或恶意的合约函数,可能会对用户资金造成损失。
免责声明:
1.本文内容综合整理自互联网,观点仅代表作者本人,不代表本站立场。
2.资讯内容不构成投资建议,投资者应独立决策并自行承担风险。
- 贝佐斯最后一封股东信:宇宙希望你成为普通人,千万别让它成为现实2021-04-19 17:02
- Props,让互联网与区块链无缝对接的「中间件」2021-04-19 17:02
- Coinbase高管到底卖了多少股票?2021-04-19 16:03
- 通往未来之路:下一代互联网与Metaverse2021-04-19 16:03
- 央行前行长周小川谈比特币:要提醒,要小心2021-04-19 15:03
- 链上新知 |电子图片卖出7000万美金,让马斯克都来站台的NFT究竟是什么?2021-04-19 15:02
- Crypto VC,LP怎么投?2021-04-19 13:03
- 周末比特币融资利率跌至-0.03%低点,为7个月以来最低水平2021-04-19 11:02