By Igor Lobanov, 180Protocol Technology Advisor
As I wrote in our corporate blog post reflecting on a year developing on Corda, it has been an interesting journey. When we set out to develop our own digital assets issuance and administration platform (the IAN) for private fixed income instruments, we had little doubt that R3 Corda was the right technology platform. It made a lot of sense: open core, strong transaction-level privacy, mature underlying technology (JVM), enlightened choice of architecture components (Kotlin, Quasar, AMQP, and more), strong developer community, excellent documentation, and access to the Corda team itself.
Several months in, and whilst our commitment to Corda has not wavered, we learned a great deal about building real-world architectures for decentralized applications. Despite extremely robust product architecture and strong community support, we grappled with a couple of fundamental design questions. Firstly, Corda is not easy to integrate with if you do not use Java all way the through your tech stack, and, secondly, the core features of Corda by themselves offer little help in achieving end-to-end resiliency and availability, and so additional infrastructure components need to be engineered around it.
We built our way out — the original post covers this extensively. We had a suspicion that these problems are commonplace among teams adopting Corda. Everyone ends up in the same boat and is forced to engineer solutions non-core to their use-case. Conversations we had with the Corda product team at R3, as well as with fellow engineering leads in various forums confirmed that it is indeed a common pain point.
We decided to condense the technology solution we used into an open source initiative, which can benefit many other developers of Corda-based applications. Bond180 are proud launch Codaptor as its first open source project, donated to the global Corda community, and available on github from now on.
But what is Codaptor? In essence, it is a way to instantly add Corda to any application stack that helps to improve the availability, reliability, and flexibility of the overall system architecture. Codaptor automatically creates fully-featured REST APIs for any CorDapp running on a Corda node, completely with OpenAPI 3 JSON specification and Swagger UI.
We want teams to get on with building their exciting products with Corda, and not grapple with non-core infrastructure, which is hard work not adding much value to end users by itself.
Some other exciting features that come out of the box with Codaptor:
Zero-configuration deployment option as an embedded CorDapp bundle — great for development and integration testing. See getting started guide for instant take off.
Docker-friendly standalone deployment option configurable via environment variables and compatible with Kubernetes secrets management. Read the architecture overview for possible ways Codaptor can fit into your architecture.
Comprehensive REST API allowing vault queries and synchronous or asynchronous execution of Corda flows. Check out the extensive documentation to learn what is possible.
Decouple your REST API users from the lifecycle of the underlying Corda node in order to improve the availability and reliability of the overall system. Continue serving the requests even while the node is being restarted or even upgraded.
Flexible API security with PAC4J allowing a variery of authorization models such as as API keys, OpenID Connect, SAML 2, or just about anything else — great for integrating managed services like AWS Cognito or Azure AD. Codaptor also comes with support for SSL out of the box. Check out the configuration guide.
Extensible architecture allowing bespoke features to be added as simply as dropping a JAR file into a directory. Use Codaptor as a converged application server for custom logic that needs to sit close to the Corda node API without introducing more components to your architecture. Read about Cordaptor extensions.
At the moment Codaptor, as of released version 0.1.0, is a technology preview, which is made available to the wider community to gather feedback and identify areas for improvement. We are planning to add more features soon, but also welcome suggestions, feature requests, bug reports, and help spreading the word. You may want to subscribe to this publication to stay tuned.