真正的技术魔法正在比特币世界里上演。
开发者 Robin Linus 近日发布了名为 BitVM 的技术提案,这一突破性方案为比特币的应用开发打开了全新可能性。它能够在比特币链上实现几乎任意类型的计算,并基于计算结果强制执行链上比特币的流转规则。
最重要的是,BitVM 无需对比特币现有共识机制做出任何更改。其核心思路是将复杂计算逻辑移至链下处理,仅在另一方声称存在不诚实行为时,才允许在链上挑战部分计算步骤。简而言之,BitVM 使得比特币在当前状态下就能以可执行的方式支持任意图灵完备计算。
逻辑门基础:计算的基石
要理解 BitVM 的运行机制,我们首先需要了解计算的物理与逻辑基础。
计算机底层运作的本质是处理和传递无数的 1 和 0,但这一过程究竟如何实现?关键在于逻辑门。计算机中的每一块芯片都由数百万甚至数十亿个微型逻辑门构成。
这些微型设备接收一个或两个“比特”信息(即 1 或 0),执行简单的逻辑操作后输出另一个 1 或 0,结果再输入到下一个逻辑门。
逻辑门种类繁多,例如:
- 缓冲门(Buffer Gate):输入什么就输出什么。
- 非门(NOT Gate):输出与输入相反的值。
- 与门(AND Gate):仅当两个输入均为 1 时才输出 1,否则输出 0。
- 与非门(NAND Gate):当两个输入均为 1 时输出 0,其他情况均输出 1。
值得注意的是,仅使用 NAND 门就可以构建出所有其他类型的逻辑门。虽然效率可能不及专用门电路,但功能上完全可行。这意味着,只要拥有足够的 NAND 门,就能构建出执行任意计算的电路。
在比特币脚本中实现 NAND 门
那么,如何利用现有的比特币脚本构建一个 NAND 门呢?答案是结合哈希锁和两个不太常用的操作码:OP_BOOLAND 和 OP_NOT。
首先来看哈希锁的使用。用户可以创建具有两个支出路径的脚本:一条路径需揭示哈希锁 A 的原像,另一条需揭示哈希锁 B 的原像。路径 A 将在堆栈上放置数字 1,路径 B 则放置数字 0。
通过提供哈希锁的原像,用户可以“解锁”一个比特,将其作为正在构建的 NAND 门的输入。脚本只能通过其中一条路径被执行,这为后续机制提供了基础。这个简单原语的作用是让用户能够逐个比特地承诺,以便在 NAND 门脚本中使用。
回顾 NAND 门的定义:它接收两个比特,输出一个比特。若两个输入均为 1,则输出必须为 0;其他任何输入组合均输出 1。利用上述双路径哈希锁技巧,用户可以承诺两个输入及一个输出,但还需验证输出的正确性。这时就需要 OP_BOOLAND 和 OP_NOT 出场。
在选定输入值并声明待验证的输出值后,可以利用一个巧妙的方法:OP_BOOLAND 执行的是与 NAND 相反的操作——若两个输入均为 1,则输出 1;其他情况输出 0。而 OP_NOT 则将输入值反转(1 变 0,0 变 1)。这样,就能在脚本堆栈上对两个输入值实际执行 NAND 操作。然后,使用 OP_EQUALVERIFY 将堆栈上实际 NAND 操作的输出与用户声称的输出(通过哈希锁承诺)进行验证。如果两者不匹配,脚本验证将失败。
至此,我们成功在比特币脚本中实现了一个 真正通过比特币脚本强制执行正确操作的虚拟 NAND 门。
实现任意计算的路径
既然能在比特币脚本中构建单个 NAND 门,接下来又能做什么?答案是创建覆盖任意计算每一步的完整 Tapleaf 树,就像实际逻辑门构建计算机处理器一样。
为实现复杂计算,需要将逻辑门串联起来,使得前一个门的输出直接作为后一个门的输入。在 BitVM 中,通过在门之间适当连接哈希锁来实现这一点。例如,如果一个门脚本的输出可以选择揭示原像 C1 或 C2,那么系列中的下一个门就在相应输入中使用相同的哈希锁值。这样,若有人想对前一个门的结果撒谎,唯一方法是揭示另一个 C 哈希锁,而这正好可用于惩罚机制。
双方将希望进行的任何计算分解为仅由 NAND 门逐步执行的电路。随后,将电路中的每个独立门(包含每个计算步骤的相应哈希锁选择)编码到单个 UTXO 所能锁定的 Tapleaf 树中。整个结构包含两个版本:一个供证明方使用以证明自己正确执行程序,另一个供验证方使用以验证执行正确性。
接着,双方预先签署一系列用于链上挑战与应答游戏的交易。理想情况下,整个计算过程在链下运行和验证,双方根据计算结果合作将资金分配至相应人员。但如果证明方停止合作,验证方可在链上发起挑战。
第一步是注入资金。其中一个脚本路径允许证明方在时间锁过后单方面申领资金。另一路径则允许验证方立即申领资金,前提是能够展示当前门任何输入或输出可能对应的两个值的原像。第三个路径允许验证方强制证明方在链上执行某个特定门合约(即证明方停止在链下合作之后的下一个门)。此路径要求验证方释放另一个仅其拥有的哈希锁原像,作为对证明方每次门挑战的锁,确保证明方只能执行该特定门。
只需几轮这样的交互,即可保证合约正确结算。要么验证方用完预签名交易无法继续挑战(因为证明方持续证明每个门的正确执行),证明方获得资金;要么证明方因可能被处罚而不响应挑战,验证方在时间锁过后获得资金;要么证明方在链上错误执行某个门,验证方立即获得资金。理想情况是所有操作在链下完成并合作结算,但若合作失败,仅需几轮链上交互,合约也能无误结算。
技术应用的前景与挑战
毫无疑问,如此重大的提案将在未来几周内引发广泛讨论。
BitVM 需要处理和生成的数据量极其庞大。我们谈论的是叶子节点数以亿计的 Taproot 树,以及与之配套的、至少需要几个步骤长的预签名交易链以确保准确结算。其链下数据管理成本非常高昂。
另一大限制是该方案目前仅适用于两方场景:一方负责证明正确执行,另一方负责验证执行。尽管未来的研究可能找到将其推广至更多参与者的方法,但至少目前尚无清晰路径实现这一点。此外,即使解决了多方参与的问题,这种交互式协议仍要求所有参与者在合作情况下始终保持参与。
尽管如此,BitVM 仍然精彩地演示了如何利用复杂程序来对比特币实施有条件控制。在如何将更多逻辑打包到单个叶子脚本中,或如何使用不同操作码提升整体方案效率方面,肯定还存在优化空间。通过基础操作的简单解构和博弈论平衡,比特币能够强制执行任意计算。
这无疑是技术 wizard(魔法师)们的杰作。若想深入了解比特币智能合约的最新进展,请 👉 探索实时开发工具与资源。
常见问题
BitVM 是什么?
BitVM 是一种比特币技术提案,允许在无需改变比特币共识规则的前提下,实现并强制执行任意复杂的链下计算。其核心是通过链下计算与链上挑战机制,确保计算的正确性。
BitVM 如何保证计算正确?
它采用“挑战-响应”模式。双方预先签署一系列交易。若一方声称计算错误,另一方可在链上发起挑战,通过执行少量关键步骤验证结果。错误方将受到经济惩罚,从而确保系统诚实运行。
BitVM 需要改变比特币协议吗?
不需要。BitVM 完全利用比特币现有操作码(如 OP_BOOLAND、OP_NOT)和脚本功能(如哈希锁、时间锁)构建,无需分叉或共识变更。
BitVM 的主要限制是什么?
目前其主要限制包括:仅支持两方参与;链下数据管理成本极高;需要双方持续在线交互。这些限制了其当前的可扩展性和应用范围。
BitVM 适合哪些应用场景?
它非常适合需要复杂计算且涉及经济抵押的场景,例如:高级链上期权、博弈类游戏、条件支付通道、去中心化仲裁等。其潜力在于将复杂逻辑引入比特币本身。