You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The newly calculation action Merkle root for each block should be provided. This can either be part of the existing stream of blocks or can be put in some new stream perhaps alongside additional data that is useful to IBC (although technically everything else needed for IBC can come from the existing block header with its extensions). Additionally, whatever structure contains the new action Merkle root will likely be expanded in the future to contain other data necessary for control Finality Tree Leaf Nodes, such as the state root.
Note that the action_mroot in the block header would instead contain the finality Merkle root after the IF transition, which is why the new action Merkle root must be provided separately.
Additional data to be included (to support IBC clients):
Protocol version
Active finalizer policy generation
Base digest
Note that the actual active finalizer policy is not required since it would have been provided earlier in a block header extension. Also the finality Merkle root does not need to be provided separately since it can already be found in the block header.
The history of new action Merkle roots will need to be stored on disk somewhere. One option is to include them in the irreversible block log by including it in a new block extension. This means when a block is validated, it would have to be mutated to add the block extension. Also, a node may receive a block with or without that block extension. If the block extension is present, it should ensure it is well-formed but it does not need to validate the data present within at the time it receives it. However, when it validates that block, if a block extension is already present, it should ensure the data within it is correct. If it is not, then it should correct the data at that time. Part of determining if this new block extension is well-formed includes determining whether it is allowed to be present in the first place; this new block extension should not be present on a block that does not have the finality header extension.
The text was updated successfully, but these errors were encountered:
Depends on #2080.
The newly calculation action Merkle root for each block should be provided. This can either be part of the existing stream of blocks or can be put in some new stream perhaps alongside additional data that is useful to IBC (although technically everything else needed for IBC can come from the existing block header with its extensions). Additionally, whatever structure contains the new action Merkle root will likely be expanded in the future to contain other data necessary for control Finality Tree Leaf Nodes, such as the state root.
Note that the
action_mroot
in the block header would instead contain the finality Merkle root after the IF transition, which is why the new action Merkle root must be provided separately.Additional data to be included (to support IBC clients):
Note that the actual active finalizer policy is not required since it would have been provided earlier in a block header extension. Also the finality Merkle root does not need to be provided separately since it can already be found in the block header.
The history of new action Merkle roots will need to be stored on disk somewhere. One option is to include them in the irreversible block log by including it in a new block extension. This means when a block is validated, it would have to be mutated to add the block extension. Also, a node may receive a block with or without that block extension. If the block extension is present, it should ensure it is well-formed but it does not need to validate the data present within at the time it receives it. However, when it validates that block, if a block extension is already present, it should ensure the data within it is correct. If it is not, then it should correct the data at that time. Part of determining if this new block extension is well-formed includes determining whether it is allowed to be present in the first place; this new block extension should not be present on a block that does not have the finality header extension.
The text was updated successfully, but these errors were encountered: