substrate基础(4)-模拟构建两个节点的网络

本文依旧基于substrate-node-template 进行操作.
该项目主要是为了方便开发人员调试和测试,以及初次接触substrate的入门者首选,掌握该项目后,再去接触正式项目,会容易很多
本文假定你已经编译好了这个项目,具体编译可以参考本系列第一篇文章:substrate基础(1)-substrate-node-template编译及部署

1. 清除现有网络节点数据

1
2
./target/release/node-template purge-chain --base-path ./tmp/alice --chain local
./target/release/node-template purge-chain --base-path ./tmp/bob --chain local -y

执行命令后,根据提示进行操作

2. 启动第一个节点:alice

1
2
3
4
5
6
7
8
9
10
./target/release/node-template \
--base-path ./tmp/alice \
--chain local \
--alice \
--port 30333 \
--ws-port 9945 \
--rpc-port 9933 \
--node-key 0000000000000000000000000000000000000000000000000000000000000001 \
--telemetry-url "wss://telemetry.polkadot.io/submit/ 0" \
--validator

其中,--alice中已经包含了--node-key的属性,这里为了更直观而显示的标记出来
各个参数说明:

参数 作用
–base-path 指定用于存储与此链相关的所有数据的目录
–chain local 指定要使用的链规范:local、development、staging
–alice 将帐户的预定义密钥添加到节点的密钥库中。使用此设置,该帐户用于块生产和最终确认
–port 30333 p2p监听端口
–ws-port 9945 指定要侦听传入 WebSocket 流量的端口
–rpc-port 9933 rpc端口
–node-key 指定用于网络的 Ed25519 密钥。应仅将此选项用于开发和测试
–telemetry-url 指定将节点监测数据发送到的位置
–validator 指定此节点参与网络的块生成和确认

启动后,节点输入如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2022-07-03 10:35:23 Substrate Node
2022-07-03 10:35:23 ✌️ version 4.0.0-dev-9c89be106cb
2022-07-03 10:35:23 ❤️ by Substrate DevHub <https://github.com/substrate-developer-hub>, 2017-2022
2022-07-03 10:35:23 📋 Chain specification: Local Testnet
2022-07-03 10:35:23 🏷 Node name: Alice
2022-07-03 10:35:23 👤 Role: AUTHORITY
2022-07-03 10:35:23 💾 Database: RocksDb at /tmp/alice/chains/local_testnet/db/full
2022-07-03 10:35:23 ⛓ Native runtime: node-template-100 (node-template-1.tx1.au1)
2022-07-03 10:35:24 🔨 Initializing Genesis block/state (state: 0x7859…17af, header-hash: 0x4ea4…ac68)
2022-07-03 10:35:24 👴 Loading GRANDPA authority set from genesis on what appears to be first startup.
2022-07-03 10:35:25 Using default protocol ID "sup" because none is configured in the chain specs
2022-07-03 10:35:25 🏷 Local node identity is: 12D3KooWEyoppNCUx8Yx66oV9fJnriXwCcXwDDUA2kj6vnc6iDEp
2022-07-03 10:35:25 💻 Operating system: linux
2022-07-03 10:35:25 💻 CPU architecture: x86_64
2022-07-03 10:35:25 💻 Target environment: gnu
2022-07-03 10:35:25 💻 CPU: Intel(R) Xeon(R) CPU E5-2676 v3 @ 2.40GHz
2022-07-03 10:35:25 💻 CPU cores: 16
2022-07-03 10:35:25 💻 Memory: 32110MB
2022-07-03 10:35:25 💻 Kernel: 5.4.0-100-generic
2022-07-03 10:35:25 💻 Linux distribution: Ubuntu 20.04.3 LTS
2022-07-03 10:35:25 💻 Virtual machine: yes
2022-07-03 10:35:25 📦 Highest known block at #0
2022-07-03 10:35:25 〽️ Prometheus exporter started at 127.0.0.1:9615
2022-07-03 10:35:25 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"])
2022-07-03 10:35:25 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"])
2022-07-03 10:35:25 creating instance on iface 192.168.253.71
2022-07-03 10:35:25 creating instance on iface 172.17.0.1
2022-07-03 10:35:25 creating instance on iface 172.21.0.1
2022-07-03 10:35:30 💤 Idle (0 peers), best: #0 (0x4ea4…ac68), finalized #0 (0x4ea4…ac68), ⬇ 0.3kiB/s ⬆ 0.3kiB/s
2022-07-03 10:35:35 💤 Idle (0 peers), best: #0 (0x4ea4…ac68), finalized #0 (0x4ea4…ac68), ⬇ 22 B/s ⬆ 40 B/s

其中:

  1. 🔨 Initializing Genesis block/state (state: 0x7859…17af, header-hash: 0x4ea4…ac68) 表示:标识节点正在使用的初始块或创世块。启动下一个节点时,请验证这些值是否相同。
  2. 🏷 Local node identity is: 12D3KooWEyoppNCUx8Yx66oV9fJnriXwCcXwDDUA2kj6vnc6iDEp 表示:指定唯一标识此节点的字符串。此字符串由用于使用帐户启动节点的 确定。使用此字符串来标识在启动第二个节点时要连接到的节点。–node-keyalice
  3. 💤 Idle (0 peers), best: #0 (0x4ea4…ac68), finalized #0 (0x4ea4…ac68), ⬇ 0.3kiB/s ⬆ 0.3kiB/s 表示:网络中没有其他节点,并且没有生成块。另一个节点必须加入网络,然后才能开始生成块。

2. 启动第二个节点:bob

1
2
3
4
5
6
7
8
9
10
./target/release/node-template \
--base-path ./tmp/bob \
--chain local \
--bob \
--port 30334 \
--ws-port 9946 \
--rpc-port 9934 \
--telemetry-url "wss://telemetry.polkadot.io/submit/ 0" \
--validator \
--bootnodes /ip4/127.0.0.1/tcp/30333/p2p/12D3KooWEyoppNCUx8Yx66oV9fJnriXwCcXwDDUA2kj6vnc6iDEp

其中bootnodes的节点值为要连接的另一个节点的id
其中,--bob中已经包含了--node-key的属性

3. 节点运行信息

至此,两个节点开始正常运转了。其中会有一些信息:

  1. best表示已经产生的块高度
  2. finalized表示最终确认的块高度

总结

本文编辑完毕

参考

[1] Substrate官方文档

Donate
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2017-2023 Jason
  • Visitors: | Views:

谢谢打赏~

微信