1

API経由で未加工の TX を送信しようとしましeth.sendRawTransactionたが、行き詰まりました。私は EthereumJS を使用して TX を生成および署名しています。実際、TX を 経由eth.sendRawTransactinで送信できますが、TX は常にキューに入れられます (geth doc ごとに処理できません)。

eth.sendRawTransactingeth コンソールから呼び出すと、通常どおりハッシュが返されます。そのハッシュでトランザクションの詳細を取得できます。

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

ただし、TX は永久にキューに入れられます。

> 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 はそれらを解析できるため、TX の形式は正しくなければなりません。残っているのはサインだけだと思います。しかし、TXが適切に署名されていると確信しています。

TX を処理できない理由に関する詳細情報を取得する方法はありますか? 私はgeth自分のブロックチェーンで使用しているので、ソースコードを変更することができます。

4

1 に答える 1

1

私はかつて同じ問題に遭遇し、最終的にキーがnonce.

ナンスが継続的で、アドレスの最新のものに基づいているかどうかを確認したい場合があります。

それが役に立てば幸い。

于 2016-11-14T09:55:02.470 に答える