目次

ethereumブロックチェーンの構築(Ganache編)

Ganacheを使用してethereumブロックチェーンを構築し、gethでブロックチェーンに接続して送金、スマートコントラクトを実行するハンズオンです。

Ganacheとは?

Ganache は ethereum に対応した開発用ノード(ブロックチェーン)です。 アプリケーションをインストールするだけで、すぐに ethereum ブロックチェーンを利用した開発が始められます。 また、デフォルトで採掘が自動的に行われますので、必要なトランザクションは自動的に処理されます。 権限についてもデフォルトでゆるく設定されており、アカウントのアンロック(eth.unlockAccount)しなくても送金やガス代の支払いができるようになっています。

インストール

Ganacheはアプリケーションとして配布されており、アプリケーションをインストールするだけで簡単にethereumブロックチェーンを開発できます。 Linux、macOS、Windows 用のパッケージが公開さています。

お使いの環境に合わせて Ganache パッケージをダウンロードし、インストールしてください。

起動

Ganache が起動したら「QUICKSTART」をクリックしてください

すると、以下のようなウィンドウが立ち上がります。

起動した段階で既に10アカウントが作成されており、それぞれに 100 ETH 割り振られています。

後ほど、この Ganache の ethereum ブロックチェーンに geth でアクセスする際、このウィンドウにある「RPC SERVER URL」を使用します。(下図参照)

各アカウントの PRIVATE KEY は以下の手順で確認できます。

geth attach でブロックチェーンにコンソール接続する

「起動」の手順で確認した「RPC SERVER URL」を使用して、以下のようにコンソール接続することができます。



送金

送金前



送金



送金後(eth.accounts[0] についてはガス代分も少なくなっている)



Ganache でも残金やトランザクションが確認できる。

スマートコントラクト

コンパイラ(solc)のインストール

solidity releases でコンパイラーが公開されていますので、ダウンロードします。

(上記で配布されているのでコンパイラの実行ファイルでので、解凍やインストールは必要なく、すぐにコンパイラを利用できます。)

実装

内部にカウンターをもち、カウンターの値を取得する(get)と、カウンターの値を1増やす(inc)するスマートコントラクトを実装します。

Counter.sol

コンパイル

スマートコントラクトのコンパイルはコマンドラインから solc を使用して実行します。



コマンドの意味

上記コンパイルを実行すると、以下のように「Binary」と「Contract JSON API」が出力されます。

今後利用するときに「Binary」の先頭に「0x」を付ける必要がありますので、「0x」を付けてメモしておいてください。

(例) 608060… → 0x608060…

コンパイル実行結果

デプロイ

スマートコントラクトのデプロイは geth console 上で行います。



上記の作業でデプロイの「登録」は完了しました。 デプロイ処理の実行は採掘時に行われます。Ganache では自動的に採掘が行われているため、ほぼ即時にデプロイが完了します。

デプロイ処理が完了しているため「Contract Account」がaddressに付与されています。



実行

スマートコントラクトを呼び出してカウンターの値を1増やしてみます。 この処理はトランザクションを伴うため、採掘時に実行されます。



カウンターの値を参照してみましょう。

採掘前後で確認してみます。

get でカウンターの値を参照する。



ガス代(手数料)の確認

トランザクションの実行にはガス代と呼ばれる手数料がかかります。 そのため、トランザクションを発行したaccount[0]は想定よりも少しだけコインが減っているはずです。

確認してみましょう。