Kontrak pintar
Cara kerja kontrak pintar

Seperti halnya transfer nilai dalam rantai blok, penerapan kontrak pintar di rantai blok dilakukan dengan mengirimkan transaksi dari dompet (wallet) rantai blok. Transaksi ini berisi kode yang telah dikompilasi untuk kontrak pintar serta alamat penerima khusus. Setelah transaksi ini dimasukkan ke dalam sebuah blok dan ditambahkan ke dalam rantai blok, kode kontrak pintar akan dieksekusi untuk menetapkan keadaan awalnya.
Kontrak pintar diamankan dengan algoritma toleran terhadap kesalahan Byzantine (Byzantine fault-tolerant), yang mencegah upaya manipulasi secara terdesentralisasi. Setelah kontrak pintar diterapkan di rantai blok, kode tersebut tidak dapat diperbarui. Kontrak pintar dapat menyimpan berbagai informasi dan menjalankan berbagai perhitungan sesuai dengan kode yang telah ditentukan. Pengguna dapat berinteraksi dengan kontrak pintar melalui transaksi, yang juga bisa memicu eksekusi kontrak pintar lainnya. Transaksi ini dapat mengubah status dalam rantai blok, mengirim koin dari satu kontrak pintar ke kontrak pintar lainnya, atau dari satu akun ke akun lainnya.
Rantai blok yang paling populer untuk menjalankan kontrak pintar adalah Ethereum. di Ethereum, kontrak pintar biasanya ditulis dalam bahasa pemrograman Solidity, yang bersifat Turing-Complete, lalu dikompilasi menjadi bytecode untuk dieksekusi oleh Ethereum Virtual Machine (EVM). Namun, karena adanya masalah halting problem dan risiko keamanan lainnya, beberapa bahasa pemrograman seperti Vyper sengaja menghindari sifat Turing-complete untuk meningkatkan keamanan. Beberapa bahasa pemrograman kontrak pintar lainnya yang tidak memiliki fitur Turing-complete adalah Simplicity, Scilla, Ivy, dan Bitcoin Script.
Pada tahun 2020, penelitian yang menggunakan ekspresi reguler menunjukkan bahwa hanya 35,3% dari 53.757 kontrak pintar Ethereum yang menggunakan rekursi dan perulangan, dua fitur yang berkaitan dengan halting problem.
Beberapa bahasa pemrograman telah dirancang untuk memungkinkan verifikasi formal, yaitu metode untuk memastikan keamanan dan keandalan kode. Bahasa-bahasa tersebut meliputi Bamboo, IELE, Simplicity, Michelson (dapat diverifikkasi dengan Coq), Liquidity (dapat dikompilasi menjadi Michelson), Scilla, DAML, dan Pact.
| Nama | Deskripsi |
| --- | --- |
Ethereum: Mengimplementasikan bahasa pemrograman Turing-complete di rantai blok-nya, menjadikannya sebegai salah satu kerangka kontrak pintar yang paling terkenal.
Bitcoin: Menyediakan bahasa skrip yang Turing-incomplete memungkinkan pembuatan kontrak pintar khusus di atas Bitcoin, seperti dompet mata uang kripto, saluran pembayaran, escrow, time lock, perdagangan lintas rantai (atomic cross-chain trading), oracle, dan sistem loter multi-pihak tanpa operator.
Cardano: Platform rantai blok yang dirancang untuk mendukung kontrak pintar.
Solana: Platform yang mendukung kontrak pintar.
Tron: Platform yang mendukung kontrak pintar.
Tezos: Platform yang mendukung kontrak pintar.
Proses dalam rantai blok umumnya bersifat deterministik untuk memastikan toleransi terhadap kesalahan Byzantine. Namun, dalam penerapan nyata seperti lotere dan kasino, diperlukan elemen keacakan yang aman. Teknologi rantai blok sebenarnya dapat mengurangi biaya dalam penyelenggaraan lotere, sehingga menguntungkan para peserta.
Keacakan dalam rantai blok dapat dihasilkan melalui berbagai cara, seperti menggunakan hash blok atau cap waktu, oracle, skema komitmen, kontrak pintar khusus seperti RANDAO dan Quanta, serta urutan dari keseimbangan Nash dan strategi campuran.