Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

「Ethereum入門」の手順確認(環境構築〜ether送金まで)

More than 1 year has passed since last update.

 Ethereum技術入門書「Ethereum入門」を元に環境構築〜ether送金までの手順をOSX/Ubuntu環境で手順確認してみました。

0. 前提条件

以下の環境で環境構築を実施しています。
- mscOS HighSiera(10.13.5) / Ubuntu 16.04 LTS

1. Ubuntu環境を構築

  1. OSXにOracle VM VirtualBoxを導入。
  2. Ubuntu 16.04 LTSをダウンロード。
  3. VirtualBoxにUbuntu 16.04 LTSを導入。(詳細手順は省略)
  4. 環境構築時に、再起動後「intel_rapl: no valid rapl domains found in package 0」とよく出るが、その際はVirtualBox上でVMをリセットで対処。

2. 事前準備(1)

  • カーネルの更新
sudo apt-get dist-upgrade
  • そして、いつものおまじない。

sudo apt-get updatesudo apt-get upgrade

3. 事前準備(2)

 Vimなのにと言われそうですが、、手抜きをするため、Vimでコピペが出来るように事前準備。
1. VirtualBox上で、「デバイス>Guest Additions CDイメージの挿入」を実施。
2. VirtualBox上で、「デバイス>クリップボードの共有>双方向」を有効に。
3. Terminal上で、sudo rebootで再起動。
4. クリップボードを使いたいので、sudo apt-get install vim-gnomeでvim-gnomeをインストール。

4. Gethをインストール

  • Gethインストール
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo apt-get update
sudo apt-get install ethereum
  • gethのインストール確認
geth --help

→オプションが表示されていればOK。

  • gethのアップデート
sudo apt-get update
sudo apt-get upgrade

→自分が実施した時はアップデートはなし。

5. Genesisファイルの作成

  • 格納ディレクトリの作成
mkdir /home/[ユーザ名]/eth_private_net

→手順書上は、ubuntuになっているが、ユーザ名で作成する。以下、[ユーザ名]は同様。

  • myGenesisファイルの作成
vim myGenesis.json

→以下の内容をコピペして、Vimを使ってgenesisファイルを作成する。

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

6. Gethをプライベート・ネットで起動

  • genesisブロックの初期化
geth --datadir /home/[ユーザ名]/eth_private_net init /home/[ユーザ名]/eth_private_net/myGenesis.json

→上記コマンドで、myGenesis.jsonの内容で初期化。

  • Gethの起動
geth --networkid "15" --nodiscover --datadir "/home/[ユーザ名]/eth_private_net" console 2>> /home/[ユーザ名]/eth_private_net/geth_err.log

上記コマンドでGethを起動。Geth JavaScript consoleが立ち上がるので、以降はGethプロンプトで実施する。

7. 口座の作成

 口座1から口座2へ送金を実施するため、口座を2つ作成します。

  • ノードに登録された口座の事前確認
eth.accounts

→まだ口座を作成していないので、ここでは空のリストが返ってくる。

  • 口座1の作成
personal.newAccount("[パスワード1]")  ※パスワードは任意

eth.accounts[0]を実施した際に表示される口座。

  • 口座2の作成
personal.newAccount("[パスワード2]")  ※パスワードは任意

eth.accounts[1]を実施した際に表示される口座。

  • 口座の確認
eth.coinbase

→上記コマンドで、プライマリー口座の確認が出来ます。デフォルトでは、eth.accounts[0]を実行した際に表示される口座。

  • etherの採掘開始
miner.start()

→上記コマンドで採掘開始します。今回の手順では、ネットワーク上で自分しかマイニングをしていないので、ether送金をする場合は、採掘をバックグラウンドで実行している必要がある。

  • 採掘中かどうかの確認
eth.mining

→上記コマンドで採掘されているか分かる。採掘されていれば、trueが返る。

  • 採掘状況の確認
eth.blockNumber

→上記コマンドでブロックチェーンに何番目のブロックまで連なっているのか(=ブロック高)を確認。これがなかなか採掘されない。最初の10分~30分の間、DAGの生成が行われ、その後採掘となるので、結構時間がかかる。(しばらくしてやっと10)

8. etherの送金

  • etherの残高の確認。
eth.getBalance(eth.accounts[0])

→送金を行う前にetherの残高を事前に確認するため、上記のコマンドで、1番目の口座の残高を確認。(自分の場合は500 ether貯まってました)

  • 口座のロック解除
personal.unlockAccount(eth.accounts[0])

→送金するためには、事前に口座のロック解除が必要なので、上記コマンドでロック解除します。

  • 送金の実行
eth.sendTransaction({from: eth.accounts[0], to: eth.accounts[1], value: web3.toWei(5, "ether")})

→口座1から口座2へ5etherを送金します。

  • 口座2の残高確認
eth.getBalance(eth.accounts[1])

→口座2の残高を確認を行い、無事送金が完了していることを確認します。これで完了!

参考文献

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away