141 / 691NEUTRINO

Compact Block Filters

Filter blok ringkas menurut BIP 157 dan BIP 158

Compact Block Filters memungkinkan dompet ringan mencari blok relevan secara lokal dengan filter kecil deterministik. BIP 157 mengatur transmisi dan verifikasi; BIP 158 menetapkan isi dan pengodean.

Compact Block Filters adalah indeks blok probabilistik untuk klien ringan. Dompet mengunduh filter dan menguji skripnya secara lokal, bukan mengirim filter alamat pribadi ke server seperti BIP 37. Saat ditinjau BIP 157 dan BIP 158 berstatus Deployed, tetapi tidak menggantikan validasi konsensus penuh.

BIP 157 mendefinisikan getcfilters/cfilter, getcfheaders/cfheaders dan getcfcheckpt/cfcheckpt. BIP 158 menetapkan filter basic tipe 0x00. Klien menyinkronkan header blok, lalu header filter dan filter; ketika cocok, klien mengambil blok dan mencari transaksi sebenarnya. Ini berbeda dari Compact Blocks BIP 152 untuk penerusan blok cepat. [BIP 157 — Client Side Block Filtering] [BIP 158 — Compact Block Filters for Light Clients]

Filter berisi scriptPubKey output baru kecuali skrip berawalan OP_RETURN, serta skrip output sebelumnya yang dibelanjakan input, selain input coinbase. Item kosong dihilangkan dan item membentuk himpunan. Ini bukan indeks semua txid, string alamat atau data witness; pembentukan juga membutuhkan output sebelumnya yang dibelanjakan. [BIP 158 — Compact Block Filters for Light Clients]

Nilai SipHash-2-4 dipetakan ke rentang N × M, diurutkan dan selisihnya dikodekan dengan Golomb-Rice. Basic memakai P=19 dan M=784931; kunci adalah 16 byte pertama hash blok dalam bentuk little-endian. Serialisasi dimulai dengan N dalam CompactSize. Kueri bukan anggota dapat cocok palsu dengan peluang sekitar 1/M; filter benar tidak melewatkan item yang disertakan. [BIP 158 — Compact Block Filters for Light Clients]

Hash filter adalah double-SHA256 serialisasinya. Header-nya adalah double-SHA256 hash itu yang digabungkan dengan header filter sebelumnya. Ini membentuk hubungan terverifikasi, tetapi komitmennya tidak ada dalam header blok konsensus. Hashing saja tidak mengungkap rantai palsu yang konsisten dari semua peer terhubung. [BIP 157 — Client Side Block Filtering]

BIP 157 menyarankan beberapa peer independen kecuali ada koneksi aman ke peer tepercaya. Saat berbeda pendapat, klien menemukan perbedaan pertama dan memeriksa filter terhadap blok serta data output sebelumnya yang diperlukan. Jaminan filter benar mengasumsikan setidaknya satu peer jujur. Setelah reorganisasi, filter harus mengikuti cabang baru dan keadaan dompet terkait dihitung ulang. [BIP 157 — Client Side Block Filtering] [BIP 158 — Compact Block Filters for Light Clients]

Pencocokan lokal tidak mengungkap skrip yang diawasi kepada peer. Permintaan blok penuh berikutnya tetap mengungkap minat dan dapat dikorelasikan dengan IP atau kueri berulang. BIP 157 menyarankan memilih sumber blok secara acak di antara peer keluar; sumber blok tidak harus melayani filter. Ini tidak menjamin anonimitas. [BIP 157 — Client Side Block Filtering]

Filter terkait blok terkonfirmasi, bukan Mempool saat ini. Kecocokan tidak membuktikan pembayaran atau hak membelanjakan; transaksi dan validasi yang diperlukan menentukannya. Node dapat menyimpan filter setelah memangkas blok, tetapi kemudian mungkin tidak menyediakan blok penuh lama. Penghematan klien ringan tidak menggantikan model keamanan Full Node. [BIP 157 — Client Side Block Filtering]

Pada Bitcoin Core 29.0, -blockfilterindex membuat indeks; -peerblockfilters mengaktifkan layanan peer dan membutuhkan indeks basic. NODE_COMPACT_FILTERS menandakan layanan ini. RPC getblockfilter mengembalikan filter dan header untuk blok pilihan. RPC atau indeks yang tersedia saja tidak berarti layanan filter P2P aktif; entri ini tidak mengubah konfigurasi node. [Bitcoin Core 29.0 — getblockfilter RPC] [Bitcoin Core 29.0 — Filter service configuration]

Untuk gambaran yang lebih utuh, baca entri ini bersama Neutrino, Full Node, Pruned node, Privasi Bitcoin, Compact block relay. Entri ini juga dirujuk dari Compact Block Filters, Neutrino.

DOC · 001BIP 157 — Client Side Block FilteringSpesifikasi ↗DOC · 002BIP 158 — Compact Block Filters for Light ClientsSpesifikasi ↗DOC · 003Bitcoin Core 29.0 — getblockfilter RPCDokumentasi ↗DOC · 004Bitcoin Core 29.0 — Filter service configurationSumber primer ↗
Utamakan sumber · Bukan nasihat investasi