Apa itu Metode Compact Block Dalam Bitcoin

Compact Block adalah sebuah metode untuk mengurangi jumlah beban bandwidth yang digunakan untuk menyebarkan block baru kepada seluruh full node. Compact Block ini, diusulkan dalam BIP152 dengan judul “Compact Block Relay”.

Cara yang digunakan adalah dengan mengirim rincian block antar peer dalam jaringan. Rincian block tersebut berisi header block berukuran maksimal 80 byte, txids yang telah diperpendek untuk mencegah serangan ddos, dan juga transaksi yang belum dimiliki oleh node-node lain di jaringan.

Jika node tersebut telah menerima rincian block tersebut, maka node tersebut bisa mulai membangun block tersebut dengan informasi yang telah diterima berdasarkan transaksi-transaksi di mempool. Jika memang node tersebut masih belum mempunyai rincian transaksi lain, maka ia juga bisa memintanya kepada node lain.

Menariknya, compact block ini juga mempunyai fungsi yang berbeda pada full node yang mempunyai bandwidth besar maupun tidak. Di dalam proposalnya, ada beberapa type operasi, yakni Legacy Relaying, high bandwidth Relaying, dan low bandwidth Relaying.

High Bandwidth Relaying, full node dapat langsung mengirimkan block baru tanpa harus meminta persetujuan terlebih dahulu. Namun, type ini akan membutuhkan bandwidth yang lebih besar karena antara dua peer tersebut akan mengirimkan block yang sama diwaktu yang sama juga. Tentu pengiriman block itu sedikit lebih cepat.

Low Bandwidth Relaying, pada tipe ini, node dapat meminimalkan penggunaan bandwidth saat ada block baru. Node tersebut meminta block baru tersebut dapat dikirimkan dalam compact mode. Lalu peer node yang diminta tersebut akan mengirimkan header, txid, dan transaksi-transaksi yang diprediksi belum dimiliki oleh node itu. Lalu berdasarkan data tersebut, node yang bersangkutan dapat memulai membangun block.

Legacy Relaying, pada mode ini, setelah sebuah block divalidasi oleh node, ia kemudian mengirimkan ke node B yang memintanya. Node B mengirimkan permintaan berupa get data dari block baru, dan node A akan mengrimkan data block baru tersebut.

Berapa tolok ukur yang berguna untuk ini?
Sebuah penuh rata blok 1MB pengumuman dapat direkonstruksi oleh node penerima dengan blok sketsa 9KB, ditambah overhead untuk setiap transaksi di blok yang tidak di MemPool penerima node. Sketsa blok terbesar terlihat keluar atas di beberapa byte utara dari 20KB.

Saat menjalankan eksperimen langsung di 'bandwidth tinggi' mode dan memiliki node prefill hingga 6 transaksi, kita dapat berharap untuk melihat lebih dari 90% dari blok segera merambat tanpa perlu meminta setiap transaksi yang hilang. Bahkan tanpa prefilling transaksi apapun kecuali untuk Coinbase itu, eksperimen menunjukkan kita dapat melihat dengan baik utara dari 60% dari blok menyebarkan segera, sisa membutuhkan penuh perjalanan jaringan tambahan bulat.

Karena perbedaan antara mempools dan blok untuk menghangat node jarang lebih dari 6 transaksi, ini berarti bahwa kompak blok estafet mencapai penurunan dramatis dalam puncak bandwidth yang dibutuhkan.

Bagaimana transaksi yang hilang dipilih untuk segera diharapkan berjalan?
Untuk mengurangi jumlah hal-hal yang perlu ditinjau dalam pelaksanaan awal, hanya transaksi Coinbase akan pra-emptively dikirim.

Namun, dalam percobaan yang dijelaskan, node pengirim digunakan rumus sederhana untuk memilih transaksi yang mengirim: ketika Node A menerima blok, diperiksa untuk melihat transaksi yang berada di blok tapi tidak di MemPool nya; mereka adalah transaksi itu meramalkan bahwa rekan-nya tidak memiliki. Alasannya adalah bahwa (tanpa informasi tambahan) transaksi Anda tidak tahu tentang itu dan mungkin juga transaksi rekan-rekan Anda tidak tahu. Dengan heuristik dasar ini, peningkatan besar terlihat, menggambarkan bahwa banyak kali solusi yang paling sederhana adalah yang terbaik.

Refferensi : 
https://bitcoincore.org/en/2016/06/07/compact-blocks-faq/
https://people.xiph.org/~greg/efficient.block.xfer.txt
https://people.xiph.org/~greg/lowlatency.block.xfer.txt
https://people.xiph.org/~greg/weakblocks.txt
https://people.xiph.org/~greg/mempool_sync_relay.txt
https://en.bitcoin.it/wiki/User:Gmaxwell/block_network_coding
http://diyhpl.us/~bryan/irc/bitcoin/block-propagation-links.2016-05-09.txt
http://diyhpl.us/~bryan/irc/bitcoin/weak-blocks-links.2016-05-09.txt
http://diyhpl.us/~bryan/irc/bitcoin/propagation-links.2016-05-09.txt

Komentar

Postingan populer dari blog ini

Cara Membuat Halaman Login Hotspot Berbeda pada 1 Mikrotik

UltraISO Premium Edition v9.5.3

Arti OSAKMJ