Để deploy lên Ethereum, ta cần sử dụng migration, là một file JS giúp quản lý và deploy các version của smart contract. Ta tạo ra một file có tên là 1_initial_migration.js ở trong thư mục migrations có nội dung như sau:
var MyContract = artifacts.require("../contracts/MyContract.sol")
module.exports = function (deployer) {
deployer.deploy(MyContract, 1)
}Đoạn code của file 1_initial_migration.js thực hiện các công việc sau:
- Nói với Truffle là chúng ta muốn deploy contract ở trong file
MyContract.sol. - Export một function có một tham số là
deployervà gọi phương thứcdeploycủa tham số này. - Phương thức
deploycó hai đối số, đối số đầu tiên là contract và các đối số còn lại sẽ là các đối số truyền vào constructor của contract. Ở đây, ta sẽ set giá trị ban đầu củamyNumberlà1.
Mỗi migration có thể deploy nhiều contract, ví dụ:
const MyContract = artifacts.require("../contracts/MyContract.sol")
const HelloWorld = artifacts.require("../contracts/HelloWorld.sol")
module.exports = function (deployer) {
deployer.deploy(MyContract, 1)
deployer.deploy(HelloWorld, "Hello World!")
}Có thể có nhiều migration tương ứng với nhiều phiên bản của các smart contract. Các migration được thực thi theo thứ tự 1, 2, 3, etc.