Customising the Corda Notary and Joining Blockchains

Here at Reneo we are often asked to push the technical extremes of what distributed ledgers can do. Recently a client of ours asked us to demonstrate a capability that other distributed ledgers perform – chain anchoring. Put briefly, this is the publishing of transaction (hashes) from one distributed ledger to another medium (which can be another distributed ledger, or something in the physical world – i.e. on a certain page of a newspaper) such that the chain cannot be repudiated. Now the reasons you might want to do this can differ and I don’t plan to go into them now, but it was an interesting challenge that we decided to take up.

As you may know, most transactions are passed by a part of the network infrastructure known as the “Notary”. Now although this component is viewed as an untouchable technical asset, the reverse is very much true. The notary source code is freely available to be modified and the new notary can be introduced to a network and, with the right configuration, transacting nodes can refer to this without any modification to code. In fact, with the network owner’s permission, a notary can be deployed for any other nodes to use.

We decided to use this capability to enhance the default non-validating Notary to (upon receipt of notarisation requests) publish certain data elements to another distributed ledger / blockchain. Nevertheless, the steps to replicate a similar behaviour with the validating Notary will be similar. We decided that the Ethereum network was probably the most interesting of networks to integrate with.

Modified Custom Corda Notary console output
Transaction view using “ganache”

The project was undertaken by Michal Kit who then, a few days later, presented it internally to the Reneo team before finalising it in order to demonstrate to the client. What I found absolutely amazing was that, with the right experience and knowledge, the solution was (as far as lines of code go), predominantly just a clone of the existing notary with a few very precise hooks integrated, the usual test suite tasks, an interface to actually get “stuff” back from the Ethereum network and then of course the part that speaks Corda and Ethereum.

Now, unfortunately, as mentioned at the beginning, we did this work for a client so we are unable to publish the code just yet (under agreement, we may publish it as open source, but that is an ongoing discussion), but we are happy to talk about it if you’d like to find out more about this project or how we can assist you in your projects.

If you want to get in touch with us regarding work like this for the Corda platform, then please do via any of the means on the contact page. We are also available (individually) on Corda public slack.

Leave a Comment

Your email address will not be published. Required fields are marked *

Reneo DLT