From @XnuKernPoll on Wed May 03 2017 08:34:30 GMT+0000 (UTC)
I am implementing something similar at work, so I was reading the sources of go-ipld, and the old merkle-dag, from my understanding the DAG is essentially akin to the version control one in GIT, or how Blockchain products use the Merkle Tree, and the actual data field for the node is resolved to the block service, the links are just the adjacency list for that node.
So for things I did not understand would be for validation do you double hash all of the links and send it like the traditional merkle tree, or do you send all of the links then on the receiving end, traverse the root and if it checks out the change is committed? I am assuming the latter just because the peer that is missing something can just pull the blocks that it needs.
Lastly does your DAG implementation require total ordering of events? Because what I wrote so far in my p2p lib achieves eventual consistency by having a casual ordering of events, (due to the fact that my p2p library takes a lot of ideas from the dynamo family).
Copied from original issue: https://github.com/ipfs/faq/issues/255