创建TRON地址并激活交易时遭遇无效十六进制字符串错误求助
TRON交易创建报错「INVALID hex String」的解决方法
你遇到的INVALID hex String错误,核心原因是传给TRON节点API的地址十六进制格式不符合要求,问题出在ConvertBase58CheckToHex函数的实现上。
正确的TRON地址转Hex规则
TRON Base58地址转API认可的十六进制字符串,必须遵循以下步骤:
- 解码Base58地址,得到25字节数组:1字节前缀(0x41) + 20字节哈希 + 4字节校验和
- 切掉末尾4字节的校验和,保留前21字节(前缀+哈希部分)
- 将这21字节转换为不带0x前缀的十六进制字符串
替换为正确的转换函数
把你的ConvertBase58CheckToHex函数替换为以下实现:
import ( "encoding/hex" "github.com/btcsuite/btcutil/base58" "fmt" ) func ConvertBase58CheckToHex(address string) (string, error) { decoded := base58.Decode(address) if len(decoded) != 25 { return "", fmt.Errorf("无效的TRON地址") } // 移除末尾4位校验和,保留前缀+哈希部分 rawAddrBytes := decoded[:21] return hex.EncodeToString(rawAddrBytes), nil }
额外检查项
- 确认传入的
fromAddress和toAddress是合法的TRON Base58地址(以T开头) amount参数需按SUN单位传入:0.1 TRX等价于100000 SUN- 转换后的hex地址不能带0x前缀,示例正确格式:
41a57f570a0e6578b42c1f0c19be16d73b7c018162
内容的提问来源于stack exchange,提问作者Joel Swakise TheDancer
相关产品推荐
相关产品推荐

