Informative Background (DIDO CLI)

A Distributed Immutable Data Objects (DIDO), by definition, is a Distributed System comprised of a network and a collection of nodes particpating in a Peer to Peer (P2P) network. Each node within the DIDO operates asynchronously and independently from all the others nodes. The nodes communicate changes in the state of the distributed objects managed by each nde by publishing Transactions across the node network. See Figure 1. Notice that the DIDO is comprosed of different kinds of Nodes (See 2.3.3 Node Taxonomy).

Figure 1: Overview of a DIDO

Any one distributed Immutable DIstributed Data Objects can exists on any or all of the kinds of nodes. For example, in Figure 1, the Green nodes may represent Wallets without any distributed objects, while the pink nodes might represent Archival Nodes that not only have the distributed objects, but a complete journal (i.e., ledger) of all the transactions every applied to the distributed object.

One of the most important aspects about a DIDO is that each participating Node in the Node Network using the Distributed Object arrives at the same state for the object given any transaction. In essence, the result of the transaction needs to be deterministic in nature (i.e., the same input (Transaction) achieves the same output (Journal Entry in the Journal).