The client side API implementation is typically going to include caching and other fun stuff too. So it's not exactly trivial. Protocol above is the client-server one. There should also be a server-server one that helps with redundant storage. There also needs to be a set of quick, reliable ways to map these node names to servers that can serve them.
Security needs to be baked in, using public key encryption and related stuff.
In this setting, the server essentially acts as a dumb disk drive, ie storing encrypted snapshots of the document, as well as encrypted log entries of mutations. A client can reconstruct the document by retrieving and decrypting the snapshot and log. Any client with write access can create a new snapshot. Perhaps intermediate-grained operations also make sense as a performance optimization. Access control interacts with the operations supported.