Study
Truffle

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.

Editor Latihan

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.