İçeriğe geçin
buybitcoinsmart

Sözlük / Protokol ve güncellemeler

Kompakt blok aktarımı

Diğer adları: BIP152.

Kompakt blok aktarımı nedir?
Kompakt blok aktarımı, ağda yeni bir bloğu altı baytlık tanımlayıcılardan oluşan bir listeyle değiştirir; alıcı düğüm bu tanımlayıcıları hâlihazırda elinde bulunan işlemlerle eşleştirir ve bloğu yerel olarak yeniden birleştirir.

Tanımlandığı belge: BIP-152.

Mempool'u izleyen iki eş, sonraki bloktaki neredeyse tüm işlemleri zaten paylaşır, dolayısıyla bunları ikinci kez göndermek boşa emektir. Matt Corallo çözümü BIP152 olarak tanımladı ve Bitcoin Core bunu 23 Ağustos 2016 tarihinde yayımlanan 0.13.0 sürümünde etkinleştirdi. Evinde düğüm çalıştıran biri için bu, katlanılabilir bir bant genişliği faturası ile katlanılamaz bir fatura arasındaki farktır.

Nasıl çalışır

Kompakt blok aktarımı protokole dört mesaj ekler ve ilginç olanı, bir bloğu içermeden tanımlayan cmpctblock mesajıdır.

Bir cmpctblock, 80 baytlık başlığı, gönderenin seçtiği 8 baytlık bir nonce'u ve ardından bloktaki her işlem için altı baytlık bir kısa tanımlayıcıyı taşır. Bu tanımlayıcılar, başlığın o nonce ile birleştirilmiş halinin SHA-256 özetinden anahtarlanan SipHash-2-4 ile üretilir. Şemayı güvenli kılan nonce'dur: tanımlayıcılar her blokta ve her gönderende farklıdır, bu yüzden kimse tanımlayıcıları çakışan ve yeniden birleştirmeyi tüm ağda aynı anda tıkayan iki işlemi önceden hazırlayamaz.

Bazı işlemler tanımlayıcıyla değil tam olarak gönderilir. Coinbase işlemi her zaman böyledir, çünkü hiçbir eş onu önceden görmüş olamaz; gönderen, alıcının elinde olmayacağını düşündüğü başka her şeyi de önceden ekleyebilir.

Yeniden birleştirme daha sonra alıcı tarafta gerçekleşir. Düğüm, kendi mempool'undaki her işlemi aynı anahtarla özetler, her kısa tanımlayıcıyı arar ve bloğu doldurur. Ayrıca, yakın zamanda mempool'dan atılmış ve değiştirilmiş işlemlerden oluşan küçük bir ek havuz tutar; bu havuz, kısa süre önce mempool'dan düşen işlemleri yakalar. Hâlâ eksik olan ne varsa konumuyla birlikte getblocktxn ile istenir ve gönderen yalnızca o işlemleri bir blocktxn mesajıyla döndürür.

İki durum, bloğun tamamını indirmeye geri dönmeyi zorunlu kılar: bir gidiş dönüşe değmeyecek kadar çok eksik işlem olması ya da iki farklı işlemin aynı altı baytlık tanımlayıcıyı üretmesi. Altı bayt 281 trilyon değere izin verir, dolayısıyla kazara çakışmalar son derece nadirdir; kasıtlı olanları ise nonce kuralı dışlar.

Duyuru iki biçimde gelir. Düşük bant genişliği modunda bir eş yeni bir bloğu duyurur ve istenmesini bekler. Bir düğümün en fazla üç eş için etkinleştirdiği yüksek bant genişliği modunda cmpctblock, blok geldiği anda iletilir ve yayılma hızının en çok önem taşıdığı yolda bir gidiş dönüş tasarrufu sağlar.

Nerede görürsünüz

Kompakt blok aktarımı kendi düğümünüzün günlüğünde, her blok için bir satır olarak görünür ve bunu okumak bir düğümün sağlıklı olup olmadığını anlamanın en hızlı yoludur.

Bitcoin Core, kaç işlemin önceden eklendiğini, kaçının mempool'dan geldiğini, kaçının ek havuzdan geldiğini ve kaçının istenmesi gerektiğini belirten bir yeniden birleştirme özeti yazdırır. Saatlerdir çalışan bir makinede istenen sayı genellikle sıfır ya da sıfıra yakındır. On dakika önce başlatılan bir makinede mempool neredeyse boştur, neredeyse her şeyin indirilmesi gerekir ve ilk birkaç blok yavaş gelir.

Buradan, bir web sitesine güvenmek yerine kendi bakiyesini kontrol etmek için düğüm çalıştıran herkes için pratik bir kural çıkar: düğümü çalışır bırakın. Tam ihtiyaç duymadan hemen önce yeniden başlatılan bir düğüm, tam bloklar indiren bir düğümdür ve zincir ucuna ilişkin görüşü, mempool yeniden dolana kadar herkese açık bir blok gezgininin gerisinde kalır.

Karıştırılmaması gerekenler

Sık sorulan sorular

Kompakt blok aktarımı geçerli blok sayılan şeyi değiştirir mi?

Hayır. Yalnızca baytların eşler arasında nasıl hareket ettiğini değiştirir. Alıcı düğüm, yeniden birleştirilen bloğu aynı konsensüs kurallarına göre baştan doğrular, bu yüzden kompakt biçimde gelen bir blok, tam olarak indirilen bir blok kadar sıkı kontrol edilir.

Düğümüm neden yeniden başlatmanın ardından tam bloklar indirir?

Çünkü yeniden birleştirme, içinde işlem bulunan bir mempool gerektirir. Yeni başlatılan bir düğümün kısa tanımlayıcılarla eşleştirecek neredeyse hiçbir şeyi yoktur, bu yüzden her bloğun büyük bölümünü istemesi gerekir. Mempool yeniden dolarken bu davranış yaklaşık bir saat içinde kendiliğinden düzelir.

İlgili terimler

Daha fazlası: Protokol ve güncellemeler

Bu sayfayı İngilizce okuyun