什么是 Stacks?

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