Dappsでゲームを作ってみる(Part.2) コントラクトをデプロイしてみる

木内智史之介(シャッチョー)
ミンカさんけっこんしてくださいおねがいします(ズザー SEGAさん、DIVAの筐体ください(ズザー

前回まで

Dappsでゲームを作ってみる(Part.1) コントラクトの定義

前回は、プロジェクトの作成から、コントラクトの定義までをおこないました。
最後に「次回はテストを書きたい」と書いていたのですが、migrationの設定をしないとテストも書けないので、migrationを先にやっておきます!

Migration(マイグレーション)とは?

solidityで記述したコントラクトを、ネットワークに対してデプロイを行う事を言います。
コントラクトの内容が変更された際のバージョン管理的なものがどこまで考慮されているかは、現段階では未知数です。 (単に僕の経験不足のため)

Migrationの作成

truffle コマンドを通してmigrationの作成が可能です。

$ truffle create migration BoxFactory

デフォルトで作成される中身は、こんな感じです。

migrations/1534763675_box_factory.js
module.exports = function(deployer) {
// Use deployer to state migration tasks.
};

当然ながら中身が空なので、BoxFactoryがデプロイされるように、最低限の記述を施します。

migrations/1534763675_box_factory.js
// 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に乾杯!