Closed lumtis closed 2 years ago
Creating the logic to add this request makes sense, but how will we actually apply this request?
We aren't storing any 3rd party chain genesis file or state, so I'm a bit confused about this.
I consider we will need a map Params
[launch-id]-[module-name]-[param-name] => value ([]byte)
During genesis build, the list of params are iterated and put in the genesis
So then the other half of this functionality is implemented by CLI?
The actual building of the chain from genesis?
Yes, we store on the chain the data that allows to deterministically build the genesis
So we will need to set up some kind of verification that the actual params are valid inside the CLI rather than the chain. There's no way to verify them on-chain since we don't have that info there.
I still have some questions:
From the CLI, we try to initialize the genesis from the applied requests every time the coordinator wants to approve some. Therefore, if the params are invalid, the operation fail. But yeah the verification is fully off-chain
should we also add some way to verify that the params are changed in the proper order?
Params are indexed by the module and param name, stored separately, applying params change to the genesis is idempotent, the order doesn't change the end result
is this only for launched chains (this would make sense to me)?
What do you mean?
Need https://github.com/tendermint/spn/issues/928 to be implemented first
Add in the available requests the
ChangeParam
request that allows requesting the modification of a module paramProposed structure:
Example:
Request to change the max number of validator param of staking module to 42.
This request can only modify parameters value. It can be argued that we eventually want a request to modify any genesis state value.
ChangeParam
is a simpler implementation as the path to the value is predictable[module]/params/[name]
, and those represent the value aimed to be changed from community decision