Skip to content
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

Virtual Milestones: Epochs and Commitments #2129

Closed
jonastheis opened this issue Mar 21, 2022 · 0 comments
Closed

Virtual Milestones: Epochs and Commitments #2129

jonastheis opened this issue Mar 21, 2022 · 0 comments
Assignees
Labels

Comments

@jonastheis
Copy link
Contributor

jonastheis commented Mar 21, 2022

Regular checkpoints into the network are key for agreeing on a finalized state, so data can be compressed into a local snapshot and pruned. These checkpoints must also provide a mechanism to prove inclusion after the Tangle has been pruned. Therefore, each message should contain a commitment to a time slice (epoch).
This epic describes the implementation for the Virtual Milestones proposal's epochs and commitments.

For now:

  • Epochs manager: translates time to epoch number and viceversa. Should be able to return EC for latest commitable epoch. Reference old epoch implementation.
    • Multiple of TSC time.
  • Notarization Manager will make use of the Epoch Manager and will create epoch commitments reference.
    • When to consider an epoch commitable.
    • Pending Branch Counter.
    • Orphanage detection:
      • remove stale pending objects from epochs to not starve epoch confirmation.
      • (to be discussed and studied) remove confirmed stuff that ended up in an epoch commitment. A part of the Tangle got orphaned and we have to remove its weight from its past cone: changing confirmations.
    • Subscribe to confirmation events for messages, transactions and branches: for mutation and tangle commitments.
    • Subscribe to transaction confirmation for state commitment.
    • EC model and serialization.
  • Messagefactory call Notarization Manager to obtain the EC.

For later:

  • State Manager wraps Epochs Manager and should be able to return a new Tangle object based on an old epoch state.
    • Should also be able to decide if we need to switch state to a heavier ECC.
    • Obtain and reset the state to the forking point.
    • Resync from forking point.
  • Pruning capability: we will always have just a few database instances running (hundreds of epochs each or so). The API for the storage will mostly stay the same, a storage middleware will take care of reading / writing to the appropriate database instance.
  • TSA won't select tips with different EC. If a different EC is detected the State Manager should be invoked.

Spec: https://hackmd.io/gYleE-ESRJGpmsNBDnMBxA?both (WIP)

@jonastheis jonastheis changed the title Bucketed Epochs VMs: Epochs and Commitments Apr 22, 2022
@jonastheis jonastheis changed the title VMs: Epochs and Commitments Virtual Milestones: Epochs and Commitments Apr 22, 2022
@jkrvivian jkrvivian mentioned this issue May 19, 2022
6 tasks
@karimodm karimodm mentioned this issue May 19, 2022
@georgysavva georgysavva removed their assignment Jul 1, 2022
@karimodm karimodm closed this as completed Jul 8, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

6 participants