R3 Corda is the enterprise distributed ledger platform purpose-built for regulated financial services — used in production by HSBC, Goldman Sachs, BNY Mellon, and hundreds of financial institutions for securities settlement, trade finance, digital asset issuance, and FX netting. Unlike general-purpose blockchains, Corda was designed from the ground up with financial services requirements: transaction privacy (only deal parties see their transactions), legal agreement binding, and integration with existing financial institution IT infrastructure. This developer guide covers the Corda architecture, smart contract model, and production deployment patterns.
Why Corda for Financial Services
Corda Architecture
| Component | Function | Enterprise Notes |
|---|---|---|
| Corda Node | Each participant runs a node — all state, contracts, and flows are managed by the node | Runs on JVM; deploy in your existing enterprise infrastructure |
| CorDapp (Smart Contract) | Kotlin or Java application defining states, contracts, and flows | Compiled to JVM bytecode; versioned and upgradeable without forking |
| Vault | Per-node database of all states owned or relevant to this node | Stored in PostgreSQL or Oracle; queryable with standard SQL |
| Notary | Prevents double-spend — validates transaction uniqueness without seeing transaction content | Critical for production; use clustered notary for high availability |
| Network Map | Directory of all nodes on the network — like DNS for Corda | Self-hosted for private networks; R3 operates for Corda Network |
| Doorman / Identity | Certificate authority for issuing node identities | Each node gets an X.509 certificate; identity is the legal entity |
CorDapp Development Model
- Immutable data objects representing facts on the ledger — a security holding, a loan, an obligation
- Each state has participants — the parties who must sign transactions involving it
- States are consumed and produced by transactions — never mutated
- Smart contract code that verifies the validity of transactions — the rules of the game
- Must be deterministic — same inputs always produce same verification result
- Contract constraints enforce which versions can be used on-ledger
- Business logic that orchestrates multi-party interactions — the workflow engine
- Flows communicate between nodes using the Corda P2P messaging layer
- Checkpointed — survive node restart mid-flow execution
- Java/Kotlin client library for starting flows and querying vault from external applications
- REST API available via Spring Boot wrapper for non-JVM integration
- Connect to your ERP and trading systems via the RPC layer
Production Use Cases
Prerequisites: Java 17 JDK, Gradle, IntelliJ IDEA (strongly recommended). Use the Corda 5 sample CorDapp as starting template: clone from https://github.com/corda/CSDE-cordapp-template-kotlin. Deploy a local test network with MockNetwork for unit testing — Corda's testing framework enables full multi-node simulations without running actual nodes. Build with Gradle; deploy CorDapp as a CPK (Corda Package file) to nodes. Our blockchain development team provides Corda mentoring and pair programming.
Production Corda node: 8 vCPU, 32GB RAM minimum; PostgreSQL 14+ for vault storage. Deploy behind a load balancer for RPC access from your application tier. Run a BFT notary cluster (3–5 nodes) for double-spend prevention in production. Configure TLS for all P2P and RPC connections. Deploy nodes in your existing Kubernetes infrastructure using the official Helm charts. Notary and node keys must be stored in an HSM in production — never in software.
Our blockchain development, software development, and DevOps teams design and deploy production Corda CorDapps for financial institution clients. Book a free advisory session.