Sözlük / Düğümler ve yazılım
Mesaj başlığı
- Mesaj başlığı nedir?
- Bitcoin'in mesaj başlığı, eşler arası her mesajın etrafını saran sabit 24 baytlık bir zarf: bir ağ başlangıç dizesi, bir komut adı, bir yük uzunluğu ve bir sağlama toplamı.
Eşler arası protokolde hiçbir şey kendini tanımlamaz, bu yüzden bu işi zarfın yapması gerekir. Dört alanı boyut veya sıra olarak asla değişmez; bir düğüm tam 24 bayt okuyabilir, daha ne kadarının geleceğini öğrenebilir ve Bitcoin Core yazılımının kabul edeceği 4.000.000 baytı aşan bir şey bildiren bağlantıyı kapatabilir. Siz hiçbir zaman bir tane görmezsiniz, ancak bozuk bir başlık, bir eş bağlantısının bazen açıklama olmadan kaybolmasının nedenidir.
Nasıl çalışır
Başlığın dört alanı sabit bir sırayla okunur ve her biri sonra ne olacağını belirler.
0 ile 3 arasındaki baytlar ağı tanımlayan başlangıç dizesini içerir. 4 ile 15 arasındaki baytlar komutu içerir: on iki karaktere kadar null baytlarla doldurulmuş küçük harfli bir ASCII adı; bu nedenle Bitcoin'deki her mesaj türünün kısa bir adı vardır ve on karakterle cmpctblock üst sınıra yakın durur. 16 ile 19 arasındaki baytlar yük uzunluğunu little-endian işaretsiz bir tamsayı olarak içerir. 20 ile 23 arasındaki baytlar bir sağlama toplamı içerir: yük üzerinde hesaplanan çift SHA-256 sonucunun ilk dört baytı.
Uzunluğu yükten önce koymak, tasarımın gerçek güvenlik özelliğidir. 24 baytı tüketmiş bir düğüm, gönderenin saçma bir şey bildirip bildirmediğini zaten bilir ve Bitcoin Core yazılımı 4.000.000 baytın üzerindeki her şeyi reddedip bağlantıyı keser; bir tampon ayırmaz ve hiç gelmeyebilecek veriyi beklemez. Uzunluğu gövdeden sonra koyarsanız, gönderenin duracağına güveniyorsunuz demektir.
Sağlama toplamı, genellikle aldığından daha az saygıyı hak eder. Dört baytlık hash, bozuk bir bağlantıda ters dönmüş bir biti yakalar ve yalan söyleyen bir eşe karşı hiçbir işe yaramaz, çünkü düşmanca bir gönderen sağlama toplamını ne göndermeyi seçtiyse onun üzerinden hesaplar. Bitcoin'de bütünlük, içeriğin konsensüs kurallarına göre doğrulanmasından gelir, bu alandan asla.
Yeni yazılımlarda tüm yapı isteğe bağlıdır. BIP324 önerisinin 2 numaralı sürümündeki taşıma katmanı bağlantıyı şifreler ve düz metin zarfının yerine, gizlenmiş uzunluk çerçevelemesi ile en yaygın mesaj türleri için bir baytlık kısa tanımlayıcı koyar; böylece pasif bir gözlemci artık komut adlarını hattan okuyamaz. Bitcoin Core yazılımı bunu 26.0 sürümünde isteğe bağlı bir ayar olarak sundu ve daha sonraki bir sürümde varsayılan olarak açtı.
Nerede görülür
Mesaj başlıkları paket yakalamalarında ve bir düğümün kendi tanılama çıktılarında görülür.
Bitcoin Core yazılımını -debug=net ile çalıştırın; günlük her eş için mesaj türlerini ve boyutlarını kaydeder, bu da bir bağlantının gerçekte ne yaptığını izlemenin pratik yoludur. PROCESSMESSAGE: INVALID MESSAGESTART yazan günlük satırları, bir eşin bu ağın başlangıç dizesiyle başlamayan baytlar gönderdiği anlamına gelir; bu neredeyse her zaman bir saldırı değil, karşı tarafta yanlış yapılandırılmış bir şeydir. Wireshark yazılımının Bitcoin çözümleyicisi her çerçeveyi etiketlemek için aynı 24 baytı çözümler.
Mesaj başlığı vs blok başlığı
Mesaj başlığı taşıma ambalajıdır; blok başlığı konsensüs verisidir ve yalnızca adı paylaşırlar. Mesaj başlığı 24 bayttır, yalnızca bir teslimat süresi boyunca vardır ve yük okunur okunmaz atılır. Blok başlığı 80 bayttır; sürümü, önceki bloğun hash değerini, merkle kökünü, zaman damgasını, zorluk hedefini ve nonce değerini içerir ve o bloğu kalıcı olarak adlandıran iş kanıtını (proof of work) üretmek için hashlenir. Biri bir kolinin üzerindeki adres etiketi, diğeri içindeki şeydir.