Dappsでゲームを作ってみる(Part.2) コントラクトをデプロイしてみる
前回まで
Dappsでゲームを作ってみる(Part.1) コントラクトの定義
前回は、プロジェクトの作成から、コントラクトの定義までをおこないました。
最後に「次回はテストを書きたい」と書いていたのですが、migrationの設定をしないとテストも書けないので、migrationを先にやっておきます!
Migration(マイグレーション)とは?
solidityで記述したコントラクトを、ネットワークに対してデプロイを行う事を言います。
コントラクトの内容が変更された際のバージョン管理的なものがどこまで考慮されているかは、現段階では未知数です。
(単に僕の経験不足のため)
Migrationの作成
truffle
コマンドを通してmigrationの作成が可能です。
$ truffle create migration BoxFactory
デフォルトで作成される中身は、こんな感じです。
module.exports = function(deployer) {
// Use deployer to state migration tasks.
};
当然ながら中身が空なので、BoxFactoryがデプロイされるように、最低限の記述を施します。
// BoxFactoryコントラクトの取得
var BoxFactory = artifacts.require("BoxFactory");
module.exports = function(deployer) {
// BoxFactoryのデプロイ
deployer.deploy(BoxFactory);
};
これで、デプロイの準備は完了です!
Migration(マイグレーション)の実行
作成したマイグレーションの実行はとても簡単です。
試しに、ローカルネットワーク向けにデプロイしてみましょう。
$ truffle migrate
Compiling ./contracts/BoxFactory.sol...
Compiling ./contracts/Migrations.sol...
Writing artifacts to ./build/contracts
Using network 'development'.
Running migration: 1_initial_migration.js
Deploying Migrations...
... 0x2523b3fb2b65b8f7a0562de734f17ec4f2a986c8d3f8e91ef6a5d5af150f3683
Migrations: 0x808253c9562a2919a2d4cd362f11a1ffa7998531
Saving successful migration to network...
... 0x720c970a2cad3dc4aa24eab9a6671571208cd55f97eaa409fa9d868fa9cdce6f
Saving artifacts...
Running migration: 1534418877_box_factory.js
Deploying BoxFactory...
... 0x07c9723a72cd56bebe829dc5da30e674b94992c41a58d847fb241a41ff2f2d22
BoxFactory: 0xd4eb19f1ce0036093d47dbf511a6fec09817ec87
Saving successful migration to network...
... 0xa0f84879c64e0188770f238fb390cfd9f1c452a4ae3e8b0099b94139d8230b54
Saving artifacts...
これでデプロイ(マイグレート)は完了です。
うん。簡単…!
一度適用されたマイグレーションファイルは、ネットワーク上に記録されているので、再度実行されることはありません。
$ truffle migrate
Using network 'development'.
Network up to date.
truffleに乾杯!