120 / 736CMPCT

Compact Blocks

Pengiriman blok ringkas

Node tetangga sering kali sudah mengenal sebagian besar transaksi dalam blok baru. Compact Blocks mengirim petunjuk penyusunannya dan melengkapi yang kurang, bukan mengulang semuanya. Hasilnya tetap diperiksa dengan ketat.

Compact Blocks adalah cara mengirim blok Bitcoin berdasarkan BIP 152 dengan lebih sedikit data berulang. Blok itu sendiri tidak diperkecil dan aturannya tidak dilonggarkan: penerima harus memulihkan seluruh isi dan memeriksanya sebelum menerima.

Anna ingin mengirim blok baru kepada Peter, tetapi Peter sudah memiliki banyak transaksinya. Blok mengelompokkan transaksi dalam satu kumpulan yang ditambahkan ke riwayat bersama. Mengirim semua transaksi berarti mengulang data. Compact Blocks memberikan header blok dan daftar penanda singkat untuk mencocokkan transaksi yang dikenal. Header adalah bagian pendek dari blok yang memuat informasi dasar, termasuk rujukan ke blok sebelumnya dan sidik jari untuk memeriksa transaksi. Untuk pembaca teknis: penanda berukuran 48 bit, atau 6 byte, diperoleh dengan memotong keluaran fungsi SipHash-2-4. Parameternya berasal dari header dan sebuah angka tambahan untuk pengiriman ini, yang disebut nonce. Penanda bukan nama transaksi permanen untuk seluruh jaringan Bitcoin. [1] [2] [7]

Daftar tidak dapat menggantikan segalanya. Anna mengirim transaksi tertentu secara lengkap beserta posisinya dalam blok. Contoh umumnya adalah Coinbase Transaction, transaksi pertama blok yang memberikan imbalan penambangan; ini tidak terkait dengan bursa bernama sama. Transaksi tersebut dibuat khusus untuk blok itu, sehingga biasanya belum ada di kumpulan transaksi Peter yang menunggu. Entri lengkap dan penanda singkat saling melengkapi saat penyusunan. [1] [2]

Mempool Peter adalah kumpulan lokal transaksi yang diketahui node-nya tetapi belum terkonfirmasi dalam rantai yang diterima. Ia menghitung penanda singkat yang sama bagi transaksi yang tersedia dan mencari kecocokan dengan daftar Anna. Ia tidak menganggap semua orang memiliki kumpulan identik. Karena satu penanda kadang cocok dengan beberapa transaksi, kecocokan saja belum menjadi bukti akhir bahwa isinya benar. [1] [2]

Jika suatu posisi kosong atau ambigu, Peter meminta transaksi tertentu berdasarkan posisinya. Pesan permintaan bernama getblocktxn, sedangkan jawaban yang membawa transaksi bernama blocktxn. Nama itu tidak perlu dihafal: yang penting, data sebenarnya diminta, bukan ditebak. Perjalanan permintaan dan jawaban menambah waktu. Jika penyusunan gagal, blok lengkap dapat diunduh. [1] [3]

Peter harus memulihkan transaksi yang tepat dalam urutan benar dan memeriksa kaitannya dengan header. Merkle Tree menggabungkan transaksi menjadi sidik jari pemeriksaan yang membantu memverifikasi kaitan tersebut. Namun, susunan yang benar tidak menggantikan pemeriksaan aturan. Full Node adalah program yang digunakan Peter untuk memeriksa aturan Bitcoin secara mandiri, seperti izin membelanjakan dana dan jumlah imbalan. Tanda tangan digital membuktikan otorisasi pembayaran menggunakan kunci privat, sebuah nilai angka rahasia, tanpa mengungkap kunci itu. Pengiriman ringkas tidak memberi pengecualian bagi blok tidak sah. [1] [8]

Node tetangga menyepakati mode melalui sendcmpct. Dalam pilihan cepat, pesan cmpctblock yang membawa data penyusunan langsung mengumumkan blok baru. Setelah pemeriksaan awal yang diwajibkan, pengirim boleh mulai meneruskan sebelum semua pemeriksaan transaksi selesai. Ia harus memeriksa antara lain hubungan dengan rantai yang tervalidasi, Proof of Work sebagai bukti kerja komputasi, dan kaitan header dengan transaksi. Penerima tetap memeriksa blok sepenuhnya sebelum memasukkannya ke riwayatnya. [1] [4]

Pilihan lain lebih dahulu mengumumkan blok yang sudah divalidasi melalui inv atau headers. Peter kemudian meminta data ringkas bila membutuhkannya. Ini dapat mencegah kiriman tak perlu atas blok yang sudah didapat lewat jalur lain, dengan biaya satu langkah komunikasi tambahan. Kedua mode bisa menghemat dibanding mengirim ulang semua transaksi. Perbedaannya ada pada waktu pengiriman dan kebutuhan permintaan sebelumnya, bukan standar keabsahan blok. [1] [7]

Dua transaksi berbeda dapat memiliki penanda singkat yang sama. Ini disebut kolisi. Ibarat dua orang dengan inisial sama, singkatannya tidak lagi cukup untuk membedakan. Bergantung pada letak masalahnya, perangkat lunak meminta data tambahan atau beralih ke blok lengkap. Kolisi tidak mematahkan tanda tangan Bitcoin maupun mengubah blok tidak sah menjadi sah. Yang harus diperiksa adalah isi sebenarnya, bukan sekadar penanda yang cocok. [1] [2]

Versi 2 protokol ringkas mendukung SegWit, yang memisahkan tanda tangan dan data verifikasi lain ke bagian witness. Versi ini menggunakan wtxid, pengenal yang mencakup data tersebut, bukan txid yang tidak mencakupnya. Transaksi lengkap dikirim dengan data witness yang diperlukan menurut BIP 144. Data itu tidak dibuang hanya agar kiriman tampak lebih kecil. Versi protokol pengiriman juga berbeda dari nomor versi blok itu sendiri. [1] [6]

Jika Anna dan Peter mengenal banyak transaksi yang sama, blok dapat dikirim dengan jauh lebih sedikit data berulang. Ini juga membantu koneksi rumah menghadapi kedatangan blok secara mendadak. Jika transaksi bersama sedikit, permintaan tambahan mengurangi penghematan. Tujuan utamanya ialah menghemat data kiriman; pengiriman lebih cepat merupakan kemungkinan manfaat, bukan janji tanpa waktu tunggu atau ukuran pesan yang selalu tetap. Bitcoin tidak memperoleh batas ukuran blok baru karenanya. [5] [7]

Untuk gambaran yang lebih utuh, baca entri ini bersama Block Propagation, Initial Block Download, Eclipse Attack, vByte, Bitcoin, Transaksi coinbase. Entri ini juga dirujuk dari Stale Block, Eclipse Attack, Selfish Mining, Block Propagation.

DOC · 001BIP 152 — Compact Block RelaySpesifikasi DOC · 002Bitcoin Core — BIP 152 implementationDokumentasi DOC · 003Bitcoin Developer Reference — P2PDokumentasi DOC · 004Bitcoin Core v29.0 — net processingDokumentasi DOC · 005Bitcoin Optech — Compact block relayDokumentasi DOC · 006BIP 144 — SegWit peer servicesSpesifikasi DOC · 007Bitcoin Core — Compact Blocks FAQDokumentasi DOC · 008Bitcoin Developer Guide — Block ChainDokumentasi
Direvisi: Utamakan sumber · Bukan nasihat investasi