Terapkan kontrak pintar pada Bitcoin dengan mensimulasikan mesin virtual Bitcoin.
Tautan asli: https://github.com/atomicals/avm-whitepaper/blob/main/avm.md
Ringkasan
Sejauh ini, semua protokol aset digital overlay pada Bitcoin mengikuti aturan tetap untuk membuat dan mentransfer aset digital. Dengan mengizinkan pemrogram menentukan logika mesin negara untuk membuat dan mengelola aturan ini, kita dapat mengembangkan kontrak pintar yang sepenuhnya fleksibel (Turing lengkap) untuk aset digital overlay. Kami mengusulkan solusi yang menggunakan Bitcoin sebagai basis data global, menyimpan kode kontrak pintar dalam transaksi, dan mengeksekusi kode-kode ini di lingkungan sandbox dengan melapisi pengindeks aset digital. Kumpulan instruksi opcode Bitcoin Script asli diadopsi sebagai bahasa pemrograman karena memiliki semua properti yang diperlukan untuk eksekusi yang efisien di lingkungan dengan sumber daya terbatas. Hash negara digunakan untuk melacak transaksi overlay dan menyediakan cara mudah bagi peserta untuk memverifikasi status sinkronisasi mereka. Solusi yang kami usulkan adalah langkah alami dalam evolusi protokol aset digital overlay Bitcoin dan berfungsi sebagai platform untuk menguji opcode Bitcoin asli, yang menunjukkan fleksibilitas dan keamanannya.
1. Pendahuluan
Sistem uang elektronik peer-to-peer Bitcoin [1] pada awalnya digunakan terutama sebagai penyimpan nilai, sehingga disebut "emas digital", dan fungsinya sebagai alat tukar relatif kecil. Sebelum Satoshi Nakamoto pergi, dia menonaktifkan banyak Kode Op asli (Kode Op) yang digunakan untuk skrip tingkat lanjut demi alasan keamanan, khususnya untuk menghindari potensi serangan penolakan layanan. Opcode yang dinonaktifkan ini terutama mencakup operasi aritmatika dan biner, yang merupakan operasi mendasar yang diandalkan oleh pengembang di lingkungan pemrograman paling dasar. Tanpa dukungan opcode penting ini, fungsionalitas yang tersedia bagi pengembang aplikasi Bitcoin dan pengguna akhir menjadi sangat terbatas. Secara khusus, opcode "OP_CAT" (koneksi data), yang dapat digunakan untuk membuat batasan konsumsi dan transfer khusus, yang disebut kontrak. Oleh karena itu, karena keputusan bersejarah ini, Bitcoin gagal menjadi platform kontrak pintar kuat yang awalnya dibayangkan oleh Satoshi Nakamoto, dan hanya bisa eksis sebagai sejenis emas digital. Singkatnya, karena penonaktifan opcode kunci ini, Bitcoin harus ada hanya sebagai emas digital dan tidak dapat berkembang menjadi sistem kontrak pintar yang lengkap untuk melindungi sistem uang elektronik yang sedang berkembang ini.
“Sifat Bitcoin adalah setelah versi 0.1 dirilis, desain intinya diperbaiki seumur hidup. Oleh karena itu, saya bermaksud merancangnya untuk mendukung setiap jenis transaksi yang dapat saya pikirkan kode pendukung khusus dan bidang data. , terlepas dari apakah ini digunakan, hanya dapat menangani satu situasi tertentu pada satu waktu, yang dapat menyebabkan perluasan kasus-kasus khusus yang berlebihan. Skrip memberikan solusi yang menggeneralisasi masalah sehingga kedua belah pihak dapat membuat transaksi mereka sendiri predikat yang dievaluasi oleh jaringan node." ——Satoshi Nakamoto[2]
Sejak Bitcoin pertama kali menonaktifkan beberapa opcode, berbagai perlindungan telah diperkenalkan. Salah satu batasan penting adalah MAX_SIGOPS, yang membatasi jumlah maksimum operasi penandatanganan yang diperbolehkan dalam transaksi tertentu. Dengan melihat kembali sejarah, kita dapat mengamati kinerja opcode asli ini dalam versi Bitcoin yang di-fork seperti BSC dan BSV; fork ini mengaktifkan kembali sebagian besar opcode asli beberapa tahun yang lalu. Sejauh ini, opcode ini tidak menimbulkan masalah keamanan atau serangan penolakan layanan, dan hanya menimbulkan sedikit kontroversi. Sebaliknya, mereka sangat memperluas potensi pengembangan fork Bitcoin ini.
Terlepas dari keterbatasan kontrak pintar Bitcoin saat ini, sejumlah protokol overlay telah muncul yang memungkinkan aset digital dibuat dan ditransfer pada Bitcoin itu sendiri. Standar token non-fungible arus utama pertama adalah protokol yang disebut Ordinals, diikuti oleh BRC20, standar token yang sepadan. Tak lama kemudian, lebih banyak protokol aset digital lainnya muncul, seperti Atomics Digital Objects dan ARC20, yang menggunakan unit satoshi sebagai unit akun, serta Bitcoin Stamp dan protokol token fungible Runes terbaru (dirilis pada April 2024). Protokol overlay generasi ini pada dasarnya membuat dan mengelola aset digital melalui transaksi Bitcoin, sedangkan pengindeks protokol overlay melacak dan mengelola siklus hidup aset digital dengan membaca data langsung dari transaksi Bitcoin khusus. Apa yang hilang dari protokol ini adalah kemampuan pengembang untuk menyesuaikan perilaku aset digital — hingga saat ini, belum ada cara untuk membuat kontrak pintar tingkat lanjut untuk protokol overlay ini.
Kami mengusulkan metode untuk membuat dan mengeksekusi kontrak pintar untuk berbagai aset digital overlay dengan mensimulasikan mesin virtual Bitcoin dan penerjemah skripnya. Dalam pendekatan ini, blockchain Bitcoin tidak hanya menyediakan stempel waktu dan data untuk program kontrak pintar yang disimpan dalam rantai, namun pada saat yang sama, eksekusi program ini juga dilakukan di lingkungan sandbox melalui berbagai pengindeks protokol overlay. Node pengindeks protokol overlay dikelola bersama oleh pengembang aplikasi, penyedia layanan, dan pengguna, membentuk konsensus spontan. Konsep ini dan teknologinya dapat diterapkan secara luas pada semua protokol overlay, dengan penyesuaian yang sesuai pada masing-masing pengindeks protokol overlay.
Kami menampilkan kekuatan dan keanggunan desain Bitcoin asli. Paradigma baru ini berfungsi sebagai platform untuk menguji berbagai opcode - meskipun satu untuk protokol overlay aset digital - dan kami berharap Bitcoin pada akhirnya akan dapat mengaktifkan kembali semua opcode asli, sehingga membuka potensi penuh dari ciptaan Satoshi Nakamoto.
2. Bitcoin sebagai basis data global
Jaringan Bitcoin pada dasarnya adalah server stempel waktu terdistribusi yang dirancang untuk memecahkan masalah pembelanjaan ganda. Sistem ini dirancang tidak hanya untuk transmisi dan penyimpanan transaksi moneter, tetapi juga untuk menyimpan data seperti faktur dan file besar. Satoshi menyertakan berbagai opcode seperti OP_RETURN, yang memungkinkan penambahan data sewenang-wenang, dan OP_PUSHDATA4, yang memungkinkan data didorong hingga 4GB. Bahkan transaksi Bitcoin pertama—transaksi Genesis Coinbase—termasuk data tekstual yang sewenang-wenang: “The Times 03/Jan/2009 Chancellor berada di ambang dana talangan kedua untuk bank.”
Selama bertahun-tahun, telah terjadi upaya berulang kali untuk mencegah Bitcoin digunakan sebagai media penyimpanan data dengan membatasi ukuran push maksimum hingga 520 byte dan membatasi penggunaan OP_RETURN hingga 40 byte (kemudian diperluas menjadi 80 byte). Memang benar, hal ini telah dilihat sebagai vektor serangan yang dapat menyebabkan “blockchain bloat” menjadi tidak terkendali dan mengesampingkan penggunaan uang semata. Hal ini tampaknya merupakan tindakan perlindungan yang masuk akal pada saat itu.
Dalam beberapa tahun terakhir, pengembang Bitcoin telah secara efektif memperkenalkan kembali kemampuan untuk menyimpan sejumlah besar data sewenang-wenang yang mirip dengan versi Bitcoin sebelumnya dengan diperkenalkannya Segregated Witness (SegWit) dan peningkatan Taproot. Pengembang aplikasi dengan cepat memanfaatkan peluang ini, memanfaatkan Bitcoin sebagai buku besar global yang tidak dapat diubah untuk menyimpan data berharga. Pasar aset digital di Bitcoin telah tumbuh secara eksponensial, mencapai kapitalisasi pasar multi-miliar dolar dan menghasilkan biaya jaringan ratusan juta dolar untuk para penambang dalam waktu yang relatif singkat.
3. Protokol overlay
Hal Finney mengusulkan dan meramalkan konsep penggunaan Bitcoin sebagai basis data global, terdesentralisasi, dan konsisten untuk mendukung "overlaying protokol lain". Ide dasarnya melibatkan pembuatan aset overlay melalui pemberian sinyal dan mengaitkan aset ini dengan riwayat perdagangan tertentu. Mekanisme ini menambah dimensi baru pada Bitcoin sebagai sistem moneter, di mana keluaran transaksinya sendiri dapat mewakili jenis aset digital lainnya, seperti token, poin, media digital, atau bahkan hak proxy untuk aset fisik.
“Dalam diskusi di thread BitDNS, saya melontarkan gagasan untuk melapisi protokol lain ke Bitcoin. Dari perspektif tertentu, Bitcoin adalah database global, terdesentralisasi, namun konsisten.
Basis data ini terutama digunakan untuk mencatat transfer koin, namun dapat digunakan untuk banyak tujuan lainnya. Banyak aplikasi dapat memperoleh manfaat dari database yang konsisten secara global. Menurut uraian saya tentang BitDNS, mekanisme ini akan diterapkan dengan menggunakan sistem "skrip" yang misterius dan kompleks untuk menambahkan data tambahan ke transaksi Bitcoin reguler. Data ini akan muncul sebagai NOP (tidak ada instruksi operasi) pada klien saat ini dan diabaikan, tetapi klien yang sadar akan protokol overlay akan memeriksa data tambahan dalam blok NOP ini dan menafsirkannya sesuai dengan protokol overlay.
Secara khusus, saya dapat membayangkan menggunakan OP_NOP1 untuk menandai data overlay, kemudian menggunakan OP_PUSHDATA untuk mendorong data tertentu, kemudian menggunakan OP_DROP untuk menghapus data dari tumpukan, dan akhirnya menjalankan opcode transaksi reguler. Ini tidak berdampak pada klien biasa dan terlihat seperti transaksi biasa (bisa berupa transaksi virtual, seperti mentransfer 0,01 Bitcoin ke diri Anda sendiri), tetapi kode yang mengenali protokol overlay akan mengenali bahwa ini adalah transaksi perjanjian.
Misalnya, Bitcoin dapat digunakan sebagai layanan stempel waktu yang murah, memungkinkan Anda membuktikan bahwa suatu dokumen ada sebelum tanggal tertentu. Yang perlu Anda lakukan hanyalah membuat transaksi dummy untuk Anda sendiri dan memodifikasi klien untuk melakukan operasi OP_PUSHDATA, memasukkan hash dokumen ke dalamnya, lalu menghapusnya dari tumpukan dengan OP_DROP. Hash ini akan hidup secara permanen di blockchain dan berfungsi sebagai bukti bahwa dokumen tersebut ada pada tanggal tersebut. ”—Hal Finney[3]
Protokol superposisi pertama yang digunakan secara luas adalah teori Ordinals. Menurut manual Ordinals, satu satoshi dapat membakar konten apa pun, menciptakan artefak digital asli Bitcoin yang unik. Artefak ini tahan lama, tidak dapat diubah, aman, dan terdesentralisasi serta dapat disimpan di dompet Bitcoin dan ditransfer melalui transaksi Bitcoin.
Pada tahun 2023, pengembang menyadari bahwa diperlukan standar token yang homogen pada Bitcoin, sehingga mereka mengembangkan BRC20. BRC20 menggunakan teori Ordinals untuk membangun model akun overlay yang terkait dengan alamat dompet, memungkinkannya mengirim dan menerima unit token. Faktanya, BRC20 menciptakan protokol overlay berlapis berdasarkan Ordinals, yang merupakan protokol overlay berbasis Bitcoin.
Pada awal tahun 2024, protokol baru yang disebut Atomics Protocol Digital Objects telah muncul sebagai respons terhadap pertumbuhan pasar yang berkelanjutan untuk standar token dan teknologi pengindeksan. Seperti dijelaskan dalam panduan Atomics, protokol Atomics adalah protokol sederhana namun fleksibel untuk mencetak, mentransfer, dan memperbarui objek digital (umumnya dikenal sebagai transaksi tidak terpakai) pada blockchain seperti Bitcoin yang menggunakan token kualitatif Unspent Transaction Outputs (UTXOs). ). Atom (atau "atomik") adalah cara mengatur rantai kepemilikan digital berdasarkan beberapa aturan sederhana. Protokol Atomics juga mencakup standar token yang sepadan yang disebut ARC20, di mana setiap unit token didukung oleh setidaknya satu unit satoshi dan beroperasi menggunakan arsitektur UTXO yang sama dengan Bitcoin itu sendiri.
Pada awal tahun 2024, protokol overlay lain yang disebut Runes dirilis, yang diimplementasikan langsung di pengindeks Ordinals untuk melengkapi fungsionalitas teori Ordinals dan pada akhirnya menyertakan standar token yang sepadan juga.
4. Mesin negara
Sejauh ini, semua protokol overlay pada Bitcoin beroperasi berdasarkan mesin negara yang tetap atau telah ditentukan sebelumnya. Ada dua komponen utama dalam protokol overlay ini: komponen yang bertanggung jawab memberikan sinyal untuk membuat aset digital, dan aturan yang mengatur transfer aset digital tersebut. Aturan mesin negara ini dikodekan dalam masing-masing pengindeks protokol overlay, dan pengembang tidak dapat menyesuaikan aturan pembuatan atau transfer.
Kami mengusulkan model pemrograman mesin keadaan dinamis yang memungkinkan pengembang menentukan aturan pembuatan dan transfer aset digital mereka dengan otonomi penuh. Hal ini pada dasarnya memungkinkan pengembang untuk menentukan aturan protokol meta overlay mereka sendiri tanpa harus membuat pengindeks protokol baru dan sebagai gantinya memanfaatkan pengindeks protokol overlay yang ada.

Ide dasarnya adalah memungkinkan pengembang untuk menyimpan kode kontrak pintar mereka di blockchain, sehingga dapat dibaca dan ditafsirkan oleh semua pihak yang terlibat. Dengan menyimpan kode secara on-chain, Anda memastikan bahwa logika dieksekusi dengan cara yang sama di seluruh pihak yang terdistribusi dan terputus, sehingga memfasilitasi sinkronisasi status. Bahasa pemrograman kontrak pintar harus memiliki atribut penting berikut:
Waktu proses yang deterministik dan dapat diprediksi.
Memungkinkan fleksibilitas sewenang-wenang (kelengkapan Turing) [4].
dan kemampuan untuk berjalan secara efisien pada sistem dengan sumber daya terbatas.
Seperti yang terlihat dari persyaratan ini, Bitcoin Script sangat cocok untuk digunakan sebagai kumpulan instruksi yang mendefinisikan aturan untuk pembuatan dan transfer aset digital. Kuncinya adalah ia perlu mendukung segala jenis transisi keadaan sambil membatasi waktu eksekusi untuk mencegah serangan penolakan layanan dan perulangan program yang tak terbatas. Skrip Bitcoin sudah lengkap dengan Turing, ini adalah automaton pushdown dua tumpukan (2-Stack PDA). Karena penggunaan teknologi loop unrolling, loop tidak diperbolehkan, sehingga waktu berjalan dapat diprediksi dan terkait secara linier dengan panjang program. Fitur.

Kode program kontrak pintar disimpan dalam transaksi Bitcoin, dan pengindeks protokol overlay memuat kode tersebut ke dalam memori dan mengeksekusinya secara konsisten. Semua pihak yang terlibat dapat menjalankan logika yang sama dan mencapai transisi keadaan yang sama.
5. Konsensus status
Sinkronisasi status dapat dicapai melalui hashing status (statehash), sebuah mekanisme yang mengomunikasikan status internal pengindeks protokol overlay kepada pengamat eksternal. Dengan mengekspos hash negara, pihak-pihak yang terdistribusi dapat dengan mudah mengetahui apakah mereka mengikuti aturan yang sama dan sinkron satu sama lain.

Karena semua data disimpan secara on-chain dan diberi stempel waktu dalam urutan kronologis, tidak diperlukan mekanisme sinkronisasi komitmen negara yang rumit. Hal ini memungkinkan siapa pun untuk mendapatkan hasil status yang konsisten sambil mengikuti aturan yang sama.
6. Aset digital virtual
Protokol overlay apa pun dapat mengadopsi teknologi pemrograman mesin keadaan dinamis ini, memungkinkan aset digital divirtualisasikan dan diwujudkan dalam kontrak pintar. Pada dasarnya, ini berarti bahwa kita dapat menganggap konsep penyetoran dan penarikan sebagai sebuah konvensi, karena segala sesuatu yang lain adalah konvensi untuk membangun keadaan pengindeks berdasarkan riwayat lengkap transaksi di blockchain.
Di BRC20, saldo token adalah representasi abstrak dari sebuah akun dan dapat digambarkan sebagai aset digital virtual - yaitu, aset digital di atas aset digital lainnya (Bitcoin). Token Atomics ARC20 adalah abstraksi yang mempertahankan afinitas terhadap unit satoshi yang mendasarinya, tetapi juga merupakan aset digital virtual. Lebih tepatnya, mereka disebut “aset digital virtual” karena mereka ada sebagai abstraksi di atas aset digital lainnya (Bitcoin).
Memperluas analogi ini lebih jauh, kita dapat mendefinisikan mesin negara yang memungkinkan semua jenis token disimpan ke dalam kontrak dan kemudian ditarik, mirip dengan bagaimana bahasa pemrograman Soliditas dari blockchain Ethereum memungkinkan metode ditandai sebagai dibayarkan, yang menunjukkan bahwa Ether dapat dibayar dengan metode ini dan diambil nanti sesuai dengan aturan program kontrak pintar. Pelacakan dan pengelolaan aset digital ini dapat dilakukan melalui opcode khusus seperti OP_FT_WITHDRAW dan OP_NFT_WITHDRAW, serta mekanisme yang memungkinkan metode pembayaran dalam status kontrak pintar untuk menerima token.
7. Arsitektur sistem
Untuk memastikan eksekusi skrip yang konsisten, penerjemah skrip diatur dalam lingkungan sandbox yang dibatasi dengan baik dengan pengikatan statis atau dinamis. Pengaturan ini memungkinkan bahasa dan lingkungan pemrograman yang berbeda untuk menjalankan kotak pasir dan mendapatkan hasil yang konsisten, memastikan eksekusi yang konsisten.
Penerjemah kotak pasir adalah versi sederhana dari penerjemah skrip Bitcoin, yang berbeda dalam beberapa hal utama, seperti dapat secara langsung menerima skrip kunci eksekusi (scriptPubKey) dan membuka kunci parameter skrip (scriptSig), serta beberapa parameter berguna virtual lainnya yang berguna untuk manajemen aset digital. Ini dirancang untuk menyederhanakan dan meningkatkan pemrosesan dan pengelolaan aset digital virtual sehingga dapat beroperasi di jaringan Bitcoin dengan lebih efisien dan aman.

8. Kesimpulan
Kami mengusulkan sistem yang mengimplementasikan kontrak pintar yang melapisi aset digital pada Bitcoin dengan mensimulasikan mesin virtual Bitcoin. Hingga saat ini, overlay aset digital pada Bitcoin sepenuhnya tunduk pada aturan transisi negara yang telah ditentukan sebelumnya yang hanya mengizinkan pembuatan dan transfer aset tersebut. Untuk mengatasi keterbatasan ini, kami mengembangkan teknologi umum yang menggunakan Bitcoin sebagai basis data global, menyimpan kode kontrak pintar dalam transaksi, dan mengeksekusi kode-kode ini dalam lingkungan runtime sandbox yang dilapisi dengan pengindeks aset digital.
Set instruksi Bitcoin Script asli sangat kuat karena mengimplementasikan automaton pushdown dua tumpukan (2-Stack PDA), yang telah terbukti menyelesaikan Turing. Sistem kami menggunakan hash status sehingga semua peserta dapat dengan mudah memverifikasi bahwa status pengindeks mereka disinkronkan dengan benar. Sistem ini dirancang agar sangat fleksibel, tidak hanya menjadi perpanjangan alami dari protokol overlay yang ada, namun juga menunjukkan potensi besar dari bahasa skrip Bitcoin asli. Pendekatan ini memberikan fungsionalitas yang lebih canggih untuk melapisi protokol dalam ekosistem Bitcoin, memungkinkannya mendukung aplikasi kontrak pintar yang lebih kompleks.
Referensi
[1] Satoshi Nakamoto, "Bitcoin: Sistem Uang Elektronik Peer-to-Peer" https://bitcoin.org/bitcoin.pdf, 2008.
[2] Satoshi Nakamoto, "Sifat Bitcoin adalah bahwa setelah versi 0.1 dirilis, desain intinya sudah ditetapkan untuk selamanya...", https://satoshi.nakamotoinstitute.org/posts/bitcointalk/126/, 2010.
[3] Hal Finney, "Dalam diskusi di thread BitDNS saya menemukan ide untuk melapisi protokol lain ke Bitcoin...", https://bitcointalk.org/index.php?topic=2077.msg26888, 2010.
[4] Kontributor Wikipedia. "Kelengkapan Turing." Wikipedia, Ensiklopedia Bebas. Wikipedia, Ensiklopedia Bebas, https://en.wikipedia.org/wiki/Turing_completeness, 2024