Simplicity 用一小组组合子构造程序,并可用含义完全相同的快速 jets 替换已识别的子表达式,从而兼顾可分析性与实际性能。
其核心是一小组带类型的组合子,具有数学定义的指称语义与操作语义。Rocq 中的形式模型可以对语言、实现以及具体程序的性质进行机器检验证明。 [1]
该语言没有无界循环或通用递归,因此可在执行前推导计算、内存与数据的上限。程序不会因未知的 gas 消耗中止,也不会永远运行。 [1]
程序是一棵默克尔化表达式树,花费时可用未使用分支的 Merkle root 取代这些分支。验证者检查对完整程序的承诺,而 on-chain 只公开所需路径与 witness data。 [1]
Jet 会识别特定的 Simplicity 表达式,并用优化后的原生函数执行。Consensus 安全要求 jet 的结果与该表达式的参考语义完全一致;jet 不会暗中加入新的含义。 [1]
libSimplicity 包含用 C 编写的最小 consensus-sensitive runtime、用 Haskell 编写的参考与生成组件,以及 Rocq 中的形式模型。这些层会相互校验,但仓库明确说明语言与实现仍在开发。 [2]
SimplicityHL 是更易读、类似 Rust 的语言,可编译为 Simplicity bytecode。项目将其标为 work in progress,而非 production-ready;合约审计必须覆盖源代码、编译器、bytecode、witness 与 jets。 [3]
Simplicity 于 2025 年部署到 Liquid mainnet。Liquid 是支持多种资产与 Confidential Transactions 的联邦式 sidechain,因此该部署并不等于在 Bitcoin mainnet 共识中激活;后者需要单独提案与 soft fork。 [4]
形式语义不能保证经济意图正确、密钥安全或交易对手可靠。核验时必须区分低层程序、SimplicityHL 工具、具体 jet 集合、Liquid 版本以及假设中的 Bitcoin 集成。 [2]
要获得更完整的理解,请将本词条与以下词条结合阅读: Bitcoin Script, Miniscript, Taproot, Soft Fork, 共识规则, Sidechain.
01Simplicity 可用于 Bitcoin mainnet 吗?+
不可以。它部署在共识不同的 Liquid mainnet;若要作为 Bitcoin 脚本语言使用,需要单独提案和 soft fork。
02Simplicity 与 Miniscript 相同吗?+
不同。Miniscript 是建立在现有 Bitcoin Script 之上的可分析结构;Simplicity 是独立且形式化定义的低层语言。