Development

gossip 協議將如何從頻道工廠宣布頻道?

  • March 17, 2019

我剛剛和 Christian Decker 一起聽SLP59。他們主要討論渠道工廠。雖然多方通道和從它們派生的更高階系統(子通道)的建構似乎很清楚並且在本文中進行了描述,但我想知道如何調整gossip 協議以便人們能夠宣布這些通道?

通常有必要指向支付渠道的資金交易,以防止垃圾channel announcment郵件和驗證渠道。然而,對於渠道工廠,多方渠道只有一筆大筆資金交易。子頻道是脫鏈的。

gossip 協議的解決方案是什麼樣的?

幾乎一切都會保持不變。如果您查看相關消息channel_announcementchannel_update我們有以下格式:

channel_announcement

  1. 類型:256 ( channel_announcement)
  2. 數據:

* [ 64: node_signature_1] * [ 64: node_signature_2] * [ 64: bitcoin_signature_1] * [ 64: bitcoin_signature_2] * [ 2: len] * [ len: features] * [ 32: chain_hash] * [ 8: short_channel_id] * [ 33: node_id_1] * [ 33: node_id_2] * [ 33: bitcoin_key_1] * [ 33: bitcoin_key_2]

channel_update

  1. 類型:258 ( channel_update)
  2. 數據:

* [ 64: signature] * [ 32: chain_hash] * [ 8: short_channel_id] * [ 4: timestamp] * [ 1: message_flags] * [ 1: channel_flags] * [ 2: cltv_expiry_delta] * [ 8: htlc_minimum_msat] * [ 4: fee_base_msat] * [ 4: fee_proportional_millionths] * [ 8: htlc_maximum_msat] (option_channel_htlc_max)

如果您查看此內容,您會看到其中channel_announcement包含按字典順序排序的節點和比特幣簽名列表及其對應的公鑰。通過使這個列表的長度可變,這很容易擴展到任意數量的參與者。

特別是short_channel_id仍然指的是打開鏈下合約的單一輸出,它也保持不變。

channel_update可能看起來有點複雜,因為現在有n*(n-1)可能的方向(發送方-接收方對)可以遍歷這個合約,而在簡單的 2 參與者通道中,我們只有 2 個方向。然而,方向概念可以很容易地擴展到僅按字典順序排列所有發送者-接收者對並使用索引來辨識該對。

很可能需要修改一些消息格式(可變長度的公鑰和簽名列表),並明確一些欄位(發送者-接收者對的排名索引),但一般概念保持不變。

引用自:https://bitcoin.stackexchange.com/questions/85344