Sözlük / Madencilik ve konsensüs
Blok ağırlığı
- Blok ağırlığı nedir?
- Blok ağırlığı, bir Bitcoin bloğunu, bir bayt tanık verisinin 1 birim ve diğer her baytın 4 birim tuttuğu, üst sınırı 4.000.000 birim olan bir ölçekte ölçer.
Tanımlandığı belge: BIP-141.
Ağırlık, baytların bir düğüm için eşit maliyetli olmamasından doğar. Bir işlem yeterince derine gömüldükten sonra imza verisi atılabilir, bu yüzden BIP141 ona diğer her şeyin dörtte biri fiyat biçti ve bütçeyi blok başına 4.000.000 birim olarak belirledi. Para çekme işleminiz bu bütçe için yarışır ve bu indirim, modern bir adresten göndermenin eski bir adresten göndermekten daha ucuza gelmesinin nedenidir.
Nasıl çalışır
BIP141'deki formül şöyledir: ağırlık, temel boyutun üçle çarpımına toplam boyutun eklenmesine eşittir. Temel boyut, bloğun tanıklar çıkarılarak eski biçimde serileştirilmiş halidir; toplam boyut ise tam serileştirmedir. Tersinden yazıldığında aynı kural, tanık olmayan her bayt için dört birim ve her tanık baytı için bir birim der; ezberlemeye değer olan sürüm budur.
Ağırlığı dörde bölüp yukarı yuvarlarsanız sanal baytı elde edersiniz; her ücret tahmincisinin ve her cüzdanın kullandığı birim budur. İki girdi harcayıp iki çıktı oluşturan ve hepsi yerel SegWit olan bir ödeme yaklaşık 208 sanal bayt, yani yaklaşık 832 ağırlık birimi tutar. Bir bloğu başka hiçbir şeyle doldurmazsanız bunlardan yaklaşık 4.800 tanesi sığar. Aynı ödeme, eski tip pay to public key hash adreslerinden kurulduğunda yaklaşık 374 bayt ölçer ve indirimden hiçbir pay almadığı için 1.496 birim ağırlığındadır, dolayısıyla yalnızca yaklaşık 2.670 tanesi sığar.
Bu fark, tasarımın bütün amacıdır. Tanıklara indirim uygulamak SegWit benimsemesini kendi masrafını çıkarır hale getirdi: yükseltme yapan bir cüzdan her işlemde daha düşük ücret ödedi ve bunun için kimseyi daha büyük bir bloğun güvenli olduğuna ikna etmek gerekmedi. Ayrıca davranışı ağın istediği yöne iter, çünkü eski çıktıları harcayıp bunları yenilerinde birleştirmek girdi başına eskisinden daha ucuzdur.
İnsanların takıldığı iki ayrıntı var. Ağırlık işlem başına hesaplanır ve sonra toplanır, yani bir bloğun ağırlığı, işlemlerinin ağırlıklarının toplamına başlığının ve sayaçlarının eklenmesiyle bulunur ve bir bloğu dolduran madenci bir bayt sayısına karşı değil, 4.000.000 birimlik bütçeye karşı bir sırt çantası problemi çözer. Ağırlığın değerle hiçbir ilişkisi yoktur: 40 Bitcoin taşıyan 900 ağırlık birimlik bir işlem ile 40.000 satoshi taşıyan bir işlem aynı ücreti öder, çünkü ağ yer için ücret alır, miktar için asla.
Nerede görürsünüz
Her blok gezgini ağırlığı boyutun yanında gösterir ve Bitcoin Core getblock RPC çağrısı weight, size ve strippedsize değerlerini üç ayrı alan olarak döndürür. Mempool görselleştirmeleri de bunun üzerine kuruludur: onay bekleyenlerin gösterildiği çubuklar sat/vB cinsinden ücret oranına göre üst üste dizilir ve bu oranın paydasında ağırlığın dörde bölümü vardır.
Bir borsanın para çekme ücretinde gerçekte sizden aldığı şey de ağırlıktır. Bitcoin cinsinden sabit bir ücret duyuran bir platform, oluşturmayı beklediği işlemlerin ağırlığının ortalamasını alır; mempool sakinken kazanır, yoğunken kaybeder. Onlarca müşteri çekimini tek bir işlemin çıktıları olarak göndererek toplu işlem yapan bir platform, onlarca girdi yerine tek bir girdi kümesi için öder; bu yüzden toplu işlem yapan borsalar, her çekimi ayrı ayrı yayınlayanların yanında çok daha düşük ücretleri karşılayabilir.
Blok ağırlığı vs sanal bayt
Blok ağırlığı ham ölçümdür ve sanal bayt aynı ölçümün dörde bölünmüş halidir. İkisi de aynı veriyi tanımlar; yalnızca ölçek farklıdır. Ağırlık, konsensüs kurallarına yazılmış birimdir, bu yüzden 4.000.000 rakamı kodda ağırlık olarak görünür. Sanal bayt ise cüzdan arayüzlerine yazılmış birimdir, çünkü 8 sat/vB'lik bir ücret oranıyla düşünmek, ağırlık birimi başına 2 sat ile düşünmekten daha kolaydır. Bir cüzdan işleminizin 141 vbyte olduğunu söylediğinde, girdiği blokta 564 birim daha az yer kalır.