# 智能合约

## 通道合约

我们在闪电通道RSMC合约的基础上，将闪电网络RSMC合约框架，进一步升级成为一个协调多方动作的框架，我们称之为通道合约。

通道合约是一种多方认可并共同执行和维护的合约，可以认为就是多方签署了一份由源代码构成的合同，按照这些源代码规定的动作执行。合约目前以模版的方式提供，通过在聪网节点内置这些合约，确保合约的部署，运行和验证是分布式进行的。

通道合约实现了智能合约的部分功能，但是目前并不具备EVM的完整功能。 目前已经提供的这几类

* Transcend，资产穿越合约，替代闪电网络通道，任何人都可以跟该合约交互，自由在主网和聪网之间穿越资产（通过一个多签钱包和聪网交互）
* Launchpool，发射池合约。可以在主网部署资产ticker，铸造并自动穿越到聪网，在聪网做二次分发，发射成功后留下一个底池，支持AMM交易
* AMM，AMM交易合约，一个可以添加流动性的AMM交易池子，交易速度快，费用低，添加流动性还可以分享池子收益
* LimitOrder，限价单交易合约，不喜欢AMM交易模式的，也可以挂限价的买单或卖单，按照自己期望的价格进行交易

通道合约是聪网的关键创新之一，其潜力无限，支持WASM，这是聪网后续发展的重要支柱，其功能性和灵活性远远大于其他在比特币网络实现智能合约的方案。

## 脚本合约

将现有的btc脚本语言升级，使其成为一个图灵完备的脚本语言，这是一条在主网上已经探索并且推动多年的路径。不可否认这是一条可行的路径。但比特币网络的设计理念，其实跟链上实现图灵完备的脚本语言是冲突的。

比特币脚本（Bitcoin Script）从设计之初就是一种受限的、非图灵完备（non-Turing-complete）栈语言，它主要用于表达“这笔币可以在满足哪些条件时被花费”，而不是用于执行一般意义的计算。

一个开发语言是图灵完备的，当且仅当它能：

* 表达任意计算逻辑（条件、循环、递归等）
* 具备无限状态的能力（例如通过循环可无限运行）

而比特币脚本语言，缺少：

* while、for、goto 等循环结构
* 任意内存读写能力
* 动态跳转与函数调用
* 动态长度执行栈扩展（栈深有限）

因此，比特币脚本在设计上被严格限制为“有限计算”模型。这种设计原则，目标是为了：

* 防止拒绝服务攻击（DoS） 区块链上的每个节点都必须验证脚本。 如果脚本允许循环或递归，就可能造成无限执行或高复杂度执行。 这会导致一个恶意交易就能让节点CPU暴涨、验证阻塞。 而非图灵完备保证所有脚本在有限步内执行完毕。
* 可预测的验证成本 比特币每个交易的验证成本必须是确定的： 交易验证时间 = 区块传播时间 区块传播时间决定网络共识的稳定性 非图灵完备 → 验证复杂度固定上界，网络共识更安全。
* 简化安全审计 图灵完备语言极难完全验证安全性（Halting Problem）。 比特币脚本的非图灵完备性让每个分支都能静态分析，确定执行路径。
* 共识一致性与去中心化实现的现实约束 每个节点必须运行相同的脚本解释器。 复杂脚本语言更容易导致： 不同平台执行结果不一致（Endianness, Integer overflow） 实现差异（共识分叉）

因此，比特币故意不图灵完备，以确保主网的安全性、稳定性和可扩展性。这也是比特币分层设计哲学的体现。比特币主网（L1）只负责：

* 最终结算（Final settlement）
* 状态安全性与抗审查性

而复杂计算逻辑交给L2或侧链实现，闪电网络的设计本意，就是成为BTC网络的扩展网络。

从上面的讨论已经可以看出，比特币脚本的非图灵完备是设计的结果，不可能改变这个共识。即使社区现在很热的激活OP-CAT指令的呼声，也不可能改变这个共识。激活OP-CAT的BIP347方案大致内容如下：

* 限制拼接结果最大长度（例如 ≤ 520 bytes）
* 禁止递归拼接
* 不引入跳转指令
* 不改变栈深规则

这样可以在不引入循环、递归的前提下安全恢复 OP\_CAT。

所以结论如下：

* 在不违背“主网保持非图灵完备”的设计哲学的前提下，OP\_CAT 属于 “安全边界内的功能增强”。
* 中长期（2025–2027）激活的可能性较高，但比特币主网仍不会走向图灵完备化。

所以主网链上图灵完备的智能合约的可能性，基本等于零。 聪网虽然可以做的更多，但一个技术如果在主网上没有被应用的可能性，值不值得做，就看该技术本身是否是最佳方案了。从目前的探索结果来看，直接在指令集上做更多的增强，才有可能实现图灵完备的脚本语言，但复杂度比较高，而且开发成本非常高。而目前已经实现的通道合约的方案，开发成本低，方案更灵活，是聪网上最佳的实现智能合约的方案。
