Release 0.84.0

In deon-value-check, package com.deondigital.runtime has been renamed to com.deondigital.runtime.valuecheck

Rename the relevant imports. For example:

import com.deondigital.runtime.checkValueType

is renamed to:

import com.deondigital.runtime.valuecheck.checkValueType

and similarly for other classes and top-level functions from deon-value-check.

In deon-api-arbitrary, package com.deondigital.api has been renamed to com.deondigital.api.arbitrary

Rename the relevant imports. For example,

import com.deondigital.api.arbitraryString

is renamed to:

import com.deondigital.api.arbitrary.arbitraryString

and similarly for other classes and top-level functions from deon-api-arbitrary.

In deon-language-runtime, package com.deondigital.syntax.reified is renamed to com.deondigital.syntax.reified.converters

Rename the relevant imports. For example,

import com.deondigital.syntax.reified.ContractConvertingReifier

is renamed to:

import com.deondigital.syntax.reified.converters.ContractConvertingReifier

and similarly for the other converter classes from deon-language-runtime.

In deon-serialization, package com.deondigital.test.assertions is renamed to com.deondigital.test.assertions.messagepack

Rename the import of assertCodecIsExhaustive:

import com.deondigital.test.assertions.assertCodecIsExhaustive

to:

import com.deondigital.test.assertions.messagepack.assertCodecIsExhaustive

gradle-sic-plugin output file changed

gradle-sic-plugin uses the CSL sic utility to generate Kotlin code for type safe interaction with instantiated CSL contracts. In addition to this, it also compiles the CSL code so that it can be read by the CSL runtime (and therefore by the CSL CorDapp). The filename of the compiled CSL code has changed from <sicNamespace>.definitions.zip to <sicNamespace>.declaration.cslpkg. This change should be transparent to application code, but in case you do have scripts or other code that refers to this file directly, you will need to update the filename.

sic targets replaced by sub-commands

The CLI for sic has been changed so it now supports two sub-commands: generate and compile.

The sic targets Kotlin and TypeScript are available under the generate sub-command.

The sic targets CoreAST, Signature, Ontology and MetaData have been removed in favour of the compile sub-command which produces a .cslpkg which contains the output of all four of the above mentioned targets. Unless you call sic directly, you should not be affected by this change.

sic JSON/MessagePack output support removed

Since sic now only supports compiling to the cslpkg format, the --msgpack flag has been removed. This flag used to control whether the low-level compilation targets such as CoreAST outputted JSON or MessagePack. Since these targets are removed, the flag no longer makes sense.

ClasspathCslCordaAttachment constructor changed

Previously, ClasspathCslCordaAttachment required you to give a class in the namespace of generated sic code as the constructor argument. Instead, you must now directly give the resource path to the cslpkg file on the classpath. If you use gradle-sic-plugin this path is available as a static property on the generated ContractDetails class, e.g. PingpongModule.cslPkgLocation.

com.deondigital.core.logging has been moved

The package com.deondigital.core.logging has been moved to a separate project. To keep using it, add the following dependency:

implementation group: 'com.deondigital', name: 'slf4j-lazy', version: '1.0.0'

And rename the imports

import com.deondigital.core.logging.debug

to:

import com.deondigital.logging.debug

com.deondigital.benchmarkingutils has been moved

The package com.deondigital.benchmarkingutils has been moved to a separate project. To keep using it, add the following dependency:

implementation group: 'com.deondigital', name: 'benchmarking-utils', version: '1.0.0'

com.deondigital.pretty has been moved

The package com.deondigital.pretty has been moved to a separate project. To keep using it, add the following dependency:

implementation group: 'com.deondigital', name: 'pretty-print', version: '1.0.0'

com.deondigital.api.serialization has been moved

The library for (de)serialization to and from JSON and MsgPack has been moved to a separate project. To keep using it, add the following dependency:

implementation group: 'com.deondigital', name: 'serialization', version: '1.0.0'

And rename the imports

import com.deondigital.api.serialization.*

to:

import com.deondigital.serialization.*

com.deondigital.core.WrappedByteArray has been moved

WrappedByteArray has been moved to the serialization project.

Update your imports

import com.deondigital.core.WrappedByteArray

to:

import com.deondigital.serialization.WrappedByteArray

CSL Corda anonymization behaviour changes

On Corda, it is recommended that the identities of participants in a state are anonymized, such that the state and its backchain can be verified by a third party without revealing the identities of the participants.

Previously, anonymization of CSL contract participants could be toggled per contract using boolean flags to e.g. InstantiateContractAnswer.Authorize(anonymize = true). This is no longer possible, and participant anonymization is the only behaviour. This change has made it possible to streamline the Corda CSL API by abstracting away the anonymization, thereby removing several complicated error paths.

Relatedly, the isConfidential flag has been removed from CordaAgent. This flag used to control whether the CSL Corda layer would de-anonymize an agent’s public key before passing it to the CSL runtime. However, this flag had complex interactions with different anonymization strategies, and complicated the API unneccesarily.

Now, you can no longer control (de)anonymization of individual agent values. Instead, the strategy is simple: All agent values referring to the participants of a contract are converted to their anonymous keys before they are passed to the runtime. When extracting agents from a contract through reports or other means, participants’ agents are always deanonymized. All other agents are not touched by the CSL Corda layer.

As a consequence, several properties and methods related to anonymized agents have been removed. See the changelog for the full list.