Commit Graph

1244 Commits

Author SHA1 Message Date
Joel Dudley
f646936ab8 Updates TwoPartyTradeFlow to use the CollectSignaturesFlow. 2017-06-01 11:08:39 +01:00
Clinton Alexander
53e8fe23d7 Fix docs build by replacing an expression which crashes Dokka with an older more verbose notation. 2017-05-31 21:05:41 +01:00
Andrzej Cichocki
4bd38d381a Fix tests that check ports are bound/unbound (#756)
* Specifically, DriverTests and WebserverDriverTests
* RPCDriver.startRpcBroker now waits for port to be unbound, as was probably intended
* Explicitly drop network map future while ensuring the error is logged
2017-05-31 17:12:25 +01:00
Katarzyna Streich
39fdb353ad Remove nearestCity from node configuration. (#721)
* 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.
2017-05-31 16:07:13 +01:00
Andrius Dagys
f210370885 Pass ports instead of hostAndPorts to the message broker. Pass an address for the NodeMessagingClient to advertise to the network map service. 2017-05-31 15:41:40 +01:00
Ross Nicoll
34eb5a3b70 Store certificate and path with well known identity (#726)
* 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.
2017-05-31 14:45:58 +01:00
Ross Nicoll
08c91bd611 Add certificate to node identity (#769)
Add certificate and path to node identity via the `NodeInfo` class.
2017-05-31 11:52:50 +01:00
Ross Nicoll
f148765c57 Add RPC registration diagnostics
Add diagnostic information if attempting to use an RPC interface with duplicate
method names, rather than throwing a collection error.
2017-05-31 11:42:45 +01:00
Shams Asari
329e5ff17b Introducing InitiatedBy annotation to be used on initiated flows to simplify flow registration.
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.
2017-05-31 10:50:16 +01:00
Ross Nicoll
0e1e4042dc Add PartyAndCertificate class
Add PartyAndCertificate class for pairing proof of a party's identity with the party.
2017-05-31 09:45:40 +01:00
Ross Nicoll
c003ec0042 Replace X509Certificate with X509CertificateHolder
Replace X509Certificate with X509CertificateHolder for consistency in implementation of how X.509 certificates
are managed. Using the Java standard class entails the actual implementing class being one of several options
depending how a certificate is built, which makes serialization/deserialization with Kryo inconsistent as some
of these forms cannot be directly built from outside restricted classes.
2017-05-30 17:05:43 +01:00
Chris Rankin
bb0cc85295 Allow RPC for internal classes with special serialisers. (#751)
Also ensure that HashCheckingStream validates the hash afterwards.
2017-05-26 15:28:22 +01:00
Ross Nicoll
a8d4dccea4 Infrastructure for confidential identities
* De-anonymise parties in AbstractStateReplacementFlow flows
* Convert transaction key negotiation to a subflow instead of utility functions
* Add serialization support for CertPath
* Restructure cash flows so that a counterparty flow can be added later
2017-05-26 10:00:57 +01:00
Andrzej Cichocki
851cccbf7e Don't persist loaded keyPair to the keystore when owningKey is composite (#744) 2017-05-25 17:31:14 +01:00
Konstantinos Chalkias
9f2b44f8f7 Rename Timestamp to TimeWindow (#706)
Rename Timestamp to TimeWindow + refactoring
2017-05-25 13:18:49 +01:00
Andrzej Cichocki
ca36b4676d Unduplicate certificatesDirectory (#740) 2017-05-25 10:30:28 +01:00
Patrick Kuo
246de55433 Create client CA certificate with X509 name constraint (#731)
* The node will be issued a CA certificate with name constraint which will allow the node to create keys with a valid certificate chain.
2017-05-24 16:13:37 +01:00
Andrzej Cichocki
bbe4c170c2 BFT notary demo (#725)
* Rename raft-notary-demo project to notary-demo
* Refactor serialisation filtering to allow BFT SMaRt to work, it no longer relies on the jdk.serialFilter system property
* In NodeBasedTest remove whitespace in node directory names for consistency with cordform and driver
2017-05-24 12:25:06 +01:00
Ross Nicoll
36a091dd6a Add support for X509Certificate and CertPath serialization 2017-05-23 15:42:11 +01:00
Konstantinos Chalkias
53276c1f06 faster key encoding/decoding and generic converters between key implementations 2017-05-22 11:14:05 +01:00
Mike Hearn
207d3b0b8f Vault: any state that has us as a participant is relevant. 2017-05-19 16:45:22 +02:00
Mike Hearn
8dde7757f1 Minor: downgrade another spammy error to warning. 2017-05-19 16:45:22 +02:00
Mike Hearn
c79f369c83 Minor: degrade a log.error to a log.warn as errors get written to the console. 2017-05-19 16:45:22 +02:00
Mike Hearn
a5be12a81b Minor: print org name at startup instead of full X.500 name. 2017-05-19 16:45:22 +02:00
Ross Nicoll
794ce03958 Remove mock identity service
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.
2017-05-19 11:22:47 +01:00
Matthew Nesbit
05a97b11f3 First cut at removing PrivateKey leakage from KeyManagementService
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
2017-05-18 17:34:04 +01:00
Andrzej Cichocki
c8d71a96f5 One demo definition for both IntelliJ and gradle (#697)
* Raft notary demo now defined in one place that both IntelliJ/driver and gradle/runnodes can run
* New module cordform-common for code common to cordformation and corda
* Add single notary demo
2017-05-18 15:58:35 +01:00
Mike Hearn
cca30ade1e Fix issue with automatic shutdown if the app is paused for longer than 30 seconds. This can happen on Mac laptops that put the node to sleep to save energy. 2017-05-17 09:45:37 +02:00
Chris Rankin
5cf304e8c4 Disable the DemoBench tab if the node exits abnormally. (#692)
* Log a message when the CRaSH shell exits.
* Disable the DemoBench tab if the node exits abnormally.
2017-05-17 00:19:48 +01:00
Rick Parker
68f0e5d683 Fix JPA annotations in test so that columns are correctly named. (#694) 2017-05-16 14:19:19 +01:00
Katarzyna Streich
81501150aa Add Cash flows to default RPC flow list, so they can be invoked by shell commands. (#690)
Add Cash flows to default RPC flow list, so they can be invoked by shell commands.
It should be removed once we separate cash flows into cordapp.
2017-05-16 13:29:57 +01:00
Ross Nicoll
c13a99a2f9 Replaces keys and parties in states with AbstractParty
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.
2017-05-16 12:07:14 +01:00
Andrzej Cichocki
d3bb040355 Refactoring related to BFT notary demo (#680)
* Fix: Add missing @StartableByRPC to fix the Raft notary demo
* Make loadConfig take a Config object, for cordformation Node
* Unduplicate User.toMap
* Unduplicate WHITESPACE regex, choose possessive form
* Use slash to make a Path
* Remove Companion where redundant
* Remove unused code
2017-05-16 11:30:50 +01:00
Andras Slemmer
f445590cff Address #665, add more leak tests 2017-05-15 15:20:00 +01:00
Andras Slemmer
b192a86a30 Address comments #665 2017-05-15 13:18:45 +01:00
Andras Slemmer
7c3a566197 RPC: call close() on startup failure, add thread leak tests 2017-05-15 13:18:45 +01:00
Andrius Dagys
885f951dc3 Node IP auto-detection (#666)
* If the p2pAddress provided by the configuration is not public, the node tries to discover the public IP:
- First by checking the network interfaces
- If not found, sends a request to the network map service

* Enable initial connection retry

* Improve error handling

* Update docs
2017-05-12 14:09:02 +01:00
Andrzej Cichocki
e981632184 RAFT notary demo refactoring (#629)
Specifically, make the IDE/driver and gradle/NodeRunner methods of launching the demo behave more similarly, with a view to configuring them the same way.
* Add option to driver to nominate a node as network map, so that the driver-based demo doesn't run an additional node
* Change gradle ports to match those chosen by driver
2017-05-12 11:33:26 +01:00
Shams Asari
47c6b9c135 Making use of latest FastClasspathScanner version and cleanup of CollectSignaturesFlow.kt 2017-05-12 10:33:43 +01:00
Andrzej Cichocki
1df29ab06f Make webserver reconnect to rebooted node. (#662) 2017-05-12 10:27:27 +01:00
Shams Asari
8cb7c5eab1 Fix node crash when the plugins dir is empty 2017-05-11 21:34:31 +01:00
Ross Nicoll
edfc4dd7d9 Add certificate path storage to identity service
Add functionality for generating certificate paths from identity
certificates to transaction certificates, validating, storing and
retrieving those certificate paths.
2017-05-11 16:55:23 +01:00
Patrick Kuo
af7ba082a4 Store identity key to keystore with self sign cert (#645)
* Support signing and storing EdDSA key and certificate in java keystore.
2017-05-11 16:53:44 +01:00
Andras Slemmer
1ecce79913 Merge pull request #669 from corda/aslemmer-quasar-hook
Add quasar-hook agent for inspecting quasar instrumentation
2017-05-11 15:34:46 +01:00
Shams Asari
48f58b6dbc Introducing StartableByRPC and SchedulableFlow annotations, needed by flows started via RPC and schedulable flows respectively.
CordaPluginRegistry.requiredFlows is no longer needed as a result.
2017-05-11 14:55:40 +01:00
Ross Nicoll
e4a0bc6e11 Move party classes into identity package
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.
2017-05-11 11:25:59 +01:00
Andras Slemmer
4cd1f1677f Add quasar-hook agent for inspecting quasar instrumentation 2017-05-10 19:11:34 +01:00
Matthew Nesbit
8aa341dc7b Merge pull request #620 from corda/mnesbit-audit-interface
Create header files for discussion of possible flow audit api.
2017-05-10 16:42:49 +01:00
Matthew Nesbit
540fd746bb Create header files for discussion of possible flow audit api.
Fix compile error

Address PR comments

Change from a general interface to a restricted set of audit event types.

Fixup after rebase
2017-05-10 14:49:11 +01:00
Shams Asari
e75732af91 Making sure non-serialisable objects in FlowException do not interfere with the flow session (#651)
Also TransactionVerificationException no longer has reference to non-serialisable LedgerTransaction
2017-05-10 11:07:28 +01:00
Andras Slemmer
f4354d25dd Merge pull request #644 from corda/aslemmer-fix-issue-55
Fix issue #55
2017-05-10 10:53:11 +01:00
Chris Rankin
d3075928b2 Move FlowHandle implementations back into core so that RPC clients can use them. (#653) 2017-05-09 18:25:43 +01:00
Chris Rankin
bb0ac3253d Move FlowSessionException into core so that it can be serialised. (#654) 2017-05-09 18:09:34 +01:00
Shams Asari
60b1f9b0b2 Merge pull request #639 from corda/shams-initiating-flow-annotation
Introducing InitiatingFlow annotation which has to be annotated by in…
2017-05-09 12:24:33 +01:00
Mike Hearn
670f1256e9 Address review comments from Richard 2017-05-09 11:59:51 +02:00
Andras Slemmer
f153e9a347 #55, #644 Address comments 2017-05-09 10:38:50 +01:00
Ross Nicoll
546d96934a Expand X509Utilities
Mark several functions in X509Utilities as @JvmStatic so they're readily accessible from Java.

Add functions for modifying common name of an X.500 name, either direct replacement or adding a postfix.
2017-05-09 10:27:01 +01:00
Shams Asari
221bb81f84 Introducing InitiatingFlow annotation which has to be annotated by initiating flows.
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.
2017-05-08 20:19:45 +01:00
Patrick Kuo
1f4535bc2e Support signing and storing EdDSA key and certificate in java keystore. (#601) 2017-05-08 17:38:59 +01:00
Andras Slemmer
5db4e4723d Fix issue #55 2017-05-08 15:33:45 +01:00
Matthew Nesbit
c3557e0a68 Merge pull request #640 from corda/mnesbit-flowlogicfactory-internal
Move the implementation of the FlowLogicRefFactory internal
2017-05-08 15:24:41 +01:00
Mike Hearn
8016bc5fcd Detect broken macOS localhost resolution and tell the user how to fix it. 2017-05-08 14:16:20 +02:00
Matthew Nesbit
bfa7d50d37 Move the implementation of the FlowLogicRefFactory internal to the node as it is an implementation detail, not an API. 2017-05-08 11:32:32 +01:00
Andras Slemmer
489661a289 Merge pull request #592 from corda/aslemmer-rpc-manual-demux
RPC muxing, multithreading, RPC driver, performance tests
2017-05-08 11:18:21 +01:00
Chris Rankin
0ed009dfa0 Set java.io.tmpdir to Gradle's build directory for unit and integration tests. (#638) 2017-05-05 17:30:51 +01:00
Andras Slemmer
3a2afcdbb2 #592: Address more comments 2017-05-05 17:10:52 +01:00
Andras Slemmer
652cbb0d9f #592: RPCServer lifecycle 2017-05-05 17:10:52 +01:00
Andras Slemmer
de88ad4f40 RPC muxing, multithreading, RPC driver, performance tests 2017-05-05 17:10:52 +01:00
Ross Nicoll
25dbac0f07 Change party to hold an X.500 name
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.
2017-05-05 16:13:29 +01:00
Ross Nicoll
b64e7f51f6 Enforce X.500 distinguished names in configuration 2017-05-05 16:13:29 +01:00
josecoll
8c3b9ac589 Vault Query API design (#522)
* Added queryBy(QueryCriteria) Vault API and Junit tests.

* Minor fix following rebase.

* Spit out Vault Query tests into separate source file.

* WIP

* Enable composition of QueryCriteria specifications.
Additional JUnit test cases to validate API.

* Added Deprecating annotations.
Added QueryCriteria for set of contractStateTypes

* Minor tweaks and additional JUnit test cases (chain of linear id)

* Added Java Junit tests and QueryCriteria builder support.

* Added API documentation (including coding snippets and examples).

* Added @JvmOverloads to QueryCriteria classes for easy of use from Java.

* Refactored QueryCriteria API to use composition via sealed data classes.

* Enable infix notation.

* Fixed typo.

* Clarified future work to enforce DB level permissioning.

* Moved PageSpec and Order from QueryCriteria to become parameters of Query itself.

* Moved PageSpec and Order from QueryCriteria to become parameters of Query itself.

* TokenType now specified as set of <Class> (was non extensible enum).

* Exposed new Vault Query API functions via RPC.

* Fixed compiler error in java test.

* Addressed a couple of minor PR review scomments from MH.

* Major updates following PR discussion and recommendations.

* All pagination and sorting arguments are optional (and constructed with sensible defaults).
Added Java helper functions for queryBy and trackBy interfaces.
Added Java trackBy unit tests.
Miscellaneous cleanup.

* Added Generic Index schema mapping and query support.

* Query criteria referencing Party now references a String (until Identity framework built out).
Added participants attribute to general query criteria.

* Fleshed our IndexCriteria including PR recommendation to define column aliases for index mappings.

* Removed all directly exposed API dependencies on requery.

* Updated documentation.

* Provide sensible defaults for all Query arguments.
Add RPC Java helpers and increase range of Vault Service helpers.

* Further improvements (upgrading notes) and updates to documentation.

* RST documentation updates.

* Updates to address RP latest set of review comments.

* Updates to address MH latest set of review comments.

* Updated to highlight use of VaultIndexQueryCriteria to directly reference a JPA-annotated entity (versus the indirect, explicitly mapped attribute to GenericIndexSchema approach)

* Aesthetic updates requested by MH

* Reverted Indexing approach: removed all references to VaultIndexedQueryCriteria and GenericVaultIndexSchemaV1 scheme.

* Final clean-up and minor updates prior to merge.

* Fixed compiler warnings (except deprecation warnings)

* Reverted all changes to Vault Schemas (except simple illustrative VaultLinearState used in VaultQueryTests)

* Reverted all changes to Vault Schemas (except simple illustrative VaultLinearState used in VaultQueryTests)

* Commented out @Deprecated annotations (as a hedge against us releasing M12 with the work half-done)

* Renamed RPC JavaHelper functions as RPCDispatcher does not allow more than one method with same name.
2017-05-05 15:14:43 +01:00
Shams Asari
de83866ebe Removed createHandle from the FlowStateMachine interface as it doesn't need to be publicly exposed 2017-05-05 12:21:34 +01:00
Andrius Dagys
9a0653128c Add support for re-sending session messages. This is useful when talking to a distributed service, e.g. notary – if one of the nodes go down in the middle of a session, the session will be re-established with a different node (round-robin order). 2017-05-05 10:08:53 +01:00
Konstantinos Chalkias
d8fa75654f Support for multi-sig schemes. ECC (K1/R1) and EdDSA are fully supported. (#599)
Support for multi-sig scheme. ECC (K1/R1) and EdDSA are fully supported.
2017-05-04 18:19:00 +01:00
Matthew Nesbit
fe7d893de2 Merge pull request #627 from corda/mnesbit-servicehub-cleanup2
Remove scheduler service from ServiceHub
2017-05-04 14:34:41 +01:00
Matthew Nesbit
b3b4457b4e Remove scheduler service from ServiceHub 2017-05-04 10:00:49 +01:00
Shams Asari
eba753ddfe Moved the initiated-side of core flows in net.corda.flows to net.corda.node.services. They are not meant to be visible to end-users. 2017-05-03 17:42:51 +01:00
Chris Rankin
e22ad19fcd Use assert methods from test framework. Don't use Java assert. (#625) 2017-05-03 17:32:30 +01:00
Ross Nicoll
a1fd215863 Extract common name from legal name to determine path in Driver (#613)
Rewrote node name to extract common name to use as the node path for samples, to work around characters being incorrectly treated as separators.
2017-05-03 16:58:48 +01:00
Matthew Nesbit
7e8aa1d706 Remove Messaging service from service hub
Remove mention of MessagingService as being on ServiceHub.
2017-05-03 15:19:27 +01:00
Ross Nicoll
d65d63e4f6 Interim patch introducing X500Names
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
2017-05-03 10:46:03 +01:00
Shams Asari
cfe5786d2d Introducing versioning of flows using the FlowVersion annotation.
Core flows, which are baked into the platform, are also versioned using the platform version of the node. Several core flows, such as the data vending ones, which were provided via plugins are now instead baked into the node.
2017-05-02 15:12:07 +01:00
josecoll
3d401d1dcb Apply @Suspendable on all flow methods that call vault generateSpend (#612) 2017-05-02 09:38:44 +01:00
Chris Rankin
3208daf507 Customise the error message according to why Corda cannot boot. (#610)
* Customise the error message according to why Corda cannot boot.
* Reset system property programmatically for the sake of developers.
2017-04-28 16:01:19 +01:00
Andrzej Cichocki
f2d138cdab Replace code only used in 1 test with existing general mechanism. (#600) 2017-04-28 15:50:24 +01:00
Andrzej Cichocki
cb3522588f In checkpoints, serialize hash of attachment instead of its data (#543) 2017-04-28 13:50:47 +01:00
Chris Rankin
9f3fae1914 Set the "no deserialisation" property in the Capsule and Driver. (#603) 2017-04-28 10:14:15 +01:00
Andrzej Cichocki
b3894fa38a Fix race in IntegrationTestingTutorial. (#594) 2017-04-27 09:15:12 +01:00
Shams Asari
913487cb32 Deprecated FlowLogic.getCounterpartyMarker as it's complicated and probably not used (replacement is to use sub-flows).
Also made flow registration require the client flow class rather than any old class.
2017-04-25 18:53:33 +01:00
Mike Hearn
922a760a09 Shell: more aggressive catch/rethrow of errors during command line parse. Avoids stack traces being dumped to the console when an unknown party name is provided. 2017-04-25 19:43:26 +02:00
Mike Hearn
aed9495b37 Shell: add 'start' as an alias for 'flow start'. 2017-04-25 19:43:26 +02:00
Andrius Dagys
4e86443cac Fix Raft notary demo post name refactoring 2017-04-25 17:11:21 +01:00
Ross Nicoll
c8af48ebd9 Clean up BFTNotaryServiceTests
BFTNotaryServiceTests generates a master node independently of the cluster nodes, so it can put it
at the end of the list of nodes. The calling function however treats the first node in the list as
the master, not the last node. This simplifies the code while maintaining the same behaviour.
2017-04-25 15:12:37 +01:00
Katarzyna Streich
f92949d3b5 Add information on why state machine was removed from StateMachineManager (#570)
* 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.
2017-04-25 14:34:45 +01:00
Katarzyna Streich
c1b7b1cb75 Add information on who started flow on a node. (#549)
* Add information on who started flow on a node with name where possible.
Add sealed class holding information on different ways of starting a flow: RPC, peer, shell, scheduled.

* Remove invokeFlowAsync from ServiceHub, move it to ServiceHubInternal.
We shouldn't be able to start new state machines from inside flows.
2017-04-24 17:05:51 +01:00
Shams Asari
b5e022f350 Introducing Platform Version and its use by the NMS for min version requirements for the network 2017-04-24 15:31:10 +01:00
Ross Nicoll
684d1089f0 Introduce full legal names for test parties
Use full names for test parties, ahead of complete X.500 name support.
2017-04-24 15:18:21 +01:00
Ross Nicoll
6c6ed3a758 Move transaction generation to OnLedgerAsset
Move functions for generating transactions into OnLedgerAsset from various locations in
the code (VaultService, AbstractConserveAmount, etc.) to unify the code paths and reduce
duplication.
2017-04-24 13:29:52 +01:00
Andrzej Cichocki
160d13b6f7 Prohibit Java deserialisation in the Corda process (#566) 2017-04-21 16:26:35 +01:00
josecoll
2b1a71955c Always remove any soft locks associated with a completed flow. (#561)
Fix issue whereby soft locks associated with a flow were not being released because they were not initially registered properly.
2017-04-21 13:38:03 +01:00
Andrius Dagys
a2de90a6da Test if address is reachable before choosing 2017-04-20 19:36:41 +02:00
Andrius Dagys
a01c466beb Ignore utunX interfaces when detecting public IP 2017-04-20 19:36:41 +02:00
Chris Rankin
d2d7cbc9ec CORDA-299: Remove progress Observable from FlowHandle, unless explicitly requested. (#513)
* Remove progress Observable from FlowHandle, unless explicitly requested.
* Refactor FlowHandle creation into FlowStateMachine.
* Prevent server-side queue subscription for dummy Observable.
* Refactor so that RPC client does not receive any unused progress Observables. This is the simplest way of ensuring we have no dangling "hot" Observables when the RPC client closes.
* Test flow has correct handle.
* Resolve some compiler warnings.
* Document how starting a flow does not involve progress tracking by default.
* Update changelog and release notes for RPC API.
* Rename new RPC API to startTrackedFlow().
* Remove optimisation because of its affect on the client-side.
* Update documentation.
2017-04-19 20:11:51 +01:00
Andras Slemmer
0d90082482 Merge pull request #555 from corda/aslemmer-fix-h2-and-copycat-server-leak
Shutdown copycat server and h2 database on Node shutdown
2017-04-19 14:15:33 +01:00
Andras Slemmer
201c558245 Shutdown copycat server and h2 database on Node shutdown 2017-04-19 12:24:38 +01:00
Shams Asari
37a94237c8 Moved tests in net.corda.node.services to correct packages 2017-04-19 12:11:59 +01:00
Shams Asari
8e0a0ba8fb Provide useful error message if db iterator is left on stack during checkpointing
AutoCloseables in general are also forbidden as restoring them across node restarts is not supported.
2017-04-19 09:39:41 +01:00
Ross Nicoll
6d48667d91 Add infrastructure for X.500 name support (#534)
This introduces new functions for fetching parties by their X.500 name, Kryo serialization support for X500Name objects, an X500Name generator and some X509 utility support in preparation for full X.500 name support.
2017-04-13 15:32:34 +01:00
Ross Nicoll
1a88ca4bee Add composite signature engine (#446)
Add CompositeSignature and CompositeSignatureWithKeys classes as part of preliminary work to make CompositeKey signature validation compatible with java.security classes, so that these keys and signatures can be used readily in X.509 certificates.
2017-04-13 13:25:12 +01:00
Andrzej Cichocki
88b5e32ab2 Convert databaseTransaction to extension function on Database. (#537) 2017-04-12 17:15:29 +01:00
Mike Hearn
ac337240a6 Minor: more cleanups 2017-04-12 14:42:30 +02:00
Mike Hearn
bea799c60d Minor: node: fix inspector warnings and delete dead code. 2017-04-12 14:42:30 +02:00
Mike Hearn
1a86ac481f Minor: core: fix static analysis warnings.
One actual bug was found this way, albeit a harmless one.
2017-04-12 14:42:29 +02:00
Ross Nicoll
d35bd74596 Standardise identities used in tests, demos, etc.
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
2017-04-12 11:40:48 +01:00
kasiastreich
36d5d0d7b2 Refactor of CompositeKeys to implement PublicKey interface. (#433)
* 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.
2017-04-12 11:13:20 +01:00
Mike Hearn
0c0c5521c0 Minor: address more formatting issues spotted by Shams 2017-04-11 15:53:05 +02:00
Mike Hearn
c097229935 Minor: run code cleanup inspections 2017-04-11 15:53:05 +02:00
Mike Hearn
d6af727751 Minor: auto-format of module: node 2017-04-11 15:53:05 +02:00
Clinton
35fa9d2e59 Version number parser can now handle patch versions. (#516) 2017-04-11 12:08:42 +01:00
Rick Parker
d31a6fae85 Fix up HibernateObserver to allow cascading persistence after bug report (#524) 2017-04-10 11:33:03 +01:00
Shams Asari
c17fe29a62 Converted FullNodeConfiguration into a data class and added ability to parse Configs into data classes 2017-04-07 17:54:03 +01:00
Konstantinos Chalkias
f7dd2733f2 Kryo register FileInputStream and addDefaultSerializer for InputStream (#471)
HashCheckingStream CordaSerializable and FileInputStream Kryo register
2017-04-06 11:25:49 +01:00
Ross Nicoll
48b121d145 Add Cash*Flow tests
Add tests for CashIssueFlow, CashPaymentFlow and CashExitFlow. While these were mostly covered by other tests
already, CashExistFlow was not, and any bugs would be harder to identify because they are mixed in with other
functionality (i.e. vault tests)
2017-04-04 13:44:10 +01:00
Shams Asari
848988bf1c Merge pull request #487 from corda/shams-sealed-data-classes
Converted sealed data types to be data classes
2017-04-04 13:04:38 +01:00
Clinton
09e7d89e4e Merge pull request #500 from corda/clint-driverdebugportfix
Readded the debug port to the driver
2017-04-04 11:57:27 +01:00
Shams Asari
faef877a8d Converted sealed data types to be data classes 2017-04-04 11:37:56 +01:00
Clinton Alexander
6768a83232 Readded the debug port to the driver and added a log entry for the debug port. 2017-04-04 10:28:18 +01:00
Konstantinos Chalkias
dbd82705aa Artemis - allow attachments to a maximum of 10MiB including any headers. (#452)
Allow attachments to a maximum of 10MiB including any headers.
2017-04-03 18:42:21 +01:00
josecoll
413e39903d Fixed bug whereby Cash Exit was not taking into account the issuer reference (#492)
* Fixed bug whereby Cash Exit was not taking into account the issuer reference.
Added additional JUnit tests for coin selection by issuer.
Added some trace logging in AbstractConserveAmount.

* PR review: added additional state with 3rd issuer reference in test.
2017-04-03 17:51:56 +01:00
Shams Asari
e0c548d4fa Cleaned up code causing build warnings 2017-04-03 13:52:51 +01:00
Ross Nicoll
30dd29752c Clarify exceptions thrown from loading a key store
Clarify exceptions thrown from loading a key store as a general cleanup. Also tightens the
exceptions caught when loading key stores from AbstractNode, so in case of an unexpected error
we don't silently drop the exception.
2017-04-03 13:41:40 +01:00
Andrius Dagys
846d9caa09 Add non-validating Raft notary 2017-03-31 11:58:53 +01:00
josecoll
73c0fdc118 CashExitFlow now uses coin selection with soft locking. (#481) 2017-03-31 11:47:59 +01:00
Chris Rankin
f15a22d828 Replace kotlinx-support-jdk8 with kotlin-stdlib-jre8. (#463)
* Replace kotlinx-support-jdk8 with kotlin-stdlib-jre8.
* Add kotlinVersion to constants.properties.

* Remove unused variable.
2017-03-30 16:27:01 +01:00
Mike Hearn
577b2c2c22 CORDA-319: Shell: use ExternalResolver to load our commands
This eliminates JIT java compilation and the consequent need for
tools.jar (which doesn't get shipped in DemoBench). It also makes
development more pleasant by avoiding weird IDE integration issues
that came from having java-in-resources.
2017-03-30 14:58:59 +02:00
Qian Hong
03deffa955 MQSecurityTest: Make sure no actual message is received. 2017-03-30 14:01:29 +02:00
Patrick Kuo
78a0024e00 Fix various deprecated warnings
* Changed deprecated kotlin.reflect.primaryConstructor to kotlin.reflect.full.primaryConstructor
* Changed deprecated kotlin.reflect.memberProperties to kotlin.reflect.full.memberProperties
* Changed deprecated kotlin.reflect.declaredMemberProperties to kotlin.reflect.full.declaredMemberProperties
* Changed deprecated AllComposition to AllOf
* Changed deprecated AnyComposition to AnyOf
* Changed deprecated kotlin.reflect.KotlinReflectionInternalError to kotlin.reflect.jvm.internal.KotlinReflectionInternalError
* Changed deprecated HostAndPort.hostText to HostAndPort.host
* Removed duplicated method net.corda.core.node.recordTransactions
2017-03-30 10:00:46 +01:00
Patrick Kuo
9a7d0a0fb5 Replace unused variables with _ after kotlin 1.1.1 upgrade (#456)
* Replace unused variables with _ after kotlin 1.1.1 upgrade
2017-03-29 13:54:40 +01:00
josecoll
7eada1408e Reduce warning and info messages in node log files (Artemis) (#449)
* Reduce warning and info messages in node log files (Artemis)
Add an additional lof message for conflicting states identified by the Notary.

* Upgraded severity of user login message from trace to debug.

* Suppress Artemis log4j WARNING's for core.server.checkDeadLetterAddressAndExpiryAddress
2017-03-29 11:40:19 +01:00
josecoll
3497e42f7c Upgrade to Requery 1.2.1 with Composite Key support (#443)
* Test SELECT WHERE IN composite key using requery 1.2.0

Upgraded Vault Service code to use Requery 1.2.0 SELECT .. WHERE IN

Updated generated schema code with Requery 1.2.0

Upgrade to Requery 1.2.1

Upgrade to Requery 1.2.1 - converted to use update DSL with composite key
Removed redundant JDBC SQL test cases.

Minor updates following PR review comments from RP.

* Streamline companion object initialisation.
2017-03-29 10:51:02 +01:00
josecoll
bafedc21e2 Display Corda node legal name in JVisualVM Console for MockNode testing. (#444)
* Display Corda node legal name in JVisualVM Console for MockNode testing.

* Removed dash in displayed corda node name.

* Reinstated the dash in displayed corda node name (as JVisualVM does not parse the space correctly)
2017-03-29 09:22:01 +01:00
Patrick Kuo
6ca0dffa6c use sshdPortAllocation for sshdAddress instead of portAllocation to fix broken demos due to port shift. 2017-03-29 10:15:14 +02:00
Matthew Nesbit
b75913c24a Merge pull request #451 from corda/mnesbit-fix-flaky-tests
Fixes some charset encoding and timing tests problems on windows
2017-03-28 18:21:29 +01:00
Matthew Nesbit
8f1d58a508 Fix unit tests causing problems on windows 2017-03-28 16:39:29 +01:00
Clinton Alexander
252195672b Corrected driver documentation. 2017-03-28 16:18:33 +01:00
Clinton Alexander
48832d44fa Added verifier type to JavaDoc for startNode 2017-03-28 12:27:34 +01:00
exfalso
81dcde99bf #340: Factor out jvm process start into utility function 2017-03-27 17:42:51 +01:00
Andras Slemmer
48952dfc02 Add node-api, split minimal node functionality, OutOfProcessTransactionVerifierService 2017-03-27 17:42:51 +01:00
josecoll
0280299104 Soft locking implementation using database coin selection
Fix broken IssuerFlowTest

Fix IssuerFlowTests after rebase.

Resolve conflicts after rebase.

Soft locking converted to use persistent store.
Added additional optional 'includeLockStates' parameter in VaultService states API call.
Added Vault softLocked states query API call.

Fixed commercial paper failing test.
Improved exception handling on soft locking UPDATE statement.

Using SELECT FOR UPDATE to ensure correct soft locking data visibility.
Db query operations moved out of mutex code (as locking managed by underlying DB)

Adjusted logging severity levels.

Adjusted logging severity levels.

GenerateSpending now performing fine grained query for unconsumed states by joining with contract_cash_states table.
Using H2 proprietary cummulative counting feature (using sessioni SET variables)
Refactored and simplified HibernateObserver constructor to enable usage in JUnit tests.

Event generator issues larger random amounts (10,000..1,000,000) to those than are spent (0..10,000)
Adjusted Issue (5:1) and Exit (10:1) generation frequency vs spending.

Minor fixes: added optional lockid into select for spending criteria, set notary, additional trace logging.

Generate Cash Schema by default upon node start-up (as part of NodeSchemaService initialisation).

Explicitly close JDBC statements in finally() blocks.

Tightened HibernateObserver constructor.

Fix CommercialPaper test (was missing auto-generation of CONTRACT_CASH table)

Revert default JVM size back to 200Mb.

Revert default number of iterations in Explorer Node Simulation mode (back to 10000 with .5 sec sleep interval).

Remove redundant setter function.

Added TODO messages indicating Requery / H2 restrictions & caveats.

Consumed states lock updates now performed in general consumed state Update.

Updated/added Soft Locking documentation.

Addressed initial PR comments: use THREAD_LOCAL_KRYO, use AbstractParty, extract helper method, improve readability, address some doc typos

Addressed PR comment: removed lockId from WireTransaction.

Fixed soft locking UPDATE statements.

Improvements to VaultSoftLockManager for auto-registration of soft locks for flows with spendable states (as notifications from vault).
Other optimisations (IssuerFlow no longer explicitly reserve/release issued state) and improvements (soft lock release management of soft locks, docs update)

Performance update: now using Requery for UPDATE in release soft locking (non-composite key statement)

Removed redundant TODO messages (TODO: revisit Kryo bug when using THREAD_LOCAL_KYRO)

Minor fixes following rebase

Fixed failing JUnit following rebase

Addressed MH PR review items (1st pass)

Fix broken JUnit

Significant changes to RDBMS operations within coin selection and soft locking as requested by PR review.
(Removed SELECT FOR UPDATE; added RETRY upon coin selection; reverting partial soft locks)

Addressed a number of PR review requests added by MH (comments/spelling, lockID instantiation, HibernateObserver instantiation, cash schema white-listing usage)

Addressed latest PR review comments from RP.

Minor fixes following rebase from master.

Fixed final failing JUnit (issuer flow concurrent).

Updated TraderDemo to trigger concurrent issuance of cash.

Fixed compiler warning on lockId null check.

Fixed subtle bug in coin selection intermittently surfaced in IntegrationTestTutorial.

Fixed small memory leak.

Removed stray } in logger trace message.

Slight rewording of description of Soft Locking in docs.

Renamed NoStatesAvailableException to StatesNotAvailableException.
generateSpend is now Suspendable (calls sleep method on flow upon coin selection retry).

Added companion function to enable a Strand to sleep but without locking transactional context.

Improved logging, changed to StateNotAvailableException, using Flow sleep upon retry, tweaked SELECT criteria in coin selection, fixed bug when insufficient states selectable, generateSpend is now @suspendable

Improved handling and logging of flow results in Simulation Mode.

Fixed minor error in sleep when not an active flow.

Retry coin selection when unavailable states (as these may become available as new states).
Additional debug logging to highlight and identify H2 coin selection sporadic bug.

Inlined sleep method due to intermittent Quasar error.

Re-introduce selection clause that prevents selection and temporary locking of already locked states (by other flows).
Improved trace logging for coin selection (SQL row level info).
Correctly calling FlowStateMachineImpl sleep (now inlined and working correctly)

Fixed rebase error.

Remove redundant TODO message.
2017-03-27 17:12:33 +01:00
Shams Asari
bb74f0ca34 Merge pull request #427 from corda/shams-consistent-guava-deps
Upgraded both guava and guava-testlib to 21.0 and made sure they shar…
2017-03-24 18:30:11 +00:00
Ross Nicoll
c3cf2226ea Extend identity service tests
RBS report problems with multiple nodes being able to find each other in the identity service. This extends the name
lookup test case to try three nodes, to check all of the stored values, and to use random keys rather than static.

Add trace log of identity registrations to aid with tracking state.
2017-03-24 18:25:49 +00:00
Shams Asari
52ea54f742 Upgraded both guava and guava-testlib to 21.0 and made sure they share the same version variable 2017-03-24 17:17:36 +00:00
Mike Hearn
68ff33549a Address review comments 2017-03-24 12:44:54 +01:00
Mike Hearn
ac90fe724e Shell: add support for uploading and downloading attachments. 2017-03-24 12:44:54 +01:00
Mike Hearn
347224c900 Improve attachment checks to ensure that a stream is actually a JAR/ZIP. 2017-03-24 12:44:54 +01:00
Mike Hearn
2cb02c75eb Minor: remove ANSI progress observer, delete some currently dead code in the shell. 2017-03-24 12:44:54 +01:00
Marek Skocovsky
262c87a5c6 Integrate CRaSH shell (SSHD). Joint effort between Mike Hearn and Marek Skocovsky.
The shell is embedded in the node and offers the ability to monitor
and control the node via the launching terminal.

Still to do:

* Switch to a fork of CRaSH that we can maintain ourselves, and merge in Marek's SSH patch so we can enable SSH access.
* Add persistent command history that survives restarts.
* Tab completion for the 'flow' and 'run' commands.
* Remove the 'jul' command and replace it with a command that lets you see and tail the log4j logs instead.
* Fix or remove the other crash commands that have bitrotted since 2015.
2017-03-24 12:44:54 +01:00
Andrius Dagys
71fe3e3d3b Record a metric for duration and rate of execution for every flow (#372)
* Record a metric for the duration and rate of execution for every flow. This is useful for task intense scenarios to detect performance degradation.

* Measure both successful and failed flow durations
2017-03-22 16:52:41 +00:00
Chris Rankin
98266da41c Refactor CordaRPCClient into new :client:rpc Gradle module. (#405)
* 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.
2017-03-22 15:52:54 +00:00
Ross Nicoll
7e0e7bc645 Fix warning in NodeAttachmentService 2017-03-22 12:20:29 +01:00
Chris Rankin
9e43df36d3 Refactor :client module into :client:javafx and :client:mock (#388)
* CORDA-304: Refactor :client modules into :client:javafx and :client:mock.

* CORDA-304: Add :client:mock to Dokka tasks, and remove unused integrationTest task.

* CORDA-304: Migrate DriverBasedTest from node into test-utils.

* CORDA-304: Rename .fx. package to .jfx. to prevent confusion with "exchange rate".

* CORDA-304: Rename module to ':client:jfx'.
2017-03-21 19:45:12 +00:00
Andras Slemmer
7a9bc5bfad driver: Add ShutdownManager, make network map service optional 2017-03-21 18:08:21 +00:00
Mike Hearn
1243118aa9 Minor: more banking jokes, surround legal name in quotes 2017-03-21 18:01:17 +01:00
Mike Hearn
4c6548107a Minor: don't repeat the legal name of the node multiple times in the output (which causes indentation issues) 2017-03-21 18:01:17 +01:00
Shams Asari
209f5c8a25 Logging fixes, including broken --logging-level cmd line arg 2017-03-21 15:36:32 +00:00
Mike Hearn
0d54832d88 FlowSessionException is sent over RPC so must be serializable and documented. 2017-03-20 15:17:31 +01:00
Mike Hearn
afbc8f9b5c De-issuerify the cash payment flow. This makes it easier to use the payment flow from the shell. 2017-03-20 15:14:28 +01:00
Andras Slemmer
4f6b44ceff Merge pull request #379 from corda/aslemmer-node-api
Add :node-api, factor out some artemis code
2017-03-20 13:31:21 +00:00
Andras Slemmer
d3f956ab60 Address PR 379 comments 2017-03-17 15:09:04 +00:00
Rick Parker
1de1f9095f Several tests were corrupting Kryo which was then returned to the common pool. (#378)
* We were leaving trailing attachmentStorage on pooled kryo instances after some tests.  Changed attachment storage logic to make it impossible to leave it behind.

* Some low level tests corrupt the Kryo config, so do not return to pool when this is the case.  Also, we discovered that Kryo is caching class name to class resolution.  We don't want to do this where attachments are involved.  The errors raised highlighted a class missing from the whitelist.  Need to write a unit test to test the class loader issue.

* Unit test for attachment class loading with kryo.
2017-03-17 12:43:11 +00:00
Andras Slemmer
c3c1f3d801 Add :node-api, factor out some artemis code 2017-03-17 11:47:05 +00:00
Ross Nicoll
486368d926 Clean up messaging/RPC port configuration and docs (#296)
* 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.
2017-03-17 10:32:14 +00:00
Mike Hearn
eb21458885 Some fixes to emoji/ANSI renderer 2017-03-17 10:54:25 +01:00
Shams Asari
f079c05e6a Merge pull request #361 from corda/shams-nms-reg-error-response
Clean up of network map service  and its tests, and added error msg t…
2017-03-16 17:03:42 +00:00
Konstantinos Chalkias
5966610a6e DEFAULT_MAX_BUCKETS based on max heap size
MAX_DEFAULT_BUCKETS is linearly correlated to max heap size with a minimum of 256 buckets.
2017-03-16 16:40:34 +00:00
Shams Asari
5e3e7f6c1c Clean up of network map service and its tests, and added error msg to registration response 2017-03-16 16:37:21 +00:00
josecoll
391270ed71 RequeryConfiguration setting for table creation is now CREATE_NOT_EXISTS (was DROP_CREATE) (#374) 2017-03-16 16:23:37 +00:00
Rick Parker
f3a5f8e659 Pool Kryo instances for efficiency. (#352)
Pooled Kryo
2017-03-16 08:24:06 +00:00
Shams Asari
f581844f3f Flow registration takes in a Class object rather than a KClass 2017-03-15 16:32:13 +00:00
Andras Slemmer
6a6698b598 Merge pull request #339 from corda/aslemmer-fix-rpc-close-deliver-deadlock
rpc: Fix deadlock caused by deliver() and close()
2017-03-15 16:20:11 +00:00
Konstantinos Chalkias
195d69d0dc Print to screen and log basic info (#356)
Adding an extra logger to printBasicNodeInfo in both console and log file, respectively. Also, node's legal name is now printed to console as well.
2017-03-15 16:18:24 +00:00
josecoll
18e4620928 ArrayDeque FlowLogic references were not being removed on flow termination. (#353) 2017-03-14 15:25:34 +00:00
Andras Slemmer
389685a31e PR 339 Address comments 2017-03-14 15:17:15 +00:00
Andras Slemmer
60520412c8 rpc: Fix deadlock caused by deliver() and close() 2017-03-14 15:17:15 +00:00
Shams Asari
bbbc4d9eaa Fix in reading non-present manifest values in single tests 2017-03-13 18:37:16 +00:00
Konstantinos Chalkias
afd5521b00 Lazy NodeVaultService.states (#349)
Convert NodeVaultService states to return Iterable (backed by Sequence) Vs the old way using a List. Worth noting this relieves memory pressure as the number of vault states grows.

* remove toList in ContractUpgradeFlowTest
2017-03-13 14:06:47 +00:00
Mike Hearn
21f5f6d9d0 ANSIProgressRenderer: allow progressTracker to be set to null 2017-03-10 17:26:18 +01:00
Mike Hearn
5e19bad4b5 Minor: don't use a separate thread to start Metrics-to-JMX export.
This should hopefully resolve a shutdown hang due to the misnamed "WebServer" thread not being a daemon thread.
2017-03-10 17:23:43 +01:00
Shams Asari
1adc9e65ec Logging the PID and version info 2017-03-10 10:29:41 +00:00
Shams Asari
e9d63b2662 Added bits of versioning info to the node 2017-03-09 16:36:21 +00:00
Konstantinos Chalkias
4a9ff84fc7 Allowing multiple signature algorithms (#250)
Basic crypto API to support 5 signature schemes and MetaData-ed signatures.
Supported schemes: (1) RSA_SHA256, (2) ECDSA_SECP256K1_SHA256, (3) ECDSA_SECP256R1_SHA256, (4) EDDSA_ED25519_SHA512, (5) SPHINCS-256_SHA512.

To sign a transaction, a signer should create a MetaData wrapper that contains transaction's merkle root and some extra information, such as signer's public key, timestamp and visibleInputs. Actually, MetaData is utilised to support a practical partial, blind and extra-data attached signature model.
When a MetaData object is signed, the signer sends a TransactionSignature object that contains the signed output and the corresponding MetaData object.

Remarks: 
This is an temporary solution for signature algorithmic agility. Further development is required for a robust and extensible Crypto Manager/Provider PKI that will support certificate creation, key generation, signing/verifying, deterministic key derivation, encoding formats, SGX/HSM support, identity and key management, versioning, revocation, asynchronicity, metadata, partial sig. policies etc.
2017-03-08 17:45:23 +00:00
Rick Parker
dc8c6747d3 Allow escaped unsubscribed RPC Observables to be GC'd (#334)
* QueuedObservable could not leak due to hard references.  Have made it weak referenced but also had to reference count a hard reference to prevent early GC.  Explained in comments.

* Improved comments.

* Fixed typo

* Fixed another typo
2017-03-08 14:09:38 +00:00
Mike Hearn
35836d9926 Add a registeredFlows() RPC that lists the RPCs the node knows about. 2017-03-08 15:01:13 +01:00
Andrius Dagys
97b3c35ec2 Add public IP detection (from network interfaces), node outputs a warning if no public IP detected or specified in the config. 2017-03-07 17:41:23 +00:00
Chris Rankin
0e3540d174 CORDA-265: Implement "ALL" permission for RPC users. (#306)
* CORDA-265: Implement "ALL" permission for RPC users. Users with this permission in node.conf can use any flow.

* CORDA-265: Ensure that we always close the RPC proxy object after each test.

* CORDA-265: Refactor construction of dummy RPC client into an abstract base class.

* CORDA-265: Document RPC "ALL" permission.
2017-03-07 16:57:34 +00:00
Karel Hajek
1e78d6a3a7 Simple Attachment Storage implementation using Requery/H2 database 2017-03-07 16:12:38 +01:00
Andrius Dagys
907a893ca1 BFT notary prototype: add validation and signature collection (#279)
* BFT notary prototype: add a non-validating service.
Each replica now validates the transaction timestamp and returns an individual signature to the BFT client. The client then returns a list of signatures back to the notary service flow.

The validating variant is still incomplete - it requires the ability to suspend flows on arbitrary function calls.
2017-03-07 12:39:19 +00:00
Ross Nicoll
b5ba070301 Revert "Non-ssl artemis acceptor for RPC connection. (#271)"
This reverts commit f0d82e4918.
2017-03-06 14:03:23 +00:00
Shams Asari
059056de65 Removed "FLOW" from network map topic constants 2017-03-02 10:11:38 +00:00
Mike Hearn
cc61be5b6a Inform users about the newly available Corda training programs at startup and in the docsite. 2017-02-28 16:50:43 +01:00
Andrius Dagys
6b4950290e Ignore BFT map test for now
I've removed this test in my further BFT work
2017-02-28 09:34:49 +00:00
Rick Parker
c4c4c51d7d Kryo serialisation whitelisting and misc enhancements. (#267)
Kryo serialisation whitelisting and misc enhancements
2017-02-28 08:12:18 +00:00
Clinton Alexander
75ff04d5a7 Webserver is now deployed as a capsule. 2017-02-27 16:42:23 +00:00
Clinton Alexander
8414c97a61 Moved JsonSupport to new webserver module. Fixed a few compile errors.
Fixed compile issues caused by webserver being split to a separate project.
WebServer now starts and stops correctly as a separate module.
2017-02-27 16:41:48 +00:00
Clinton Alexander
bc9f86905c Added webserver module. Moved webserver files to the webserver module. 2017-02-27 16:15:27 +00:00
Patrick Kuo
f0d82e4918 Non-ssl artemis acceptor for RPC connection. (#271)
* New non-ssl acceptor in artemis server for RPC connection.
2017-02-24 15:36:36 +00:00
Chris Rankin
d5872f4e5b Merge pull request #272 from corda/get-cash-balances
Implement RPCOp getCashBalances().
2017-02-23 16:33:35 +00:00
Qian Hong
5e3c874ebf Minor: Fix typo in ValidatingNotaryService comment. 2017-02-23 12:08:44 +01:00
Andrius Dagys
2b3200207a Node refactoring: move building advertised services before SMM initialisation - the node doesn't need to maintain a reference to a uniqueness provider anymore.
Extract parts of start() into separate methods.
2017-02-23 10:45:38 +00:00
Chris Rankin
221278197a Implement RPCOp getCashBalances(). 2017-02-22 13:57:15 +00:00
Mike Hearn
b8942a2cc9 Remove the SignedTransaction.id field, which took part in serialisation. Calculate it on demand instead. 2017-02-22 14:16:04 +01:00
Andrius Dagys
006faa82a1 Make notary flow return a collection of signatures to support the BFT… (#264)
Make notary flow return a collection of signatures to support the BFT notary. For a single-node or RAFT notary it would just contain a single signature.
2017-02-22 11:11:35 +00:00
Shams Asari
7181b697a3 extraAdvertisedServiceIds config is now a list of strings, rather than a comma separated string 2017-02-21 15:21:37 +00:00
Andrius Dagys
33717259bd BFT tests: no need to stop threads explicitly 2017-02-21 15:00:05 +00:00
Andrius Dagys
24ae89db18 BFT server: add missing databaseTransaction statement 2017-02-20 15:34:14 +00:00
Patrick Kuo
9a0a9567f3 Make Network registration process more verbose (#251)
* Make the network registration process more verbose
* removed gradle task for building standalone jar for the certificate signing request utility
* Added a flag "--initial-registration" to the corda jar to start the registration
2017-02-20 13:22:37 +00:00
Thomas Schroeter
99721bf8f1 Implement bft-smart notary prototype 2017-02-20 12:08:22 +00:00
Ross Nicoll
3b8d696379 Add missing @Suspendable
Add missing @Suspendable to CashIssueFlow, as well as adding sanity
check to result of starting CashIssueFlow from
IntegrationTestingTutorial.
2017-02-20 10:41:31 +00:00
Clinton Alexander
539943d790 Added an openAttachment endpoint to the RPC interface and tests for the open, upload and exists attachment RPC interfaces. 2017-02-16 16:57:45 +00:00
Shams Asari
f13817efb3 ProgressTracker emits exception thrown by the flow, allowing the ANSI renderer to correctly stop and print the error (#189) 2017-02-16 12:11:38 +00:00
Ross Nicoll
ed093cdb9d Enforce separation of Party and AnonymousParty 2017-02-16 11:50:33 +00:00
josecoll
fa33336d38 Initial implementation of Vault Persistence using Requery (#191)
* Initial prototyping with Requery as a persistence replacement for Exposed/Hibernate

Applied changes following PR review by RP

Updated timestamp naming (removed committedTimestamp) and StateStatus (removed AWAITING_CONSENSUS) after discussion with RP.

Removed FungibleState and LinearState schemas (and associated tests) - awaiting Requery uni-directional relationship fix.

Added Transaction propagation such that requery re-uses any existing transaction context.

Made requery default logging configurable (disabled by default)

Nullable fields are now truly nullable (in the Kotlin and DDL sense)

Fix for SimmValuation integration test.

Workarounds applied to resolve Requery issues when sharing Transactional context.

Addressed PR review comments from MH.

Further updates following re-review by RP/MH

Further updates following additional PR review comments by RP

Minor update following additional PR review comments by RP

Optimised makeUpdate state processing code.

Resolved conflicts after rebase.

Additional Unit tests and bug fix for correct spending of multiple contract state types within a single transaction.
Required interface change to states() API to take a setOf (ContractStateClassTypes)

Minor code clean-up.

Re-write NodeVaultService consumed state makeUpdate function using SQL.

* Resolve conflict after rebase from master
2017-02-16 11:02:36 +00:00
Ross Nicoll
71babc7019 Remove use of full parties from contract states 2017-02-15 11:43:13 +00:00
Shams Asari
40dde555e7 Added --logging-level cmd line arg to set the logging level, and improved flow logging 2017-02-14 09:56:50 +00:00
Clinton Alexander
3726430e5b Removed unused imports in webserver.kt 2017-02-13 16:52:05 +00:00
Clinton Alexander
ae961a4d99 Fixed the race condition in web server startup with the keystore creation. 2017-02-13 16:42:46 +00:00
Patrick Kuo
28e83d1e66 Example code for contract upgrade using RPC. (#237)
* Added missing out modifier to UpgradedContract class
* Added ContractUpgradeFlow.Instigator to whitelist in AbstractNode
* Added test for contract upgrade using RPC
2017-02-13 15:39:48 +00:00
Andrius Dagys
a19dd55257 Pass a FilteredTransaction instead of a Signed transaction to a non-validating notary flow to preserve privacy.
This also means that the non-validating notary can service requests on the network without loading any custom plugins.
2017-02-13 14:54:46 +00:00
Ross Nicoll
98c30f6432 Remove CashFlow
Remove the CashFlow flow, replacing it with CashFlowCommand which can be used for the use-cases
with instructions passed around as an object.
2017-02-09 18:22:58 +00:00
Patrick Kuo
c054ffe719 Add support for contract upgrades (#165)
* Add support for contract upgrades
* Add interface for the upgraded contract to implement, which provides functionality for upgrading legacy states.
* Add shared upgrade command and verification code for it.
* Add DummyContractV2 to illustrate what an upgraded contract looks like.
* Add new functions to vault service to support upgrading state objects.
* Add contract upgrade flow
2017-02-09 17:14:31 +00:00
Shams Asari
50e1eb7b21 End flow if waiting for ledger commit and committer flow errors 2017-02-09 15:57:13 +00:00
Ross Nicoll
9055c9d9b0 Split CashFlow into three flows
Split CashFlow into independent CashIssueFlow, CashExitFlow and CashPaymentFlow,
so that users can be given access to one but not the other(s).

Signed-off-by: Ross Nicoll <ross.nicoll@r3.com>
2017-02-09 15:43:48 +00:00
Ross Nicoll
47d260625a Add AnonymousParty superclass of Party
Add AnonymousParty superclass of Party in preparation for anonymising parties stored in
contract states.

Signed-off-by: Ross Nicoll <ross.nicoll@r3.com>
2017-02-09 11:37:32 +00:00
Andrius Dagys
bbcaf5d98c Demo bug fixes (#217)
* 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..
2017-02-07 17:18:21 +00:00
Clinton
dcd8fe915f Merge pull request #218 from corda/clint-webserverlogcleanup
Cleaned up logging in the webdriver...
2017-02-07 16:00:16 +00:00
Shams Asari
657cfa5d96 FlowException can be thrown from within UntrustworthyData.unwrap for better Java interop, and more checked exception annotations relating to flows 2017-02-06 16:00:52 +00:00
Ross Nicoll
9910ce01a3 Switch to using CompositeKey inside network map cache
Switch to using CompositeKey inside network map cache, so that look up of node info from keys
can be done in a more sensible manner.
2017-02-06 14:09:31 +00:00
Mike Hearn
2f378f0e15 Minor: suppress deprecation warning in CordaRPCOpsImpl 2017-02-06 12:29:34 +01:00
Mike Hearn
cc20a10225 Improve the flow commit API.
Make FinalityFlow do more, and be used more consistently.

Add a new waitForLedgerCommit API that is intended to be used at the end of flows, or at any other point where a flow wants to wait for a transaction to finalise (but the finalisation flow is being done by someone else).

Update the docs a bit.
2017-02-06 12:29:34 +01:00
Clinton Alexander
0ae681de76 Cleaned up logging in the webdriver to remove log that fails to display correctly on Windows. 2017-02-03 14:00:49 +00:00
Shams Asari
b86c80691e FlowException serialised over RPC (subtypes are flattened), and improvement to startFlow RPC for correct exception handling 2017-02-03 11:21:10 +00:00
Andrius Dagys
56dbf1e844 Prevent node from starting across upgrades (until we support it better) (#199)
* Prevent node from starting across upgrades (until we support it better).

On first run a version file is created in the node dir, and on subsequent runs the node version is matched against it.

* Move version check from caplet to node.
2017-02-02 18:21:00 +00:00
Ross Nicoll
bc9407d2c8 Correct network map cache tests
InMemoryNetworkMapCacheTest was not actually asserting that an expected exception was thrown, which
meant when earlier changes to the service changed the operation it wasn't caught. The service now
overwrites previous node if a new matching node is added, and this updates the test to follow that
design.
2017-02-02 16:01:10 +00:00
Ross Nicoll
2f9af7d7dc Revert Party.Full in preference for a less invasive change 2017-02-02 13:47:32 +00:00
Andras Slemmer
4afd404db4 Address PR 207 comments 2017-02-02 11:44:18 +00:00
Andras Slemmer
de63f90745 Add isRegisteredWithNetworkMap RPC, poll in Driver, expose RPC proxy 2017-02-02 10:54:50 +00:00
Shams Asari
3f6c8ab1e2 Allow received FlowException to propagate further to initiating flow 2017-02-01 17:30:38 +00:00
Ross Nicoll
1b86ddfd6e Replace Party with Party.Full
Replace Party with Party.Full as an interim step to introducing the Party.Anonymised class.

Signed-off-by: Ross Nicoll <ross.nicoll@r3.com>
2017-02-01 15:18:12 +00:00
Clinton
d376a902ad Merge pull request #180 from corda/clint-webserversplit
Split webserver from node
2017-02-01 12:13:31 +00:00
Patrick Kuo
7f96b752d1 Added reconnect capability to RPC (#192)
* Added reconnect capability to RPC
* Issue - https://github.com/corda/corda/issues/184
* JIRA - https://r3-cev.atlassian.net/browse/CORDA-189
2017-01-31 17:04:05 +00:00
Clinton Alexander
876bae67cb Added TODOs for future splitting of the web server from the node. 2017-01-31 16:03:34 +00:00
Shams Asari
646ce8afe0 FlowException thrown by a flow is propagated to all counterparties 2017-01-31 13:30:33 +00:00
Patrick Kuo
e8015e689a Flows shouldn't have to suspend if just doing a send (#187)
* CORDA-45 Flows shouldn't have to suspend if just doing a send
2017-01-30 16:21:43 +00:00
Ross Nicoll
e383752995 Adapt Party comparison to use owningKey
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>
2017-01-30 15:46:51 +00:00
Richard Green
e54d6388fd Adding optional delay to AMQ message sending via system properties (#185) 2017-01-30 14:39:40 +00:00
Clinton Alexander
a5f6fb9479 Querying of node and webserver now uses infinite retries to avoid any race conditions. 2017-01-30 12:08:41 +00:00
Clinton Alexander
d2ebcbfab0 Fixed whitespace and formatting with IntelliJ autoformat tool. 2017-01-30 12:05:22 +00:00
Clinton Alexander
65b29a8379 Moved the transaction context into the RPC call site. 2017-01-30 11:21:01 +00:00
Clinton Alexander
3482452c8b Added webserver to runnodes. 2017-01-27 14:15:08 +00:00
Clinton Alexander
13551a6b23 Runnodes now works with the new separate webserver. 2017-01-27 14:14:38 +00:00
Clinton Alexander
537ffae113 Moved file uploading to RPC interface. 2017-01-27 14:13:58 +00:00
Clinton Alexander
d4b6e32682 t # This is a combination of 5 commits.
Driver now queries webserver to ensure it has started.
2017-01-27 14:13:29 +00:00
Clinton Alexander
5f4d4c1da3 Moved the webserver code into the main node module. Driver can now start webserver for nodes. 2017-01-27 14:12:54 +00:00
Clinton Alexander
ecfb762143 Nodes can start without web server. Webserver now uses full node configuration. 2017-01-27 14:12:19 +00:00
Clinton Alexander
fa257738e1 Added webserver project. 2017-01-27 14:10:18 +00:00
Ross Nicoll
1362a305c9 Expand details provided when erroring due to missing signatures in notary flow
Signed-off-by: Ross Nicoll <ross.nicoll@r3.com>
2017-01-25 16:15:40 +00:00
Ross Nicoll
a4254ac695 Remove TransferRecipient
Remove TransferRecipient from StateMachineManagerTests to get rid one of the approximately 6 different ways
in which we refer to endpoints, as part of work to simplify this data model.

Signed-off-by: Ross Nicoll <ross.nicoll@r3.com>
2017-01-25 15:32:03 +00:00
Ross Nicoll
1229c429a4 Rename file to correct reference to protocol -> flow 2017-01-25 13:21:42 +00:00
Shams Asari
20fe0f32f2 Removed "Node" prefix from NodeSSLConfiguration and renamed two file properties to end in "File" 2017-01-23 15:46:36 +00:00
Shams Asari
052a660c1b Making sure exceptions thrown while fibers are suspended are handled properly 2017-01-23 15:39:55 +00:00
Andrius Dagys
e9345e2999 Set h2 write delay to 100ms to improve performance 2017-01-20 12:03:00 +00:00
Patrick Kuo
aeb5a59605 Add logging to node startup when it attempt to connect to the map server (#167)
* Add logging to avoid node startup "hang" when it attempt to connects to the network map, also can use as a hint telling user Network map might be down or unreachable.
2017-01-20 11:34:32 +00:00
Shams Asari
c4e3b258c7 Introducing Observable.toFuture() extension method 2017-01-17 12:56:59 +00:00
Andrius Dagys
ca1b08ad37 Node memory leak fix (#152)
Perform Artemis message sending in a separate thread pool to avoid memory leaks
2017-01-13 18:29:56 +00:00
Thomas Schroeter
6b7edf5af6 Tx validation detect duplicate inputs (#138)
* Move duplicate input detection to transaction verification

Duplicate detection was previously part of the NotaryFlow.
2017-01-13 11:37:28 +00:00
Mike Hearn
ef6e9786a8 Cleanup: improve api docs on FlowLogic, make it clearer when stuff is considered internal, rename an obscurely named field. 2017-01-12 13:30:10 +01:00
Mike Hearn
d26c44d08c Configure Capsule/Driver to give Corda a relatively poxy 200mb heap by default: we don't seem to need more for development purposes. Switch to G1GC by default as well. 2017-01-12 11:37:10 +01:00
Rick Parker
354977ffea Fix intermittent failure in ScheduledFlowTests (#140)
Allow a single latch for all activity in the MockNetwork
2017-01-12 09:54:08 +00:00
Shams Asari
e589031d4b Some clean up of the flow code 2017-01-11 16:33:59 +00:00
Shams Asari
7cd281364f Removed basedir from the config file as it's always overwritten by the --base-directory cmd line arg 2017-01-10 10:49:28 +00:00
Shams Asari
334b91faf0 Testing that a node can communicate with a distributed service it's part of 2017-01-09 17:21:51 +00:00
Mike Hearn
78a6daa985 Minor: log RPC/peer logins 2017-01-06 16:39:01 +01:00
Mike Hearn
32523d376e RPC: Improve the client class with a convenience function and some startup time logging.
This reveals that building the first RPC client is ludicrously slow (like 1.8 seconds) but subsequent builds are more like 30 msec. This might be interpreter overhead, or it might be due to Artemis/SSL doing lots of piggy lazy initialisation or something. But at any rate it may be worth investigating a bit later.
2017-01-06 16:39:01 +01:00
Mike Hearn
20dbdf9d1b Make SSL optional in the RPC client 2017-01-06 16:39:01 +01:00
Andrius Dagys
15363e686a Update RaftNotaryServiceTest to support idempotent notary behaviour 2017-01-06 14:39:34 +00:00
Shams Asari
59456cb6b1 Added a method to NodeHandle to simplify using RPC in the Driver 2017-01-06 14:14:32 +00:00
Andrius Dagys
0867a05ad7 Merge pull request #96 from thschroeter/idempotent-notary-flow
Make NotaryFlow idempotent
2017-01-06 13:53:27 +00:00
Rick Parker
592ac07af0 Upgrade reactivex.rxjava version to latest 1.x (#111)
Update rxjava version and fix thread safety of database transaction boundary subject.
2017-01-06 10:26:44 +00:00
Andrius Dagys
b9d5081af6 Update notary change flow to support encumbrances (#101)
* Update notary change flow to support encumbrances.

Move encumbrance pointer from ContractState to TransactionState.

* Refactor & add new encumbrance tests
2017-01-05 17:44:31 +00:00
Shams Asari
08e391579c Node verifies the peer it connects to by checking its TLS common name 2017-01-05 14:22:11 +00:00
Mike Hearn
875efbfa11 Merge pull request #106 from corda/mike-thread-affinity-for-smm
Additional thread affinity for the StateMachineManager.
2017-01-05 11:03:35 +01:00
Thomas Schroeter
bbc9c763e3 Detect duplicate inputs in NotaryFlow
Throw NotaryException when duplicate inputs are detected.
2017-01-05 08:09:49 +00:00
Clinton
d9663f1698 Merge pull request #72 from corda/clint-simmdemointegrationtest
Add SIMM valuation demo integration test
2017-01-04 15:32:44 +00:00
Mike Hearn
1a53834a60 Additional thread affinity for the StateMachineManager.
Check that the SMM.add method is being called on the SMM thread and throw if not. Make ServiceHubInternal.startFlow() do a blocking call onto the server thread. Update unit tests.

This resolves an issue whereby the scheduler was starting flows outside of the server thread, which isn't intended.
2017-01-04 16:06:33 +01:00
Shams Asari
e34f33785f Prevent the node from starting if running on a version of Java with the empty Path bug (#83) 2017-01-03 10:42:18 +00:00
Thomas Schroeter
159ca9884f Make NotaryFlow idempotent
Alternatively, we could make the underlying UniquenessProviders
idempotent.
2016-12-31 09:26:18 +00:00
josecoll
021bcb0628 Merge pull request #92 from corda/colljos-fix-issue88
Fixed issue caused by race condition in process registration v node e…
2016-12-23 15:20:16 +00:00
josecoll
b4a5a03992 Fixed issue caused by race condition in process registration v node exit.
See https://github.com/corda/corda/issues/88
2016-12-23 15:09:13 +00:00
Andrius Dagys
2e29673392 Distributed notary: manually initialize the serializer for copycat server & client. This fixes the issue where one of the nodes is unable to connect to the cluster. 2016-12-23 12:52:04 +00:00
josecoll
eac2cb1cc6 Bank of Corda integration with Trader Demo and Explorer
Initial conversion of Explorer to use IssuerFlow (from BankOfCorda)

Initial conversion of TraderDemo to use IssuerFlow (from BankOfCorda)

Updated TraderDemo to use IssuerFlow (from BankOfCorda)

Fixed TraderDemo integration text (added new BankOfCorda node)

Updated Explorer with changes IssuerRequest params

Explorer now correctly displaying transaction id upon Issue.

Moved IssuerFlow into finance package so can be reused across multiple demos (TraderDemo) and applications (eg Explorer)

Refactored BankOfCorda demo to use Finance package and TestUtil constants

Updated TraderDemo to use IssuerFlow

Updated Explorer to use finance package IssuerFlow.

Advertised BankOfCorda as Issuer for usage by Explorer.

Explorer no longer depends on BankOfCorda demo since IssuerFlow promoted to Finance module

Added IssuerFlow to AbstractNode whitelist.
Explicit declarations of IssuerFlow no longer required.

Added plugin registration of IssuerFlow at bootstrap.

Revert whitelisting of IssuerFlow (plugin configured)

Refactored to use constant BOC definition.

Added gradle RPC security config.

Updated documentation

Fixed incorrect references.

Renamed Issuer banks.
Added new permission set (for Issuer nodes)
Added node nearestCity info
Added new Issuer Event Generator for Issuer nodes only

Associated currency with issuer using ServiceType naming structure.

Added argument flag (-S) to trigger event generator simulation node.

Fixed problem with issuers not resolving from network map.

Updated perms on Issuer rpc proxy nodes.

Fixed minor in cash generateExit identified by Explorer.

Changes applied in prep for AWG demo.

Added IntelliJ run-configurations for launching Explorer demo nodes (with and without simulation)

Updated documentation (and added additional gradle task to launch Explorer nodes in simulation mode).

Fix following rebase.

Addressed review items from PR.

Updated TraderDemo readme.

Updated TraderDemo gradle file to launch Bank of Corda node.

Updated JRE properties.

Updated IssuerModel to incorporate correct JFX Observable handling.
Fixed bug with Exit command not displaying any currency.

Added TODO's for revisiting correct Exception handling strategy.

Optimization for when issuing cash to self.

Minor updates following PR review.

Remove old refs to Royal Mint and Federal Reserve
2016-12-22 15:55:50 +00:00
Shams Asari
924fb479e4 Cleaned up DistributedNotaryTests, including addressing overlap with RaftValidatingNotaryServiceTests 2016-12-22 12:49:33 +00:00
Mike Hearn
edc648ae95 Wish our users a merry Christmas and a happy new year. 2016-12-22 11:37:27 +01:00
Rick Parker
bd979534f3 Add database transactions back onto observations. (#77)
Add database transactions back onto Observables now that they are post database commit.
2016-12-22 10:03:22 +00:00
Andras Slemmer
7d9caa984b node: Driver network map starts parallel with other nodes, uses executor service, pre-create most artemis queues 2016-12-20 14:49:55 +00:00
Shams Asari
81d1459599 Fixed bug where messages can't be sent to services running on the network map node (#71) 2016-12-20 12:03:21 +00:00
Clinton Alexander
3c2610613f Integration test uses better naming sceme. Json support module cleaned up to use Kotlin features. 2016-12-19 16:26:54 +00:00
Andrius Dagys
6f3ed327a0 Vault: return a list of unconsumed states rather than a sequence. The lazy evaluation captures some extra context, serialization of which in flows results in errors. 2016-12-16 15:48:48 +00:00
Clinton Alexander
fa1e7cfa15 Corda JSON module now created in a separate function to the default mapper. 2016-12-16 14:51:12 +00:00
Clinton Alexander
234ffb141c Fixed issues with incorrect serialisation in test utilities. 2016-12-16 12:11:26 +00:00
Mike Hearn
f44dd969ce Fix ANSI logging on Windows 2016-12-15 21:00:45 +01:00
Joel Dudley
334ed4806b Adds overload anotations and reorganizes param orders to improve java interop. 2016-12-15 18:27:41 +00:00
Andrius Dagys
7cb4cbcad4 Made vault updates contain full StateAndRef in the consumed set (instead of just StateRef). This allows subscribers to check whether the update contains relevant states.
Cash balances are now calculated by keeping only the aggregate values (it no longer needs to iterate through all states in the vault).
2016-12-15 16:27:39 +00:00
Andrius Dagys
673b0393b4 Increase JDBCHashMap default bucket size. With the current implementa… (#58)
Increase JDBCHashMap default bucket size. With the current implementation of the Vault, once the number of stored transactions (or UTXO) goes over the max bucket size we end up reloading each transaction from the db and deserializing it, which causes severe performance degradation.
2016-12-15 15:45:51 +00:00
exfalso
53bbb57345 Add ReceivedSessionMessage, DriverBasedTest re #57 2016-12-15 11:37:15 +00:00
Andras Slemmer
a3138ab0dc Address PR comments 2016-12-15 11:37:15 +00:00
Andras Slemmer
4f44962962 Add kdocs on service addressing 2016-12-15 11:36:06 +00:00
Andras Slemmer
6a796cef35 Add raft notary integration tests, testing service addressing 2016-12-15 11:36:06 +00:00
Andras Slemmer
7ee88b6ec8 Add SMM test for round robin node picking 2016-12-15 11:36:06 +00:00
Andras Slemmer
fd436b0cdc artemis, sessions, mock: Add Service addressing, tests pass 2016-12-15 11:36:06 +00:00
Shams Asari
7afa3346d6 Updated docs and TODOs to be inline with recent changes to the doorman 2016-12-13 17:03:15 +00:00
Andras Slemmer
09e11f8435 rpc-kryo: Kryo register hidden jar url inputstream class 2016-12-13 11:51:14 +00:00
Patrick Kuo
a4201c7152 This fixes the node startup issue - https://github.com/corda/corda/issues/37 (#48)
* Create missing artemis bridge when node is added to the network map
* Added integration test for this issue
* addressed PR issues
2016-12-12 13:29:31 +00:00
Shams Asari
9d98673c66 Added commonName extension method to X500Name and helper class for x509 cert factories 2016-12-09 17:13:00 +00:00
Joel Dudley
ae349a8831 Adds todos that will improve java interop. 2016-12-09 14:30:52 +00:00
rick.parker
b52c52378f Move Future completion outside database transaction so that the effects of the flow will be externally visible at Future completion. 2016-12-09 09:21:59 +00:00
rick.parker
0378b8d785 Buffer observations until database commit. 2016-12-08 16:32:45 +00:00
Mike Hearn
5f603a94f0 Minor: add a TODO 2016-12-08 14:06:32 +00:00
Andrius Dagys
b57aec1962 Minor: make distributed notary test use a different folder on every run 2016-12-08 12:15:48 +00:00
Andras Slemmer
4fe1d48e4a demos: Fix demo RPC serialisation after rebase 2016-12-08 11:58:31 +00:00
Andras Slemmer
9117ec9860 Simplify InputStreamSerializer, make NODE_USER role explicit 2016-12-08 11:58:31 +00:00
Andras Slemmer
a601f0abf5 Local RPC, demos use RPC, NODE has special privileges 2016-12-08 11:58:31 +00:00
Matthew Nesbit
f63e6cd2a6 Add some hooks to StateMachineManager and NodeSchedulerService so that unit tests of flows with scheduled actions can safely test for completion of their test activities. Typically this is done using a while loop whilst there are active fibers, or schedules and then blocking on the ReusuableLatches until the status changes and can be re-evaluated.
Add unit tests of ScheduledFlow running on simulated network.

Just use existing DumyContract in test

DummyContract requires value equality so that assertEquals over states works as expected.

Remove blank line.

Add TODO on waitQuiescent.

Fix minor build error
2016-12-07 16:11:55 +00:00
Joel Dudley
03b5e9bced Address review comments. 2016-12-07 14:15:20 +00:00
joeldudleyr3
432015ddfe Adds JvmName annotations where necessary to improve interop when developing CorDapps in java. 2016-12-07 12:12:18 +00:00
Andras Slemmer
fd229df956 node: Add ClassSerializer, register default flow parameters for RPC 2016-12-06 13:55:18 +00:00
Matthew Nesbit
99219c6a5f Allow cordapp types to be used in parameters to cordapp startFlowDynamic RPC calls.
Add missing registration.
2016-12-05 16:57:22 +00:00
Shams Asari
10360ae8cf Converted MapChange into a sealed data structure so that only Modified has the previous node property 2016-12-05 10:04:31 +00:00
Shams Asari
4addb91f80 Added security to RPC and P2P systems. 2016-12-02 18:11:08 +00:00
Shams Asari
5432905b4a Clean up NetworkMapCache and InMemoryNetworkMapCache 2016-12-02 14:45:54 +00:00
Andrius Dagys
ad5d6f5cd4 DistributedImmutableMapTest: enable copycat client connection retry to avoid race conditions 2016-12-01 13:21:25 +00:00
Mike Hearn
d500bf8f50 Address review comments. 2016-11-30 15:11:35 +00:00
Mike Hearn
7b40be8361 Run the IntelliJ reformatter across the Kotlin code. Did not reformat JS/web code. 2016-11-30 14:40:34 +00:00
Andrius Dagys
8e836bc279 Distributed notary: configure Raft client retry to avoid race conditions 2016-11-29 11:07:22 +00:00
Andrius Dagys
4c6625559f Merged in andrius-dep-cleanup (pull request #569) 2016-11-28 18:28:28 +00:00
Ross Nicoll
f5ecddb4b2 Add get() method to identity service 2016-11-28 18:01:03 +00:00
Andrius Dagys
ef598d926f Include only required atomix dependencies. 2016-11-28 15:51:31 +00:00
Shams Asari
38876e3984 Introducing Future.getOrThrow() which throws the cause of the ExecutionException 2016-11-28 15:21:22 +00:00
Mike Hearn
7b2eb651be Suppress or fix the few remaining compiler warnings 2016-11-28 14:04:30 +00:00
Jose Coll
bc3550e3e6 Merged in colljos-kryo-observable-registration (pull request #544)
Kryo registration of Observable with explicit ID.
2016-11-28 13:31:51 +00:00
Andras Slemmer
811b0e6a8d Merged in aslemmer-warn-on-double-tx-record (pull request #546)
Check for duplicate transaction records
2016-11-28 10:34:34 +00:00
Andrius Dagys
946cfda03e Added a distributed notary demo that runs a notary cluster and gets several transactions notarised 2016-11-25 17:09:57 +00:00
Andrius Dagys
758ab6d359 Extended Driver api to allow custom config overrides. Added helper methods for creating a distributed notary cluster. 2016-11-25 17:09:57 +00:00
Andras Slemmer
44d1b79ef9 docs: Address PR 513 comments 2016-11-25 15:33:04 +00:00
Mike Hearn
aa629f74ca Change startup message of the day 2016-11-25 14:30:40 +01:00
Andras Slemmer
87bd97d0c7 Check for duplicate transaction records 2016-11-24 18:00:04 +00:00
Patrick Kuo
cd34f3ae16 Merged in pat-explorer-more-changes (pull request #505)
Pat explorer more changes
2016-11-24 17:47:01 +00:00
Rick Parker
44e09f3366 Merged in parkri-remove-intermittent-error-at-start (pull request #542)
Remove race condition and intermittent logged error at node start up regarding "Queue created for a peer that we don't know from the network map".
2016-11-24 16:30:14 +00:00
rick.parker
8ec21eedb3 quasarScan removal. 2016-11-24 16:27:51 +00:00
Patrick Kuo
fbf952a1ab Explorer corda branding 2016-11-24 15:46:50 +00:00
Jose Coll
f6f896d072 Kryo registration of Observable with explicit ID. 2016-11-24 15:39:08 +00:00
rick.parker
b20baff54c Remove race condition and intermittent logged error at node start up regarding "Queue created for a peer that we don't know from the network map". 2016-11-24 13:14:07 +00:00
rick.parker
7d387870d2 Fix annotation on JDBCHashMapTestSuite and class name typo. 2016-11-23 13:08:14 +00:00
rick.parker
f68529d1fd Rename protocol to flow. 2016-11-22 17:17:14 +00:00
Mike Hearn
6aa5f0a4b5 Minor: better plugin name printing in the banner 2016-11-22 15:04:15 +01:00
Mike Hearn
a70136f775 Minor: fix startup time calculation, fix demos to print things to stdout instead of log.info 2016-11-22 12:41:05 +01:00
Andrius Dagys
93505d5e2e Merged in andrius-rename-bits (pull request #508) 2016-11-22 08:26:37 +00:00
Mike Hearn
235cee6727 Add a startup banner and suppress console logging unless --log-to-console is passed on the command line. 2016-11-21 16:08:36 +01:00
Andrius Dagys
64299591c3 Rename PublicKeyTree -> CompositeKey and unify terminology across documentation. 2016-11-21 14:47:19 +00:00
Andrius Dagys
635ee8df79 Rename bits -> bytes, as it normally indicates a byte array 2016-11-21 13:02:27 +00:00
Andrius Dagys
9256056ebc Moved distributed notary tests to integration-test. Stopped using full date as the test folder name. 2016-11-21 09:59:08 +00:00
Andrius Dagys
0d56846b1b Added a distributed notary that uses the Raft consensus algorithm (implemented by Copycat).
The notary operates by storing committed input states in a map state machine which is replicated across the Copycat cluster.
2016-11-18 18:13:19 +00:00
rick.parker
6abb5750bf RPC Kryo plugin functionality. 2016-11-18 17:38:05 +00:00
Rick Parker
81d6195a07 Merged in parkri-jdbchashmap-lru (pull request #482)
LRU for JDBCHashMap loadOnInit=false, with tests.
2016-11-18 11:23:26 +00:00
rick.parker
5c1d81824e LRU for JDBCHashMap loadOnInit=false, with tests. 2016-11-18 11:22:25 +00:00
rick.parker
cd98b559bf Move jolokia access config to the config directories, alongside log4j2.xml file. Point samples at top level dev and test config. 2016-11-18 11:11:54 +00:00
Jose Coll
876b17bb12 Transaction notes now stored individually per row. 2016-11-17 17:57:07 +00:00
Rick Parker
0c9b03411a Merged in parkri-pending-messages (pull request #481)
Remove need for pending messages map/table and fix start up race between network map and protocols wanting to look up Party
2016-11-17 17:12:35 +00:00
rick.parker
996b2d13d5 Network map message filtering. Removal of pending messages. Needs cleaning up. 2016-11-17 17:11:10 +00:00
Mike Hearn
ae49c2bdb2 Java code in Node currently targets Java 6 due to the caplet, until we decide we need to separate it out. This file uses Java 7+ features so downgrade it, which fixes the build (for some reason I could not easily reproduce this failure) 2016-11-17 12:33:57 +01:00
Jose Coll
1427baf797 Transaction note retrieval now using indexed field on database table. 2016-11-16 14:07:16 +00:00
Jose Coll
5dfffb1b84 Re-applied changes following net.corda rebase. 2016-11-16 14:07:16 +00:00
Richard Green
d65ff747b3 Merged in clint-capletfix (pull request #466)
Fixed classpath augmentation for plugins.
2016-11-16 10:39:27 +00:00
Shams Asari
012fa855a1 Moved RPCUserServiceImplTest into correct package 2016-11-15 17:36:35 +00:00
Andras Slemmer
07df9f17b3 loadtest: Add loadtest code 2016-11-15 17:21:26 +00:00
Andras Slemmer
dcd7a8a08a Address PR 465 comments 2016-11-15 16:51:07 +00:00
Andras Slemmer
7f0dd1ab5b Generic startProtocol and typesafe wrappers, per-protocol permissions, CashProtocol, remove executeCommand, move almost all Cash-related things to :finance 2016-11-15 16:46:37 +00:00
Andrius Dagys
9b8f00ef84 Stop using "legally-Identifiable" signatures for the notary protocol 2016-11-15 16:08:42 +00:00
Andrius Dagys
e261167343 Merged in andrius-servicename-gen (pull request #475)
Allow specifying advertised service identity name in configuration, generate a name if none specified
2016-11-15 14:33:02 +00:00
Shams Asari
c326a9ae46 Moved the RPC user config out of the properties file and into the main config file 2016-11-15 12:52:08 +00:00
Andrius Dagys
73bc841b7c Allow specifying advertised service identity name in configuration, generate a name if none specified 2016-11-15 11:12:24 +00:00
Andrius Dagys
d00163e29d Stop using "legally-Identifiable" signatures for the notary protocol, as notary nodes will use their service identity to sign (and not the legal one). It also doesn't make sense to attach an identity on the signature if it's a group identity and the signer holds only 1 out of many keys. 2016-11-14 16:02:20 +00:00
Andrius Dagys
d855b10817 Nodes part of a group identity (e.g. notary) now advertise the whole group Party on the network. When sending a message to a group, a representative node advertising the group identity is first chosen (at random), and its legal identity is used for communication. Currently we assume that a single legal identity can't be advertised by more than one node (the PublicKeyTree of an identity is used for Artemis queue names and we need to do more work to properly map a single queue to multiple nodes) 2016-11-14 14:57:16 +00:00
Andrius Dagys
c33c55eb20 Replace PublicKey with PublicKeyTree in Party. A single entity can now be identified by more than one key. 2016-11-14 14:57:16 +00:00
Clinton Alexander
e3f685f674 Fixed classpath augmentation for plugins. 2016-11-10 18:07:11 +00:00
Mike Hearn
ce99f354cb Rename com.r3corda -> net.corda 2016-11-10 17:14:24 +01:00
Rick Parker
af8859ebf1 Merged in parkri-protocol-error-handling-fix (pull request #447)
Fix handling of node shutdown so protocols don't blow up when they encounter the messaging layer already shutdown.  Protocols will also stop resuming once shutdown has commenced.
2016-11-08 18:15:35 +00:00
rick.parker
fe6bf0e6ea Implement controlled stop of StateMachineManager. 2016-11-08 17:53:43 +00:00
Katarzyna Streich
103817ec57 Add signing of transaction merkle root hash. 2016-11-08 17:41:32 +00:00
Mike Hearn
686b53f768 Fix Cordapp docs which don't use the right gradle syntax. Minor tweaks in AbstractNode 2016-11-08 15:40:44 +01:00
Andras Slemmer
51e86e7cd3 node: Small cleanup 2016-11-08 11:20:10 +00:00
Matthew Nesbit
1c39780c22 Handle the timeout exception, which can happen if the scheduler overruns (e.g. during debugging, but also potentiallyu with slow callbacks). 2016-11-07 09:56:38 +00:00
Katarzyna Streich
71965b0792 Add serialization workaround for HashMaps inside states. Fix tests. 2016-11-04 17:21:11 +00:00
Shams Asari
bd89da458b Added nice extension methods for Path, which are more readable than the static methods from Files 2016-11-04 15:36:14 +00:00
rick.parker
143e3a063f Pending redelivery table name prefix added in line with other tables.
No longer delete all pending messages from the database and move into memory before putting back into the database again, which is vulnerable to failure.  Now we delete individual pending messages on successful redelivery.
2016-11-04 10:22:14 +00:00
Patrick Kuo
7f8608c981 Changing UI layout 2016-11-03 11:39:24 +00:00
Shams Asari
6d39b71bf9 Simple RPC access control, with a demo control on the cash RPCs 2016-11-03 10:46:25 +00:00
Jose Coll
1d25d23b73 Merge from master 2016-11-02 14:20:51 +00:00
Jose Coll
012dc9ec10 Merge branch 'master' into colljos-vault-code-clean-up-refactor 2016-11-02 11:20:21 +00:00
Jose Coll
a38b363e9d Fixed subtle bug in Cash Spending when processing for same Issuer with multiple refs. 2016-11-02 11:15:09 +00:00
Clinton Alexander
ad81ecf2f9 Merged in clint-todocleanup (pull request #432)
Removed unused files, cleaned up build scripts.
2016-11-02 11:06:10 +00:00
Rick Parker
847257c250 Merged in parkri-speed-up-integration-tests (pull request #434)
Speed up JDBCHashMapTestSuite by 3min on my laptop by avoiding Exposed table existence checks each time a map/table is created by re-using the map/sets across tests (after clear()-ing to reset their state).
2016-11-02 11:02:54 +00:00
rick.parker
b188bfda52 Speed up JDBCHashMapTestSuite by 3min on my laptop by avoiding Exposed table existence checks each time a map/table is created by re-using the map/sets across tests (after clear()-ing to reset their state). 2016-11-02 10:08:38 +00:00
Ross Nicoll
f26813c1ab Merged in rnicoll-cache-key-collision (pull request #425)
Error if multiple nodes match a key
2016-11-01 18:14:23 +00:00
Jose Coll
7e3c00c1ff Merged in colljos-pluginservicehub (pull request #427)
Added PluginServiceHub for use by Corda plugin service extensions.
2016-11-01 17:12:52 +00:00
Jose Coll
f415c497d9 Minor changes to address PR feedback and comments 2016-11-01 16:47:50 +00:00
Jose Coll
e449ba93c4 Minor fix following rebase to incoporate Ross changes to CashState definition. 2016-11-01 16:29:21 +00:00
Ross Nicoll
b4ee47bd33 Error if multiple nodes match a key
InMemoryNetworkMapCache.getNodeByPublicKey() previously returned null if multiple nodes matched
a given public key (for example if the same node is registered more than once with different
names). This is incorrect behaviour, as there is a match.
2016-11-01 16:27:54 +00:00
Ross Nicoll
e6a0f18436 Add diagnostics for web server and API plugin instantiation 2016-11-01 16:22:49 +00:00
Jose Coll
253a70f55e Fixed bug in generateSpending whereby Issuer Ref was not being checked. 2016-11-01 16:12:19 +00:00
Clinton Alexander
1e6cca4d5d Removed dead installDist configurations and moved Jolokia access to the correct resources dir. 2016-11-01 16:09:13 +00:00
Ross Nicoll
613a86c5d9 Remove deposit and issuanceDef fields
Remove deposit field from the FungibleAsset interface, and moved it into a fixed reference to
amount.token.issuer.
Remove issuanceDef field and replace it with amount.token.
2016-11-01 14:49:57 +00:00
Jose Coll
74dc0b7154 Exposed Vault Transaction Note functionality via RPC. 2016-11-01 12:46:41 +00:00
Jose Coll
d9f0a161e4 Addressed comments in PR review. 2016-11-01 12:05:48 +00:00
Jose Coll
c5500caf98 Minor changes to address PR feedback and comments 2016-11-01 11:39:11 +00:00
Jose Coll
308d7c1df7 Added PluginServiceHub for use by Corda plugin service extensions. 2016-10-31 17:15:06 +00:00
Jose Coll
96007cd777 Changed transaction notes type DB from 'blob' to 'text' 2016-10-31 15:07:34 +00:00
rick.parker
5898a15579 Upgrade H2 to 1.4 to fix curious file corruption issue encountered by Patrick. 2016-10-28 17:39:10 +01:00
Clinton Alexander
c3533bac7d Improved error reporting. 2016-10-28 13:46:43 +01:00
Clinton Alexander
fdbd67db5c Added some more error logging to Node. 2016-10-28 13:46:43 +01:00
Jose Coll
2ce310050e Revert incorrect merge commit. 2016-10-28 10:28:15 +01:00
Jose Coll
b46de0b964 Merge remote-tracking branch 'origin/colljos-vault-transaction-notes' into colljos-vault-transaction-notes
# Conflicts:
#	core/src/main/kotlin/com/r3corda/core/node/services/Services.kt
#	core/src/main/kotlin/com/r3corda/core/testing/InMemoryVaultService.kt
#	node/src/main/kotlin/com/r3corda/node/services/vault/NodeVaultService.kt
2016-10-28 09:59:58 +01:00
Jose Coll
369214a747 Additional method on VaultService to add notes to a transaction
Additional method on VaultService to retrieve notes for a transaction
2016-10-28 09:57:33 +01:00
Jose Coll
504ec42720 Additional method on VaultService to retrieve notes for a transaction 2016-10-27 16:35:26 +01:00
Jose Coll
f2e98ffba5 Merge branches 'colljos-vault-transaction-notes' and 'master' of https://bitbucket.org/R3-CEV/r3prototyping into colljos-vault-transaction-notes 2016-10-27 14:59:37 +01:00
Jose Coll
74e89181da Merge remote-tracking branch 'remotes/origin/master' into colljos-vault-code-clean-up-refactor
# Conflicts:
#	core/src/main/kotlin/com/r3corda/core/contracts/Structures.kt
#	node/src/test/kotlin/com/r3corda/node/services/NodeSchedulerServiceTest.kt

Fixed conflict.
2016-10-27 12:57:37 +01:00
Jose Coll
7d080c39df Merge remote-tracking branch 'remotes/origin/master' into colljos-vault-code-clean-up-refactor
# Conflicts:
#	core/src/main/kotlin/com/r3corda/core/contracts/Structures.kt
#	node/src/test/kotlin/com/r3corda/node/services/NodeSchedulerServiceTest.kt

Fixed failing CommercialPaper test
(caused by re-use of same database transaction context for vault across two different transaction participants)
2016-10-27 12:56:08 +01:00
Clinton Alexander
8f1329b03f Merged in clint-capletnode (pull request #413)
Moved the Corda Caplet to Node to clear out root src dir.
2016-10-25 09:37:32 +00:00
Clinton Alexander
af902ee4df Removed redundant whitespace. 2016-10-24 18:36:19 +01:00
Clinton Alexander
c18ed4b402 ProtocolLogicFactory now initiated before it is used. 2016-10-24 17:56:16 +01:00
Clinton Alexander
f92f7d8d56 NodeSchedulerService no longer takes a default protocol logic ref factory (because otherwise no protocols are whitelisted) and instead now uses the one constructed in the node. 2016-10-24 17:56:16 +01:00
Clinton Alexander
546f3e2bbf Removed dead plugin reference. 2016-10-24 17:56:16 +01:00
Clinton Alexander
2f5efb34d6 Removed the RatesFixProtocol and dependent code and moved to the IRS repo. 2016-10-24 17:56:16 +01:00
Clinton Alexander
b197a8fa66 Fixed comment on function definition. 2016-10-24 17:41:21 +01:00
Clinton Alexander
19a53ea12d Added prerequisite for using the test clock. 2016-10-21 17:29:59 +01:00
Clinton Alexander
71e1c39622 Fixed type of useTestClock. 2016-10-21 16:42:00 +01:00
Clinton Alexander
8631a64c66 Moved capsule to node to remove it from src. 2016-10-21 14:17:05 +01:00
Clinton Alexander
8f326824f3 Test fix and review fix. 2016-10-21 12:09:21 +01:00
Clinton Alexander
cbb8aa74f9 Replaced clock object with clock class and added documentation. 2016-10-21 11:32:29 +01:00
Clinton Alexander
54e002f654 Clock now instantiates via reflection to allow demo clocks to be passed in. 2016-10-21 11:32:29 +01:00
Clinton Alexander
622b5cabf7 Fixed merge conflict. 2016-10-21 11:32:29 +01:00