网络基础

代币

Stacks(STX)代币是 Stacks 网络上的原生代币。最小单位是一微 STX:1,000,000 微 STX 构成一个 Stacks(STX)。

STX 数额应以整数(8 字节长)存储,表示微 STX 的数量。

手续费

手续费用于激励矿工确认 Stacks 区块链上的交易。手续费根据估算的费率和原始交易的字节大小计算。费率由市场决定。对于测试网,费率设置为 1 微 STX。

随机数(nonce)

每个账户都有一个 nonce 属性arrow-up-right 它表示该账户已处理的交易数量。nonce 是一次性代码,新账户从 0 开始,并在每笔交易后增加 1。

nonce 会被添加到所有交易中,帮助识别交易以确保按顺序处理并避免重复处理。

circle-info

共识机制还通过两种方式确保交易不会被“重放”。首先,节点查询其未花费交易输出(UTXO)以满足在新交易中的花费条件。其次,节点之间发送的消息会检查序列号。

当构建新的代币转移交易时,需要获取并设置该账户的最新 nonce。

如何检测并解决 nonce 缺口

Stacks 交易必须 严格按 nonce 顺序执行。当提交的交易 nonce 高于预期时,网络会 不会 直接拒绝它——相反,网络会跟踪该缺口并等待缺失的 nonce 到达。

下面是一个概念性演练,包含来自 API 的可视化响应,展示当 nonce 异步提交时系统的行为。

1

初始状态(无待处理交易)

解释

  • 所有到 nonce 为止的交易 241 都已执行

  • 网络期望的下一个 nonce 为 242 下一个

  • 当前 mempool 中没有等待的交易

  • 不存在 nonce 缺口

2

提交一个未来的 nonce(245)

解释

  • 具有 nonce 的交易 245 现在在 mempool 中

  • 随机数(nonce) 242, 243,并且 244 缺失

  • 在这些 nonces 提交之前,执行无法继续

  • possible_next_nonce 反映观察到的最高 nonce + 1

3

提交部分缺口(243)

解释

  • Nonce 243 现在存在于 mempool 中

  • 随机数(nonce) 242 并且 244 仍然缺失

  • 执行仍然被阻止

  • API 区分以下情况:

    • detected_mempool_nonces → 已存在但未执行

    • detected_missing_nonces → 必需但尚未看到

4

填补更多缺口(244)

解释

  • 随机数(nonce) 243 并且 244 都在 mempool 中等待

  • Nonce 242 仍然缺少

  • 执行仍然在以下位置暂停 241

5

所有必需的 nonces 已到位(242)

解释

  • 所有必需的 nonces(242–245)现在可用

  • 没有剩余缺口

  • 网络可以按顺序执行交易

6

执行完成后

解释

  • 所有待处理的交易均已执行

  • 账户的 nonce 已推进到 245

  • 下一个有效的 nonce 现在是 246

  • mempool 状态再次清空

最后更新于

这有帮助吗?