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 SecurityConfiguration,點擊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的提取教程基本上差不多,這裡的不多說廢話了,官方教程已經說得很詳細了。

作者:人稱盧哥哥

轉自NEL新經濟實驗室:

基於NEO的私鏈(Private Blockchain)

推薦閱讀:

相关文章