-
Notifications
You must be signed in to change notification settings - Fork 746
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Explicit versioning of PVF execution environment #917
Comments
Yeah, that's a good idea! The candidate receipt should commit to the EE somehow - PersistedValidationData? If you're a node in session N and you have a candidate to execute from N-K, you'd want a way to check which EE to use |
Yes, that's one way to do this. However, That observation made me wonder if storing the execution environment To pull this off, the runtime API that provides the execution environment parametrization needs to know the session index to extract the configuration. An obvious way to solve this problem is to stash the session index at which the candidate was included in the candidate receipt. The candidate receipt already stores the relay parent, so maybe it is already possible to extract the session index? Footnotes
|
It's not the time to close it yet, botty. We've got parametrization but not versioning yet. |
This issue has been mentioned on Polkadot Forum. There might be relevant details there: https://forum.polkadot.network/t/ux-implications-of-pvf-executor-environment-versioning/2519/1 |
* Add create_channel & some refactor * Fix test * Not allow origin as relaychain? * handle error * Fix breaking tests * Create/Update channel & Disable inbound channel * Revamp tests remove the relaychain case * Update weight with cumulus * Revert "Create/Update channel & Disable inbound channel" * Add smoke tests for xcm based control extrinsic * Scripts and tests for set_operation_mode * Use template node for xcm tests * Update cumulus * Revamp test with customize xcm call * Add constraint only allow origin from Parachain * Fix lint error * Some polish * Update parachain/pallets/control/src/lib.rs Co-authored-by: Vincent Geddes <vincent@snowfork.com> * Some improvement * Explicit only allow ParaId as origin for all extrinsic * Update cumulus(ControlOrigin allow from sibling only) * Revert "Explicit only allow ParaId as origin for all extrinsic" --------- Co-authored-by: Vincent Geddes <vincent@snowfork.com>
* fix mapping-sync sync_genesis_block * fix lint * use legacy current_block before api version v2 * empty commit
* Add properties to chainspec. * Update bin/millau/node/src/chain_spec.rs Co-authored-by: Hernando Castano <HCastano@users.noreply.github.com> Co-authored-by: Hernando Castano <HCastano@users.noreply.github.com>
Currently, there is no explicit versioning of the PVF execution environment.
The execution environment (EE) includes (non-exhaustive probably):
ValidationParams
andValidationOutputs
.As soon as we release a new version of node with a different EE we will have a window of time, where there is previous and last version of EE is available at the same time. In case there is a candidate that is valid on newer version of EE and invalid on the previous version, it can lead to disputes.
One potential way to avoid that is to introduce explicit versioning of EE. A version of an EE is an integer. This integer is stored on-chain and can be retrieved via runtime API. To simplify matters, we can put this version into the
HostConfiguration
which would tie changing this version to session boundaries: all candidates produced within the session will have to be validated with EE of the same version.Whenever the node version with newer EE has been deployed widely, we can bump the EE version on chain. Validators that do not support the new EE version should abstain in backing, approvals and pre-checking. In that case, they will not receive rewards which should incentivise them to update ASAP.
The text was updated successfully, but these errors were encountered: