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

Geth连接Rinkeby测试网调用eth.getTransaction报错求助

解决Geth Rinkeby测试网中eth.getTransaction()的类型不匹配错误

这个错误的核心原因是你使用了--syncmode fast启动Geth,在快速同步模式下,eth.getBlock()返回的transactions数组元素是数值类型的交易哈希(而非字符串格式),而eth.getTransaction()要求传入的是带0x前缀的十六进制字符串哈希,类型不匹配就触发了这个Unmarshal错误。

快速修复方法

你只需要把取出的交易哈希转换成符合要求的字符串格式即可,在Geth控制台里可以这样操作:

// 分步写法更清晰
const targetBlock = eth.getBlock(183000);
const txHash = "0x" + targetBlock.transactions[0].toString(16);
eth.getTransaction(txHash);

或者用更简洁的一行命令:

eth.getTransaction("0x" + eth.getBlock(183000).transactions[0].toString(16))

为什么换区块/重启没用?

这是快速同步模式的设计特性:为了加快同步速度,Geth在fast模式下会用更紧凑的数值格式存储交易哈希,而非直接存储字符串。这个特性不会因为更换区块或重启控制台改变,除非你切换同步模式。

切换到全同步模式(可选)

如果你希望长期使用你最初的写法,可以重新启动Geth并切换到全同步模式:

geth --rinkeby --syncmode full console

注意:全同步需要下载完整的区块数据,耗时会比快速同步长很多,根据你的网络情况可能需要几个小时甚至更久。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:35:14