I've tried modifying the repository so initial voters for the grandpa pallet. In doing so, I noticed there are many checks to prevent that modification. The reason why we do not want any initial voters is to prevent hardcoding of some node properties in the chain_spec file. Hardcoded validators in the chain_spec file could be a target for Ddos attacks among others. So I'd like to know why the initial voters are required with the grandpa pallet and how to do without them. Are there any security reasons or advantages to having initial voters specified in the chain_spec file?
1 Answer
Hardcoded validators in the chain_spec file could be a target for Ddos attacks among others.
You could bring this argument also later when the chain is already running.
Are there any security reasons or advantages to having initial voters specified in the chain_spec file?
The advantage being that your blocks are being finalized. If you create a chain with deterministic finality, you should get deterministic finality from genesis. Having them declared in the genesis chain spec also doesn't increases the chances of Ddosing them.
-
Sure. But what if we still do not want them? What if we do not want deterministic finally from genesis?– KofiCommented Feb 27, 2023 at 17:12
-
Substrate requires is currently build around the assumptions that there is finality. This could be changed in the future, but currently this doesn't work. But you could also write some finality "gadget" that just finalizes every 1000th block or something like this.– bkchr ♦Commented Feb 27, 2023 at 22:09