イーサリアムの局所ネットワークの構築


日付: 2021-11-21 閲覧数: 453



イーサリアムの相場上昇とともに、イーサリアム・コミュニティが提案したプロトコルも注目を集めているのではないかと思います。そのため、イーサリアムのブロックチェーンを管理するネットワークの構築方法とその他の仮想通貨関連の知識について知るべきと最近感じているようになりました。今回はイーサリアムの局所ネットワークをどういうふうに導入すればいいのかについて解りやすく説明したいと思います。


局所ネットワーク(テストネット)はどういうものなのかというと、イーサリアムの現行のネットワークと同様なネットワークを自分のパソコンや社内サーバで起動し、イーサリアムのプロトコルが提供する環境を試したり、スマートコントラクトを展開したり、ブロックチェーン技術に基づく仮想通貨を開発したかったりしたい時に非常に役立つ仕組みのことを指します。イーサリアムのテスト環境を導入する第一のステップはgethのダウンロードです。そのためにhttps://geth.ethereum.org/downloads/をアクセスしましょう。今回のUbuntu上のインストールになります。MacとWindowsの方も利用できるらしいですが、試したことがまだありません。


まずは念の為にUbuntuを更新しましょう:


$ sudo apt-get update && sudo apt-get install build-essential -y

次にgethを解凍し、これからgethのバイナリを使用しましょう。次のステップでブロックチェーンの初期化を行います。そのためにジェネシスブロックを作成する必要があります。換言すれば、ブロック0を作成し、genesis.jsonに次の内容を保存します。


{
"nonce": "0x0000000000000042",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"difficulty": "0x40000",
"alloc": {},
"coinbase": "0x3333333333333333333333333333333333333333",
"timestamp": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "0x",
"gasLimit": "0x8000000",
"config": {}
}


局所ネットワークの各ノードがジェネシスブロックを参照し、後続するブロックの同期がこのブロックから始まるのです。次に2つのノードを初期化しましょう:


$ ./geth --datadir node1 init genesis.json

同様にノード2を初期化します:


$ ./geth --datadir node2 init genesis.json


初期化が完了すると、ノードを起動します。ノード1をこのように:


$ ./geth --datadir node1 --networkid 1234 --ipcpath node1/geth.ipc --rpc.allow-unprotected-txs console

ネットワークの番号は適当でいいです。今回は1234にしました。IPC通信の経路も指定し、"allow-unprotected-txs"を有効にするとイーサリアムの送金を簡単に行なえます。端末機能(console)もオンにしましょう。



ノード1が起動するとノード2も起動します。次のコマンドを使います:


$ ./geth --datadir node2 --port 30304 --nodiscover --ipcpath node2/geth.ipc --networkid 1234 --nat=extip:192.168.0.125 console

ここで注意を要する点がいくつかあります。ノード2に異なるポート番号を使用することとネットワーク番号が一致することと局所IPを使うことが重要です。間違えるとノードの接続がおかしくなってしまうからです。


すると、2つのノードが起動します。次にノード2の端末でadmin.nodeInfoコマンドを使ってenode情報をコピーしましょう。私の場合は、このようになりました:


enode: "enode://48aeef026e3111463c8236a0777d6827b9330009937fd7bc2276c61c6d265b018f279f59a37a49f1c5ee6d3cdfebd9ad590485bcef87944d3e3e15bac49ccbff@10.138.189.226:30304?discport=0"

次にこのenodeアドレスを使って、ノード1との接続を確立しましょう。次のコマンドを使います:


admin.addPeer("enode://48aeef026e3111463c8236a0777d6827b9330009937fd7bc2276c61c6d265b018f279f59a37a49f1c5ee6d3cdfebd9ad590485bcef87944d3e3e15bac49ccbff@10.138.189.226:30304?discport=0")

当然ですが、皆自分のenodeアドレスを使用しましょう。新しい電子ウォレットを作成するには次のコマンドを使います:


personal.newAccount()

送金する前に電子ウォレットの暗証番号を入力する必要があります:


personal.unlockAccount('')

unlockAccount('')の引数として当該電子ウォレットのアドレスを使いましょう。テスト環境でイーサリアムを送金したい場合、次の関数を使用します:


eth.sendTransaction({from:'', to:'', value: web3.toWei(0.05, "ether"), gas:21000});

局所ブロックチェーンを展開させるには、採掘用関数を使用します:


miner.start()


マイナーを次のコマンドで終了します:


miner.stop()

上記の内容についてお聞きしたいことがあればインスタグラムでご質問をお待ちしております



コメント (0)


記事特選