探索比特币二层智能合约基础设施的 Stacks

作为 BTC L2 调研系列的文章,本文将聚焦于 Stacks 协议,这是一个旨在扩展比特币功能的创新协议。
您可以访问 Stacks: An Exploration of Bitcoin’s Layer 2 Smart Contract Infrastructure 获取英文版内容。

Stacks

概览

Stacks 协议作为比特币的二层解决方案,在不改变比特币核心协议的前提下,利用比特币的安全性与脚本功能,为比特币网络引入了智能合约和去中心化应用(DApps)。其核心目标是挖掘比特币作为可编程基础层的潜力,并扩大其在数字货币之外的应用范围。

Stacks 自 2021 年初发布以来,一直在持续发展之中,并且计划进行包括 Nakamoto Release 在内的重大更新。随着时间的推移,该协议不断深化与比特币的融合,并扩展其功能范围。

协议速览

Stacks 协议的设计理念是在不改变比特币核心协议的基础上,通过引入智能合约和去中心化应用(DApps),显著扩展比特币的实用性。实现此目标的关键技术是转移证明(Proof of Transfer, PoX)共识机制,该机制将 Stacks 区块链与比特币区块链紧密相连。

PoX 的创新之处在于,它利用比特币转移这一行为来支持共识的运行和智能合约的执行,从而奖励网络参与者。PoX 不仅增强了网络的安全性,还对齐了比特币和 Stacks 之间的激励机制。

每个 Stacks 区块都与一个比特币交易紧密相连,并在比特币区块链上得到记录。这种设计确保了 Stacks 区块链上的所有操作都能够继承比特币工作量证明(Proof of Work, PoW)共识机制所提供的安全性。此外,Stacks 还整合了一种机制,允许 Stacks(STX)代币的持有者通过锁定其代币参与网络治理,而 Stacks 区块链上的矿工则通过将比特币转移给 STX 代币的锁定者来竞争区块的发布权。

Stacks 与其他比特币扩展解决方案的主要区别体现在以下几个方面:

  • Clarity 智能合约语言:Stacks 引入了 Clarity,这是一种可判定的、非图灵完备的智能合约语言。Clarity 的可判定性是一个关键特性,它确保了合约在执行过程中不会耗尽资源,并且在执行前可以进行彻底的静态分析。这对于需要确保应用程序行为一致性的开发者和企业来说至关重要。Clarity 旨在避免智能合约编程中的常见陷阱,如重入攻击和不可预测的燃气费用,这些问题在其他区块链生态系统中非常普遍。

  • 直接奖励模型:通过 PoX 机制,Stacks 使用转移的资产直接奖励参与者,从而在 Stacks 的运作和比特币的安全模型之间建立了直接的经济联系。相比之下,其他方案通常引入新的代币作为奖励。

Stacks 还带来了几项技术创新:

  • 转移证明(PoX):PoX 通过转移 BTC 来支持 Stacks 上的网络共识和智能合约执行,旨在回收比特币工作量证明所消耗的能源和经济成本。这种方法不仅保护了网络,而且实现了比特币和 Stacks 之间的激励机制的一致性。

  • 比特币安全性的集成:Stacks 上的所有操作都锚定在比特币区块链上,这意味着任何修改 Stacks 区块链状态的操作(如交易或智能合约执行)最终都将在比特币区块链上得到确认。

  • 微块和锚块:Stacks 采用了一种新颖的区块生成机制,包括微块和锚块。微块允许近乎即时的交易处理,通过快速反馈机制增强了用户体验。锚块则定期生成,包含对所有先前微块的哈希引用,将它们永久地锚定在由比特币区块链保护的历史中。

信任与安全

Stacks 架构的设计要求用户对几个关键组成部分持有信任:

  • 转移证明(PoX)共识:作为 Stacks 与比特币连接的基石,PoX 依赖于用户对于激励机制的信任,以及对于比特币转移能够安全且准确地支持网络功能的信任。

  • Clarity 智能合约:鉴于合约的执行严格遵循编写的代码,并且代码在区块链上是可见的,用户必须信任他们所交互的代码的清晰度和正确性。

  • 共识参与者:尽管 Stacks 借助比特币的安全性,它也依赖于自身的矿工网络和 Stacking 参与者——那些通过锁定 STX 代币来支持网络共识并赚取奖励的个体。与以太坊的第二层解决方案不同,从 Stacks 提取 BTC 需要锚定签名者的签名。为了满足 sBTC 提款请求,Stackers 需发送比特币交易,将请求的 BTC 金额支付到指定的提款地址。这表明网络的安全性在一定程度上依赖于参与者的诚信。

其他信息

虚拟机

Stacks 采用 Clarity 虚拟机来执行智能合约。Clarity 设计为非图灵完备,这确保了所有程序在运行前其结果都是可预测的,从而增强了安全性。虽然这种设计牺牲了一定的灵活性,但它提供了更高的安全性。

可扩展性

Stacks 在处理每秒原始交易数量方面,并不与 Solana 或 Ethereum 等高吞吐量区块链相竞争。然而, Stacks 专注于通过利用比特币的安全性,以一种不会过载系统的方式扩展智能合约的执行。Stacks 的微块技术允许在比特币区块时间的限制内实现快速交易处理。

进一步地,Stacks 计划在 Nakamoto Release 中引入 Fast Blocks,以实现比比特币更快的交易处理速度。此前,Stacks 区块与比特币区块之间存在 1:1 的锚定关系,这导致区块和交易处理速度较慢,一直是 Stacks 用户和开发者面临的一大挑战。Nakamoto Release 将解除 Stacks 区块生产与比特币区块生产的绑定,显著提升区块生成速度。更新后,新的 Stacks 区块预计将每 5 秒钟产生一个。

总锁定价值(TVL)

在 Stacks 生态系统中,总锁定价值(TVL)反映了用于智能合约和应用的比特币的数量。根据 Defi Llama 的数据,Stacks 的 TVL 约为 2.55 亿美元,这代表了参与 Stacks 网络的资产的总价值。

优点与缺点

优点:

  • 增强比特币的功能性:Stacks 通过使比特币网络可编程,扩展了其应用范围,超越了单纯的价值存储功能,同时保持了比特币的核心优势。

  • 创新的智能合约语言:Stacks 引入了 Clarity 语言,旨在降低智能合约开发中常见的风险,提高安全性。

  • 经济激励的一致性:通过 PoX 机制,Stacks 实现了比特币持有者和 Stacks 用户之间的经济激励一致性,促进了生态系统内的独特协同效应。

缺点:

  • 有限的吞吐量:Stacks 的架构依赖于比特币的区块时间和结构,这导致其在交易处理能力上存在一定的局限性,尤其是与为实现更高性能而设计的其他区块链相比。

协议细节

对于渴望深入了解 Stacks 协议的读者,本节将深入探讨其技术核心和创新的架构设计。我们将主要讨论 Stacks 的转移证明(Proof of Transfer, PoX)共识机制、Clarity 智能合约语言,以及 Stacks 如何与比特币区块链协同工作。

与比特币的集成

Stacks 的关键设计之一是通过 Clarity 语言与比特币进行交互,这为比特币网络赋予了智能合约处理能力。这种设计不仅利用了比特币的固有安全优势,还支持了去中心化应用所需的复杂操作。

从比特币区块链读取数据

Clarity 语言能够通过 get-burn-block-info? 函数直接访问比特币区块链的状态。该函数用于获取比特币的指定区块头哈希,使 Clarity 合约能够利用 burn-block-height 关键字动态响应比特币网络上的事件,并确定当前比特币区块的高度。需要注意的是,此函数只能提取在 Stacks 链启动之后得到确认的比特币区块数据,这导致 Clarity 对比特币事件的响应存在轻微延迟。

向比特币区块链写入数据

向比特币区块链写入数据的过程在 Stacks 中更为复杂。目前,Stacks 采用一种分层的方法,其中 Stacks 上的操作由 PoX 机制驱动,并在比特币区块链上执行写入操作。

Clarity 智能合约语言

Stacks 的智能合约编程语言 Clarity 是一种可判定的、非图灵完备的语言。这种设计使得开发者能够在将程序部署到区块链之前,准确预知其行为。Clarity 采用解释执行而非编译执行的方式,这意味着代码将严格按照原意执行,无需任何中间字节码,从而降低了编译器缺陷可能引起的安全风险。

主要特性:

  • 可预测性:Clarity 确保每个合约的执行结果在执行前都是已知的,这对于区块链上的金融服务和其他高风险应用至关重要。

  • 无需燃气估算:与以太坊的燃气模型不同,Clarity 要求在执行前就确定交易的成本,从而消除了执行过程中出现燃气不足错误的风险。

  • 直接访问比特币状态:Clarity 合约可以直接查询比特币区块链的状态,允许合约基于比特币交易触发行动,这对于需要跨链交互的应用程序至关重要。

安全性考量: 在设计 Clarity 时,安全性是首要考虑的因素。它包含了解决其他智能合约语言中常见漏洞的特性,例如,其语言结构本身防止了以太坊合约中常见的重入攻击。

Nakamoto Release

Nakamoto Release 是 Stacks 网络计划中的一次重大升级,预计将以硬分叉的形式引入一系列关键改进。

当前设计与挑战

目前的 Stacks 设计,遵循 SIP-001、SIP-007 和 SIP-015 规范,主要依赖于随机选择过程来选拔矿工。这将区块生成速率与比特币较慢的区块时间相绑定,导致了交易确认的高延迟和其他效率问题,例如微块效率不高,以及低成本即可使 Stacks 链重组的风险。

解决办法:

  • Fast Blocks:Nakamoto Release 旨在显著减少交易确认时间,允许矿工在比特币区块间隔内产生多个区块,从而将确认时间从分钟缩短到秒。

  • 健壮的链重组机制:引入一种机制,要求显著多数票才能产生分叉,并将重组与比特币区块链相绑定,旨在显著增强 Stacks 网络的安全性和稳定性。

  • 抵抗 MEV 和公平竞争:对随机选择过程的改进旨在减少比特币矿工或 Stacks 矿工可能利用的优势,这些优势可能会影响网络的公平性和安全性。

Nakamoto Release 的设计目标是解决 Stacks 网络在可扩展性和安全性方面的挑战,同时加强与比特币的集成。作为在比特币上直接启用智能合约和应用的先驱,Stacks 希望通过实施这些改进提升其操作效率,并巩固其地位。

参考资料: