2018.01.11

EthereumのBlockchain explorer「etherchain-light」




こんにちは、次世代システム研究室のN.O.です。

Blockchain explorerはブロックチェーンのブロックやトランザクションの内容を参照するのに便利なツールです。パブリックのネットワークにはhttps://etherscan.io/などがありますが、Z.com cloud ブロックチェーンは独自のネットワークを採用しているため、自分でBlockchain explorerを用意する必要があります。ガイドではetherparty/explorerを紹介していますが、他にも様々なBlockchain explorerが存在します。今回はそのひとつ、gobitfly/etherchain-lightを使ってみたいと思います。

導入


導入にあたって今回はvagrantで構築したZ.com cloud ブロックチェーンのdeployノードを利用します。作成方法についてはガイドをご覧ください。

etherscan-lightはNode.jsのwebアプリケーションとして動作します。ブラウザで表示させるため、deployノードのVagrantfileにポートフォワードの設定(3行目)を追記します。
Vagrant.configure("2") do |config|
  config.vm.box = "local-provider-node"
  config.vm.network "forwarded_port", guest: 3000, host_ip:"127.0.0.1", host: 3000
end

parityに3つの起動オプション--tracing=on --fat-db=on --pruning=archiveを追加します。vagrantで構築したdeployノードにはparityの起動スクリプトstart-parity.shがありますが、こちらに適宜追記してください。
#!/bin/sh
mkdir -p /var/log/parity
parity --no-warp --geth  --tracing=on --fat-db=on --pruning=archive 2>&1 | flog -p /var/run/parity.pid /var/log/parity/mining.log &

parityを起動します。これによりBlockchainの同期が始まります。

同期には時間がかかりますので、並行してetherscan-lightのセットアップを始めます。

まずNode.jsをインストールします。
ubuntu xenialに収録されているNode.jsはv4.2.6となっており、etherescan-lightを動かそうとするとエラーが発生します。
そこで現行LTSのバージョンである8をインストールします。
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs

次にGitHubからetherscan-lightをcloneします。
git clone https://github.com/gobitfly/etherchain-light --recursive
cloneには結構時間がかかりますが、これはsubmodule ethereum/solc-binのサイズが3GB近くとかなり大きいためです。

cloneが終わったらnpm installです
cd etherchain-light
sudo npm install

config.jsを用意します。config.sample.jsをコピーし、this.ipcPathを以下の通り修正します。
this.ipcPath = process.env["HOME"] + "/.ethereum/geth.ipc";


起動します。
npm start

ブラウザでetherscan-lightにアクセスします。
http://localhost:3000

画面


etherscan-lightではブロック、トランザクション、各アドレスに関する情報を参照することができます。

ブロック


トランザクション


アドレス (EOA)


コントラクト アドレス
通常のアドレスの画面と似ていますが、Codeのタブが加わっています


このようにブロックやトランザクション、アドレスの内容がブラウザで閲覧できます。vagrantで起動したVMのスペックは1core、1GBで、parityも一緒に動作していますが、ブラウザの操作も軽快です。コントラクトやDappのデバッグにぜひご活用ください。

次世代システム研究室では、アプリケーション開発や設計を行うアーキテクト、またはブロックチェーンのエンジニアを募集しています。次世代システム研究室にご興味を持って頂ける方がいらっしゃいましたら、ぜひ 募集職種一覧 からご応募をお願いします。