1. 基本介绍
目录功能:存放用于将合约(批量)部署上链的 js 脚本代码
命名习惯:Id_FileName_migration.js
执行顺序:按文件名 Id 由小到大依次执行
2. js 脚本解析
Case 1 : 合约构造函数无需传参
//Case1.1:独立合约 不import其他合约文件 也不继承其他合约
// 导入部署合约
const contractName = artifacts.require(“./contractName”);
//Exports a function that accepts an object called deployer as a parameter.
//This object acts as an interface between you (the developer) and Truffle's deployment engine
module.exports = function(deployer) {
// 部署合约
deployer.deploy(contractName);
}
//case1.2:合约import其他合约文件 或继承其他合约
//先导入被 import 或被继承的合约
const importcontract1 = artifacts.require(“./importcontract1”);
const importcontract2 = artifacts.require(“./importcontract2”);
......
// 然后导入要部署的合约
const contractName = artifacts.require(“./contractName”);
//exports a function that accepts an object called deployer as a parameter.
//This object acts as an interface between you (the developer) and Truffle's deployment engine
module.exports = function(deployer) {
// 先部署被 import 或被继承的合约
deployer.deploy(importcontract1);
// 建立合约链接链接
deployer.link(importcontract1, contractName);
// 同上
// 有几个被 import 或被继承的合约 就重复此步骤几次
deployer.deploy(importcontract2);
deployer.link(importcontract2, contractName);
......
// 最后部署目标合约
deployer.deploy(contractName);
}
Case 2 : 合约构造函数需要传参
// 大部分同上
const contractName = artifacts.require(“./contractName”);
module.exports = function(deployer) {
// 此处 deployer.deploy 接收多个参数,第一个是要部署的合约
// 后面的参数是该合约构造函数需要传入的参数 有几个写几个
// 每个参数无论变量类型 均用引号包裹
deployer.deploy(contractName, "param1", "param2", ... ,"paramX");
}
3. 使用方法
在 Truffle 目录内,即 Migrations 外层目录输入 truffle migrate 即可
注意 上述命令执行后如果涉及合约或 migration.js 文件的更新 则需要输入 truffle migrate --reset 进行重置
本文详细介绍了Truffle Migrations的基本概念,包括目录功能、js脚本解析和使用方法。讲解了合约部署脚本的命名习惯和执行顺序,并通过案例展示了不同构造函数参数情况下的部署方式。最后,指出了在更新合约或migration.js文件后如何使用truffle migrate --reset进行重置。
1730

被折叠的 条评论
为什么被折叠?



