DNetDB stores two type of data on blockchain: DNet and OVC. Since the data can become obsolete, only the hash of data is stored on the blockchain and the data records are stored along with the blocks. This design will keep the blockchain data size constant and the obsolete data can be garbage collected (GC).
The DNet records is structured like this:
DNet
├── dnet1: HashPubKey1
│ ├── ovc
│ │ └──ovc_id
│ ├── node1
│ │ ├──Virtual IP
│ │ └──PubKey
│ ├── node2
│ │ ├──Virtual IP
│ │ └──PubKey
│ └── ...
├── dnet2: HashPubKey2
│ ├── ovc
│ │ └──ovc_id
│ ├── node1
│ │ ├──Virtual IP
│ │ └──PubKey
│ ├── node2
│ │ ├──Virtual IP
│ │ └──PubKey
│ └── ...
├──--...
└──-+dnetN: HashPubKeyN ...
The HashPubKey for each dnet is the wallet address hash to lock this dnet to its owner, while the PubKey for each node is for unique identifier and traffic encryption. The ovc_id points to the following OVC record.
OVC is the cloud backend for the individual dnet and composes a cluster of public accessible nodes.
OVC
├── ovc1: HashPubKey1
│ ├── Public IP
│ └── Public Key
├── ovc2: HashPubKey2
│ ├── Public IP
│ └── Public Key
├── ovc3: HashPubKey3
│ ├── Public IP
│ └── Public Key
├──--...
└──-+ovcN: HashPubKeyN ...
The HashPubKey for each ovc is the wallet address hash, while the PubKey is for unique identifier and traffic encryption.