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