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


  • Cordite – developed by Bluebank, currently unreleased – An 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
  • Project Ubin – development managed by Accenture – Real-time gross settlement on Corda
  • Ktor RPC – developed by S-Labs – A Ktor webserver that communicates with Corda nodes
  • Cached Distribution List – developed by Tushar Singh Bora – 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
  • Yo! Docker – developed by Ajitha Thayaharan – Shows how to deploy a network of nodes using Docker
  • State Upgrades – developed by Nitesh Solanki – Shows how to upgrade a state without upgrading its contract
  • Delivery vs Payment Asset Transfers – developed by Balaji More – Delivery-vs-payment of an asset coordinated by a clearing house
  • Node.js-GraalVM Server - developed by Nitesh Solanki – A Node.js application that uses the Corda RPC library to issue and fetch IOUs, running on GraalVM
  • Encumbrance Bakery - developed by Tushar Singh Bora – Using encumbrances to prevent cakes from being sold or consumed after their expiry date.
  • Obligation Spring Webserver - developed by Clyde D'Cruz - A Spring webserver for the Obligation CorDapp.

Community Corda Projects


  • Oraclize Corda API – developed by Oraclize – An oracle service that uses authenticity proofs to prove that data fetched from the original data-source is genuine and untampered with
  • Braid – developed by bluebank – A 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 NodeJS
  • NodePad – developed by Fred Mastot and Viktorija Trubaciute – A toolkit for node monitoring and operations. Its bigger objective is to accelerate the adoption of distributed ledger technologies

Sample CorDapps developed by the Corda team


The samples below were created to assist developers in 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