Linux 環境搭建 NEO-CLI 2.9 私鏈

NEOWest發表於2018-12-11

作者:39acd4af77

NEO 2.9 將 ApplicationLogs 等改為外掛機制了,較以前的版本有較大改動,搭建私鏈時也有部分變化,這裡就來詳細介紹一下 2.9 的私鏈搭建過程。本次使用 CentOS 系統。

1、準備四臺 Linux 環境、我這裡用的是騰訊雲的四臺伺服器、配置:CentOS7.4 系統 2 核 4G 記憶體 40G 硬碟 1M 頻寬。
2、安裝 dotnet core,使用命令:

sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
sudo yum update
sudo yum install dotnet-sdk-2.1複製程式碼

3、其他必要的依賴:

安裝 sqlite:

sudo yum install sqlite-devel複製程式碼

安裝 leveldb:

sudo yum install leveldb-devel複製程式碼

安裝 libunwind:

sudo yum install libunwind-devel複製程式碼

4、下載 neo-cli:

sudo wget https://github.com/neo-project/neo-cli/releases/download/v2.9.0/neo-cli-linux-x64.zip複製程式碼

解壓:

 sudo unzip neo-cli-linux-x64.zip複製程式碼

5、下載外掛:

進入Plugins目錄:

cd neo-cli/Plugins複製程式碼

下載 ApplicationLogs:

sudo wget https://github.com/neo-project/neo-plugins/releases/download/v2.9.0/ApplicationLogs.zip複製程式碼

下載 SimplePolicy.zip:

sudo wget https://github.com/neo-project/neo-plugins/releases/download/v2.9.0/SimplePolicy.zip複製程式碼

下載 StatesDumper.zip:

sudo wget https://github.com/neo-project/neo-plugins/releases/download/v2.9.0/StatesDumper.zip複製程式碼

6、解壓外掛到 Plugins 目錄下:

sudo unzip ApplicationLogs.zip -d ..
sudo unzip SimplePolicy.zip -d ..
sudo unzip StatesDumper.zip -d ..複製程式碼

解壓完成後刪除 Plugins 下的壓縮檔案,不刪也可以、反正留著沒用了。

rm -f ApplicationLogs.zip SimplePolicy.zip StatesDumper.zip複製程式碼

7、使用 neo-cli 建立四個錢包檔案 使用 PC 版錢包或其他 neo-cli 命令列錢包建立均可:

create wallet 1.json
password: ***    
password: ***    
address: AP3jypBzSmwWVy7QaaTUctBLpuMe9CoNDq    
pubkey:030add17e36aa72949cdeb3486021ff7bb621541af6680b1d7e2aaa6d991163a87

create wallet 2.json    
password: ***    
password: ***    
address: AVhFga7Angfmtb1zQXEgau8Pkh1zr6ZbdN    
pubkey:0331089290e5886d9fcf52f29d51d8a9f705bbdbe59b0dba8212611d771d127367

create wallet 3.json    
password: ***    
password: ***    
address: AU1r8zrqmNynqtpWMwZnBTWksp5fuKvyaA    
pubkey:021e67f86471a35ba4e0362e7eb246da28f7059298d768bc71e7de9cd908231591

create wallet 4.json    
password: ***    
password: ***    
address: APRyAAXy1y6upwjs4ijv6efts8PcnG5uWd    
pubkey:02fca1085da410796d7f3279660f52a92d216680060f1710c37f76e248f506cb91複製程式碼

建立好錢包後將 4 個錢包的公鑰儲存下來(儲存到一個 txt 檔案中即可)以備後用。直接複製上面的公鑰或者用 CLI 命令 中的 list key 命令檢視公鑰再複製均可。
建立好的錢包 json 檔案在 neo-cli 目錄下 分別為 1.json,2.json,3.json,4.json

8、將 4 個錢包檔案分別複製到 4 個節點的 neo-cli 目錄下,這裡要複製生成的 1.json 錢包原始檔進去,如果只是新建 1.json 再複製內容的話會開啟錢包失敗。

9、修改節點配置檔案:

在本地編輯好一份配置檔案 protocol.json 。

首先修改 Magic 值,Magic 用於識別訊息的來源網路,指定不同的 Magic 確保 NEO 區塊鏈中的不同網路資訊在傳輸過程中不會傳送到其它網路。
Magic 的型別為 uint,所以注意所填寫的數值要在 [0 - 4294967295] 區間內。

然後修改 StandbyValidators,將第三步記下來的 4 個公鑰填寫在這裡。

最後修改 SeedList,將第一步記下來的 IP 地址填寫在這裡,埠號保持不變,例如我修改成下面的配置。

{

"ProtocolConfiguration": {

"Magic": 123456,

"AddressVersion": 23,

"SecondsPerBlock": 15,

"StandbyValidators": [

"03072384ece95c4febe7211ee4833cd36cdf0f255ec5263b28a4be1f2af7a3d7f3",

"0208da33cee651a4dc119654b5b8067ade533e39e63a8b4fdbd160d97f80c4cfb4",

"026f0af815d5c3895205e9f54b9402329f3ecc4d249fc0c8500e9b3ea8a3ec9d5b",

"03b4e070988627e2a5710b2c8c79f0f0be18821e1af5875b7beeb3fa8a921cde3f"

],

"SeedList": [

"13.75.112.62:10333",

"137.116.173.200:10333",

"168.63.206.73:10333",

"137.116.171.134:10333"

],

"SystemFee": {

"EnrollmentTransaction": 10,

"IssueTransaction": 5,

"PublishTransaction": 5,

"RegisterTransaction": 100

}
}}複製程式碼

10、將修改過的 protocol.json 複製到 4 個節點的客戶端目錄下,替換之前的 protocol.json 的檔案。
這一步可以先刪除每個節點的 protocol.json 檔案,再建立、複製內容進去

為了更方便地開啟錢包,開啟共識,建議修改每個節點下的 config.json 檔案,將 UnlockWallet 配置改為如下:
使用 vi 編輯每個節點的 config.json 檔案:

  vi config.json

"UnlockWallet": {

"Path": "1.json",

"Password": "11111111",

"StartConsensus": true,

"IsActive": true

}複製程式碼

其中 Path 是錢包名稱,Password 是錢包密碼,修改成你自己的錢包名稱和密碼就可以,其餘兩個不變。然後在 4 臺虛擬機器上依次輸入以下命令啟動節點,這時程式會自動開啟錢包並開啟共識。

最後開啟節點開始共識:
使用命令開啟節點:dotnet neo-cli.dll

節點會自動開始共識:

show state 檢視共識狀態如下,說明私鏈搭建成功

提取NEO

安裝 PC 版客戶端(Neo-GUI),修改配置檔案 protocol.json 與 4 個節點的配置檔案相同,使其連線到私有鏈中。

開啟錢包,如果左下角有連線數不為零,而且一直在同步區塊,表示該客戶端已經成功地連線到了私有鏈中。

在 PC 版客戶端中開啟錢包 1.json,新增多方簽名地址,輸入 protocol.json 中的 4 個公鑰,設定最小簽名數量為 3(共識節點數量 / 2 + 1),你就會看到在合約地址中有 1 億的 NEO 了,分別開啟 4 個錢包檔案,進行同樣的簽名操作。

開啟錢包 1.json,點選 交易 轉賬 輸入一個標準地址,將 1 億 NEO 轉到這個地址中。

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

大功告成,擁有了自己的鏈,還有 1 億 NEO,可以愉快地玩耍了。

提取 GAS

在 NEO-GUI 中開啟四個節點錢包中的任意一個,點選 高階 提取 NeoGas 提取,接下來的操作與轉賬 NEO 類似,將沒有足夠的簽名的程式碼複製下來,開啟第二個錢包,點選 交易 簽名 貼上剛才複製的程式碼,點選 簽名, 然後將程式碼複製下來,開啟第三個錢包,點選 交易 簽名 貼上剛才複製的程式碼,點選 簽名,點選 廣播 後提取 NeoGas 的交易開始廣播,約 15 秒後提取成功。



相關文章