Trust Wallet通过WalletConnect连接后签名转账失效、Gas与Fee为0如何解决?
Trust Wallet WalletConnect签名交易不上链修复方案
问题根因
你遇到的返回交易中fee、msg为空,交易不上链的问题,由三个错误导致:
- Cosmos系链(THORChain、币安链)的交易结构字段不符合Trust Wallet接口规范,你使用的
messages、sendCoinsMessage、fromAddress等字段名不是钱包要求的标准字段 - 金额单位错误,THORChain的RUNE最小单位为1e8,你填写的
0.01、1为主网单位,钱包无法识别会自动置空对应字段 - 调用了WalletConnect的私有方法
_formatRequest、_sendCallRequest,不符合官方调用规范,参数会被错误解析
具体修复步骤
1. 修正交易结构与单位
const network = 931; // THORChain(RUNE) 链ID // 单位转换规则:1 RUNE = 100000000 最小单位,所有金额需要转成最小单位的字符串 const tx = { fee: { amount: [ { denom: "rune", amount: "1000000" // 对应0.01 RUNE手续费 } ], gas: "2000000" }, memo:"test", msg: [ { type: "cosmos-sdk/MsgSend", value: { from_address: 'thor1mkda02h8hsevykxwnnxs93tgtvgtz5djxteat0', to_address: "thor1mkda02h8hsevykxwnnxs93tgtvgtz5djxteat0", amount: [ { denom: "rune", amount: "100000000" // 对应转账1 RUNE } ] } } ] };
2. 修正请求调用逻辑
connector.sendCustomRequest({ method: 'trust_signTransaction', params: [ { network: network, transaction: tx // 直接传入交易对象,不需要JSON序列化 } ] }).then(signedTx => { console.log("签名成功:", signedTx); // 注意:trust_signTransaction仅返回签名后的交易,不会自动上链 // 需要手动调用THORChain RPC接口的broadcast_tx_sync方法广播交易 }).catch(err => { console.error("签名失败:", err); });
3. 其他适配说明
- 若使用
trust_sendTransaction方法,钱包会自动完成广播,无需手动调用RPC,交易结构同样要符合上述规范 - 币安链适配仅需修改对应chain ID、denom、msg type字段即可,其余逻辑一致
内容的提问来源于stack exchange,提问作者user2950593
相关产品推荐
相关产品推荐

