This is the exploratory issue. Feel free to add more detailed sub-issues.
Summary
Hermes node can be disconnected/shutdown (or unavailable for any other reason) while other nodes are on-line and are actively accepting new documents and storing them in IPFS.
When the node that was unavailable is restarted, it should use the sparse-merkle tree to discover which documents it is missing and request them from other nodes. This process should continue until the tree root matches the one of the other nodes.
Breakdown
- Build a sparse merkle tree from the published docs
- Store the merkle tree locally
- Implement the mechanism to discover differences in the state
- Implement the mechanism to retrieve missing documents
Protocol
docs/src/architecture/08_concepts/document_sync/protocol_spec.md