當咱們新安裝一個Neo節點時,首先要作的就是同步這個節點到最新的區塊高度。由於只有這樣,你的節點纔會擁有和鏈上相吻合的數據,才能正確的從這個節點接受發送交易。因爲區塊鏈數據龐大,有同步節點經驗的小夥伴確定深有體會,初次同步時等待時間一般好久。若是不使用任何快速同步方案,須要耗時幾天才能完成,這個等待的過程是很是磨人的。git
Neo推出了一種快速同步方案,採用離線同步包進行同步。離線同步包是一個打包了鏈上數據的壓縮文件。當節點檢測到本地有離線同步包時會直接從離線同步包中獲取數據,減小了節點從網絡上獲取數據的消耗,加快了同步速度。使用這種同步方案能夠將整個同步時間縮短到幾個小時。雖然有了明顯的提高,可是對於想快速體驗Neo節點或者想快速橫向拓展節點數量的開發者來講仍是太慢了。github
在下文中會介紹一種更快捷的同步方式,而且會貼上具體的使用教程。數據庫
Neo節點同步數據的時候,本質上是獲取一個一個塊(block)的數據,並對塊數據分析驗證,將數據按照「塊」、「交易」、「資產」、「合約」等分類存儲進leveldb。若是能保證節點的leveldb存儲內容和鏈上種子節點的存儲內容同樣,就能確保這個節點的數據安全可靠。更進一步說,若是每一次的數據庫操做都是正確無誤,沒有遺漏,那該節點所同步到的數據就是正確可靠的。json
若是可以將數據驗證分類這一步驟去除,直接操做leveldb,對leveldb進行數據的增刪改,就一定可以加快同步的速度。首先NEL將節點對leveldb操做都記錄下來。例如在高度1時put了什麼數據,delete了什麼數據。新的節點能夠根據這些有序的操做從新操做一次leveldb,這樣就能保證兩個leveldb數據的一致性。 這雖然犧牲了必定的安全性,可是在確保數據源可靠的狀況下,這個用安全性換來的快捷仍是有意義的。安全
這種同步方式相比較官方推出的快速同步包要更快捷一點,它同步速度的瓶頸在於你硬盤的讀寫速度,初次同步到最新高度的耗時通常在十幾分鍾。NEL將新的同步功能作成了插件,並將數據庫操做打包成了壓縮文件以供開發者使用。只要使用NEL定製改版的節點(neo-cli-nel),就能添加這個插件並實現快速同步。暫時官方原版的節點不能使用此插件。網絡
0x01 下載neo-cli-nel區塊鏈
因爲快速同步中的一些功能在原版的節點中(neo-cli)並不支持,因此目前只能使用NEL改版以後的節點(neo-cli-nel)。改版的節點只是增長了部分定製功能,和原版同樣可靠安全,相關請求接口也沒有變化。這裏貼上github的地址:https://github.com/NewEconoLab/neo-cli-nel.git 。編譯後能夠看到以下的目錄接口:測試
config.json和protocol.json都是默認的測試網環境。打開startUp.bat就能夠運行節點。spa
0x02 下載快速同步的插件插件
NEL插件的github地址是:https://github.com/NewEconoLab/Plugins.git
插件名爲:RestoreDB
在0x01中節點的目錄下新建兩個文件夾,一個名爲Plugins,另外一個名爲NEL_Plugins。以下圖:
將編譯好的Restore插件移到NEL_Plugins目錄下,以下圖:
這裏須要提示的是,若是使用了NEL定製的節點,那麼所對應的插件也須要使用NEL提供的。Restore插件和RecordToMongo插件須要放在NEL_Plugins目錄下。其他都放在Plugins目錄下。
0x03 下載快速同步的數據包
下載地址: http://nel-acc.oss-cn-hangzhou.aliyuncs.com/release.0-2400000.zip
將下載好的數據包放在neo-cli.dll所在的目錄。以下圖:
點擊startUp.bat啓動節點,能夠看到以下:
靜心等待一段時間直到出現下圖,表明數據已經恢復完成,節點已經開始從鏈上獲取其他數據。