> For the complete documentation index, see [llms.txt](https://bitvm.gitbook.io/doc/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://bitvm.gitbook.io/doc/featured-articles/bitvm-kai-qi-bi-te-bi-de-zhi-neng-he-yue-shi-dai.md).

# BitVM：开启比特币的智能合约时代

> **撰文：@trustmachinesco**
>
> **编译：Biteye 核心贡献者 Crush**
>
> 来源：<https://foresightnews.pro/article/detail/44966>

对于比特币上图灵完备的智能合约，推特用户 @robin\_linus 提出了一个新的建议——BitVM。

他声称可以实现这一目标，而且无需对比特币的代码进行任何更改。

![](https://img.foresightnews.pro/202310/1299a3d55379f70c1699c6ebf95a9f32.png?x-oss-process=style/scale70)

由于比特币的原生脚本语言相当有限，这也是为什么我们需要通过各种 layer 去扩展比特币。

这些不同的 layer 充当着各种构建模块，最终将更多功能引入比特币。而今天我们有了一个重要的突破口：智能合约。

今年，我们看到关于比特币上关于 Rollups 的讨论急剧增加，最常见的几个话题是主权、零知识证明以及 Optimistic Rollups。

这些扩展解决方案在 L2 上运行，但最终仍通过加密的方式又回到主链上。

## 01 什么是 BitVM

BitVM 使用的技术类似于 Optimistic Rollups。

Optimistic Rollups 通常假设交易是有效的，但会分配一定的时间段用于争议处理。

如果发生争议，Rollup 将返回到先前的状态。

BitVM 的实际智能合约计算发生在一个单独的 layer 上，一旦出现争议，这些争议会「保存」在比特币的主链上。因此，所有 BitVM 活动都发生在链下。

*（译者注：主链上保留一份公共的、不可篡改的记录，可以用于解决争议。如果没有争议，所有的 BitVM 活动都将在链下进行，也就是在比特币主链之外进行。这种链下的活动可以更快速地进行，并且通过使用比特币的主链作为安全性和可信度的基础来确保交易的有效性。）*

## 02 BitVM 主要依赖于四个组件

* 哈希锁
* 时间锁
* 默克尔树
* 多重签名

### **哈希锁**

哈希锁是由发起交易的人生成的加密隐藏 key，这个 key 确保只有在得到发起者的批准后，交易才能最终完成。

### **时间锁**

在时间锁下的交易，必须要在特定日期、时间或区块高度之后才能执行。

### **默克尔树**

默克尔树分支使用密码学方式将执行脚本的结果记录到区块链中，而不是记录脚本可能的所有执行方式。

这极大地减少了交易占用的空间，尤其是更复杂的交易！

*（译者注：以往为了验证一笔交易的有效性，需要记录下所有可能的执行路径和结果，这会占用大量的存储空间。而使用默克尔树分支，我们只记录实际执行的结果，这种优化使得交易处理更高效，同时也减少了区块链的存储需求。）*

### **多重签名**

多重签名通常允许多方共享对单个钱包的控制权。在 BitVM 的设计下，你会拥有一个由证明者和验证者组成的两部分多重签名。

## 03 那么 BitVM 是如何工作的呢？

证明者和验证者首先会将智能合约编译成一个 if-then 语句映射，这个映射会包含所有的可能结果。

为了节省空间，我们采用默克尔格式保存在链上。

双方还必须共同预签名一系列挑战与应答交易，这些预签名交易可以在发生争议时使用！

完成这些前提条件后，他们可以将比特币存入 Taproot 地址，这将激活智能合约，并允许双方在链下或单独的层上开始交换数据。

验证者可以使用时间锁来强制证明者在规定时间内做出决策。

如果证明者提出错误的声明，验证者可以对此发起争议，并拿回他的存款。

这确保了任何攻击者都会失去他们的存款，并鼓励良好行为。

现在我们对 BitVM 合约的结构有了基本的了解，我们可以稍微深入一些关于它的用途。

**目前有三个「Commitment」：**

* 位值承诺（Bit Value Commitment）
* 逻辑门承诺（Logic Gate Commitment）
* 二进制电路承诺（Binary Circuit Commitment）

### **位值承诺**

这使得批准者能够在不同的脚本和未使用交易输出（UTXO）中设置一个 bit 值为「0」或「1」，从而使得一个脚本能够跨多个交易运行，这些二进制的 0 和 1 是所有计算的基础

*（译者注：通过控制 bit 值，可以实现条件判断、逻辑运算等各种计算操作。这种灵活性使得 BitVM 可以更加强大地支持复杂的智能合约功能。）*

### **逻辑门承诺**

这允许使用与非门（NAND gate），并实现 AND、NOT 和 OR 等语句的功能。

与非门根据两个输入（比如两个位值）的状态生成一个输出。

*（译者注：逻辑门承诺机制通过引入与非门，为 BitVM 提供了更灵活和强大的功能，使得智能合约可以支持包含逻辑运算的复杂计算。）*

### **二进制电路承诺**

一旦定义了各种逻辑门，你可以使用二进制电路来构建更复杂的数字系统。

可以将其视为多个 NAND 构建模块形成的完整智能合约结构。

*（译者注：在 BitVM 中，类似地，我们可以将多个逻辑门组合起来形成一个完整的智能合约结构，就像多个与非门构成一个具体的模块化实现一样。这种模块化的构建方式使得智能合约的设计更加灵活和可扩展。）*

## 05 其它参考资源

这就是我们目前可以讲解的技术细节了，如果你想深入了解或更加专业地了解 BitVM，还有很多额外的资源可供查阅。

> **以下是一些值得参考的资源：**
>
> [https://twitter.com/casperdefi/status/1711409019196244150\
> https://twitter.com/brian\_trollz/status/1711481519758516371\
> https://twitter.com/super\_testnet/status/1711395898368856488\
> https://twitter.com/BobBodily/status/1711581484254192013](<https://twitter.com/casperdefi/status/1711409019196244150&#xA;https://twitter.com/brian_trollz/status/1711481519758516371&#xA;https://twitter.com/super_testnet/status/1711395898368856488&#xA;https://twitter.com/BobBodily/status/1711581484254192013>)

## 06 态度的转变

**通过观察，我们发现了一个有趣的现象：**

人们对于通过 BitVM 在比特币上构建应用程序的态度，发生了巨大的转变。

对于将智能合约引入比特币这件事，不少人此前都反应冷淡，甚至公开反对，但是现在他们都开始表示支持，这个现象是令人鼓舞的！
