Release 0.81.0

sic Contract Operations for DbLedger

New ContractOperations backend that connects directly to a DbLedger which wraps a database connection. This has similar functionality to RestContractOperations, but does not need a running API server.

Library for building mass CSL migration scripts on Corda

The new maven package com.deondigital:mass-migration includes a library you can use to build interactive mass migration scripts of CSL contracts on Corda. This can be used to migrate all relevant CSL contracts on the ledger in response to new versions of the CSL from which they are instantiated.

For example, let’s say you’ve instantiated 50 contracts from a CSL entrypoint, and you find a bug in your CSL or need to change it in some way. Once you’ve changed your CSL, newly instantiated contracts will behave according to the changes, but the already instantiated contracts will not. To remedy this, you can migrate the existing contracts onto the new CSL declaration. The standard CSL migration flows will let you do this, but only 1 contract at a time. With the new mass-migration library, it is now possible to migrate many contracts with one command.

The contact-migration Cordapp example has been extended with an extensive demonstration of the library.

Renaming of benchmarking utility packages

The package com.deondigital.benchmark that exposed utilities for benchmarking has been renamed to com.deondigital.benchmarkingutils to minimize confusion with other similar package names.

Contract migration must no longer be preceeded by contract termination

Instead of terminating a contract prior to migrating it, there is now a special migration authorization flow that must be run to establish consensus among all the participants of the contract. The special authorization flow is more flexible than termination, e.g. you can re-authorize a contract that has already been authorized.

Swing-based inspectors

The package com.deondigital.debug provides graphical inspectors for values and environments, which can make it easier to understand running CSL code. Use the functions inspectValue, inspectValues, and inspectEnv to get a graphical view of values or environments. It may be necessary to run System.setProperty("java.awt.headless", "false") first. Additionally, inspectFile will load a CSL source file with sic, inspecting the resulting environment.