LoginSignup
3
2

More than 5 years have passed since last update.

トランザクションの nonce は from アカウントの sequence である

Posted at

問題

web3.jssendSignedTransaction を使って同じアカウントから連続で複数回他のアカウントに送金しようとしたら、2目以降のトランザクションはどうしてもエラーでした。
Error: Returned error: replacement transaction underpriced

結論

  • sendSignedTransaction の場合、トランザクションに nonce 項目を設定しないと行けない
  • その値は、送金するアカウントごとのシーケンスでないと行けない
    • シーケンスという意味は、ユニークかつ連続 の数値でないと行けないこと

対応方法

  • web3.eth.getTransactionCount(from)で、fromアカウントのトランザクション数を取得して、そのcountをnonceとして設定すれば、順番通りのシーケンスになる

課題

  • 2回目以降の送信は、前の処理を完了して(ブロックに書き込まれた)からじゃないと、countが1回目の値と同じになってしまうので、2回目の送信は、1回目の送信がチェーンに書き込まれるまで待つ必要がある。
  • 1つのアカウントからの送金処理は並列にできないように見えるので、少しがっかりしました。

参考リンク

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2