GUSD研究报告
本文基于GUSD白皮书总结而得。
GUSD概况
北京时间9月10日22时,双子星交易所正式推出全球首个受政府监管、基于以太坊区块链ERC20标准的稳定币Gemini dollar(GUSD),用户可以将交易所账户美元转换为GUSD,从而可以提取到自己的以太坊钱包地址。GUSD与美元兑换价为1:1
白皮书中提出了解决稳定币(STABLECOIN)的解决方案:通过密码学的论证和监管(regulatory oversight)建立信用。我们的技术设计在以太坊网络上实施。包含着升级的特性、代币的发行中高风险操作离线许可以及混合离线、线上许可的机制,提供了梦寐以求的既安全又兼顾灵活行。我们的增信措施(trust implementation)包括通过(trust network查者(examiners)。总之,GUSD是受监管的稳定币,可以广泛应用于中心化或者去中心化的交易媒介、记账单位(unit of account)中。
GUSD系统概况
GUSD系统的核心组成部分为三个智能合约:分别被称为“授权(proxy)”“应用(原文为impl,有分析认为其为implement的缩写)”与“储存(Store)”。
此系统提供代币持有者以界面,使其能够与之交互,并执行例如转移代币与浏览代币余额之类的操作。Proxy合约中不含由GUSD的反应与状态(behavior and state of the Gemini dollar)组成的代码与数据,相反,proxy合约将负责代币转移、发行、和其他代币的特性的权限授予impl合约。
impl合约不直接控制组成GUSD账簿(ledger)的数据(即代币持有者与其余额之间的路径图the mapping of token holdersto their balances)。其将帐簿的所有权转移给最后一个store合约:外部永久性GUSD账簿。
可视化如下图所示:
合约监管
离线许可机制(offline approval mechanism)
对于GUSD系统中某些高风险操作,创立离线许可机制。
要求系统内的每一智能合约寻求监管者(custodian)的许可。监管者可以是另一个智能合约或者线上或线下的keyset。监管者可以依托(look to)下一监管者,至此,形成监管(者)链。如果一项智能合约的监管最终落在线下keyset之上,由此就形成了离线许许可制度。
如下图所示,分别为proxy与store智能合约的离线许可制度:
合约升级
合约升级/更新(upgrade)
GUSD代币的升级是利用GUSD系统离线许可机制的高风险操作。例如,通过指令Proxy(经由“监管者”)将活跃代币实现(active token implement)授权给新的“Impl”,以代替现阶段的Impl,并且,当接受对GUSD账簿更新后,指令Store(通过“监管者”)视新的Impl为唯一信赖源(single trusted source)
如图所示:
上图反应了更新升级的过程,Impl(1)被新的Impl(2)代替。Proxy授权给Impl(2)。相同地,现阶段Store只接受来自Impl(2)的访问(call)。前一阶段的Impl虽然保留着但是已经在此系统中脱钩(unlinked)。
所有的代币,Proxy和Store的监管使得GUSD系统升级成为可能。另外,监管本身也可以升级。例如,如果我们想改变我们离线的keyset,我们能够指令“监管者”去指令Proxy依赖新的“监管者”,此监管者使用新的离线keyset。
代币打印
打印代币也是高风险操作。GUSD发行数量不会超过其底层支持的美元余额。我们需要一种解决方案,不仅提供离线许可机制的安全性而且提供在线许可机制的灵活性。于是,我们推出一种混合的解决方案:Impl是一项控制着提升GUSD供应的智能合约,其监管涉及离线和在线许可机制。为了实施这种特殊的机制,我们向Impl监管链中引入了一项名为“打印限制者”的智能合约。
在获得线上Key的许可之后,Impl可打印一定数量的GUSD,具体限额由“打印限制者”决定。在获得离线keysey的许可后,该限制可提升(获经过在线key许可后降低)。此种解决方案给与了GUSD代币发行所需求的安全与灵活。
合约安全
GUSD执行着有以下的安全性能:
1) [endif]离线keys:允许高风险操作的Keys被离线储存在Gemini享有专利的冷储存技术中。
2) [endif]key的产生:key的产生、储存、管理都在硬件安全模块(hardware security modules)中进行。我们只使用HSM,每一“签名者”(signer)都符合FIPS PUB 140-2标准三级或者以上。
3) [endif]双层控制(多重签名):高风险操作需要来自至少两个签名者的许可(例如,数字签名)。我们使用M of N 签名设计,此处M=2。这样既提供了安全性又兼顾容错(fault tolerance)。
4) [endif]时间锁(time lock):即使在获得许可之后,高风险操作的执行在在一定时间内是被锁定的。这样就有宝贵的时间监测,并且能够提前应对潜在的安全突发事件。
5) [endif]取消(revocation):待定的行动可以被撤销(revoke),使得错误或恶意的操作在执行前可以被取消。