Skip to content

Milestone 14.0

Pre-release
Pre-release
Compare
Choose a tag to compare
@Clintonio Clintonio released this 31 Aug 10:27
· 3940 commits to master since this release
  • Changes in NodeInfo:

    • PhysicalLocation was renamed to WorldMapLocation to emphasise that it doesn't need to map to a truly physical
      location of the node server.
    • Slots for multiple IP addresses and legalIdentitiesAndCerts were introduced. Addresses are no longer of type
      SingleMessageRecipient, but of NetworkHostAndPort.
  • ServiceHub.storageService has been removed. attachments and validatedTransactions are now direct members of
    ServiceHub.

  • Mock identity constants used in tests, such as ALICE, BOB, DUMMY_NOTARY, have moved to net.corda.testing
    in the test-utils module.

  • DummyContract, DummyContractV2, DummyLinearContract and DummyState have moved to net.corda.testing.contracts
    in the test-utils modules.

  • In Java, QueryCriteriaUtilsKt has moved to QueryCriteriaUtils. Also and and or are now instance methods
    of QueryCrtieria.

  • random63BitValue() has moved to CryptoUtils

  • 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 into net.corda.core.flows. This is so that all packages
    in the core module begin with net.corda.core.

  • FinalityFlow can now be subclassed, and the broadcastTransaction and lookupParties 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 particular Contract.verify and the Clauses 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 to map down to the ContractState
    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 the CommandData 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 a corda and cordaRuntime configuration to projects which cordapp developers should
      use to exclude core Corda JARs from being built into Cordapp fat JARs.
  • database field in AbstractNode class has changed the type from org.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).
    • 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()