基于NEO的私链(Private Blockchain)
?
1.準備工作
?
1.NEO-GUI
2.NEO-CLI
3..NET Core Runtime?(不能是2.x版本,官方建議是1.12,實際上我用1.14也是沒有問題的)
4.四臺windows操作系統(tǒng)的虛擬機(本文是基于AWS的,理論上本地跑虛擬機也是沒問題的)
?
2.部署NEO節(jié)點
?
先給出官方文檔的鏈接--NEO節(jié)點部署(官方文檔),可以對照這個文檔一起進行。
1.先準備好要充當節(jié)點的虛擬機。這里以AWS為例,打開AWS首頁,注冊登錄,登錄成功后,選擇AWS管理控制臺,然后再點擊左上角的服務,選擇EC2
2.新頁面中點啟動實例(PS:右上角有個節(jié)點選擇,可以自由切換,我選擇的是新加坡的),然后選擇?windows server 2016 Base>>>?選擇有符合條件的免費套餐?,?后面的默認配置就可以。關鍵是最后一步---核實實例啟動,這里選擇創(chuàng)建一個新密鑰對,并保存好。
3.創(chuàng)建成功后,回到控制臺,稍等幾分鐘,等虛擬機準備好,然后選擇剛剛創(chuàng)建的虛擬機,點連接,會出現(xiàn)一個彈框,點擊下載選擇桌面文件,密碼那里按提示操作獲取密碼
4.打開剛剛下載的遠程桌面文件,按提示粘貼上一步獲取到的密碼,成功連接后,等系統(tǒng)初始化完成就可以操作了。初始化完成后先把虛擬機的IE安全設置關掉(不然無法下載文件,而且每打開一個網頁都要警告一次,賊煩),點擊左下角的搜索按鈕,輸入server manager,然后在Local server面板找到IE Enhanced SecurityConfiguration,點擊ON,然后在彈出的面板里選擇OFF,關閉掉IE安全設置
?
5.打開NEO節(jié)點部署(官方文檔),下載NEO-GUI,NEO-CLI,.NET Core Runtime。這里說一下,為什么要下載NEO-GUI?按照官方文檔的說明,理論上我們只下載NEO-CLI就可以的了。但是官方文檔沒有指明NEO-CLI運行需要的兩個庫文件具體在哪里可以下載。官方文檔這里的第一步的程序包應該指的就是NEO-GUI,然后再NEO-GUI目錄下的x64(或者x86,根據(jù)你的操作系統(tǒng)來選擇)文件下可以找到這兩個庫文件。將這兩個文件復制到NEO-CLI文件目錄下。
6.安裝.NET Core Runtime ,安裝完成后,打開命令行,我這里用的是PowerShell,用命令行切換到NEO-CLI目錄,輸入?dotnet neo-cli.dll?,不出意外的話,NEO節(jié)點就部署成功了,如圖所示。
?
3.搭建私鏈(或者聯(lián)盟鏈)
?
官方文檔在這---NEO私鏈搭建(官方文檔),可以對照著一起來做。
1.文檔中有指出需要4臺虛擬機,所以我們需要4臺虛擬機,并且都是部署好NEO節(jié)點的。可以按照上一步教程,將另外3臺配置好。這里的給虛擬機命名的時候最好自己弄個簡單的標識排序,不然后面操作起來可能會亂,比如我這里的4臺虛擬機分別命名是neo-window,neo-window1,neo-window2,neo-window3。當然這些看個人習慣來。
?
NEO?私有鏈的部署至少需要?4?臺服務器才能取得共識,每臺服務器對應一個共識節(jié)點,每臺服務器上有一個NEO?錢包文件
?
2.另外3臺部署成功后,打開其中一臺虛擬機,我這里打開的是第一臺(neo-window),然后啟動NEO-CLI,用create wallet xxxx.db3新建4個錢包,我這里分別創(chuàng)建的是wallet1.db3 ~wallet4.db3。新建好后將四個pubkey保存到一個txt文件里,后面會用到。然后將其它3個錢包文件分別復制粘貼到相應的虛擬機上。注意要放在跟neo-cli.dll同一個目錄下。
3.后臺打開AWS控制臺,將4臺虛擬機的IP地址記錄下來。這一步后面修改節(jié)點配置文件的時候會用到。如圖所示,要把IPv4?公有IP記錄下來。
4.如果你之前有啟動過neo-cli.dll,那么要先刪除掉NEO-CLI目錄下的Chain目錄,不然做到最后面可能會出現(xiàn)有連接數(shù),但是區(qū)塊高度為0的狀況。同樣的,如果你因為好奇心打開過NEO-GUI,你也需要刪除相應的Chain目錄。如果沒有,可以跳過刪除這一步。之后打開NEO-CLI目錄,用txt方式打開目錄下的protocol.json?文件,這個是節(jié)點的配置文件。按照官方文檔的格式進行修改
下面是我修改好的文件,修改好后,保存,并復制替換掉其它虛機上的客戶端的節(jié)點配置文件。
?
{
"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.修改虛擬機的防火墻入站規(guī)則,這里要注意的是不僅需要修改虛擬機的入站規(guī)則,而且要去AWS控制臺修改安全組里的入站規(guī)則,由于我4臺虛擬機用的都是同一個安全組,所以只要修改一個就行了。虛擬機里windows操作系統(tǒng)的入站規(guī)則我就不具體寫了,在控制面板里操作,這個比較簡單。其實,如果想簡單粗暴點,直接關掉windows的防火墻應該就可以了。
6.在四臺虛擬機上分別用neo-cli打開相對應的錢包,這里以第一臺虛擬機為例。運行?dotnet neo-cil.dll?命令,如果你想檢查當前的區(qū)塊狀態(tài),可以使用show state,初始狀態(tài)應該是高度為0,節(jié)點為0。然后打開本機對應的錢包文件,這臺虛擬機對應的wallet1.db3。
?
輸入命令?open wallet wallet1.db3打開錢包
然后輸入?start consensus?開啟共識
?
其他虛擬機一樣操作,分別打開對應的錢包文件,然后輸入命令開啟共識。不出意外的話就會出現(xiàn)如圖所示的界面。關掉其中一臺的話,其它三臺依然可以產生共識
?
?
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,反之亦然。所以當產生共識之后,我們需要關閉其中一個節(jié)點的NEO-CLI,然后在這個節(jié)點上的NEO-GUI客戶端進行操作。依次打開4個錢包,進行多方簽名的設置和重建錢包索引的操作,這個操作是在同一臺虛擬機上完成的。這個一定要注意。
然后把?NEO?從合約地址轉到普通地址中,打開?4?個錢包中的任意一個,點擊交易? >>>??轉賬輸入標準地址和數(shù)額,將?1?億?NEO?轉到這個地址中。
?
?
然后系統(tǒng)會提示“交易構造完成,但沒有足夠的簽名”,然后將代碼復制下來,打開第二個錢包,點擊交易簽名粘貼剛才復制的代碼,點擊簽名,然后將代碼復制下來,打開第三個錢包,點擊交易簽名粘貼剛才復制的代碼,點擊簽名,這時你會發(fā)現(xiàn)窗口中出現(xiàn)了一個廣播按鈕,代表交易已經簽名完成(達到多方簽名合約要求的最少簽名數(shù)量)可以廣播,點擊廣播后轉賬交易開始廣播,約?15?秒后轉賬成功。
?
上面的操作也是在同一個客戶端完成的。這里多說一句,我第一次弄的時候沒有注意,我是在4個節(jié)點客戶端上分別操作的,也就是說多方簽名的設置和重建錢包索引操作,我是在4臺虛擬機上分別完成的。這就造成了我沒有正在運行的節(jié)點了(因為neo-cli和neo-gui不能同時運行,而neo-gui沒有共識功能)。然后,到了提取NEO和GAS這一步時,就造成了,我的交易簽名成功了,而且廣播了,但是并沒有轉帳成功。造成這樣的原因是因為我雖然廣播了,但是此時沒有節(jié)點幫我把這個交易打包上去。所以,我的交易轉賬當然不成功,在普通地址上也就沒看到那些相應的NEO。這點是因為自己對區(qū)塊鏈的概念不夠深,我這里被困擾了很久。
?
?
8.GAS的提取教程基本上差不多,這里的不多說廢話了,官方教程已經說得很詳細了。
?
以上轉載自?https://mp.weixin.qq.com/s/vidjSg3KhQY5RWIPnNDxMw
?
轉載于:https://www.cnblogs.com/qiyecao/p/9238581.html
總結
以上是生活随笔為你收集整理的基于NEO的私链(Private Blockchain)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【转载】大叔推荐博客索引
- 下一篇: C#获取引用组件的版本信息