Workshopについて
Hi-Etherの@nakajoです!
今回はworkshopで利用する環境のセットアップ方法を説明します。
workshop当日はTruffleを利用したSmartContractのテスト方法とMythril Classicを利用した静的解析方法についてのworkshopを行います!
workshopに参加を考えている人はこの記事を参考にしてtruffleがすぐに利用できる環境を事前に準備しておいてください。
なお、このworkshopでは以下の方を対象としております。
・truffleを使い始めたけど、testの書き方がわからない
・truffleは使っているけど、そこまでtestを書いたことがない
・truffleを使ってtestは書いているけど、もう少し便利な使い方はないのか?
もちろん上記以外の方でもぜひ参加してください。ただし、当日はコードを書くことがほとんどですので参加対象はエンジニアの方に限らせていただきます。
1. Truffleのインストール
MacOS, Windows, LinuxのそれぞれのOSごとのインストール手順を簡単に説明します。
1.1. MacOSでのインストール手順
1.1.1. homebrewのインストール
下記ページを参考にしてまずはhomebrewをインストールします。
1.1.2. nvm + Node.js + npmのインストール
TruffleはNode.jsで作られたツールです。そのため、Truffleの環境を構築するためにはまず最初にNode.jsの環境を整備する必要があります。
下記のページを参考にそれぞれインストールしてください。
nvmとは node version manager の略で、Node.jsをバージョン別に管理してくれるためのツールです。またnpmは node package manager の略でこちらはNode.jsをインストールした時に自動的にインストールされます。
1.1.3. Truffleのインストール
最後にTruffleをインストールします。Node.jsのインストールとセットアップが問題なく終了しているのであれば、Truffleのインストールは簡単です。
以下のコマンドを実行してTruffleをインストールしてください。
npm -g install truffle
次のコマンドでversion番号が表示されれば正常にインストールが完了しています。
truffle version
Truffle v4.1.14 (core: 4.1.14)
Solidity v0.4.24 (solc-js)
以上でTruffle環境のセットアップは完了です!
1.2. Windows10でのインストール手順
Node.jsの環境が構築できれば、Truffleのインストール手順はMacOSと同じです。そのためここではNode.jsのインストール手順までを説明します。
なお、workshop当日の進行をスムーズにするためにLinux系コマンドで作業が統一できるように、WSLの環境を推奨します。なので、以下ではWSLでのインストール方法を説明します。
1.2.1. WSLのインストール
以下の記事を参考にして、まずはWIndows10のWSLを有効にしてUbuntuをインストールしてください。Ubuntuのバージョンは18.04LTSで動作を確認しています。また、
プログラムをVisual Studio CodeなどのGUIツールで編集する場合は、以下の手順でhome ディレクトリの場所を変更しておくのもオススメです。
Ubuntu18.04LTSをインストール後は以下のコマンドを実行してgitをインストールして下さい。
sudo apt update
sudo apt upgrade
sudo apt install git
1.2.2. nvm + Node.jsのインストール
最後にnvmをインストールして、Node.jsをインストールします。こちらも以下の記事を参考にインストールしてください。
Node.jsのインストールが終わったら、1.1.3.を参考にしてTruffleをインストールしてください。
1.3. Linux系/ BSD系でのインストール手順
Node.jsの環境が構築できれば、Truffleのインストール手順はMacOSと同じです。そのためここではNode.jsのインストール手順のみ説明します。
Linux / BSD系を利用している方はそれなりに知識がある方と思いますので、以下のNode.jsの公式サイトから適切なパッケージを探してインストールしてください。
なお、Node.jsのバージョンについてはv8.11.3 で動作することは確認済みです。基本的にNode.jsはv8.11.3以降のバージョンであれば問題はないと思います。
2. Mythril Classicの環境設定
2.1. Mythril Classicのinstall
当日はMythril Classicも利用します。こちらは公式のREADME.mdにしたがってインストールをしておいてください。Mythril ClassicをインストールするためにPython3を事前にインストールする必要があります。
2.2. Solidity Compiler(binary版)
また、Mythril Classicを動かすためにはbinaryバージョンのsolcが必要となります。こちらも公式ページにインストールガイドがあるので、そちらを参照してインストールしておいてください。
3. リポジトリのgit cloneとnpm install
当日は会場のwifi回線が非常に混雑して使えない可能性があるためあらかじめ下記の4つのリポジトリをgit cloneして、それぞれのリポジトリでnpm installしておくことをお勧めします!
https://github.com/nakajo2011/hicon2018workshop-1.git
https://github.com/nakajo2011/hicon2018workshop-2.git
https://github.com/nakajo2011/hicon2018workshop-3.git
https://github.com/nakajo2011/hicon2018workshop-4.git (※まだ準備中です。すいません。前日までには公開してアナウンスいたします。2018/11/06 公開しました!事前にダウンロードとnpm installをお願いします!!)
cloneとnpm installの例
git clone https://githunb.com/nakajo2011/hicon2018workshop-1.git
cd hicon2018workshop-1
npm install
Workshopの進行表(2018/11/10 update)
本日はこちらの進行表に沿って進めていきます!
最後に
Dappsの開発プロジェクトが最近は多くなってきました。が、まだまだ十分なテストを備えたプロジェクトは多くないと感じています。現状のSmartContractは一度deployすると変更ができないため非常にセンシティブな開発が求められています。
これに対しての銀の弾丸はありませんが、先人のプログラマーが長い年月をかけて編み出してくれた、様々な開発手法を利用することでより安全な開発ができると思っています。
当日はTDD手法を利用したSmartContractの開発の体験、及び、SmartContractのunit testを書く際に便利に使えるツールを紹介したいと思いますのでぜひお楽しみに!