Deploy Your Contracts

Để triển khai các contract, ta cần viết deploy script tương tự như Truffle và đặt ở trong thư mục scripts.

Giả sử ta có contract sau:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
 
contract MyContract {
    uint256 public myNumber;
 
    event NumberChanged(uint256 newValue, address indexed caller);
 
    constructor(uint256 _myNumber) {
        myNumber = _myNumber;
    }
 
    function setMyNumber(uint256 _myNumber) public {
        myNumber = _myNumber;
        emit NumberChanged(_myNumber, msg.sender);
    }
}

Ta có thể viết deploy script cho contract này như sau:

import { ethers } from "hardhat";
 
async function deployMyContract() {
	const initialMyNumber = 0;
 
	const MyContract = await ethers.getContractFactory("MyContract");
	const myContract = await MyContract.deploy(initialMyNumber);
 
	await myContract.deployed();
 
	console.log(
		`MyContract with initial number ${initialMyNumber} deployed to ${myContract.address}`
	);
}
deployMyContract().catch((error) => {
	console.error(error);
	process.exitCode = 1;
});

Đối số đầu tiên của phương thức deploy sẽ là đối số truyền vào constructor của contract.

Để deploy, ta chạy lệnh sau:

yarn hardhat run scripts/deploy.ts

Với deploy.ts là tên của deploy script và contract sẽ được deploy lên một in-process network có tên là Hardhat Network.

Thực ra, contract được deploy bằng cách này sẽ bị mất, nhưng ít nhất ta biết được là contract có được deploy thành công hay không1.

Deploy to Local Network

Ta khởi chạy một local network2 hoạt động dựa trên Hardhat Network bằng câu lệnh sau:

yarn hardhat node

Theo mặc định, địa chỉ của local network sẽ là http://127.0.0.1:8545.

Để deploy contract lên local network, ta có thể thêm --network localhost vào câu lệnh deploy. Cụ thể:

yarn hardhat run scripts/deploy.ts --network localhost

Tip

Có thể sử dụng JordyKingz/hardhat-block-explorer làm block explorer cho local network.

Footnotes

  1. Tham khảo Deploying to a live network | Ethereum development environment for professionals by Nomic Foundation (hardhat.org)

  2. Xem thêm cách kết nối local network với ví MetaMask, tạo tài khoản và thực hiện chuyển tiền: Connecting Metamask with a Local Hardhat Network | by Aw Kai Shin | Medium