Blockchain
Ethereum
geth
イーサリアム

ブロックチェーンイーサリアムチュートリアル

More than 1 year has passed since last update.

Dockerでgethをインストール

1. コンテナを作成

docker run -it --name "eth" ethereum/client-go:v1.7.2

2. 必要なパッケージをインストール

apk --update add vim git

3. Defining the private genesis state (genesis.jsonファイルを下記のように作成)

$ cat /root/genesis.json

{
"nonce": "0x0000000000000000",
"timestamp": "0x00",
"difficulty": "0x10A",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "0x00",
"alloc": {},
"gasLimit": "0x47E7C4",
"config": {
        "homesteadBlock": 0
      }
}

$ geth init /root/genesis.json

4. イーサリアムnodeを作成し、起動する

$ mkdir -p /root/gethdata

$ geth --datadir /root/gethdata --networkid 10 --nodiscover --dev --nodiscover console

説明:
- datadir: ブロックチェーンとアカウント情報が保存される場所
- dev: デバッグ用のDeveloper mode
- nodiscover: 他のネットワークに繋げないようにする
5. 対話型のコンソールでetherの操作を確認

参考:https://book.ethereum-jp.net/first_use/mining_ether.html

# アカウント作成
> personal.newAccount("hogehoge1")    ← hogehoge1はパスワードです。
"0xddf401a8396966c00dc55cd97fca979829e0107c"

> personal.newAccount("hogehoge2")
"0x7c8e10566e2581664de9183afa8cb3be83786ea0"

# アカウント一覧を確認
> eth.accounts
["0xddf401a8396966c00dc55cd97fca979829e0107c", "0x7c8e10566e2581664de9183afa8cb3be83786ea0"]

# etherbaseを確認 (etherbaseとは、各ノードで採掘を行う際にその報酬を紐づけるEOAのアドレスを示します)
> eth.coinbase
"0xddf401a8396966c00dc55cd97fca979829e0107c"

# etherbaseはデフォルトではプライマリーのアカウント(eth.accounts[0]コマンドを実行して表示されるアドレスのEOA)が設定されますが、下記のようにminer.setEtherbase(new_adress)コマンドで変更することも可能です。

> miner.setEtherbase(eth.accounts[1])
> eth.coinbase
'0x7c8e10566e2581664de9183afa8cb3be83786ea0'

# etherの採掘
> miner.start()
true

> miner.stop()
true

# 採掘状況の確認
> eth.blockNumber
145

# 報酬の確認
> web3.fromWei(eth.getBalance(eth.accounts[0]),"ether")
'515'