BitVM,比特币主网上智能合约的潜力
- BTC0%
10月9日,来自ZeroSync的开发者Robin Linus发布了BitVM白皮书,引起了社区的广泛关注。BitVM引入了一种新的计算范式,能够表达图灵完备的比特币合约,而无需修改网络的共识规则。
去中心化智能合约:局限性与目标
比特币的脚本语言Script是一种基于堆栈的语言,为定义交易的验证逻辑提供了基本的控制结构,如条件检查。它通过简单的条件验证过程要求有效的数字签名来支出比特币。然而,Script被设计为非图灵完备的。尽管它不支持复杂的流程控制功能(如循环),但这种设计确保了语言的简单性和安全性。这些限制使得Script难以执行复杂的计算,包括涉及智能合约的计算。
虽然为比特币设计的一些第二层解决方案可以通过锁定资产来实现基本的智能合约功能,但它们本质上依赖于多重签名地址和跨链资产映射,这需要一定程度的中心化信任。这与比特币对去中心化的承诺相矛盾。在BitVM引入之前,比特币社区一直在探索去中心化、最小化信任且能够进行图灵完备计算的方法。
BitVM:在比特币上计算任何内容
BitVM创新的核心在于利用比特币现有的脚本系统来实现逻辑门(包括与门、或门、非门和异或门,实现AND、OR、NOT和XOR等操作),从而构建任意复杂的布尔电路。这些电路用于对二进制输入执行逻辑运算并给出二进制输出;布尔计算可以使用逻辑门来实现,以执行AND、OR、NOT和XOR等操作。具体而言,BitVM利用哈希时间锁定合约(HTLC)和Taproot(2021年11月激活的用于优化脚本的软分叉)来表示基本逻辑门,如与门和或门。然后,BitVM将这些基本逻辑门组合起来构建任意复杂度的电路,本质上在比特币区块链上模拟了一台可编程计算机。
最后,在交易双方出现争议时,可以采用一种优雅的挑战-响应协议进行验证,类似于比特币上的欺诈证明。证明者声称某个特定函数对某些特定输入求值得到某个特定输出。如果该声明是虚假的,那么验证者可以执行欺诈证明并惩罚证明者。利用这种机制,任何可计算的函数都可以在比特币上得到验证。
BitVM的设计
比特值承诺
比特值承诺是一个比特币脚本,它使用if-else语句来实现承诺方案。这种密码学原语确保发送者可以在发送消息之前确认其内容,并且一旦公开披露,内容就无法被更改。这个承诺方案包含两个哈希值,hash0和hash1。通过将输入的哈希值与这两个哈希值进行比较,来确定返回值是0还是1。
图1:1比特承诺的具体实现
:quality(80)/2023-11-01/1321A251238D665AA862939993DE617A.png)
来源:https://bitvm.org/bitvm.pdf
逻辑门承诺
在计算理论中,任何可计算函数都可以表示为布尔电路。特别是,与非门(NAND gate)是一种通用逻辑门,可用于构建所有其他复杂的逻辑门。BitVM结合了两个表示输入的比特值承诺和一个表示输出的第三个比特值承诺来实现与非门。
BitVM巧妙地通过比特币脚本表达了与非门。这使得它能够构建任意复杂的布尔逻辑电路,有效地通过脚本模拟可编程计算机。
图2:使用比特值承诺实现与非门
:quality(80)/2023-11-01/23A48B54E874C749C41F131C7D4730C6.png)
来源: https://biquanlibai.notion.site/BitVM-2b8557e0ea004d0cbc52951782bc9754
图3:NAND操作的逻辑门承诺
:quality(80)/2023-11-01/E98F6725AA61147C861A13360ADD94C1.png)
来源: https://bitvm.org/bitvm.pdf
该脚本计算两个输入的NAND值,以确保其与承诺的输出位相匹配。
二进制电路承诺
BitVM可以通过组合门电路承诺来表达任何电路。执行的每一步都在一个Tapleaf中进行承诺。它们都被组合到同一个Taproot地址中,使得证明者可以执行电路中的任何门。执行一个门电路需要证明者打开相应的门电路承诺,并为其输入和输出位设置值。例如,在图4中,A、B、C和D是预定义的位值承诺,每个代表一个位。然后使用八个与非门进行逻辑运算。例如,如果A与非B得到E,而E作为下一个与非门的输入,整个电路的最终输出将为TRUE。这种布尔电路的设计将位值承诺的与非门连接起来,实现了复杂的逻辑运算,为比特币区块链上的可验证计算提供了一种紧凑的表示方法。
图4:一个包含八个不同与非门的电路
:quality(80)/2023-11-01/2A444519852359C0EA95AC2D2F5C054A.png)
来源:https://bitvm.org/bitvm.pdf
挑战与响应
在BitVM中,仅承诺一个电路是不够的,需要一个挑战-响应机制来证明计算的正确性。为了实现这一点,证明者和验证者应在设置期间预先签署一系列交易。这些交易按照"挑战 - 响应 - 挑战 - 响应"的顺序链接,创建多轮挑战和响应交互。如果其中一方停止参与,那么在超时后,另一方将赢得挑战并可以获得双方的存款。这种机制仅在存在欺诈的情况下需要。只要双方都合作,他们就可以通过2-of-2签名共同结算任何合约。
让我们看看这种机制在一个假设的案例中如何运作。保罗(证明者)和维基(验证者)预先签署了一系列交易。然后维基可以通过从她的 Tapscript 叶子中的一个哈希锁中选择一个挑战(hash7)来发起挑战(TX 2)。这为保罗解锁了一个特定的 Tapscript,并迫使他执行它,同时保持输入和输出开放。任何不一致的声明都可以通过重复这个程序几轮查询来快速证伪。如果证明者停止合作,验证者可以解锁他持有的哈希原像,以强制证明者在链上回应。每一轮查询可能验证或否定一个特定的逻辑门。通过二分查找(一种用于在已排序数组中定位特定元素的算法),验证者可以在几轮挑战和响应后快速识别出证明者的错误。一旦证明者的两个承诺发生冲突,验证者立即赢得挑战并获得押金。
图 5:执行多轮挑战和响应的预签名交易序列
:quality(80)/2023-11-01/8D9777E151B617754A912BDA1F5097CF.png)
来源:https://bitvm.org/bitvm.pdf
这种精心设计允许 BitVM 对任何复杂的计算进行链上验证,确保了协作的效率并在欺诈事件中施加惩罚。它展示了在比特币网络中验证图灵完备的交互式计算的可能性。
BitVM 设计的关键方面
链下计算和链上验证
BitVM将复杂计算的负担转移到区块链之外,仅保留比特币区块链用于验证结果的目的。这种方法避免了直接在区块链上运行复杂合约,从而减轻了区块链膨胀的问题。
使用哈希锁和比特币脚本表达的逻辑门
BitVM利用比特币支持的哈希锁和脚本操作码来表示基本逻辑门,如与门和非门。通过连接这些逻辑门,它可以构建任意复杂度的电路,实现图灵完备的计算。
证明者和验证者之间的博弈论机制
BitVM的验证机制类似于乐观汇总(Optimistic Rollup),涉及计算双方之间的交互式挑战和响应。最终,正确的计算结果将在链上得到确认。如果证明者作弊,验证者可以在比特币区块链上执行惩罚。因此,BitVM和乐观汇总采用类似的交互机制进行链上验证,唯一的区别是BitVM直接使用比特币脚本来实现交互式挑战-响应过程。
最小化链上影响
BitVM的计算过程对比特币区块链的影响最小,仅在出现争议时在链上留下少量交易。这保留了比特币的效率和可扩展性。
无需软分叉
由于BitVM仅使用现有的比特币脚本功能,因此不需要通过软分叉对比特币协议进行任何修改。这使得BitVM更容易集成到比特币主网中。
结论
BitVM最大的创新在于它能够在不修改比特币核心协议的情况下实现图灵完备的验证;它通过创造性地使用脚本,特别是Taproot优化的脚本来实现这一点。这种巧妙的设计使其能够无缝集成到比特币主网中,而不会引入新的兼容性问题或使比特币变得不那么去中心化。
BitVM 的创新解决方案有潜力为比特币生态系统引入智能合约和去中心化应用。例如,它可以用于构建最小信任的跨链桥,以连接不同的区块链资产,从而增强比特币的互操作性。此外,BitVM 还可以帮助构建更高效的 zkRollup 扩展层,使比特币更具可扩展性。简而言之,BitVM 展示了仅通过创新利用现有功能就能将比特币生态系统推向新时代的巨大可能性。
参考文献:
https://github.com/supertestnet/tapleaf-circuits
https://biquanlibai.notion.site/BitVM-2b8557e0ea004d0cbc52951782bc9754