技术规范

共识

  • 如中所述的转移证明 (PoX) SIP-007arrow-up-right

  • 网络将在下列所述的烧毁证明 (PoB) 过渡 SIP-001arrow-up-right 在 10 年之后。 在 SIP-001 中了解有关烧毁证明的更多信息arrow-up-right.

  • 威胁模型

    • 比特币挖矿算力中 51% 的恶意力量可以对 Stacks 链进行重组或执行双重支付攻击

    • 如果 Stackers 无法就区块有效性达成 70% 的共识,链可以停止

  • 不同参与者及其角色

    • Stacks 矿工将交易打包进区块并向 stackers 提议这些区块

    • Stacks 持有者可能会改变区块限制的计算(受矿工否决权约束),并可能表决在一个奖励周期内禁用转移证明奖励。

    • Stackers 验证并将区块追加到链上,并验证 sBTC 存取款交易

转移证明挖矿

  • Coinbase 奖励计划:

    • 前 4 年每区块 1000 STX

    • 接下来的 4 年每区块 500 STX

    • 随后 4 年每区块 250 STX

    • 此后永续每区块 125 STX

  • Coinbase 奖励会因“错过抽签”而累积:如果某个比特币区块没有抽签(在高度 N),则任何在随后某次抽签中挖出的、并且构建于在倒数第二次抽签(高度 N-1)时存在的任何 Stacks 链顶之上的 Stacks 区块都可以申领其 coinbase。此机制鼓励矿工即使在比特币费用较高时也继续挖矿。

  • 初始挖矿奖励:这是上述情况的一种特殊情形,用以激励早期矿工。位于首个烧毁区块高度(由独立矿工在 Stacks 2.0 启动时选择)与首次抽签赢家之间的所有烧链区块的 coinbase 会累积,并在一个固定窗口(待确定)内分发给矿工。例如,假设烧毁区块高度为 10,000,首次抽签在区块 10,500,分发窗口为 100 个区块,则前 500 个区块(10,500 - 10,000)的 coinbase 将在随后 100 个区块中均匀分配给赢得抽签的矿工。

  • 奖励成熟窗口:100 个区块,即领导者将在其成功挖出的区块后 100 个区块获得 coinbase 奖励。

  • 区块间隔:Stacks 区块链大约每 10 秒产生快速区块,且每个比特币区块都会发生一次矿工任期变更

  • BTC 承诺:矿工必须承诺至少 11,000 satoshi(5,500 sats / UTXO 输出arrow-up-right);每区块 2 个输出)以避免“尘埃”。

  • 欲了解更多细节,请参阅区块生产。

质押 (Stacking)

1

准备阶段

选择一个“锚定区块”。根据锚定区块时链的快照确定符合条件的地址集合(“奖励集合”)。准备阶段长度为 100 个区块。质押承诺需在该阶段开始前确认。

2

奖励阶段

矿工的 BTC 承诺在奖励集合中分配。奖励周期长度为 2000 个 BTC 区块(约 ~2 周)。

  • 每区块两个奖励地址,每个奖励周期共 4000 个地址。地址使用 VRF(可验证随机函数)选择,因此每个节点可以对给定区块确定性地得出相同的奖励地址。

  • 质押门槛:当参与率在 25% 至 100% 之间时为参与金额的 0.025%;当参与率低于 25% 时,门槛水平始终为流动 STX 供应的 0.00625。

  • 委托:一个 STX 地址可以指定另一个地址代表其参与质押。 SIP-007 中的相关章节arrow-up-right.

  • 池化:单个 STX 持有者若未达到质押门槛,可将其持有合并以参与质押。为此,STX 持有者必须将(可选的)奖励地址设置为“委托地址”。欲知更多详情,请参阅 此参考资料arrow-up-right.

  • 支持 Legacy、SegWit、Native Segwit 和 Taproot 地址

账户与地址

  • Stacks 区块链中的交易源自、由以下账户支付并在其权限下执行

  • 一个账户由其地址 + nonce + 资产完全指定

  • 地址包含 2 或 3 个字段:1 字节版本、20 字节公钥哈希(RIPEMD160(SHA256(input)))、可选名称(可变长度,最大 128 字节)

  • 两种类型的账户:标准账户由一个或多个私钥拥有;合约账户在智能合约实例化时生成(由上述可选名称字段指定)

  • Nonce 计算账户授权交易的次数。起始为 0,有效的授权必须包含 下一个 nonce 值。

  • 资产是一个映射,列出所有资产类型——STX、任何由 Clarity 合约指定的链上资产(例如 NFT)——到该账户拥有的数量。

  • 账户不需要显式“创建”或注册;所有账户隐式存在,并在首次使用时实例化。

交易

  • 交易类型:coinbase、代币转移、合约部署、合约调用、任期变更。

  • 只有标准账户(非合约)可以支付交易费用。

  • 交易执行由以下项管理:

1

发起账户

创建、授权并发送交易的账户。

2

付费账户

由领导者向其计费以支付验证和执行交易成本的账户。

3

发送账户

标识当前谁在执行交易的账户:在交易执行过程中,这可以通过 as-contract Clarity 函数而改变。

  • 交易可以被批量或流式打包进区块。可通过交易的锚定模式控制行为。使用流式(微区块)可实现更快的确认时间。

  • 两种授权类型:标准授权是指发起账户与付费账户相同。 赞助 授权是指发起账户与付费账户不同。例如,开发者或服务提供商可以为用户调用其智能合约支付费用。

  • 对于赞助授权,首先用户用发起账户签名,然后赞助方用付费账户签名。

  • 每个账户并发待处理交易的内存池限制为 25 个

  • 待处理的内存池交易将在 接收后 256 个区块内被垃圾回收arrow-up-right。以目标区块时间 10 分钟计算,这大约等于 ~42 小时

  • 所有影响账户余额的交易都是原子的,转账操作不能只增加一个账户的余额而不减少另一个账户的余额。然而,执行多个账户操作的交易(例如从多个账户转账)可能会部分完成。

  • 交易可以包含备注字符串(最大 34 字节)

这有帮助吗?