アプリケーション開発ポータルサイト
ServerNote.NET
Amazon.co.jpでPC関連商品タイムセール開催中!
カテゴリー【仮想通貨Ubuntu
【イーサリアム】Error: invalid opcode: SHRの対処法
POSTED BY
2023-03-22

自分で作成したスマートコントラクトのコードを呼ぼうとしたら出たエラー。

https://ethereum.stackexchange.com/questions/87245/error-returned-error-invalid-opcode-shr

によると、ブロックチェーン新規作成時の初期化ブロックファイルgenesis.jsonを修正しないとだめとのこと。つまり初期化から完全にやり直しである。

genesis.jsonのconfigブロックに以下2設定が必要とある。

"byzantiumBlock": 0,
"constantinopleBlock": 0

公式に記載されているフルサンプルの一例が以下。

JSONgenesis.jsonGitHub Source
{
  "config": {
    "chainId": 15,
    "homesteadBlock": 0,
    "eip150Block": 0,
    "eip155Block": 0,
    "eip158Block": 0,
    "byzantiumBlock": 0,
    "constantinopleBlock": 0,
    "petersburgBlock": 0,
    "istanbulBlock": 0,
    "berlinBlock": 0
  },
  "nonce": "0x0000000000000042",
  "timestamp": "0x0",
  "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "extraData": "",
  "gasLimit": "0x8000000",
  "difficulty": "0x4000",
  "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "coinbase": "0x3333333333333333333333333333333333333333",
  "alloc": {}
}

今度は正しくコントラクトサンプルが動作した。

var myContract = contract.new({ from: eth.accounts[0], data: bin})
undefined
var cnt = eth.contract(myContract.abi).at(myContract.address);
undefined
cnt.get.call()
0
cnt.set.sendTransaction(8, {from: eth.accounts[0]})
"0x477b1345dc072ec1efd93c15444fc2b8b9437d73f48a71ece436b87e6e394340"
myContract.get.call()
8
cnt.get.call()
8
※本記事は当サイト管理人の個人的な備忘録です。本記事の参照又は付随ソースコード利用後にいかなる損害が発生しても当サイト及び管理人は一切責任を負いません。
※本記事内容の無断転載を禁じます。
【WEBMASTER/管理人】
自営業プログラマーです。お仕事ください!
ご連絡は以下アドレスまでお願いします★

☆ServerNote.NETショッピング↓
ShoppingNote / Amazon.co.jp
☆お仲間ブログ↓
一人社長の不動産業務日誌
【キーワード検索】