Sözlük / Geliştirici başvuru kaynağı
MSG_TX
- MSG_TX nedir?
- MSG_TX, bir envanter kaydını işlem olarak işaretler, tür kodu 1, ve onaylanmamış ödemenizin, hiçbir eş henüz içeriğini görmeden önce eşlere duyurulması bu şekilde olur.
Bitcoin'in duyuru protokolünde bir ödemeyi bir bloktan ayıran tek bir sayı vardır ve o sayı 1. İşlemin 32 baytlık tanımlayıcısıyla birlikte, toplam 36 bayt olarak taşınır ve göndereni hiçbir şeye bağlamaz: baytlar yalnızca bir eş getdata ile yanıt verdiğinde hareket eder. Bitcoin Core 0.21.0 sürümünden beri çoğu eş tamamen farklı bir kodla duyuru yapar.
Nasıl çalışır
MSG_TX bir işlemi txid'siyle, yani tanık verisi hariç tutularak hesaplanan tanımlayıcıyla adlandırır.
Ödemenizi mempool'una kabul eden bir düğüm, eşlerine bu hash'in var olduğunu söyler. Ona sahip olmayan her eş bunu ister ve içerik ancak o zaman bir tx mesajıyla gönderilir. Düğümün artık elinde tutmadığı bir şeyi isteyen eş notfound alır; bu olağan bir durumdur: mempool'lar baskı altında işlemleri dışarı atar ve bir düğüm, zaten düşürdüğü bir işlemin kopyasını kimseye borçlu değildir.
Sunum kasten isteksizdir. Bitcoin Core, bir işlemi hiç duyurmadığı bir eşe, o işlem mempool'da birkaç dakika bekleyene kadar vermez. Bu gecikme olmasaydı, bir yabancı bağlanıp getdata ile düğümünüzün belirli ödemeleri bilip bilmediğini sınayabilirdi; bu da her düğümü kendi mempool'u için bir sorgu arayüzüne çevirir ve bir ödemenin ilk nerede ortaya çıktığını bulmayı çok daha kolay hale getirirdi.
1 türü eski serileştirme kuralını da beraberinde taşır. Ona yanıt olarak sunulan bir işlem, tanık verisi olmadan yazılır; 2017 öncesinde var olan ve bir segwit harcamasında imzaları atlayan biçim budur. Bu yüzden segwit'i tanıyan eşler tanıklı varyantı ister ve BIP339, Ocak 2021'de Bitcoin Core 0.21.0 sürümüyle yayımlandığından beri normalde onun yerine 5 türüyle duyuru yaparlar; işlemleri tanık hash'iyle adlandırırlar, böylece bozulmuş bir tanık artık bilinmeyen bir işlem gibi görünmez.
Nerede görürsünüz
MSG_TX, “işlem yayınlandı” ifadesinin arkasındaki mekanizmadır ve yayınlanmadığı ortaya çıkan durumların da arkasındadır.
Tek bir düğüme bağlı bir cüzdan imzalı bir işlem teslim eder, o düğüm hash'i duyurur ve bir eş onu isteyene kadar başka hiçbir şey olmaz. Hiçbir eş istemezse, ödeme tek bir makinede oturur ve hiçbir madenci onu görmez. Bitcoin Core, hiçbir eşin henüz istemediği kendi cüzdan işlemlerini izler ve biri isteyene kadar onları yeniden duyurur. Bu yüzden güvenlik duvarı arkasındaki bir ev ağında, giden bağlantısı olmayan bir düğüm, hiçbir şey binadan çıkmamışken bir ödemeyi gönderildi olarak bildirebilir.
Borsa para çekme toplu işlemleri de burada karşımıza çıkar. Borsa tek bir hash duyurur, tek bir istek aynı anda düzinelerce müşteriye ödeme yapan bir işlemi iletir ve para çekme işleminizin txid'sinde yabancılara ait çıktıların bulunmasının nedeni budur.
MSG_TX vs tx P2P mesajı
MSG_TX bir işlemi adlandırır, tx mesajı ise bir işlem içerir. Bunları karıştırmak protokol günlüklerini okunamaz hale getirir, çünkü inv ve getdata satırları yalnızca tür kodları ve hash'lerden oluşur, gerçek baytlar ise yalnızca tx satırlarında görünür. Bu ayrım en çok yayılımı hata ayıklarken önemlidir. Hash'inizin bir inv içinde dışarı çıktığını görmek, düğümünüzün birine söylediğini kanıtlar. Ardından bir tx mesajının geldiğini görmek, birinin onu gerçekten istediğini kanıtlar.