ParityのPOAプライベートネット建ててtruffleを使う時はbyzantium対応をお忘れなく

Tuesday, July 23, 2019

以下のtutorialに従ってparityのpoaプライベートネットを構築してから、

truffleでコントラクトをデプロイしようとしたら以下のエラーに遭遇、

Error: Transaction ran out of gas. Please provide more gas.

とか

The contract code couldn't be stored, please check your gas limit.

など。

どれもtruffleで開発をしてると馴染みがある感じのエラーなので、configでgasの設定いじったりdeploy時にgasをちゃんと指定すれば治るかなーと思ったのですが、全然治らず。

試しにtruffle consoleで普通のtxを発行してみると、tx自体は発行され、送金も正常に行われるものの、なぜか

Error: Transaction has been reverted by the EVM:

というエラーだけが吐かれる。実際にはrevertされてないのに奇妙である。

試しにcurlで素のrpcを叩いてreceiptを確認してみると、

{
  "jsonrpc": "2.0",
  "result": {
    "blockHash": "0x9664e8fe7be2ec3579b0b17b4ccd83fc0054adf6ca4ee227f794561e225a289f",
    "blockNumber": "0x12",
    "contractAddress": null,
    "cumulativeGasUsed": "0x5208",
    "from": "0x004ec07d2329997267ec62b4166639513386f32e",
    "gasUsed": "0x5208",
    "logs": [],
    "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
    "root": null,
    "status": null, <--- nullになっとる!!!!!
    "to": "0xa43e00a4d376d14117e7c97bfb57b54409f9b2b4",
    "transactionHash": "0x60b0ea2f7fff204391119ecf68620b83df4be67a2add3660ef00e056b758ccbf",
    "transactionIndex": "0x0"
  },
  "id": 1
}

statusがnullになっていた。これが原因でtruffle側でtxの結果がfalseと判断されerrorが出ていたのだろう。

これってもしかしてparity特有の問題?と疑ったりもしたのだが、以下のpageを発見。

どうやらparityのnodeを建てる時のchain specの設定でbyzantiumへの対応ができていなかったらしい。(statusはbyzantiumから導入されたのでnullになっていた)

ということで以下のissueに倣い、chain specにparamsとaccountを書き足してnodeを起動したら、何事もなく上手くいった。

programmingtruffleethereumparitypoaprivatenetsmartcontract

Seita Uchimura

Software Engineer in Tokyo

ディレクトリ移動/ファイル選択を爆速にするTerminalツール

browserify+babelでasync/awaitを使用した快適p5.js開発環境構築