corda/docs/source/tutorial-custom-notary.rst
Andrius Dagys 7b10e92819 Fixed AbstractNode to load custom notary services properly (#1720)
* Fixed AbstractNode to load custom notary services properly.
Added a custom notary sample.

* Prevent multiple custom notaries from being loaded

* Throw if more than once custom notary service is loaded
2017-10-13 10:36:25 +01:00

1.7 KiB

Writing a custom notary service (experimental)

Warning

Customising a notary service is still an experimental feature and not recommended for most use-cases. Currently, customising Raft or BFT notaries is not yet fully supported. If you want to write your own Raft notary you will have to implement a custom database connector (or use a separate database for the notary), and use a custom configuration file.

Similarly to writing an oracle service, the first step is to create a service class in your CorDapp and annotate it with @CordaService. The Corda node scans for any class with this annotation and initialises them. The custom notary service class should provide a constructor with two parameters of types AppServiceHub and PublicKey.

../../samples/notary-demo/src/main/kotlin/net/corda/notarydemo/MyCustomNotaryService.kt

The next step is to write a notary service flow. You are free to copy and modify the existing built-in flows such as ValidatingNotaryFlow, NonValidatingNotaryFlow, or implement your own from scratch (following the NotaryFlow.Service template). Below is an example of a custom flow for a validating notary service:

../../samples/notary-demo/src/main/kotlin/net/corda/notarydemo/MyCustomNotaryService.kt

To enable the service, add the following to the node configuration:

notary : {

validating : true # Set to false if your service is non-validating custom : true

}