[求助]go-ethereum钱包rpc接口eth_sendRawTransaction超时问题
发布于 4 个月前 作者 kazaff 30760 次浏览 来自 以太坊

我自己搭建的go-ethereum钱包,调用ethsendRawTransaction来创建交易时,频繁遇到超时的问题。 不知道会是什么问题呢?有人入这个坑么?

13 回复

你提供的信息太少,超时是指哪方面超时?你预计的结果应该是什么?实际结果是什么等等?

@manxiaqu 谢回

应该立即返回tx hash,但请求直接夯住了,一直到我调用端超时断开连接。

@kazaff 首先需要检查你的rpc连接有没有问题,是只有调用ethsendRawTransaction方法有问题还是所有方法有问题,如果是所有的都有问题,基本就是rpc连接的问题。如果只有ethsendRawTransaction方法有问题,你可以查看日志,rpc服务器是否收到了相关的请求及详细的信息。

@manxiaqu
事实上是只有这个方法出现问题,你指的日志,是钱包配置里哪里设置的么?可否说明一下?~谢啦 发起http请求的是golang下的resty库,它只是封装了一下golang的http库。 超时后会得到标准timeout异常消息:

golang net/http request canceled (client.timeout exceeded while awaiting headers)

而且我已经设置的等待时间足够长了(30s)

从源码上看,钱包程序在接受到交易请求后会直接存储在本地的交易池中后直接返回,这个过程里想不到有哪些地方会耗时(除非是交易池的锁阻塞,但为什么呢?)

可能是你的rpc 接口根本不通,你可以先用curl试下

@路人-戊 是通的~ 实际上也不是每次都会超时,超时的情况多而已~ 前段时间一切都正常,是突然开始的~

@kazaff 你用的是ethereumwallet钱包是吗? 你可以单独启动你的geth节点,输出日志,默认情况下如果正确处理收到交易后,会打印出相关信息,你可以把日志级别调为debug或者更低(默认为info)来查看详细的信息。

NFO [07-02|10:37:15] Submitted transaction                    fullhash=0xd5d7996458111bdeaf52f1747af72e226573095346d646b3897082e59d7edc1a recipient=0xa443ce75C231EB7A64f29DFdE87BA17F0f98Ab7A

// 输出debug级别的日志
geth --verbosity 4 --rpc
--verbosity value         Logging verbosity: 0=silent, 1=error, 2=warn, 3=info, 4=debug, 5=detail (default: 3)

@kazaff 你的节点在哪?

@manxiaqu 谢谢,我试一下。

@路人-戊 你指的节点是?我自己安装的钱包,你是问配置的同步节点吗?

@kazaff 如果你的节点和你发起请求的程序在同一台机器上,那应该不是网络的原因

@路人-戊 对的,确实在同一个机器上,不过用的是外网ip,但我有查看网络数据包,利用率很低的。。

@kazaff 网络正常也会有这种情况,所以你得加上重试机制。

@maiiz 谢谢,确实已经加了重试。但是好奇这种问题的原因~

回到顶部