『學概念找員外』比特幣網絡(三)

「力場 lichang.io」公鏈挖礦第一社區!

『學概念找員外』比特幣網絡(三)

網絡大小

比特幣網絡大小很難測量,因為它隨時都在變化,而且沒有一箇中央權威機構。有些人通過研究給了一些估計:往高說,每個月可能有100萬個IP地址成為比特幣網絡的節點(也可能是臨時成為節點)。往低說,大約只有5000~10000節點永遠在線並處理交易。這個數字有點出乎意料得小,不過這也是員外能查到的更新最近的數據了。

存儲空間需求

完全有效的節點必須永久在線,這樣才能接收到所有的交易數據。一個節點離線時間越久,當它重新連接到網絡的時候,就需要越多時間來更新所有交易。就像你很久沒有登錄微信或者QQ了,在登錄的第一時間,會有些許卡頓,這就是軟件在自動的同步之前的所有聊天記錄。這些節點還需要把完整的共識區塊鏈都存儲下來,也需要有好的網絡連接,確保可以接收到所有交易並將其轉播給其他節點。目前的存儲空間大約要200多GB,低配電腦想要滿足要求就略顯吃力了。

最後,完全有效節點必須維護在交易中產生的(交易的輸出)、未被消費掉的比特幣的完整列表,這個列表最好放在內存而非硬盤裡,這樣,在接收到一個交易信息的時候,節點才能快速查看、運行腳本,驗證簽名是否有效,然後把交易放入交易池。到2014年年中,大約有4400萬的交易被納入區塊鏈,其中有1200萬個交易產生的比特幣沒有被使用。還好,這個數據不大,可以很容易地放進1G內存裡。

輕量節點

除了完全有效節點之外,還有一種輕量節點(nightweight nodes),或者稱為輕客戶端,也叫簡單付款驗證 (Simple Payment Verification,簡稱SPV)客戶端。事實上,在比特幣系統裡的大部分節點都是輕量節點。這些節點不會存儲整個比特幣區塊鏈,它們只存儲它們所關心的、需要進行核驗的部分交易。如果你使用一個錢包軟件,那裡面就會有一個SPV節點,這個節點只會下載向你的賬戶付款的交易及區塊頭部。

一個SPV節點的安全等級遠不如全節點。它可以核驗那些很難被挖到的區塊,因為它有區塊頭部數據,但它不能核驗一個區塊裡所有交易記錄的有效性,因為它沒有所有的交易歷史記錄,也沒有那些未被消費的比特幣的列表。SPV節點只驗證那些和它們相關的交易,所以它們必須依賴那些全節點去驗證網絡上的其他所有交易。這雖然是一種安全性上的妥協,卻不是個壞主意:輕量節點依賴全節點去處理那些比較難的工作,但當某個區塊由於某些原因未被礦工挖出來時(挖礦成本巨大),這些輕量節點也會做一些核驗來確保這個區塊不會被拒絕。

作為一個SPV節點可以節省很多資源。區塊頭部的大小隻是整個區塊鏈的千分之一。所以輕量節點不需要200多GB的存儲空間,只需要200MB即可,即使一部智能手機也能成為比特幣網絡的輕量節點。

比特幣是一個開源協議,比特幣網絡一定是由實現方式各不相同的軟件系統在無縫交互。這樣,即使有些軟件系統有缺陷,也不至於使整個比特幣網絡癱瘓。比較好的現象是,人們用不同的語言不斷地重新實現協議,有些人用C++、有些人用Go語言,還有不少人用其他語言。不好的現象是,絕大部分的節點都會調用比特幣官方客戶端的資源庫(bitcoind library),這個庫是比特幣核心代碼開發者們用C++開發的庫,而且有些節點用的是過時的版本。所以,即使在同一時間,大家運行的客戶端都會略有不同。

相關推薦

推薦中...