# Layer2 | 链下计算

By [Renaissance Labs](https://paragraph.com/@renaissance-labs) · 2022-02-11

---

链下计算（ Off Chain Computation ）
-----------------------------

以太坊声称要做计算机，EOS 要做全球操作系统，但无论是做计算机还是做操作系统都得正视计算这个问题，链上计算的开销是非常大的，链上每一个 EVM 的 Code 计算需要全球计算机都算一遍，才能得出结果，所以有人做了这么一个计算的扩展，在链外做 Computation。

这个方式大致有两种

### TEE（ Trusted Execution Environment ）

第一种是在可信的执行的环境中，把这个计算算出来，然后传到链上去，再加上可信环境的一个证明。

这个证明不是计算结果的对和错，而是证明这个计算是在安全的环境里运行的。

可信的执行环境在工业界相对来说还是比较成熟，ARM 芯片是支持 TrustZone 方案的，我们用的苹果和安卓手机的指纹，它的秘钥信息都是存在 TrustZone 里面的。它的优缺点通过介绍其实也比较清楚了。

**优点**

*   隐私性很强，因为所有东西都是在黑箱子里面的。
    
*   性能也非常的高，单个机器执行即可，因为我信任的不是这台机器，而是这个 Trust Zone。
    
*   功能非常的灵活，不像 Plasma 比较单一，它可以做各种各样的东西甚至是远超过 EVM 的东西，因为 EVM 里面做一些加密运算是很难的
    

**缺点**

*   黑箱计算引入了未知的风险
    
*   依赖于硬件限制了它的扩展性，因为不可能每个人都有一个符合硬件要求的设备来运行这套系统。
    
*   系统的安全性是依赖于厂商的，厂商是可以在 Trustware 里面做任何的事情，这个也引入了风险.
    

所以这种依赖于安全执行环境的 [Layer](https://so.csdn.net/so/search?q=Layer&spm=1001.2101.3001.7020) 2 方案一般是由联盟链或者是企业内部的链来使用的。

### Truebit

第二种叫 Trurbit，它解决的也是链外运算的问题，这个项目很有趣。这里面有好几个角色，包括用户、Solver 和 Challenger。

第一个是计算需求的提出者（用户），这个计算需求是用 Truebit 的 VM 来描述的，在实际操作的时候，Truebit 的 VM 是用 Rust 实现的

用户可以选择悬赏的方式找人来帮他做运算，运算的执行人叫做 Solver。Solver 把每一步的运算状态都算成一个哈希折叠到默克尔树里面，在最后，Solver 把所有运算结果的默克尔树的根哈希，以及运算的最终结果提交到区块链上。

而 Challenger 需要自己算一遍生成结果，如果他发现算的结果和 Sovler 算的不一样，他就能根据错误信息找到哪一步或者是哪几步错了。Challenger 就能把这个状态和状态运行的指针上传到区块链上，挑战这个 Solver。

因为 Truebit 在链上拥有指令集，而且 State 可以证明它在原来的默克尔树里面，于是链可以计算这个 State 加指令得到一个新的 State，通过这个链可以开始判断，这个 State 是 Solver 生成的 State 还是 Challenger 生成的 State，谁对谁错。

Truebit 只需要链上的一步运算，就能够证明所有运算是正确的还是错误的，它能把普通运算折叠成了最关键的计算，交给主链去运算，验证。

  

延伸阅读：

[Layer2 | 区块链发展新思潮](https://my.oschina.net/u/3919161/blog/2992355) [Layer2 | 状态通道 State Channel](https://my.oschina.net/u/3919161/blog/2992526)  [Layer2 | Plasma 框架](https://my.oschina.net/u/3919161/blog/2992528)  [Layer2 | 链下计算](https://my.oschina.net/u/3919161/blog/2992529)  [Layer2 | 链间通信](https://my.oschina.net/u/3919161/blog/2992533)

---

*Originally published on [Renaissance Labs](https://paragraph.com/@renaissance-labs/layer2-3)*
