Disclaimer: This is a summary of patterns we have observed during our research and should not be considered any form of technical or investment advice. Also, the given “known examples” do not imply they are the best implementations of the said pattern or any superior to any other implementation of the pattern not listed.
The off-chain components of an existing system rely on smart contracts running on a blockchain to check required conditions and provide requested data.
In a software system, where a blockchain is one of the components, the off-chain components might need to use the data stored on the blockchain and smart contracts running on blockchain to check conditions or supply data needed by on-chain components.
While data or functionality on a blockchain may have to be integrated with legacy systems, many existing or legacy systems do not have direct interfaces to blockchains. How can external systems get blockchain data/states without changing the core of the existing systems?
- Connectivity – Integrating blockchain into an existing system enables it to leverage the unique properties or data of a blockchain.
- Uncertainties – The consensus process and asynchronous communication introduce various uncertainties like dropped, reordered, or extensively delayed trnsaction commits and confirmation.
Use a component that can interact with both the blockchain and existing systems’ components. As this component performs the reverse process of an oracle, i.e., relay data from the blockchain into external applications, it is referred to as a reverse oracle. The reverse oracle component provides broader system functionality by mediating with blockchain data and smart contract functionality. Well-known smart contract functions can be configured in the component to access blockchain functionality. It can also subscribe to relevant events emitted by the smart contract(s). Further, the reverse oracle can make the identity of transactions on the blockchain visible to the external system(s) for integration and application semantics.
Figure 1: Decision model for on-chain data management and performance.
- Connectivity – The blockchain is integrated into an existing system, either by configuring well-known smart contract functions to be invoked or by making blockchain events and transactions visible to the system for integration.
- Non-intrusive – It is not always possible to use a blockchain in a non-intrusive way depending on the extensibility of the existing system. In particular, the probabilistic commit of blockchains using Nakamoto consensus may be inconsistent with normal transaction semantics in enterprise systems. Additional logic in the reverse oracle component may be required to cover these differences.
- Oracle and decentralised oracle patterns enable the reverse flow of data, i.e., from the external world into the blockchain.
- Identitii provides a solution to enrich payments in banking systems with documents and attributes, using blockchain. Identitii uses the concept of identity token, which is an entity reference stored on a blockchain. Every payment is associated with an identity token, which is used to exchange enriched information about a payment. The identity token is exchanged between banks through being embedded into the SWIFT protocol.
- Slock.it aims to build autonomous objects and a universal sharing network by using blockchain and IoT devices. Devices can sell or rent themselves, and also pay for services provided by others. When renting a device, availability information is stored on the blockchain; thus, validity checking is done on the blockchain.