Lompat ke konten utama
Change page

Berinteraksi dengan kontrak pintar

Anda tidak selalu perlu menulis dan menyebarkan kontrak pintar Anda sendiri. Sebagian besar waktu sebagai pengembang, Anda akan ingin berinteraksi dengan kontrak pintar yang telah disebarkan orang lain ke jaringan Ethereum.

Halaman ini mencakup dua cara mendasar untuk berinteraksi dengan kontrak pintar—membaca data dan menulis data—serta alat yang Anda butuhkan untuk melakukan keduanya.

Prasyarat

Anda harus memahami:

Dua cara untuk berinteraksi dengan kontrak pintar

Berinteraksi dengan kontrak pintar terbagi dalam dua kategori:

Membaca dari kontrak

Membaca adalah operasi gratis yang tidak membuat transaksi dan tidak mengubah state apa pun di rantai blok.

Saat Anda membaca dari kontrak, Anda hanya menanyakan data yang sudah ada. Misalnya:

  • Memeriksa saldo token ERC-20
  • Membaca harga saat ini dari bursa terdesentralisasi
  • Mendapatkan pemilik NFT

Karena membaca tidak memodifikasi state, mereka tidak memerlukan biaya gas dan dapat dilakukan oleh siapa saja tanpa memerlukan ETH.

Menulis ke kontrak

Menulis adalah operasi pengubah state yang memerlukan transaksi dan membutuhkan biaya gas.

Saat Anda menulis ke kontrak, Anda memicu fungsi yang memodifikasi state rantai blok. Misalnya:

  • Mentransfer token
  • Menukar token di bursa terdesentralisasi
  • Mencetak NFT

Menulis selalu memerlukan:

  1. Akun yang Dimiliki Secara Eksternal (EOA) dengan ETH yang cukup untuk gas
  2. Transaksi yang ditandatangani oleh kunci privat akun
  3. Transaksi untuk ditambang dan dimasukkan ke dalam blok

Dengan abstraksi akun, akun kontrak pintar juga dapat memulai penulisan, dan juru bayar dapat menanggung gas atas nama pengguna—sehingga EOA yang memegang ETH tidak sepenuhnya diwajibkan.

Memahami ABI kontrak

Untuk berinteraksi dengan kontrak pintar, aplikasi Anda perlu mengetahui apa yang dapat dilakukan kontrak tersebut. Di sinilah Application Binary Interface (ABI) berperan.

ABI adalah dokumen JSON yang menjelaskan:

  • Setiap fungsi yang diekspos kontrak (nama, input, output)
  • Setiap peristiwa yang dapat dipancarkan kontrak
  • Cara menyandikan dan memecahkan sandi data saat berkomunikasi dengan kontrak

Anggap ABI sebagai manual instruksi kontrak—tanpanya, aplikasi Anda tidak tahu fungsi mana yang ada atau parameter apa yang mereka harapkan.

Di mana menemukan ABI kontrak

  • Kontrak terverifikasi di Etherscan - Etherscan (terbuka di tab baru) secara otomatis mengekspos ABI untuk kode sumber yang terverifikasi
  • Dari pengembang - banyak proyek menerbitkan ABI mereka dalam dokumentasi atau paket npm mereka
  • Hasilkan dari sumber - jika Anda memiliki kode sumber Solidity, Anda dapat mengkompilasinya untuk menghasilkan ABI

Alat dan pustaka untuk berinteraksi dengan kontrak

Pengembang biasanya menggunakan pustaka JavaScript/TypeScript untuk berinteraksi dengan kontrak dari aplikasi web, backend, atau skrip.

Pustaka klien (JavaScript/TypeScript)

Pustaka backend

Contoh: membaca saldo token dengan Viem

Contoh: mengirim transaksi dengan ethers.js

Peristiwa dan log

Kontrak pintar dapat memancarkan peristiwa untuk memberi sinyal bahwa sesuatu telah terjadi. Aplikasi Anda dapat mendengarkan peristiwa ini untuk bereaksi secara waktu nyata.

Mensimulasikan transaksi

Sebelum mengirim transaksi, Anda dapat mensimulasikannya untuk memeriksa apakah transaksi tersebut akan berhasil—dan untuk melihat nilai kembaliannya—tanpa menghabiskan gas. Ini berguna untuk menangkap kesalahan lebih awal dan untuk mempratinjau hasil.

Sebagian besar pustaka klien mendukung ini melalui eth_call:

// Dengan Viem
const result = await client.simulateContract({
  address: contractAddress,
  abi,
  functionName: 'swap',
  args: [amountIn],
  account: userAddress,
})

Dompet dan penandatanganan

Dalam aplikasi terdesentralisasi (dapp), dompet pengguna (seperti MetaMask, Rainbow, atau WalletConnect) menangani penandatanganan. Anda tidak mengelola kunci privat secara langsung.

Pustaka dompet dan alat koneksi mengabstraksi ini sehingga Anda dapat fokus membangun logika aplikasi Anda.

Bacaan lebih lanjut