Samples

A listing of CorDapps, community projects and core code. If you have an open-source CorDapp or project that you would like to feature here, get in touch at devrel@r3.com. Looking for inspiration? Take a look at our list of science projects or see our good first issues.

Community Cordapps and Projects


  • Be-Well – developed by Siddhartha Sengupta – CorDapp that allows clients to purchase wellness services via brokers
  • Braid – developed by Bluebank – High performance reactive RPC library for exposing your flows and services in a secure way, with very little code, and to consume them in multiple languages and runtimes such as Javascript on node.js
  • Cached Distribution List – developed by Tushar Singh Bora – CorDapp that downloads and caches a list of parties on the node at a fixed interval. The node can then easily distribute information to all the nodes in this list
  • Corbeans – developed by Manos Batsis – Corda integration for Spring Boot
  • CordaGen – developed by Janis Olekss – Autogenerates CorDapp structure based on user-defined node roles
  • Cordite – developed by the Cordite Foundation – Open-source CorDapp that provides decentralised economics and governance services. It is founded by three key concepts, the DGL (distributed general ledger), the DAO (decentralised autonomous organisation) and Metering. Cordite is regulatory friendly, enterprise ready and finance grade. To find out more, please reach out on the #cordite channel on slack.corda.net
  • Cordite Network Map Service – developed by the Cordite Foundation – Webserver implementing the Corda doorman and network map protocols
  • Delivery vs Payment Asset Transfers – developed by Balaji More – CorDapp that allows for delivery-vs-payment of an asset coordinated by a clearing house
  • Encumbrance Bakery - developed by Tushar Singh Bora – CorDapp using encumbrances to prevent cakes from being sold or consumed after their expiry date
  • Exchange Rates Oracle – developed by Milen Dobrinov – Oracle for interacting with the Foreign exchange rates API
  • Loan-Finance Application – developed by Shivan Sawant – CorDapp for approving or denying loans based on credit agency ratings
  • FX Trading CorDapp - developed by Dinesh Rivankar - CorDapp for FX trading
  • Insurance Claim CorDapp - developed by Manila Gauns – CorDapp for confidentially settling insurance claims
  • Ktor RPC – developed by S-Labs – Ktor webserver that communicates with Corda nodes
  • node.js GraalVM Server - developed by Nitesh Solanki – Application that imports the Corda RPC library into node.js to issue and fetch IOUs, running on GraalVM
  • NodePad – developed by Fred Mastot and Viktorija Trubaciute – A toolkit for node monitoring and operations
  • Notary Change – developed by Daniel Krajnik – Shows how to use Corda's NotaryChange flow
  • Obligation Spring Webserver - developed by Clyde D'Cruz - Spring webserver for the Obligation CorDapp
  • Oraclize API – developed by Oraclize – Oracle service that uses authenticity proofs to prove that data fetched from the original data-source is genuine and untampered with
  • Project Ubin – development managed by Accenture – CorDapp for real-time gross settlement
  • Property Listing – developed by Parnika Sharma – CorDapp allowing nodes to upload property listings and pull these listings from other nodes
  • Spring WebFlux Webserver - developed by Dan Newton - Spring WebFlux webserver for Corda nodes
  • State Upgrades – developed by Nitesh Solanki – CorDapp showing how to upgrade a state without upgrading its contract
  • Yo! Docker – developed by Ajitha Thayaharan – CorDapp showing how to deploy a network of nodes using Docker

Sample CorDapps developed by R3


The samples below were created to show developers how to implement specific functionality. These samples are all Apache 2.0 licensed, so feel free to use them as the basis for your own CorDapps.


Templates


  • Java - A template for developing Java CorDapps
  • Kotlin - A template for developing Kotlin CorDapps

General


  • Yo! – A simple CorDapp that allows you to send Yo’s! to other Corda nodes
  • IOU – Models IOUs (I Owe yoUs) between Corda nodes (also in Java)
  • Obligations – A more complex version of the IOU CorDapp (also in Java) Handles the transfer and settlement of obligations Retains participant anonymity using confidential identities (i.e. anonymous public keys)
  • Negotiation – shows how multi-party negotiation is handled on the Corda ledger, in the absence of an API for user interaction
  • Letter Of Credit - the CorDapp used by R3 to demo the Corda platform. Watch the video of this CorDapp in action

Observers


  • Crowdfunding – Use the observers feature to allow non-participants to track a crowdfunding campaign

Attachments


  • FTP – Use attachments to drag-and-drop files between Corda nodes
  • Blacklist – Use an attachment to blacklist specific nodes from signing agreements

    • Confidential Identities


    • Whistle Blower – Use confidential identities (i.e. anonymous public keys) to whistle-blow on other nodes anonymously

    Oracles


    • Prime Numbers Oracle - Use an oracle to attest to the prime-ness of integers in transaction
    • Options - Use an oracle to calculate the premium on call and put options

    Scheduled Activities


    • Heartbeat - Use scheduled states to cause your node to emit a heartbeat every second

    Accessing External Data


    • Flow HTTP - Make an HTTP request in a flow to retrieve the Bitcoin readme from a webserver
    • Access Control List - Make an HTTP request in a service to retrieve an access control list from a webserver
    • Flow DB Access - Access the node’s database in flows to store and read cryptocurrency values

    Upgrading Cordapps



    Alternate Node Web Servers


    • Braid/Node.js Webserver - A node web-server using Braid and Node.js
    • Spring Webserver - A node web-server using Spring that: Provides generic REST endpoints for interacting with a node via RPC Can be extended to work with specific CorDapps
    • Yo Cordapp Spring Web Server - Another node web-server using Spring that: Provides REST endpoints for interacting with the Yo! CorDapp via RPC Streams vault updates to the front-end using a web-socket

    RPC Clients


    • Node Info - A client for retrieving information from a running node Useful for checking that a node is running and is accessible from another host via RPC
    • Ping-Pong - A client for pinging other nodes on the network to check connectivity