Solidityブロックチェーン

Visual Studio Code/Ganache/Truffle で Solidity統合開発環境を構築する

Solidityの統合開発環境(IDE)では Rimix が有名です。
RemixはWEBページにアクセスするだけで、簡単にコーディング・コンパイル・デプロイできる優れものですが、フロントエンドやバックエンドとの接続や依存関係の複雑なコントラクトを開発するのには向いていません。

ここでは、より複雑なブロックチェーンアプリケーションを作成することにも対応できるよう、Visual Studio Code/Ganache/Truffle を利用し、ローカルPC上にSolidityの統合開発環境を構築する方法を紹介します。

Visual Studio Code

Visual Studio Code は、Microsoft社が無料で提供する統合開発環境です。
Solidityに限らず、様々なアプリケーションの開発が可能です。

Solidityを開発するためには「Blockchain Development Kit for Ethereum」という拡張機能を利用します。

Ganache

Ganacheは、ローカル PC上にEthereumのブロックチェーン環境を構築します。構築時に100ETHを保持するアカウントが10個作られるので、マイニングせずにすぐにコントラクトを実行することができます。

今回の開発環境では、Ganache-CLI というコマンドラインでGanacheを操作できるツールを利用します。

Truffle

Truffle は、Ethereum開発のデファクトスタンダードなフレームワークで、スマートコントラクトのコンパイル・デプロイ・テストを実行することができます。


簡単に言うと、Visual Studio Codeでコードを記述し、Ganacheのローカルブロックチェーンへ、Truffle経由でアクセスする といった流れになります。

必要なアプリケーションの準備

今回のローカル環境と、準備したアプリケーションは以下の通り。

ローカル環境

OSは macOS Monterey V12.1、M1チップです。

Visual Studio Code

公式サイトからダウンロードした dmg をダブルクリック。

Visual Studio: ソフトウェア開発者とチーム向けの IDE およびコード エディター
Visual Studio 開発ツールとサービスによって、開発者が任意のプラットフォームや言語でアプリの開発を行うのが容易になります。 コード エディターまたは IDE を使用してどこでも無料で開発できます。

たぶん使わないけど、デフォルト通り .net だけチェックがついた状態でインストール。

インストール完了!

拡張機能の「Blockchain Development Kit for Ethereum」は後ほど。

Python

2.7.15以上のバージョンが必要。
たぶんデフォルトでインストールされているものでOK。
ターミナルで “python -V” コマンドを実行してバージョンを確認しておく。

Homebrew

後でNode.jsをインストールするために必要。
ターミナルで次のコマンドを実行する。

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

CurlはWEBにアクセスするコマンド

sudo が発行されることが何度かあるので、その度にmacにログインする時のパスワードを入力する。
インストールが完了したら以下のように表示される。

動作確認のため、

brew doctor

と打つんだけど「command not found: brew」コマンドが見つからないと。。。

パスが通ってないっぽいので、以下を実行。

echo export PATH='/opt/homebrew/bin:$PATH' >> ~/.bash_profile
source ~/.bash_profile

無事パスが通ってバージョンが表示された。

Node

10.15.x以上が必要。
homebrew でインストールする。npmも同時にインストールされる。

brew install node

node と npm 、それぞれのバージョン確認

node -v
npm -v

Truffle

npm でインストール

npm install -g truffle

バージョン確認

truffle version

Git

2.10.x以上。
macOSに標準でインストールされているけど、最新版を取得しておく。

brew install git

バージョン確認

git --version

Gitでコミットするときのユーザ名とメールアドレスを設定しておく。

git config --global user.name "******"
git config --global user.email ******@gmail.com

Ganache

公式サイトからdmgをダウンロードしてインストールする。

https://trufflesuite.com/ganache/

Ganache-CLI

npm でインストールする。

npm install  ganache-cli

※ Ganache-CLIはこの後使用しなかったので、インストール不要。

環境構築

必要なアプリケーションの準備が終わったので、次はVisual Studio Code にSolidityの開発環境を作っていきます。

まず、デスクトップにある、アイコンをクリックして Visual Studio Code を開いていきます。

拡張機能のインストール

Blockchain Development Kit for Ethereum

左メニューのEXTENSIONS(一番下のブロックが4つのアイコン)で”blockchain development kit”と入力するとイメージのように候補がリストアップされるので、紫箱のアイコンをクリックする。

メイン画面の「INSTALL」の青いボタンをクリックすれば完了。

Japanese Language Pack for VS Code

Visual Studio Code を日本語化する拡張機能。
上と同じように「Japanese Language Pack for VS Code」をインストールする。

プロジェクトを作成する

メニューの「表示」から「コマンドパレット」を選択し、”Blockchain: New Solidity Project”と入力し、候補から選択する。

続いて、”Create basic project”を選択

プロジェクトを格納するディレクトリを選択するダイアログが表示されるので任意のディレクトリを選択する。

すると、画面下部に 「Creating new project 」が表示され、1分程度待つとプロジェクトの作成が完了する。

左メニューのエクスプローラアイコン(一番上)をクリックすると、以下の通りEthereumのプロジェクトが作成されていることが確認できる。

ローカル Ethereum の構築・起動

構築

メニューの「表示」から「コマンドパレット」を選択し、”Blockchain: Create a new network”と入力し、候補から選択する。

“Local Service”を選択

デフォルトのまま

こちらもデフォルトのまま

起動

メニューの「表示」から「コマンドパレット」を選択し、”Blockchain: Start Ganache Server”と入力し、候補から選択する。

先ほど構築した”development” を選択する

出力エリア右側のプルダウンで ”Ganache Server: 8545″ を選択すると画面に開始時のログが表示されるので内容を確認する。

ログを上へ遡って見ると、100ETHを保持する10個のアドレスが作成されていることがわかる。

サンプルソースの修正・コンパイル・デプロイ・テスト

修正

サンプルで作成されているContracts/HelloBlockchain .solをクリックして開いてみる。
Request/Responseの状態とメッセージをセットするだけの単純なコントラクト。

pragma の行に赤い波線があり、カーソルを合わせると、エラーメッセージが表示された。

pragma はSolidityのコンパイルバージョンを指定するキーワード。
ここでは v0.4.22 から v0.8.0 までのコンパイラに準拠すると宣言されている。

対して、コンパイラのバージョンはエラーメッセージに記載されているように、 0.8.12 。

エラーを解消するため、pragma 行のバージョン指定を 0.8.20 に修正しておく。

pragma solidity >=0.4.22 <0.8.0;
↓へ変更
pragma solidity >=0.4.22 <0.8.20;

一つ下のMigrations.sol もバージョンが準拠していないため、同様に修正。

※サンプルコードが単純な内容で0.8.12でも動きそうだったので安易に変更して対応していますが、本来はコンパイラのバージョンを変更すべきです。

コンパイル

ターミナルメニューから「新しいターミナル」を選択すると画面下部にターミナルが表示される。
ここで truffle のコンパイルを実行する。

truffle compile

contracts 配下の HelloBlockchain.sol と Migrations.sol がコンパイルされた。

コンパイルによって、build 配下に同名の json ファイルが出来上がっている。

デプロイ

ターミナルで “truffle deploy” を実行するとコンパイルした二つのコントラクトが、ローカルのEthereumに配備される。

truffle deploy

テスト

テストコードは、test配下に格納されている。
今回であれば、test/HelloBlockchain.js がテスト実行される。

詳細な説明は割愛するが、assert.equals( ) がテストを実施している箇所である。
サンプルだと同じ文字列同士を比較しているため、実行されれば必ずTrueになる。

ターミナルで “truffle test” を実行するとテスト実行される

truffle test

まとめ

今回は、Visual Studio Code/Ganache/Truffle を利用し、ローカルPC上にSolidityの統合開発環境を構築する手順を説明しました。

次回は実際にスマートコントラクトの開発を実施してみたいと思います。

コメント

PAGE TOP
タイトルとURLをコピーしました