180 / 736BIP157/158

Compact Block Filters

Bagaimana dompet menemukan blok yang dibutuhkan tanpa mengunduh semuanya

Dompet di ponsel perlu menemukan pembayarannya tanpa mengunduh setiap transaksi dari setiap blok. Compact Block Filters menyediakan ringkasan kecil untuk diperiksa secara lokal. Kecocokan mengarahkan dompet ke blok sebenarnya; kecocokan saja belum berarti pembayaran diterima.

Compact Block Filters adalah filter data kecil untuk tiap blok. Blok adalah sekumpulan transaksi yang ditambahkan ke riwayat bersama jaringan. Filter membantu dompet ringan memilih blok yang mungkin memuat transaksinya dan layak diunduh. Bayangkan indeks petunjuk yang hemat data tetapi bisa menghasilkan kecocokan palsu. Pencarian berlangsung di dalam dompet sehingga daftar pantauannya tidak perlu dikirim ke server.

Anna membuka dompet ponselnya setelah lama tidak digunakan. Aplikasi perlu mengetahui apakah ada pembayaran masuk sejak koneksi terakhir atau apakah sebagian dananya telah dibelanjakan. Alih-alih semua transaksi, dompet mengunduh filter kecil dan membandingkannya dengan syarat output yang dipantau. Output adalah bagian transaksi yang menetapkan jumlah dan aturan untuk membelanjakannya berikutnya. Jika cocok, aplikasi meminta seluruh blok dan mencari transaksi sebenarnya. Saldo tidak boleh naik hanya karena kecocokan filter. Filter bukan laporan rekening ataupun bukti kepemilikan. Sebelum mencari, klien menyinkronkan header, yaitu data singkat pengenal blok, serta header filter yang saling terhubung. [1]

Pada pendekatan lama BIP 37, klien mengirim filter yang dibuat dari data pantauannya kepada sebuah peer, yakni node yang terhubung dengannya. Di sini arahnya dibalik: server menyediakan filter blok dan Anna mencari secara lokal. Untuk blok dan jenis filter yang sama, klien menerima isi yang sama. Mereka tidak perlu langsung mengungkap skrip yang dicari kepada setiap server. Ini bukan jaminan anonimitas: peer masih dapat melihat alamat IP, waktu koneksi, dan blok lengkap yang diminta kemudian. Membagi unduhan ke beberapa peer mengurangi informasi pada satu pihak, tetapi tidak menghapus semua kemungkinan korelasi. [1]

Compact Block Filters memilih blok yang perlu diperiksa. Compact Blocks menurut BIP 152 menyelesaikan masalah berbeda: menghemat transfer blok dengan pengenal pendek transaksi yang sering kali sudah diketahui penerima. Penerima mengambilnya dari Mempool, kumpulan lokal transaksi yang belum dikonfirmasi, lalu meminta yang belum tersedia. Kedua alat itu tidak memeriksa seluruh aturan Bitcoin dengan sendirinya. Full Node, atau node penuh, memvalidasi blok dan transaksi secara mandiri menurut aturan jaringan. Dompet ringan yang hanya memeriksa header dan keberadaan transaksinya dalam blok melakukan pemeriksaan lebih terbatas. Menghemat data dan memvalidasi sepenuhnya adalah dua hal berbeda. [1] [5]

BIP 158 menentukan formatnya. Filter basic memuat scriptPubKey, skrip penentu syarat pengeluaran, dari output baru kecuali yang diawali OP_RETURN. Filter juga memuat skrip output terdahulu yang dibelanjakan di dalam blok. Untuk input, pengecualiannya ialah coinbase, transaksi pertama blok yang membagikan imbalan penambang dan tidak membelanjakan output terdahulu biasa. Output barunya mengikuti aturan penyertaan yang sama dengan output baru lainnya. Elemen kosong diabaikan. Dompet harus mengubah alamat menjadi skrip yang benar; mencari teks alamat yang tercetak tidak cukup. Filter bukan mesin pencari umum untuk txid, yaitu pengenal transaksi, data witness seperti tanda tangan, ataupun catatan sembarang. [2] [3]

Setelah mengunduh blok, Anna mungkin mendapati tidak ada isinya yang berkaitan dengannya. Kecocokan palsu ini merupakan kompromi normal agar filter kecil, bukan bukti kesalahan dengan sendirinya. Secara teknis, elemen diubah menjadi sidik jari angka, diurutkan, dan selisihnya disimpan secara ringkas dengan pengodean Golomb-Rice. Untuk basic berlaku P=19 dan M=784931. Satu kueri untuk elemen yang tidak ada memiliki peluang kecocokan sekitar 1/M; semakin banyak elemen dipantau, semakin banyak kesempatan munculnya kecocokan. Ini bukan tingkat kesalahan tetap untuk seluruh dompet. Filter yang dibuat benar tidak melewatkan elemen yang disertakan. Hasil negatif hanya andal jika filter benar, jenis datanya tercakup, dan kuerinya tepat. [2]

BIP 157 mengatur pengiriman filter beserta header yang saling terhubung. Tiap header menghubungkan hash, sidik jari kriptografis filter saat ini, dengan header sebelumnya. Perubahan filter memutus hubungan yang diharapkan. Namun, rantai ini bukan bagian header blok Bitcoin dan isinya tidak diikat langsung oleh penambangan. Peer yang tidak jujur dapat membuat filter palsu beserta sidik jari berantai yang dihitung dengan benar. Ia tidak mengubah Bitcoin, tetapi dapat menyembunyikan informasi dari klien yang terisolasi. Karena itu, memeriksa hubungan matematis harus disertai pemeriksaan kebenaran data. [1]

BIP 157 mengandalkan perbandingan beberapa peer dengan setidaknya satu sumber jujur. Bila mereka berbeda, klien dapat menemukan titik perbedaan pertama dan memeriksa filter berdasarkan data asal. Membuat basic mungkin memerlukan lebih dari blok baru: skrip output terdahulu yang dibelanjakan oleh transaksinya juga dibutuhkan. Reorganisasi perlu penanganan khusus: jaringan beralih ke cabang blok valid lain dengan akumulasi kerja lebih besar. Dompet harus menghubungkan filter ke cabang baru dan memperbarui riwayat serta saldo. Ketinggian yang sama, yaitu posisi dalam rantai, belum tentu menunjuk blok yang sama. [1] [3]

Dompet membutuhkan filter yang tersedia dan cara mendapatkan blok lengkap yang dipilih. Node dapat menghapus blok lama setelah membuat filternya; sumber lain harus menyediakannya. Di Bitcoin Core, getblockfilter mengembalikan filter dan header untuk blok tertentu jika indeks yang sesuai diaktifkan. Tersedianya perintah itu tidak membuktikan adanya layanan P2P publik bagi node lain atau akses ke seluruh riwayat. Filter blok yang sudah ada juga tidak mengumumkan transaksi belum terkonfirmasi dalam Mempool. Untuk menampilkan pembayaran tertunda, aplikasi perlu mekanisme lain. Rincian operasional inilah yang menentukan apakah dompet ringan benar-benar bekerja baik. [1] [4]

Untuk gambaran yang lebih utuh, baca entri ini bersama Compact Block Filters, Neutrino, Full Node, Privasi Bitcoin, Compact Blocks, Bitcoin. Entri ini juga dirujuk dari Neutrino, Erlay.

DOC · 001BIP 157 — Client Side Block FilteringSpesifikasi DOC · 002BIP 158 — Compact Block Filters for Light ClientsSpesifikasi DOC · 003Bitcoin Core — BasicFilterElementsSumber primer DOC · 004Bitcoin Core 30.0 — getblockfilterDokumentasi DOC · 005BIP 152 — Compact Block RelaySpesifikasi
Direvisi: Utamakan sumber · Bukan nasihat investasi