Smart contract crypto adalah kode yang berjalan dalam lingkungan blockchain ketika dipicu oleh transaksi atau mekanisme yang didukung jaringan. Kode tersebut menerapkan aturan yang diprogram untuk memproses input dan, jika berhasil, dapat mengubah state on-chain atau mengelola aset di jaringan. Namun, smart contract bukan aplikasi lengkap dengan sendirinya, tidak memahami maksud manusia, dan tidak otomatis membuktikan fakta di luar blockchain.

Pengertian smart contract crypto

Smart contract adalah perangkat lunak yang menetapkan perilaku tertentu dalam sistem blockchain. Dalam penggunaan istilah ini, “contract” merujuk pada kode, bukan jaminan bahwa suatu kesepakatan hukum telah terbentuk. Kode mengikuti instruksi yang ditulis dan data yang tersedia baginya; ia tidak menafsirkan konteks seperti manusia.

Pada contoh Ethereum, smart contract yang telah diterapkan berada pada alamat blockchain dan berisi fungsi yang dapat dijalankan serta data state. Fungsi adalah operasi yang disediakan kode, sementara state adalah data yang disimpan sistem mengenai kondisi kontrak. Ketika kontrak dipanggil, instruksi yang dijalankan ditentukan program, parameter, dan state yang berlaku. Kerangka ini menjelaskan mekanisme teknisnya, bukan memastikan bahwa program tersebut benar, aman, atau cocok untuk setiap tujuan.

Smart contract juga dapat menjadi komponen dalam aplikasi yang lebih besar. Sebuah aplikasi dapat memiliki antarmuka untuk membantu pengguna mengirim instruksi, sementara tindakan yang diminta diproses oleh kode on-chain. Karena itu, melihat atau berinteraksi dengan antarmuka tidak berarti seluruh aplikasi berada di blockchain.

Bagaimana smart contract dijalankan di blockchain

Secara sederhana, prosesnya bergerak dari instruksi menuju pemrosesan, lalu hasil. Detail transaksi dan aturan eksekusi berbeda antarjaringan, jadi alur Ethereum berikut merupakan contoh spesifik, bukan aturan universal.

  1. Instruksi diajukan. Pengguna atau sistem mengirim transaksi yang memanggil fungsi kontrak. Dalam model transaksi Ethereum, instruksi dapat membawa tujuan, nilai atau data kontrak, nonce, batas gas, dan parameter biaya, serta memerlukan tanda tangan yang mengotorisasi pengirim. Dompet atau aplikasi menyusun dan menampilkan transaksi; protokol jaringan menentukan bagaimana transaksi itu diproses.
  2. Jaringan memeriksa dan menjalankan operasi. Node memproses transaksi berdasarkan aturan jaringan. Pada model blockchain yang menjalankan smart contract, peserta yang memvalidasi eksekusi harus memperoleh hasil yang sama dari input dan kode yang sama, sesuai aturan protokol. Smart contract tidak membuat keputusan baru berdasarkan niat yang tidak tertulis; ia menjalankan langkah yang didefinisikan program.
  3. Hasil tercatat atau eksekusi gagal. Jika operasi berhasil, perubahan state dapat menjadi bagian dari state blockchain. Jika eksekusi gagal, tindakan yang diminta tidak berhasil sebagaimana dimaksud. Pada Ethereum, transaksi yang mengubah state disiarkan, dapat dipilih ke dalam blok, lalu dieksekusi; setelah itu, ia dapat memperoleh konfirmasi atau finalitas lebih lanjut. Maka, mengirim atau menyiarkan transaksi saja tidak sama dengan memastikan hasil akhirnya.

Gas adalah sumber daya yang terkait dengan eksekusi smart contract di Ethereum. Besaran dan perilaku biaya tidak dapat digeneralisasi untuk semua jaringan atau aplikasi tanpa bukti khusus. Demikian pula, aturan konfirmasi, finalitas, dan kemungkinan pemulihan bergantung pada jaringan dan rancangan aplikasi. Jangan menyimpulkan dari kata “blockchain” bahwa setiap transaksi selalu langsung final atau bahwa semua aplikasi punya mekanisme pembatalan yang sama.

Perbedaan smart contract, dApp, dan kontrak biasa

Smart contract adalah kode yang menjalankan aturan tertentu di blockchain. dApp—singkatan dari aplikasi terdesentralisasi—dapat menggabungkan smart contract dengan antarmuka pengguna. Antarmuka memungkinkan pengguna mengirim permintaan atau melihat informasi, tetapi bukan kontraknya sendiri. Aplikasi juga dapat mengandalkan layanan atau komponen lain di luar blockchain.

Kontrak biasa biasanya berarti kesepakatan komersial atau hukum antara pihak-pihak. Smart contract, sebaliknya, adalah istilah teknis untuk perangkat lunak. Kode dapat digunakan untuk menjalankan sebagian aturan yang berkaitan dengan suatu proses, tetapi penyebutan “contract” pada nama teknologi tidak dengan sendirinya membuktikan adanya kesepakatan yang dapat ditegakkan. Artikel ini membedakan istilah teknis dari istilah sehari-hari tanpa menyimpulkan status hukum di yurisdiksi tertentu.

Pemisahan ini berguna saat menilai apa yang dilakukan suatu sistem. Kode kontrak menentukan operasi on-chain yang tersedia; antarmuka membantu pengguna mengajukan operasi; dan komponen lain dapat menyediakan fungsi pendukung. Peran tersebut jangan disamakan: perilaku sebuah antarmuka tidak selalu menjelaskan seluruh aturan kontrak, dan kode kontrak bukan keseluruhan dApp.

Apa yang dapat dan tidak dapat dilakukan smart contract

Smart contract dapat menjalankan tindakan yang telah diprogram ketika dipanggil dengan input yang sesuai. Sebagai contoh umum, kontrak yang diterapkan dapat menampung dan mengelola aset on-chain, lalu menerapkan tindakan terprogram ketika menerima atau mentransfer aset. Perilaku itu tetap memerlukan transaksi atau pemicu lain yang didukung, gas pada Ethereum, serta kode dan input yang berfungsi sebagaimana dirancang.

Kemampuan tersebut tidak berarti kontrak dapat mengamati dunia nyata secara mandiri. Informasi yang tidak tercatat dalam state blockchain—misalnya fakta eksternal yang harus dipasok dari luar jaringan—tidak otomatis tersedia bagi kode. Sistem dapat memakai mekanisme seperti oracle atau transaksi untuk memasukkan informasi eksternal, tetapi mekanisme itu membawa asumsi mengenai sumber data, pembaruan, ketersediaan, dan kepercayaannya.

Karena itu, jika sebuah proses bergantung pada apakah barang telah dikirim, apakah suatu pernyataan benar, atau apakah kejadian di luar jaringan berlangsung, kode hanya dapat bertindak berdasarkan informasi yang disediakan melalui mekanisme yang diterapkan. Smart contract tidak secara mandiri memeriksa kejadian tersebut atau memahami maksud pihak-pihak yang terlibat.

Risiko dan batasan yang perlu dipahami

Kode dapat memiliki kesalahan, dan program dapat berperilaku berbeda dari yang diharapkan jika logika, input, atau asumsi desainnya keliru. Penggunaan Solidity pun tidak dengan sendirinya menjamin kebenaran atau keamanan: bug pada perangkat lunak, compiler, maupun platform tetap mungkin terjadi. Karena itu, dokumentasi Solidity menganjurkan praktik pengembangan seperti peninjauan dan pengujian; praktik tersebut merupakan bagian dari kehati-hatian, bukan jaminan bahwa tidak akan ada masalah.

Interaksi dengan komponen lain juga memperluas hal-hal yang perlu diperhatikan. Sebuah kontrak dapat memanggil komponen on-chain lain melalui antarmuka publik, tetapi setiap dependensi menambahkan asumsi mengenai perilaku, ketersediaan, izin, pembaruan, dan kondisi ekonominya. Jika kontrak eksternal menerima kendali saat suatu operasi belum selesai, interaksi dapat membuka risiko seperti reentrancy. Pola checks-effects-interactions—memeriksa kondisi, mencatat perubahan state internal, kemudian berinteraksi dengan kontrak eksternal—mengurangi satu kelas risiko tersebut, tetapi tidak membuktikan bahwa seluruh sistem aman.

Pada Ethereum, interaksi smart contract umumnya digambarkan sebagai tidak dapat dibalik, dan kontrak tidak dapat dihapus secara default. Namun, mekanisme khusus pada desain kontrak atau jaringan dapat memengaruhi hasil praktis. Jadi, dua kesimpulan ekstrem sama-sama tidak tepat: jangan menganggap semua perubahan mudah dipulihkan, dan jangan menganggap rincian pemulihan identik untuk setiap aplikasi. Periksa aturan dan mekanisme yang berlaku pada sistem tertentu.

Intinya, smart contract adalah perangkat lunak yang menerapkan aturan on-chain ketika dipanggil, bukan pengganti otomatis bagi antarmuka, sumber informasi eksternal, atau penilaian manusia. Memahami pemisahan antara kode, pemicu transaksi, hasil eksekusi, dan komponen di luar jaringan membantu menjelaskan baik kegunaannya maupun batasnya.

Sources and references