Truffle – 初始迁移合约(Migrations.sol)

要使用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);
};

接下来,你就可以创建新的迁移脚本,部署自己的合约。



浙ICP备17015664号 浙公网安备 33011002012336号 联系我们 网站地图  
@2019 qikegu.com 版权所有,禁止转载