技术规格

共识

  • 如在以下文档中描述的转移证明(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 satoshis(5,500 sats / UTXO 输出arrow-up-right);每块 2 个输出)以避免“尘埃”。

  • 有关详细信息,请参见区块生成(Block Production)。

质押(Stacking)

1

准备阶段

选择一个“锚定区块”。基于锚定区块的链快照确定合格地址集(“奖励集”)。准备阶段长度为 100 个区块。质押承诺需要在此阶段开始之前被确认。

2

奖励阶段

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

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

  • 质押阈值:当参与率在 25% 到 100% 之间时为参与总量的 0.025%;当参与率低于 25% 时,阈值始终为可流通 STX 供应的 0.00625。

  • 委托:一个 STX 地址可以指定另一个地址代表其参与质押(Stacking)。 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 字节)

最后更新于

这有帮助吗?