交易如何工作

介绍
交易是 Stacks 中的基本执行单元。每笔交易都由一个 Stacks 账户发起,并永久保留在 Stacks 网络历史中。本指南帮助你理解 Stacks 交易。
生命周期
交易在最终确认之前会经历多个阶段。

生成
交易根据编码规范进行组装。
验证和签名
交易会被验证以确认其格式正确。所需的签名会被填入。
广播
交易被发送到节点。
注册
矿工接收交易、验证并将其添加到内存池(mempool),这是所有待处理交易的暂存区域。
处理
矿工审查内存池并为下一个要挖出的区块选择交易。根据交易类型,在此步骤期间可能发生不同的操作。例如,在代币转移时可以验证后置条件、可以铸造智能合约定义的代币,或者尝试调用现有智能合约的方法。
确认
矿工成功提议包含一组交易的区块。当堆叠者(stackers)批准时,区块内的交易会成功在网络中传播。
一旦交易被注册,它可以处于三种状态之一: 待处理, 成功,或 失败.
类型
Stacks 支持一组不同的交易类型:
类型
值
描述
任期变更
TenureChange
任期变更是现有 Stacks 区块链中的一个事件,当一个矿工从另一个矿工接管创建新 Stacks 区块的责任时发生。任期变更发生于通过加密抽签发现 Stacks 区块时。由堆叠者(stackers)执行。
发现任期变更区块
TenureChange-BlockFound
一笔 TenureChange-BlockFound 交易由获胜的抽签引发。这会导致新矿工开始产生区块,并阻止当前矿工继续产生更多区块。
延长任期变更
TenureChange-Extend
一笔 TenureChange-Extend,由堆叠者引发,重置当前任期的正在进行的执行预算,从而允许矿工继续产生区块。
代币转移
token_transfer
资产从发送方转移到接收方
合约部署
smart_contract
合约实例化
合约调用
contract_call
对公共的、非只读函数的合约调用
费用
费用用于激励矿工在 Stacks 区块链上确认交易。费用根据估算费率和原始交易大小(字节数)计算。费率是由市场决定的变量。对于测试网,费率设为 1 微 STX。
随机数(Nonce)
每个账户都带有一个 nonce 属性 ,该属性指示给定账户已处理的交易数量。随机数是一次性代码,新账户从 0 开始,并在每笔交易后递增 1。
随机数会被添加到所有交易中并帮助识别它们,以确保交易按顺序处理并避免重复处理。
共识机制还通过两种方式确保交易不会被“重放”。首先,节点查询其未花费交易输出(UTXO)以满足新交易中的支出条件。其次,节点之间发送的消息会检查序列号。
当构建新的代币转移交易时,需要获取并设置该账户的最新随机数。
如何检测并解决随机数间隙
Stacks 交易必须 严格按随机数顺序执行。当提交的交易具有高于预期的随机数时,网络并不会 立即 拒绝它——相反,网络会跟踪该间隙并等待缺失的随机数到达。
下面是一个概念性演练,包含来自 API 的可视化响应,说明当随机数按错序提交时系统的行为。
最后更新于
这有帮助吗?