#はじめに
Ethereumネットワーク上でアプリを動かしてみようと思い、なるべくローカル環境を汚したくないのでDockerコンテナ上で環境を作れないかとやってみたら出来たので、その方法を備忘録として残しておこうと思います。
#前提
・Dockerの使い方についての説明はしません。
・Macでの操作になります。Windowsの方は適宜あてはめてやってみてください。
#そもそもGethとは
GethはGoで実装されたEthereumのCUIクライアントで、このGethをインストールし起動することでEthereumのP2Pネットワークにフル・ノードとして参加することが出来ます。
Gethを使うことで、
・etherの採掘
・etherの送金
・スマート・コントラクトの生成
・トランザクションの生成
・ブロックチェーンの確認
といった動作が可能になります。
#Dockerfileの作成
てきとうなディレクトリに作業用フォルダを作成しそのフォルダでDockerfileを作成します。
FROM ubuntu:latest
RUN apt-get update && apt install -y software-properties-common
RUN add-apt-repository -y ppa:ethereum/ethereum
RUN apt-get update && apt-get install -y \
ethereum \
solc
WORKDIR /work/
簡単に内容を説明すると、
1行目でOSとしてubuntuのイメージを取得しています。
2行目、3行目では、ethereumのパッケージはapt-getのパッケージリストに無いので、ethereumのパッケージリストをapt-getにインストールしています。
4行目、5行目でethereumのライブラリをコンテナにインストールしています。
6行目のsolcはスマートコントラクトのコードをデプロイする際コンパイルするためのツールです。
コンテナ内では作業用ディレクトリとしてroot配下にworkフォルダを作成しています。
#dockerコンテナの作成
Dockerfileをビルドしdockerイメージを作成します。
$ docker build .
dockerイメージが作成されたらそのイメージからコンテナを起動します。
# xxxxxxxxxはdockerのimage
$ docker run -it -v ~/hoge:/work xxxxxxxxx bash
docker runでコンテナを起動する際、-vオプションでホストのフォルダとコンテナのフォルダをマウントするのを忘れないよう注意。
#Gethの確認
コンテナが起動したらGethとsolcがインストールされているか確認します。
1.Gethの確認
コンテナのコンソールでgethコマンドとversionサブコマンドを入力します。
root@064d11dd2cec:/work# geth version
Geth
Version: 1.10.6-stable
Git Commit: 576681f29b895dd39e559b7ba17fcd89b42e4833
Architecture: amd64
Go Version: go1.16.4
Operating System: linux
GOPATH=
GOROOT=go
こんな感じで表示されたらOK.
2.solcの確認
今回の記事では使用しないけど、いずれ使うので今の内に確認しておきます。
solcコマンドに--versionオプションをつけて実行します。
root@064d11dd2cec:/work# solc --version
solc, the solidity compiler commandline interface
Version: 0.8.6+commit.11564f7e.Linux.g++
こんな感じで表示されたらOK.
これでコンテナ環境でGethを使ってEthereumのプライベートネットワークでetherの送金やマイニング、スマートコントラクトの作成をすることが出来るようになりました。
次回はgenesisファイル(ブロックチェーンの一番初めのブロックの設定ファイル)でのgeth初期化とgethの起動、etherの送金等を書いていこうと思います。
#おわりに
ブロックチェーンアプリ開発を勉強中です。
学んだことをアウトプットするため、また自分自身の備忘録として書いています。
他にも優良なサイトや記事はたくさんあるので、なるべく自分がハマった箇所をメインに記事を作成していこうと思っています。
もし自分と同じ箇所でハマっている方の参考になれば幸いです。
また気付いた点や間違えている点があったらご指摘いただけると嬉しいです。
#参考サイト
Ethereum入門
このサイトにはホントお世話になっています。EthereumやGethのことが細かく紹介されています。
渋谷ほととぎす通信
Ethereumの仕様は結構変わったりするんですが、このサイトは新しい情報が載っているので参考にしています。
apt-getで見つからないパッケージを追加する方法(debian, ubuntu両方対応)
ubuntuにethereumをインストールする時の参考にしました。