BitVM 及其优化考虑因素

中级4/9/2024, 6:56:34 AM
本文探讨了 BitVM 用于增强比特币生态系统可扩展性和丰富性的原理和优化策略。

1. 简介

比特币是一种去中心化、安全、值得信赖的数字资产。然而,它面临着重大限制,无法成为支付和其他应用程序的可扩展网络。比特币的扩容问题自诞生以来一直备受关注。比特币的 UTXO(未花费交易输出)模型将每笔交易视为独立事件,导致无状态系统在执行复杂的、依赖于状态的计算时能力不足。因此,虽然比特币可以执行简单的脚本和多重签名交易,但它很难促进有状态区块链平台上常见的复杂且动态的合约交互。这种限制极大地限制了可以在比特币上构建的去中心化应用程序(dApp)和复杂金融工具的范围,而有状态平台模型为部署和执行功能丰富的智能合约提供了更加多样化的环境。

对于比特币扩容,主要技术包括状态通道、侧链和客户端验证。状态通道提供了安全且多样化的支付解决方案,但验证任意复杂计算的能力有限。这种限制降低了它们在需要复杂的条件逻辑和交互的各种场景中的适用性。侧链支持广泛的应用程序并提供超出比特币功能的多样性,但它们的安全性较低。这种安全差异源于侧链使用独立的共识机制,其稳健性远不如比特币的共识机制。客户端验证采用比特币UTXO模型,可以处理更复杂的交易,但缺乏与比特币的双向检查和约束,导致安全性较低。客户端验证协议的链下设计依赖于服务器或云基础设施,这可能因受损的服务器导致中心化或潜在的审查。客户端验证的链下设计也给区块链基础设施带来了更多的复杂性,可能引起可扩展性问题。

2023年12月,ZeroSync项目负责人Robin Linus发表了题为《BitVM:在比特币上计算任何东西》一文,这引发了关于增强比特币可编程性的大量思考。该论文提出了一种图灵完备的比特币合约解决方案,可以在比特币上执行任何复杂的计算,而无需改变网络的共识规则或改变比特币的基本原理。 BitVM 利用比特币脚本和 Taproot 来实现乐观 Rollups。它使用 Lamport 签名(也称为比特承诺)在两个比特币 UTXO 之间建立连接,从而启用有状态的比特币脚本。大型程序在 Taproot 地址内提交,运营商和验证者进行广泛的链下交互,在区块链上留下最小的足迹。如果双方合作,任何复杂的、有状态的链下计算都可以执行,而不会在区块链上留下任何痕迹。但如果双方不配合,发生争议时需要链上执行。因此,BitVM 大大扩展了比特币的潜在用例,使其不仅可以作为货币,还可以作为各种去中心化应用和复杂计算任务的验证平台。

然而,尽管BitVM技术在比特币扩容方面具有优势,但仍处于早期阶段,并面临一些效率和安全问题,例如:(1)质疑和响应过程需要多次交互,导致交易费用高、质疑周期长; (2) Lamport一次性签名数据长度较长,需要减小数据大小;(3)哈希函数复杂度高,需要比特币友好的哈希函数来降低成本;(4)现有的BitVM合约规模较大,而比特币区块容量有限,因此使用无脚本脚本可以帮助实现无脚本脚本BitVM,节省比特币区块空间并提高BitVM效率;(5)当前BitVM运行在许可模型上,质疑仅由联盟成员发起,且仅限于两方,应扩展到无许可的多方质疑模型,以进一步减少信任假设。针对这些问题,本文提出了几种优化思路,以提高 BitVM 的效率和安全性。

2. BitVM原理

BitVM定位为比特币的链下合约系统,旨在推进比特币的合约功能。目前,比特币脚本是完全无状态的,这意味着执行环境在每个脚本后都会重置。比特币脚本中没有本地方法可以确保脚本 1 和 2 具有相同的 X 值。然而,可以使用现有的操作码和 Lamport 一次性签名使比特币脚本有状态,从而强制使脚本 1 和脚本 2 中的 X 值相同。如果参与者签署了相互冲突的值 X,他们可能会受到处罚。

BitVM 计算发生在链外,而这些计算的验证发生在链上。鉴于比特币区块的1MB限制,当需要验证复杂计算时,OP技术可以采用质疑-响应模式来支持更高复杂度的计算验证。

与 Optimistic Rollup 和 MATT 提案(Merkelize All The Things)类似,BitVM 系统基于欺诈证明和挑战响应协议,但不需要更改比特币的共识规则。BitVM 的底层原语很简单,主要基于哈希锁、时间锁和大型Taproot树。

证明者逐字节地提交程序,但验证链上的所有计算将非常昂贵。因此,验证者进行一系列精心设计的质疑,以简洁地反驳证明者的虚假主张。证明者和验证者共同签署一系列质疑和响应交易来解决争议,从而允许对比特币进行一般计算验证。

BitVM 的主要组件包括:

  • 电路承诺:证明者和验证者将程序编译成大型二进制电路。证明者在 Taproot 地址中提交该电路,该地址下的每个叶脚本对应于电路中的每个逻辑门。核心是基于比特承诺来实现逻辑门承诺。
  • 挑战与回应:证明者和验证者预先签署一系列交易来实现质疑-响应游戏。理想情况下,这种交互发生在链外,但如果证明者不合作,也可以在链上执行。
  • 不明确的惩罚: 如果证明者提出任何不正确的主张,验证者可以在成功挑战后收取证明者的押金,并挫败证明者的恶意行为。

3. BitVM 优化

3.1 基于ZK减少OP交互次数

Rollups 主要有两种类型:ZK Rollups 和 Optimistic Rollups(OP Rollups)。 ZK Rollups 依赖于零知识 (ZK) 证明的有效性验证,零知识证明是正确执行的密码学证明。它们的安全性取决于计算复杂性假设。乐观汇总依赖于欺诈证明,假设所有提交的状态都是正确的,并且通常设置大约 7 天的质疑期。它们的安全性前提是系统中至少有一个诚实的一方能够检测到不正确的状态并提交防欺诈信息。

假设 BitVM 质疑程序的最大步数为 2^{32},则需要大约 17GB 内存(2^{32}×4 字节)。在最坏的情况下,大约 40 轮质疑和响应可能需要大约六个月的时间,总脚本大小约为 150KB。这种情况不会提供足够的激励,但在实践中很少发生。

使用零知识证明来减少BitVM中的挑战次数可以增强其效率。根据零知识证明理论,如果数据Data满足算法F,则证明将满足验证算法Verify,输出True。反之,如果Data不满足F,则证明将不会满足Verify,输出False。在BitVM系统中,如果挑战者不接受证明者的数据,则会发起挑战。

对于算法F,采用二分搜索方法,假设需要2^n次迭代来找到错误点。如果算法的复杂度太高,n很大,完成需要很长时间。然而,零知识证明验证算法Verify的复杂度是固定的。通过公开证明和验证过程Verify,可以看到False的输出。零知识证明的优势在于,相比使用二分搜索打开原始算法F,验证算法Verify需要更低的计算复杂度。因此,使用零知识证明,BitVM不再挑战原始算法F,而是挑战验证算法Verify,减少了质疑轮次并缩短了质疑期。

尽管零知识证明和欺诈证明的有效性依赖于不同的安全假设,它们可以结合起来构建ZK欺诈证明,并实现按需ZK证明。与完整的ZK Rollup不同,按需模型仅在发起质疑时需要ZK证明,保持一种乐观的设计,即生成的状态在挑战之前被假定为有效。如果状态没有受到挑战,则不需要ZK证明。但是,如果发起了质疑,则必须为质疑块中的所有交易的正确性生成ZK证明。未来,可能可以为单个有争议的指令生成ZK欺诈证明,避免持续生成ZK证明的计算成本。

3.2 对比特币友好的一次性签名

在比特币网络中,遵循共识规则的交易被认为是有效的,但除了这些规则之外,还有一个额外的标准概念。比特币节点仅传播和广播标准交易,而将有效但非标准交易包含在区块中的唯一方法是通过与矿工的直接合作。

根据共识规则,传统(非隔离见证)交易的最大大小为 1MB,可以填满整个区块。但是,遗留事务的标准限制设置为 100kB。对于Segwit交易,共识规则允许的最大大小是4MB,称为权重限制,但其标准限制是400kB。

Lamport签名是BitVM的基础组件,减少签名和公钥的长度有助于减少交易数据大小,从而降低交易费用。Lamport一次性签名需要一个哈希函数(如单向置换函数f)。在Lamport一次性签名方案中,消息长度为v位,公钥和签名长度都为2v位。这些长签名和公钥消耗了大量的存储Gas。因此,有必要探索可以减少签名和公钥长度的签名方案。与Lamport一次性签名相比,Winternitz一次性签名大大减少了签名和公钥的长度,但增加了签名和验证的计算复杂性。

在Winternitz一次性签名方案中,一个特殊函数P将一个v位消息映射到长度为n的向量s,s的每个元素取值在{0,…,d}之间。Lamport一次性签名方案是Winternitz方案的特殊情况,其中d=1。在Winternitz方案中,n、d和v之间的关系大约为n≈v/log2(d+1)。当d=15时,n≈(v/4)+1。对于具有n个元素的Winternitz签名,公钥和签名长度比Lamport一次性签名方案短四倍,但验证的复杂性增加了四倍。在BitVM中使用d=15,v=160,f=ripemd160(x)的Winternitz一次性签名可以将位承诺大小减少50%,从而至少减少BitVM的交易费用50%。在未来,除了优化现有的Winternitz比特币脚本实现外,还可以探索更紧凑的一次性签名方案,这些方案可以在比特币脚本中表达。

3.3 比特币友好的哈希函数

根据共识规则,P2TR脚本的最大大小为10kB,P2TR脚本见证人的最大大小与最大Segwit交易大小相同,均为4MB。然而,P2TR 脚本见证的标准限制是 400kB。

目前,比特币网络不支持OP_CAT,无法连接字符串进行默克尔路径验证。因此,需要使用现有的比特币脚本,以脚本大小和脚本见证大小最有效的方式实现比特币友好的哈希函数,以支持默克尔包含证明验证。

BLAKE3是BLAKE2哈希函数的优化版本,并引入了Bao树模式。与基于 BLAKE2s 的压缩函数相比,其压缩函数的轮数从 10 轮减少到 7 轮。BLAKE3 哈希函数将其输入分成 1024 字节的块,最后一个块可能更短但不为空。当只有一个块时,它充当根节点和树的唯一节点。这些块被排列为二叉树的叶节点,并且每个块被独立压缩。

当BitVM用于验证默克尔包含证明时,哈希运算的输入由两个256位哈希值串联而成,总共64字节。使用 BLAKE3 哈希函数,这64个字节可以放入单个块中,这意味着 BLAKE3 哈希操作只需对该单个块应用一次压缩函数。在BLAKE3的压缩函数中,需要七个轮函数和六个置换函数。

BitVM已经基于u32值实现了XOR、模加和右位移等基本操作,这让使用比特币脚本组装BLAKE3哈希函数变得直观。堆栈使用四个单独的字节来表示u32字,便于进行BLAKE3所需的u32加法、u32按位异或和u32按位旋转。比特币脚本中的BLAKE3哈希函数目前约为100kB,足以构建BitVM的玩具版本。

此外,通过拆分这些BLAKE3代码,验证者和证明者可以通过将执行分割成质疑-响应游戏而不是完全执行来显著减少链上数据需求。最后,在比特币脚本中实现Keccak-256和Grøstl等哈希函数将确定最适合比特币的哈希函数,并探索其他新的比特币友好的哈希函数。

3.4 无脚本脚本 BitVM

无脚本脚本是一种使用 Schnorr 签名在链外执行智能合约的方法。无脚本脚本的概念起源于 Mimblewimble,除了内核及其签名之外,不存储任何永久数据。

无脚本脚本的优点包括功能性、隐私性和效率:

  • 功能:无脚本脚本可以扩展智能合约的范围和复杂性。比特币脚本的功能受到网络上启用的 OP_CODES 数量的限制。相比之下,无脚本脚本将智能合约的规范和执行转移到链下,由合约方单独讨论,而无需等待比特币网络分叉来启用新的操作码。
  • 隐私:将智能合约的规范和执行从链上转移到链下可以增强隐私性。在链上,合约的许多细节都与整个网络共享,包括参与者数量、地址和转账金额。将智能合约移至链下意味着网络只知道参与者同意合约条款得到满足并且相关交易有效。
  • 效率:无脚本脚本最大限度地减少了需要验证和存储在链上的数据量。通过将智能合约移至链下,可以降低全节点的管理成本,也可以降低用户的交易费用。

无脚本脚本代表了一种在比特币上设计加密协议的方法,可以避免执行显式的智能合约。其核心思想是使用密码算法来实现所需的功能,而不是使用脚本。适配器签名和多重签名是无脚本脚本的基础构建块。使用无脚本脚本,交易可以比传统交易更小,从而降低交易费用。

无脚本脚本可用于在 BitVM 电路中实现逻辑门承诺,节省 BitVM 脚本空间并提高 BitVM 效率,使用 Schnorr 多重签名和 Adapter 签名,而不是像 BitVM 解决方案那样提供哈希值和原像。尽管当前的无脚本脚本方案可以减少 BitVM 脚本空间,但它们需要证明者和质疑者之间进行广泛的交互才能组合公钥。未来的改进将旨在将无脚本脚本集成到特定的 BitVM 功能模块中。

3.5 非许可的多方质疑

当前的 BitVM 质疑需要许可,因为比特币 UTXO 只能执行一次,从而导致恶意验证者可以通过质疑诚实的证明者来“浪费”合约。BitVM 目前仅限于两方质疑模型。恶意证明者可以利用他控制下的验证者发起质疑并“浪费”合约,从而确保他的恶意行为成功,而其他验证者无法阻止这种行为。因此,在比特币之上,有必要研究一种非许可的多方OP质疑协议,可以将BitVM现有的1-of-n信任模型扩展为1-of-N,其中N远大于n。此外,解决质疑者和证明者之间的勾结问题或“浪费”合约的恶意挑战问题也很重要,以实现更加信任最小化的 BitVM 协议。

非许可的多方挑战允许任何人在没有白名单的情况下参与,这意味着用户可以在没有任何可信第三方参与的情况下退出 L2。此外,任何想要参与OP挑战协议的用户都可以质疑并删除无效提款。

将 BitVM 扩展为非许可的多方质疑模型涉及解决以下攻击:

  • 女巫攻击: 即使攻击者创建多个身份来参与争议质疑,单个诚实的参与者仍然应该能够赢得争议。如果诚实的参与者捍卫正确结果的成本随着攻击者的数量线性增长,那么诚实的参与者赢得争议的成本就变得不切实际,并且在涉及大量攻击者时容易受到 Sybil 攻击。论文《未经许可的裁判锦标赛》提出了一种改变游戏规则的争议解决算法,其中单个诚实参与者赢得争议的成本随着对手的数量呈对数增长,而不是线性增长。
  • 延迟攻击:个人或一群恶意行为者遵循某种策略来阻止或延迟 L1 上正确结果的确认(例如将资产提取到 L1),迫使诚实的证明者花费 L1 交易费用。为了缓解这个问题,质疑者可能需要预先注资。如果质疑者发起延迟攻击,他们的权益将被没收。然而,如果攻击者愿意在一定程度上牺牲自己的权益来进行延迟攻击,则应该制定策略来减少这些攻击的影响。论文《BoLD:Rollup 质疑协议中的有限流动性延迟》中提出的算法确保攻击者造成的最坏情况延迟受到限制,无论攻击者愿意损失多少权益都是如此。

在未来,将探索一种适合比特币特性、抵御这些攻击的BitVM非可多方挑战模型。

4. 结语

对BitVM技术的探索才刚刚开始,在未来,将继续探索和实践更多优化措施,以实现比特币的扩展并丰富比特币生态系统。

声明:

  1. 本文转载自[@Bitlayer/bitvm-and-its-optimization-considerations-007da599d8ac">Bitlayer],著作权归属原作者[Lynndell and Mutourend],如对转载有异议,请联系Gate Learn团队,团队会根据相关流程尽速处理。
  2. 免责声明:本文所表达的观点和意见仅代表作者个人观点,不构成任何投资建议。
  3. 文章其他语言版本由Gate Learn团队翻译, 在未提及Gate.io的情况下不得复制、传播或抄袭经翻译文章。

BitVM 及其优化考虑因素

中级4/9/2024, 6:56:34 AM
本文探讨了 BitVM 用于增强比特币生态系统可扩展性和丰富性的原理和优化策略。

1. 简介

比特币是一种去中心化、安全、值得信赖的数字资产。然而,它面临着重大限制,无法成为支付和其他应用程序的可扩展网络。比特币的扩容问题自诞生以来一直备受关注。比特币的 UTXO(未花费交易输出)模型将每笔交易视为独立事件,导致无状态系统在执行复杂的、依赖于状态的计算时能力不足。因此,虽然比特币可以执行简单的脚本和多重签名交易,但它很难促进有状态区块链平台上常见的复杂且动态的合约交互。这种限制极大地限制了可以在比特币上构建的去中心化应用程序(dApp)和复杂金融工具的范围,而有状态平台模型为部署和执行功能丰富的智能合约提供了更加多样化的环境。

对于比特币扩容,主要技术包括状态通道、侧链和客户端验证。状态通道提供了安全且多样化的支付解决方案,但验证任意复杂计算的能力有限。这种限制降低了它们在需要复杂的条件逻辑和交互的各种场景中的适用性。侧链支持广泛的应用程序并提供超出比特币功能的多样性,但它们的安全性较低。这种安全差异源于侧链使用独立的共识机制,其稳健性远不如比特币的共识机制。客户端验证采用比特币UTXO模型,可以处理更复杂的交易,但缺乏与比特币的双向检查和约束,导致安全性较低。客户端验证协议的链下设计依赖于服务器或云基础设施,这可能因受损的服务器导致中心化或潜在的审查。客户端验证的链下设计也给区块链基础设施带来了更多的复杂性,可能引起可扩展性问题。

2023年12月,ZeroSync项目负责人Robin Linus发表了题为《BitVM:在比特币上计算任何东西》一文,这引发了关于增强比特币可编程性的大量思考。该论文提出了一种图灵完备的比特币合约解决方案,可以在比特币上执行任何复杂的计算,而无需改变网络的共识规则或改变比特币的基本原理。 BitVM 利用比特币脚本和 Taproot 来实现乐观 Rollups。它使用 Lamport 签名(也称为比特承诺)在两个比特币 UTXO 之间建立连接,从而启用有状态的比特币脚本。大型程序在 Taproot 地址内提交,运营商和验证者进行广泛的链下交互,在区块链上留下最小的足迹。如果双方合作,任何复杂的、有状态的链下计算都可以执行,而不会在区块链上留下任何痕迹。但如果双方不配合,发生争议时需要链上执行。因此,BitVM 大大扩展了比特币的潜在用例,使其不仅可以作为货币,还可以作为各种去中心化应用和复杂计算任务的验证平台。

然而,尽管BitVM技术在比特币扩容方面具有优势,但仍处于早期阶段,并面临一些效率和安全问题,例如:(1)质疑和响应过程需要多次交互,导致交易费用高、质疑周期长; (2) Lamport一次性签名数据长度较长,需要减小数据大小;(3)哈希函数复杂度高,需要比特币友好的哈希函数来降低成本;(4)现有的BitVM合约规模较大,而比特币区块容量有限,因此使用无脚本脚本可以帮助实现无脚本脚本BitVM,节省比特币区块空间并提高BitVM效率;(5)当前BitVM运行在许可模型上,质疑仅由联盟成员发起,且仅限于两方,应扩展到无许可的多方质疑模型,以进一步减少信任假设。针对这些问题,本文提出了几种优化思路,以提高 BitVM 的效率和安全性。

2. BitVM原理

BitVM定位为比特币的链下合约系统,旨在推进比特币的合约功能。目前,比特币脚本是完全无状态的,这意味着执行环境在每个脚本后都会重置。比特币脚本中没有本地方法可以确保脚本 1 和 2 具有相同的 X 值。然而,可以使用现有的操作码和 Lamport 一次性签名使比特币脚本有状态,从而强制使脚本 1 和脚本 2 中的 X 值相同。如果参与者签署了相互冲突的值 X,他们可能会受到处罚。

BitVM 计算发生在链外,而这些计算的验证发生在链上。鉴于比特币区块的1MB限制,当需要验证复杂计算时,OP技术可以采用质疑-响应模式来支持更高复杂度的计算验证。

与 Optimistic Rollup 和 MATT 提案(Merkelize All The Things)类似,BitVM 系统基于欺诈证明和挑战响应协议,但不需要更改比特币的共识规则。BitVM 的底层原语很简单,主要基于哈希锁、时间锁和大型Taproot树。

证明者逐字节地提交程序,但验证链上的所有计算将非常昂贵。因此,验证者进行一系列精心设计的质疑,以简洁地反驳证明者的虚假主张。证明者和验证者共同签署一系列质疑和响应交易来解决争议,从而允许对比特币进行一般计算验证。

BitVM 的主要组件包括:

  • 电路承诺:证明者和验证者将程序编译成大型二进制电路。证明者在 Taproot 地址中提交该电路,该地址下的每个叶脚本对应于电路中的每个逻辑门。核心是基于比特承诺来实现逻辑门承诺。
  • 挑战与回应:证明者和验证者预先签署一系列交易来实现质疑-响应游戏。理想情况下,这种交互发生在链外,但如果证明者不合作,也可以在链上执行。
  • 不明确的惩罚: 如果证明者提出任何不正确的主张,验证者可以在成功挑战后收取证明者的押金,并挫败证明者的恶意行为。

3. BitVM 优化

3.1 基于ZK减少OP交互次数

Rollups 主要有两种类型:ZK Rollups 和 Optimistic Rollups(OP Rollups)。 ZK Rollups 依赖于零知识 (ZK) 证明的有效性验证,零知识证明是正确执行的密码学证明。它们的安全性取决于计算复杂性假设。乐观汇总依赖于欺诈证明,假设所有提交的状态都是正确的,并且通常设置大约 7 天的质疑期。它们的安全性前提是系统中至少有一个诚实的一方能够检测到不正确的状态并提交防欺诈信息。

假设 BitVM 质疑程序的最大步数为 2^{32},则需要大约 17GB 内存(2^{32}×4 字节)。在最坏的情况下,大约 40 轮质疑和响应可能需要大约六个月的时间,总脚本大小约为 150KB。这种情况不会提供足够的激励,但在实践中很少发生。

使用零知识证明来减少BitVM中的挑战次数可以增强其效率。根据零知识证明理论,如果数据Data满足算法F,则证明将满足验证算法Verify,输出True。反之,如果Data不满足F,则证明将不会满足Verify,输出False。在BitVM系统中,如果挑战者不接受证明者的数据,则会发起挑战。

对于算法F,采用二分搜索方法,假设需要2^n次迭代来找到错误点。如果算法的复杂度太高,n很大,完成需要很长时间。然而,零知识证明验证算法Verify的复杂度是固定的。通过公开证明和验证过程Verify,可以看到False的输出。零知识证明的优势在于,相比使用二分搜索打开原始算法F,验证算法Verify需要更低的计算复杂度。因此,使用零知识证明,BitVM不再挑战原始算法F,而是挑战验证算法Verify,减少了质疑轮次并缩短了质疑期。

尽管零知识证明和欺诈证明的有效性依赖于不同的安全假设,它们可以结合起来构建ZK欺诈证明,并实现按需ZK证明。与完整的ZK Rollup不同,按需模型仅在发起质疑时需要ZK证明,保持一种乐观的设计,即生成的状态在挑战之前被假定为有效。如果状态没有受到挑战,则不需要ZK证明。但是,如果发起了质疑,则必须为质疑块中的所有交易的正确性生成ZK证明。未来,可能可以为单个有争议的指令生成ZK欺诈证明,避免持续生成ZK证明的计算成本。

3.2 对比特币友好的一次性签名

在比特币网络中,遵循共识规则的交易被认为是有效的,但除了这些规则之外,还有一个额外的标准概念。比特币节点仅传播和广播标准交易,而将有效但非标准交易包含在区块中的唯一方法是通过与矿工的直接合作。

根据共识规则,传统(非隔离见证)交易的最大大小为 1MB,可以填满整个区块。但是,遗留事务的标准限制设置为 100kB。对于Segwit交易,共识规则允许的最大大小是4MB,称为权重限制,但其标准限制是400kB。

Lamport签名是BitVM的基础组件,减少签名和公钥的长度有助于减少交易数据大小,从而降低交易费用。Lamport一次性签名需要一个哈希函数(如单向置换函数f)。在Lamport一次性签名方案中,消息长度为v位,公钥和签名长度都为2v位。这些长签名和公钥消耗了大量的存储Gas。因此,有必要探索可以减少签名和公钥长度的签名方案。与Lamport一次性签名相比,Winternitz一次性签名大大减少了签名和公钥的长度,但增加了签名和验证的计算复杂性。

在Winternitz一次性签名方案中,一个特殊函数P将一个v位消息映射到长度为n的向量s,s的每个元素取值在{0,…,d}之间。Lamport一次性签名方案是Winternitz方案的特殊情况,其中d=1。在Winternitz方案中,n、d和v之间的关系大约为n≈v/log2(d+1)。当d=15时,n≈(v/4)+1。对于具有n个元素的Winternitz签名,公钥和签名长度比Lamport一次性签名方案短四倍,但验证的复杂性增加了四倍。在BitVM中使用d=15,v=160,f=ripemd160(x)的Winternitz一次性签名可以将位承诺大小减少50%,从而至少减少BitVM的交易费用50%。在未来,除了优化现有的Winternitz比特币脚本实现外,还可以探索更紧凑的一次性签名方案,这些方案可以在比特币脚本中表达。

3.3 比特币友好的哈希函数

根据共识规则,P2TR脚本的最大大小为10kB,P2TR脚本见证人的最大大小与最大Segwit交易大小相同,均为4MB。然而,P2TR 脚本见证的标准限制是 400kB。

目前,比特币网络不支持OP_CAT,无法连接字符串进行默克尔路径验证。因此,需要使用现有的比特币脚本,以脚本大小和脚本见证大小最有效的方式实现比特币友好的哈希函数,以支持默克尔包含证明验证。

BLAKE3是BLAKE2哈希函数的优化版本,并引入了Bao树模式。与基于 BLAKE2s 的压缩函数相比,其压缩函数的轮数从 10 轮减少到 7 轮。BLAKE3 哈希函数将其输入分成 1024 字节的块,最后一个块可能更短但不为空。当只有一个块时,它充当根节点和树的唯一节点。这些块被排列为二叉树的叶节点,并且每个块被独立压缩。

当BitVM用于验证默克尔包含证明时,哈希运算的输入由两个256位哈希值串联而成,总共64字节。使用 BLAKE3 哈希函数,这64个字节可以放入单个块中,这意味着 BLAKE3 哈希操作只需对该单个块应用一次压缩函数。在BLAKE3的压缩函数中,需要七个轮函数和六个置换函数。

BitVM已经基于u32值实现了XOR、模加和右位移等基本操作,这让使用比特币脚本组装BLAKE3哈希函数变得直观。堆栈使用四个单独的字节来表示u32字,便于进行BLAKE3所需的u32加法、u32按位异或和u32按位旋转。比特币脚本中的BLAKE3哈希函数目前约为100kB,足以构建BitVM的玩具版本。

此外,通过拆分这些BLAKE3代码,验证者和证明者可以通过将执行分割成质疑-响应游戏而不是完全执行来显著减少链上数据需求。最后,在比特币脚本中实现Keccak-256和Grøstl等哈希函数将确定最适合比特币的哈希函数,并探索其他新的比特币友好的哈希函数。

3.4 无脚本脚本 BitVM

无脚本脚本是一种使用 Schnorr 签名在链外执行智能合约的方法。无脚本脚本的概念起源于 Mimblewimble,除了内核及其签名之外,不存储任何永久数据。

无脚本脚本的优点包括功能性、隐私性和效率:

  • 功能:无脚本脚本可以扩展智能合约的范围和复杂性。比特币脚本的功能受到网络上启用的 OP_CODES 数量的限制。相比之下,无脚本脚本将智能合约的规范和执行转移到链下,由合约方单独讨论,而无需等待比特币网络分叉来启用新的操作码。
  • 隐私:将智能合约的规范和执行从链上转移到链下可以增强隐私性。在链上,合约的许多细节都与整个网络共享,包括参与者数量、地址和转账金额。将智能合约移至链下意味着网络只知道参与者同意合约条款得到满足并且相关交易有效。
  • 效率:无脚本脚本最大限度地减少了需要验证和存储在链上的数据量。通过将智能合约移至链下,可以降低全节点的管理成本,也可以降低用户的交易费用。

无脚本脚本代表了一种在比特币上设计加密协议的方法,可以避免执行显式的智能合约。其核心思想是使用密码算法来实现所需的功能,而不是使用脚本。适配器签名和多重签名是无脚本脚本的基础构建块。使用无脚本脚本,交易可以比传统交易更小,从而降低交易费用。

无脚本脚本可用于在 BitVM 电路中实现逻辑门承诺,节省 BitVM 脚本空间并提高 BitVM 效率,使用 Schnorr 多重签名和 Adapter 签名,而不是像 BitVM 解决方案那样提供哈希值和原像。尽管当前的无脚本脚本方案可以减少 BitVM 脚本空间,但它们需要证明者和质疑者之间进行广泛的交互才能组合公钥。未来的改进将旨在将无脚本脚本集成到特定的 BitVM 功能模块中。

3.5 非许可的多方质疑

当前的 BitVM 质疑需要许可,因为比特币 UTXO 只能执行一次,从而导致恶意验证者可以通过质疑诚实的证明者来“浪费”合约。BitVM 目前仅限于两方质疑模型。恶意证明者可以利用他控制下的验证者发起质疑并“浪费”合约,从而确保他的恶意行为成功,而其他验证者无法阻止这种行为。因此,在比特币之上,有必要研究一种非许可的多方OP质疑协议,可以将BitVM现有的1-of-n信任模型扩展为1-of-N,其中N远大于n。此外,解决质疑者和证明者之间的勾结问题或“浪费”合约的恶意挑战问题也很重要,以实现更加信任最小化的 BitVM 协议。

非许可的多方挑战允许任何人在没有白名单的情况下参与,这意味着用户可以在没有任何可信第三方参与的情况下退出 L2。此外,任何想要参与OP挑战协议的用户都可以质疑并删除无效提款。

将 BitVM 扩展为非许可的多方质疑模型涉及解决以下攻击:

  • 女巫攻击: 即使攻击者创建多个身份来参与争议质疑,单个诚实的参与者仍然应该能够赢得争议。如果诚实的参与者捍卫正确结果的成本随着攻击者的数量线性增长,那么诚实的参与者赢得争议的成本就变得不切实际,并且在涉及大量攻击者时容易受到 Sybil 攻击。论文《未经许可的裁判锦标赛》提出了一种改变游戏规则的争议解决算法,其中单个诚实参与者赢得争议的成本随着对手的数量呈对数增长,而不是线性增长。
  • 延迟攻击:个人或一群恶意行为者遵循某种策略来阻止或延迟 L1 上正确结果的确认(例如将资产提取到 L1),迫使诚实的证明者花费 L1 交易费用。为了缓解这个问题,质疑者可能需要预先注资。如果质疑者发起延迟攻击,他们的权益将被没收。然而,如果攻击者愿意在一定程度上牺牲自己的权益来进行延迟攻击,则应该制定策略来减少这些攻击的影响。论文《BoLD:Rollup 质疑协议中的有限流动性延迟》中提出的算法确保攻击者造成的最坏情况延迟受到限制,无论攻击者愿意损失多少权益都是如此。

在未来,将探索一种适合比特币特性、抵御这些攻击的BitVM非可多方挑战模型。

4. 结语

对BitVM技术的探索才刚刚开始,在未来,将继续探索和实践更多优化措施,以实现比特币的扩展并丰富比特币生态系统。

声明:

  1. 本文转载自[@Bitlayer/bitvm-and-its-optimization-considerations-007da599d8ac">Bitlayer],著作权归属原作者[Lynndell and Mutourend],如对转载有异议,请联系Gate Learn团队,团队会根据相关流程尽速处理。
  2. 免责声明:本文所表达的观点和意见仅代表作者个人观点,不构成任何投资建议。
  3. 文章其他语言版本由Gate Learn团队翻译, 在未提及Gate.io的情况下不得复制、传播或抄袭经翻译文章。
即刻开始交易
注册并交易即可获得
$100
和价值
$5500
理财体验金奖励!