Skip to content

feat: Pollard and partial forest support#56

Merged
Davidson-Souza merged 2 commits intomit-dci:mainfrom
Davidson-Souza:partial-pollard
Dec 3, 2024
Merged

feat: Pollard and partial forest support#56
Davidson-Souza merged 2 commits intomit-dci:mainfrom
Davidson-Souza:partial-pollard

Conversation

@Davidson-Souza
Copy link
Copy Markdown
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
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