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, kontrak boleh membenarkan pemindahan hanya selepas syarat dipenuhi, menjejaki peserta atau mengemas kini rekod selepas operasi berjaya. Apabila seseorang menyerahkan transaksi, rangkaian melaksanakan kod dan merekodkan hasilnya.

Dua batasan penting sejak awal:

  • “Pintar” tidak bermakna program boleh berfikir atau menilai niat.
  • “Kontrak” tidak secara automatik memberikan kod status undang-undang sebagai suatu perjanjian.

Kontrak pintar melakukan tepat seperti yang dibenarkan oleh kodnya. Jika logik mengandungi bug, fungsi pentadbiran yang tidak selamat atau andaian yang salah, blockchain tidak membetulkannya secara automatik.

Inti pati utama

  • Kontrak pintar ialah kod dan data yang disimpan pada alamat blockchain.
  • Rangkaian melaksanakan fungsinya mengikut peraturan yang telah ditetapkan.
  • Operasi yang telah disahkan tidak boleh disunting begitu sahaja selepas berlaku.
  • Sesetengah kontrak direka dengan parameter boleh laras atau logik yang boleh dinaik taraf.
  • Pengguna harus memeriksa bukan sahaja alamat kontrak, tetapi juga peranan, kebenaran dan mekanisme peningkatannya.

Cara mudah memahami kontrak pintar

Bayangkan sebuah loker simpanan automatik.

  1. Peraturannya menyatakan: “Penerima hanya boleh membuka loker selepas tarikh yang ditetapkan.”
  2. Pengirim mendepositkan aset.
  3. Penerima cuba membukanya terlalu awal, lalu mesin menolak.
  4. Selepas tarikh tersebut tiba, permintaan yang sama berjaya jika semua syarat lain dipenuhi.

Perbezaannya ialah kontrak pintar tidak dilaksanakan oleh pelayan satu syarikat. Rangkaian blockchain memproses arahan, mencapai hasil bersama dan merekodkannya.

Ini tidak bermakna kontrak mengetahui secara automatik sama ada bungkusan telah dihantar, keadaan cuaca atau kadar pertukaran yang sepatutnya. Blockchain berfungsi dengan pasti berdasarkan data yang tersedia kepadanya. Maklumat daripada dunia luar memerlukan sumber tambahan yang sering dipanggil oracle. Hasilnya turut bergantung pada sumber tersebut.

Kod, keadaan dan transaksi

Kontrak pintar mempunyai 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 awam biasanya tidak mengubah keadaan. Tindakan yang mengubah sesuatu—seperti memindahkan token atau mendaftarkan penyertaan—memerlukan transaksi. Pengguna menandatanganinya, rangkaian memprosesnya dan yuran biasanya dikenakan.

Selepas dimasukkan dan dimuktamadkan, transaksi menjadi sebahagian daripada sejarah rantaian. Transaksi kemudian mungkin mengubah keadaan semasa jika kod membenarkannya, tetapi tidak menulis semula rekod terdahulu. Kedua-dua peristiwa kekal kelihatan.

Maksud sebenar “tidak boleh diubah secara retroaktif”

Katakan kontrak merekodkan pemindahan 100 token daripada alamat A ke alamat B. Selepas pengesahan, pentadbir tidak boleh membuka blok tersebut dan menggantikan 100 dengan 10 seolah-olah operasi asal tidak pernah berlaku. Mereka juga tidak boleh menggantikan penerima secara senyap dalam transaksi yang telah disahkan.

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.

Itulah sebabnya sejarah on-chain dapat menyokong pengesahan bebas: pemerhati yang berbeza boleh menanyakan rangkaian dan memeriksa urutan peristiwa yang sama.

Masih tidak tepat untuk mengatakan bahawa blockchain “tidak boleh berubah dalam apa jua keadaan.” Rangkaian mempunyai model kemuktamadannya sendiri dan kekal terdedah kepada kegagalan protokol atau serangan. Maksud praktikalnya lebih khusus: dalam operasi normal, pengguna atau pentadbir aplikasi tidak boleh menyunting rekod blockchain yang disahkan seperti baris dalam pangkalan data peribadi.

Adakah itu bermakna kontrak tidak boleh berubah sama sekali?

Tidak semestinya. Di sinilah frasa “kontrak yang tidak boleh diubah” sering disalahfahami.

1. Kontrak yang tidak boleh dinaik taraf

Kod yang telah digunakan terus berjalan mengikut logik asalnya. Pembangun boleh menggunakan kontrak baharu pada alamat baharu, tetapi alamat lama dan sejarahnya kekal. Pengguna mesti berpindah ke versi baharu secara sengaja.

2. Kontrak dengan parameter boleh laras

Kod mungkin merangkumi fungsi pentadbir yang mengubah had, menjeda operasi, mengurus allowlist atau mengemas kini penerima yuran. Fungsi ini masih memerlukan transaksi baharu dan hanya boleh menggunakan kuasa yang terdapat dalam kod.

Ini tidak menulis semula sejarah, tetapi boleh mengubah peraturan bagi operasi masa hadapan.

3. Seni bina yang boleh dinaik taraf

Reka bentuk lazim menggunakan kontrak proksi. Alamat proksi kekal sama sambil meneruskan panggilan ke kontrak pelaksanaan yang berasingan. Jika tadbir urus boleh mengubah pelaksanaan itu, tingkah laku masa hadapan pada alamat proksi boleh berubah.

Ini bermakna “alamat tidak berubah” tidak semestinya bermaksud “logik tidak pernah berubah.” Semakan yang teliti bertanya:

  • Adakah alamat itu proksi?
  • Siapakah yang boleh menaik taraf pelaksanaan?
  • Adakah satu tandatangan mencukupi, atau beberapa tandatangan diperlukan?
  • Adakah terdapat kelewatan masa?
  • Bolehkah operasi dijeda?
  • Parameter manakah yang boleh diubah oleh pentadbir?

Contoh: mengubah had

Bayangkan kontrak dengan had harian 1,000 unit.

  • Pada hari Isnin, pengguna menyelesaikan operasi 800 unit.
  • Pada hari Selasa, alamat yang diberi kuasa mengubah had kepada 500 melalui transaksi baharu.
  • Operasi hari Isnin tidak hilang atau menjadi rekod yang berbeza.
  • Mulai hari Selasa, kontrak menggunakan had 500 unit jika itulah yang ditetapkan oleh logiknya.

Penjelajah blok boleh menunjukkan kedua-dua transaksi. Memahami kesannya masih memerlukan pengetahuan tentang fungsi yang dipanggil dan kuasa yang dimiliki fungsi tersebut.

Perkara yang dibuktikan oleh blockchain—dan yang tidak dibuktikannya

Blockchain awam boleh membantu mengesahkan:

  • alamat yang mengambil bahagian;
  • waktu dan status transaksi;
  • aset dan jumlah yang dipindahkan;
  • fungsi yang dipanggil, apabila data dinyahkod dengan betul;
  • peristiwa dan urutan operasi;
  • kod sumber, apabila telah disahkan terhadap bytecode yang digunakan.

Deployment on a blockchain does not by itself guarantee:

  • ketiadaan pepijat atau kelemahan;
  • pembangun yang jujur;
  • kemampanan ekonomi;
  • data luaran yang tepat;
  • ketiadaan kuasa pentadbir;
  • perlindungan undang-undang;
  • pemulihan selepas pemindahan yang salah.

Ketelusan bermaksud bukti boleh diperiksa. Ia tidak bermakna semua yang kelihatan adalah selamat.

Senarai semak praktikal 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 tandatangan pengguna penting

Kontrak pintar tidak memperoleh akses kepada keseluruhan dompet secara automatik. Ia menerima panggilan tertentu dan hanya boleh menggunakan kebenaran yang telah diberikan.

Walau bagaimanapun, tandatangan mungkin membenarkan lebih daripada pemindahan ringkas. Ia boleh meluluskan perbelanjaan token, memberikan elaun tanpa had, menukar aset, memindahkan NFT atau mencetuskan urutan panggilan yang kompleks.

Jika dompet tidak dapat menerangkan permintaan dengan jelas, pengguna menghadapi risiko “tandatangan buta”. Transaksi tidak harus diluluskan hanya kerana pautan datang daripada sembang yang dikenali atau laman web menyerupai laman rasmi.

Kesimpulan

Kontrak pintar bukan janji atau jaminan ajaib tentang keadilan. Ia ialah program yang melaksanakan peraturan berkod dan meninggalkan sejarah yang boleh disahkan.

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 Lanjut