Sözlük / Geliştirici başvuru kaynağı
MSG_FILTERED_WITNESS_BLOCK
- MSG_FILTERED_WITNESS_BLOCK nedir?
- Filtrelenmiş tanık bloğu türü, BIP144'ün ayrılmış listesinde ve Bitcoin Core kaynak kodundaki enum içinde yer alır; her iki yerde de arkasında bir uygulama yoktur.
Tanımlandığı belge: BIP-144.
MSG_FILTERED_WITNESS_BLOCK, 2016 yılında segwit'in eş kuralları yazılırken ayrılmış ve hiçbir zaman uygulaması verilmemiş, 0x40000003 numaralı envanter kodudur. Bitcoin Core bunu, tam olarak bunu kaydeden bir yorumla birlikte bir enum girdisi olarak taşır. Genişletmiş olacağı hafif cüzdan özelliği, yani BIP37 bloom filtresi, Bitcoin Core 0.19.0 sürümünde varsayılan olarak kapatıldı; bu da sizin için yalnızca telefon cüzdanınız hâlâ buna dayanıyorsa önemlidir.
Nasıl çalışır
Durum: ayrılmış ve hiç inşa edilmemiş. Türe BIP144 ad verdi; Bitcoin Core bunu src/protocol.h içinde, hiçbir işleyicinin bulunmadığını kaydeden bir yorumla birlikte bir enum girdisi olarak taşır. Hizmet vereceği BIP37 filtreleme, Kasım 2019'dan itibaren Bitcoin Core 0.19.0 sürümünde varsayılan olarak devre dışı bırakıldı ve yerini BIP157 ile BIP158 kompakt blok filtreleri aldı.
Bu boşluğu anlamak, filtrelenmiş bir bloğun ne olduğunu anlamak demektir. BIP37 kullanan bir hafif istemci, ilgilendiği adresleri kabaca tanımlayan bir filterload mesajı gönderir. Ardından 3 numaralı envanter türünü, yani MSG_FILTERED_BLOCK'u ister ve hizmet veren düğüm bir merkleblock mesajıyla yanıt verir: 80 baytlık blok başlığı, bir işlem sayısı, kısmi bir merkle dalı ve ağaçta hangi yöne yürüneceğini söyleyen bir bit alanı. Eşleşen işlemler ayrı mesajlar olarak ardından gelir. İstemci, her birinin gerçekten başlığın merkle köküne bağlı olduğunu kontrol eder ve bunu yalnızca txid'leri kullanarak yapar.
Tanıklar bu aritmetiğe hiç girmedi. Merkle kökü txid'lerden inşa edildiği için bir hafif istemci, tek bir imza olmadan dahil olmayı kanıtlayabilir; bu yüzden sonraki işlemler tanık verisi çıkarılmış olarak gönderiliyordu. Tanık bayrağı eklenmiş ayrılmış 3 türü, yani 0x40000003, bir istemcinin bu işlemleri tam olarak istemesine izin verirdi. Kimse bunu inşa etmedi, çünkü hafif cüzdan üreten kimse daha fazla BIP37 istemiyordu.
Bunun nedeni emek değil, gizliliktir. Bir istemcinin yüklediği filtre, hizmet veren düğüme kabaca hangi adreslerin ona ait olduğunu söyler ve 2010'ların ortalarına kadar yapılan araştırmalar bu filtrelerin amaçlanandan çok daha fazlasını sızdırdığını gösterdi. Bitcoin Core yanıtı, tasarımı onarmak yerine bunları varsayılan olarak sunmayı bırakmak oldu. BIP158 ise akışı tersine çevirir: düğüm her blok için 784.931 içinde bir yanlış pozitif oranına ayarlanmış küçük, Golomb kodlamalı bir filtre oluşturur ve yayımlar. İstemci filtreleri indirir, yerel olarak test eder ve yalnızca bir eşleşme olduğunda tam bir blok indirir; böylece sunucu hangi adreslerin ilgi çekici olduğunu öğrenmez.
Nerede görürsünüz
Neredeyse hiçbir yerde; MSG_FILTERED_WITNESS_BLOCK'u bir başvuru tablosunda bulan herkes için dürüst yanıt budur.
Bitcoin Core içinde sabiti grep ile ararsanız tek bir enum üyesi bulursunuz. btcd gibi alternatif uygulamalar, bütünlük adına bu adı wire paketlerinde yansıtır, yine arkasında hiçbir davranış olmadan. Hiçbir cüzdan bunu hiç göndermedi.
Konunun bir alıcıya dokunduğu yer, bir mobil cüzdanın verisini nasıl aldığıdır. Bir cüzdan kendini SPV olarak tanımlıyor ve bloom filtreleriyle rastgele genel düğümlere bağlanıyorsa, referans uygulamanın yıllar önce varsayılan olarak sunmayı bıraktığı bir mekanizmayı kullanıyor ve o düğümlere adresleriniz hakkında bir şeyler söylüyor demektir. lnd yazılımındaki Neutrino istemcisinin arkasındaki tasarım olan kompakt blok filtreleri üzerine kurulu cüzdanlar çok daha az şey ister. Satıcısının kendi sunucusuna yönlendirilmiş bir cüzdan üçüncü seçenektir ve en yaygın olanıdır: hızlı, yabancılara karşı gizli ve satıcıya tamamen görünür.
MSG_FILTERED_WITNESS_BLOCK vs merkle bloğu
Bir merkle bloğu yanıttır; MSG_FILTERED_WITNESS_BLOCK ise hiçbir zaman bir tane üretmeye bağlanmamış bir istektir. merkleblock mesajı, bir dizi işlemin bloğu göndermeden bir bloğa ait olduğunu kanıtlayan gerçek, uygulanmış bir yapıdır. Ayrılmış tanık varyantı yalnızca bu kanıttan sonra neyin geldiğini değiştirirdi, yani eşleşen işlemlerin imzalarıyla gelip gelmediğini. Dahil olma kanıtları txid'ler üzerinden çalıştığı için eksik özelliğin kimseye bir maliyeti olmadı.