Verifikasi Contract (forge verify-contract)
Penjelasan
Verifikasi contract berarti mengunggah source code Solidity ke block explorer (seperti Etherscan) supaya publik bisa membaca kode asli di balik bytecode yang ter-deploy, membangun kepercayaan dan memudahkan audit. Foundry menyediakan perintah `forge verify-contract` yang otomatis mengirim source code, constructor argument, dan metadata compiler ke API explorer. Proses ini butuh API key dari explorer terkait (misal Etherscan API key) dan alamat contract hasil deploy. Kalau constructor punya parameter, argumen itu perlu di-encode dan disertakan agar verifikasi cocok persis dengan bytecode on-chain.
Contoh Konsep
# Verifikasi contract yang sudah dideploy
forge verify-contract \
0xCONTRACT_ADDRESS \
src/Counter.sol:Counter \
--chain sepolia \
--etherscan-api-key $ETHERSCAN_API_KEY
# Kalau contract punya constructor argument, sertakan encode-nya
forge verify-contract 0xCONTRACT_ADDRESS src/Token.sol:Token \
--chain sepolia \
--constructor-args $(cast abi-encode "constructor(string,string)" "MyToken" "MTK") \
--etherscan-api-key $ETHERSCAN_API_KEY
Praktikum
Deploy contract Counter ke testnet Sepolia lalu verifikasi menggunakan forge verify-contract dengan API key Etherscan yang kamu simpan di .env.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Tambahkan flag `--watch` pada forge verify-contract agar Forge otomatis memantau status verifikasi sampai selesai, tanpa perlu cek manual berulang.