ブロックチェーンの開発で初めてTruffleを利用する際、概要を理解しようと思ってもブロックチェーンフレームワークは詳細を触ってみないとイメージが付きにくい部分が多いです。
そこでこの記事では、コードは最低限に抑えて図を用い、フレームワークの全体像を5分で把握できるように解説していきます。
Truffleとは?
TruffleとはEthereumアプリケーション開発におけるデファクトスタンダードのフレームワークで、フレームワーク選びではTruffleを選んでおけばまず間違いないと言えます。
TruffleはWeb開発のフレームワークに例えるとバックエンドの開発フレームワークのようなもので、スマートコントラクトのコンパイル・テスト・マイグレーション機能を備えています。
Truffleと一緒に用いられるツールとして、ローカル開発用のノードを構築できるGanasche, スマートコントラクトにアクセスするフロントエンドを簡単に構築するためのdrizzleがあります。これらのツールをまとめてTruffle Suitと呼びます。
また、TruffleはEthereumの開発に使える他に、エンタープライズEthereumの仕様に乗っ取りEVM上で動くQuorumの開発にも対応しています。
▼詳細はこちら
許可型ブロックチェーンQuorumとは?事例&特徴を解説
この記事では、Ethereum開発のフレームワークTruffleの概要について解説していきます。
Ethereum(Dapp)開発の全体像
Dappは大きく分ける次の三つの要素から成ります。
- スマートコントラクトを動かすノードとそのネットワーク
- ネットワークにデプロイされるスマートコントラクト
- スマートコントラクトの実行をリクエストするフロントエンド
1のノードとネットワークを主に扱うのがGanache、
2のスマートコントラクトの開発を扱うのがTruffle、
3のフロントエンドを扱うのがdrizzleとなります。
Truffle利用の流れ
Truffleは主に以下の流れで利用します。
- アプリケーションテンプレートの生成
- スマートコントラクトのコンパイル
- ローカル開発用ノードの立ち上げ
- スマートコントラクトのノードへのデプロイ
- スマートコントラクトのテスト
以下、それぞれの手順について解説していきます。
1.アプリケーションテンプレートの生成
Truffleでは、TruffleBoxというアプリケーションのテンプレートが利用できます。Truffle Boxでは仮想通貨の実装などよく利用されるアプリケーションの雛形が用意されており、雛形を元にスピーディーな開発を始めることができます。
例えばtruffle unbox meteacoin
のコマンドを実行する事で、以下の画像のようにMetaCoin.sol
という仮想通貨コントラクトのテンプレートを含むファイル群が生成されます。
2.スマートコントラクトのコンパイル
スマートコントラクトはSolidityで記述されますが、コントラクトがノードによって実行されるためには、EVMが実行可能な形式にコンパイルされる必要があります。`truffle compile`のコマンドで、`contract`ディレクトリ配下のSolidityファイルがコンパイルされます。
3.ローカル開発用ノードの立ち上げ
truffle develop
のワンコマンドで、ローカルにノードが立ち上がり、Ethを保有した10のアカウントが自動生成が発行されます。 このノードは本番のネットワークとは接続されないテスト用のノードで、先ほどコンパイルしたコントラクトをデプロイし動作をテストするために利用します。
ローカルノードの起動にはtruffle develep
の代わりにGanacheを利用する事も可能です。Ganacheはローカルノードを起動するほか、UI上からノードの状況を確認し管理出来るデスクトップアプリケーションです。UIによる直感的な操作が可能なため、最初はGanacheの利用をするのがオススメします。
Ganacheのイメージ
4.スマートコントラクトのデプロイ
手順2でデプロイしたコントラクトを、手順3で立ち上げたローカルノードにデプロイします。
コントラクトのデプロイはマイグレーションによって管理されます。truffle migrate
によって未デプロイのコントラクトがデプロイされます。
5.スマートコントラクトのテスト
truffle test
コマンドによって記述したコントラクトをテストすることができます。 Truffleのテストコマンドでは、実行毎にノードの環境をクリーンに保つことができ、簡単にテストを実行することが可能です。
まとめ
以上がTruffleの全体像の説明でした。Truffleを活用すると、複雑なネットワークの設定やデプロイがワンコマンドで実行でき開発効率を大幅にあげることができます。
Truffleの使い方の詳細は公式サイトで解説されているので、実際に開発する際にはそちらを参考に開発をしていきましょう。
雑記: Truffleって美味しそうですよね。思わずチョコ食べながら記事書きました。