GearFans

V1

2023/03/20阅读:17主题:默认主题

一文读懂 Gear 节点运行与开发 | Gear Wiki

导语

本篇文章主要让你了解安装及运行 Gear 节点的主要步骤、如何将节点程序配置成 Linux 服务、配置 Gear 节点监测以及如何创建一个多节点的本地测试网络。

配置本地节点

1.介绍

本教程覆盖了安装和运行 Gear 节点所需的步骤。

这里有两种方式来开始运行 Gear 节点。第一种方式,你可以下载预编译好的二进制文件,直接运行。第二种方式,你可以自行编译和配置。使用已经准备好的编译文件是最快和最便捷的开始方式,因为你可以跳过诸如安装 Rust、安装依赖和节点编译的过程。从另一方面来讲,如果你决定要采用自己编译的方式来创建你的开发节点,那么它将花费大约 20 分钟时间或者更多,这一切取决于你的机器配置。

!信息

系统配置要求 由于需要对 AVX 和 SSE 4.2 的支持,Gear 节点不能在 QEMU 虚拟 CPU 上正常工作。 Gear 节点并不要求特殊的硬件配置,除了建议使用 SSD 硬盘。

2.采用预编译的二进制文件来安装

依据你的操作系统,你需要下载 Gear 节点的nightly build版本:

Windows x64

Terminal:

curl -O https://get.gear.rs/gear-nightly-windows-x86_64.zip

Windows x64: gear-nightly-windows-x86_64.zip

MacOS ARM

Terminal:

wget https://get.gear.rs/gear-nightly-macos-m.tar.gz && \
tar xvf gear-nightly-macos-m.tar.gz && \
rm gear-nightly-macos-m.tar.gz

macOS M1: gear-nightly-macos-m.tar.gz

MacOS x64

Terminal:

wget https://get.gear.rs/gear-nightly-macos-x86_64.tar.gz && \
tar xvf gear-nightly-macos-x86_64.tar.gz && \
rm gear-nightly-macos-x86_64.tar.gz

macOS Intel x64: gear-nightly-macos-x86_64.tar.gz

Linux x64

Terminal:

wget https://get.gear.rs/gear-nightly-linux-x86_64.tar.xz && \
tar xvf gear-nightly-linux-x86_64.tar.xz && \
rm gear-nightly-linux-x86_64.tar.xz

Linux x64: gear-nightly-linux-x86_64.tar.xz

3.自行编译 Gear 节点

自行编译版本需要花费一些时间,同时需要安装一些依赖:

前期准备

Linux 用户需要依照自己的发行版本来安装 GCCClang。 另外,需要安装包含所需的 wasm-opt 工具的 binaryen 工具集。

例如在 Ubuntu 上使用如下命令:

sudo apt install -y clang build-essential binaryen cmake protobuf-compiler

在 macOS 上,你可以通过运行以下命令得到编译器工具集和在 macOS 上,你可以通过运行以下命令得到编译器工具集和 binaryen

xcode-select --install
brew install binaryen
安装 Rust

如果你已经安装 Rust,你可以跳过这一步。

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

之后你需要重启你的终端。

安装 Wasm Toolchains:
rustup toolchain add nightly
rustup target add wasm32-unknown-unknown --toolchain nightly
下载 Gear 代码
git clone https://github.com/gear-tech/gear.git
cd gear
编译
cargo build -p gear-cli --release

make node-release

备注

你将在 /gear/target/release/gear 找到最终的编译输出 前往: cd target/release

4.运行 Gear 节点

信息

这一步同是否是下载的预编译版本还是自己编译的版本无关。在 gear-node 安装的目录运行如下命令来链接测试网:

./gear

采用如下命令来运行开发模式的 Gear 节点:

./gear --dev --tmp

5.命令标记和选项

gear [flags][options]

--staging

链接到 Gear 测试网。

--dev

运行单节点 Gear 开发网络。

--tmp

采用临时目录来运行节点。临时目录会被创建出来,用来存储配置信息,并且在进程结束时被删除。

purge-chain

删除选定链的存储。需要明确链的类型 --staging--dev

--help

帮助信息。

6.特殊环境变量

运行 Gear 节点时开启合约日志:

RUST_LOG="gwasm=debug" gear [flags]

将节点程序配置成 Linux 服务

1.前期准备

你需要依据自己的操作系统下载或者自行编译 gear-node 可执行文件。

2.配置服务

为了将 Gear 节点程序作为 Linux 的服务,你需要参照以下方式来配置 systemd 文件:

root 目录开始:

cd /etc/systemd/system
sudo nano gear-node.service

配置并保存:

[Unit]
Description=Gear Node
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/root/
ExecStart=/usr/bin/gear --name "NODE_NAME" --telemetry-url "ws://telemetry-backend-shard.gear-tech.io:32001/submit 0"
Restart=always
RestartSec=3
LimitNOFILE=10000

[Install]
WantedBy=multi-user.target

备注

ExecStart 指向 gear 二进制文件所在的位置。在示例中是在 /usr/bin 目录。 使用 -- 引入额外的启动参数,但这些参数并不是必须的。

3.运行节点

到这里我们就可以使用以下命令来启动服务:

sudo systemctl start gear-node

使其能够随系统自动启动:

sudo systemctl enable gear-node

检查 gear-node 服务状态:

sudo systemctl status gear-node

4.检查日志

运行以下命令可以查看服务日志:

journalctl -u gear-node

使用导航键浏览日志,使用 q 键退出。

你可以通过添加参数 -n 50 来查看最后 50 行日志:

journalctl -u gear-node -n 50

添加 -f 参数,在连续模式下查看日志的最后一行 (按 Ctrl+C 退出):

journalctl -u gear-node -fn 50 

5.更新节点版本

你只需要把节点的可执行文件(gear)替换成最新版本,然后重新启动执行。 例如,如果你的 Linux 可执行文件位于/usr/bin(如我们上面的配置),你要运行:

wget https://get.gear.rs/gear-nightly-linux-x86_64.tar.xz
sudo tar -xvf gear-nightly-linux-x86_64.tar.xz -C /usr/bin
rm gear-nightly-linux-x86_64.tar.xz
sudo systemctl restart gear-node

6.删除节点

运行以下命令,删除节点的存储、服务配置和可执行文件:

sudo systemctl stop gear-node
sudo systemctl disable gear-node
sudo rm -rf /root/.local/share/gear
sudo rm /etc/systemd/system/gear-node.service
sudo rm /usr/bin/gear

配置 Gear 节点监测

需要监控每个 Gear 节点和整个网络的健康状况,以确保真正的去中心化和稳健的运营。这包括各种块生成指标以及在 PoS 网络中至关重要的节点正常运行时间。

与任何其他基于 Substrate 的节点一样,Gear 节点可以通过 --telemetry-url 连接到任意的监测后端。

要开始向任意的监测服务器实例发送监测消息,需要在节点运行期间指定一个额外的选项,该选项将启用向指定的 http 地址发送监测消息。

如果你愿意参与并分享你的监测数据,那么请使用一下选项来运行你的节点:

gear --telemetry-url "ws://telemetry-backend-shard.gear-tech.io:32001/submit 0"

同时使用以下选项来提供你的节点名称:

gear --name "NODE NAME"

如何启动节点监测? cd 到你的节点二进制文件所在的目录,然后运行一下命令:

./gear --telemetry-url "ws://telemetry-backend-shard.gear-tech.io:32001/submit 0" --name "My_Gear_node_name"

要检查当前运行节点的监测信息,请访问 https://telemetry.gear-tech.io。

运行一个 Gear 开发节点

开发节点对于开发和调试智能合约非常有用。你可以直接上传程序到本地节点,向程序发送消息,并验证程序的逻辑。

使用开发模式运行 Gear 节点:

  1. 按照 https://wiki.gear-tech.io/zh-cn/node/setting-up/ 中的描述,为你的操作系统编译或下载最新构建版本。
  2. 使用开发模式运行节点:
./gear --dev --tmp 
  1. 访问 https://idea.gear-tech.io/ 并连接到本地开发节点。通过左上方的按钮点击网络切换,选择 Development -> Local node,然后点击切换按钮。使用 Idea 发送消息,读取程序状态等。
  2. 要清除开发链的节点数据,请使用:
./gear purge-chain --dev 
  1. 要运行一个有详细日志的开发链,请使用:
RUST_LOG=debug RUST_BACKTRACE=1 ./gear -lruntime=debug --dev

创建一个多节点本地测试网络

对于更高级的智能合约调试和测试,更接近真实的网络环境,你可以建立本地测试网,由几个互连的节点组成。这种模式可以看到多节点共识算法的运行情况。

运行具有两个验证节点的本地测试网,分别为 Alice 和 Bob,它们拥有 local 测试网的初始权限,并被赋予测试网单元,更多细节请看配置。

注意:这将需要两个终端 (每个节点一个)。

  1. 首先运行 Alice 节点。下面的命令使用默认的 TCP 端口 (30333),并指定 /tmp/alice 作为链数据库位置。 Alice 的节点 ID 是 12D3KooWEyoppNCUx8Yx66oV9fJnriXwCcXwDDUA2kj6vnc6iDEp(传统表示为:QmRpheLN4JWdAnY7HGJfWFNbfkQCb6tFf4vA6hgjMZKrR);这由 node-key 决定。
./gear \
 --base-path /tmp/alice \
 --chain=local \
 --alice \
 --node-key 0000000000000000000000000000000000000000000000000000000000000001 \
 --telemetry-url 'ws://telemetry-backend-shard.gear-tech.io:32001/submit 0'

Alice 节点将在 块#0 以空闲模式运行,等待第二个验证节点。

Gear Node
✌️ version 0.1.0-6dc8d24edd9
❤️ by Gear Technologies, 2021-2022
📋 Chain specification: Gear Local Testnet
🏷 Node name: Alice
👤 Role: AUTHORITY
💾 Database: RocksDb at /tmp/alice/chains/gear_local_testnet/db/full
⛓ Native runtime: gear-610 (gear-1.tx1.au1)
👶 Creating empty BABE epoch changes on what appears to be first startup.
Using default protocol ID "sup" because none is configured in the chain specs
🏷 Local node identity is: 12D3KooWEyoppNCUx8Yx66oV9fJnriXwCcXwDDUA2kj6vnc6iDEp
💻 Operating system: macos
💻 CPU architecture: aarch64
📦 Highest known block at #0
〽️ Prometheus exporter started at 127.0.0.1:9615
Running JSON-RPC HTTP server: addr=127.0.0.1:9933, allowed origins=Some(["http://localhost:*""http://127.0.0.1:*""https://localhost:*""https://127.0.0.1:*""https://polkadot.js.org"])
Running JSON-RPC WS server: addr=127.0.0.1:9944, allowed origins=Some(["http://localhost:*""http://127.0.0.1:*""https://localhost:*""https://127.0.0.1:*""https://polkadot.js.org"])
🏁 CPU score: 1020MB/s
🏁 Memory score: 37732MB/s
🏁 Disk score (seq. writes): 1496MB/s
🏁 Disk score (rand. writes): 421MB/s
👶 Starting BABE Authorship worker
💤 Idle (0 peers), best: #0 (0x22c7…6847), finalized #0 (0x22c7…6847), ⬇ 0 ⬆ 0
💤 Idle (0 peers), best: #0 (0x22c7…6847), finalized #0 (0x22c7…6847), ⬇ 0 ⬆ 0
💤 Idle (0 peers), best: #0 (0x22c7…6847), finalized #0 (0x22c7…6847), ⬇ 0 ⬆ 0
💤 Idle (0 peers), best: #0 (0x22c7…6847), finalized #0 (0x22c7…6847), ⬇ 0 ⬆ 0

另外,你可以在监测网站(https://telemetry.gear-tech.io)的 Gear Local Testnet 标签下找到 Alice 节点名称。

  1. 在另一个终端,使用下面的命令,在不同的 TCP 端口(30334)上启动 Bob 的节点,链数据库位置在 /tmp/bob--bootnodes 选项将使 Bob 节点与 Alice 节点在 TCP 30333 端口连接。
./gear \
 --base-path /tmp/bob \
 --bootnodes /ip4/127.0.0.1/tcp/30333/p2p/12D3KooWEyoppNCUx8Yx66oV9fJnriXwCcXwDDUA2kj6vnc6iDEp \
 --chain=local \
 --bob \
 --port 30334 \
 --ws-port 9945 \
 --telemetry-url 'ws://telemetry-backend-shard.gear-tech.io:32001/submit 0'

运行第二个验证者节点后,网络开始产生新的区块。

Gear Node
✌️ version 0.1.0-6dc8d24edd9
❤️ by Gear Technologies, 2021-2022
📋 Chain specification: Gear Local Testnet
🏷 Node name: Bob
👤 Role: AUTHORITY
💾 Database: RocksDb at /tmp/bob/chains/gear_local_testnet/db/full
⛓ Native runtime: gear-610 (gear-1.tx1.au1)
🔨 Initializing Genesis block/state (state: 0xf470…d2dc, header-hash: 0x22c7…6847)
👴 Loading GRANDPA authority set from genesis on what appears to be first startup.
👶 Creating empty BABE epoch changes on what appears to be first startup.
Using default protocol ID "sup" because none is configured in the chain specs
🏷 Local node identity is: 12D3KooWHpsf9Gp59ct6t6d1MmKHxbmZRvSWcUej7cUNmWNBdvZE
💻 Operating system: macos
💻 CPU architecture: aarch64
📦 Highest known block at #0
Running JSON-RPC HTTP server: addr=127.0.0.1:61429, allowed origins=Some(["http://localhost:*""http://127.0.0.1:*""https://localhost:*""https://127.0.0.1:*""https://polkadot.js.org"])
Running JSON-RPC WS server: addr=127.0.0.1:9945, allowed origins=Some(["http://localhost:*""http://127.0.0.1:*""https://localhost:*""https://127.0.0.1:*""https://polkadot.js.org"])
🏁 CPU score: 875MB/s
🏁 Memory score: 38353MB/s
🏁 Disk score (seq. writes): 1497MB/s
🏁 Disk score (rand. writes): 421MB/s
👶 Starting BABE Authorship worker
discovered: 12D3KooWEyoppNCUx8Yx66oV9fJnriXwCcXwDDUA2kj6vnc6iDEp /ip4/192.168.1.4/tcp/30333
discovered: 12D3KooWEyoppNCUx8Yx66oV9fJnriXwCcXwDDUA2kj6vnc6iDEp /ip6/::1/tcp/30333
discovered: 12D3KooWEyoppNCUx8Yx66oV9fJnriXwCcXwDDUA2kj6vnc6iDEp /ip4/127.0.0.1/tcp/30333
🙌 Starting consensus session on top of parent 0x22c70bb6baf611e5c9a6b1886b307dfa25cf1972b3400e70eb15d624c8b96847
🎁 Prepared block for proposing at 1 (0 ms) [hash: 0x1f55c4a9daf8c35d4388313ad67deec4ff5e472659e2fec310bd3032bcbdfe71; parent_hash: 0x22c7…6847; extrinsics (2): [0x8bbd…2a85, 0x7d5c…0b86]]
🔖 Pre-sealed block for proposal at 1. Hash now 0xe46f6031bb73710e239665d0da4212fbdcca77d57f9504d357c078f3b315389e, previously 0x1f55c4a9daf8c35d4388313ad67deec4ff5e472659e2fec310bd3032bcbdfe71.
👶 New epoch 0 launching at block 0xe46f…389e (block slot 1667197557 >= start slot 1667197557).
👶 Next epoch starts at slot 1667198157
✨ Imported #1 (0xe46f…389e)
🙌 Starting consensus session on top of parent 0xe46f6031bb73710e239665d0da4212fbdcca77d57f9504d357c078f3b315389e
🎁 Prepared block for proposing at 2 (0 ms) [hash: 0x66281c25f34157c713876cda6f39324a0da6a9a50c0c32310683bca875c1ab4c; parent_hash: 0xe46f…389e; extrinsics (2): [0xcb81…f7c3, 0x7d5c…0b86]]
🔖 Pre-sealed block for proposal at 2. Hash now 0x2ab179fe98969cab0970df085b86e03dbee33daed527f6595bcdbeffebc64175, previously 0x66281c25f34157c713876cda6f39324a0da6a9a50c0c32310683bca875c1ab4c.
✨ Imported #2 (0x2ab1…4175)
🙌 Starting consensus session on top of parent 0x2ab179fe98969cab0970df085b86e03dbee33daed527f6595bcdbeffebc64175
🎁 Prepared block for proposing at 3 (0 ms) [hash: 0xb5b9be01adb191671e0421f4673f8bee0751481aaac7ea453d806161e3b46dd7; parent_hash: 0x2ab1…4175; extrinsics (2): [0x7771…de48, 0x7d5c…0b86]]
🔖 Pre-sealed block for proposal at 3. Hash now 0xf2ed128d41d96da623281745555a0fe00a033630aacf57ac02acc31ced267db0, previously 0xb5b9be01adb191671e0421f4673f8bee0751481aaac7ea453d806161e3b46dd7.
✨ Imported #3 (0xf2ed…7db0) 
  1. 网络已经启动!如果想停止网络,只需在两个运行会话中按下 Ctrl + C 即可。

关于 GearFans

Gear 是波卡生态的计算组件,GearFans 是 Gear 爱好者社区。

  • 官网:https://gear-tech.io/
  • Twitter:https://twitter.com/gear_techs
  • 中文 Twitter:https://twitter.com/gear_fans
  • Vara Twitter:https://twitter.com/VaraNetwork
  • Vara Twitter CN:https://twitter.com/VaraNetwork_CN
  • GitHub:https://github.com/gear-tech
  • Discord:https://discord.com/invite/7BQznC9uD9
  • Medium:https://medium.com/@gear_techs
  • Telegram 群:https://t.me/gear_tech
  • Telegram 中文群:https://t.me/Gear_CN
  • Telegram 中文开发群:https://t.me/gear_dev_cn
  • Vara Telegram CN:https://t.me/varanetwork_cn

分类:

后端

标签:

区块链

作者介绍

GearFans
V1

Gear 是波卡生态的计算组件。