Bitcoin-Core

主要的比特幣客戶端是否將地址列入黑名單?

  • May 20, 2016

主要比特幣客戶端是否將發送過多錯誤消息的地址列入黑名單?如果是這樣,如何將特定地址列入白名單?我正在開發一個將與主客戶端通信的應用程序,我不希望程序在測試期間禁止它。

有一個禁止機制,在net.cpp.

任何行為不端超過-banscore(預設為 100)的節點都會被禁止-bantime(預設為 60×60×24 秒 = 1 天)。但是,具有本地 IP 地址的節點除外,對於這些節點,每次不當行為後都會在日誌中顯示警告。

禁令也不是持久的,它們會在客戶端重新啟動時解除。

因此,在開發過程中,只需確保您的應用程序使用本地地址連接到比特幣客戶端,您就不會被禁令所困擾。


這是相關的程式碼:

bool CNode::Misbehaving(int howmuch)
{
   if (addr.IsLocal())
   {
       printf("Warning: local node %s misbehaving\n", addr.ToString().c_str());
       return false;
   }

   nMisbehavior += howmuch;
   if (nMisbehavior >= GetArg("-banscore", 100))
   {
       int64 banTime = GetTime()+GetArg("-bantime", 60*60*24);  // Default 24-hour ban
       CRITICAL_BLOCK(cs_setBanned)
           if (setBanned[addr.ip] < banTime)
               setBanned[addr.ip] = banTime;
       CloseSocketDisconnect();
       printf("Disconnected %s for misbehavior (score=%d)\n", addr.ToString().c_str(), nMisbehavior);
       return true;
   }
   return false;
}

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