Để 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:

  1. Nói với Truffle là chúng ta muốn deploy contract ở trong file MyContract.sol.
  2. Export một function có một tham số là deployer và gọi phương thức deploy của tham số này.
  3. Phương thức deploy có 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ủa myNumber1.

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.