BitcoinMedia – Smart Contract Bitcoin. Baru dipublikasikan hari Senin lalu, Smart Contract Bitcoin yang diberi nama “Miniscript” bakal memudahkan pengguna dengan ketentuan perjanjian tertentu saat bertransaksi.
Digagas oleh Pieter Wuille, bersama dengan Andrew Poestra dan juga Sanket Sanjalkar, Miniscript sebenarnya sudah mulai dipersiapkan sejak setahun yang lalu. Pada bulan Februari tahun ini, Miniscript juga sudah pernah dipresentasikan di event Stanford Blockchain Conference di hari kedua oleh Pieter Wuille.
Smart Contract atau “kontrak pintar” sebenarnya berlaku seperti halnya seperti sebuah script transaksi biasa, namun menyertakan syarat dan kondisi tertentu yang harus terpenuhi agar transaksi tersebut bisa dieksekusi secara otomatis.
Dalam hal ini, Smart Contract Bitcoin Miniscript digadang-gadang bakal cukup memudahkan para pengembang dalam menuliskan code smart contract di atas script asli Bitcoin. Jika dilihat dari desain Miniscript sendiri, code yang digunakan cukup lugas dan jauh meminimalisir kompleksitas bahasa pemprograman.
Di dalam Bitcoin, kompleksitas script bahasa pemprograman memang dianggap membuka celah keamanan lebih lebar. Oleh sebab itulah scripting di Bitcoin Tidak bersifat “turing complete”, melainkan stack based (non-turing complete). Segala aspek yang memungkinkan terjadinya celah keamanan cukup menjadi perhatian mendasar di dalam Bitcoin.
Terkait dengan hal tersebut, yang cukup menarik dari Miniscript adalah menggunakan “Miniscript Policy”. Istilah Miniscript Policy berfungsi serupa seperti halnya sebuah “syarat dan ketentuan” secara umum.
Lebih khusus, Miniscript Policy ini menjadi sebuah ketentuan-ketentuan kondisi tertentu bahasa pemprograman agar smart contract tersebut bisa berjalan dan dieksekusi, tanpa ada gangguna ataupun serangan.
Berdasarkan transkript saat presentasi di Stanford, Miniscript berawal dari sekian banyak kombinasi semantik atas berbagai kondisional kontrak yang memungkinkan bisa dilakukan. Akhirnya dari berbagai kombinasi kondisional kontrak tersebut muncul subset scripting Smart Contract Bitcoin yang disebut dengan Miniscript.
Lebih jauh, dari Miniscript Policy tersebutlah segala ketentuan-ketentuan terkait dengan desain Smart Contract Bitcoin dapat disesuaikan dengan kebutuhan. Misal untuk kontrak antara 3 pihak, untuk lima atau tujuh belah pihak dan lain sebagainya.
Dengan ketentuan yang telah dijelaskan lebih dulu tersebut, maka bahasa scripting selanjutnya bisa menjadi lebih simpel dan mampu meminimalisir kompleksitas. Dari Miniscript ini, potensinya bisa untuk diimplementasikan langsung pada wallet Bitcoin, ataupun di berbagai kondisi, termasuk juga untuk implementasi di Lightning Network Bitcoin.
Menurut Pieter Wuile, desain Miniscript ini sudah cukup kompatibel dengan konsensus dan standar aturan Bitcoin yang ada saat ini. Dari serangkaian uji coba yang telah dilakukan, pengembang Bitcoin yang juga di Blockstream ini cukup yakin bahwa Miniscript dapat digunakan dengan baik.
Selain itu, Miniscript juga sudah diimplementasikan di dua bahasa pemprograman berbeda. Yakni bahasa pemprograman C++ dan juga Rust.
Cara Kerja MiniScript
Seperti yang telah dijelaskan sebelumnya, bahwa Miniscript memiliki “Policy” khusus sebagai ketentuan-ketentuan pada smart contract nantinya.
Dari Policy tersebut, selanjutnya tinggal diimplementasikan lebih jauh dengan Miniscript. Misalnya saja sebuah contoh untuk transaksi A dan B. Kondisi untuk contoh transaksi ini, A bisa mengambil sejumlah koin, dan B telah menyetujui dengan syarat setelah dalam waktu 1 hari. Maka berikut adalah script Bitcoin yang akan digunakan:
OP_EQUALVERIFY OP_CHECKSIGVERIFY <144> OP_CSV OP_ENDIF
Sedangkan, untuk di Miniscript, dapat menjadi lebih sederhana:
or_d(c:pk(A),and_v(vc:pk_h(B),older(144)))
Lebih detail tentang Miniscript bisa dilihat halaman Bitcoin.sipa.be
Perbedaan Smart Contract Bitcoin Miniscript dengan Solidity Ethereum Dan Lainnya
Implementasi Miniscript yang jauh bisa meminimalisir kompleksitas, membuat smart contract ini lebih ampuh dan lebih aman. Seperti yang disinggung diatas, bahwa kompleksitas bahasa pemprograman akan membuka celah keamanan.
Jika dibandingkan dengan Smart Contract Ethereum, memang bersifat lebih kompleks, oleh sebab itu pula memang membuka celah keamanan. Sebagai buktinya, sudah cukup banyak insiden yang telah terjadi. Sedangkan Miniscript yang jauh lebih sederhana mampu meminimalisir potensi-potensi celah keamanan tersebut.
Bahasa scripting Bitcoin, sebenarnya sudah sejak lama sudah mendukung untuk implementasi Smart Contract. Atas berbagai pertimbangan, karena masih belum menemukan komposisi bahasa script yang mampu lebih baik, opsi ini tidak dianggap begitu penting untuk dilakukan.
Ketika ada peluang dengan munculnya Miniscript, maka potensi besarnya akan justru jauh lebih besar. Bahkan jika dibandingkan dengan varian smart contrak lainnya. Pasalnya, jelas Bitcoin mampu dan sudah teruji sisi keamanannya.
Perbandingan Miniscript dengan Mast
MAST (Merklized Abstract Syntax Trees) adalah penggabungan dua konsep antara Merkle Tree dan Abstract Syntax Tree. Dengan penggabungan tersebut, memungkinkan MAST untuk melakukan transaksi melalui pay to script hash (P2SH).
BIP untuk MAST sendiri pertama kali diusulkan oleh Johson Lau di awal tahun 2016 silam. Dari sekian pengembangan yang telah dilakukan, MAST juga memungkinkan sebagai dasar pijakan untuk implementasi Smart Contract Bitcoin. Meski bisa berfungsi pula untuk smart contract, MAST sebenarnya lebih diproyeksikan untuk memperkuat privasi untuk Atomic Swap.
Lebih jauh, karena proyeksinya MAST akan menjadi sebuah ekstensi untuk Pay to Script Hash saja, maka terkesan pengembangan MAST masih kurang begitu maksimal. Di dalam BIP MAST saat itu, Lau tidak berharap opcode baru yang diusulkan untuk diterima dan diimplementasikan. Menurut Lau, hanya beberapa opcode baru saja yang diharapkan bisa mendukung MAST. Dua opcode tersebut adalah OP_CAT dan OP_XOR.
Meski demikian, penambahan dan perubahan opcode baru akan berjalan lebih sulit di dalam Bitcoin. Dibandingkan dengan Miniscript, karena jauh lebih kompatible dengan scipt bitcoin yang ada sekarang, tanpa harus ada penambahan opcode baru, akan lebih sesuai untuk digunakan. Terlebih dengan bahasa yang lebih sederhana.