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