Bitcoin-Core

全節點在什麼情況下會斷開對等節點?

  • June 24, 2019

我知道如果該節點“行為不端”,則完整節點將與該節點斷開連接。例如,如果一個節點發送太多不符合規則(什麼規則?)的消息以及發送大量過期、重複或其他無用消息的節點,節點的連接將被斷開。全節點與對等節點斷開連接的其他原因是什麼?

例如,完整節點是否會與未發送足夠數據的連接斷開連接?

對於要斷開連接的節點,預設閾banscore值為 100。在 v0.18 之前的版本中,阻止行為不端的對等方重新連接的預設時間是 86,400 秒或 1 天。但是,這被具有多個 IP 地址的攻擊者規避了。

v0.18 版本,如果您有未使用的傳入連接槽,則允許您的節點因不當行為(例如發送無效數據)而自動斷開連接的對等方重新連接到您的節點。如果您的插槽已滿,行為不端的節點將被斷開,以便為沒有問題歷史的節點騰出空間(除非行為不端的節點以其他方式幫助您的節點,例如通過連接到您不使用的 Internet 的一部分) t 有許多其他同行)。

以下是斷開連接或增加banscore.

  • 在 IBD 期間提供的鏈的工作量少於 minimum-chain-work 的對等點將斷開連接
  • 如果節點提供了無效數據,例如變異塊或不符合共識要求的數據
  • 如果緊湊塊有一個有效的頭,但包含無效的 txs,那麼對等點不應該受到懲罰
  • 如果在無效鏈上,則禁止出站(但不是入站)對等方。
  • 無效的標頭、無效的塊檢查點和無效的前一個塊將導致徹底禁止
  • 如果前一個塊失去,banscore則增加 10。這樣做是為了防止 DoS 攻擊
  • 如果對等方發送的getblocktxntx 索引越界,將導致禁令
  • 還有其他與綻放版本和綻放大小相關的項目可能會導致禁令
  • 第一條消息應該是版本消息,每個連接只能發送一次版本消息。如果不是,banscore則增加 1
  • 如果節點正在發送超過 1000 個地址的 addr 消息,則banscore遞增 20
  • 發送inv超過最大大小的消息,然後banscore增加 20。
  • 發送包含超過 2000 個元素的標頭消息,導致增加banscore20。
  • 節點絕不能發送大於 520 字節的數據項,否則行為不端的分數會增加 100

還有其他幾個可能被忽略的原因。您可以出於所有原因在netprocessing.cpp文件中搜尋“行為不端” 。

完整節點是否與未發送足夠數據的連接斷開連接?

不是特別是,但有點是。當鏈提示超過 30 分鐘沒有前進時,全節點假定該提示可能是陳舊的,因此將嘗試連接到額外的出站對等點。有一個定期檢查,以確保如果額外的對等連接正在使用中,節點將斷開最近最少宣布新塊的對等連接。

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