交易
交易是 Sui 上状态变化的核心机制。它们代表用户与 Sui 网络交互的方式,通过封装操作指令和数据来实现特定功能。交易可以用来创建新对象、更新现有对象、转移对象所有权,或与其他对象交互。
交易的组成部分
Sui 上的交易包含以下核心组件:
输入 交易的输入提供执行操作所需的所有数据,分为以下两类:
- 纯参数:基本数据类型,如布尔值 (bool)、无符号整数 (u64)、地址 (address)、字符串 (string) 和向量 (
vector<T>
)。 - 对象参数:包括交易访问的对象或其引用,例如共享对象、冻结对象或交易发起者拥有的对象。
- 纯参数:基本数据类型,如布尔值 (bool)、无符号整数 (u64)、地址 (address)、字符串 (string) 和向量 (
指令 交易指令定义了要执行的具体操作。指令通常包括以下行为:
- 调用 Move 模块中的函数。
- 创建、更新或删除对象。
- 转移对象的所有权。
气体对象 为了避免垃圾交易和拒绝服务攻击,每笔交易都需要指定一个气体对象来支付相关费用。气体对象需包含足够的 SUI 代币,用于支付计算资源和存储成本。
交易执行路径
交易在 Sui 上的执行路径根据对象的性质而不同,分为两种:快速路径和共识路径。
快速路径
适用于只涉及以下对象的交易:
- 账户所有对象:这些对象由单个账户独占拥有。
- 不可变对象:状态已被冻结的只读对象。
由于无需进行全局排序,快速路径的交易可以以极低的延迟完成,从而实现高效处理。
共识路径
适用于涉及共享对象(可变共享状态)的交易。这类交易需要通过网络达成共识,以确保状态变更的顺序和一致性。尽管共识路径需要更多的验证步骤并导致更高的延迟,但它确保了所有验证者对共享状态的更改达成一致,从而维护网络的完整性。
交易效果
交易效果是指交易对区块链状态的实际更改。具体包括以下内容:
费用支付 气体对象用于支付交易的计算和存储费用。
对象操作
- 创建对象:例如初始化新的资产或资源。
- 更新对象:修改对象的状态或属性。
- 删除对象:移除已不再需要的对象。
事件记录 交易可以触发事件,这些事件通常用于记录系统中的重要状态变化或操作历史。
交易结果
每笔交易的执行结果由以下几个部分组成:
- 交易摘要:交易哈希,用于唯一标识交易。
- 交易数据:包括输入、指令和气体对象。
- 交易效果:记录了交易对区块链状态的更改,包括:
- 更新的对象及其新版本。
- 使用的气体对象及其剩余余额。
- 交易的气体成本。
- 触发的事件列表。
- 对象更改:包括对象所有权和数据状态的变更。
- 余额更改:记录账户余额的增减情况。
总结
- 交易是 Sui 上状态变化的关键机制。
- 每笔交易由输入、指令和气体对象组成。
- 交易在 Sui 上采用两种执行路径:快速路径和共识路径。
- 交易效果描述了交易对链上状态的实际更改。
额外信息
在深入理解 Sui 交易的过程中,还需注意以下几点:
交易费用 所有交易都需支付费用,用于补偿网络的计算和存储资源消耗。
交易签名 交易需由发送者使用私钥签名,以验证其真实性和合法性。
交易传播 交易会在网络中广播,直到被验证并纳入区块链。