Updated code base to make use of these instead of chooseIdentity(). Also improved the serialisation of fiber checkpoints so that it doesn't store the entire cert parth of this identity.
* Remove node's main identitiy from NodeInfo.
Preparation for getting rid of services + supporting multiple identities
on the node.
NodeInfo keeps multiple identities as a list. For now the first one is treated as a special one.
Introduced function chooseIdentity in CoreTestUtils as a preparation for proper handling of multiple identities in the future.
Remove legalIdentityKey from ServiceHub, add extension function - chooseIdentity on ServiceHub.
Add `me` field on FlowStateMachineImplemetation, flows should know what the calling identity is.
Remove SERVICES_PREFIX in artemis messaging layer.
* Address minor comments.
* Fixes after rebase.
Remove chooseIdentity from ServiceHub
* Rename me to ourIdentity on FlowLogic
* Fixes after rebase
* Address Ross comments, fixes
* Fix after rebase
* Fix services certificate paths
Apply Patrick's patch.
* ContractState's contract type has been moved to TransactionState and is now a string representing the class name of the contract class to allow classloading of arbitrary contracts from custom classloaders.
* Upgraded isolated JAR to new version.
* Move CP_PROGRAM_ID into companion object
* Move COMMODITY_PROGRAM_ID into companion object
* Remove unused convenience function from FinanceTypes before we end up committing to maintaining it indefinitely.
* Move calculateDaysBetween into BusinessCalendar to eliminate FinanceTypesKt
* Rename KeyFactory to CompositeKeyFactory
* Move expandedCompositeKeys into TestDSL as the only place that uses it
* Move NullKeys out of their own package
* Move remaining crypto classes into superpackage
* Move utility classes out of crypto and into utilities package
* Hibernate session was not closed when JDBC connection was closed
* combined few instances of HibernateSession objects into one field inside CordaPersistence
* HibernateConfiguration improved caching of schema factories
Re-enable code now DealState PR is in.
Add plugable JSON serialisation
Add docs for new plugin api.
Move parseCurrency back to core to prevent dependency issues with crash shell parsing.
Use :finance module as a proper CorDapp
Move parseCurrency back onto Amount companion.
Fix smoke tests
Fixup after merge.
* Add LegalProseReference annotation
* Migrate code from autogenerated javascript to TypeScript source
* Add instructions to rebuild the web resources
* Make installWeb more reproducible
* Updated all sample code to use new Vault Query service APIs.
* Fix broken Unit test.
* Added missing transaction boundary.
* Fix broken ScheduledFlow test (caused by assertion on non-ordered collection)
* Remove redundant negative test (as new Vault Query no longer returns iterators).
* Whitespace formatting fixed following PR review from SA.
* Force query to specify a PAGE SIZE equivalent to total states to be exited (RP review comment).
* Use single (and fail fast) instead of first - when only expecting a single result.
* Demonstrate paging and sorting; failfast on single expected result.
* Enhancement: added Sorting by CommonStateAttribute (StateRef txnId and index)
* Fix: incorrect total states count.
* Fixed incorrect total states counting.
* Remove redundant filter (UNCONSUMED).
* Updated tutorial code and associated documentation (building transactions).
* Updated all vaultAndUpdates to vault[Track|Query]By.
* Temporary disable failing Vault Query tests (awaiting pagination PR fix).
* Rebase from master to pick up pagination changes/fix.
* Fixed criteria filter on track.
* Cleanup redundant print output.
* Refactor to extract common function for Vault Query paging and sorting.
* Identified problem in SimmValuation demo failing test caused by query by single participant in participants list (not yet supported in VaultQuery criteria).
* Minor fixes following rebase from master.
* Minor updates following rebase.
* Removed redundant import.
* Fixed type casting error.
* Minor fixes following rebase from master.
* VQ Fix - applied in other PR.
* Removed duplication after rebase and minor fix to failing smoke test.
* Update node configurations to match changes to test constants
* Look up notary via RPC in attachment demo rather than using the static identity to ensure the correct key is resolved
* Use notary service identity instead of legal identity in Bank of Corda demo
* Correct typo in deprecation annotation in CordaRPCOps
* Update from deprecated calls to new equivalents
* Added new corda and cordaRuntime configurations for cordapps to be able to explicitly depend on Corda and exclude corda dependencies from the fatjar
* Added corda integration section to docsite to describe how to integrate with Corda.
* Updated more of the documentation to reflect the new method of specifying core corda dependencies.
* Reorganised document logic to move all build system related documentation to the cordapp build systems page.
* Renamed cordapp build systems doc to match actual purpose.
* Improved the warning for building against a net.corda dependency in a cordapp
* Added a line of dialogue to show further reading for those reading about writing cordapps.
Update to use LedgerTransaction api
Push query output logic onto BaseTransaction and update usages where possible
Migrate a few more uses
Address some PR comments
Address some PR comments
Fixup after rebase
* First stage of changing fields in NodeInfo.
Part of work related to NetworkMapService upgrade. Create slots for
multiple IP addresses and legalIdentities per node.
* NodeInfo stores HostAndPort.
Move information specific to messaging layer away from NodeInfo.
Only HostAndPort addresses are stored. Add peer name - peer handle
mapping to MockNetwork to reflect that change.
* Enforce that the identity service must always have a root CA specified, which all identities have
certificates signed by (or intermediaries of). Also adds a certificate store to the identity service
for help building/verifying certificate paths.
* Add a certificate store for the CA certificate and intermediaries
* Use the certificate factory directly to build paths rather than assembling them via an interim
API call. After reducing the complexity of the utility API, it's replacing two lines of code,
at which point it seems better to make the behaviour clearer rather than having a function
hide what's actually going on.
All references to 'parties' now refer to the inherited 'participants' attribute from ContractState.
Samples: all duplicate references to `parties` now changed to `participants`.
Display party names as common name only in IRS & SIMM samples. This doesn't change the UI where it takes in names (i.e. in IRS), as that requires significantly more infrastructure.
Fixed issue where Corda services installed in unit tests were not being marked as serialise as singleton. Also the driver now automatically picks up the scanning annotations. This required moving the NodeFactory used in smoke tests into a separate module.
* Increase max network map request size so the notary can register
* Suppress oracle service installation errors in non-oracle nodes
* Make demos automatically build capsule jars
Change PartyAndCertificate to an aggregate class instead of a subclass of Party. This reduces the changes compared to M11, as well as avoiding risk of accidental serialization of a PartyAndCertificate (which may be very large) where a Party is expected.
Cleaned up initial nodes known to the identity service, in particular mock nodes now know about themselves; previously full nodes registered themselves but mock nodes did not.
* Fix bug in demobench. Explorer didn't show correctly location of a node.
There was no nearestCity override in config.
* Remove nearestCity from node configuration. Now information about the location is always taken from
node's legal name. If not present - exception on node startup.
* Add X500Name.locationOrNull that soft fails when location is not in X500 name. Address PR comments.
* Remove unused imports.
* Construct standard flows using PartyAndCertificate, and add support for launching
flows that are constructed with PartyAndCertificate or just Party.
* Store PartyAndCertificate in network map service
* Expand identity service to store certificates along with all identities.
This removes the need to do manual registration using the PluginServiceHub. As a result CordaPluginRegistry.servicePlugins is no longer needed. For oracles and services there is a CorDappService annotation.
I've also fixed the InitiatingFlow annotation such that client flows can be customised (sub-typed) without it breaking the flow sessions.
Remove mock identity service and merge it with the in memory identity service. The two services
provide extremely similar functionality, and having two different version for production/test
risks subtle implementation differences. On that note, this patch includes changes to a number
of tests which worked only with mock identity service.
Fixup after rebase
Restore original key property names
Fixup after rebase
Undo extra import that IntelliJ keeps erroneously adding.
Add comments and fix docs for transaction signing.
Fixes after rebase
More fixes after rebase
Address PR requests
Address PR requests
Switch to using AbstractParty as the standard identifier for parties in
states, so that full parties can be used during construction of
transactions and anonymised parties when the transaction is being added
to the ledger.
* Initial commit for CollectSignaturesFlow, some tests and associated documentation via a new "Flow Library" section of the docsite.
* Refactored the TwoPartyDealFlow to use the CollectSignaturesFlow.
* Added the subclassed CollectsigsFlow to the trader demo, whitelisted it and added a flow initiator for the responder.
* Minor edits to progress tracker.
* Amended as per Rick's comments.
* Generalised this flow, so it now works if more than one signatures have been collected, initially.
* Minor edits to the IRS demo so it uses the CollectSignaturesFlow.
* For debugging purposes...
* Adding CollectsigsFlow support to SIMM Demo.
* Removing debug logging.
* Amended top level comment: transactions can only have one notary.
* Added TODOs as checkTransaction logic is absent.
* Addressed Mike's review comments.
* Minor edit to flow-library docs.
* Updated flow based on Mike's review comments.
* Added two usage examples and updated the tests.
* Made changes to accommodate new CollectSignaturesFlow approach.
* Made changes to SIMM demo to accommodate new CollectSignaturesFlow approach.
* Added abstract check proposal method to two party deal flow.
* Added missing TODOs.
* Addressed Sham's comments.
* Rebased to M11.
Move AbstractParty, AnonymousParty and Party into a new net.corda.core.identity package,
as they're not really cryptography tools, and in preparation for further code coming in
for identity.
Optimize imports on many files to clean up the resulting refactor.
This removes the need for the shareParentSessions parameter of FlowLogic.subFlow. It also has the flow's version number so FlowVersion is now no longer needed.
Change the legal name of parties to be an X500 name. This ensures that we aren't converting between
common names and X500 names in various places, eliminating substantial scope for error in the conversion
process. As a result, all node names must now be full X500 names, which has impact on most configurations.
Clean up X500 names in Corda simulation, and ensure they're consistent with the standard test names.
This includes using the locations present in those test names, which requires updates to the node
config test.
This is an intermediary step to introducing X500Names in all Party instances, which adds:
* Party constructor which accepts X500Name and then converts it to string.
* startNode() function which takes in X500Name instead of String
* Numerous legal name fixes to use full distinguished names
* Add information on why state machine was removed from StateMachineManager.
There are two cases: normal end of flow or error.
Return flow result as part of state machine remove data.
Make Change a sealed class with Add and Remove.
fiber.actionOnEnd takes ErrorOr<R> parameter.
* Remove unnecessary fields from StateMachineManager.Change.
Standaridise the identity names of Alice, Bob and Charlie, notary, map service, etc. in order
to ensure consistency across the code base and reduce number of places that have to be changed
to introduce proper X.500 names.
Move Alice, Bob & Charlie identities into the utilities package so they can be used in demos
* Make CompositeKey implement PublicKey
The initial implementation of composite keys as their own distinct class separate from PublicKey
means that the keys cannot be used on standard classes such as Certificate. This work is a beginning
to modifying CompositeKey to being a PublicKey implementation, although significant further work
is required to integrate this properly with the standard Java APIs, especially around verifying
signatures using the new key type.
* First stage of making CompositeKey implement PublicKey interface. Revert to using PublicKey everywhere we expect a key.
* Move algorithm and format into companion object (#432)
Move algorithm and format into companion object so that they can be referenced from other
classes (i.e. the upcoming signature class).
* Add simple invariants to construction of CompositeKey.
Builder emits CompositeKeys in simplified normalised form. Forbid keys with single child node, force ordering on children and forbid duplicates on the same level. It's not full semantical normalisation.
* Make constructor of CompositeKey private, move NodeWeight inside the class.
Add utility function for Kryo deserialization to read list with length constraints.
* CORDA-305: Refactor CordaRPCClient into :client:rpc module
* CORDA-305: Remove the Kotlin test framework from the artifacts.
* CORDA-305: Migrate serialisation whitelist into node-api module.
* CORDA-305: Clean up unused RPC observables.
* CORDA-305: Add :client:rpc module to documentation tasks.
* CORDA-305: Include :finance into :client:rpc for its serialisable classes.
* CORDA-305: Move test classes into the correct directory.
* CORDA-305: Migrate :finance dependency from :client:rpc into DemoBench.
* CORDA-305: Update wording of TODO about handling Observables.
* Non-ssl artemis acceptor for RPC connection. (#271)
* New non-ssl acceptor in artemis server for RPC connection.
* Rename artemisAddress with messagingAddress
Rename artemisAddress with messagingAddress so that the node configuration file properties match
the code variable names.
Rename artemisPort to messagingPort in Gradle configuration to match node configuration naming.
* Add rpcPort configuration option for Gradle
* Update docs to reflect changes to RPC port configuration
* Renumber ports in example CorDapp to match numbering used elsewhere
* Restructure upgrade guide
* added config file checks on corda startup to make the upgrade path a bit smoother.
Add Capsule configuration for the webserver JAR, so that the classes-only `webserver.jar` is published as well
as the full fat `corda-webserver.jar`. This is required for running the tutorial/template from IntelliJ.
* Add webAddress back to NMS as it shifts the port allocation for all subsequent nodes and causes all demos to break.
* Attachment demo: fix node names
* Notary demo: fix certificate paths & ports
* IRS demo: role decider fixed to allocate roles properly. Previously it used to pick current node as the Fixer, causing both nodes to initiate the trade flow, resulting in double spend exceptions..
* Move merkle building extension functions on wire tx to WireTransaction class.
* Add timestamp, notary, transaction type and signers to wire transaction id calculation.
* Change construction of MerkleTree from duplicating last node on a given level to padding leaves' list with zero hash to size of the nearest power of 2 - so we always have a full binary tree.
The problem was that it was possible to construct 2 different transactions with the same ids. Trick worked for txs having number of leaves that were not power of 2.
* Update tear-offs documentation and diagrams to reflect changes in construction of Merkle trees - padding with zero hashes and including all WireTransaction fields in id computation.
* Change in filtering API of WireTransaction for partial Merkle trees calculation.
Instead of many filtering functions over a transaction only one needs to be provided.
Additional change to check and verification of FilteredTransaction.
* IRS demo change. Make filtering function a protected method of RatesFixFlow class.
Comment on situation when capturing too much scope and connected problems with checkpointing.
Change oracle and tear-offs documentation.
The IRS demo uses names of parties to identify them in flows, which introduces problems when a node may not
know who a party is, as well as being a poor choice of key generally. This switches to use the owning key
instead.
Change Party instances to be uniquely identified by the owning key, without taking into account name.
This requires that mock node key generation is reworked so that keys for services and the node itself
are distinct, otherwise the network map service cannot differentiate them.
Signed-off-by: Ross Nicoll <ross.nicoll@r3.com>