什么是 Stacks?

Stacks 是一个用于智能合约的比特币层;它使智能合约和去中心化应用能够以信任最小化的方式使用比特币作为资产,并在比特币区块链上结算交易。
Stacks 与侧链不同,是一种有着更深、更持续与比特币连接的比特币智能合约层。Stacks 使应用和智能合约能够使用 BTC 作为其资产或货币,并在比特币主链上结算其交易。 Stacks 的目标是通过把 BTC 变成一种生产性而非被动的资产,并通过支持各种去中心化应用,来扩大比特币经济规模。
Stacks 层拥有其自己的全局账本和执行环境,以支持智能合约并避免向比特币区块链添加额外交易从而造成过载。然而,Stacks 层独特之处在于它具有本地比特币智能合约的大多数理想特性,但无需向比特币添加额外功能或复杂性。它还提供了用于更高性能和附加功能的机制,例如更快的区块时间和去中心化的挂钩(peg)。
作为一个比特币层,Stacks 具有以下使其独特的创新:
以比特币为安全保障
以比特币为安全保障:为 Stacks 交易提供比特币最终性保障;在 Stacks 层发生的交易由整个比特币算力保护。也就是说,要逆转这些交易,攻击者需要对比特币进行重组(reorg)。此类交易在比特币上结算并具有比特币最终性。此外,Stacks 层会随比特币分叉,因此 Stacks 上的任何状态会自动跟随比特币的分叉。
信任最小化的比特币挂钩(peg)
信任最小化的比特币挂钩:为一种新颖的去中心化、非托管的比特币挂钩资产 sBTC 奠定基础,使智能合约能够使用比特币挂钩资产在更快且更低成本的情况下运行,同时具有最小的对手方风险。这也使得 Stacks 层上的合约可以通过 peg-out 交易将写入记录写到比特币,而无需依赖集中或封闭的实体集合。原子互换和资产:Stacks 已经具备原子 BTC 互换功能,并允许比特币地址拥有和转移在 Stacks 层上定义的资产。Magic swaps 和 Catamaran swaps 是在比特币 L1 上的 BTC 与 Stacks 层上资产之间去中心化原子互换的实例,已处于上线状态。此外,用户可以在比特币地址上拥有 Stacks 层的资产,如 STX、稳定币和 NFT,并在其偏好的情况下使用比特币 L1 交易转移这些资产。
Clarity 语言
Clarity 语言:支持 Clarity,这是一种用于可证明智能合约的安全且可判定的语言。使用 Clarity,开发者可以在执行之前以数学确定性知晓合约能做什么和不能做什么。去中心化挂钩合约将受益于 Clarity 语言的安全属性。值得特别注意的是,Clarity WASM 是对 Clarity 虚拟机所做的一项改动,提供显著更快的执行时间,并为 Rust 和 Solidity 开发者在 Stacks 上编写智能合约创造潜在通路,尽管这项工作并非 Nakamoto 发布的一部分。
对比特币状态的认知
对比特币状态的认知:具备对完整比特币状态的认知;它可以无需信任地读取比特币交易和状态变化,并执行由比特币交易触发的智能合约。比特币读取功能有助于保持去中心化挂钩状态与锁定在比特币 L1 上的 BTC 一致,等等。
可扩展的快速交易
可扩展的快速交易:将通过若干机制提供高性能和可扩展性,包括更快的 Stacks 层区块。此外,像子网(subnets)这样的可扩展性层可以在性能与去中心化之间做出与主 Stacks 层不同的权衡。
我们可以通过回顾中本聪在 2010 年设想将比特币泛化的方式来了解 Stacks 的目标与精神:
“……成为一个完全独立的网络和独立的区块链,但与比特币共享 CPU 算力……世界上的所有网络将共享组合的 CPU 算力,增加总体强度。”
这是 Stacks 设计决策中的一个重大主题。在比特币世界中这有些矛盾,Stacks 网络是一个比特币的 L2,但它确实有自己的代币。这是一个有意且关键的设计决策,主要目的是为了保持去中心化,而不是依赖联盟。如果这让你感到困惑或持怀疑态度,这是可以理解的——我们将在文档中更深入地探讨这些想法。
Stacks 的核心技术组件
转移证明(Proof of Transfer)
转移证明(PoX)是 Stacks 链的区块生成机制。本质上,它试图以程序化的方式重现 PoW 的区块生产模式。Stacks 矿工花费 BTC 来争取挖掘新的 Stacks 区块的机会。在底层,该区块生成机制将 Stacks 区块锚定到比特币区块,使得要逆转一个 Stacks 区块的难度与逆转一个比特币区块的难度相当。这是一个强有力的主张,我们将在关于 Nakamoto 区块生产的章节中对此作更详细的解读。
Clarity
Clarity 是 Stacks 使用的智能合约语言。它从零开始设计,以便开发者更容易编写安全、可靠的智能合约。此外,由于它是为 Stacks 和比特币专门构建的,内置了读取比特币状态的函数,这意味着你可以使用比特币状态在 Clarity 中执行操作。例如,你可以设置检查以确保某个特定的比特币交易已发生,然后再在 Clarity 中执行铸币(mint)函数,而这恰好与第三个组件 sBTC 的工作方式一致。
sBTC
sBTC 是 Stacks 层上信任最小化的双向比特币挂钩。sBTC 是使比特币可编程并通过 Stacks 为比特币带来完整智能合约功能的关键。sBTC 不是一个联盟,而是作为一个开放网络、去中心化的双向挂钩解决方案运行,以尽可能小的对手方风险将智能合约功能带到比特币上。
Stacks 与区块链技术的目的
在评估新的区块链技术时,保持其原始意图和目的完整是很重要的。回到比特币,它最初被设计为:
去中心化
不可变
安全
你可能听说过区块链三难困境——在去中心化、可扩展性和安全性之间寻找平衡的问题。Stacks 采用通过将链分层来解决这一三难困境的方法。
所以在最底层,你有基础层: 比特币。比特币是最去中心化、最安全、且最不可变的区块链网络。然而,这也带来了一些权衡:
与其他网络相比,比特币非常慢。比特币大约每 ~10 分钟才写入一个新区块,其吞吐量与像 Solana 这样为速度设计的网络相比可以忽略不计。
比特币也很“无聊”。以太坊在比特币之后出现,寻求为软件做比特币为货币所做的事情。以太坊的目标是成为某种去中心化的超级计算机,为智能合约(写入区块链的代码)提供一个全球计算环境。
比特币不可扩展。因为每个新区块必须传播到网络上的每个节点,比特币只能以网络中最慢节点的速度运行。
现在我们看到像 Cosmos 这样的模块化区块链网络的兴起,旨在让人们更容易创建自己的区块链网络。尽管如今出现的大多数新区块链协议将这些特性视为负面并试图消除它们,Stacks 社区却有不同的看法。
Stacks 之道
Stacks 采用分层方法:基础结算层是比特币,可扩展性和功能性通过在其之上添加层来实现。L2 有许多不同类型和不同的构建方式。它们各自带有不同的权衡,并有各自实现可扩展性或功能目标的方式。
通过采用这种分层方法,我们能够拥有与以太坊等链相同的所有功能,但建立在比特币之上。
因此 Stacks 是一个具有一些独特属性的比特币二层,比如拥有自己的代币,作为一种激励机制来维护其所有交易的历史账本并以自身的安全预算(除了比特币的安全预算之外——下一节会详细说明)运行。
这是将 Stacks 与像闪电网络(Lightning)等其他比特币层区分开的因素之一。
闪电网络并未为比特币添加任何额外功能;它只是帮助扩展比特币已有的功能并帮助其更快速运行。闪电网络也是短暂的——它没有永久状态——因此不适用于需要记录数据并维护状态的智能合约等场景。
与此形成对比的是 Stacks,它为比特币增加了额外功能,但最终仍在比特币上结算(我们将在下一节也讨论这一点)。
其好处在于我们可以保持关注点的分离,保持比特币简单而稳固地继续生产区块,同时为功能性和速度添加额外层。如果那些其他层被妥协,基础层将保持不受影响。在构建旨在成为全球去中心化货币(比特币)以及建立在该货币之上的去中心化经济(Stacks)的系统时,这一点很重要。
有了上述背景,让我们深入了解 Stacks 是如何与比特币相连接的。
其他资源
[Stacks YouTube] Muneeb 在 2021 年 1 月 14 日的 Stacks 2.0 主网发布活动上做了一个演讲。
最后更新于
这有帮助吗?