如何让加入的知名全节点在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
现在查理可以充当全节点了。
我尝试修改查理运行为权限角色
我的工作:
清除查理的数据库
./node-template purge-chain --chain=local --base-path /tmp/validator3
-y
运行查理作为验证人,
删除 --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.
- 提交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"
]
}'
这样做是为查理插入会话密钥。
- 重启查理。
5).我阻止 Alice(或 Bob,杀死 Alice 或 Bob),留下 Bob 和 Charlie 运行ning。最佳区块#正在继续,最终确定的#挂在那里,没有增长。
试了很多次,找了一天。它需要一个会话托盘来支持这个吗?我哪里错了?我没有做什么?
我得到了答案substrate-validator-set。如果你想在PoA网络上动态添加验证器,你需要添加一个session pallet,让session来管理auro key和grandpa key。
我用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
现在查理可以充当全节点了。
我尝试修改查理运行为权限角色
我的工作:
清除查理的数据库
./node-template purge-chain --chain=local --base-path /tmp/validator3 -y
运行查理作为验证人,
删除 --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.
- 提交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"
]
}'
这样做是为查理插入会话密钥。
- 重启查理。
5).我阻止 Alice(或 Bob,杀死 Alice 或 Bob),留下 Bob 和 Charlie 运行ning。最佳区块#正在继续,最终确定的#挂在那里,没有增长。
试了很多次,找了一天。它需要一个会话托盘来支持这个吗?我哪里错了?我没有做什么?
我得到了答案substrate-validator-set。如果你想在PoA网络上动态添加验证器,你需要添加一个session pallet,让session来管理auro key和grandpa key。