Milestone 14.0
Pre-release-
Changes in
NodeInfo
:PhysicalLocation
was renamed toWorldMapLocation
to emphasise that it doesn't need to map to a truly physical
location of the node server.- Slots for multiple IP addresses and
legalIdentitiesAndCert
s were introduced. Addresses are no longer of type
SingleMessageRecipient
, but ofNetworkHostAndPort
.
-
ServiceHub.storageService
has been removed.attachments
andvalidatedTransactions
are now direct members of
ServiceHub
. -
Mock identity constants used in tests, such as
ALICE
,BOB
,DUMMY_NOTARY
, have moved tonet.corda.testing
in thetest-utils
module. -
DummyContract
,DummyContractV2
,DummyLinearContract
andDummyState
have moved tonet.corda.testing.contracts
in thetest-utils
modules. -
In Java,
QueryCriteriaUtilsKt
has moved toQueryCriteriaUtils
. Alsoand
andor
are now instance methods
ofQueryCrtieria
. -
random63BitValue()
has moved toCryptoUtils
-
Added additional common Sort attributes (see
Sort.CommandStateAttribute
) for use in Vault Query criteria
to include STATE_REF, STATE_REF_TXN_ID, STATE_REF_INDEX -
Moved the core flows previously found in
net.corda.flows
intonet.corda.core.flows
. This is so that all packages
in thecore
module begin withnet.corda.core
. -
FinalityFlow
can now be subclassed, and thebroadcastTransaction
andlookupParties
function can be
overriden in order to handle cases where no single transaction participant is aware of all parties, and therefore
the transaction must be relayed between participants rather than sent from a single node. -
TransactionForContract
has been removed and all usages of this class have been replaced with usage of
LedgerTransaction
. In particularContract.verify
and theClauses
API have been changed and now take a
LedgerTransaction
as passed in parameter. The prinicpal consequence of this is that the types of the input and output
collections on the transaction object have changed, so it may be necessary tomap
down to theContractState
sub-properties in existing code. -
Added various query methods to
LedgerTransaction
to simplify querying of states and commands. In the same vain
Command
is now parameterised on theCommandData
field. -
Kotlin utilities that we deemed useful enough to keep public have been moved out of
net.corda.core.Utils
and into
net.corda.core.utilities.KotlinUtils
. The other utilities have been marked as internal. -
Changes to
Cordformation
/ cordapp building:Cordformation
modifies the JAR task to make cordapps build as semi fat JARs containing all dependencies
except other cordapps and Corda core dependencies.Cordformation
adds acorda
andcordaRuntime
configuration to projects which cordapp developers should
use to exclude core Corda JARs from being built into Cordapp fat JARs.
-
database
field inAbstractNode
class has changed the type fromorg.jetbrains.exposed.sql.Database
to
‘net.corda.node.utilities.CordaPersistence’ - no change is needed for the typical use
(i.e. services.database.transaction { code block } ) however a change is required when Database was explicitly declared -
DigitalSignature.LegallyIdentifiable
, previously used to identify a signer (e.g. in Oracles), has been removed.
One can use the public key to derive the corresponding identity. -
Vault Query improvements and fixes:
-
FIX inconsistent behaviour: Vault Query defaults to UNCONSUMED in all QueryCriteria types
-
FIX serialization error: Vault Query over RPC when using custom attributes using VaultCustomQueryCriteria.
-
Aggregate function support: extended VaultCustomQueryCriteria and associated DSL to enable specification of
Aggregate Functions (sum, max, min, avg, count) with, optional, group by clauses and sorting (on calculated aggregate) -
Pagination simplification
Pagination continues to be optional, but with following changes:- If no PageSpecification provided then a maximum of MAX_PAGE_SIZE (200) results will be returned, otherwise we fail-fast with a
VaultQueryException
to alert the API user to the need to specify a PageSpecification.
Internally, we no longer need to calculate a results count (thus eliminating an expensive SQL query) unless a PageSpecification is supplied (note: that a value of -1 is returned for total_results in this scenario).
Internally, we now use the AggregateFunction capability to perform the count. - Paging now starts from 1 (was previously 0).
- If no PageSpecification provided then a maximum of MAX_PAGE_SIZE (200) results will be returned, otherwise we fail-fast with a
-
Additional Sort criteria: by StateRef (or constituents: txId, index)
-
-
Confidential identities API improvements
- Registering anonymous identities now takes in AnonymousPartyAndPath
- AnonymousParty.toString() now uses toStringShort() to match other toString() functions
- Add verifyAnonymousIdentity() function to verify without storing an identity
- Replace pathForAnonymous() with anonymousFromKey() which matches actual use-cases better
- Add unit test for fetching the anonymous identity from a key
- Update verifyAnonymousIdentity() function signature to match registerAnonymousIdentity()
- Rename AnonymisedIdentity to AnonymousPartyAndPath
- Remove certificate from AnonymousPartyAndPath as it's not actually used.
- Rename registerAnonymousIdentity() to verifyAndRegisterAnonymousIdentity()