kharukaのブログ~お金と技術とキャリア~

Edu Fin~金融×教育~若いうちからお金について学ぶってだいじ!学んだテクノロジーはみんなの財産。過去、現在、将来の人生についてのブログ

はじめての Ethereum Part1 ノード構築編(2019年2月16日執筆)

エンジニアスクールFLOC

環境情報

OS

OS バージョン 備考
macOS Mojava 10.14.2 ホストOS
Oracle VM VirtualBox 5.2.26
Ubuntu 16.04.4LTS ゲストOS

環境構築

▼環境構築の仕方はこちらなどをご参考に。

はじめてのCounterpartyノード構築Part1(2018年9月29日更新) - kharukaのブログ~お金と技術とキャリア~

Geth(Go-Ethereum)のダウンロード

sudo apt update

wget https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.8.22-7fa3509e.tar.gz

md5sum geth-linux-amd64-1.8.22-7fa3509e.tar.gz

 -- Checksum (MD5) --
 -- a02321a1ee89c330eb8e87b694254dbb  geth-linux-amd64-1.8.22-7fa3509e.tar.gz --

Geth(Go-Ethereum)のインストール

tar -zxvf geth-linux-amd64-1.8.22-7fa3509e.tar.gz

Operating a private network

--datadir用のディレクトリを作成します。

mkdir geth-linux-amd64-1.8.22-7fa3509e/private_network

the private genesis stateを定義

"chainId": 5と後述するインタラクティブJavaScript環境を起動する際のgethオプション--networkid 5の値を等しくすることをお忘れなく。

vi geth-linux-amd64-1.8.22-7fa3509e/private_network/genesis.json
 -- genesis.json --
{
  "config": {
        "chainId": 5,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    },
  "alloc"      : {},
  "coinbase"   : "0x0000000000000000000000000000000000000000",
  "difficulty" : "0x20000",
  "extraData"  : "",
  "gasLimit"   : "0x2fefd8",
  "nonce"      : "0x0000000000000042",
  "mixhash"    : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "timestamp"  : "0x00"
}
 -- genesis.json --

Gethノードの初期化

すべてのブロックチェーンパラメータが正しく設定されるように、Gethノードを起動する前にすべてのGethノードを初期化します。

geth-linux-amd64-1.8.22-7fa3509e/geth  --datadir /home/ubuntu/geth-linux-amd64-1.8.22-7fa3509e/private_network/ init /home/ubuntu/geth-linux-amd64-1.8.22-7fa3509e/private_network/genesis.json

genesis.jsonファイルが正しく設定されていれば、以下の様なログが出力されます。

INFO [02-14|16:36:08.637] Maximum peer count                       ETH=25 LES=0 total=25
INFO [02-14|16:36:08.638] Allocated cache and file handles         database=/home/ubuntu/geth-linux-amd64-1.8.22-7fa3509e/private_network/geth/chaindata cache=16 handles=16
INFO [02-14|16:36:08.644] Writing custom genesis block
INFO [02-14|16:36:08.644] Persisted trie from memory database      nodes=0 size=0.00B time=3.963μs gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [02-14|16:36:08.644] Successfully wrote genesis state         database=chaindata                                                                    hash=5e1fc7…d790e0
INFO [02-14|16:36:08.644] Allocated cache and file handles         database=/home/ubuntu/geth-linux-amd64-1.8.22-7fa3509e/private_network/geth/lightchaindata cache=16 handles=16
INFO [02-14|16:36:08.649] Writing custom genesis block
INFO [02-14|16:36:08.649] Persisted trie from memory database      nodes=0 size=0.00B time=3.11μs  gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [02-14|16:36:08.650] Successfully wrote genesis state         database=lightchaindata                                                                    hash=5e1fc7…d790e0

次回は、プライベートネットワークへの接続をしていきます。

▼記事の続きは以下へ。

はじめての Ethereum Part2 プライベートネットワークへの接続編(2019年2月16日執筆) - kharukaのブログ~お金と技術とキャリア~

参考

ビットコインとブロックチェーン

ビットコインとブロックチェーン