Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >实践Substrate私有网络搭建

实践Substrate私有网络搭建

原创
作者头像
jasonruan
发布于 2020-08-12 03:26:18
发布于 2020-08-12 03:26:18
5.9K0
举报

实践Substrate私有网络搭建

jasonruan 2020.07.22

1 前言

本文参考:https://substrate.dev/docs/en/tutorials/start-a-private-network/,搭建Substrate私有网络,并将其托管到telemetry.polkadot.io上。

2 搭建步骤

2.1 安装 Substrate Node Template

代码语言:txt
AI代码解释
复制
# 安装依赖工具
$ curl https://getsubstrate.io -sSf | bash -s -- --fast

# clone最新分支版本的Substrate Node Template源码
$ git clone -b v2.0.0-rc4 --depth 1 https://github.com/substrate-developer-hub/substrate-node-template
$ cd substrate-node-template/
$ git checkout -b v2.0.0-rc4

# 初始化WebAssembly编译环境
source ~/.cargo/env
rustup update nightly
rustup update stable
rustup target add wasm32-unknown-unknown --toolchain nightly

# 编译
$ cargo build --release

2.2 创建Keys

使用Subkey命令,它是Substrate专用秘钥生成工具。安装方法:

$ cargo install --force subkey --git https://github.com/paritytech/substrate --tag v2.0.0-rc4

2.2.1 创建助记词

代码语言:txt
AI代码解释
复制
$ ./subkey --sr25519 generate
Secret phrase `text bubble owner rebuild damage today steel inflict mom book absent fiscal` is account:
  Network ID/version: substrate
  Secret seed:        0x29a4b095bb4ef2924cbc09f2c366cde44186de89348e8044b708527c35ae38dd
  Public key (hex):   0xec3ecd2ffebf75556c56e6cd183275a4017d70178d06c13d462a2245a902053a
  Account ID:         0xec3ecd2ffebf75556c56e6cd183275a4017d70178d06c13d462a2245a902053a
  SS58 Address:       5HQTpACjQHAE1o9niQctiFAzDLe4nKzMjjaW82ENTnS7DbGH

2.2.2 创建Key Pair 1

注:用于区块生成的Aura账号需要使用sr25519,用于区块确认(finalization)的GRANDPA账号需要使用ed25519

代码语言:txt
AI代码解释
复制
$ ./subkey --sr25519 inspect "text bubble owner rebuild damage today steel inflict mom book absent fiscal//jasonruan//aura"
Secret Key URI `text bubble owner rebuild damage today steel inflict mom book absent fiscal//jasonruan//aura` is account:
  Network ID/version: substrate
  Secret seed:        0xa63f8465e6b3d9380a2ffc4ca84256032d438d32eb4e42217a2176f255d35287
  Public key (hex):   0xc2b21193cf6669c82421036e382a945b45db9b0c24dff201cd341346bbe80d61
  Account ID:         0xc2b21193cf6669c82421036e382a945b45db9b0c24dff201cd341346bbe80d61
  SS58 Address:       5GTz3X4NeranDE5ZUj6EzK2PiR6xFokevbKyNQ4REc57DREC
  
 $ ./subkey --ed25519 inspect "text bubble owner rebuild damage today steel inflict mom book absent fiscal//jasonruan//grandpa"
Secret Key URI `text bubble owner rebuild damage today steel inflict mom book absent fiscal//jasonruan//grandpa` is account:
  Network ID/version: substrate
  Secret seed:        0xae72aa8342e70e624d2bb583616c2c15bbedf8b00f337886ee6abbad1e99d169
  Public key (hex):   0x5c066fdf0bfc266fdef4153371c07673108b4681005bfddb02b86612ee362866
  Account ID:         0x5c066fdf0bfc266fdef4153371c07673108b4681005bfddb02b86612ee362866
  SS58 Address:       5E9NB65gRVDMqNundHMFC3Umd4tdxocuWEcvAx31vj7hQPRW

2.2.3 创建Key Pair 2

代码语言:txt
AI代码解释
复制
$ ./subkey --sr25519 inspect "text bubble owner rebuild damage today steel inflict mom book absent fiscal//rzexin//aura"
Secret Key URI `text bubble owner rebuild damage today steel inflict mom book absent fiscal//rzexin//aura` is account:
  Network ID/version: substrate
  Secret seed:        0x06e30e1b0e598d61c4a38feb80ea1d75a958fd8a2dd3bd01ac6dcf0d8ef255a8
  Public key (hex):   0x9c3c7edccb0c653c6a867ed9b51cf8a21265a6099109f8bbc03517df65ad7c71
  Account ID:         0x9c3c7edccb0c653c6a867ed9b51cf8a21265a6099109f8bbc03517df65ad7c71
  SS58 Address:       5FbZJF6Afe2xsM2QnsRSGW7nDkXwBMNKUmFdUp6jEL9QTEjX
  
$ ./subkey --ed25519 inspect "text bubble owner rebuild damage today steel inflict mom book absent fiscal//rzexin//grandpa"
Secret Key URI `text bubble owner rebuild damage today steel inflict mom book absent fiscal//rzexin//grandpa` is account:
  Network ID/version: substrate
  Secret seed:        0x11a7c60cc1e1934e549da88512ea4b9dbb53bed6845af90d3e12f67a39b4ae48
  Public key (hex):   0x9d1811c2cc677a55b04eac77a4390b64a1760e93cfe5577500c89cc921372aec
  Account ID:         0x9d1811c2cc677a55b04eac77a4390b64a1760e93cfe5577500c89cc921372aec
  SS58 Address:       5FcgXQtGzM7SrrAEZjyA9KQzBmpWTyfP8tWBgAFyYC2m1foX

2.3 创建用户自定义chain spec文件

2.3.1 创建chain spec文件

代码语言:txt
AI代码解释
复制
$ ./target/release/node-template build-spec --disable-default-bootnode --chain local > customSpec.json
2020-07-22 20:17:44 Building chain spec

2.3.2 修改chain spec文件

customSpec.json文件中相关配置,改成前面创建的地址

代码语言:txt
AI代码解释
复制
  "name": "jsrzx Testnet",                                                                                                                                                        
  "id": "jsrzx_testnet",

      "aura": {
        "authorities": [
          "5GTz3X4NeranDE5ZUj6EzK2PiR6xFokevbKyNQ4REc57DREC",
          "5FbZJF6Afe2xsM2QnsRSGW7nDkXwBMNKUmFdUp6jEL9QTEjX"
        ]   
      },
      "grandpa": {
        "authorities": [
          [ 
            "5E9NB65gRVDMqNundHMFC3Umd4tdxocuWEcvAx31vj7hQPRW",
            1   
          ],
          [ 
            "5FcgXQtGzM7SrrAEZjyA9KQzBmpWTyfP8tWBgAFyYC2m1foX",
            1   
          ] 
        ]   
      },
      "balances": {
        "balances": [
          [ 
            "5GTz3X4NeranDE5ZUj6EzK2PiR6xFokevbKyNQ4REc57DREC",
            1152921504606846976
          ],
          [ 
            "5FbZJF6Afe2xsM2QnsRSGW7nDkXwBMNKUmFdUp6jEL9QTEjX",
            1152921504606846976
          ],
        ]   
      },
      "sudo": {
        "key": "5GTz3X4NeranDE5ZUj6EzK2PiR6xFokevbKyNQ4REc57DREC"
      }

2.3.3 创建chain spec raw文件

代码语言:txt
AI代码解释
复制
$ ./target/release/node-template build-spec --chain=customSpec.json --raw --disable-default-bootnode > customSpecRaw.json
2020-07-22 20:23:48 Building chain spec

2.4 创建私有网络

2.4.1 启动Bootnode节点

2.4.1.1 执行启动命令
代码语言:txt
AI代码解释
复制
$ ./target/release/node-template   --ws-external --rpc-external --rpc-cors=all   --base-path /tmp/jsrzx-bootnode01   --chain=./customSpecRaw.json   --port 30333   --ws-port 9944   --rpc-port 9933   --telemetry-url 'ws://telemetry.polkadot.io:1024 0'   --validator   --rpc-methods=Unsafe   --name jsrzx-BootNode01
2020-07-22 22:04:20 It isn't safe to expose RPC publicly without a proxy server that filters available set of RPC methods.
2020-07-22 22:04:20 It isn't safe to expose RPC publicly without a proxy server that filters available set of RPC methods.
2020-07-22 22:04:20 Substrate Node
2020-07-22 22:04:20 ✌️  version 2.0.0-rc4-54c58a2-x86_64-linux-gnu
2020-07-22 22:04:20 ❤️  by Substrate DevHub <https://github.com/substrate-developer-hub>, 2017-2020
2020-07-22 22:04:20 📋 Chain specification: jsrzx Testnet
2020-07-22 22:04:20 🏷  Node name: jsrzx-BootNode01
2020-07-22 22:04:20 👤 Role: AUTHORITY
2020-07-22 22:04:20 💾 Database: RocksDb at /tmp/jsrzx-bootnode01/chains/jsrzx_testnet/db
2020-07-22 22:04:20 ⛓  Native runtime: node-template-1 (node-template-1.tx1.au1)
2020-07-22 22:04:20 🔨 Initializing Genesis block/state (state: 0xd10f…a688, header-hash: 0x8647…f715)
2020-07-22 22:04:20 👴 Loading GRANDPA authority set from genesis on what appears to be first startup.
2020-07-22 22:04:20 ⏱  Loaded block-time = 6000 milliseconds from genesis on first-launch
2020-07-22 22:04:20 📦 Highest known block at #0
2020-07-22 22:04:20 Using default protocol ID "sup" because none is configured in the chain specs
2020-07-22 22:04:20 🏷  Local node identity is: 12D3KooWC2mv6TUKbQbgujE57BWXtPdZM45E1tXtr8ekpUFwZoMX (legacy representation: QmYNUMrY5ow2Ev9zm5fZ2VdE3mQQcmfbzrSsyXaRAppMXc)
2020-07-22 22:04:20 〽️ Prometheus server started at 127.0.0.1:9615
2020-07-22 22:04:25 💤 Idle (0 peers), best: #0 (0x8647…f715), finalized #0 (0x8647…f715), ⬇ 0 ⬆ 0
2020-07-22 22:04:30 💤 Idle (0 peers), best: #0 (0x8647…f715), finalized #0 (0x8647…f715), ⬇ 0 ⬆ 0
2020-07-22 22:04:35 💤 Idle (0 peers), best: #0 (0x8647…f715), finalized #0 (0x8647…f715), ⬇ 0 ⬆ 0

启动后,我们并未看到有区块产生,还需要执行下面的操作。

接下来我们需要把我们创建的keys添加到该节点的keystore里面,这步操作在后续每个网络节点部署时都必不可少。

2.4.1.2 添加keyskeystore
方式一:使用Polkadot-JS Apps UI
image.png
image.png
方式二:使用curl命令
  • 添加aura1
代码语言:txt
AI代码解释
复制
curl http://localhost:9933 -H "Content-Type:application/json;charset=utf-8" -d "@aura1.json"
{"jsonrpc":"2.0","result":null,"id":1}

{
  "jsonrpc":"2.0",
  "id":1,
  "method":"author_insertKey",
  "params": [
    "aura",
    "text bubble owner rebuild damage today steel inflict mom book absent fiscal//jasonruan//aura",
    "0xc2b21193cf6669c82421036e382a945b45db9b0c24dff201cd341346bbe80d61"
  ]
}
  • 添加grandpa1
代码语言:txt
AI代码解释
复制
curl http://localhost:9933 -H "Content-Type:application/json;charset=utf-8" -d "@gran1.json"
{"jsonrpc":"2.0","result":null,"id":1}

{
  "jsonrpc":"2.0",
  "id":1,
  "method":"author_insertKey",
  "params": [
    "gran",
    "text bubble owner rebuild damage today steel inflict mom book absent fiscal//jasonruan//grandpa",
    "0x5c066fdf0bfc266fdef4153371c07673108b4681005bfddb02b86612ee362866"
  ]
}

2.4.2 添加验证人节点

2.4.2.1 执行启动命令
代码语言:txt
AI代码解释
复制
$   ./target/release/node-template   --base-path /tmp/jsrzx-validator01  --chain ./customSpecRaw.json   --port 30334   --ws-port 9945   --rpc-port 9934   --telemetry-url 'ws://telemetry.polkadot.io:1024 0'   --validator   --rpc-methods=Unsafe   --name jsrzx-Validator01   --bootnodes /ip4/127.0.0.1/tcp/30333/p2p/12D3KooWC2mv6TUKbQbgujE57BWXtPdZM45E1tXtr8ekpUFwZoMX
2020-07-22 22:05:24 Substrate Node
2020-07-22 22:05:24 ✌️  version 2.0.0-rc4-54c58a2-x86_64-linux-gnu
2020-07-22 22:05:24 ❤️  by Substrate DevHub <https://github.com/substrate-developer-hub>, 2017-2020
2020-07-22 22:05:24 📋 Chain specification: jsrzx Testnet
2020-07-22 22:05:24 🏷  Node name: jsrzx-Validator01
2020-07-22 22:05:24 👤 Role: AUTHORITY
2020-07-22 22:05:24 💾 Database: RocksDb at /tmp/jsrzx-validator01/chains/jsrzx_testnet/db
2020-07-22 22:05:24 ⛓  Native runtime: node-template-1 (node-template-1.tx1.au1)
2020-07-22 22:05:25 🔨 Initializing Genesis block/state (state: 0xd10f…a688, header-hash: 0x8647…f715)
2020-07-22 22:05:25 👴 Loading GRANDPA authority set from genesis on what appears to be first startup.
2020-07-22 22:05:25 ⏱  Loaded block-time = 6000 milliseconds from genesis on first-launch
2020-07-22 22:05:25 📦 Highest known block at #0
2020-07-22 22:05:25 Using default protocol ID "sup" because none is configured in the chain specs
2020-07-22 22:05:25 🏷  Local node identity is: 12D3KooWD4fjwTCEtoHczV3bH1bzyouWtAS1VXtM5q49m9zWmrXu (legacy representation: QmUQMXzgnMwxzb47xHLxgHzfSuD1sUseDjtZ8CqUW1isJw)
2020-07-22 22:05:25 🔍 Discovered new external address for our node: /ip4/127.0.0.1/tcp/30334/p2p/12D3KooWD4fjwTCEtoHczV3bH1bzyouWtAS1VXtM5q49m9zWmrXu
2020-07-22 22:05:30 💤 Idle (1 peers), best: #0 (0x8647…f715), finalized #0 (0x8647…f715), ⬇ 0.6kiB/s ⬆ 0.6kiB/s
2020-07-22 22:05:35 💤 Idle (1 peers), best: #0 (0x8647…f715), finalized #0 (0x8647…f715), ⬇ 27 B/s ⬆ 32 B/s
2020-07-22 22:05:36 ✨ Imported #1 (0x2a04…4c11)
2020-07-22 22:05:40 💤 Idle (1 peers), best: #1 (0x2a04…4c11), finalized #0 (0x8647…f715), ⬇ 0.1kiB/s ⬆ 77 B/s
2020-07-22 22:05:45 💤 Idle (1 peers), best: #1 (0x2a04…4c11), finalized #0 (0x8647…f715), ⬇ 91 B/s ⬆ 0.1kiB/s
2020-07-22 22:05:48 ✨ Imported #2 (0x8c10…083e)
  • 此时Bootnode节点输出
代码语言:txt
AI代码解释
复制
2020-07-22 22:05:25 🔍 Discovered new external address for our node: /ip4/127.0.0.1/tcp/30333/p2p/12D3KooWC2mv6TUKbQbgujE57BWXtPdZM45E1tXtr8ekpUFwZoMX
2020-07-22 22:05:30 💤 Idle (1 peers), best: #0 (0x8647…f715), finalized #0 (0x8647…f715), ⬇ 0.2kiB/s ⬆ 0.2kiB/s
2020-07-22 22:05:35 💤 Idle (1 peers), best: #0 (0x8647…f715), finalized #0 (0x8647…f715), ⬇ 32 B/s ⬆ 27 B/s
2020-07-22 22:05:36 🙌 Starting consensus session on top of parent 0x864739e39231bfe4eb360a45b24a79256dedd261525028f45c112dc48ea3f715
2020-07-22 22:05:36 🎁 Prepared block for proposing at 1 [hash: 0xfc7a3b7f071bad7bb008f981ffc755d8c52bd28fd4b7a6066f8e0d3e9fb9cee3; parent_hash: 0x8647…f715; extrinsics (1): [0xc222…88fc]]
2020-07-22 22:05:36 🔖 Pre-sealed block for proposal at 1. Hash now 0x2a04174f2ebb9e13e12f7eb936d6bf00452f5077399f724a99501b8c78124c11, previously 0xfc7a3b7f071bad7bb008f981ffc755d8c52bd28fd4b7a6066f8e0d3e9fb9cee3.
2020-07-22 22:05:36 ✨ Imported #1 (0x2a04…4c11)
2020-07-22 22:05:40 💤 Idle (1 peers), best: #1 (0x2a04…4c11), finalized #0 (0x8647…f715), ⬇ 0.2kiB/s ⬆ 0.2kiB/s
2020-07-22 22:05:45 💤 Idle (1 peers), best: #1 (0x2a04…4c11), finalized #0 (0x8647…f715), ⬇ 0 ⬆ 0
2020-07-22 22:05:48 🙌 Starting consensus session on top of parent 0x2a04174f2ebb9e13e12f7eb936d6bf00452f5077399f724a99501b8c78124c11
2020-07-22 22:05:48 🎁 Prepared block for proposing at 2 [hash: 0x340e597ba2794bf039d42ffd66013391555e78525166e2cd8e2c60ec93f446ed; parent_hash: 0x2a04…4c11; extrinsics (1): [0xbc14…f03d]]
2020-07-22 22:05:48 🔖 Pre-sealed block for proposal at 2. Hash now 0x8c10584f605a4cd3d93a70d047fb2e1ea80067f87776ab56ce132d9d405d083e, previously 0x340e597ba2794bf039d42ffd66013391555e78525166e2cd8e2c60ec93f446ed.
2020-07-22 22:05:48 ✨ Imported #2 (0x8c10…083e)
2020-07-22 22:05:50 💤 Idle (1 peers), best: #2 (0x8c10…083e), finalized #0 (0x8647…f715), ⬇ 77 B/s ⬆ 0.1kiB/s
2020-07-22 22:05:55 💤 Idle (1 peers), best: #2 (0x8c10…083e), finalized #0 (0x8647…f715), ⬇ 51 B/s ⬆ 51 B/s
2020-07-22 22:06:00 🙌 Starting consensus session on top of parent 0x8c10584f605a4cd3d93a70d047fb2e1ea80067f87776ab56ce132d9d405d083e
2020-07-22 22:06:00 🎁 Prepared block for proposing at 3 [hash: 0x1aaf8b572a750e24ad1b0ee0d0b1e5aa6832f6873526e6efe59126130e88bca0; parent_hash: 0x8c10…083e; extrinsics (1): [0x99e8…ddee]]
2020-07-22 22:06:00 🔖 Pre-sealed block for proposal at 3. Hash now 0xfa3e8f79aef17e48f0fd5338b9c754cbc3e349ace3246edbc5995a7d2f91ea7c, previously 0x1aaf8b572a750e24ad1b0ee0d0b1e5aa6832f6873526e6efe59126130e88bca0.
2020-07-22 22:06:00 ✨ Imported #3 (0xfa3e…ea7c)

我们可以看到连接已经建立,不断有best区块产生,但是没有finalized区块产生,这时需要我们在验证人节点也添加keys,并且重启节点。

2.4.2.2 添加keyskeystore
方式一:使用Polkadot-JS Apps UI
image.png
image.png
方式二:使用curl命令
  • 添加aura2
代码语言:txt
AI代码解释
复制
curl http://localhost:9934 -H "Content-Type:application/json;charset=utf-8" -d "@aura2.json"
{"jsonrpc":"2.0","result":null,"id":1}

{
  "jsonrpc":"2.0",
  "id":1,
  "method":"author_insertKey",
  "params": [
    "aura",
    "text bubble owner rebuild damage today steel inflict mom book absent fiscal//rzexin//aura",
    "0x9c3c7edccb0c653c6a867ed9b51cf8a21265a6099109f8bbc03517df65ad7c71"
  ]
}
  • 添加grandpa2
代码语言:txt
AI代码解释
复制
curl http://localhost:9934 -H "Content-Type:application/json;charset=utf-8" -d "@gran2.json"
{"jsonrpc":"2.0","result":null,"id":1}

{
  "jsonrpc":"2.0",
  "id":1,
  "method":"author_insertKey",
  "params": [
    "gran",
    "text bubble owner rebuild damage today steel inflict mom book absent fiscal//rzexin//grandpa",
    "0x9d1811c2cc677a55b04eac77a4390b64a1760e93cfe5577500c89cc921372aec"
  ]
}

2.4.3 重启节点

之所以没有finalized区块产生,是因Substrate节点在导入grandpa key后,需要进行重启。

重启之后看到成功产生finalized区块。

  • Bootnode节点日志
代码语言:txt
AI代码解释
复制
$ ./target/release/node-template   --ws-external --rpc-external --rpc-cors=all   --base-path /tmp/jsrzx-bootnode01   --chain=./customSpecRaw.json   --port 30333   --ws-port 9944   --rpc-port 9933   --telemetry-url 'ws://telemetry.polkadot.io:1024 0'   --validator   --rpc-methods=Unsafe   --name jsrzx-BootNode01

2020-07-22 22:10:31 It isn't safe to expose RPC publicly without a proxy server that filters available set of RPC methods.
2020-07-22 22:10:31 It isn't safe to expose RPC publicly without a proxy server that filters available set of RPC methods.
2020-07-22 22:10:31 Substrate Node
2020-07-22 22:10:31 ✌️  version 2.0.0-rc4-54c58a2-x86_64-linux-gnu
2020-07-22 22:10:31 ❤️  by Substrate DevHub <https://github.com/substrate-developer-hub>, 2017-2020
2020-07-22 22:10:31 📋 Chain specification: jsrzx Testnet
2020-07-22 22:10:31 🏷  Node name: jsrzx-BootNode01
2020-07-22 22:10:31 👤 Role: AUTHORITY
2020-07-22 22:10:31 💾 Database: RocksDb at /tmp/jsrzx-bootnode01/chains/jsrzx_testnet/db
2020-07-22 22:10:31 ⛓  Native runtime: node-template-1 (node-template-1.tx1.au1)
2020-07-22 22:10:31 📦 Highest known block at #35
2020-07-22 22:10:31 Using default protocol ID "sup" because none is configured in the chain specs
2020-07-22 22:10:31 🏷  Local node identity is: 12D3KooWC2mv6TUKbQbgujE57BWXtPdZM45E1tXtr8ekpUFwZoMX (legacy representation: QmYNUMrY5ow2Ev9zm5fZ2VdE3mQQcmfbzrSsyXaRAppMXc)
2020-07-22 22:10:31 〽️ Prometheus server started at 127.0.0.1:9615
2020-07-22 22:10:33 🔍 Discovered new external address for our node: /ip4/127.0.0.1/tcp/30333/p2p/12D3KooWC2mv6TUKbQbgujE57BWXtPdZM45E1tXtr8ekpUFwZoMX
2020-07-22 22:10:36 🙌 Starting consensus session on top of parent 0x805367935836c821252e2377a2b40f9299c656a0110a282573ce9b68898b9477
2020-07-22 22:10:36 Timeout fired waiting for transaction pool at block #35. Proceeding with production.
2020-07-22 22:10:36 🎁 Prepared block for proposing at 36 [hash: 0x93a11511d172c3e01ea7d161fa050befc8b5ab5524335647e27a7f4701662557; parent_hash: 0x8053…9477; extrinsics (1): [0xa745…4d58]]
2020-07-22 22:10:36 🔖 Pre-sealed block for proposal at 36. Hash now 0xcd7199364b6caaf77d4f691f9db0dbdceddfbe5dbadec77b537e744420ed0802, previously 0x93a11511d172c3e01ea7d161fa050befc8b5ab5524335647e27a7f4701662557.
2020-07-22 22:10:36 ✨ Imported #36 (0xcd71…0802)
2020-07-22 22:10:36 💤 Idle (1 peers), best: #36 (0xcd71…0802), finalized #33 (0x6dfb…9bb2), ⬇ 1.4kiB/s ⬆ 1.5kiB/s
2020-07-22 22:10:41 💤 Idle (1 peers), best: #36 (0xcd71…0802), finalized #34 (0x8720…c226), ⬇ 0.9kiB/s ⬆ 0.9kiB/s
2020-07-22 22:10:42 ✨ Imported #37 (0xc532…2af4)
  • 验证人节点日志
代码语言:txt
AI代码解释
复制
$   ./target/release/node-template   --base-path /tmp/jsrzx-validator01  --chain ./customSpecRaw.json   --port 30334   --ws-port 9945   --rpc-port 9934   --telemetry-url 'ws://telemetry.polkadot.io:1024 0'   --validator   --rpc-methods=Unsafe   --name jsrzx-Validator01   --bootnodes /ip4/127.0.0.1/tcp/30333/p2p/12D3KooWC2mv6TUKbQbgujE57BWXtPdZM45E1tXtr8ekpUFwZoMX

2020-07-22 22:10:32 Substrate Node
2020-07-22 22:10:32 ✌️  version 2.0.0-rc4-54c58a2-x86_64-linux-gnu
2020-07-22 22:10:32 ❤️  by Substrate DevHub <https://github.com/substrate-developer-hub>, 2017-2020
2020-07-22 22:10:32 📋 Chain specification: jsrzx Testnet
2020-07-22 22:10:32 🏷  Node name: jsrzx-Validator01
2020-07-22 22:10:32 👤 Role: AUTHORITY
2020-07-22 22:10:32 💾 Database: RocksDb at /tmp/jsrzx-validator01/chains/jsrzx_testnet/db
2020-07-22 22:10:32 ⛓  Native runtime: node-template-1 (node-template-1.tx1.au1)
2020-07-22 22:10:32 📦 Highest known block at #35
2020-07-22 22:10:32 Using default protocol ID "sup" because none is configured in the chain specs
2020-07-22 22:10:32 🏷  Local node identity is: 12D3KooWD4fjwTCEtoHczV3bH1bzyouWtAS1VXtM5q49m9zWmrXu (legacy representation: QmUQMXzgnMwxzb47xHLxgHzfSuD1sUseDjtZ8CqUW1isJw)
2020-07-22 22:10:33 🔍 Discovered new external address for our node: /ip4/127.0.0.1/tcp/30334/p2p/12D3KooWD4fjwTCEtoHczV3bH1bzyouWtAS1VXtM5q49m9zWmrXu
2020-07-22 22:10:36 ✨ Imported #36 (0xcd71…0802)
2020-07-22 22:10:37 💤 Idle (1 peers), best: #36 (0xcd71…0802), finalized #33 (0x6dfb…9bb2), ⬇ 1.6kiB/s ⬆ 1.6kiB/s
2020-07-22 22:10:42 🙌 Starting consensus session on top of parent 0xcd7199364b6caaf77d4f691f9db0dbdceddfbe5dbadec77b537e744420ed0802
2020-07-22 22:10:42 🎁 Prepared block for proposing at 37 [hash: 0xa891f9f76b326856e5fc564a567372315e1924bf06ba69db6c7be13466a6ff73; parent_hash: 0xcd71…0802; extrinsics (1): [0xe180…6b2b]]
2020-07-22 22:10:42 🔖 Pre-sealed block for proposal at 37. Hash now 0xc532950ea2ee70a35b1d6e9f346b5c8f1ac3881770946f282f1942bcbe1e2af4, previously 0xa891f9f76b326856e5fc564a567372315e1924bf06ba69db6c7be13466a6ff73.
2020-07-22 22:10:42 ✨ Imported #37 (0xc532…2af4)

2.5 托管网络节点

节点启动成功后,我们便可以在telemetry.polkadot.io上查看创建的网络节点:

image.png
image.png

3 参考资料

https://substrate.dev/docs/en/tutorials/start-a-private-network/

https://substrate.dev/docs/en/tutorials/create-your-first-substrate-chain/setup

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
比较 QoS 服务策略的 bandwidth 和 priority 命令
要想知道梨子的味道最好亲口尝一尝,网上本来有篇“比较QoS服务策略的bandwidth及priority 命令”,怎么看怎么像机器翻出来的,这里重新翻译了下
SuperDream
2019/02/28
2.6K0
目前学术界最先进的数据包调度器介绍!
随着链路速度的提高和CPU速度缩放速度的降低,软件中的数据包调度会导致较低的精度和较高的CPU利用率。通过将数据包调度卸载到诸如NIC之类的硬件,可以潜在地克服这些缺点。然而,为了保持软件分组调度器的灵活性,硬件中的分组调度器必须是可编程的,同时还必须快速且可扩展。硬件中最先进的数据包调度程序要么折衷了可扩展性(Push-In-First-Out(PIFO)),要么表达了各种数据包调度算法的能力(先进先出(FIFO)))。此外,即使是像PIFO这样的通用调度原语,其表达能力也不足以表达分组调度算法的某些关键类别。因此,在本文中,我们提出了PIFO原语的泛化,称为Push-In-Extract-Out(PIEO),它与PIFO一样,维护元素的有序列表,但与PIFO不同,PIFO只允许从列表的开头出队,PIEO通过在出队时支持基于断言的可编程过滤,允许从列表中的任意位置出队。接下来,我们介绍PIEO调度程序的快速且可扩展的硬件设计,并在FPGA上进行原型设计。总体而言,PIEO调度程序比PIFO具有更高的表达力和30倍以上的可伸缩性。
网络交换FPGA
2020/06/07
4.4K0
QOS面试考点-第一篇
HCIER&S面试高频面试知识点QOS,近期会将QOS专题的所有知识点及面试中考官问到的问题点做一个分析。
Ponnie
2021/02/24
1.2K0
网络中的QOS技术
无论是语音还是视频,在IP网上都以IP数据包方式传输,其所需带宽完全可以由宽带多业务网络满足。但为了保证在其它数据的干扰下,或在高峰拥塞期间,在多对一的流量汇聚点上,满足关键业务的带宽、时延、抖动和丢包等要求,就需要网络提供必要的QoS(服务质量保证)技术。
网络技术联盟站
2021/05/12
2.2K0
QoS 工作原理与相关技术细节
VOIP:Voice Over Internet Protocol 模拟声音讯号数字化
利又德智能感知
2022/11/07
9391
详解:TSN如何实现确定性的数据传输?
传统网络朝着为用户提供互联服务、扩大业务带宽、保证服务质量的方向发展。直到现在,基于网络的服务主要以人为中心,几十毫秒的延迟并不是什么大问题。然而,随着机器对机器 (M2M) 和物联网 (IoT) 等应用的出现,网络服务面临着新的挑战,在车联网、工业互联网等场景下,即使最轻微的延迟也会导致服务中断。TSN(时间敏感网络)技术是IEEE 802.1标准化的一种基于以太网的网络技术,为需要超低延迟和高精度特性的应用提供服务。 背  景 以太网技术不仅被证明非常成功,更是一种存在于整个IT世界的通信方法。然而,
SDNLAB
2022/10/10
2.8K0
详解:TSN如何实现确定性的数据传输?
MQTT over QUIC 多流支持
过去的 2 月份,EMQX 开源版发布了 v5.0.16、v5.0.17 以及 v5.0.18 三个版本,提供了 MQTT over QUIC 多流(multistream)支持。企业版 v4.3.19 以及 v4.4.15 开发完成,即将发布,数据集成将新增对 HStreamDB 最新版本的适配,并允许设置 RocketMQ 消息生产者投递策略,将相同属性的消息转发到同一 RocketMQ 队列(Queue)中。
EMQ映云科技
2023/03/07
5770
2万字带你学习Qos原理,还有6个实验案例,建议一定要收藏!
QoS(Quality of Service)是服务质量的简称。对于网络业务来说,服务质量包括哪些方面呢?从传统意义上来讲,无非就是传输的带宽、传送的时延、数据的丢包率等,而提高服务质量无非也就是保证传输的带宽,降低传送的时延,降低数据的丢包率以及时延抖动等。广义上讲,服务质量涉及网络应用的方方面面,只要是对网络应用有利的措施,其实都是在提高服务质量。因此,从这个意义上来说,防火墙、策略路由、快速转发等也都是提高网络业务服务质量的措施之一。
网络技术联盟站
2020/09/29
4.6K1
2万字带你学习Qos原理,还有6个实验案例,建议一定要收藏!
【HCIE面试】QOS拥塞管理机制,来看看你是不是这样想的?
拥塞管理有哪些类型?默认一个接口有几个软件队列?不同优先级的报文怎么 映射进不同队列的?依据什么规则?
Ponnie
2021/04/15
2.2K2
流量控制--6.Classful Queuing Disciplines (qdiscs)
可以使用classful qdisc的代理来解锁Linux流量控制的灵活性和控制力。classful qdisc可以附加过滤器,允许将报文重定向到特定的类和子队列。
charlieroro
2020/12/02
1.1K0
流量控制--6.Classful Queuing Disciplines (qdiscs)
QOS队列技术有哪些?令牌桶又是什么?
1、FIFO:先进先出队列,是单队列技术,不会引入额外延迟,延迟只与队列长度有关,不提供任何差分服务。
Ponnie
2021/08/25
3K1
QOS队列技术有哪些?令牌桶又是什么?
QOS-3
先进先出,没有优先级可言,who第一个进,who第一个出去。,以太网和快速以太网接口默认queue是FIFO
py3study
2020/01/09
1.1K0
QOS-3
QUIC 和 HTTP/3:提升网络性能的关键技术
QUIC(Quick UDP Internet Connections)是一种基于 UDP 的传输层协议,旨在解决 TCP 在高延迟和丢包环境下的性能问题。HTTP/3 则是 HTTP 协议的最新版本,它基于 QUIC 协议而非 TCP,以提供更高效、可靠的网络服务。
陆业聪
2024/09/26
8260
QUIC 和 HTTP/3:提升网络性能的关键技术
【Linux】进程管理:状态与优先级调度的深度分析
🌈之前在这篇文章揭秘计算机内部奥秘:从CPU到操作系统,深入探索进程与线程的工作原理中就已经简述了 进程的部分相关内容,下面我们来进一步深入了解进程的内容。
IsLand1314
2024/10/15
4750
【Linux】进程管理:状态与优先级调度的深度分析
Nano Transport:一种硬件实现的用于SmartNIC的低延迟、可编程传输层
摘要:传输协议可以在NIC(网卡)硬件中实现,以增加吞吐量、减少延迟并释放CPU周期。如果已知理想的传输协议,那么最佳的实现方法很简单:直接将它烧入到固定功能的硬件中。但是传输协议仍在发展,每年都有提出新的创新算法。最近的一项研究提出了Tonic,这是一种Verilog可编程硬件传输层。我们在这项工作的基础上提出了一种称为纳米传输层的新型可编程硬件传输层架构,该架构针对主导大型现代分布式数据中心应用中极低延迟的基于消息的 RPC(远程过程调用)进行了优化。Nano Transport使用P4语言进行编程,可以轻松修改硬件中的现有(或创建全新的)传输协议。我们识别常见事件和基本操作,允许流水化、模块化、可编程的流水线,包括分组、重组、超时和数据包生成,所有这些都由程序设计员来表达。
网络交换FPGA
2021/10/11
2.1K1
Nano Transport:一种硬件实现的用于SmartNIC的低延迟、可编程传输层
软硬件融合视角:一文看懂高性能网络
随着大模型的广泛流行,GPU集群计算的规模越来越大(单芯片算力提升有限,只能通过扩规模的方式来提升整体算力),千卡、万卡已经成为主流,十万卡、百万卡也都在未来3-5年的规划中。
chaobowx
2024/06/26
1.1K2
软硬件融合视角:一文看懂高性能网络
如何让Hadoop支持优先级且性能可预测
让运行Hadoop的公司产品都能够确保高优先级任务按时完成。 Apache Hadoop近十年的成长证明,用开源技术处理与访问海量数据并不是什么炒作。然而,Hadoop的一个缺点是不可预测性。Hadoop不能确保企业的关键任务按时完成,也不能完全发挥集群的性能。 YARN(一种新的Hadoop资源管理器)能够实现任务抢占,为队列中的其它任务腾出调度空间。容量调度器与公平调度器可以通过静态配置杀死那些占用集群资源的任务,从而让高优先级任务进行调度。 当队列中堆积了等待资源的任务,这些工具就可以派上用场了。不
CSDN技术头条
2018/02/12
1.1K0
如何让Hadoop支持优先级且性能可预测
HTTP探索之路 - HTTP 1 / HTTP 2 / QUIC
从1989年万维网(www)诞生,HTTP(HyperText Transfer Protocol)经历了众多版本迭代,WebSocket也在期间萌芽。1991年HTTP/0.9被发明;1996年出现了HTTP/1.0;2015年HTTP/2正式发布;2020年HTTP/3或能正式使用。以下将会简单介绍。 一、HTTP 1.1 与 HTTP 2 1.1 HTTP 1.1 的缺陷 高延迟 — 队头阻塞(Head-Of-Line Blocking) 无状态特性 — 阻碍交互 明文传输 — 不安全
用户1097444
2022/06/29
8850
HTTP探索之路 - HTTP 1 / HTTP 2 / QUIC
MQTT over QUIC:下一代物联网标准协议为消息传输场景注入新动力
本文将通过对 MQTT over QUIC 的详细解析,为大家展现这一领先技术实现对于物联网场景的优势与价值,帮助大家更有效地借助 EMQX 5.0 对 QUIC 的支持能力,在各类 MQTT 应用场景中进行更加高效、低成本的物联网数据传输。
EMQ映云科技
2022/07/29
7470
解析流控技术演进
随着数据中心网络技术和带宽不断发展,流控技术在网络中发挥着越来越重要的作用,但一直未曾有过很大变革。直到无损网络的出现,流控技术出现新突破。作为以太网的基本功能之一,流控技术用于可以防止拥塞的情况下出现丢包,还能配合发送端合理的调整发送速率,从整体上保障网络带宽的最高效率。
SDNLAB
2019/12/19
3.1K0
解析流控技术演进
推荐阅读
相关推荐
比较 QoS 服务策略的 bandwidth 和 priority 命令
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档