Contract Artifact & ABI (build/contracts/*.json)
Penjelasan
Setiap file di `build/contracts/` adalah artifact JSON yang menyimpan seluruh informasi penting suatu contract: `abi` (interface fungsi dan event), `bytecode` (kode untuk deployment), `deployedBytecode`, dan objek `networks` yang mencatat di network ID mana saja contract ini pernah di-deploy beserta alamatnya. Artifact inilah yang dibaca `artifacts.require()` di dalam migration dan test. Untuk aplikasi front-end yang perlu berinteraksi dengan contract (lewat web3.js atau ethers.js), artifact JSON ini bisa langsung diimpor untuk mengambil field `abi`, tanpa perlu menulis ulang ABI secara manual. Ini membuat artifact Truffle berfungsi sebagai satu sumber kebenaran (single source of truth) antara backend, test, dan front-end.
Contoh Konsep
// Struktur ringkas build/contracts/SimpleBank.json
{
"contractName": "SimpleBank",
"abi": [ /* daftar fungsi dan event */ ],
"bytecode": "0x608060...",
"deployedBytecode": "0x608060...",
"networks": {
"5777": {
"address": "0xCONTRACT_ADDRESS",
"transactionHash": "0xabc..."
}
}
}
// Front-end: import langsung untuk dapat ABI dan alamat
const SimpleBankArtifact = require("./build/contracts/SimpleBank.json");
const abi = SimpleBankArtifact.abi;
Praktikum
Buka file artifact SimpleBank.json hasil migrasi ke development, cari objek networks, dan catat alamat contract yang tercatat di sana untuk network_id Ganache-mu.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Jangan commit folder build/ ke git kalau tim bekerja di network development berbeda-beda — alamat contract di dalamnya cuma valid untuk instance Ganache lokal masing-masing developer.