What Is a Smart Contract—and Why Its Rules Cannot Be Changed Retroactively?

Disclaimer: This article is for educational purposes only. It is not financial, legal, or investment advice.

A smart contract is often described as a “digital agreement.” That is a useful analogy, but it is not the full picture. More precisely, a smart contract is a program deployed on a blockchain that stores data and executes predefined instructions.

Sebagai contoh, smart contract dapat mengizinkan transfer hanya setelah suatu kondisi terpenuhi, mencatat peserta, atau memperbarui catatan setelah operasi berhasil. Ketika seseorang mengirimkan transaksi, jaringan mengeksekusi kode dan mencatat hasilnya.

Dua batasan perlu diperhatikan sejak awal:

  • Kata ‘Smart’ tidak berarti bahwa program dapat berpikir atau menilai maksud pengguna.
  • Kata ‘kontrak’ tidak otomatis memberikan status hukum sebuah perjanjian kepada kode.

Smart contract melakukan persis apa yang diizinkan oleh kodenya. Jika logikanya mengandung bug, fungsi administratif yang tidak aman, atau asumsi yang keliru, blockchain tidak akan memperbaikinya secara otomatis.

Poin utama

  • Smart contract adalah kode dan data yang tersimpan pada suatu alamat blockchain.
  • Jaringan menjalankan fungsinya sesuai aturan yang telah ditentukan.
  • Operasi yang telah dikonfirmasi tidak dapat begitu saja diedit setelah terjadi.
  • Beberapa kontrak dirancang dengan parameter yang dapat disesuaikan atau logika yang dapat ditingkatkan.
  • Pengguna harus memeriksa bukan hanya alamat kontrak, tetapi juga peran, izin, dan mekanisme peningkatannya.

Cara sederhana memahami smart contract

Bayangkan sebuah loker penyimpanan otomatis.

  1. Aturannya menyatakan: ‘Penerima hanya boleh membuka loker setelah tanggal yang ditentukan.’
  2. Pengirim menyetorkan aset.
  3. Penerima mencoba membukanya terlalu awal, dan mesin menolak.
  4. Setelah tanggal tersebut tiba, permintaan yang sama akan berhasil jika semua persyaratan lain terpenuhi.

Perbedaannya adalah smart contract tidak dijalankan oleh server milik satu perusahaan. Jaringan blockchain memproses instruksi, mencapai hasil bersama, dan mencatatnya.

Ini tidak berarti kontrak otomatis mengetahui apakah paket telah dikirim, bagaimana cuaca, atau berapa nilai tukar yang seharusnya. Blockchain bekerja secara andal dengan data yang tersedia. Informasi dari dunia luar memerlukan sumber tambahan yang sering disebut oracle. Hasilnya kemudian juga bergantung pada sumber tersebut.

Kode, status, dan transaksi

Smart contract memiliki tiga dimensi penting:

  • Code: its available functions and checks.
  • State: its current data, such as balances, statuses, and configuration values.
  • Transaction history: the sequence of operations that changed that state.

Membaca data publik biasanya tidak mengubah status. Tindakan yang mengubah sesuatu—seperti mentransfer token atau mendaftarkan partisipasi—memerlukan transaksi. Pengguna menandatanganinya, jaringan memprosesnya, dan biaya biasanya dikenakan.

Setelah dimasukkan dan mencapai finalitas, transaksi menjadi bagian dari riwayat rantai. Transaksi berikutnya dapat mengubah status saat ini jika kode mengizinkannya, tetapi tidak menulis ulang catatan sebelumnya. Kedua peristiwa tetap terlihat.

Arti sebenarnya dari ‘tidak dapat diubah secara retroaktif’

Misalkan sebuah kontrak mencatat transfer 100 token dari alamat A ke alamat B. Setelah dikonfirmasi, administrator tidak dapat membuka blok tersebut dan mengganti 100 menjadi 10 seolah-olah operasi awal tidak pernah terjadi. Administrator juga tidak dapat diam-diam mengganti penerima dalam transaksi yang telah dikonfirmasi.

If the code includes a refund, reversal, or compensation function, using it creates a new transaction. The blockchain will show the original action and the later response.

Karena itu, riwayat on-chain dapat mendukung verifikasi independen: pengamat yang berbeda dapat meminta data dari jaringan dan memeriksa urutan peristiwa yang sama.

Tetap tidak tepat untuk mengatakan bahwa blockchain ‘tidak pernah dapat berubah dalam keadaan apa pun’. Setiap jaringan memiliki model finalitas sendiri dan tetap dapat terdampak kegagalan protokol atau serangan. Inti praktisnya lebih terbatas: dalam operasi normal, pengguna atau administrator aplikasi tidak dapat mengedit catatan blockchain yang telah dikonfirmasi seperti mengedit baris dalam basis data privat.

Apakah itu berarti kontrak tidak pernah dapat berubah?

Tidak selalu. Di sinilah istilah ‘kontrak yang tidak dapat diubah’ sering disalahpahami.

1. Kontrak yang tidak dapat diperbarui

Kode yang telah diterapkan terus berjalan dengan logika aslinya. Pengembang dapat menerapkan kontrak baru pada alamat baru, tetapi alamat lama dan riwayatnya tetap ada. Pengguna harus secara sadar berpindah ke versi baru.

2. Kontrak dengan parameter yang dapat disesuaikan

Kode dapat memuat fungsi administrator untuk mengubah batas, menjeda operasi, mengelola daftar izin, atau memperbarui penerima biaya. Fungsi-fungsi tersebut tetap memerlukan transaksi baru dan hanya dapat menggunakan kewenangan yang terdapat dalam kode.

Hal ini tidak menulis ulang masa lalu, tetapi dapat mengubah aturan untuk operasi mendatang.

3. Arsitektur yang dapat diperbarui

Arsitektur yang umum menggunakan kontrak proxy. Alamat proxy tetap sama, sementara panggilan diteruskan ke kontrak implementasi terpisah. Jika tata kelola dapat mengubah implementasi tersebut, perilaku alamat proxy pada masa mendatang juga dapat berubah.

Artinya, ‘alamat tidak berubah’ belum tentu berarti ‘logika tidak pernah berubah’. Peninjauan yang cermat menanyakan:

  • Apakah alamat tersebut merupakan proxy?
  • Siapa yang dapat meningkatkan implementasi?
  • Apakah satu tanda tangan cukup, atau diperlukan beberapa tanda tangan?
  • Apakah ada jeda waktu?
  • Apakah operasi dapat dijeda?
  • Parameter mana yang dapat diubah administrator?

Contoh: mengubah batas

Bayangkan sebuah kontrak dengan batas harian 1.000 unit.

  • Pada hari Senin, pengguna menyelesaikan operasi sebesar 800 unit.
  • Pada hari Selasa, alamat yang berwenang mengubah batas menjadi 500 melalui transaksi baru.
  • Operasi hari Senin tidak menghilang atau berubah menjadi catatan lain.
  • Mulai Selasa, kontrak menerapkan batas 500 unit jika demikian yang ditentukan oleh logikanya.

Penjelajah blok dapat menampilkan kedua transaksi. Untuk memahami dampaknya, Anda tetap perlu mengetahui fungsi mana yang dipanggil dan kewenangan apa yang dimiliki fungsi tersebut.

Hal yang dibuktikan blockchain—dan yang tidak

Blockchain publik dapat membantu memverifikasi:

  • alamat yang berpartisipasi;
  • waktu dan status transaksi;
  • aset dan jumlah yang ditransfer;
  • fungsi yang dipanggil, jika data didekode dengan benar;
  • event dan urutan operasi;
  • kode sumber, jika telah diverifikasi terhadap bytecode yang diterapkan.

Deployment on a blockchain does not by itself guarantee:

  • ketiadaan bug atau kerentanan;
  • pengembang yang jujur;
  • keberlanjutan ekonomi;
  • data eksternal yang akurat;
  • ketiadaan kewenangan administrator;
  • perlindungan hukum;
  • pemulihan setelah transfer yang salah.

Transparansi berarti bukti dapat diperiksa. Transparansi tidak berarti bahwa semua yang terlihat pasti aman.

Daftar periksa praktis sebelum berinteraksi

  1. Verify the address. Obtain it from an official project source and compare it carefully.
  2. Verify the network. The same address format may exist across several EVM networks.
  3. Check source verification. Published source code makes analysis easier, but it is not a security audit.
  4. Look for proxies and upgrades. Identify the implementation and the upgrade authority.
  5. Review administrator powers. Look for owner, admin, pause, upgrade, fee, and access-control functions.
  6. Review token approvals. Before approving, confirm the token, spender, and allowance.
  7. Start small. For a first interaction, consider a small test amount while accounting for fees.

Mengapa tanda tangan pengguna penting

Smart contract tidak secara otomatis memperoleh akses ke seluruh dompet. Kontrak menerima panggilan tertentu dan hanya dapat menggunakan izin yang telah diberikan kepadanya.

Namun, tanda tangan dapat memberikan wewenang lebih dari sekadar transfer sederhana. Tanda tangan dapat menyetujui penggunaan token, memberikan izin tanpa batas, menukar aset, mentransfer NFT, atau memicu rangkaian panggilan yang kompleks.

Jika dompet tidak dapat menjelaskan permintaan dengan jelas, pengguna menghadapi risiko ‘penandatanganan buta’. Transaksi tidak boleh disetujui hanya karena tautannya berasal dari percakapan yang dikenal atau situs webnya menyerupai situs resmi.

Kesimpulan

Smart contract bukan janji maupun jaminan ajaib atas keadilan. Kontrak adalah program yang menjalankan aturan dalam kode dan meninggalkan riwayat yang dapat diverifikasi.

A confirmed operation cannot be quietly edited after the fact. However, future parameters or logic may be changeable if the architecture was designed that way. The most useful question is therefore not only “Is there a smart contract?” but also: “What does its code allow, and who can influence how it works in the future?”


Sumber dan Bacaan Lebih Lanjut