オープンソースのブロックチェーンを試す(6) - Ethereum(イーサリアム)のアカウント登録とマイニング

前回はUbuntuで、Ethereumの起動テストまでを行いました。

今回はアカウントの登録とマイニングを行います。

アカウントの登録

アカウントを登録するためにはpersonal.newAccountコマンドを使います。

コマンド入力後、パスフレーズを2回入力する必要がありますが、このパスフレーズは絶対に忘れないようにしてください。

パスフレーズを忘れた場合の救済措置は一切ありません

[コマンド]

1
personal.newAccount()

[実行結果]

途中実行ログが表示されてしまって少々見づらいですが、最終行に表示されている文字列がアカウントを表す情報となります。

ちなみに、eth.accountsコマンドを使うと、登録されているアカウントの一覧を表示することができます。

[コマンド]

1
eth.accounts

[実行結果]

マイニング

Ethereumでは何かを行うときに、ether(コイン、報酬)が必要となります。

理由は仲間内のブロックチェーンでも、チェーンがつながるためには複数ノードのよるマイニングが必要で、そのマイニングする動機づけとして報酬が必要だからです。

というわけで、下記コマンドを使ってマイニングを開始します。

[コマンド]

1
minert.start()

[実行結果]

マイニングを開始すると下記のようなログが表示されるようになります。

[実行結果]

  • Commit new mining work
    「新しいマイニング作業をコミットした(始まった)」・・・という意味でしょうか。
  • Successfully sealed new block
    「新しいブロックのシール貼りが成功した」・・・という意味でしょうか。
  • mined potential block
    「潜在的なブロックを採掘した」・・・という意味でしょうか。

マイニングしている雰囲気を感じてもらえたら十分かと思います。🙇‍♀️🙇‍♀️🙇‍♀️

マイニング状況の確認

しばらくマイニングを続けたら、一旦下記コマンドでマイニングを止めます。

[コマンド]

1
miner.stop()

[実行結果]

採掘されたブロック数を確認します。

[コマンド]

1
eth.blockNumber

[実行結果]

次に残高(マイニングして得た報酬)を確認します。

[コマンド]

1
eth.getBalance("アカウント")

[実行結果]

マイニングを行うことで、ブロックが生成され、マイニングを行ったアカウントに対して報酬(ether)を入手できることが確認できました。

オープンソースのブロックチェーンを試す(5) - Ethereum(イーサリアム)の起動2回目

前回はWSL上で、Ethereumの起動テストを行いまして失敗しました。

調べたところWSLだとListen設定ができないとのことで、WindowsにVirtualBoxをインストールし、ゲストOSとしてUbuntu20.04を設定し、再度Ethereumの起動テストを行いました。

さらに、これまでWSL上で実行してきた手順オープンソースのブロックチェーンを試す(1)~(3)をやり直しました。

以下はその続きとなります。

ジェネシス・ブロックの準備

まず、Ethereum起動の前準備としてジェネシス・ブロックを用意します。

[ジェネシス・ブロック genblock.json]

1
2
3
4
5
6
7
8
9
10
11
12
13
{
"config": {
"chainId": 1100
},
"nonce": "0x0000000000000033",
"timestamp": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"gasLimit": "0x8000000",
"difficulty": "0x100",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x3333333333333333333333333333333333333333",
"alloc": {}
}

環境の初期化

次に下記のコマンドを実行し、環境の初期化を行います。

datadirオプションにはデータを保存するディレクトリを指定します。

initには作成したジェネシス・ブロック(genblock.json)を指定します。

[Ethereum起動コマンド]

1
geth --datadir ./data init ./genblock.json

[実行結果]

Ethereumの起動

初期化が完了したら、いよいよEthereumの起動を行います。

下記コマンドを実行します。

なおnetworkidオプションには、genblock.jsonのchainIdで設定した値と同じものを指定します。

[Ethereum起動コマンド]

1
geth --networkid "1100" --datadir ./data  console

[実行結果]

一部エラーは出ていますが、起動自体はできているようです。

次回は、アカウントの登録とマイニングを行ってみます。

オープンソースのブロックチェーンを試す(4) - Ethereum(イーサリアム)の起動

今回はEthereumの起動を行います。

ジェネシス・ブロックの準備

まずは、Ethereum起動の前準備としてジェネシス・ブロックを用意する必要があります。

[ジェネシス・ブロック genblock.json]

1
2
3
4
5
6
7
8
9
10
11
12
13
{
"config": {
"chainId": 1100
},
"nonce": "0x0000000000000033",
"timestamp": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"gasLimit": "0x8000000",
"difficulty": "0x100",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x3333333333333333333333333333333333333333",
"alloc": {}
}

環境の初期化

次に下記のコマンドを実行し、環境の初期化を行います。

datadirオプションにはデータを保存するディレクトリを指定します。

initには作成したジェネシス・ブロック(genblock.json)を指定します。

[Ethereum初期化コマンド]

1
geth --datadir ./data init ./genblock.json

[実行結果]

Ethereumの起動

初期化が完了したら、いよいよEthereumの起動を行います。

下記コマンドを実行します。

なおnetworkidオプションには、genblock.jsonのchainIdで設定した値と同じものを指定します。

[Ethereum起動コマンド]

1
geth --networkid "1100" --datadir ./data  console

[実行結果]

致命的なエラーとなり、うまく起動できませんでした。

調べたところWSL環境ではソケットのListenができないために、Ethereumが起動できないようです😢

次回は、WSLではなくLinux環境を構築し、再びEthereum環境の起動をトライします。

オープンソースのブロックチェーンを試す(3) - Ethereum(イーサリアム)用プログラム作成

前回記事にてEthereumを使う準備が整いました。

Ethereum環境については、本番環境ではなくプライベート・ネットワーク(テスト用)を使います。

またネットワークに接続するコンピュータの数を0に設定し、自分一人がローカルで動作するモードとします。

プログラムの準備

スマート・コントラクトは、契約の自動化を目的としたものではありますが、プログラムの実行環境でもあります。

今回はデータを保存処理を組み込んでいきます。

データを保存するプログラムは以下の通りです。

プログラムはSolidityというEthereumの独自言語です。

[ソース savedata.sol]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
pragma solidity ^0.8.4;

contract SingleNumRegister {

uint storedData;

function set(uint x) public{
storedData = x;
}

function get() public view returns (uint retVal) {
return storedData;
}

}

Solidityコンパイラの準備

ソースをビルドするためには、solcコマンドが必要なのでインストールします。

[コマンド]

1
2
sudo apt-get install solc
solc --version

[結果]
solcバージョン確認結果

プログラムのビルド

solcコンパイラが準備できたので、準備したプログラム(savedata.sol)を下記コマンドでビルドします。

[コマンド]

1
solc -o savedata --abi --bin savedata.sol

正常にビルドできると次のような2ファイルが生成されます。

  • savedata/SingleNumRegister.abi

    SingleNumRegister.abi
  • savedata/SingleNumRegister.bin

    SingleNumRegister.bin

次回は、Ethereum環境の起動を行います。

オープンソースのブロックチェーンを試す(2) - Ethereum(イーサリアム)の環境構築

オフィシャル・リリースであるgo-ethereumを使って、Ethereumの環境を構築します。

ソースからビルドする方法もありますが、今回はパッケージを使用してインストールします。

パッケージを利用してインストール

WSLコンソールでgo-ethereumをインストールしていきます。

まずはリポジトリ追加のコマンドとethereumリポジトリの追加を行います。

[コマンド]

1
2
3
4
sudo apt-get install apt-file
sudo apt-file update
sudo apt-get install software-properties-common
sudo add-apt-repository -y ppa:ethereum/ethereum

Ethereum gethコマンドのインストール

Ethereum gethコマンドをインストールします。

[コマンド]

1
2
3
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install ethereum

gethコマンドのバージョン確認

go-ethereumがインストールできていることを確認するために、gethコマンドのバージョンを確認します。

[コマンド]

1
geth version

[結果]

次回は、Ethereum環境の起動を行います。

オープンソースのブロックチェーンを試す(1) - Ethereum(イーサリアム)

ブロックチェーンは、さまざまな実装が行われ暗号通貨サービス以外への応用も進められてきました。

その多くがオープンソースとして公開されています。

Ethereum(イーサリアム)

ビットコインについでシェアが大きい暗号通貨はEthereum(イーサリアム)です。

Ethereumは暗号通貨としてだけではなく、スマートコントラクトと呼ばれる、契約条件の確認や実行の自動化を実現するための基盤となっています。

分散環境で処理を実行するためのプラットフォームという側面もあります。

Ethereum(イーサリアム)

実サービスで利用可能

Ethereumは、実サービスでも利用でき、開発環境も用意されています。

これからオープンソースのブロックチェーン基盤を使ったアプリ作成を行っていきます。

オープンソース

次回はまず、ステップ1としてEthereum環境の構築をしていきます。


Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×