我试图通过eth.sendRawTransaction接口发送原始TXs,但是被卡住了。我正在使用EthereumJS生成和签署TXs,实际上,我可以通过eth.sendRawTransactin提交TXs,但TXs总是导致排队(根据geth文档,是不可处理的)。
我从geth控制台调用了eth.sendRawTransactin,它像往常一样返回一个散列。我可以通过该散列获得交易详细信息:
> eth.getTransaction(hash)
{
blockHash: null,
blockNumber: null,
from: "0x89b44e4d3c81ede05d0f5de8d1a68f754d73d997",
gas: 90000,
gasPrice: 50000000000,
hash: "0x69b4a0768e72c3a679a1ae6fb490a831509c3c0a04674b646362d0a3d74689a4",
input: "0x",
nonce: 10,
to: "0xb7e13de69228c37cdff506ea474f31343af33c05",
transactionIndex: null,
value: 2000000
}但TXs将永远排队:
> txpool.status
{
pending: 0,
queued: 5
}另外,发送地址足够丰富,足以还清燃油费:
> eth.getBalance("89b44e4d3c81ede05d0f5de8d1a68f754d73d997")
20000000000000000020相比之下,这是一个有效的事务(由某个客户端创建和发送)
> eth.getTransactionFromBlock(11)
{
blockHash: "0x41919469d7ed9232adbcacc820e61ad508b30eb5fc4750d3cebd748c22b110b8",
blockNumber: 11,
from: "0xb7e13de69228c37cdff506ea474f31343af33c05",
gas: 90000,
gasPrice: 50000000000,
hash: "0xa4d4a22aa1fed291a7da00e24304f7093b4fc09b1c6a18692e4240d6d913d674",
input: "0x",
nonce: 4,
to: "0x89b44e4d3c81ede05d0f5de8d1a68f754d73d997",
transactionIndex: 0,
value: 20000000000000000000
}因为geth可以解析它们,所以我的TXs的格式必须是正确的。我想只剩下签名了。但我很确定TX已经被正确地签署了。
有没有办法获得更多关于为什么TX不能被处理的信息?我在自己的区块链上使用geth,所以如果有帮助,我可以修改源代码。
发布于 2016-11-14 17:55:02
我曾经遇到过同样的问题,最终发现关键是nonce。
你可能想检查你的随机数是不是连续的,并且是基于你最新的地址。
希望能有所帮助。
https://stackoverflow.com/questions/35159241
复制相似问题