「SolidityとEthereumによる実践スマートコントラクト開発」の沼1
3.1.1 Parityのインストール(p34)
WSL2 Ubuntu20.04 LTSにParityをインストールしたが正常な応答が来ない。
username@LAPTOP-XXXXXXX:~$ bash <(curl https://get.parity.io -L)
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0curl: (6) Could not resolve host: get.parity.io
数日間格闘するうちに違和感を覚え、teratailで簡単な内容をまとめて質問した。
すると、どうやらParityのインストールコマンドは今は対応不可能とのことだった。
いまはOpenEthereumが使える認識。
ちなみに、MetaMask, Node.js, Truffle, Ganacheは正常にインストールおよび設定が完了した。
本書では、Goerliネットワークを扱うことを想定しており、このネットワークはGethやParityなどのイーサリアムクライアントに対応できるよう設計されている。
どちらのイーサリアムクライアントを扱うかだが、こちらの記事によるとOpenethereum/ParityでGoerliを起動しようとするとmigration関連のエラーが吐かれるとのこと。
GethでGoerliネットワークに接続する選択がうまくいくようなので、その方針で進めていく。
Geth(Go Ethereum)を使って、プライベートネットワークを立てていく。
環境
WSL2 Ubuntu20.04 LTS
Gethのインストール
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo apt-get update
sudo apt-get install ethereum
プライベートネットワーク管理ディレクトリの作成
mkdir geth
cd geth
genesis.jsonファイルの作成
genesis.json
とは、ブロックチェーンXの初期ブロックX[0]を作成するための情報を格納したもの。
touch genesis.json
genesis.jsonファイルの編集
vi genesis.json
iコマンドでINSERTモードに変換して以下の内容をCtrl-Vでペースト
{
"config": {
"chainId": xx,
"homesteadBlock": 0,
"eip150Block": 0,
"eip155Block": 0,
"eip158Block": 0,
"byzantiumBlock": 0,
"constantinopleBlock": 0,
"petersburgBlock": 0
},
"alloc": {},
"coinbase": "0x0000000000000000000000000000000000000000",
"difficulty": "0x20000",
"extraData": "",
"gasLimit": "0x2fefd8",
"nonce": "0x0000000000000042",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp": "0x00"
}
EscキーでINSERTモードを終了し、:wqキーで保存して退出。
※上記の流れはLinuxコマンドでも可能だが、code .
でVSCodeを開いて編集してもよい。
Gethの初期化と起動
geth --datadir ./ init ./genesis.json
geth --networkid 10 --datadir . 2>> ./node.log console
!アカウント作成前にCtrl-Zで退出してはいけない。もし退出した場合の復帰方法を私は知らないので、力業で申し訳ないがgethフォルダを削除して最初からやり直すべきだ!
Gethアカウントの作成
Gethコンソールで以下のコマンドを叩き、パスワードを2回入力する。
> personal.newAccount()
Passphrase: XXXXX
Repeat passphrase: XXXXX
すると、アカウントアドレスが発行されます。
”xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”
Gethの停止
exitコマンド
で停止
Gethの再起動
geth --networkid "10" --nodiscover console
exitコマンド
で退出します。
再起動の方法はいくつかあるとのこと。