近期以太坊扩容方案的进展似乎影响了比特币生态的研究方向,BitVM 应运而生,它结合了乐观汇总(Optimistic Rollup)和状态通道(State Channel)的特点。
引言
比特币社区近日因 BitVM 白皮书的发布而掀起波澜。该系统自称为可在比特币链上实现任意计算的解决方案。该提案由 ZeroSync 的 Robin Linus 提出,迅速获得了超 300 万次的阅读。
比特币网络本身并不支持智能合约,这是它与后来出现的区块链(如以太坊、BNBChain、Solana)的主要区别。多年来,社区一直在尝试扩展比特币网络并引入智能合约,但至今尚无完美方案能完全继承主网的 decentralisation 与安全性。
BitVM 的出现,可视为对比特币智能合约可行性的全新探索。以下我们将深入了解这一号称“能在比特币链上计算一切”的系统。
什么是 BitVM?
BitVM 是一种允许在比特币链上执行复杂计算和逻辑的模型,无需改变共识规则。换言之,它实现了在比特币主网上运行智能合约的功能。
与一些二层方案类似,BitVM 采用乐观机制:参与者相互信任,在链下执行合约中的所有操作。仅当发生争议且无法线下解决时,才将问题提交至链上进行裁决。
若出现争议,如何判定对错?在比特币本身不支持智能合约的情况下,如何实现链上验证?
这正是 BitVM 相比其他方案的创新之处,也是其引发广泛关注的原因。
BitVM 的运行机制
逻辑门基础
要理解 BitVM,需先了解逻辑门(Logic Gates)——计算机最深层的基础设施。
所有计算机都基于0和1运行。芯片接收比特信号(0或1)作为输入,执行运算后输出结果(0或1)。输出结果取决于输入数据和所使用的逻辑门类型。常见逻辑门包括:
- AND 门:仅当所有输入为1时输出1。
- OR 门:至少一个输入为1时输出1。
- NOT 门:输出与输入相反的值。
- XOR 门:仅当一个输入为1时输出1。
- NAND 门:两输入均为1时输出0,否则输出1。
通过组合不同的逻辑门,可以构建出处理所有计算机程序的复杂电路。BitVM 的关注点在于 NAND 门,因为它是“通用门”(Universal Gate)——仅通过 NAND 门的组合就能实现任何其他逻辑门功能。
简言之,构建出 NAND 门就等于能解决所有计算问题。
比特币网络上的 NAND 门
接下来的任务是在比特币网络上创建一个 NAND 门,并“迫使”编译器执行它。
比特币网络使用 Bitcoin Script,包含一系列操作码(op_code),用于理解交易输出的条件和规则。但操作码数量有限,仅支持简单脚本计算。
BitVM 的创始人 Robin Linus 注意到两个操作码:OP_BOOLAND 和 OP_NOT。
- OP_BOOLAND:类似 AND 门,两输入均为 TRUE (1) 时输出 TRUE (1),否则为 FALSE (0)。
- OP_NOT:对输入值取反,输入 TRUE (1) 则输出 FALSE (0),反之亦然。
将这两个操作码组合,便得到一个 NAND 门——可解决所有计算问题的基本单元。比特币编译器在遇到这些操作码时必须执行。
Taptree:比特币的智能合约载体
单个 NAND 门不足以处理复杂计算,需将其嵌入一个完整电路。
BitVM 利用操作码 OP_EQUALVERIFY 和哈希锁(hashlock)组合,与 NAND 门共同构建出一棵完整的 Tapleaf 树(Taptree),其中包含程序计算的所有逻辑。在此结构中,每个逻辑门的输出成为下一个门的输入,哈希锁用于证明每步的正确性,并在出现错误时供他人验证。
随后,开发者需编写兼容此模型的执行逻辑(智能合约)并部署上链。剩下的工作交给比特币网络——BitVM 只需等待网络执行海量 NAND 运算后返回最终结果。
BitVM 系统的工作流程
在理解底层基础设施后,我们来看 BitVM 如何与用户交互。
如前所述,BitVM 基于参与者间的相互信任运作。所有繁重计算均在链下执行。仅当计算结果遭质疑且链下无法解决时,才提交至链上重新计算以裁定对错。
BitVM 运行流程如下:
注:目前 BitVM 仅支持两方参与合约。
- 合约条款设定:双方确定目标与所有可能情况的条款。
- 合约编译:将合约编译成前述的 Taptree 形式指令,确保可在比特币网络运行。此 Taptree 的一份副本保存在比特币链上,供需要链上验证时使用。
- 合约激活:双方协商分别扮演“证明者”(Prover)和“验证者”(Verifier),并通过多签交易将保证金存入系统以激活合约。该资金用于支付工作成本、争议处理费用及可能的欺诈罚金。
- 完成工作:工作完成后,若在等待期内无任何质疑,证明者获得合约约定的资金。
- 争议解决:若验证者发现流程中存在错误,可提交欺诈证明(fraud proof)请求验证。证明者有一段规定时间自证清白。
有三种可能结果:
- 欺诈证明属实:验证者获得资金。
- 欺诈证伪:证明者获得资金。
- 证明者超时未自证:验证者获得资金。
此外,若验证者能通过原始数据(preimage)为所有情况提供证明,亦可立即获得资金。
合约中的挑战与证明工作均在链下进行。仅当双方无法链下达成一致时,才上链解决。
机制总结
BitVM 的运作可概括为五个组成部分:
- 比特值承诺(Bit Value Commitment):允许证明者设置比特值(0或1)。随时间推移,这些值的披露使承诺具有约束力。
- 逻辑门承诺(Logic Gate Commitment):BitVM 使用通用 NAND 门解析复杂电路,输入输出依赖于比特承诺。
- 二进制电路承诺(Binary Circuit Commitment):NAND 门迷宫根据合约条款编译逻辑,每步承诺至 Tapleaf 构成 Taptree。
- 挑战与响应(Challenges & Responses):挑战-响应机制是系统的防欺诈保障。
- 输入与输出(Inputs & Outputs):电路中的输出值可使用比特值承诺确保正确性。
BitVM 的局限性
复杂性与成本
为使智能合约在比特币上运行,需将其编译成 Taptree 形式的 NAND 电路链。复杂正源于此:据创始人所述,即便普通合约也可生成数十亿的 Taptree 叶片。
如此庞大体积下,编译合约已很困难,执行更是挑战。完成这些工作的资源成本极高,缺乏经济效率。
一次性智能合约
第二点限制是已编译的智能合约通常只能使用一次,或仅限同一对象和目的重复使用。因为合约内容编译为 Taptree 后已包含针对特定证明者与验证者的全部约束条款。新用户需重新编译合约。
这同样缺乏经济性和扩展性。
仅支持两方参与
目前 BitVM 仅支持证明者与验证者两方参与。这对网络扩展性是严重限制。
尽管创始人 Robin Linus 提出了多参与方的概念设计,但至今未有正式信息发布。
社区观点
- Adam Back(Blockstream CEO,比特币元老)认为大家暂不必过度兴奋,它更像是2016年 Greg Maxwell 的 ZKP 条件支付实现的泛化。
- Dotta(比特币生态开发者)表示兴奋并指出 GitHub 上已有概念验证,虽目前仅支持两方,但可改进。
- Eric Wall(区块链研究员)支持该创新,但也指出 BitVM 需解决的扩展与效率问题。
- Dan Robinson(Paradigm 研究员)批评其并非完整图灵机,实际难以用于预期用途。
常见问题
BitVM 是什么?
BitVM 是一种基于比特币网络的计算模型,允许在不变更共识规则的前提下执行复杂逻辑和智能合约,结合了乐观汇总和状态通道的特点。
BitVM 如何工作?
它通过将合约编译为 NAND 逻辑电路(Taptree),在链下执行计算。仅当出现争议时,才利用比特币脚本的操作码进行链上验证与裁决。
BitVM 的主要限制有哪些?
包括编译与执行成本高昂、合约多属一次性使用、目前仅支持两方参与。这些限制了其经济效率与扩展性。
BitVM 是否支持多用户场景?
当前版本仅针对两方设计。虽有多方参与的概念方案,但尚未实现。
BitVM 对比特币生态的意义是什么?
它是继 Ordinals 后最具创新性的探索之一,为比特币智能合约发展提供了新方向,尽管仍需克服诸多技术挑战。
结论
继 Ordinals 之后,BitVM 是比特币多年来最令人兴奋的倡议之一。尽管存在限制,但 BitVM 刚诞生不久,开发者正积极完善系统。期待未来能看到更多基于该平台的有益应用。