在 XRP 账本中,交易是修改账本状态的唯一方式。只有经过签名、提交并经由共识过程接受进入已验证账本版本的交易才被视为最终交易。除了普通交易外,账本规则还会生成伪交易——这类交易虽未经签名或提交,但仍需通过共识接受。即使是失败的交易也会被记录在账本中,因为它们会通过支付交易成本来调整 XRP 余额,从而防止垃圾交易。
交易的功能远不止转账。除了支持多种支付类型外,XRP 账本中的交易还可用于轮换加密密钥、管理账户设置以及在去中心化交易所中进行交易。所有交易类型均可在官方 API 文档中查看。
交易的核心标识:哈希值
每一笔签名交易都有一个唯一的 "哈希值" 作为其标识符。提交交易时,服务器会在响应中返回该哈希值;用户也可以通过 account_tx 命令在账户交易历史中查询交易记录。
交易哈希可作为“支付凭证”,因为任何人都可以通过哈希值查询交易状态,以验证其最终结果。
注意:在 XRP 账本历史中,曾出现过两笔 SetFee 伪交易因字段完全相同而导致哈希值相同的情况。后续的 SetFee 交易已添加 LedgerSequence 字段以确保唯一性。交易成本与失败处理机制
即使交易失败,系统仍会收取交易成本,这一设计基于以下原因:
- 保持交易序列号连续性,避免后续交易需重新编号;
- 防止攻击者通过大量失败交易滥用网络资源;
- 实际成本极低,除非用户频繁发送大量交易,否则不会造成实质影响。
交易签名与授权机制
在去中心化的 XRP 账本中,数字签名是交易授权的核心。只有签名后的交易才能被提交到网络并纳入已验证账本。签名后的交易不可篡改,且签名仅对特定交易有效。
交易可通过以下方式授权:
- 主私钥签名:与发送地址数学关联的主密钥可单独签名,可通过 AccountSet 交易启用或禁用;
- 常规密钥签名:通过 SetRegularKey 交易管理常规密钥;
- 多签授权:通过 SignerListSet 交易管理签名人列表。
例外情况包括:仅主私钥可禁用主公钥或永久放弃冻结权限,且账户必须保留至少一种签名方式。
交易提交与共识流程
向 XRP 账本发送交易需经过以下步骤:
- 创建 JSON 格式的未签名交易;
- 使用一种或多种签名方式授权交易;
- 将交易提交至 XRP 账本服务器(通常为
rippled实例)。若交易格式正确,服务器会将其临时应用于当前账本版本,并转发至点对点网络; - 共识过程决定哪些临时交易可纳入下一个已验证账本;
- 服务器按规范顺序应用这些交易,并共享结果;
- 若足够多的可信验证器生成相同账本,则该账本被确认为已验证,其中所有交易结果均不可更改。
未签名交易示例
以下是一个未签名 Payment 交易的 JSON 示例:
{
"TransactionType": "Payment",
"Account": "rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn",
"Destination": "ra5nK24KXen9AHvsdFTKHSANinZseWnPcX",
"Amount": {
"currency": "USD",
"value": "1",
"issuer": "rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn"
},
"Fee": "12",
"Flags": 2147483648,
"Sequence": 2
}XRP 账本仅中继和执行经发送地址(Account 字段)授权的交易。安全签名方法请参考相关指南。
签名交易与状态查询
签名后的交易会生成二进制数据块(称为“blob”),可用于网络提交。以下是通过 WebSocket API 提交签名交易的示例:
{
"id": 2,
"command": "submit",
"tx_blob": "120000240000000461D4838D7EA4C6800000000000000000000000000055534400000000004B4E9C06F24296074F7BC48F92A97916C6DC5EA968400000000000000F732103AB40A0490F9B7ED8DF29D246BF2D6269820A0EE7742ACDD457BEA7C7D0931EDB74483046022100982064CDD3F052D22788DB30B52EEA8956A32A51375E72274E417328EBA31E480221008F522C9DB4B0F31E695AA013843958A10DE8F6BA7D6759BEE645F71A7EB240BE81144B4E9C06F24296074F7BC48F92A97916C6DC5EA983143E9D4A2B8AA0780F682D136F7A56D6724EF53754"
}交易执行后,XRP 账本会添加元数据以显示交易的最终结果及其对账本状态的所有更改。用户可通过 API(如 tx 命令)查询交易状态。
注意:交易结果(包括所有元数据)只有在交易出现在已验证账本中时才最终确定。
常见问题
交易失败时为何仍需支付成本?
交易成本主要用于防止网络滥用、保持序列号连续性,且实际金额通常极低,不会对正常用户造成负担。
如何确保交易唯一性?
每笔签名交易通过哈希值唯一标识,仅历史上极少数伪交易因特殊原因重复,现有机制已完全避免该问题。
交易签名有哪些方式?
支持主私钥、常规密钥和多签授权三种方式,但主私钥权限最高,且账户必须保留至少一种签名能力。
交易最终性如何确认?
只有纳入已验证账本且经共识确认的交易才具有不可更改的最终性,可通过查询接口验证交易状态。
未签名交易包含哪些必要字段?
必填字段包括交易类型、发送账户、目标账户、金额、手续费、序列号等,具体因交易类型而异。
如何安全地签名交易?
建议使用可靠工具离线签名,避免私钥泄露,并参考官方安全签名指南规范操作流程。
通过本文,您应已掌握 XRP 账本交易的核心机制、操作流程及注意事项。合理运用这些知识,将助您更安全高效地管理链上资产与操作。