CSL Application Integration
In this section, we present an architectural overview of an application that uses CSL to specify contracts and reports and uses ledger technology to store contracts in a secure verifiable manner. We provide ledger adapters to support the integration of centralized and decentralized ledger technology under a unified programming interface. This section aims to provide an understanding of the software components provided by Deon Digital to integrate CSL programs in the application stack.
Architecture in a Nutshell
The following diagram provides an example of the integration of various software components spanning user application code, Deon Digital software stack, generated code, and external components in an application. Note that in the diagram we assume that the integration is being done in an application that is running on the JVM.
In the above architecture diagram, we have the following software components:
User Application Code
Contract and Report Specification in CSL
Application backend in a JVM supported language
Deon Digital Software Components
Code generated in Kotlin from CSL to provide typesafe wrappers for contract and report management
External software component
Distributed ledger employed in the application architecture and supported by Deon Digital ledger adapters.
Application Integration Workflow
In a typical CSL application integration, the development workflow resembles the following:
Decide on the contracts and reports to be modeled in the application and specify them using CSL.
Generate the Kotlin specific wrappers for events, contracts, and report types specified in CSL using the code generator for the backend.
Use the generated language specific wrappers together with ledger adapters suited for the DLT employed in the application architecture for performing contract and report management. Usage of generated wrapper code for contract and report management allows type validation of the CSL integration while building the application.
When the contract and report specifications are updated, steps 2 and 3 in the workflow need to be redone.
If you are interested in the supported ledgers and the ledger adapter details, refer to the ledger integration guide.