虽然项目称作WBTC,但在白皮书中,主要描述多个组织间管理代币的框架,如何将资产代币化,及避免单点风险的治理模式,以下内容取自白皮书的叙述:

项目网址:https://www.wbtc.network/ 白皮书:https://www.wbtc.network/assets/wrapped-tokens-whitepaper.pdf(v0.2)

A multi-institutional framework for tokenizing any asset

白皮书

由于ERC20 Token的易用与普遍性,ERC20代币成为重要的数字资产表示方式,并同时继承来自区块链与以太坊的优点,更佳的透明度与较快的交易时间。如果能将某个资产,打包成ERC20 Token,某种程度像是在以太链上发行稳定货币,这里的稳定货币意义不一定是指代币与法币价格上的1:1,也可指数量上的1:1,例如1 BTC=1 ERC20 BTC Token。

创造稳定币的做法通常有两类:

算法型稳定币(ex: DAI, Basis, Carbon, NuBits) 中心化稳定币(ex: Tether, True USD, USDC, Digix, Globcoin)

在这份白皮书,采中心化稳定币的方式,即储备证明来产生稳定币。代币化的好处在于:

较快的交易速度 减少中间人摩擦 强化安全 即时的易用性 改善透明性

另外为什么想要发行ERC20 Token 的目的

促进分散式交易所或DApp 上代币的流通性 ETH/Token 的交易对很多,但没有BTC/Token 的交易对,而BTC 又是主流且常被交易的代币 DApp 上的工具较成熟,开发及使用相对容易 在节点管理上相对省力,无需管理多个不同类型的区块链节点 若有法币型稳定币,也有助于电商用于交易收付

在发行代币上,问题与挑战为:

能支持较大的交易量 代币发行的信任问题 由于采中心化的发币方式,需要分散机构的风险 谁被授权持有该资产 如何防止滥发币 保管方如何证明妥善保管资产 如何监管 Custodian 必须有执照才能担保与保管资产,且各地法律不同,Custodian 也必须提供证明,有足够的担保资产。针对User,需要经过KYC/AML 才能进行代币交易/购买/赎回 联盟的利益相关者如何治理 由于系统有多个利益相关者,当代币规则改变时,如何调整规则

场景描述

关键角色, 如下图:

Custodian: 负责保管资产(WBTC 中,角色为BitGo ) Merchant: 负责代币的分配,铸币或烧币(WBTC 中是Kyber Network 及Republic protocol 来管理 ) Minting (铸造新代币) Burning (烧毁代币/减少总量) User: 持有代币的使用者, 代币可用于与他人交易 WBTC DAO member: 当Custodian, Merchant 的组织方有新加入或离开时,由这些组织会员一起投票管理(多签钱包)

Merchant 会维持一部分的水位, 当用户想来换的时候才不需要重新mint

Implementation

系统设计

01. 托管钱包设定(Custodian wallet setup)

托管钱包被设计于保管多个Merchant 的资金池,而钱包则由Custodian 的多签钱包所控制,当Custodian 对Merchant 进行交易发送时,Merchant 的地址必须存在于钱包的白名单当中,此外铸币/烧币的行为规定必须在48 小时内完成。

02. 铸币(Minting)

铸币必须由Merchant 发起请求,由Custodian 进行铸币来完成流程,整个过程牵涉多个交易行为,如下:

Merchant 在ETH 链上发起一笔请求铸币的交易,授权Custodian 进行铸币,并且记录Merchant 用于接收BTC 的地址 Merchant 传送BTC 给Custodian Custodian 等待BTC 入金(6 个确认) Custodian 发起一笔铸币的交易,在ETH 链上产生WBTC 代币

03. 接收WBTC (receiving)

User 接收WBTC 的流程

User 请求Merchant 将BTC 换成WBTC (打包成WBTC) 在发送代币之前,Merchant 必须针对User 通过KYC/AML 的程序 User与Merchant执行原子交换或是可信任的交易方式

- User收到Merchant给的WBTC

- Merchant收到用户给的BTC

04. 烧币(Burning )

烧币事实上是将手上的WBTC 赎回BTC 的意思,只有Merchant 能够烧毁WBTC,做法是由Merchant 发起烧币的交易,针对自己地址上的WBTC 进行烧毁的动作。

Merchant 发起烧币的交易,烧毁等量的WBTC Custodian 等待烧币完成(25 个区块确认) Custodian 将等量的BTC 传送到Merchant 的BTC 地址 Custodian 在ETH 链上发起烧币完成的请求

05. 接收BTC (receiving)

用户向Merchant 发起赎回BTC 的请求 在发送代币之前,Merchant 必须针对用户通过KYC/AML 的程序 用户与Merchant 执行原子交换或是可信任的交易方式 用户收到Merchant 给的BTC Merchant 收到用户给的WBTC

治理(Governance)

关于智能合约的多签钱包中,DAO 成员的加入与移除,需经由委员会的同意流程,M-of-N multisig wallet。

侧链上交易

目前,WBTC的发行与流通在ETH链上,由于主链上对于代币的操作与开发环境相对友善,有钱包、浏览器与DApp等。虽然交易成本相对BTC便宜,但实际上操作仍需要手续费,当以太链壅塞时,未必能有较便宜的交易手续费。而这可以藉由pegged sidechain的帮助,由DAO成员运行既有的parity-bridge方案。该链将以PoA的方式运行,产块的时间约每4秒一个,如此,WBTC就能够在主链与侧链上达到较佳的扩展性。

原子交易(Atomic Swap)

Atomic swap 会用于Merchant 与User 之间,为了要进行WBTC 与BTC 的交换。一旦User 的KYC 通过之后:

User 产生一组secret,并且以off chain 的方式交给Merchant 一个杂凑值Hash(secret) User 与Merchant 同意一组彼此用来交换的ETH 与BTC 地址 User 产生一个BTC HTLC (Hashed Time Lock Contract) 的交易,使用Merchant 的BTC 地址作为收款地址,退款地址为自己的BTC 地址,其中包含用于锁的Hash(secret),与交易过期时间。P2SH 的地址 在确认BTC 入金后,Merchant 以同样的方式在ETH 上建构HTLC 合约,使用User 的ETH 地址作为收款地址,退款地址为Merchant 的ETH 地址,并包含用于锁的Hash(secret),与交易过期时间。Merchant 将WBTC 转送到atomic swap contract。 用户揭露secret 并提领WBTC 到用户的ETH 地址。 Merchant 利用这个secret 来提领P2SH 上的BTC。 如果User 没有揭露secret 来提领WBTC,则上述的过程将不会发生。

由于上述的动作,牵涉到交易,所以User 必须支付手续费,当开始执行流程的时候。另外,上述的确认数目可以调降,根据信任的程度,来加速交易执行,毕竟整个流程牵涉许多BTC 与ETH 交易。

费用

Custodian fee: 当Merchant 铸币或烧币时,由Custodain 收走 Merchant fee: 当User 与Merchant 交易时,由Merchant 收走 Sidechain transaction fee: 由运行PoA 链的DAO 成员收走,用于维护链

Trust and Transparency

所有的纪录必须在链上,可定期被审查与保持透明性

Dashboard

https://www.wbtc.network/dashboard/order-book

举例来说,下图是一笔mint 的交易,可以看到不同角色在铸币过程执行的动作,全程保持透明

合作伙伴

合约原始码

WBTC合约原始码:https://github.com/WrappedBTC/bitcoin-token-smart-contracts/ Audit report:https://github.com/WrappedBTC/DAO/blob/master/DeploymentVerification.md