如何让加入的知名全节点在Substrate中成为权威节点,自动成为验证者节点?

How to make a joined well-known full node into an authority node in Substrate, automatically became an validator node?

我用node-template to practise the tutorials.

我已经完成了 start a private network and Permissioned Network。 最后,我可以看到查理作为一个全节点加入了网络。 我想更进一步,我试图让查理成为一个权威节点,我想让查理的角色与爱丽丝和鲍勃的角色相同。

我想让一个节点自动加入并成为验证者来生成块和敲定块。

之前,Charlie 运行s 为:

./node-template \
--chain=local \
--base-path /tmp/validator3 \
--name charlie  \
--node-key=3a9d5b35b9fb4c42aafadeca046f6bf56107bd2579687f069b42646684b94d9e \
--port 30335 \
--ws-port=9946 \
--offchain-worker always

现在查理可以充当全节点了。

我尝试修改查理运行为权限角色

我的工作:

  1. 清除查理的数据库

    ./node-template purge-chain --chain=local --base-path /tmp/validator3 -y

  2. 运行查理作为验证人,

删除 --offchain-worker always ,添加 --validator --pruning archive

./node-template \
    --chain=local \
    --base-path /tmp/validator3 \
    --name charlie \
    --node-key=3a9d5b35b9fb4c42aafadeca046f6bf56107bd2579687f069b42646684b94d9e \
    --port 30335 \
    --ws-port 9946 \
    --rpc-port 9935 \
    --validator \
    --pruning archive \
    --rpc-methods=unsafe \
    --bootnodes /ip4/127.0.0.1/tcp/30333/p2p/12D3KooWFzXtYJhUkMsWTXQodYaXhs6ah52xVExicuFPvmUQoZrE    # connecto to Alice, if not specified, could not find peer.
  1. 提交auro爷爷钥匙:

输入auro键:

curl http://127.0.0.1:9935 -H "Content-Type:application/json;charset=utf-8" -d \
       '{
                     "jsonrpc":"2.0",
                     "id":1,
                     "method":"author_insertKey",
                     "params": [
                       "aura",
          "scheme sure language chef bacon second club wild suggest advice awful room",
          "0x7a96031a623cb0057299dfe51e9421fde3cc80cf7e534bd7c1fbd84b0d520547"
        ]
    }'

然后输入爷爷钥匙:

curl http://127.0.0.1:9935 -H "Content-Type:application/json;charset=utf-8" -d \
               '{
                 "jsonrpc":"2.0",
                 "id":1,
                 "method":"author_insertKey",
                 "params": [
                   "gran",
      "scheme sure language chef bacon second club wild suggest advice awful room",
      "0x85935cef010757764ec07fd2ea8665a123283b7d81d2a063211b3d52d8cc215e"
    ]
}'

这样做是为查理插入会话密钥。

  1. 重启查理。

5).我阻止 Alice(或 Bob,杀死 Alice 或 Bob),留下 Bob 和 Charlie 运行ning。最佳区块#正在继续,最终确定的#挂在那里,没有增长。

试了很多次,找了一天。它需要一个会话托盘来支持这个吗?我哪里错了?我没有做什么?

我得到了答案substrate-validator-set。如果你想在PoA网络上动态添加验证器,你需要添加一个session pallet,让session来管理auro key和grandpa key。