要使用Truffle迁移功能,必须首先部署一个初始迁移合约,此合约包含特定接口。
使用truffle init
初始化项目时,会自动创建初始迁移合约,及其迁移脚本:
contracts/Migrations.sol
初始迁移合约migrations/1_initial_migration.js
迁移脚本
对于大多数项目,此合约将作为第一个迁移任务部署,并且以后不会再更新。
文件名:contracts/Migrations.sol
pragma solidity ^0.4.8;
contract Migrations {
address public owner;
// 需要一个函数签名为“last_completed_migration()”的函数,返回一个uint。
uint public last_completed_migration;
modifier restricted() {
if (msg.sender == owner) _;
}
function Migrations() {
owner = msg.sender;
}
// 需要一个函数签名为“setCompleted(uint)”的函数。
function setCompleted(uint completed) restricted {
last_completed_migration = completed;
}
function upgrade(address new_address) restricted {
Migrations upgraded = Migrations(new_address);
upgraded.setCompleted(last_completed_migration);
}
}
为了使用迁移功能,必须先部署Migrations
合约。为此,Truffle自动创建下面的迁移脚本:
文件名:migrations/1_initial_migration.js
var Migrations = artifacts.require("Migrations");
module.exports = function(deployer) {
// 部署Migrations
deployer.deploy(Migrations);
};
接下来,你就可以创建新的迁移脚本,部署自己的合约。