Turing complete: apa artinya, mengapa Ethereum membutuhkannya, dan mengapa Bitcoin memilih untuk menghindarinya
Seorang teman yang bekerja di bidang keuangan tradisional pernah bertanya kepada saya mengapa Ethereum dapat menjalankan seluruh aplikasi keuangan di blockchain-nya, sementara Bitcoin pada dasarnya hanya dapat mengirim uang dari satu alamat ke alamat lain. "Keduanya adalah blockchain," katanya. "Lalu apa perbedaan sebenarnya?"
Saya mencoba menjelaskan kelengkapan Turing dan melihat matanya menjadi kosong. Jadi saya mencoba lagi dengan sebuah analogi. Bitcoin adalah mesin penjual otomatis. Anda memasukkan uang, menekan tombol, dan mendapatkan barang tertentu. Ia melakukan apa yang dirancang untuknya dan tidak lebih. Ethereum adalah dapur dengan seorang koki. Beri koki resep apa pun dan bahan yang cukup, dan mereka dapat membuat apa saja. Perulangan ("aduk hingga kental"), keputusan ("jika terlalu asin, tambahkan air"), kreativitas ("berimprovisasi membuat makanan penutup dari sisa bahan"). Koki dapat mengikuti instruksi apa pun. Mesin penjual otomatis tidak bisa.
Analogi itu tidak sempurna. Seorang ilmuwan komputer akan menunjukkan beberapa hal yang saya sederhanakan. Tetapi itu membuat teman saya mengajukan pertanyaan yang tepat: "Jadi mengapa ada orang yang memilih untuk menjadi mesin penjual otomatis?"
Pertanyaan itu adalah inti dari seluruh perdebatan Turing completeness di dunia kripto. Keamanan versus fleksibilitas. Prediktabilitas versus kekuatan. Bitcoin versus Ethereum. Dan jawabannya, yang menjengkelkan, adalah bahwa kedua belah pihak sama-sama benar.
Asal muasal ide ini dan mengapa makalah matematika tahun 1936 masih relevan
Alan Turing menerbitkan sebuah makalah berjudul "On Computable Numbers" pada tahun 1936. Saat itu ia berusia 23 tahun. Di dalamnya, ia menggambarkan sebuah mesin yang sangat sederhana sehingga terdengar seperti mainan. Sebuah pita yang dibagi menjadi sel-sel. Sebuah kepala yang membaca dan menulis simbol. Aturan-aturan yang memberi tahu kepala apa yang harus dilakukan berdasarkan apa yang dibacanya. Pita, kepala, aturan. Itulah keseluruhan mesinnya.
Inilah bagian yang masih membuat saya merinding. Turing membuktikan bahwa mesin yang sangat sederhana ini dapat menghitung apa pun yang pernah dihitung oleh komputer mana pun. Bukan hanya beberapa hal. Apa pun. Ponsel Anda sedang melakukan operasi pita dan kepala saat ini. Begitu juga server yang menjalankan ChatGPT. Begitu juga chip di mobil Anda. Dia membuktikan semua ini pada tahun 1936, sebelum satu pun komputer elektronik ada di bumi. Makalah ini hampir berusia 90 tahun dan setiap departemen ilmu komputer di planet ini masih mengajarkannya di semester pertama.
Ketika seseorang mengatakan suatu sistem "Turing lengkap," yang mereka maksud adalah sistem tersebut dapat mensimulasikan mesin pita Turing. Sistem tersebut dapat menjalankan perulangan, membuat keputusan berdasarkan data, menyimpan sesuatu di memori, dan mengeksekusi algoritma apa pun. Laptop Anda adalah Turing lengkap. Kalkulator saku bukan. Dan berikut adalah fakta menarik yang saya suka ceritakan kepada orang-orang: Sirkuit Redstone Minecraft secara teknis adalah Turing lengkap. Orang-orang telah membangun komputer yang berfungsi di dalam game tersebut. Bukan komputer yang berguna. Tetapi komputer yang berfungsi.

Bagaimana hal ini terwujud dalam Bitcoin: mengapa Satoshi memilih keterbatasan
Satoshi membangun Bitcoin dengan bahasa pemrograman bernama Bitcoin Script yang sengaja dibuat sederhana. Dengan sengaja. Bahasa ini memverifikasi tanda tangan, menangani dompet multi-tanda tangan, mengunci dana dengan kondisi waktu, dan hanya itu saja. Tidak ada perulangan. Tidak ada percabangan yang kompleks. Tidak ada status yang berlanjut antar transaksi.
Pertama kali saya mengerti mengapa ini penting, saya sedang membaca tentang peretasan DAO di Ethereum (akan saya bahas nanti). Sebuah panggilan fungsi rekursif menguras $150 juta dari kontrak pintar karena kode tersebut dapat memanggil dirinya sendiri dalam loop tak terbatas yang tidak pernah diantisipasi oleh pengembang. Di Bitcoin, peretasan itu tidak mungkin. Bukan tidak mungkin. Mustahil. Bitcoin Script tidak dapat memanggil dirinya sendiri. Tidak dapat melakukan loop. Tidak dapat melakukan rekursi. Bahasa pemrogramannya terlalu terbatas untuk mengekspresikan jenis bug yang merugikan Ethereum $150 juta.
Keterbatasan itulah yang menjadi ciri khasnya. Setiap skrip Bitcoin berakhir dengan dapat diprediksi. Anda dapat membacanya dan mengetahui persis apa yang akan dilakukannya. Tidak ada kejutan. Tidak ada perilaku yang tidak terduga. Ketika Anda mengamankan jaringan yang bernilai lebih dari satu triliun dolar, "membosankan dan dapat diprediksi" bukanlah kelemahan. Itu adalah pilihan desain.
Apa yang dibangun Vitalik dan mengapa hal itu mengubah segalanya
Vitalik Buterin berusia 19 tahun ketika ia menerbitkan whitepaper Ethereum pada tahun 2013. Pertanyaannya sederhana dan radikal: bagaimana jika blockchain itu sendiri dapat menjalankan program apa pun? Bukan hanya "mengirim koin dari A ke B" tetapi apa pun yang dapat dilakukan komputer?
Saya masih kuliah ketika whitepaper Ethereum keluar. Saya membacanya di PDF yang dibagikan seseorang di forum Bitcoin. Setengah dari balasan mengatakan Vitalik adalah seorang jenius. Setengah lainnya mengatakan dia sedang membangun sistem yang akan langsung diretas. Keduanya benar.
Ethereum diluncurkan pada tahun 2015 dengan dua komponen yang membuatnya menjadi Turing complete. Solidity adalah bahasa pemrograman untuk menulis smart contract. Bahasa ini memiliki perulangan, kondisi, penyimpanan status, dan panggilan fungsi. Semua yang Anda butuhkan. Ethereum Virtual Machine menjalankan kontrak-kontrak tersebut di setiap node dalam jaringan secara bersamaan. Bersama-sama, keduanya memungkinkan pengembang untuk menyebarkan kode apa pun yang dapat mereka tulis.
Keputusan itulah yang menjadi alasan keberadaan DeFi. Alasan keberadaan NFT. Alasan keberadaan DAO. Alasan keberadaan miliaran dolar yang mengalir melalui program-program yang tidak dikendalikan oleh satu perusahaan pun. Setiap aplikasi menarik di dunia kripto, dari Uniswap hingga Aave hingga OpenSea, hanya dimungkinkan karena Ethereum dapat menjalankan kode apa pun.
Namun Vitalik mengambil risiko. Ia bertaruh bahwa kekuatan fleksibilitas akan lebih besar daripada risiko kompleksitas. Peretasan DAO pada tahun 2016 menguji taruhan itu dengan keras. Eksploitasi DeFi yang merugikan miliaran dolar setiap tahun terus mengujinya. Dan komunitas Bitcoin terus menunjuk pada kerugian tersebut dan mengatakan "inilah mengapa kami tetap sederhana." Kedua belah pihak memiliki argumen yang valid.
Masalah penghentian dan mengapa biaya gas ada
Inilah bagian yang membuatku susah tidur saat pertama kali memahaminya.
Dalam makalah yang sama tahun 1936, Turing membuktikan sesuatu yang kurang menyenangkan: tidak ada algoritma yang dapat melihat program sembarang dan secara andal menentukan apakah program tersebut akan selesai berjalan atau berulang selamanya. Ini bukan masalah teknologi yang belum kita selesaikan. Ini adalah kemustahilan matematis. Terbukti. Selesai. Tidak ada komputer, seberapa canggih pun, yang dapat menyelesaikan masalah penghentian untuk semua program.
Di laptop saya, perulangan tak terbatas itu menjengkelkan. Saya tekan Ctrl-C. Hidup berjalan seperti biasa. Di blockchain, perulangan tak terbatas itu bencana. Setiap node menjalankan setiap smart contract. Jika satu kontrak tidak pernah berhenti, setiap node di planet ini yang menjalankan blockchain tersebut akan membeku. Jaringan mati.
Solusi Ethereum memang sederhana namun efektif: gas. Setiap komputasi membutuhkan gas. Anda menambahkan gas ke transaksi Anda. Ketika gas habis, kode berhenti. Tidak masalah apakah sudah selesai. Tidak masalah apakah sedang dalam proses mentransfer uang Anda. Gas mencapai nol, eksekusi berakhir. Itulah mengapa biaya gas ETH bervariasi. Transfer sederhana: 21.000 gas. Pertukaran DeFi yang kompleks: 200.000. Pencetakan NFT dengan seni on-chain: setengah juta. Anda membayar berdasarkan seberapa banyak komputasi yang harus dilakukan setiap node.
Bitcoin melihat masalah ini dan berkata "tidak." Tidak dapat menulis sebuah loop, tidak dapat terjebak di dalamnya. Setiap skrip akan berhenti. Tidak diperlukan mekanisme gas. Bahasa yang digunakan terlalu terbatas untuk mengekspresikan "selamanya."
Juni 2016: ketika teori tersebut menjadi kenyataan senilai 150 juta dolar.
Setiap percakapan tentang kelengkapan Turing dalam kriptografi pada akhirnya akan sampai pada momen ini.
DAO adalah dana investasi senilai $150 juta yang berjalan di Ethereum. Kontrak pintar. Tata kelola komunitas. Uang masuk, pemungutan suara menentukan ke mana uang itu keluar. Kode tersebut kompleks. Terdapat perulangan, kondisi, panggilan lintas kontrak, dan status yang berubah di tengah eksekusi. Semua hal yang memungkinkan dalam kelengkapan Turing.
Seseorang menemukan celah. Fungsi penarikan mengirim ETH terlebih dahulu dan memperbarui saldo kedua. Penyerang memanggil fungsi penarikan, menerima pembayaran, dan sebelum saldo diperbarui, fungsi tersebut memanggil dirinya sendiri lagi. Dan lagi. Dan lagi. Reentrancy. Sebuah loop yang tidak pernah dimaksudkan oleh pengembang, menguras uang di setiap siklusnya.
Mungkinkah ini terjadi pada Bitcoin? Tidak. Bitcoin Script tidak dapat memanggil dirinya sendiri. Tidak dapat memanggil skrip lain. Tidak dapat melakukan perulangan. Hal yang membuat Bitcoin membosankan adalah hal yang sama yang membuat serangan khusus ini mustahil.
Komunitas Ethereum memilih untuk melakukan hard-fork pada blockchain dan membalikkan pencurian tersebut. Perpecahan itu menciptakan Ethereum Classic. Para pengembang belajar. Pengamanan reentrancy menjadi standar. Pola "checks-effects-interactions" menjadi pedoman utama. Tetapi kebenaran mendasar tidak berubah: kode Turing-complete selalu dapat mengandung bug yang tidak diantisipasi oleh penciptanya. Itu bukanlah kekurangan pada Ethereum. Itu adalah konsekuensi dari perhitungan matematisnya.

Bitcoin semakin tidak dibatasi: Taproot dan BitVM
Garis batas antara Turing lengkap dan Turing tidak lengkap tidak setajam dulu untuk Bitcoin.
Taproot dirilis pada November 2021 dan memperluas kemampuan Bitcoin Script. Fitur-fitur yang lebih kompleks meliputi pengeluaran bersyarat, privasi yang lebih baik melalui tanda tangan Schnorr, dan Abstract Syntax Tree (AST) berbasis Merkel yang menyembunyikan kondisi transaksi hingga dieksekusi. Meskipun masih belum Turing complete, namun lebih ekspresif dari sebelumnya.
BitVM, yang diusulkan pada tahun 2023, melangkah lebih jauh. Ia menjelaskan sebuah sistem untuk melakukan komputasi arbitrer di luar rantai (off-chain) dan kemudian memverifikasi hasilnya di Bitcoin. Bayangkan seperti ini: komputasi sebenarnya terjadi di tempat lain, dan Bitcoin hanya turun tangan jika seseorang mempersoalkan hasilnya. Secara teori, ini membuat Bitcoin praktis Turing complete untuk kasus penggunaan tertentu tanpa mengubah bahasa skrip itu sendiri.
Saya telah berbicara dengan para pengembang Bitcoin tentang BitVM dan reaksinya menarik. Mereka antusias dengan kemampuannya tetapi takut akan risikonya. Salah satu dari mereka mengatakan kepada saya: "Kami tidak akan terburu-buru. Orang-orang menyimpan satu triliun dolar di dalamnya. Jika kami merusaknya karena mencoba membuatnya lebih canggih, tidak ada yang akan memaafkan kami." Kehati-hatian itu membuat frustrasi jika Anda menginginkan Bitcoin DeFi besok. Namun, itu meyakinkan jika Anda adalah orang yang memiliki satu triliun dolar di sistem tersebut.
Arahnya menuju ekspresivitas yang lebih besar, apa pun yang terjadi. Taproot telah memperluas apa yang mungkin dilakukan. BitVM akan memperluasnya lebih jauh. Tetapi jangan berharap Bitcoin akan menjadi Ethereum. Budaya keduanya terlalu berbeda untuk itu.
Mengapa setiap blockchain baru selalu memilih kelengkapan Turing?
Inilah yang menyelesaikan perdebatan dalam praktiknya: tidak ada lagi yang membangun blockchain yang tidak lengkap secara Turing. Solana, Cardano, Polkadot, Avalanche, BNB Chain. Semuanya lengkap secara Turing. Semuanya mampu menjalankan program apa pun. Pasar memutuskan bahwa kemampuan pemrograman menang, dan satu-satunya pertanyaan sekarang adalah bagaimana membuat sistem yang lengkap secara Turing lebih cepat, lebih murah, dan lebih aman.
Setiap blockchain membuat kompromi yang berbeda. Ethereum memilih EVM dan Solidity (ekosistem terbesar, biaya L1 tertinggi). Solana membangun Sealevel untuk eksekusi paralel menggunakan Rust (cepat tetapi lebih sulit untuk dikembangkan). Cardano memilih Haskell dan verifikasi formal (secara matematis ketat, adopsi lebih lambat). Tetapi mereka semua setuju dengan kelengkapan Turing karena mereka semua ingin menjalankan kontrak pintar, DeFi, NFT, DAO, dan semua hal lain yang membutuhkan logika khusus.
Masalah keamanan itu nyata. Eksploitasi DeFi merugikan miliaran dolar setiap tahun. Peretasan DAO hanyalah permulaan. Tetapi industri menyimpulkan bahwa manfaat dari kemampuan pemrograman lebih besar daripada risikonya. Bahkan Bitcoin, rantai asli yang sengaja dibatasi, bergerak menuju ekspresivitas yang lebih besar dengan Taproot dan BitVM.
Saya sudah cukup lama berkecimpung di dunia kripto sehingga telah menggunakan kedua jenis blockchain secara ekstensif. Saya telah mengirim transaksi Bitcoin yang selalu terkonfirmasi sesuai harapan. Saya juga telah menerapkan smart contract Ethereum yang melakukan hal-hal di luar dugaan saya karena Solidity memungkinkan Anda menulis kode yang cukup kompleks untuk mengejutkan diri sendiri. Kedua pengalaman tersebut telah membentuk pandangan saya.
Perdebatan ini bukan tentang apakah kelengkapan Turing itu baik atau buruk, melainkan lebih tentang apa yang Anda butuhkan. Jika Anda menginginkan sistem pembayaran digital yang sangat aman dan dapat diprediksi, desain Bitcoin masuk akal. Jika Anda ingin membangun aplikasi keuangan, game, sistem identitas, atau apa pun yang membutuhkan logika khusus, Anda membutuhkan kelengkapan Turing. Sebagian besar hal yang membuat kripto menarik saat ini hanya mungkin terjadi karena seorang remaja berusia 19 tahun memutuskan bahwa risikonya layak diambil.
Saya memikirkan hal ini setiap kali saya menggunakan Uniswap atau Aave atau protokol DeFi lainnya. Setiap pertukaran yang saya lakukan adalah kode yang dieksekusi pada mesin virtual Turing-complete. Setiap transaksi membawa risiko teoretis bahwa beberapa bug yang tidak diantisipasi siapa pun dapat menguras seluruh kontrak. Saya tetap menggunakan protokol ini karena utilitasnya sepadan dengan risikonya bagi saya. Tetapi saya tidak pernah lupa bahwa risiko itu ada. Dan saya tidak pernah lupa bahwa Bitcoin memilih jalan yang berbeda, dan jalan itu memiliki kebijaksanaannya sendiri. Mesin penjual otomatis tidak pernah mencuri uang Anda. Koki dapat membakar dapur.