İçeriğe geçin
buybitcoinsmart

Sözlük / Düğümler ve yazılım

P2P mesajı

Diğer adları: Mesaj.

P2P mesajı nedir?
P2P mesajları, Bitcoin düğümlerinin birbirleriyle konuşurken kullandığı sabit sözlüktür: version, inv, getdata, tx ve block gibi kısa komutlar düz bir TCP bağlantısı üzerinden gönderilir.

Aranacak merkezi bir sunucu yoktur, bu yüzden bir düğümün ağla tüm ilişkisi bu konuşmadır. Bitcoin Core protokol sürümü 70016 olduğunu duyurur, bağlantılarını 8333 portunda açar ve sözlüğün tamamı tek bir sayfaya sığar. Para çekme işleminiz bir madenciye ulaşır çünkü bir makine diğerine tx dedi ve bu, birkaç saniye içinde birkaç bin kez iletildi.

Nasıl çalışır

Her bağlantı bir el sıkışmayla açılır ve ardından küçük bir dizi tekrarlayan alışverişe oturur.

İki taraftan birinin ilk gönderdiği şey version mesajıdır; konuştuğu protokol numarasını, hizmet bayraklarını, o anki zamanı, karşı tarafın sahip olduğunu düşündüğü adresi, yanlışlıkla kendini aradığını tespit etmek için kullanılan rastgele bir nonce değerini, bir kullanıcı aracısı dizesini ve bildiği en iyi zincirin yüksekliğini taşır. Her iki taraf verack ile yanıt verir. İkisi de bunu yapana kadar başka hiçbir şey işlenmez.

Bu protokol numarası bir süs değil, bir özellik merdivenidir. Doğrudan başlık duyurusu 70012 gerektirir, sıkıştırılmış blok müzakeresi 70014 gerektirir, tam doğrulamadan önce sıkıştırılmış blok duyurusu 70015 gerektirir ve işlemlerin witness tanımlayıcısıyla (wtxid) aktarılması 70016 gerektirir. Bir düğüm eşinin numarasını okur ve o eşin kullanamayacağı yetenekleri sunmaktan sessizce vazgeçer; ağ, eşgüdümlü bir geçiş olmadan bu şekilde yükseltilir.

Amaca göre gruplandığında sözlük kısadır. Eş bulma: getaddr, addr ve BIP155 ile tanımlanan, Tor ve I2P adreslerini taşıyabilen addrv2 biçimi. Duyurma: inv ve headers. İsteme: getheaders, getdata, getblocks, mempool. Teslim etme: tx, block, cmpctblock, blocktxn, notfound. Düzen işleri: ping, pong, sendheaders, sendcmpct, wtxidrelay ve belirtilen ücret oranının altındaki işlemleri iletmeye zahmet etmemesini eşine söyleyen feefilter.

İki sessizlik bilinçlidir. Tanınmayan komutlar reddedilmek yerine yok sayılır; yeni bir mesaj türünün, kimsenin tek seferde güncelleyemeyeceği bir ağda yavaş yavaş yayılmasını sağlayan budur. Ve bir eşin işleminizi neden düşürdüğünü size söylemesinin hiçbir yolu yoktur: BIP61 ile tanımlanan reject mesajı Bitcoin Core 0.18.0 sürümünde varsayılan olarak devre dışı bırakıldı ve seçenek 0.20.0 sürümünde tamamen kaldırıldı, çünkü yanıtlar güvenilmezdi, sahte üretilmesi kolaydı ve sıklıkla yanlışlıkla kesin ve yetkili bir kaynak sayılıyordu.

Nerede görürsünüz

P2P mesajları, kendi düğümünüzün bütün gün yaptığı şeydir ve izlenmesi kolaydır.

Bitcoin Core programını -debug=net ile başlatın; günlük, gelen her mesajı adıyla yazar. getpeerinfo çağrısı her bağlantı için gönderilen ve alınan baytları mesaj türüne göre dökümüyle bildirir; bir eşin size neredeyse her şeyi gönderdiğini, geri kalanların boş beklediğini keşfetmenin en hızlı yolu budur. Kendi düğümünüze bağlı bir cüzdandan ödeme yayımlamak tanınabilir küçük bir dizi üretir: dışarı giden bir inv, geri gelen bir getdata, yanıt olarak dışarı giden bir tx.

P2P mesajı vs RPC

Bitcoin'in iki arayüzü vardır ve bunlar birbirinin yerine geçmez. P2P düğümden düğümedir: kimlik doğrulaması yoktur, iki uç v2 taşıması üzerinde anlaşmadıkça şifreleme yoktur, 8333 portundadır ve hiçbir katılımcının tek başına genişletemediği bir sözlüğü vardır. RPC programdan düğümedir: kimlik doğrulamalıdır, varsayılan olarak yereldir, 8332 portundadır ve her sürümde değişen bir yöntem listesi vardır. Oluşturduğunuz bir ödeme ikisinden de geçer: düğümünüze bir RPC çağrısı olarak girer ve ondan bir P2P mesajı olarak çıkar; yalnızca ikinci yarısı başkalarını ilgilendirir.

Karıştırılmaması gerekenler

Sık sorulan sorular

Düğümüm bana bir işlemin neden reddedildiğini neden hiç söylemiyor?

Çünkü Bitcoin bu özelliği kaldırdı. BIP61 ile tanımlanan reject mesajı Bitcoin Core 0.18.0 sürümünde varsayılan olarak devre dışı bırakıldı ve seçenek 0.20.0 sürümünde silindi, zira yanıtların sahte üretilmesi kolaydı ve hak ettiklerinden çok daha fazla güveniliyordu.

Bitcoin Core hangi protokol sürümünü konuşur?

70016; bu sürüm, BIP339 kapsamında işlemlerin witness tanımlayıcısıyla (wtxid) aktarılmasının desteklendiğini bildirir. Daha düşük numaralar daha eski özellikleri açar: doğrudan başlık duyurusu için 70012, sıkıştırılmış blok müzakeresi için 70014 ve tam doğrulamadan önce sıkıştırılmış blok duyurusu için 70015.

İlgili terimler

Daha fazlası: Düğümler ve yazılım

Bu sayfayı İngilizce okuyun