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

feat: Pollard and partial forest support #56

Merged
merged 2 commits into from
Dec 3, 2024

Conversation

Davidson-Souza
Copy link
Collaborator

Pollard is an efficient implementation of the accumulator for keeping track of a subset of the whole tree. Instead of storing a proof for some leaves, it is more efficient to hold them in a tree structure, and add/remove elements as needed. The main use-case for a Pollard is to keep track of unconfirmed transactions' proof, in the mempool. As you get new transactions through the p2p network, you check the proofs and add them to the Pollard. When a block is mined, we can remove the confirmed transactions from the Pollard, and keep the unconfirmed ones. We can also serve proofs for specific transactions as requested, allowing efficient transaction relay.

What we call Pollard is just the full forest with all leaves in it. A
Pollard should give the option to only cache a subset of the leaves in
the accumulator. This commit simply creates a new mod called MemForest
where the old code will live.
Partial pollards allow you to hold only a subset of utxos in the forest,
effectively caching them and not requiring to download or validate extra
proofs for it.

This commit implements it using a very similar approach as the main
forest, but with the possibility to prune leaves that you don't want to
hold anymore.
@Davidson-Souza Davidson-Souza changed the title [WIP] feat: Pollard and partial forest support feat: Pollard and partial forest support Dec 3, 2024
@Davidson-Souza Davidson-Souza marked this pull request as ready for review December 3, 2024 16:14
@Davidson-Souza Davidson-Souza merged commit 1ee240f into mit-dci:main Dec 3, 2024
20 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant