基于NEO的私鏈(Private Blockchain)或者聯盟鏈的搭建

1.準備工作

1.NEO-GUI

2.NEO-CLI

3..NET Core Runtime?(不能是2.x版本,官方建議是1.12,實際上我用1.14也是沒有問題的)

4.四臺windows操作系統的虛擬機(本文是基于AWS的,理論上本地跑虛擬機也是沒問題的)

2.部署NEO節點

先給出官方文檔的鏈接--NEO節點部署(官方文檔),可以對照這個文檔一起進行。

1.先準備好要充當節點的虛擬機。這里以AWS為例,打開AWS首頁,注冊登錄,登錄成功后,選擇AWS管理控制臺,然后再點擊左上角的服務,選擇EC2


2.新頁面中點啟動實例(PS:右上角有個節點選擇,可以自由切換,我選擇的是新加坡的),然后選擇 windows server 2016 Base >>> 選擇有符合條件的免費套餐 , 后面的默認配置就可以。關鍵是最后一步---核實實例啟動,這里選擇 創建一個新密鑰對,并保存好。


3.創建成功后,回到控制臺,稍等幾分鐘,等虛擬機準備好,然后選擇剛剛創建的虛擬機,點連接,會出現一個彈框,點擊下載選擇桌面文件,密碼那里按提示操作獲取密碼


4.打開剛剛下載的遠程桌面文件,按提示粘貼上一步獲取到的密碼,成功連接后,等系統初始化完成就可以操作了。初始化完成后先把虛擬機的IE安全設置關掉(不然無法下載文件,而且每打開一個網頁都要警告一次,賊煩),點擊左下角的搜索按鈕,輸入server manager,然后在Local server面板找到IE Enhanced Security Configuration,點擊ON,然后在彈出的面板里選擇OFF,關閉掉IE安全設置


5.打開NEO節點部署(官方文檔),下載NEO-GUI,NEO-CLI,.NET Core Runtime這里說一下,為什么要下載NEO-GUI?按照官方文檔的說明,理論上我們只下載NEO-CLI就可以的了。但是官方文檔沒有指明NEO-CLI運行需要的兩個庫文件具體在哪里可以下載。官方文檔這里的第一步的程序包應該指的就是NEO-GUI,然后再NEO-GUI目錄下的x64(或者x86,根據你的操作系統來選擇)文件下可以找到這兩個庫文件。將這兩個文件復制到NEO-CLI文件目錄下。


6.安裝.NET Core Runtime ,安裝完成后,打開命令行,我這里用的是PowerShell,用命令行切換到NEO-CLI目錄,輸入 dotnet neo-cli.dll ,不出意外的話,NEO節點就部署成功了,如圖所示。


3.搭建私鏈(或者聯盟鏈)

官方文檔在這---NEO私鏈搭建(官方文檔),可以對照著一起來做。

1.文檔中有指出需要4臺虛擬機,所以我們需要4臺虛擬機,并且都是部署好NEO節點的。可以按照上一步教程,將另外3臺配置好。這里的給虛擬機命名的時候最好自己弄個簡單的標識排序,不然后面操作起來可能會亂,比如我這里的4臺虛擬機分別命名是neo-window,neo-window1,neo-window2,neo-window3。當然這些看個人習慣來。

NEO 私有鏈的部署至少需要 4 臺服務器才能取得共識,每臺服務器對應一個共識節點,每臺服務器上有一個 NEO 錢包文件

2.另外3臺部署成功后,打開其中一臺虛擬機,我這里打開的是第一臺(neo-window),然后啟動NEO-CLI,用 create wallet xxxx.db3 新建4個錢包,我這里分別創建的是wallet1.db3 ~ wallet4.db3。新建好后將四個pubkey保存到一個txt文件里,后面會用到。然后將其它3個錢包文件分別復制粘貼到相應的虛擬機上。注意要放在跟neo-cli.dll同一個目錄下


3.后臺打開AWS控制臺,將4臺虛擬機的IP地址記錄下來。這一步后面修改節點配置文件的時候會用到。如圖所示,要把IPv4 公有IP記錄下來。


4.如果你之前有啟動過neo-cli.dll,那么要先刪除掉NEO-CLI目錄下的Chain目錄,不然做到最后面可能會出現有連接數,但是區塊高度為0的狀況同樣的,如果你因為好奇心打開過NEO-GUI,你也需要刪除相應的Chain目錄。如果沒有,可以跳過刪除這一步。之后打開NEO-CLI目錄,用txt方式打開目錄下的 protocol.json 文件,這個是節點的配置文件。按照官方文檔的格式進行修改


下面是我修改好的文件,修改好后,保存,并復制替換掉其它虛機上的客戶端的節點配置文件

{

"ProtocolConfiguration":{

"Magic":66123456,

"AddressVersion":23,

"StandbyValidators":[

????"0264e5b51fa2af8392292fd13e0381d913288e0d197086d12aef195d6823a349fa",

????"034a879e08069f89cdbc34067ff0df614d36bef7a30b014509dfe3170c6a9d7974",

????"0332c8d77ca8e2a7847325af55457f2793d285e2a914e349bc329c94e301c01dd6",

????"020a02297371c867c845471dc0030277dc669c89ae80071424442787535295c7a4"

],

"SeedList":[

????"54.255.212.167:10333",

????"52.221.255.41:10333",

????"13.229.109.145:10333",

????"13.228.25.57:10333"

],

"SystemFee":{

????"EnrollmentTransaction":1000,

????"IssueTransaction":500,

????"PublishTransaction":500,

????"RegisterTransaction":10000

????}

}

}

5.修改虛擬機的防火墻入站規則,這里要注意的是不僅需要修改虛擬機的入站規則,而且要去AWS控制臺修改安全組里的入站規則,由于我4臺虛擬機用的都是同一個安全組,所以只要修改一個就行了。虛擬機里windows操作系統的入站規則我就不具體寫了,在控制面板里操作,這個比較簡單。其實,如果想簡單粗暴點,直接關掉windows的防火墻應該就可以了。。


6.在四臺虛擬機上分別用neo-cli打開相對應的錢包,這里以第一臺虛擬機為例。運行 dotnet neo-cil.dll?命令,如果你想檢查當前的區塊狀態,可以使用show state,初始狀態應該是高度為0,節點為0。然后打開本機對應的錢包文件,這臺虛擬機對應的wallet1.db3。

輸入命令 open wallet wallet1.db3 打開錢包

然后輸入?start consensus 開啟共識

其他虛擬機一樣操作,分別打開對應的錢包文件,然后輸入命令開啟共識。不出意外的話就會出現如圖所示的界面。關掉其中一臺的話,其它三臺依然可以產生共識


7.利用NEO-GUI提取NEO和GAS。安裝好NEO-GUI后,將NEO-CLI目錄下的?protocol.json?文件覆蓋掉NEO-GUI目錄下的protocol.json,然后運行neo-gui.exe。進行多方簽名的設置。


但是有一個問題,這里有點比較坑的地方,文檔里也沒有明說。NEO-CLI和NEO-GUI是不能同時啟動的,也就是說用 dotnet neo-cli.dll 啟動了neo-cli的時候,不能運行neo-gui.exe,反之亦然。所以當產生共識之后,我們需要關閉其中一個節點的NEO-CLI,然后在這個節點上的NEO-GUI客戶端進行操作。依次打開4個錢包,進行多方簽名的設置和重建錢包索引的操作,這個操作是在同一臺虛擬機上完成的。這個一定要注意。

然后把 NEO 從合約地址轉到普通地址中,打開 4 個錢包中的任意一個,點擊 交易? >>>? 轉賬 輸入標準地址和數額,將 1 億 NEO 轉到這個地址中。


然后系統會提示“交易構造完成,但沒有足夠的簽名”,然后將代碼復制下來,打開第二個錢包,點擊交易簽名粘貼剛才復制的代碼,點擊簽名, 然后將代碼復制下來,打開第三個錢包,點擊交易簽名粘貼剛才復制的代碼,點擊簽名, 這時你會發現窗口中出現了一個廣播按鈕,代表交易已經簽名完成(達到多方簽名合約要求的最少簽名數量)可以廣播,點擊廣播后轉賬交易開始廣播,約 15 秒后轉賬成功。

上面的操作也是在同一個客戶端完成的。這里多說一句,我第一次弄的時候沒有注意,我是在4個節點客戶端上分別操作的,也就是說多方簽名的設置和重建錢包索引操作,我是在4臺虛擬機上分別完成的。這就造成了我沒有正在運行的節點了(因為neo-cli和neo-gui不能同時運行,而neo-gui沒有共識功能)。然后,到了提取NEO和GAS這一步時,就造成了,我的交易簽名成功了,而且廣播了,但是并沒有轉帳成功。造成這樣的原因是因為我雖然廣播了,但是此時沒有節點幫我把這個交易打包上去。所以,我的交易轉賬當然不成功,在普通地址上也就沒看到那些相應的NEO。這點是因為自己對區塊鏈的概念不夠深,我這里被困擾了很久。

8.GAS的提取教程基本上差不多,這里的不多說廢話了,官方教程已經說得很詳細了。。


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容