You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository has been archived by the owner on Dec 29, 2021. It is now read-only.
We're working on a paper that describes the Merkle DAG we use in dat. Specifically we are interested in approaches with these properties:
we want to diff DAGs between two peers, given 0 prior knowledge of each others DAGs
our DAGs are append only
we would like to support diffing a single "branch" (as opposed to the entire graph)
minimizing the number of network round trips is very important
not having to re-traverse the graph when inserting new news is also very important (e.g. the approach must be incremental)
Our graph node exchange protocol between 2 peers works like this:
A peer can send a question message to another peer with some graph node hashes and the other peer should reply back with an answer containing which of the requested hashes it has in its local graph.
The question/answer protocol is stateful for asker, not answerer.
when receiving question
receive array of hashes
look up which of these you have
for every hash you have, put the relative index (of hash array) into answer array
send array of indices back
when asking question
send array of hashes you have (must fit in memory)
send more in parallel if you want, each question has an id
when you receive a response, use the array of indices in the response to construct a list of the hashes the other side has. you should keep the arrays and ids of the questions you send to be able to compute this step
do_something_with_answer(hashes)
This lets the 'asker' choose the algorithm they want to use to generate a list of hashes to ask for.
We want to explore different algorithms and secondary indexing schemes we can employ here.
Here's a bunch of papers on Merkle trees/graphs for research:
I think 'checkpoints' are what we wanna check out in http://gavwood.com/Paper.pdf "checkpoints, or a set of nodes in the database that allow a particular block’s state trie to be traversed"
We're working on a paper that describes the Merkle DAG we use in dat. Specifically we are interested in approaches with these properties:
Our graph node exchange protocol between 2 peers works like this:
A peer can send a question message to another peer with some graph node hashes and the other peer should reply back with an answer containing which of the requested hashes it has in its local graph.
The question/answer protocol is stateful for asker, not answerer.
when receiving question
when asking question
This lets the 'asker' choose the algorithm they want to use to generate a list of hashes to ask for.
We want to explore different algorithms and secondary indexing schemes we can employ here.
Here's a bunch of papers on Merkle trees/graphs for research:
The text was updated successfully, but these errors were encountered: