You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript版BitClout交易签名转Golang后运行异常,如何排查错误?

你的Go代码存在以下核心错误:

  • 变量名笔误
    解码交易十六进制串时,你写的hex.DecodeString(hexString)中hexString是不存在的变量,应该传入参数transactionHex,否则解码得到的交易字节完全错误。
  • 交易哈希处理错误
    TS版本中直接使用双重SHA256得到的二进制字节数组做签名,而你将哈希结果格式化为十六进制字符串后,再将字符串转为字节数组传入签名方法,相当于用哈希的ASCII表示做签名,和原始逻辑完全不符。正确写法是直接取双重SHA256的结果字节:
    first := sha256.Sum256(transactionBytes)
    transactionHash := sha256.Sum256(first[:])
    // 签名时直接传transactionHash[:]即可
    signature, err := privateKey.Sign(transactionHash[:])
    
  • 签名长度编码错误
    TS版本中用的uvarint64ToBuf是无符号变长整数编码,不是你写的固定8字节小端编码。你用binary.LittleEndian.PutUint64生成的长度字节和原始逻辑不匹配,正确写法是用Go标准库的binary.PutUvarint处理:
    signatureLength := make([]byte, binary.MaxVarintLen64)
    n := binary.PutUvarint(signatureLength, uint64(len(signatureBytes)))
    // 只取实际用到的变长编码字节
    signatureLength = signatureLength[:n]
    
  • 错误未处理
    你忽略了hex.DecodeString、privateKey.Sign等方法的错误返回,调试阶段建议先加上错误判断,避免其他隐性问题。

内容的提问来源于stack exchange,提问作者Andrew Arrow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 15:45:10