交易布局
信息
为了最大限度地理解这个页面,强烈建 议您熟悉TL-B 语言。
TON 区块链运作依赖于三个关键部分:账户、消息和交易。本页面描述了交易的结构和布局。
交易是一种操作,处理与特定账户相关的进出消息,改变其状态,并可能为验证者生成费用。
交易
transaction$0111 account_addr:bits256 lt:uint64
prev_trans_hash:bits256 prev_trans_lt:uint64 now:uint32
outmsg_cnt:uint15
orig_status:AccountStatus end_status:AccountStatus
^[ in_msg:(Maybe ^(Message Any)) out_msgs:(HashmapE 15 ^(Message Any)) ]
total_fees:CurrencyCollection state_update:^(HASH_UPDATE Account)
description:^TransactionDescr = Transaction;
字段 | 类型 | 必需 | 描述 |
---|---|---|---|
account_addr | bits256 | 是 | 执行交易的地址的哈希部分。更多关于地址 |
lt | uint64 | 是 | 代表 逻辑时间。更多关于逻辑时间 |
prev_trans_hash | bits256 | 是 | 该账户上一个交易的哈希。 |
prev_trans_lt | uint64 | 是 | 该账户上一个交易的 lt 。 |
now | uint32 | 是 | 执行此交易时设置的 now 值。它是以秒为单位的Unix时间戳。 |
outmsg_cnt | uint15 | 是 | 执行此交易时创建的输出消息数量。 |
orig_status | AccountStatus | 是 | 执行交易前该账户的状态。 |
end_status | AccountStatus | 是 | 执行交易后该账户的状态。 |
in_msg | (Message Any) | 否 | 触发执行交易的输入消息。存储在一个引用中。 |
out_msgs | HashmapE 15 ^(Message Any) | 是 | 包含执行此交易时创建的输出消息列表的字典。 |
total_fees | CurrencyCollection | 是 | 执行此交易时收集的总费用。它包括_Toncoin_值和可能的一些额外代币。 |
state_update | HASH_UPDATE Account | 是 | HASH_UPDATE 结构。存储在一个引用中。 |
description | TransactionDescr | 是 | 交易执行过程的详细描述。存储在一个引用中。 |
AccountStatus
acc_state_uninit$00 = AccountStatus;
acc_state_frozen$01 = AccountStatus;
acc_state_active$10 = AccountStatus;
acc_state_nonexist$11 = AccountStatus;
[00]
:账户未初始化[01]
:账户被冻结[10]
:账户活跃[11]
:账户不存在
HASH_UPDATE
update_hashes#72 {X:Type} old_hash:bits256 new_hash:bits256
= HASH_UPDATE X;
| 字段 | 类型 | 描述 | | ----------- | -------
| ------------------------------------------------- |
| old_hash
| bits256 | 执行交易前账户状态的哈希。 |
| new_hash
| bits256 | 执行交易后账户状态的哈希。 |
TransactionDescr 类型
普通
这是最常见的交易类型,满足大多数开发人员的需求。此类交易恰好有一个输入消息,并且可以创建多个输出消息。
trans_ord$0000 credit_first:Bool
storage_ph:(Maybe TrStoragePhase)
credit_ph:(Maybe TrCreditPhase)
compute_ph:TrComputePhase action:(Maybe ^TrActionPhase)
aborted:Bool bounce:(Maybe TrBouncePhase)
destroyed:Bool
= TransactionDescr;