Update 2023/3/11

如何構建符號節點

This page is a machine translation of the English text. Please contact faunsu https://twitter.com/faunsu19000 or symbol-community.com/community for language proofreading of articles.

目錄

*關於符號節點 *節點功能和服務器基本規格
  • 符號節點構建過程 *尖端

關於符號節點

區塊鏈節點按時間順序記錄交易數據,過往內容可查。作為分佈式賬本,多個節點共享相同的數據,任何人都可以查看交易數據。Symbol的區塊鏈由遍布全球的節點網絡構建和維護。節點執行交易、執行搜索並將數據以塊的形式記錄到分類賬中。

節點特性和基本服務器規格

Symbol節點分為三種:我會按順序解釋。
-對等節點 -API 節點 -投票節點

對等節點

也稱為 Harvester 節點,它們支持網絡。它主要驗證交易以將新塊添加到區塊鏈並在此過程中收取費用。
strapi-blog-api-image

API 節點

API 節點的主要作用是以可讀格式將數據存儲在 MongoDB 中。 API 節點還負責收集聚合債券交易的共同簽名,這些交易僅在完成時進行處理。
strapi-blog-api-image
  • 單個節點可以同時運行 Peer Node 和 API Node。

投票節點

Symbol提供了投票節點作為敲定的手段,投票節點只能由用戶自己擁有300萬xym來建立,一個區塊在敲定時就被認為是敲定的。Symbol的敲定採用[pBFT](https://pmg.csail. mit.edu/papers/osdi99.pdf),需要67%以上的投票節點同意。例如,金融機構在區塊鏈上實現支付處理時,需要保證生成的區塊不會被更改。通過finalization,金融機構可以知道區塊已經確認,可以順利的進行支付處理。
Voting Node在Symbol Blockchain中是可選的,在搭建新網絡時,可以在網絡設置中關閉,定位為單一插件,即使停止終結,也會繼續基於PoS+出塊作為敲定的用例,希望在區塊鏈上開展業務的組織和行業可以操作和管理投票節點,以進一步激活健壯的 PoS+ 鏈上的敲定功能,並在行業內共享塊確認的時間。使用識別和運行易於操作的公共聯盟鏈。

符號節點構建過程

請安排具有以下環境的服務器。如果您擔心服務器操作,請考慮使用服務Allnode。也可以使用Debian以外的Linux操作系統發行版,但下面描述的示例腳本基於 Debian。
  • 具有所需硬件規格或更高規格的服務器(單獨的表格)
  • Debian 操作系統 10 或更高版本
  • 端口 80、443、3000、3001、7900
###(附錄)強制性硬件規格
以下是強制性要求:
最低規格對等節點API 節點雙重/投票
CPU2 核4 核4 核
內存8GB16GB16GB
磁盤大小500 GB750 GB
磁盤 IOPS1500 IOPS 固態硬盤1500 IOPS 固態硬盤1500 IOPS 固態硬盤
下表列出了建議的要求。
推薦規格對等節點API 節點雙/投票
中央處理器4 核8 核
內存16GB32GB32GB
磁盤大小500 GB750 GB
磁盤 IOPS1500 IOPS 固態硬盤1500 IOPS 固態硬盤1500 IOPS 固態硬盤

平時不搭建服務器的注意事項

在構建節點之前,請務必執行以下安全措施。
  • 防火牆設置
  • 對於 SSH 通信,禁止 root 登錄並使用公鑰進行身份驗證
  • 作為一般規則,除 22、80、3000、3001、7900 外,端口應關閉

端口使用

22:SSH 連接。 80:Let's Encrypt + 符號節點列表 3000:HTTP REST 網關 3001:HTTPS REST 網關 7900:節點與彈射器客戶端之間的通信

服務器初始設置

連接到服務器,首先在服務器上創建一個操作賬號。
添加用戶符號
usermod -aG sudo 符號
su - 符號

安裝所需的軟件

執行以下腳本搭建環境。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/ymuichiro/symbol-node-builder/main/scripts/install.sh)"
通常需要進行以下工作,但上面的腳本會自動設置它。
  • 安裝 nvm、node.js 16、npm
  • 安裝docker, docker-compose
  • 通過 npm 安裝 symbol-bootstrap
  • 創建 ~/symbol-bootstrap/** 文件夾

啟動和設置 Symbol-Bootstrap

使用以下命令啟動 Symbol-bootstrap。
cd ~/符號引導程序
符號引導嚮導
  1. 網絡選擇 選擇在哪個網絡上構建節點。
選擇一個網絡:(使用方向鍵)
❯ 主網節點
測試網節點
引導本地網絡
自定義網絡節點(需要“custom-network-preset.yml”文件和“nemesis-seed”文件夾)
2.選擇節點類型
選擇一個程序集:(使用箭頭鍵)
❯ 雙節點
對等節點
接口節點
演示節點。一個雙節點,包括水龍頭和資源管理器。
3.推薦離線,因為它處理私鑰。如果沒有連接到互聯網,VPS等將無法使用,請按Y繼續。
? Symbol Bootstrap 即將開始處理敏感信息(私鑰),因此強烈建議
你在繼續之前斷開與網絡的連接。如果你離線或者你不在乎,請說“是”。(是/否)
  1. 輸入用於 Symbol bootstrap 的密碼。
輸入用於加密和解密自定義預設、addresses.yml 和 preset.yml 文件的密碼。
密碼,私鑰將被加密。
  1. 收割設置需要四個賬戶,指定其中的主賬戶,新建一個或輸入已有賬戶的私鑰。
? 你想如何創建主帳戶:(使用箭頭鍵)
❯ 生成一個新帳戶
輸入私鑰
輸入主賬戶的 64 HEX 私鑰(或按回車鍵再次選擇該選項)。
6、如果你在5中輸入了私鑰,會顯示賬戶地址,如果沒有區別就選y。
? 這是用作主帳戶的預期地址 TCDNP********************55KCQ 嗎?(是/否)
  1. 指定傳輸帳戶以及主要帳戶。
? 你想如何創建傳輸帳戶:(使用箭頭鍵)
❯ 生成一個新帳戶
輸入私鑰
  1. VRF賬戶類似。
? 您想如何創建 VRF 帳戶:(使用方向鍵)
❯ 生成一個新帳戶
輸入私鑰
  1. 遠程賬戶類似。
? 你想如何創建遠程帳戶:(使用箭頭鍵)
❯ 生成一個新帳戶
輸入私鑰
10、配置HTTP設置,如果選擇第二個Automatic~,可以自動設置HTTPS。
您的 REST 網關應該在 HTTPS(這是一種安全協議)上運行,以便 Symbol Explorer 可以識別它。
? 選擇您的 HTTPS 設置方法:(使用方向鍵)
❯ 本機支持,我有 SSL 證書和密鑰。
自動,您的所有密鑰和證書都將使用 letsencyrpt 自動生成/更新。
沒有任何
  1. 輸入主機名。
? 輸入指向您的出站主機 IP 的公共域名(例如 node-01.mysymbolnodes.com)此值為
在 HTTPS 上運行時需要!
  1. 輸入您的友好名稱。
輸入節點的友好名稱。
  1. 從 4 種類型的帳戶(密鑰)中選擇要加密的數量。
? 選擇您要使用的安全類型:(使用方向鍵)
PROMPT_MAIN:Bootstrap 在進行證書升級時可能會要求提供 Main 私鑰。其他密鑰已加密。
❯ PROMPT_MAIN_TRANSPORT:Bootstrap 在重新生成證書時可能會要求提供 Main 和 Transport 私鑰。
密鑰已加密。
ENCRYPT:所有密鑰都已加密,只需要輸入密碼
15、註冊或選擇投票節點,沒有300萬xym不能成為投票節點。
您是否正在創建投票節點?(是/否)
回答完所有問題後,~/custom-preset.yml將完成。默認情況下不指定benefitsAddress。打開文件並指定正確的值。示例如下所示。
組裝:雙
預設:主網
privateKeySecurityMode:PROMPT_MAIN_TRANSPORT
節點:
-
主機:example.org
最大解鎖賬戶:30
benefitAddress:${your-symbol-address}
投票:錯誤
friendlyName:${你的名字}
mainPrivateKey:${your-node-main-privatekey}
vrfPrivateKey:${your-node-vrf-privatekey}
remotePrivateKey:${your-node-remote-privatekey}
transportPrivateKey:${your-node-transport-privatekey}
https代理:
-
excludeDockerService: false
host … 輸入分配給節點的 IP 地址或域。 maxUnlockedAccounts ... 指定可以委託給節點的最大地址數。 beneficiaryAddress ... 指定節點收到的收穫獎勵的支付目的地地址 friendlyName … 指定任何節點的名稱。

啟動符號節點

執行以下命令加載 ~/custom-preset.yml 並啟動 symbol-bootstrap。
cd ~/符號引導程序
symbol-bootstrap config -p mainnet -a dual -c custom-preset.yml
符號引導啟動 -d
符號引導健康檢查
下面是 symbol-bootstrap 的啟動和停止命令列表。
symbol-bootstrap start -d 僅在首次啟動時指定。 symbol-bootstrap run -d 為第二次和後續引導指定它。 symbol-bootstrap stop 指定何時暫停。
  • 如果指定了 -d,就可以在後端啟動它。
本次工作完成了新的symbol-bootstrap的搭建,2023年3月開始新的symbol-bootstrap,大概需要1.5-2天的時間所有區塊同步完成,招募委託人時,請等到所有區塊同步完成後進行.
以下,將描述各種提示。
##尖端
###更新節點證書
節點證書在節點構建後約一年到期。
1.使用healthCheck檢查節點SSL證書是否過期
符號引導健康檢查
 
> node 節點的 node.crt.pem 證書將於 Aug 2 14:30:34 2023 GMT 到期,目前還不需要更新。
2.更新您的證書
符號引導更新證書

在符號節點列表中顯示節點信息

您可以將自己的節點信息發佈到符號節點列表
1.付費註冊(推薦)
進入【評論註冊】(https://symbol-tools.com/symbolTools/view/tool/nodeAdminManual.html)頁面,創建發布信息,支付10xym(截至2023/03/09的費用金額)即可通過付費體現。
2.通過在節點上設置nodeSetting.json進行註冊
您可以免費指定。如果您擁有自己的服務器,並且可以在服務器上配置設置,您可以選擇這種方式。如果您不知道如何進行以下步驟,我們建議您執行步驟1。
安裝方法
  • 將配置文件放在節點的以下路徑中 -http://xxx.xxx.xxx.xxx:80/nodeSetting.json
  • symbol-bootstrap 已啟動並正在運行,同時也在偵聽端口 80、443。因此,有必要執行以下或等效操作。
  • 編輯~/symbol-bootstrap/target/docker/docker-compose.yml並重寫volume信息,使nodeSetting.json掛載在他在nginx中的路徑上
  • 使用 symbol-bootstrap compose 等重建容器並啟動節點
  • 此程序在更新symbol-bootstrap或更新preset時會覆蓋docker-compose.yml文件,所以每次都需要重新註冊。
  • 2不能被Allnodes用戶使用

MongoDB 索引回顧

參考資料貼在下面
https://qiita.com/nem_takanobu/items/8e39cc02df1b7adccfee

當custom-preset.yml更新時

custom-preset.yml 可以在運行 symbol-bootstrap 時更改。
符號引導停止
symbol-bootstrap config -p mainnet -a dual -c custom-preset.yml --upgrade
符號引導程序撰寫--升級
符號引導程序運行-d

如何檢查節點錯誤的原因

當一個節點由於某種原因宕機時,有幾種方法可以檢查錯誤的原因。
1.查看symbol-bootstrap的日誌輸出
通過在啟動 symbol-bootstrap 時省略 -d 選項,您可以在檢查日誌時啟動。
符號引導運行
2.使用docker的日誌功能
第1步輸出所有容器的日誌作為問題。 數量巨大,因為它是您可以通過運行以下命令來檢查哪個容器有問題。
符號引導停止
符號引導程序運行-d
泊塢窗 ps -a
另外,如果正常的話,輸出結果如下。
符號@xxxxxxxxxxxxxxxxxxx:~$ docker ps -a
容器 ID 圖像命令創建狀態端口名稱
8d44313c93d6 steveltn/https-portal:1.19 "/init" 40 小時前 上升 40 小時 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:3001->443/tcp, :::3001->443/tcp https-代理
71fa6d455cf6 symbolplatform/symbol-server:gcc-1.0.3.5 "/bin/bash /symbol-c ..." 40 小時前 上升 40 小時 0.0.0.0:7900->7900/tcp, :::7900->7900/tcp 節點
542ca6019607 symbolplatform/symbol-server:gcc-1.0.3.5 "/bin/bash /symbol-c ..." 2 天前 40 小時經紀人
5b6765426fd2 symbolplatform/symbol-rest:2.4.2 "docker-entrypoint.s ..." 2 天前 上升 40 小時 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp rest-gateway
19c9ac8edce9 mongo:4.4.3-bionic "docker-entrypoint.s ..." 2 天前 Up 40 小時 27017/tcp db
如果存在STATUS為Exec(0)的容器則報錯,如果只想查看對應容器的日誌,執行如下 ${CONTAINER ID} 指定Exec輸出的容器ID (0).
docker 日誌 ${CONTAINER ID}

鏈接


News
Community
Docs
Contact