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.