新奇隐私币项目 Horizen 团队曾经声称:“如果中本聪要给 Bitcoin 设计侧链,那么他设计出来就应该是像 Zendoo 这样的”。这里的 Zendoo,就是 Horizen 团队设计的侧链协议,我们今天来研读 Zendoo 协议白皮书。
Zendoo 白皮书由 Horizen 团队和 IOHK 团队共同撰写完成的,该协议支持任意类型的侧链,包含 UTXO 模型的侧链、智能合约的侧链、甚至是一个普通的中心化应用。
Zendoo 协议仅支持资金跨链,这点很好理解,因为 Horizen 是个 UTXO 模型的隐私币公链,并不支持智能合约,所以的跨链协议也只是资金跨链。Zendoo 结合零知识证明,支持去中心化的方式达到跨链的目的。
跨链方式
共包含四种的跨链方式:
跨链方式 | 转出方 | 转入方 | 操作链 | 备注 |
---|---|---|---|---|
FT(Forward Transfer) | 主链 | 侧链 | 主链 | |
BT(Backward Transfer) | 侧链 | 主链 | 侧链 | |
BTR(Backward Transfer Request) | 侧链 | 主链 | 主链 | 侧链正常时,在主链上执行此跨链 |
CSW(Cessed Sidechain Withdrawal) | 侧链 | 主链 | 主链 | 侧链无响应时,在主链上发起提款 |
我们来展开研读:
1. FT(Forward Transfer)
FT 是在主链上进行操作,将主链上的资产,转移到侧链上。协议也颇为简单,主链将 FT 作为一种特殊的交易,在主链上销毁币,在侧链上提供收款相关的 metadata。
侧链需要实时监控主链,如果主链的最新区块没有包含 FT 交易,则侧链仅仅将主链该区块的 hash 作为引用,加入侧链中;若主链的最新区块包含 FT 交易,则整个区块头、所有 FT 交易、以及所有 FT 交易的 merkle 路径都会被引入侧链中作为引用。这样,侧链上的任何人都可以验证交易是否合法,而不用去主链上进行查询验证了。
2. BT(Backward Transfer)
BT 是在侧链上操作的,是将侧链上的资产,转移到主链上。前面讲过,IOHK 也是 Zendoo 白皮书的撰写者之一,所以我们在 BT 的设计中,能看到 Ouroboros 协议的影子。
像 Ouroboros 协议一样,BT 的协议设计也涉及到 epoch 和 slot 的概念,如上图所示。一个 witdrawl epoch 由 len 个 slot 组成,len 对不同的侧链参数不同,如果一个提款证书在这段时间内没有提交到主链上,则侧链会被认为是停止了(ceased,比如在 epoch i 里的一个提款证书,在 epoch i+1 里的前 len 个块中没有提交到主链上 ),以后的提款证书则不会被主链所接受,但是侧链的资金,还是可以取走的。