原创 容易搞混的邏輯運算符和位運算符

邏輯運算符是對布爾值進行運算,位運算符是對二進制值進行運算。之所以容易搞混,是因爲這兩個運算符集合中都包含|,&,^… 以下就分別來看看這兩個運算符集合各自運算符的用法:   邏輯運算符: "|"和"||"的比較:"|"將對運算符兩邊的布

原创 btcd源碼解析——peer節點之間的區塊數據同步 (4) —— 區塊數據的存儲

文章目錄1. 寫在前面2. 區塊數據的存儲過程2.1 SyncManager數據結構2.2 handleBlockMsg函數分析2.3 ProcessBlock函數分析2.4 maybeAcceptBlock函數分析2.5 con

原创 btcd源碼解析——節點P2P連接建立的過程 (2)

文章目錄4. 與其他peer建立P2P連接4.2 主動連接的管理4.2.1 negotiateOutboundProtocol函數4.2.2 peerDoneHandler函數4.3 被動接受連接5. 總結 4. 與其他peer建

原创 btcd源碼解析——peer節點之間的區塊數據同步 (3) —— 非headersFirstMode模式

文章目錄1. 寫在前面2. 非headersFirstMode模式下的數據同步過程2.1 peer A 發送“獲取區塊哈希”的請求2.2 peer B 響應“獲取區塊哈希”的請求2.3 peer A 處理“獲取區塊哈希”的返回數據

原创 btcd源碼解析——peer節點之間的區塊數據同步 (1)

文章目錄1. 寫在前面2. 從peer A發起數據請求開始3. 總結 1. 寫在前面 從這一篇博客開始,我們將介紹btcd節點之間的數據同步。考慮到內容太長,分爲三篇博客來講解。 第一篇 (本篇) 介紹節點是如何發起數據請求的

原创 btcd源碼解析——節點P2P連接建立的過程 (1)

文章目錄1. 寫在前面2. 從節點的“啓動”說起3. P2P連接中peer地址的管理3.1 AddrManager數據結構相關3.2 從peersFile中反序列化填充AddrManager變量3.3 將AddrManager變量

原创 btcd源碼解析——peer節點之間的區塊數據同步 (2) —— headersFirstMode模式

文章目錄1. 寫在前面2. headersFirstMode模式下的數據同步過程2.1 peer A 發送"獲取區塊頭"的請求2.2 peer B 響應"獲取區塊頭"的請求2.3 peer A 處理 "獲取區塊頭"的返回數據2.4