1
votes

I attempted to send raw TXs via eth.sendRawTransaction API but get stuck. I'm using EthereumJS to generate and sign TXs, and indeed, I can submit TXs through eth.sendRawTransactin, but the TXs always result in queued (non-processable, per geth doc).

I called eth.sendRawTransactin from a geth console, and it returns a hash as usual. I can get transaction details by that hash:

> 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
}

But the TXs are queued forever:

> txpool.status
{
  pending: 0,
  queued: 5
}

Also sending address is rich enough to pay off the gas:

> eth.getBalance("89b44e4d3c81ede05d0f5de8d1a68f754d73d997")
20000000000000000020

To compare, this is a valid transaction (created and sent by some client)

> 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
}

Since geth can parse them, the format of my TXs has to be correct. I guess the only thing left is the signature. But I'm pretty sure the TX has been properly signed.

Is there a way to get more information about why a TX can't be processed? I'm using geth on my own blockchain so I can modify the source code if that helps.

1

1 Answers

1
votes

I once encountered the same problem, and finally found that the key was nonce.

You may like to check if your nonce is continuous and based on the latest one of your address.

Hope it helps.