Technologists across Dell have been discussing a variety of Blockchain use cases with our customers. These conversations inevitably lead to whiteboard sketches integrating potential blockchain deployments with existing IT architectures. We use the chart below to drive this brainstorming exercise.
The "Elements of Blockchain" are essentially a framework for asking a set of questions about how a blockchain would be implemented and co-exist with currently-running business applications. Common questions that we try and answer during this process are highlighted below.
- New business logic. What new business logic is being written, and for what purpose? Will modern application development processes be used to develop the new logic? How will this code be deployed when compared against existing application deployment frameworks? Will your business logic be portable across blockchains?
- Smart Contracts. How are smart contracts deployed compared to existing application deployment? Are these contracts secure (e.g. encrypted)? Are they well-written? How easy are they to consume? Do they lock-in application developers to a certain platform? Are metrics collected to measure usage? Are access attempts logged securely?
- Cryptography: Given the liberal use of cryptography within blockchains, which libraries will be used within the underlying ledger? How are these libraries maintained and used across ledgers? What role does cryptography play in different consensus algorithms?
- Identity / Key Management: The use of private and public keys in a blockchain is foundational. How are these keys managed in comparison to other corporate key management systems? How do corporate identities translate to shared identities with other nodes on a blockchain network?
- Network Programmability: How will the network between blockchain nodes be instantiated, tuned, and controlled? How will application SLAs for latency be translated into adequately-performing network operations? Will blockchain transactions be distributed as cleartext or encrypted?
- Consensus Algorithms: How will decisions be made to accept/reject transactions? What is the "speed to finality" of these decisions? What are the scalability limits of the consensus algorithm? How much fault tolerance is built into the consensus? How much does performance suffer when fault tolerance limits are reached?
- Off-chain Storage: What kind of data assets are recorded within the ledger? Are they consistently referenced? How are access permissions consistently enforced between the ledger and off-chain assets? Do all consensus nodes have the ability to verify all off-chain data assets?
- Data Protection: How is data consistency enforced within the ledger? Do corrupted transactions throw an exception? How are corrupted transactions repaired? Does every consensus node always store every single transaction locally? Can deduplication or compression occur? Can snapshot copies of the ledger be created for analysis purposes?
- Integration with Legacy: Does the ledger and consensus engine exist on the same converged platform as other business logic? Will there be integration connectors that copy and/or transform the ledger for other purposes? Is the ledger accessible to corporate analytic workspaces?
- Multi-chain: how will the ledger interact with the reality of a multi-chain world (e.g. Quorum, Hyperledger, Ethereum, etc). How will the ledger interact with non-chain ledgers (e.g. Corda)? Will there be a common API to access different blockchains?
- Cloud automation: Can routine blockchain tasks be automated? Will cloud providers offer non-repudiation and/or blockchain governance? Can blockchain app developers execute test/dev processes in one cloud provider environment and then push to a (different) cloud production environment?
While this exercise appears complex at a high-level, all of these questions are critical to answer in order to build towards a final system implementation.
In order to bring an element of simplicity to this discussion, two high-level services are required:
- A definition of a "core blockchain" stack.
- A management and orchestration approach that integrates the stack into existing systems and processes.
In future posts, we will drill down into these areas.
Steve
Comments