作者: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 秒後提取成功。