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

Cardano-wallet提交已签名交易报malformed_tx_payload问题咨询

已签名交易提交至cardano-wallet代理端点的正确实现方式

核心问题根源

你之前所有操作触发malformed_tx_payload错误的核心原因,是对cborHex字段的转码逻辑完全错误:

  • cborHex本身是十六进制编码的原始已签名交易CBOR字节流的文本表示,不是可以直接作为二进制内容上传的字符串,也不是普通的可直接转base64的文本内容。
  • 之前所有转码操作都跳过了「把十六进制字符串解码为原始二进制字节」这一步,直接把cborHex的文本内容当二进制源处理,导致最终发送的字节流和实际的交易结构完全不匹配,服务端自然无法解析出合法的CBOR交易结构。

两种受支持的请求格式的正确构造方法

格式一:原生二进制格式(推荐,兼容性最好)

端点原生支持application/octet-stream格式的请求,不需要嵌套任何JSON结构,直接按以下步骤操作:

  1. 把拿到的cborHex十六进制字符串,按十六进制编码规则解码为原始交易二进制Buffer,必须显式指定hex解码规则,不能用默认的utf8编码:
    const rawSignedTxBinary = Buffer.from(txBody.cborHex, 'hex')
    
  2. 直接把这个二进制Buffer作为请求体发送,设置对应请求头即可,不需要转base64、不需要套JSON:
    const submitRes = await fetch('https://localhost:8090/v2/proxy/transactions', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/octet-stream'
      },
      body: rawSignedTxBinary
    })
    

格式二:JSON格式请求

如果要走application/json的请求通道,需要按照接口对ByteString类型的序列化规则构造payload:

  1. 同样第一步先把cborHex按hex解码为原始交易二进制Buffer:
    const rawSignedTxBinary = Buffer.from(txBody.cborHex, 'hex')
    
  2. 把解码得到的原始二进制Buffer转为base64编码字符串——注意这里的base64源是实际的交易二进制,不是cborHex文本、也不是整个txBody结构的序列化结果:
    const payloadBase64 = rawSignedTxBinary.toString('base64')
    
  3. 构造对应的JSON请求体,设置JSON请求头发送即可:
    const submitRes = await fetch('https://localhost:8090/v2/proxy/transactions', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        payload: payloadBase64
      })
    })
    

常见错误操作说明

以下操作都会触发malformed_tx_payload错误,需要完全规避:

  • 直接把cborHex字符串原文作为请求体发送:发送的内容是十六进制字符的ASCII编码,和实际的交易二进制完全不匹配
  • 未指定hex解码规则,直接用Buffer.from(cborHex)转码后转base64:本质和上一条错误一样,转出来的字节流是cborHex文本本身的编码,不是实际的交易CBOR字节
  • 把整个cardano-cli返回的txBody JSON结构序列化后转base64上传:服务端需要的是纯交易的CBOR内容,不是带类型、描述字段的CLI输出结构

小校验技巧:在发送请求前,可以把解码得到的rawSignedTxBinary通过CBOR解码库解析,如果能正常读出交易的输入、输出、附属签名等结构,就说明字节流构造正确,不会再触发格式校验错误。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.25 12:36:04