VMware Blockchain is an on-premises enterprise-grade decentralized trust platform. VMware Blockchain enables you to transact and share data securely.

With VMware Blockchain, you can create permissioned decentralized business networks. The decentralized trust platform removes the need to rely on a central repository of data that is a single point of failure.

Figure 1. VMware Blockchain Architecture
Shows the VMware Blockchain architecture that consists of the BFT, Replica and Client nodes, and the DAML Ledger API server

The external party application makes requests to the Client node and waits for a response. Sample requests are, a request to load a new smart contract, list the existing active smart contracts, or activate a function within an existing smart contract.

A request might activate a smart contract function that fetches a balance that does not change the State Machine. The request can also activate a smart contract function that transfers funds from one party to another, which changes the State Machine.

The application sends DAML commands to the Client nodes, using a DAML Ledger API interface. The DAML Ledger API interprets these commands and sends equivalent transactions to the Replica Network in the form of requests. Replica nodes in the network receive the requests, executes these requests, sends the results through a consensus protocol, and the results are persisted.

The DAMLe executes the requests. The request execution changes the state of the State Machine. The state is captured in an authenticated key-value store on each Replica node. Each Replica node has a local key-value database store (RocksDB), which stores the State Machine.

The smart contract execution engine such as DAMLe executes the requests received on each Replica node. Some requests write new values to the State Machine, which changes the State Machine. The request execution results are returned to the Client nodes that submitted the requests. Changes in the state of the State Machine are also shared with the Client nodes, where each Client node is only sent a subset of the state that the Client node is allowed to access.

The Client node then sends the results back to the application.