Apa itu smart contract?
Apa itu smart contract? Pelajari cara kerja program blockchain yang berjalan sendiri, apa saja yang ditenagainya, batasan dan risikonya, serta cara memeriksanya sebelum Anda menggunakannya.
Smart contract adalah program yang disimpan di blockchain dan berjalan secara otomatis ketika kondisi yang telah ditentukan terpenuhi. Program ini dapat menyimpan dan memindahkan dana sesuai kodenya, tanpa bank, broker, atau perantara lain yang memutuskan apakah setiap langkah akan dijalankan.
Smart contract menjadi fondasi hampir semua hal di dunia kripto yang melampaui pembayaran sederhana: token, bursa terdesentralisasi, protokol pinjaman, NFT, dan DAO. Memahami apa yang bisa dan tidak bisa dilakukannya membantu Anda menilai peluang sekaligus risiko penggunaannya.
Cara kerja smart contract
Gagasan tentang kontrak yang ditegakkan oleh kode dijelaskan oleh ilmuwan komputer Nick Szabo pada 1990-an, dengan analogi mesin penjual otomatis: masukkan koin yang tepat, pilih produk, dan mesin akan mengeluarkannya tanpa perlu penjaga toko.
Di blockchain, prosesnya seperti ini:
- 1Pengembang menulis kode, misalnya dalam Solidity untuk Ethereum atau Rust untuk beberapa jaringan lain.
- 2Kode di-deploy melalui sebuah transaksi dan mendapatkan alamatnya sendiri.
- 3Pengguna memanggil kontrak dengan mengirim transaksi ke alamat tersebut, sering kali disertai token.
- 4Setiap node menjalankan kode dan menyepakati hasilnya, sehingga hasilnya sama bagi semua orang.
- 5Status kontrak diperbarui — saldo, catatan kepemilikan, atau pengaturan berubah di on-chain.
Setiap langkah dikenai biaya jaringan. Di Ethereum, biaya itu disebut gas; lihat apa itu gas di Ethereum untuk memahami cara kerjanya.
Untuk apa smart contract digunakan
| Penggunaan | Apa yang dilakukan kontrak | Contoh |
|---|---|---|
| Token | Mencatat saldo dan transfer | Kontrak token ERC-20 |
| Bursa terdesentralisasi | Menyimpan pool token dan menentukan harga transaksi dengan rumus | Automated market maker (AMM) |
| Pinjaman | Menerima jaminan, memberikan pinjaman, melikuidasi posisi berisiko | Pasar uang DeFi |
| NFT | Mencatat kepemilikan item unik | Kontrak NFT sebuah koleksi |
| DAO | Menghitung suara dan menjalankan proposal yang disetujui | Kontrak tata kelola on-chain |
| Dompet multisig | Mewajibkan beberapa persetujuan untuk memindahkan dana | Kas (treasury) sebuah proyek |
Banyak dari kontrak ini saling memanggil, itulah sebabnya DeFi kadang disebut sebagai “lego uang”. Panduan kami tentang DeFi menunjukkan bagaimana kepingan-kepingan ini saling terhubung.
Smart contract vs kontrak tradisional
Ada baiknya membandingkan smart contract dengan perjanjian kertas yang dikenal kebanyakan orang.
| Kontrak tradisional | Smart contract | |
|---|---|---|
| Ditulis dalam | Bahasa manusia | Kode pemrograman |
| Ditegakkan oleh | Pengadilan, lembaga, iktikad baik para pihak | Jaringan blockchain yang menjalankan kode |
| Fleksibilitas | Dapat dinegosiasikan ulang atau ditafsirkan | Berjalan persis seperti yang tertulis kecuali dirancang agar dapat di-upgrade |
| Transparansi | Biasanya bersifat pribadi | Kode dan aktivitas sering kali publik di on-chain |
| Penyelesaian sengketa | Hakim, arbiter, pengacara | Tidak ada cara bawaan untuk menangani sengketa di luar kode |
| Kecepatan | Berhari-hari hingga berbulan-bulan untuk penyelesaian | Hitungan detik hingga menit, tergantung jaringan |
Kelebihannya adalah kecepatan, transparansi, dan hilangnya perantara. Kelemahannya adalah kekakuan: kode tidak dapat menimbang keadilan atau konteks. Jika terjadi sesuatu yang tak terduga yang tidak direncanakan pengembang, kontrak hanya mengikuti aturannya — bahkan ketika hasilnya jelas bukan yang diinginkan siapa pun. Kami membahasnya lebih rinci di Apa itu testnet dan mainnet?
Siapa yang menulis dan mengendalikan smart contract
Siapa pun dapat men-deploy smart contract; tidak ada proses persetujuan di blockchain publik. Keterbukaan ini memungkinkan inovasi yang cepat, tetapi juga berarti kontrak penipuan sama mudahnya di-deploy seperti kontrak yang sah. Setelah di-deploy, kendali bergantung pada cara kontrak ditulis: ada yang sama sekali tidak memiliki pemilik, ada yang dikendalikan oleh satu dompet, dan ada pula yang dikendalikan oleh multisig atau pemungutan suara DAO dengan jeda waktu. Mengetahui model mana yang berlaku adalah bagian penting dalam menilai risiko aplikasi apa pun. Bacaan terkait: Eksploitasi smart contract.
Apa yang tidak bisa dilakukan smart contract
Smart contract memang andal, tetapi cakupannya sempit.
- Smart contract hanya mengenal data on-chain. Untuk memakai informasi dunia nyata seperti harga atau hasil pertandingan olahraga, smart contract bergantung pada oracle, yang membawa data eksternal ke on-chain dan bisa gagal atau dimanipulasi.
- Smart contract tidak memahami niat. Jika Anda mengirim dana ke fungsi yang salah atau menandatangani persetujuan berbahaya, kontrak akan melakukan apa yang diperintahkan kodenya.
- Smart contract tidak otomatis menjadi kontrak hukum. Eksekusi kode dan keberlakuan hukum adalah dua hal yang berbeda.
- Smart contract tidak bisa membatalkan kesalahan. Transaksi yang sudah selesai umumnya tetap selesai.
Risiko menggunakan smart contract
Bug dan eksploitasi
Kode ditulis oleh manusia, dan kesalahan bisa terjadi. Penyerang mencari celah dan dapat menguras dana dalam satu transaksi. Audit membantu, tetapi tidak dapat menjamin keamanan — lihat cara menilai laporan audit smart contract.
Kunci admin dan upgrade
Banyak kontrak dapat di-upgrade atau memiliki fungsi pemilik yang dapat menjeda perdagangan, mengubah biaya, atau mencetak token baru. Fungsi ini dapat melindungi pengguna dalam keadaan darurat, tetapi juga membuka kemungkinan penyalahgunaan atau pencurian kunci admin. Bacaan terkait: Penjelasan account abstraction.
Kontrak berbahaya
Token penipuan dapat berisi aturan tersembunyi, misalnya memblokir penjualan atau memungut pajak transfer yang sangat besar. Sebuah kontrak dapat terlihat normal di halaman token, tetapi berperilaku sangat berbeda dalam praktiknya. Lihat juga: ICO vs IEO vs IDO.
Persetujuan (approval)
Menggunakan DeFi sering kali mengharuskan Anda menyetujui sebuah kontrak untuk membelanjakan token Anda. Persetujuan tanpa batas untuk kontrak yang ber-bug atau berbahaya kelak dapat digunakan untuk mengambil token tersebut. Jika ingin mendalami lebih jauh, baca Apa itu mempool?
Cara memeriksa smart contract sebelum menggunakannya
- 1Konfirmasikan alamatnya dari situs resmi proyek dan sumber independen.
- 2Cari di block explorer untuk melihat tanggal pembuatan, aktivitas, dan apakah kode sumbernya sudah terverifikasi.
- 3Periksa audit dari perusahaan ternama, dan baca apakah masalah yang ditemukan sudah diperbaiki.
- 4Cari tahu siapa yang mengendalikan fungsi admin — multisig, timelock, atau satu dompet.
- 5Mulailah dari jumlah kecil dan batasi persetujuan token sesuai jumlah yang Anda butuhkan.
Panduan kami tentang cara memverifikasi alamat kontrak resmi sebuah token membahas dua langkah pertama secara rinci.
Kesimpulan
Smart contract adalah kode yang berjalan sendiri di blockchain dan dapat menyimpan serta memindahkan nilai tanpa perantara. Hal ini memungkinkan keuangan yang terbuka dan dapat diprogram, tetapi juga berarti bug, wewenang admin tersembunyi, dan kode berbahaya bekerja secara instan dan tidak dapat dibatalkan. Verifikasi alamatnya, pahami siapa yang mengendalikan kontrak, dan setujui hanya yang Anda butuhkan.
Pertanyaan umum
Apakah smart contract mengikat secara hukum?
Tidak secara otomatis. Smart contract adalah perangkat lunak yang dijalankan di blockchain, bukan perjanjian hukum dengan sendirinya. Beberapa sistem hukum mungkin mengakui perjanjian yang dicatat atau dijalankan dengan kode, tetapi hal ini bergantung pada negara dan situasinya. Jika keberlakuan hukum penting, periksa hukum setempat atau tanyakan kepada profesional yang kompeten.
Bisakah smart contract diubah setelah di-deploy?
Kode yang sudah di-deploy biasanya tidak bisa diedit. Namun, banyak proyek menggunakan desain yang dapat ditingkatkan, seperti kontrak proxy, yang memungkinkan admin mengarahkan pengguna ke kode baru. Fleksibilitas itu membantu memperbaiki bug, tetapi juga berarti ada pihak yang berkuasa mengubah aturan. Periksa siapa yang mengendalikan kunci upgrade atau kunci admin.
Blockchain mana saja yang mendukung smart contract?
Ethereum mempopulerkan smart contract serbaguna, dan banyak jaringan lain juga mendukungnya, termasuk BNB Chain, Solana, Avalanche, Cardano, dan jaringan layer-2 Ethereum. Bitcoin sengaja dirancang hanya mendukung scripting terbatas. Setiap platform memakai bahasa dan perangkatnya sendiri, sehingga kontrak tidak otomatis bisa dipindahkan antarplatform.
Apa yang terjadi jika smart contract memiliki bug?
Kode berjalan persis seperti yang tertulis, termasuk bug-nya. Penyerang dapat mengeksploitasinya untuk menguras dana, dan transaksi biasanya tidak dapat dibatalkan. Beberapa proyek dapat menjeda atau meng-upgrade kontrak untuk membatasi kerugian, sedangkan kontrak yang tidak dapat diubah sama sekali tidak bisa diperbaiki. Audit dan program bug bounty mengurangi risiko ini, tetapi tidak menghilangkannya.
