Sözlük / Lightning ve katman 2
Gossip protokolü
- Gossip protokolü nedir?
- Gossip protokolü, Lightning düğümlerinin imzalı kanal ve düğüm duyurularını birbirlerine yaymasını sağlar; böylece her düğüm bir sunucuya sormadan kendi ağ haritasını oluşturabilir.
Lightning'in bir dizini yoktur, bu yüzden düğümler neyin var olduğunu birbirlerine anlatır ve her düğüm kendi kopyasını tutar. BOLT 7 bunun için üç mesaj tanımlar ve bir düğüm, finansman çıktısı 6 onaydan az olan bir kanalı yok saymalıdır. Cüzdanınız bir rota bulur çünkü o ya da güvendiği bir düğüm önce bu konuşmayı dinlemiştir.
Nasıl çalışır
Gossip protokolü üç mesaj türü taşır ve bir eşin bunlardan birini iletmesi için her birinin zincir üstünde ya da imzayla bir şeyi kanıtlaması gerekir.
channel_announcement (tür 256) bir kanalın var olduğunu iddia eder. Mesajı alan düğüm, finansman çıktısını blok zincirinde arar: çıktısı beklenen P2WSH betiği olmayan ya da zaten harcanmış bir mesajın yok sayılması zorunludur ve çıktısı 6 onaydan az olan bir mesaj, düğümün bloklarda geride kalmış olabileceği kadar yakın olmadıkça yok sayılmalıdır. Yani bir kanalı duyurmak gerçek bir zincir üstü işleme mal olur ve istenmeyen mesajlara karşı tasarımın tamamı budur: kimse bedavaya bin kanal uyduramaz.
node_announcement (tür 257) operatörün kendi bilgilerini taşır. Zaten bilinen bir kanalla ilişkilendirilmemiş düğümler yok sayılır, "to avoid trivial denial of service attacks", yani bir operatörün hiçbir çıkarı yoksa kimsenin haritasına hiç ulaşamaz.
channel_update (tür 258) fiyatları, her yön için bir tane olacak şekilde taşır ve gerçekten değişen mesaj odur. Ücretler ve sona erme deltası burada yer alır ve bir operatör ücreti artırdığında, spesifikasyon aynı operatörün eski parametreleri en az 10 dakika daha kabul etmeye devam etmesini önerir, çünkü yeni olanın yol alması gerekir.
Yayılma kasten acele ettirilmez. Bir düğüm aldığını saklar, aynı kaynaktan gelen daha eski güncellemeleri değiştirir ve toplu gönderimi her 60 saniyede bir yapar; spesifikasyon buna kademeli yayın der ve bu, tek bir yoğun operatörün herkesin bant genişliğini doldurmasını engeller.
Bir kaydın unutulması da belirtilmiştir. Bir kanalın finansman çıktısı harcandığında, düğüm kanalı düşürmeden önce 72 blok onayı bekler, böylece bir splice kapanış gibi görünmek yerine kendini duyurmaya zaman bulur. Ayrıca, iki yönden birindeki en yeni channel_update iki haftadan (1.209.600 saniye) eskiyse, bir düğüm kanalı doğrudan budayabilir.
Nerede karşınıza çıkar
Gossip, yeni başlatılan bir Lightning düğümünün bir süre işe yaramaz olmasının ve sonra birden olmaktan çıkmasının nedenidir.
Bağlanırken bir düğüm eksik olanı ister: bir blok aralığında hangi kanalların var olduğunu öğrenmek için query_channel_range (tür 263), hiç görmediği belirli kanalları çekmek için query_short_channel_ids (261) ve bundan sonra gönderilen her şeye bir zaman aralığı koymak için gossip_timestamp_filter (265). Bu son mesaj bir tercih değil bir anahtardır: siz onu gönderene kadar bir eş size kendi üretmediği hiçbir şeyi iletmez ve küçük bir cihazın küçük kalması böyle olur.
Sonuçlar cüzdanınıza ücretler olarak ulaşır. Bir rota fiyatı, cüzdanınızın o anda elinde tuttuğu channel_update mesajlarından oluşturulur, bu yüzden eski bir görünüm başarısız denemelere ve size gösterilene uymayan fiyatlara yol açar. Telefon cüzdanları başkasının haritasına yaslanır: Phoenix cihazın kendisinde gerçek bir kendi kendine saklama düğümü çalıştırır ama ACINQ şirketinin kendi düğümleri üzerinden bağlanır ve incelememizin kaydettiği maliyetle, ACINQ ödemelerinizin hedefini ve tutarını bilir. Saklamalı bir hesap gossip'i tamamen atlar, çünkü yönlendirmeyi sizin için şirket yapar.
Gossip protokolü vs P2P mesajları
Gossip protokolü Lightning düğümleri arasında çalışır; Bitcoin'in P2P mesajları Bitcoin düğümleri arasında çalışır ve ikisi yayma alışkanlığından başka hiçbir şeyi paylaşmaz.
Bir Bitcoin düğümü işlemleri ve blokları inv, getdata ve tx gibi komutlarla iletir ve kimsenin kanalları hakkında hiçbir şey bilmez. Lightning gossip'i, 256 ile 265 arasındaki mesaj türlerini taşıyan ayrı bir konuşmadır ve blok zincirine yalnızca duyurulan bir finansman çıktısının gerçek ve harcanmamış olduğunu kontrol etmek için uzanır. Hiçbir ödeme asla gossip ile yayılmaz: tutarlar ve hedefler, aradaki düğümlerin okuyamadığı soğan paketlerinin içinde gider, bu yüzden kamuya açık harita kanalların nerede olduğunu söyler, asla içlerinden neyin geçtiğini söylemez.