Sözlük / Madencilik ve konsensüs
Merkle bloğu
Diğer adları: Merkle block, Kısmi Merkle dalı.
- Merkle bloğu nedir?
- Merkle bloğu, hafif bir cüzdan filtre uygulanmış blok içeriği istediğinde aldığı yanıttır: 80 baytlık başlık ve hangi işlemlerin eşleştiğini kanıtlamaya yetecek kadar hash.
Tanımlandığı belge: BIP-37.
BIP37, bir cüzdanın bir düğüme filtre vermesine ve yalnızca eşleşenleri, hiçbir şeyin uydurulmadığına dair bir kanıtla birlikte almasına olanak tanıyordu. Tasarım hem gizlilik hem de yük açısından başarısız oldu: Bitcoin Core, Kasım 2019'da yayımlanan 0.19.0 sürümünde özelliği varsayılan olarak kapattı. Modern bir hafif cüzdan kullanıyorsanız, neredeyse kesinlikle onun yerine kompakt blok filtrelerini kullanıyordur.
Nasıl çalışır
Durum: BIP37 bloom filtresi ve ona hizmet eden merkleblock mesajı, gizlilik ve hizmet reddi gerekçeleriyle Kasım 2019'da Bitcoin Core 0.19.0 sürümünde varsayılan olarak devre dışı bırakıldı. BIP157 ve BIP158 belgelerinde tanımlanan kompakt blok filtreleri onun yerini aldı ve Bitcoin Core, Ocak 2021'deki 0.21.0 sürümünden beri bunları eş düğümlere sunabiliyor.
Merkle bloğu bir özet değil, bir kanıttır. Yapısı dört bölümden oluşur: blok başlığı, bloktaki toplam işlem sayısı, sıralı bir hash listesi ve kompakt bir bayrak bit alanı. Bayraklar, bloğun Merkle ağacında derinlik öncelikli bir yürüyüşü tanımlar ve alıcı cüzdana bir dala inmesi mi gerektiğini yoksa listeden bir sonraki hash'i altındaki her şeyin yerine mi alması gerektiğini söyler. Cüzdan bu yürüyüşü yeniden oynatır, bir köke ulaşır ve bunu kendisine verilen başlıktaki kökle karşılaştırır.
Bütün mesele bu karşılaştırmadır. Kötü niyetli bir eş düğüm, işlemlerden söz etmeyerek onları sizden saklayabilir ve hiçbir filtreli protokol bunu engelleyemez. Yapamayacağı şey, hiç almadığınız bir işlemi uydurmaktır, çünkü uydurulan hash, arkasında gerçek iş kanıtı (proof of work) bulunan bir başlıkla eşleşen bir kökü yeniden oluşturamaz.
Bir tane istemek iki adımlı bir alışveriştir. Cüzdan bir filterload mesajıyla bir filtre yükler, ardından sıradan blok yerine filtrelenmiş blok envanter türünü kullanarak bir blok ister. Önce Merkle bloğu gelir, ardından eşleşen işlemlerin tamamı ayrı mesajlar olarak gelir. 2.000 işlem ve tek eşleşme içeren bir blok, cüzdana bir megabayt ya da daha fazlası yerine bir başlığa, yaklaşık bir düzine hash'e ve tek bir işleme mal olur.
Nerede görülür
Merkle blokları, büyük ölçüde emekliye ayrılmış bir mobil cüzdan kuşağına aittir.
BitcoinJ kütüphanesi bunları yaygınlaştırdı ve onun üzerine kurulu Android cüzdanları 2010'ların büyük bölümünde bu yolla eşitlendi. Bu uygulamalardan birinin eski bir sürümünü çalıştıran biri hâlâ filterload mesajları gönderiyor ve yanıt verecek bir eş düğüm bulamayarak sessizce başarısız oluyor olabilir, çünkü sunmak için bir işletmecinin peerbloomfilters ayarını elle yeniden açmış olması gerekir.
Onların yerini alan şey, isteğin yönünü tersine çevirir. Kompakt blok filtrelerinde düğüm her blok için o bloğun ne içerdiğini tanımlayan küçük bir filtre yayımlar, cüzdan filtreleri indirir, hangi blokların ilginç olduğuna yerel olarak karar verir ve o blokları bütün olarak getirir. Cüzdanın adreslerine dair hiçbir şey cihazdan çıkmaz. lnd'nin Neutrino arka ucu ve onun üzerine kurulu mobil Lightning cüzdanlarının arkasındaki model budur.
Gizlilik başarısızlığı, değişikliğin nedeni olduğu için açıkça belirtilmeye değer. Arthur Gervais ve ortak yazarlarının 2014'te yayımladığı çalışma, bloom filtreli bir istemciye hizmet veren bir düğümün o istemcinin adreslerinin büyük çoğunluğunu geri elde edebildiğini ve aynı filtreyle iki blok istemenin daha da fazlasını sızdırdığını gösterdi. Cüzdanı gizlemesi gereken yanlış pozitif dolgusu onu gizlemedi.
Merkle bloğu vs bloom filtresi
Bloom filtresi cüzdanın yukarı gönderdiği şeydir; Merkle bloğu aşağı dönen şeydir. Filtre, birinin önemsediği adreslerin ve outpoint'lerin olasılıksal, kayıplı bir tanımıdır ve hizmet veren düğümde bulunur. Merkle bloğu, belirli tek bir blok hakkında deterministik bir kanıttır ve yanıtta bulunur. İkisi bir çift olarak kullanımdan kaldırıldı, ancak gizlilik sorunu yalnızca filtredeydi. Merkle kanıtları kendi başına hâlâ geçerlidir, bu yüzden kompakt blok filtreleri kanıt fikrini korudu ve bir yabancıya neye sahip olduğunuzu söylediğiniz kısmı attı.