Ethereumを動かす ~Part11~

実際にSolidityによってスマートコントラクトを書くことができたら、今度はローカル環境やテスト環境、もしくは本番環境にデプロイする必要があります。
今回は、Ethereumにおけるコントラクトのデプロイに便利なTruffleというフレームワークをご紹介します。
導入
まず、オーナーのEthereumアカウントとそのアドレスを用意する必要があります。
ローカル環境でしたらgethコマンドで生成することが可能ですが、テスト環境や本番環境で新たにアカウントを作ってアドレスを生成するには、MyEtherWalletやMyCryptなどのサイトを用いるのが楽です。
その際、テスト環境のアカウントを生成したいのであれば、サイト右上で設定できる環境を「Ropsten(infura.io)」に設定しておきましょう。
RopstenとはEthereumの代表的なテストネットの名称です。
以下、今回はテストネットにデプロイする前提で話を進めます。本番環境のデプロイも流れは同じです。
アドレスを生成するときは、秘密キー(Private Key)も必ず確認して記録しておかなければなりません。
アカウントが生成できたら、テストネットのアドレスを手に入れる必要があります。
https://infura.io/にアクセスし、”GET STARTED FOR FREE”をクリックします。必要項目を入力するといくつかサーバーが提供されますが、今回はテストネットなのでRopstenの欄に記入されているURLを用います。
本番環境へのデプロイの場合はMainnetの欄に入力されているURLを用いることになります。
オーナーアカウントとURLが用意できたら、肝心のtruffleを用意します。
truffleはnpmでインストールできるのですが、このとき秘密キーでネットに接続できるようにtruffle-hdwallet-provider-privkeyも一緒にインストールしておきます。
npm install -g truffle truffle-hdwallet-provider-privkey
-gオプションをつけることで、どこでもtruffleとtruffle-hdwallet-provider-privkeyを呼び出せるようにしておきましょう。
truffleの雛形作成
まず空のプロジェクトを作ります。
今回はtest-truffleという名前で作成することにします。
mkdir test-truffle && cd test-truffle
test-truffleまで移動しました。
ここで
truffle init
と打つと、truffleの雛形が生成されます。
ディレクトリ構造は
test-truffle
├── contracts
│ └── Migrations.sol
├── migrations
│ └── 1_initial_migration.js
├── test
├── truffle-config.js
└── truffle.js
となっています。
contractsディレクトリ、migrationsディレクトリには生成時点で既にファイルが存在していますが、これらはデプロイ時に必要なので削除しないでください。
contractsディレクトリ
contractsディレクトリには、トークンやクラウドセールなど、デプロイさせたいもののsolidityファイルを置きます。
importしているファイルも含めて必要なファイルは全て置いてください。
migrationsディレクトリ
ファイルをデプロイする手順をこのmigrationsディレクトリにあるファイルで管理します。
migrationsディレクトリに置くファイルには名前の頭に数字を入れるという決まりがあり、その順番に沿ってデプロイが実行されます。
“1_initial_migration.js”という名前のファイルが既に存在しており、これはデフォルトで実行しなければならないので、次の手順を2から始まる名前のファイルに書き込むことになります。
truffleのごくごく簡単な説明を行いました、
次回は実際にデプロイする方法を紹介します。