2024 年国内 AI+2C 应用发展
比特币生态扩容方案巡礼(2): BitVM——蚀刻的艺术
作者:Simon shieh,来源:MetaTrust Labs
前言回顾
上一篇《比特币生态扩容方案巡礼(1):铭文何去何从》中,我们讨论了热门的铭文生态的技术原理和可能存在的安全问题,并且提到了用递归铭文来实现智能合约的可能性。但是因为Luke对Taproot脚本的限制,递归铭文似乎有了一些障碍,那在比特币网络上实现智能合约有没有其他的可能性呢?
区块链开发商ZeroSync的联合创始人Robin Linus,在2023年10月9日发表了一篇名为“BitVM:在比特币上进行所有运算(BitVM:Compute Anything on Bitcoin)”的论文,其中提出了一个计划,旨在将智能合约引入比特币区块链。
该论文提出了一个非常有趣的思路,可以用taproot完成几乎所有的任意计算,并使用这些计算来验证在比特币链下发生的事情。其中的诀窍是,将所有的逻辑都放在链下,并在其他人断言了不诚实的结果时,在链上用少数几步计算来挑战这些结果。
换句话说,就是将一个Verifier的逻辑放在比特币网络中,利用比特币的强共识安全,成为任何图灵完备运算层的可信第三方,再用Optimistic Rollups 的原理,来实现链外计算结果的验证。
那么怎么实现将一段Verifier的逻辑放在比特币网络中呢?为了和上一节的“铭刻”相呼应,我愿称之为在比特币网络上进行电路“蚀刻”的技术。
逻辑门电路
在你的电脑或手机内部,电流通过传递一系列的1和0来实现计算机的所有功能。这是通过数以百万计的微小组件——逻辑门(logic gates)——来实现的。这些逻辑门是构成计算机芯片的基本元素。
每个逻辑门都会接收一个或两个“比特(bit)”的信息,每个比特要么是1,要么是0。然后,逻辑门根据设定的规则执行一个简单的逻辑运算,如“与(AND)”、“或(OR)”或“非(NOT)”等操作。这些运算产生的结果同样是一个比特,也是1或0。完成运算后,这个结果又被传递到下一个逻辑门。
这种基于简单逻辑运算的系统产生了启示:即使是最复杂的计算和功能,也都可以通过组合大量简单的逻辑运算来实现。这种逻辑门的组合和协作是现代计算机和电子设备能够执行复杂任务的基础。通过这些基本的逻辑操作,电脑能够处理复杂的算术运算、数据存储、图像渲染等功能。
下图是一个非常特殊的逻辑门,叫做“与非门”(NAND gate),它可以构造任意类型逻辑门电路,当然,它不可能有其它专用类型的门那么高效,但还是能做到的。BitVM的逻辑门电路就由与非门组成。
比特币上如何蚀刻与非门
在现有的比特币脚本上构造与非门(NAND gate)可以通过结合哈希锁和两个可能不太为人所熟知的操作码:OP_BOOLAND和OP_NOT来实现。
首先,哈希锁可以用来创建一个分支脚本,这个脚本可以通过两种方式中的一种来花费:要么满足哈希锁,要么满足哈希锁B。这样,路径A将1输出到堆栈,而路径B将0输出到堆栈。
通过满足特定哈希锁,你可以"解锁"一个比特,这个比特作为我们要构造的NAND门的输入之一。由于你只能满足其中一个路径的要求,所以这种方法只允许用户一次提交一个比特。
与非门的逻辑是接收两个比特作为输入,输出一个比特。如果两个输入比特都是1,则输出0;如果输入是其他组合,则输出1。使用两个哈希锁技巧,可以提交这两个输入,并验证输出是否正确,这就是OP_BOOLAND和OP_NOT的用途所在。
OP_BOOLAND的操作与与非门相反:如果两个输入都是1,则输出1;任何其他输入组合都会产生0。OP_NOT则输出与输入相反的值。因此,通过结合使用这两个操作码,可以在脚本堆栈中取两个输入并进行反和操作。最后,可以使用OP_EQUALVERIFY以及哈希锁技巧来验证断言的输出。如果堆栈中实际的与非操作结果与用户断言的输出不一致,脚本就无法通过验证。
这样,就在比特币脚本中“蚀刻”了与非门电路,实际上是通过比特币脚本来强制执行虚拟的与非门操作。
如何蚀刻大规模电路
虽然这个利用Taproot脚本实现电路蚀刻的想法很酷,但是别说像PC那种超大规模电路了,就是要实现任意一组计算,都需要成千上万的与非门电路,那在比特币有限的Taproot脚本空间里,如何覆盖复杂计算呢?