一文读懂 Gear 节点运行与开发 | Gear Wiki
2023-02-23 08:04
Gear
2023-02-23 08:04
订阅此专栏
收藏此文章

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 用户需要依照自己的发行版本来安装 GCC 和 Clang。 另外,需要安装包含所需的 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

3.访问 https://idea.gear-tech.io/ 并连接到本地开发节点。通过左上方的按钮点击网络切换,选择 Development -> Local node,然后点击切换按钮。使用 Idea 发送消息,读取程序状态等。

4.要清除开发链的节点数据,请使用:

./gear purge-chain --dev

5.要运行一个有详细日志的开发链,请使用:

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 节点名称。

2.在另一个终端,使用下面的命令,在不同的 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)

3.网络已经启动!如果想停止网络,只需在两个运行会话中按下 Ctrl + C 即可。

今晚 20:00PM,UTC+8 活动预告


活动预告|Gear Online Workshop


主题:Gear 特性解读:自动化延迟消息

时间:2023/02/23 20:00PM UTC+8

嘉宾:Shooter|Gear 高级大使

主持人:Jasmyn

参与链接:

https://meeting.tencent.com/dw/gHaJvA4ZXJHc 

历史文章

Gear 合约大揭秘

如何使用 gear-js SDK

如何部署 Gear 合约?

Gear Technologies 完成 1200 万美元融资

Gear 的技术优势

关于 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
Telegram 中文群:https://t.me/Gear_CN
Vara Telegram CN:https://t.me/varanetwork_cn
QQ 群:67770333

相关Wiki

【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。

在 App 打开
hyperliquid
wal
jellyjelly
particle
空投
香港
以太坊
rwa
movement
bera
monad
sui