Gear/ Wiki
导语
本篇文章主要让你了解安装及运行 Gear 节点的主要步骤、如何将节点程序配置成 Linux 服务、配置 Gear 节点监测以及如何创建一个多节点的本地测试网络。
配置本地节点
本教程覆盖了安装和运行 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 Technologies 完成 1200 万美元融资
关于 GearFans
Gear 是波卡生态的计算组件,GearFans 是 Gear 爱好者社区。
【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。