1. 引言
前序博客有:
- 基于BitVM的乐观 BTC bridge
- BitVM:Bitcoin的链下合约
- Bitcoin Bridge:治愈还是诅咒?
- BitVM2:比特币上的无需许可验证
- 以比特币脚本来实现SNARK Verifier
Clementine:Citrea的基于BitVM的信任最小化双向bridge,开源代码实现见:
- https://github.com/chainwayxyz/clementine(Rust+Solidity)
本文重点介绍Clementine的核心组件及其工作原理。
2. Clementine的核心组件
Clementine的核心组件有:
- 轻节点proof
- Bitcoin轻节点proof
- Citrea轻节点proof
- BitVM内的ZKP(Zero-knowledge Proof)Verifier
2.1 轻节点proof
Clementine的轻节点proof为recursive递归ZKP:
- 基于Bitcoin,通过inclusion和soundness proofs,聚合Citrea proofs
- 从而为Citrea轻节点和Bitcoin轻节点,生成单个简洁proof。
该proof会输出Citrea和Bitcoin的多个identifiers标识符,其中最重要的标识符有:- “Citrea Withdrawal Merkle Root”:即L2出金记录
- “Last Scanned Bitcoin Blockhash”:即监听到的最新L1区块记录
3. Clementine工作原理
Clementine:
- 基于BitVM
- 仅支持static size的UTXO的peg-in和peg-out
- 为简化表示,假设只能支持正好1BTC的peg-in和peg-out
3.1 peg-in
为peg-in,用户将1BTC锁定到某UTXO,该UTXO的花费条件为:
- N+1 of N+1多签:其中N-1 个verifiers,1个bridge operator和1个用户
- 200个区块之后,用户自身签名
在锁定该UTXO之后,用户将下图所示交易的签名发送给verifiers。
一旦所有verifiers对上图交易签名,且该交易在Bitcoin上固化,用户锁定的资金将流向一个新的N-of-N多签。用户在L2,通过向L2 Citrea合约展示一个该交易的SPV proof,用户就可在L2 mint出其pegged BTC。同时,上图L1交易中,包含了一个L2 EVM地址,来确定该用户在L2 Citrea上的mint收款地址。
3.2 peg-out
为发起L2->L1取款,用户必须:
- 将1 BTC转给L2 Citrea上某合约,同时指定一个Bitcoin地址。
- 该收款Bitcoin地址会被作为新叶子节点,记录在 “Citrea Withdrawal Merkle tree”中。
- 然后将该1 BTC在L2上burn掉。
此处为简化描述(但也不失通用性),假设:
- 每个收款Bitcoin地址都是唯一的
在Bitcoin上,任何向指定Bitcoin地址做1 BTC的转账,都是有效取款。
3.3 避免Operator过度报销——Connector Source UTXO
Clementine需确保:
- bridge Operator报销的金额,不得多于其垫付的取款
- 否则,该bridge Operator将永远失去其bridge资金
当bridge Operator向Clementine发起报销时,其不得不使用Connector Source UTXO。为可访问Connector Source UTXO,bridge Operator必须诚实行事,即:
- 1)其垫付了所有取款。
- 2)其inscribe写下了足够多preimages,使其仅可报销所有取款金额等量的BTC。
Connector UTXO Trees为:
- trees of UTXOs
- bridge Operator用于证明其可报销,与其所垫付的取款等量的BTC
Clementine的Connector Source UTXO 和 Connector UTXO Trees 示意为:
每个Connector Source UTXO可被打开为a binary tree,该binary tree中:
- 每个leaf为bridge Operator可拿走的每笔预签名deposit存款。
- 每个节点的花费路径有:
- 知悉某preimage
- 或,7天时间锁 + bridge Operator签名
即,这意味着bridge Operator可确认可打开的leaf UTXOs数量,从而通过公开某些preimages,来表示可报销的bridge funds。
4. Clementine时间轴
Clementine时间轴为:
其中各阶段含义为:
- 1)Light Client Cut-off:表示BitVM承诺来检查取款的区块高度。
- Light Client Cut-off每6个月发生一次,并以相同的间隔持续进行。
- 2)Commit period:bridge Operator的指定时间以满足剩余提款和记录preimages。
- 3)K-deep assumption:确保最新固化Bitcoin区块的period。由于某Verifier可就最新区块的PoW发起挑战,bridge Operator应不能以不同的blockhash来做private fork。
- 4)BitVM challenge response period:该期间,如有必要,Verifiers挑战bridge Operator,并发生交互验证游戏。在该阶段末期,仅有2个可能的结果:
- Connector Source UTXO(s) 可被bridge Operator花费,使得bridge Operator可报销其所覆盖取款等量的BTC。
- Connector Source UTXO(s) 与 BitVM response UTXO一起被burn掉,吊销了Operator对Clementine bridge资金的访问权限。
5. Clementine逻辑
Clementine中,bridge Operator,负责覆盖每笔取款,一旦:
- 包含该取款的proof在Bitcoin上固化
每个period之后:
- Operator通过在Bitcoin上公开 log 2 ( n ) \log_2(n) log2(n)个preimages数量,来对其可从Clementine中报销的bridge funds进行commit。
- 该bridge funds金额,等于自前一checkpoint以来,Operator所垫付的资金总量。
5.1 Operator对其可从Clementine中报销的bridge funds进行commit
基于效率考虑,Operator必须能对其可从Clementine中报销的bridge funds进行commit。该报销金额,必须与其垫付的金额一样。
以上binary transaction tree,使得可支持该commitment架构。该binary transaction tree中的每个UTXO,有2种花费路径:
- 1)7天后Operator花费
- 2)知道指定哈希的preimage的任何人都可花费
每个transaction output有仅Operator知悉的随机preimage。若Operator公开了某UTXO的preimage,则该transaction tree的该branch可被任何人burn掉。
- 由于每个Clementine deposit都预签名为Operator可报销的leaf UTXOs,这样,Operator就无法在当前period再拿走那些资金。
对于具有M个leaf的binary tree,通过公开 log 2 ( M ) \log_2(M) log2(M)个preimages,Operator可对其可报销的bridge funds资金量进行commit。
5.2 Guarding the Peg
在commit period结束之后,若发生如下情况,至少有一个诚实的Verifier可发起挑战:
- 若Operator试图报销多于其垫付金额的BTC
- 若Operator在该checkpoint之前,未能覆盖任何取款
Verifiers通过提供:
- Bitcoin区块头
- 和 直至该checkpoint的total proof
来发起挑战:
-
若Operator的total PoW,远远高于,Verifier的PoW,则Operator赢。
-
若Verifier的PoW足够,则表示该Verifier在正确的区块高度发起挑战,则Operator必须证明:
- 其覆盖了所有取款
- 其公开了匹配所覆盖取款的preimages
为此,Operator提供证明了如下信息的单个ZK Proof:
- Bitcoin Light Client Proof + Citrea Light Client Proof;
- 取款的Bitcoin SPV (Simplified Payment Verification) Proofs;
- Revealed Preimages的Bitcoin SPV Proofs。
若Operator的ZK Proof失败,则Verifier可burn掉其connector source UTXO,即意味着:
- Operator将永远会失去对该bridge funds的访问权限。
6. 结论
Citrea团队,通过Clementine,支持首个,由ZK proofs和BitVM赋能的,trust-minimized two-way peg机制。只要BitVM setup中有一个Verifier是诚实的,Clementine就是安全的。这表示了对现有开放和闭环联盟解决方案的大幅改进。Clementine的设计,与Citrea的trustless light client耦合,可在无需soft fork的情况下,将Citrea的two-way peg信任需求最小化。
参考资料
[1] Citrea团队2024年3月21日博客 Unveiling Clementine 🍊-Citrea’s BitVM Based Trust-Minimized Two-Way Peg Program