XRPL发行带转账手续费的可替代代币触发tecPATH_PARTIAL错误如何解决
报错原因
你遇到的tecPATH_PARTIAL报错完全是transfer_rate配置的规则导致的,核心逻辑如下:
- 你设置的
transfer_rate=1020000000对应2%的跨账户转账手续费,该规则仅在两个非发行方账户之间转账时生效:发行方(你的冷地址)转出代币不收取手续费,普通持有账户互相转账时,发送方需要额外支付转账金额2%的费用给发行方。 - Payment交易里的
amount字段是接收方实际到账的金额,不是发送方的总消耗金额。你现在要给hot_wallet_2转2000 FOO,发送方hot_wallet实际需要消耗的总代币量为2000 * 1.02 = 2040FOO。 - 涉及转账手续费的交易,必须显式指定
send_max参数声明你最多愿意消耗的代币上限,XRPL节点无法自动计算手续费覆盖金额,就会返回路径不完整的报错。
未设置transfer_rate时不需要额外手续费,send_max默认等于amount值,所以交易可以正常执行。
解决方案
按照以下两步修改即可:
- 先确认你的
hot_wallet账户中FOO代币余额≥2040 - 修改Payment交易构造逻辑,新增
send_max参数,示例代码如下:
issue_quantity = "2000" # 计算包含手续费的总消耗金额 2000 * 1.02 = 2040 send_max_quantity = "2040" send_token_tx = xrpl.models.transactions.Payment( account=hot_wallet.classic_address, destination=hot_wallet_2.classic_address, amount=xrpl.models.amounts.issued_currency_amount.IssuedCurrencyAmount( currency=currency_code, issuer=cold_wallet.classic_address, value=issue_quantity ), # 新增send_max参数,声明最多愿意消耗的代币量 send_max=xrpl.models.amounts.issued_currency_amount.IssuedCurrencyAmount( currency=currency_code, issuer=cold_wallet.classic_address, value=send_max_quantity ) )
其他逻辑保持不变,重新提交交易即可正常完成转账。
内容的提问来源于stack exchange,提问作者simbr
相关产品推荐
相关产品推荐

