1.準備工做json
1.NEO-GUIwindows
2.NEO-CLI安全
3..NET Core Runtime (不能是2.x版本,官方建議是1.12,實際上我用1.14也是沒有問題的)服務器
4.四臺windows操做系統的虛擬機(本文是基於AWS的,理論上本地跑虛擬機也是沒問題的)區塊鏈
2.部署NEO節點ui
先給出官方文檔的連接--NEO節點部署(官方文檔),能夠對照這個文檔一塊兒進行。操作系統
1.先準備好要充當節點的虛擬機。這裏以AWS爲例,打開AWS首頁,註冊登陸,登陸成功後,選擇AWS管理控制檯,而後再點擊左上角的服務,選擇EC2命令行
2.新頁面中點啓動實例(PS:右上角有個節點選擇,能夠自由切換,我選擇的是新加坡的),而後選擇 windows server 2016 Base>>> 選擇有符合條件的免費套餐 , 後面的默認配置就能夠。關鍵是最後一步---覈實實例啓動,這裏選擇建立一個新密鑰對,並保存好。3d
3.建立成功後,回到控制檯,稍等幾分鐘,等虛擬機準備好,而後選擇剛剛建立的虛擬機,點鏈接,會出現一個彈框,點擊下載選擇桌面文件,密碼那裏按提示操做獲取密碼server
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)