Tron Nile测试网Shielded合约USDT转账报错求助
解决Tron Nile测试网Shielded TRC20转账的
BigInteger: modulus not positive错误 核心错误原因
你传入的shielded_TRC20_contract_address是普通USDT合约地址,但该接口需要使用Shielded TRC20包装合约的地址。普通TRC20合约不支持零知识证明相关的密码学运算,直接调用会触发算术异常。
分步解决指引
- 替换正确的合约地址:在Nile测试网,使用官方提供的Shielded TRC20包装合约地址,不要使用原生USDT合约地址。
- 修正
from_amount参数:USDT是6位小数,若要转入500 USDT,from_amount需填写500000000(即500 * 10^6),确保该值与你透明地址的USDT余额匹配,且不小于目标转入金额。 - 验证
rcm参数有效性:确认rcm是通过wallet/getrcm接口生成的32字节十六进制字符串,无格式或长度错误。 - 核对
ovk参数:检查ovk是否是wallet/getexpandedspendingkey接口返回的完整64字符(32字节)值,格式无误。 - 补充授权操作:调用该接口前,需先通过普通USDT合约的
approve方法,给Shielded合约授权足够的USDT额度,否则会触发余额不足或授权失败的问题。
修正后的参数示例
{ "ovk": "72493d42a87227481b90c7174006d388b263b64a8b94ea55dbb78d59f5e45fa3", "from_amount": "500000000", "shielded_receives": { "note": { "value": 500000000, "payment_address": "ztron17lk8dsfjjmpr96j3dwlz0jkwe99ejmpulrldz498aeguma477r3u48w4prnthjs04utxk3a3a40", "rcm": "68ef5a158f06734984d8e1500da86988caa6798953281adc1984808a67192c02" } }, "shielded_TRC20_contract_address": "【替换为Nile测试网Shielded USDT合约地址】", "visible": true }
内容的提问来源于stack exchange,提问作者Mosi
相关产品推荐
相关产品推荐

