アルゴリズムとかオーダーとか

仕事で勉強したことなどをまとめてます

Truffleで簡単にコントラクトをビルドして触ってみる

今回はTruffle(読み方はトリュフ)を使った開発環境の構築手順をまとめてみます。

truffleframework.com


Gethを使って開発しているとコントラクトをデプロイするたびにminer.start()するかmining完了するまで待たされたり、コントラクトのメソッドコールするたびにmining完了するまで待たされたり、ノードの状態が汚れてきたらリセットして作り直したりと、結構煩雑な作業が必要になります。

Truffleではそういった煩雑な作業なく簡単にテスト用のプライベートノードを起動したり、また、あらかじめ用意していたテストを実行してコントラクトをテストすることができます!

Truffleでの自動テストについてはまだ試していないので、今回はtruffleのdevelopノードを起動してbrowser-solidityと接続する手順を紹介します。

Truffleのinstallationを見ながら環境を構築します。
Installation | Truffle Suite
npm installで簡単に導入できます。

> npm install -g truffle

余談ですが、EthereumはContractの開発言語がJavascriptライクなSolidityが主流なのの影響をうけてなのか、Node.jsのモジュールが多い気がしますというかだいたいnpm installですね。

続いてTruffleのプロジェクトを作成していきます。

Truffleのプロジェクト用のディレクトリを作ってそこでtruffle initします。

> mkdir truffle-sample
> cd truffle-sample
> truffle init

initするとTruffleプロジェクトに必要なディレクトリやファイルが自動的に作成されます。これでとりあえずTruffleが使えるようになりました。
では早速開発ようのノードを起動します。 truffle develop コマンドでノードが起動します。

> truffle develop
Truffle Develop started at http://localhost:9545/

Accounts:
(0) 0x627306090abab3a6e1400e9345bc60c78a8bef57
(1) 0xf17f52151ebef6c7334fad080c5704d77216b732
(2) 0xc5fdf4076b8f3a5357c5e395ab970b5b54098fef
(3) 0x821aea9a577a9b44299b9c15c88cf3087f3b5544
(4) 0x0d1d4e623d10f9fba5db95830f7d3839406c6af2
(5) 0x2932b7a2355d6fecc4b5c0b6bd44cc31df247a2e
(6) 0x2191ef87e392377ec08e7c08eb105ef5448eced5
(7) 0x0f4f2ac550a1b4e2280d04c21cea7ebd822934b5
(8) 0x6330a553fc93768f612722bb8c2ec78ac90b3bbc
(9) 0x5aeda56215b167893e80b4fe645ba6d5bab767de

Mnemonic: candy maple cake sugar pudding cream honey rich smooth crumble sweet treat

こんな感じでノードの起動と同時にtruffle consoleも起動します。
コンソール上のログからわかる通り、RPCサーバはlocalhost:9545で受付します。さらにアカウントも10個自動で作られます。
なお、このノードはメモリ上に展開してるだけなので終了するとデータは綺麗に消えてくれます。
このdevelopコマンドはTruffle 4.0で追加されたもので、中身はTestRPCなんだそうです。
昔のブログとかでTruffleの記事を探すとTruffle + TestRPCというのが多いのですが、今ではTruffle単体を入れるだけでよくなりました。

ノードを終了させるコマンドは

truffle(develop)> .exit

です。.helpでコンソールコマンドの一覧が見れます。また、web3.eth.~~でお馴染みのetherコマンド群も呼出せます。

ノードを起動したので、次はbrowser-solidityと接続します。browser-solidityとの接続方法については過去記事をご覧ください。
簡単なコントラクトを作ってみる - アルゴリズムとかオーダーとか

developノードはlocalhost:9545で動いているのでWeb3 Provider Endpoinにはhttp://localhost:9545を指定してください。

browser-solidityからコントラクトのcreateボタンを押すと自動でマイニングされてすぐにコントラクトが使えます。すごい簡単!
1つ注意点としては、browser-solidityで接続したまま、truffle consoleを終了させると裏でノードが動きっぱなしになります。
その場合は、browser-solidityの右側のタブからRun > Environment > Javascript VMを選んでWeb3 Providerとの接続を切ると自動的にノードも終了します。
今回は以上です。