Pada artikel ini, kita akan berbicara tentang konsep MAST dan penerapannya dalam protokol Bitcoin. Kami akan mempertimbangkan properti yang memungkinkan MAST untuk dicapai, serta manfaat dari penggunaannya. Artikel ini akan menarik bagi pembaca yang menyukai protokol Bitcoin dan sistem pembayaran inovatif lainnya. Kuliah terpisah juga dikhususkan untuk topik ini dalam kerangka kursus
blockchain online "
MAST in Bitcoin ".
Konsep MAST menyiratkan penggunaan pohon Merkle dan pohon sintaksis abstrak untuk mengatur kondisi pengeluaran koin pada hasil transaksi. Mari kita pertimbangkan bagaimana cara kerjanya.
Pohon merkle
Jadi, Anda dapat secara skematis menggambarkan Pohon Merkle.

Ada potongan data yang Anda butuhkan untuk mendapatkan checksum, mis., Menghitung nilai hash dari semua bagian. Tetapi alih-alih menggabungkan semuanya dan memasok fungsi hash dengan nilai tunggal, Merkle Tree menawarkan pendekatan yang berbeda. Setiap bagian data di-hash secara terpisah. Kemudian nilai hash yang dihasilkan digabungkan berpasangan dan hash lagi. Dan seterusnya, hingga Anda mendapatkan satu nilai hash yang mencakup semua bagian data. Nilai ini disebut Merkle Root.
Merkle Tree memungkinkan Anda untuk memeriksa keberadaan satu bagian data di Merkle Root, tanpa memiliki semua data lainnya. Ini properti berharga.
Misalkan seorang pengguna memiliki Merkle Root dan data satu transaksi (dalam diagram di atas ditunjukkan dengan warna merah). Kemudian pengguna dapat mengambil rantai nilai hash yang hilang (mereka ditunjukkan dengan warna biru pada diagram) untuk memverifikasi bahwa transaksi ini merupakan bagian dari Merkle Root. Nilai hash yang hilang disebut Merkle Branch. Untuk transaksi tertentu, mereka dapat diminta dari host yang menyimpan blok lengkap.
Metode hashing banyak data ini digunakan dalam banyak protokol. Contoh paling terkenal adalah hashing transaksi yang merupakan bagian dari blok, dan hashing bagian file yang ditransfer ke jaringan BitTorrent untuk menghasilkan file torrent.
Pohon Sintaksis Abstrak
Sekarang mari kita mengenal Pohon Sintaks Abstrak. Diagram di bawah ini menunjukkan pohon sintaks yang menggambarkan loop yang sangat sederhana. Di sini, simpul biru dari pohon dilambangkan dengan pohon, yang berarti operasi, hijau adalah variabel, dan merah adalah konstanta. Tepi pohon menunjukkan transisi antar operasi.

Dengan demikian, siklus yang dieksekusi dalam urutan tertentu dijelaskan. Pertama, kesetaraan variabel A dan konstanta 32 diperiksa. Jika tidak tahan, maka pergi ke badan loop, di mana variabel A ditugaskan jumlah dua nilai: variabel A itu sendiri dan konstan 2. Ini adalah struktur pohon sintaksis abstrak secara umum.
Apa itu MAST?
Kami telah menyiapkan landasan teoretis, sekarang kami akan menentukan apa itu MAST dan apa manfaatnya. MAST adalah Pohon Sintaks Abstrak Merkelized, yang menggunakan ide-ide pohon Merkle dan pohon sintaksis abstrak untuk menentukan kondisi yang saling eksklusif untuk pengeluaran koin. Pada saat yang sama, Bitcoin Script bertindak, seperti biasa, sebagai bahasa untuk menggambarkan kondisi. Konsep MAST meningkatkan privasi dan mengurangi ukuran transaksi.
Pengembangan konsep dan posisi saat ini
Orang-orang seperti Russell O'Connor, Pieter Wuille, Peter Todd dan Johnson Lau mulai mengembangkan dan mempromosikan gagasan MAST dalam komunitas Bitcoin. Pada awal 2016, sebuah proposal diterbitkan untuk meningkatkan protokol Bitcoin di bawah nomor 114 (BIP114), yang menggambarkan spesifikasi salah satu opsi untuk menerapkan pendekatan ini menggunakan program saksi, yang pada gilirannya diperkenalkan dengan pembaruan SegWit. BIP114 juga menawarkan implementasi perangkat lunak yang menambahkan aturan konsensus baru ke protokol Bitcoin.
Kemudian, pada 2017, mereka mengusulkan implementasi alternatif dari konsep MAST, yang dijelaskan dalam BIP117. Ini didasarkan pada BIP114 dan membuat beberapa modifikasi. Pada tahun 2018, kedua proposal tersebut masih dalam pertimbangan.
Perhatikan bahwa MAST dapat diintegrasikan ke dalam Bitcoin menggunakan pembaruan protokol softfork. Dan ini mungkin fitur paling penting dari konsep ini.
MAST pada diagram
Secara skematis, Pohon Sintaks Abstrak Merkelized akan terlihat seperti ini.

Di sini, MAST Root adalah nilai hash root yang akan ditempatkan dalam output transaksi. Nilai hash dari cabang-cabang pohon yang mengarah ke kondisi untuk pengeluaran koin ditunjukkan dengan warna biru. Dengan demikian, cabang-cabang ini berisi kondisi yang saling eksklusif di mana koin dapat dibelanjakan. Akibatnya, orang yang menghabiskan koin akan menggunakan salah satu cabang atau yang lain.
Warna kuning menunjukkan kondisi yang diatur menggunakan Bitcoin Script. Selain itu, kondisi di mana koin akan dibelanjakan kemungkinan besar direkomendasikan untuk ditempatkan sedekat mungkin dengan akar pohon - ini akan membuat bukti kepemilikan koin lebih kecil.
Masalah transaksi bitcoin
Mari kita mengidentifikasi masalah yang terjadi selama pengaturan kondisi biasa untuk menghabiskan koin menggunakan Bitcoin Script. Yang pertama, dan yang paling penting dari mereka, adalah bahwa penerima perlu menggambarkan atau mentransfer kondisi di mana ia ingin menerima pembayaran, sehingga pengirim menunjukkan mereka dalam output dari transaksinya. MAST dan P2SH menyelesaikan masalah ini.
Masalah kedua: kondisi sulit menempati sejumlah besar memori dalam output transaksi. Akibatnya, pengirim harus membayar biaya untuk menetapkan kondisi sulit untuk menerima koin, meskipun penerima menentukannya. P2SH dan MAST juga mengatasi hal ini, menggeser kebutuhan untuk memasukkan sejumlah besar data dalam transaksi, yang akan dibelanjakan, dan karenanya peningkatan komisi akan dibayarkan oleh penerima, bukan pengirim.
Masalah ketiga adalah ScriptPubKey, yang ditempatkan dalam output transaksi, terbatas dalam ukuran dan jumlah operasi, mis., OP_CODEs. Konsep MAST memungkinkan Anda untuk sepenuhnya sepenuhnya keluar dari pembatasan ini tanpa mengurangi keandalan karena kondisi yang saling eksklusif.
Masalah keempat: saat mengirim koin, semua orang segera melihat kondisi pengeluaran mereka. MAST memungkinkan Anda untuk menyembunyikan kondisi pengeluaran hingga saat pengeluaran. Selain itu, hanya kondisi yang benar-benar digunakan yang akan diungkapkan, dan tidak semua opsi yang memungkinkan.
Properti yang diberikan MAST dalam Bitcoin
Salah satunya adalah meningkatkan tingkat privasi pengguna dengan menyembunyikan kondisi pengeluaran yang pada akhirnya tidak digunakan. Properti ini dicapai dengan membuktikan bahwa hanya kondisi tertentu yang termasuk dalam MAST Root dan memenuhi persyaratan ini.
Fitur positif lainnya adalah kemampuan untuk menentukan kondisi yang lebih banyak dan kompleks untuk pengeluaran koin. Misalnya, menggunakan MAST, Anda dapat menentukan ratusan ribu opsi multi-tanda tangan yang berbeda untuk satu output transaksi. Pada saat yang sama, kondisi untuk pengeluaran koin dan bukti kepemilikan koin yang sesuai akan sangat kompak.
Selain itu, dimungkinkan untuk merekam data volume sewenang-wenang pada blockchain tanpa meningkatkan ukuran transaksi.

Diagram ini menunjukkan varian dari struktur MAST sesuai dengan BIP114. Nilai hash ditunjukkan dengan warna biru, skrip bitcoin berwarna kuning, dan data arbitrer berwarna merah sebagai pesan tambahan. Nilai versi termasuk di bagian atas pohon.
Skema MAST Sederhana

Dua kondisi yang saling eksklusif untuk koin pengeluaran ditentukan di sini. Dalam kasus pertama, koin dapat dihabiskan dengan memberikan satu tanda tangan dan menunggu waktu tertentu, dan dalam kasus kedua - Anda perlu memberikan beberapa tanda tangan. Pengguna dapat menggunakan salah satu opsi, sedangkan kondisi yang kedua tidak akan diungkapkan.
Aplikasi praktis MAST
Dalam kasus pertama, MAST dapat digunakan untuk implementasi HTLC (Kontrak Waktu-Kunci Hashed) yang lebih optimal, yang digunakan dalam protokol Jaringan Petir. Di sisi lain, untuk implementasi Escrow yang lebih optimal.
MAST memungkinkan untuk mengimplementasikan struktur yang sangat besar menggunakan multisignature. Ini akan membantu memecahkan masalah mendesak seperti pencurian atau kehilangan bitcoin, dan dalam beberapa kasus bahkan memungkinkan Anda untuk meninggalkan penyimpanan dingin.
Berkat MAST, dalam banyak kasus, Anda dapat menolak operasi OP_RETURN untuk menambahkan data ke blockchain Bitcoin. Sebagai gantinya, Anda dapat memasukkan data ini ke dalam pohon dan, jika perlu, buktikan bahwa data spesifik dicatat dalam blockchain Bitcoin. Dalam hal ini, Anda tidak perlu menambah ukuran blockchain itu sendiri.
Optimalisasi Volume Data
Mari kita perhatikan optimalisasi jumlah data yang akhirnya jatuh ke blockchain. Perhatikan grafik di bawah ini. Sumbu vertikal menunjukkan jumlah data dalam byte, sedangkan skala itu sendiri adalah logaritmik. Sumbu horizontal menunjukkan jumlah kondisi alternatif untuk pengeluaran koin.

Garis biru menunjukkan ketergantungan volume data pada jumlah kondisi tanpa menggunakan MAST. Garis merah menunjukkan ketergantungan volume data pada jumlah kondisi menggunakan MAST. Garis biru adalah batas ukuran Script Bitcoin untuk P2SH. Garis hijau adalah batas ukuran Skrip Bitcoin dalam struktur saksi.
Kesimpulannya sederhana. Konsep MAST memungkinkan Anda menyimpan lebih sedikit data secara signifikan dengan keandalan validasi yang sama dan fungsionalitas yang jauh lebih besar.
Sekarang mari kita beralih ke pertanyaan umum tentang topik ini.
Pertanyaan yang Sering Diajukan
- Apakah Root MAST akan diatur dalam struktur saksi atau di mana akan terdaftar?Root CEPAT bersama dengan data yang mendefinisikannya akan ditunjukkan dalam ScriptPubKey pada output transaksi. Data ini akan menempati 25-35 byte dan, kemungkinan besar, itu akan dengan mudah disandikan ke alamat Bitcoin biasa. Dan dalam struktur saksi, di mana kepemilikan koin terbukti, Cabang Merkle dan data yang memenuhi kondisi pengeluaran, seperti tanda tangan elektronik, akan ditunjukkan.
- Apakah banyak OP_CODEs yang tersedia dalam bahasa Script Bitcoin akan diperluas?Saat ini, belum jelas, karena proposal sedang dalam pertimbangan dan perubahan dan perbaikan tambahan masih dapat dilakukan. OP_CODE seperti OP_MERKLEBRANCHVERIFY kemungkinan akan ditambahkan untuk fleksibilitas penggunaan MAST. Mungkin mereka akan menawarkan sesuatu yang bermanfaat, tetapi ini masih tidak akurat.
- Apakah ada kemungkinan mengintegrasikan MAST dalam waktu dekat?Tentu saja ada kemungkinan, tetapi kecil. Bagaimanapun, pembaruan ini penting, tetapi tidak mendesak, sehingga bisa menunggu sementara pengembang memikirkan peningkatan protokol lainnya. Kemudian, mereka dapat mengintegrasikan beberapa perbaikan sekaligus dalam satu pembaruan, seperti halnya dengan SegWit.