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

post distributed verification #5185

Closed
2 tasks done
dshulyak opened this issue Oct 20, 2023 · 1 comment
Closed
2 tasks done

post distributed verification #5185

dshulyak opened this issue Oct 20, 2023 · 1 comment
Assignees

Comments

@dshulyak
Copy link
Contributor

dshulyak commented Oct 20, 2023

the intuition is instead of verifying all post indexes node can verify a small subset of them and rely on other nodes in the network to verify the rest.

we already know syncing atxs for several epochs takes non-negligible amount of time (#5182), after a year it may become an obstacle to joining network.

distributed verification will significantly (10x - 30x) reduce cpu requirements, technical implementation required a few changes:

  • pick a random subset of indexes, randomness is seeded locally, for example by your id
  • node has to prepare special-purpose malfeasence proof when invalid index is found , with that index
  • for initial atx we verify all indexes, and reject atx if it doesn't pass

it relies on correct behavior for syncing late objects that is not implemented and should be a part of spacemeshos/pm#272 work.

TODO:

@dshulyak
Copy link
Contributor Author

it relies on improvements tracked in sync v2. if we are not validating all indexes ourselves that means that we can miss invalid atx. it will skew consensus weight calculation. to address it we want to have a guarantee that if peer has a malfeasence proof then our node will receive that malfeasence proof eventually as well, with short delay that depends on implementation. there is no such guarantee with existing sync implementation.

related items: #5306

@poszu poszu self-assigned this Dec 19, 2023
@poszu poszu moved this from 📋 Backlog to 🔖 Next in Dev team kanban Dec 19, 2023
@poszu poszu removed the status in Dev team kanban Dec 20, 2023
@poszu poszu moved this to 🏗 Doing in Dev team kanban Jan 10, 2024
spacemesh-bors bot pushed a commit that referenced this issue Feb 1, 2024
Part of #5185, closes #5376

- [x] Local randomness seed to select K3 indices using p2p peer ID
- [x] Verifying K3 indices of POST
- [x] Verifying ALL indices for initial POST
- [x] Publishing POST malfeasance proofs
- [x] Verifying only the invalid index in POST malfeasance proofs
- [x] Verify the candidate for a positioning ATX and its chain
- [x] Verify the candidate for a commitment ATX and its chain
- [x] Wait "some time" for malfeasance proofs before creating an active set
        ☝️ this is covered by ATX grading
- [x] configurable duration after which ATXs (and their chains) are considered valid (in terms of POST labels)
- [x] system tests
spacemesh-bors bot pushed a commit that referenced this issue Feb 1, 2024
Part of #5185, closes #5376

- [x] Local randomness seed to select K3 indices using p2p peer ID
- [x] Verifying K3 indices of POST
- [x] Verifying ALL indices for initial POST
- [x] Publishing POST malfeasance proofs
- [x] Verifying only the invalid index in POST malfeasance proofs
- [x] Verify the candidate for a positioning ATX and its chain
- [x] Verify the candidate for a commitment ATX and its chain
- [x] Wait "some time" for malfeasance proofs before creating an active set
        ☝️ this is covered by ATX grading
- [x] configurable duration after which ATXs (and their chains) are considered valid (in terms of POST labels)
- [x] system tests
spacemesh-bors bot pushed a commit that referenced this issue Feb 2, 2024
Part of #5185, closes #5376

- [x] Local randomness seed to select K3 indices using p2p peer ID
- [x] Verifying K3 indices of POST
- [x] Verifying ALL indices for initial POST
- [x] Publishing POST malfeasance proofs
- [x] Verifying only the invalid index in POST malfeasance proofs
- [x] Verify the candidate for a positioning ATX and its chain
- [x] Verify the candidate for a commitment ATX and its chain
- [x] Wait "some time" for malfeasance proofs before creating an active set
        ☝️ this is covered by ATX grading
- [x] configurable duration after which ATXs (and their chains) are considered valid (in terms of POST labels)
- [x] system tests
@poszu poszu moved this from 🏗 Doing to ✅ Done in Dev team kanban Mar 20, 2024
@poszu poszu closed this as completed Mar 20, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Archived in project
Development

No branches or pull requests

2 participants