Thay vì nhập các lệnh kiểu như forge script NameOfScript --rpc-url xyz --private-key 0xPrivateKey ... nhiều lần thì ta nên viết Makefile để tạo các alias cho việc chạy lệnh.

Trước tiên, ta sẽ include file .env vào Makefile:

-include .env

Sau đó, viết alias để build:

build:; forge build

Ký tự :; là để chỉ định rằng câu lệnh cần chạy sẽ nằm cùng dòng.

Chạy alias bằng lệnh make build.

Viết nhiều dòng:

build:
	forge build

Alias để deploy contract lên Sepolia:

deploy-sepolia:
	forge script script/DeployFundMe.s.sol:DeployFundMe --rpc-url $(SEPOLIA_RPC_URL) --private-key $(SEPOLIA_PRIVATE_KEY) --broadcast --verify --etherscan-api-key $(ETHERSCAN_API_KEY) -vvvv

Sử dụng -vvvv sẽ cho ta trace như sau:

Traces:
  [1809650] DeployFundMe::run()
    ├─ [872943] → new HelperConfig@0xC7f2Cf4845C6db0e1a1e91ED41Bcd0FcC1b0E141
   └─ [Return] 4136 bytes of code
    ├─ [565] HelperConfig::activeNetworkConfig() [staticcall]
   └─ [Return] 0x694AA1769357215DE4FAC081bf1f309aDC325306
    ├─ [0] VM::startBroadcast()
   └─ [Return]
    ├─ [864669] → new FundMe@0x4dc55230E160c6b4B93940CaD9C9044fAE748326
   └─ [Return] 4206 bytes of code
    ├─ [0] VM::stopBroadcast()
   └─ [Return]

Seealso

Một số command từ Makefile trên:

  • make anvil
  • make deploy ARGS="--network sepolia"
  • make install

Resources