用 NEO 節點搭建私有鏈

買賣虛擬貨幣
本篇教程會教你如何用 NEO 節點搭建私有鏈,並且如何從自己的私有鏈中提取 NEO 和 NeoGas。NEO 私有鏈的部署至少需要 4 臺伺服器才能取得共識,每臺伺服器對應一個共識節點,每臺伺服器上有一個 NEO 錢包檔案。配置虛擬機器

NEO 私有鏈的部署至少需要 4 臺伺服器才能取得共識,每臺伺服器對應一個共識節點。為了演示,我在 Azure 上建立了 4 臺 Windows 虛擬機器,大小為 Standard DS1 v2 (1 核心,3.5 GB 記憶體),你也可以在區域網中或虛擬機器中部署私有鏈。

建立好後,要開通 10331-10334 埠,具體方法為在系統的 防火牆 高階設定 入站規則 中新建規則,然後新增埠 10331-10334。

NOTE
如果你在雲伺服器上建立的虛擬機器,還要登入虛擬機器的管理後臺,設定網路安全組 Azure 上的設定方法為:網路 入站埠規則 新增埠 10331-10334。

建立好虛擬機器後,將四臺虛擬機器的 IP 地址儲存下來以備後用。

安裝 NEO 節點

參考 NEO 安裝NEO節點。

安裝外掛

要使節點達成共識,需要安裝 外掛啟用共識策略,詳細資訊請參考

建立錢包

我們首先建立 4 個錢包檔案,依次為 1.json - 4.json,這一步在 PC 版錢包和命令列錢包都可以建立,下圖是在命令列客戶端建立錢包檔案的截圖。

建立好錢包後將 4 個錢包的公鑰儲存下來(儲存到一個 txt 檔案中即可)以備後用。直接複製上面的公鑰或者用 CLI 命令 中的 list key 命令檢視公鑰再複製均可。

然後將 4 個錢包分別複製到 4 個虛擬機器的節點目錄下。

修改節點的配置檔案

開啟節點的配置檔案 protocol.json 。

首先修改 Magic 值,Magic 用於識別訊息的來源網路,指定不同的 Magic 確保 NEO 區塊鏈中的不同網路資訊在傳輸過程中不會傳送到其它網路。

NOTE
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
    }
  }
}

最後將修改過的 protocol.json 複製到 4 個節點的客戶端目錄下,替換之前的 protocol.json 的檔案。

為了更方便地開啟錢包,開啟共識,建議修改每個節點下的 config.json 檔案,替換其中的這一部分

"UnlockWallet": {
  "Path": "1.json",
  "Password": "11111111",
  "StartConsensus": true,
  "IsActive": true
}

其中 Path 是錢包名稱,Password 是錢包密碼,修改成你自己的錢包名稱和密碼就可以,其餘兩個不變。

然後在 4 臺虛擬機器上依次輸入以下命令啟動節點,這時程式會自動開啟錢包並開啟共識。

啟動節點:dotnet neo-cli.dll

如果上述操作成功,可以執行show state來檢視節點狀態。若高度發生變化,則說明共識過程正常。4個節點的共識過程如圖所示

4 個節點即使關掉一臺依然可以達成共識,如圖所示


提取 NEO、NeoGas

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

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

在 PC 版客戶端中開啟錢包 wallet1.db3,新增多方簽名地址,輸入 protocol.json 中的 4 個公鑰,設定最小簽名數量為 3(共識節點數量 / 2 + 1),你就會看到在合約地址中有 1 億的 NEO 了,如圖所示。

NOTE
4 個錢包都要新增多方簽名地址,否則下一步會提示簽名失敗

下面我們要將該 NEO 從合約地址轉到標準地址中,開啟 4 個錢包中的任意一個,點選 交易 轉賬 輸入一個標準地址,將 1 億 NEO 轉到這個地址中。

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

提取 NeoGas 的操作方法也類似,點選 高階 提取 NeoGas 提取 ,(記得這時所在的錢包 X,下文會用到),如圖所示

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

提取成功後 NeoGas 會進入到你發起提取 NeoGas 的交易所在的錢包(即上方的 X 錢包)的第一個標準地址,如圖所示

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;