sendRawTransaction results in non-processable TXs

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 get queued forever:
> txpool.status
{
  pending: 0,
  queued: 5
}
Also sending address is rich enough to pay off the gas:
> eth.getBalance("89b44e4d3c81ede05d0f5de8d1a68f754d73d997")
20000000000000000020

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 is non-processable?
I'm using geth on my own blockchain so I can modify the source code if that helps.

Comments

Sign In or Register to comment.