İçeriğe geçin
buybitcoinsmart

Sözlük / Geliştirici başvuru kaynağı

Dahili bayt sırası

Dahili bayt sırası nedir?
Dahili bayt sırası, Bitcoin'in serileştirilmiş yapılar içinde kullandığı düzendir: tam sayılar en az anlamlı bayt önce gelecek şekilde yazılır, hash özetleri ise SHA-256 işlevinin ürettiği sırayla yazılır.

Tek bir ad altında iki kural bir arada bulunur. Bir işlemdeki veya blok başlığındaki her tam sayı alanı little endian düzenindedir, bu nedenle sürüm numarası 2, 02000000 olarak yazılır ve her 32 baytlık hash, ham veride tam olarak hash işlevinin ürettiği biçimde durur. İnsana yönelik araçlar bu hashleri yazdırmadan önce ters çevirir; el ile yazılmış bir ayrıştırıcının bir blok gezgininden farklı sonuç vermesinin en yaygın nedeni budur.

Nasıl çalışır

Dahili bayt sırası en iyi, 80 baytlık genesis blok başlığını parçalarına ayırarak öğrenilir, çünkü içindeki her alan gözle kontrol edilebilecek kadar küçüktür.

Başlık 01000000 ile, yani dört little endian bayt olarak yazılmış sürüm numarası 1 ile başlar. Ardından 32 sıfır bayt gelir, çünkü ilk bloğun üst bloğu yoktur. Ardından merkle kökü gelir; 3ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4a olarak saklanır ve bu, her gezginin 4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b olarak yazdırdığı özetin bayt bayt ters çevrilmiş halidir. Ardından 29ab5f49 gelir, yani 1231006505 zaman damgası, başka deyişle 3 Ocak 2009'da saat 18:15:05 UTC. Ardından ffff001d gelir, mantıksal değeri 0x1d00ffff olan zorluk alanı. Ardından 1dac2b7c gelir, yani 2083236893 nonce değeri.

Tutarlar aynı kurala uyar. Bir Bitcoin 100.000.000 satoshidir ve tam olarak bu tutarı ödeyen bir çıktı, 00e1f50500000000 şeklindeki sekiz baytı taşır.

Bunun nedeni tarihsel ve oldukça sıradandır. Bitcoin, tam sayıları en az anlamlı bayt önce gelecek şekilde tutan x86 makineleri için yazılmıştı ve en eski kod yapıları işlemcinin elinde zaten bulunduğu düzenle yazıyordu. Hashler hiçbir zaman ters çevrilmedi. Değişen şey yazdırma oldu, çünkü Bitcoin Core bir özeti onu tek bir dev sayı olarak ele alan bir sınıfta saklar ve sayılar en anlamlı kısım solda olacak şekilde yazdırılır.

Nerede görülür

Dahili bayt sırası, bir araç size biçimlendirilmiş bir yanıt yerine ham bayt verdiğinde karşınıza çıkan düzendir.

verbose bayrağı olmadan getrawtransaction ile bir işlem veya verbose false olarak ayarlanmış getblockheader ile bir başlık alın; içindeki her şey bu sırayla gelir. Aynı durum bir donanım cüzdanının dışa aktardığı bir PSBT, bir gezginin ham veri sekmesinin arkasındaki hex ve bir düğümün blocks dizininde duran blok dosyaları için de geçerlidir.

İnsanları yanıltan alan, her girdinin başındaki outpoint alanıdır. Harcanan işlemi, gezginin gösterdiği tanımlayıcının tersi olarak okunan 32 baytla adlandırır. Bu iki dizi eşleşmediğinde hiçbir şey bozuk değildir: birini ters çevirin, eşleşirler.

Dahili bayt sırası vs RPC bayt sırası

Dahili bayt sırası ve RPC bayt sırası, zıt yönlerde akan aynı 32 baytı tanımlar ve ikisi arasında dönüştürme kuralının önemli bir istisnası vardır. Hash özetleri bir insana gösterilirken ters çevrilir ve geri alınırken yeniden ters çevrilir. Tam sayılar çevrilmez. Bir blok yüksekliği, bir zaman damgası ve satoshi cinsinden bir tutar, hepsi sıradan ondalık sayılar olarak sunulur ve bunlardan birini alırken veya verirken ters çevirmek, farklı yazılmış bir değer değil, yalnızca yanlış bir değer verir. Hashleri ters çevirin, başka hiçbir şeyi değil; bayt sırası hatalarının çoğu ortadan kalkar.

Karıştırılmaması gerekenler

Sık sorulan sorular

Ham bir işlemin içinde hashler neden ters görünür?

Ters değiller, yazdırılan sürüm ters. Bir özet, SHA-256 işlevinin ürettiği sırayla saklanır; görüntüleme araçları ise onu ters çevirir, çünkü Bitcoin Core bir hashi tek bir büyük sayı olarak ele alır ve en anlamlı kısmı önce yazdırır.

Ham Bitcoin verilerini ayrıştırırken her alanı ters çevirmeli miyim?

Hayır. Tam sayılar little endian düzenindedir ve bu şekilde okunur; ters çevrilen tek değerler 32 baytlık hashlerdir ve yalnızca bunları bir gezginin veya bir RPC çağrısının gösterdiğiyle karşılaştırmak istediğinizde ters çevrilir.

Sıradaki okuma

İlgili terimler

Daha fazlası: Geliştirici başvuru kaynağı

Bu sayfayı İngilizce okuyun