Interaksi Kontrak lewat ethers.js dari Script
Penjelasan
Setelah contract di-deploy, interaksi selanjutnya (baik dari script otomatisasi maupun aplikasi front-end) dilakukan lewat ethers.js dengan menggabungkan alamat contract dan ABI hasil kompilasi. Fungsi `ethers.getContractAt(namaContract, alamat)` mengembalikan instance contract yang siap dipanggil fungsinya, baik fungsi read-only (otomatis tidak mengirim transaksi) maupun fungsi yang mengubah state (otomatis mengirim transaksi dan butuh signer). Untuk fungsi yang mengubah state, hasil pemanggilan berupa objek transaksi yang perlu di-`wait()` agar script menunggu transaksi ter-mining sebelum melanjutkan, memastikan urutan operasi berikutnya berjalan di atas state yang sudah ter-update.
Contoh Konsep
const { ethers } = require("hardhat");
async function main() {
const address = "0xCONTRACT_ADDRESS";
const counter = await ethers.getContractAt("Counter", address);
// Fungsi read-only, tidak mengirim transaksi
const current = await counter.number();
console.log("Nilai saat ini:", current);
// Fungsi yang mengubah state, mengirim transaksi
const tx = await counter.increment();
await tx.wait();
console.log("Nilai setelah increment:", await counter.number());
}
main();
Praktikum
Tulis script yang terhubung ke contract SimpleBank yang sudah dideploy, memanggil deposit() dengan mengirim 1 ETH, lalu membaca kembali getBalance() untuk memastikan saldo bertambah.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Selalu `await tx.wait()` setelah memanggil fungsi write sebelum membaca state terbaru — tanpa itu, pembacaan berikutnya bisa terjadi sebelum transaksi ter-mining, menghasilkan data lama.