İçeriğe geçin
buybitcoinsmart

Sözlük / Madencilik ve konsensüs

Önceki blok başlığı hash değeri

Önceki blok başlığı hash değeri nedir?
Önceki blok başlığı hash değeri, her blok başlığında üst bloğunu adlandıran 32 baytlık alandır ve bir yığın bloğu zincire dönüştüren tek bağlantı budur.

Her blok geriye bakar, asla ileriye bakmaz. İşaretçi hash değeri hesaplanan 80 baytın içinde durduğu için, eski bir bloktaki herhangi bir şeyi düzenlemek o bloğun hash değerini değiştirir ve üzerine inşa edilmiş her bloğu bozar; bu nedenle bir yıl önceki bir ödemeyi geri almak kabaca 52.000 blokluk iş kanıtını yeniden yapmak anlamına gelir. İnsanların Bitcoin değiştirilemez derken kastettiği budur, veri silmeyle ilgili herhangi bir kural değil.

Nasıl çalışır

Önceki blok başlığı hash değeri, üst bloğun 80 baytlık başlığı üzerinde SHA-256 işleminin iki kez çalıştırılmasıyla üretilir ve bir bloğun kendi dışındaki herhangi bir şeye tuttuğu tek referanstır.

Üst bloğun başlığı kendi üst bloğunun hash değerini, o da kendi üst bloğununkini ve böylece başlangıca kadar içerdiği için, tek bir 32 baytlık alan kendisinden önceki tüm geçmişi taahhüt eder. Zincirin ucunu doğrulamış bir düğüm, ona götüren zincirin kendi içinde tutarlı olduğunu örtük olarak doğrulamış olur. Geçen yaz çıkarılmış bir bloktaki bir işlemi kurcalarsanız o bloğun başlık hash değeri değişir; bu, alt bloğun elindeki kopyanın artık eşleşmediği, dolayısıyla alt bloğun geçersiz olduğu ve ondan sonraki her şeyin de geçersiz olduğu anlamına gelir. Hasarı onarmak, o blokların her birinde yeniden madencilik yapmak demektir: kabaca günde 144 blok, yılda 52.560 blok.

Genesis bloğu istisnadır ve olmak zorundadır: ondan önce hiçbir şey yoktur, bu yüzden alan 32 sıfır bayttır.

Bir blokta hiçbir şey ileriye işaret etmez. Bitcoin Core bir nextblockhash bildirdiğinde kendi dizinini okuyordur, bloğu değil; önceki blok başlığı hash değeri asla değişmezken bu değerin bir yeniden düzenleme sırasında değişebilmesinin nedeni tam olarak budur. İki bloğun aynı üst bloğu adlandırması da bir hata değildir. Verinin bakış açısından bir çatal böyle görünür ve ağ bunu iki işaretçiden birini yanlış ilan ederek değil, birikmiş işi en fazla olan dalı tercih ederek çözer.

Nerede görürsünüz

Önceki blok başlığı hash değeri, neye baktığınıza bağlı olarak biraz farklı adlarla karşınıza çıkar.

Bitcoin Core bunu getblockheader ve getblock çağrılarında previousblockhash olarak döndürür. Blok 0 için alan yanıtta hiç bulunmaz, çünkü adlandırılacak bir üst blok yoktur. Blok gezginleri genellikle bunu Previous Block olarak etiketler ve bir bağlantıya dönüştürür; geçmişte geriye doğru tıklayarak ilerleme böyle çalışır.

Aynı zamanda bir başlık zinciri eşitlemesinin bütün özü de budur. Başlık indiren bir düğüm her başlıkta iki şeyi kontrol eder: bunun bir öncekini adlandırdığını ve hash değerinin hedefi karşıladığını. Ancak bu zincir bir arada durduktan sonra blok gövdelerini istemeye başlar. Hafif cüzdanlar bunun ötesine hiç geçmez; bağlantıları ve işi tutar, başka bir şey tutmaz.

Alanı bir gün elle kurarsanız kendi gözlerinizle tartışmaya hazır olun, çünkü başlıktaki baytlar hash değerinin normalde alıntılandığı sırada yazılmamıştır.

Önceki blok başlığı hash değeri vs iç bayt sırası

Önceki blok başlığı hash değeri, herkesin alıntıladığı sıranın tersi bayt sırasında saklanır ve bir başlığı elle doğrulamaya çalışan neredeyse herkesin takıldığı nokta budur. Blok 1, üst bloğunun hash değerini 6fe28c0ab6f1b372c1a6a246ae63f74f931e8365e15a089c68d6190000000000 olarak taşır. Bu, bilinen genesis hash değeri olan 000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f değerinin bayt bayt tersten yazılmış halidir. İş kanıtının ürettiği baştaki sıfırlar ham alanda sona düşer. İkisi göze görünür biçimde eşleşmediğinde yanlış giden bir şey yoktur: baytları ters çevirin, eşleşirler.

Karıştırılmaması gerekenler

Sık sorulan sorular

Genesis bloğunun önceki blok başlığı hash değeri nedir?

Otuz iki sıfır bayt. Blok 0 öncesinde hiçbir şey gelmediği için alan sıfırlarla doludur ve Bitcoin Core o blok için getblockheader yanıtından previousblockhash alanını yalnızca atlar.

Blok hash değerleri bir blok gezgininde neden ters görünür?

Çünkü başlık bunları herkesin alıntıladığı sıranın tersi bayt sırasında saklar. Blok 1, üst bloğunun hash değerini 6fe28c0a ile başlayacak biçimde taşır; bu, bilinen genesis hash değerinin başında 00000000 bulunan halinin bayt bayt tersten yazılmış biçimidir.

Sıradaki okuma

İlgili terimler

Daha fazlası: Madencilik ve konsensüs

Bu sayfayı İngilizce okuyun