The term Distributed Immutable Data Objects (DIDO) refers to the underlying technologies supporting distributed data and computation across a distributed network of peers using consensus algorithms to maintain integrity and consistency across the network. After the publication of Satoshi Nakamoto’s paper Bitcoin: A Peer-to-Peer Electronic Cash System1) and the exponential growth of other cryptocurrencies, there is a need to understand in general terms the underlying DIDO architectures and provide a framework to enable engineering due diligence of DIDOs. DIDOs are not limited to cryptocurrencies, the original blockchain, or distributed ledger technologies. DIDOs are also applicable to other non-cryptocurrency domains such as supply chain, registries for births, deaths etc., and lists of acceptable Identification and Authentication (IA) acceptable certificates, including those that have been revoked. The DIDO concepts captured within a Reference Architecture (RA) are intended to represent any architecture relying on distributed networks of peers that store data and allow parallel computation. The DIDO RA is not intended as a physical “must-have” requirements list, but more as a “what-can-be” conceptual catalog.
As illustrated in the figure, the DIDO RA is an idealized general set of requirements and constraints. Each incarnation of the DIDO software (e.g., cryptocurrency or distributed ledger) uses a set of stakeholder requirements to filter the DIDO RA and tailor it to suit the unique needs and desires of its community of stakeholders. For example, the DIDO RA provides standards for logging, even though the logging requirements driven by DIDO software stakeholders may lead to a decision to opt not to include them. There are a plethora of DIDO software incarnations available, starting with the original Blockchain software that drives Bitcoin, and moving onto IBM’s Distributed Ledger, Ethereum, and Iota.
The DIDO software incarnations are adopted or used by another community of stakeholders that wish to leverage the DIDO software into a DIDO Network of Nodes to address requirements and needs of a specific domain. For example, one DIDO network community wants to provide a cryptocurrency and another public records. The DIDO software selected by the DIDO network stakeholders might be different depending on its intended purpose. In Figure 1, the bi-directional arrows communicate the notion that the DIDO RA influences not only the DIDO software and networks, but also that evolution of DIDO software and networks feeds back into subsequent versions of the DIDO RA.