Skip to content
This repository has been archived by the owner on Jan 3, 2023. It is now read-only.

Preventing LockedState from blocking if finalization top-down message fails #211

Open
adlrocha opened this issue Jun 22, 2022 · 0 comments

Comments

@adlrocha
Copy link
Collaborator

adlrocha commented Jun 22, 2022

When running an atomic execution between two subnets whose common parent orchestrating the protocol is not their own parent (i.e. the parties are not required to sync with the subnet), if the top-down message triggered after the success or abortion of the execution doesn't arrive to destination, the locked state in the subnet may be locked forever.

To solve this we could:

  • Require subnets to sync the state of not only the parent but all of its ancestors (so it can check if there are messages pending that couldn't be propagated). We could probably relax this requirement by just requiring to sync the latest state of ancestors and its checkpoints instead of the whole state.
  • Include a timer to locked states (in a common reference of time, e.g. number of epochs in the common parent). The time range for the execution can be specified when initializing the execution so if the top-down message doesn't arrive in this number of epochs, the locked state expires and is automatically unlocked. The problem with this solution is that we at least need to be polling the height of the common parent to understand how time evolves.
  • Use the subnet content resolution protocol to poll the state of the execution from the common parent for the case that the top-down message is not propagated.
@adlrocha adlrocha changed the title Preventing LockedState from blocking if top-down message fails. Preventing LockedState from blocking if finalization top-down message fails Jun 22, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

1 participant