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

调用eth_sendTransaction返回-32000 unknown account错误如何解决?

问题根因

你调用了错误的RPC接口,同时参数构造也不符合规范:

  • eth_sendTransaction 是节点托管账户场景专用的接口,要求参数必须传from字段指定节点上已解锁的账户地址,节点会调用自身托管的私钥完成交易签名,你只传了data字段没有指定from,节点找不到对应签名用的账户,才会返回unknown account错误。
  • 你代码里传入的是已经签名完成的原始交易(rawTransaction),这种场景应该使用eth_sendRawTransaction接口,不需要传from字段,直接把签名后的十六进制原始交易作为唯一参数传入即可。
代码修复方案

调整后的可运行代码如下:

func ExecuteSignedTransaction(rawTransaction string) {
    var hash web3.Hash
    // 替换为正确的接口,直接传入签名后的原始交易
    err := Web3HTTPClient.Call("eth_sendRawTransaction", &hash, rawTransaction)

    if err != nil{
        fmt.Println(err)
        os.Exit(1)
     }

    fmt.Println("Sent tx hash:", hash)
}
额外排查点

如果修改接口后仍有报错,可以按以下顺序核对:

  • 确认rawTransaction是符合规范的十六进制字符串,且带有0x前缀
  • 确认签名交易用的私钥对应地址在链上有足够余额支付gas费用
  • 确认交易的nonce值和from地址链上最新的nonce值匹配,没有重复或跳号

补充说明:如果你确实要使用节点托管账户的模式调用eth_sendTransaction,需要在参数里补充from、to、gas、gasPrice、value等必填字段,不需要传入已签名的raw data,节点会自行完成交易签名。但该模式安全性极低,生产环境不建议使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 13:54:07