Commit Graph

585 Commits

Author SHA1 Message Date
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
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
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
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
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
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
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
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
Shams Asari
646ce8afe0 FlowException thrown by a flow is propagated to all counterparties 2017-01-31 13:30:33 +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
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
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
Shams Asari
c4e3b258c7 Introducing Observable.toFuture() extension method 2017-01-17 12:56:59 +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
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
Andrius Dagys
0867a05ad7 Merge pull request #96 from thschroeter/idempotent-notary-flow
Make NotaryFlow idempotent
2017-01-06 13:53:27 +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
Thomas Schroeter
bbc9c763e3 Detect duplicate inputs in NotaryFlow
Throw NotaryException when duplicate inputs are detected.
2017-01-05 08:09:49 +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
Thomas Schroeter
159ca9884f Make NotaryFlow idempotent
Alternatively, we could make the underlying UniquenessProviders
idempotent.
2016-12-31 09:26:18 +00: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
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
Andras Slemmer
a3138ab0dc Address PR comments 2016-12-15 11:37:15 +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
rick.parker
0378b8d785 Buffer observations until database commit. 2016-12-08 16:32:45 +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
Shams Asari
4addb91f80 Added security to RPC and P2P systems. 2016-12-02 18:11:08 +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
Ross Nicoll
f5ecddb4b2 Add get() method to identity service 2016-11-28 18:01:03 +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
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
Andras Slemmer
44d1b79ef9 docs: Address PR 513 comments 2016-11-25 15:33:04 +00:00
Andras Slemmer
87bd97d0c7 Check for duplicate transaction records 2016-11-24 18:00:04 +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
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
f68529d1fd Rename protocol to flow. 2016-11-22 17:17:14 +00:00
Andrius Dagys
64299591c3 Rename PublicKeyTree -> CompositeKey and unify terminology across documentation. 2016-11-21 14:47:19 +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
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
Shams Asari
012fa855a1 Moved RPCUserServiceImplTest into correct package 2016-11-15 17:36:35 +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
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
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
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
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
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
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
Jose Coll
f415c497d9 Minor changes to address PR feedback and comments 2016-11-01 16:47:50 +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
Clinton Alexander
1e6cca4d5d Removed dead installDist configurations and moved Jolokia access to the correct resources dir. 2016-11-01 16:09:13 +00:00
Jose Coll
74dc0b7154 Exposed Vault Transaction Note functionality via RPC. 2016-11-01 12:46:41 +00:00
Jose Coll
c5500caf98 Minor changes to address PR feedback and comments 2016-11-01 11:39:11 +00:00
Jose Coll
96007cd777 Changed transaction notes type DB from 'blob' to 'text' 2016-10-31 15:07:34 +00: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
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
Jose Coll
75f671a446 Decommissioned InMemoryVaultService service (all dependent Tests updated to use NodeVaultService) 2016-10-20 13:10:00 +01:00
Matthew Nesbit
30b7eec18c Remove the file based checkpoints and transactions from the tests.
Messages requiring redelivery to late registered handler persisted in database.

Remove spurious comment and make local val not var
2016-10-19 16:33:12 +01:00
Matthew Nesbit
4db1836996 Unify messaging services to have a database and not support client type connections when they should use the RPC connections. Also, push NodeInfo across to the driver via the web interface to remove that use of startClient.
Fix typo
2016-10-18 17:48:52 +01:00
Jose Coll
c23aea3997 Fixed broken tests caused by missing Transaction Context (when moving from InMemory to Db implementation of vault service in MockNetwork) 2016-10-18 10:27:12 +01:00
Jose Coll
62dfea2a1a Re-factoring of OnLedgerAsset generateSpend code (moved to VaultService) 2016-10-17 17:58:26 +01:00
Rick Parker
6a20f32a7a Merged in persistent-scheduler (pull request #405)
Persistent scheduler
2016-10-17 12:35:40 +00:00
rick.parker
6a25fcfe8c Persistent scheduler, with race condition removed. 2016-10-17 13:33:32 +01:00
rick.parker
962fdba0f8 Make transaction -> statemachine id mapping persistent. 2016-10-17 11:33:29 +01:00
Jose Coll
67b2d91b33 Re-factoring of CashBalances code (moved to VaultService) 2016-10-17 11:16:53 +01:00
rick.parker
02a9f8fe67 Remove SAME_THREAD executor and it's use in MockNetwork etc.
Remove all traces of unused optional Executor in messaging.
2016-10-12 12:02:28 +01:00
Matthew Nesbit
1f3b1f4df9 Transactions in database
Include basic unit tests of Transaction storage

Use Rick's column storage code as suggested in PR comments

Remove blank line
2016-10-11 17:49:15 +01:00
Shams Asari
e48e09f04e Session handshake optimised to carry the first send payload in the init message 2016-10-11 17:27:09 +01:00
Matthew Nesbit
1388454396 Never send transactions to the Notary that aren't signed by all parties. Toughen up to use validating Notary in general and put Client precheck into NotaryProtocol.
Rename method to better reflect its actions

Handle comments from PR

Correct indentation
2016-10-11 10:43:40 +01:00
Shams Asari
ac01b67549 Using the protocol ID for the protocol logger name 2016-10-10 13:45:43 +01:00
Matthew Nesbit
1e836edd78 Change ServiceType to a sealed class from an abstract class
Allow AdvertisedServices to have their own identity and keys. Also, rationalise legalIdentity onto the local node's NodeInfo which is available on ServiceHub

Fixup after rebase

Remove legal identity that was on storage service. Now access via myInfo.legalIdentity and key via keyManagement lookup.

Enforce singleton notary per node for now

Tidy up based upon Rick's suggestions

Handle PR comments

clean up imports

Fix typo

Fixup rename

Capitalise comment

Eliminate unused variable warning

Make changes based upon PR comments

Cleanup whitespace changes
2016-10-07 13:44:51 +01:00
Shams Asari
c3f824001d Removed unused ServiceRequestMessage class hierarchy and added sendRequest method 2016-10-06 10:27:35 +01:00
rick.parker
ec975b0426 Hibernate ORM implementation for states. 2016-10-05 11:40:27 +01:00
Andras Slemmer
3bb96f3f3e node: Fix after rebase 2016-10-05 10:40:18 +01:00
Andras Slemmer
5af0e97444 Refactor explorer and friends to use RPC, remove NodeMonitor* 2016-10-05 10:40:18 +01:00
Patrick Kuo
c57229a944 New gradle task for packaging certificate singing request utility jar. 2016-10-04 16:56:18 +01:00
Shams Asari
6b97fbb79f Removed ValidatingClient as notary behaviour is not client configurable 2016-10-04 15:20:36 +01:00
Shams Asari
5e6533eb8a Better use of Futures 2016-10-04 14:11:43 +01:00
Ross Nicoll
53ecb0ecd9 Constrain class type passed to registerProtocolInitiator() 2016-10-04 12:57:22 +01:00
Andrius Dagys
5efa0fd5b3 Advertised services now contain ServiceInfo which describes ServiceType and a service identifier. This will be used, e.g. for grouping distributed notary nodes into the same service cluster. 2016-10-04 11:36:26 +01:00
Matthew Nesbit
76808d36c3 Store protocol checkpoints in the DB, except during Single threaded MockNetwork activity, where we still use the file system based checkpointing. Make the Checkpoint acess a Sequence not an Iterable, so that we don't end up with all the checkpoints permanently resident in memory.
Split up storage initialisation so that there is less code copying in MockNode

Add header comment to DBCheckpointStorage class

Respond to PR comments

Resolve PR comments

Rename iterator on checkpoints

Fix typo

Fixup checkpoints in DB logic after Shams's PR

Delete duplicated code
2016-10-03 17:56:58 +01:00
Shams Asari
67fdf9b2ff Automatic session management between two protocols, and removal of explict topics 2016-10-03 15:21:27 +01:00
Andras Slemmer
43d18d46bb Add PartiallyResolvedTransaction to client 2016-10-03 10:17:41 +01:00
Clinton Alexander
7afb034b8c Merged in clint-vegacorechanges (pull request #380)
Corda Changes required for Vega
2016-09-28 16:28:15 +01:00
Clinton Alexander
43de27c4c1 Updated Corda in preparation for the merging of the Vega cordapp. Includes
some minor changes, including gitignore rule changes. The largest change
is replacing the current fresh key for each transaction with a single
static identity in preparation for aimproved and more fleshed out key
sharing infrastructure.
2016-09-28 14:39:41 +01:00
Andras Slemmer
5b10c207e0 Add StateMachine -> Recorded TX mapping stream and emit events on transaction records 2016-09-28 11:46:37 +01:00
Andras Slemmer
6c96517f6f core, node: Add RPC calls, change RPC init order 2016-09-28 10:32:22 +01:00
rick.parker
cb1fa83b67 Fix up database persistence to work with MockNetwork/MockNode without getting tangled up in the ThreadLocals. 2016-09-26 14:54:00 +01:00
Andras Slemmer
cfa5878ea2 Add StateMachineRunId, type for SMM Changes 2016-09-26 10:40:18 +01:00
Matthew Nesbit
a964073c2f Track message id's to deduplicate replays. Widen the auto-acknowledgement window of Artemis back to the default.
Use synchronized wrapper over set.

Drop discard message to trace level logging.

Fix code layout

Use lazy trace extension method

Track message id's to deduplicate replays. Widen the auto-acknowledgement window of Artemis back to the default.

Use synchronized wrapper over set.

Include tx message unique id in checkpointed data.

Add test for checkpointed resend

Fix bug in not getting UUID off message.

Tidy formatting

Add explanation comments to test asserts

Put unique id even on Client messages.

Tidy formatting
2016-09-26 10:12:50 +01:00
Matthew Nesbit
074964f919 Track message id's to deduplicate replays. Widen the auto-acknowledgement window of Artemis back to the default.
Use synchronized wrapper over set.

Drop discard message to trace level logging.

Fix code layout

Use lazy trace extension method
2016-09-22 15:18:24 +01:00
Patrick Kuo
eee18b55f5 Moved certificates path to node configuration 2016-09-22 14:28:12 +01:00
Ross Nicoll
80ccf4df34 Change keypair to "keyPair"/"key pair"
Change "keypair" to "keyPair"/"key pair" to correctly indicate it is two words,
not a single word.
2016-09-21 10:50:28 +01:00
Ross Nicoll
d38392093f Rename wallet monitor service to node monitor service 2016-09-21 10:26:20 +01:00
Ross Nicoll
ebda724f14 Change references to 'wallet' with 'vault' 2016-09-20 18:14:53 +01:00
Andras Slemmer
2640e600c8 Merged in aslemmer-node-explorer (pull request #311)
explorer ui v0.2
2016-09-20 12:02:09 +01:00
Patrick Kuo
9b4bf32fdc client certificate signing utility 2016-09-20 10:51:09 +01:00
Andras Slemmer
a23c1d019c node: Fix compile after rebase 2016-09-19 15:05:22 +01:00
Matthew Nesbit
478cb58dd6 Delay State Machine fiber start until network map cache is fully populated.
Add some unit tests of the late init behaviour.

Fix merge error

Change statemachine logic to use an in-memory only flag on checkpoints to track their materialisation during startup.

Add annotations for test method

Fix possible race condition on storing checkpoint objects

Correctly create checkpoint

Use then helper function

Cleanup imports
2016-09-19 12:15:33 +01:00
rick.parker
236a47104f Persitent network map and key service. Temporary persistence workaround for scheduler. 2016-09-16 12:14:56 +01:00
Patrick Kuo
1388747484 Permissioning server: added new node properties in node config for certificate signing request 2016-09-16 11:42:33 +01:00
rick.parker
17c9d231f4 Fix hanging test and fail fast on hang. 2016-09-15 16:39:58 +01:00
Shams Asari
8ea20dd0d2 Removed session IDs from the send and receive methods of ProtocolLogic and are now partially managed by HandshakeMessage 2016-09-14 15:26:55 +01:00
Rick Parker
53de66a23d Merged in cor-344-persistence-jdbc-transactions (pull request #353)
Add database transactions ready for more widespread persistence.
2016-09-13 10:48:48 +01:00
rick.parker
27cb1c3597 Introduce database transactions around message handling, web API and in protocols. 2016-09-13 10:47:50 +01:00
Mike Hearn
0e37547af0 Rename ArtemisMessagingClient to NodeMessagingClient to make the purpose clearer once we start landing the clientrpc framework. 2016-09-12 13:16:45 +01:00
Andrius Dagys
0ed6a0ef4d Added a persistent uniqueness provider, backed by a JDBCHashMap.
Enabled a single node persistent notary.
2016-09-12 10:15:03 +01:00
Matthew Nesbit
bf0721868e Move Interest Rate related classes out of :node to reduce dependency of :node module on any specific contract. (Currently only WalletMonitorService and CashBalanceAsMetricsObserver stop me removing the compil dependency of :node on :contracts rather than :core). This has required that I modify fixing protocol to require information on what class of Oracle to use. 2016-09-09 11:31:08 +01:00
Andras Slemmer
0fc560d20a node: Relax TwoPartyTradeProtocolTests so it only checks a subsequence of store accesses 2016-09-09 10:54:16 +01:00
Matthew Nesbit
9518c38f29 Ensure integration tests in modules are in separate configurations and not directly called from build or installDist. 2016-09-08 15:28:04 +01:00
Mike Hearn
fa4b503f81 Minor: rename UntrustworthyData.validate to UntrustworthyData.unwrap to better indicate its purpose and deprecate the old name. 2016-09-07 13:09:39 +02:00
Mike Hearn
49a0fd8fdd Improve the usability of SignedTransaction.verifySignatures taking into account how it is typically used. 2016-09-07 13:09:39 +02:00
Mike Hearn
1d272f89c2 Check the tx type in NotaryChangeProtocol and add a TODO to write a test for this once the protocol framework propagates exceptions. 2016-09-07 13:09:39 +02:00
Matthew Nesbit
2e1952a8a7 Get rid of the fake NodeInfo used to identify the NetworkMapService node.
Remove old comment
2016-09-06 18:25:12 +01:00
rick.parker
35274cd15c Refactor network map service in preparation for persistence.
Removed currently superfluous clock.
2016-09-06 18:21:06 +01:00
Andras Slemmer
9e993c5b86 Merged in aslemmer-generators-fixes (pull request #300)
Aslemmer generators fixes
2016-09-06 14:19:28 +01:00
Andras Slemmer
618f46cba4 node: Fix JsonSupportTest imports 2016-09-06 13:59:01 +01:00
Andras Slemmer
491b1abd4a contracts, core, node: Use entropyToKeyPair in Generators instead of manually creating keys 2016-09-06 13:54:59 +01:00
Andras Slemmer
89a5448c39 node, core: Add quickcheck generators for basic types, transactions 2016-09-06 13:54:58 +01:00
Mike Hearn
9d83a9b6d2 Minor: move transaction types out of the contracts package and into a new transactions package 2016-09-06 14:20:32 +02:00
Andras Slemmer
737fc0589c node: Add clock test for external interrupt on waiting strand 2016-09-06 09:52:43 +01:00
Shams Asari
97e1a59770 Refactored FiberRequest into cleaner ProtocolIORequest and fixed checkpoint regression 2016-09-05 14:42:54 +01:00
Andras Slemmer
ca1b0083ed node: Clean up messy issue in test 2016-09-01 18:15:47 +01:00
Andras Slemmer
dded4c6e8f node: FIx WalletMonitorService tests 2016-09-01 18:15:47 +01:00
Ross Nicoll
07f44e9e2a Move test code from node to test-utils 2016-09-01 11:15:05 +01:00
Ross Nicoll
232db9a1fd Move test utilities into their own package
This moves a lot of the test support code into its own package which is only imported for tests,
so it's not shipped as a part of core Corda. The node currently depends on this support code to
compile, although future work could try to separate this out. This change highlights that parts
of production code is dependent on test elements (i.e. dummy keys), and makes it harder for
such accidental crosses to occur later.

An integration test category is also added as part of this work, to contribute towards COR-345.
2016-08-31 15:40:54 +01:00
Ross Nicoll
ad8ffca0b4 Add CommitTransactionProtocol
Add new protocol which manages the entire process of taking a signed transaction ready
for notarisation, through notarisation and onto recording it both locally and informing
remote nodes.

This protocol also optionally can include the ClientToServiceCommand which triggered a transaction
being created, to give the remote nodes context on why a change occurred (i.e. "You are being sent
£100")
2016-08-25 16:30:39 +01:00
Matthew Nesbit
089ba2cb69 Only NetworkMapServer addresses can be publicly manufactured. Use identity publick key as addressing, with only bridges using the HostAndPort information
Fixup after rebase and fix issue with checking previous deployment of bridges

Correct comments on ArtemisMessagingClient constructor

Fixup rates fix demo

Get rid of when statements

Make NetworkMapCache send modify as well as add//remove events. Make inboxes for nodes persistent.

Suppress warnings

Fix message acknowledgement so that it actually consumes messages properly.

Change queueName to SimpleString to stop lots of wasted conversions

Get rid of spurious import

Tidy up and add comments

Update to include comments on PR

Remove unnecessary import
2016-08-25 15:56:50 +01:00
Mike Hearn
c8323099bb Minor: cleanup the commercial paper contracts.
There's no need for the notary to be specified in commands. A few other tweaks and additions found whilst refreshing the docsite.
2016-08-25 11:30:25 +02:00
Mike Hearn
3e330a2d36 Merged in mike-fix-walletfiller (pull request #277)
Rewrite the test wallet filler code to not be buggy.
2016-08-23 17:59:19 +02:00
Clinton Alexander
668fecfea7 Merged in clint-no-notary-error (pull request #283)
Fixed bug when incorrect notary service type is specified.
2016-08-22 16:41:38 +01:00
Mike Hearn
097bb033c4 Rewrite the test wallet filler code to not be buggy. 2016-08-22 16:26:32 +02:00
Andras Slemmer
5f33bedc13 node-driver: Polling doesn't timeout, just prints warning 2016-08-19 17:05:00 +01:00
Andras Slemmer
9cbdf001fb node-driver: Return Futures instead of waiting for full node startup 2016-08-19 17:05:00 +01:00
Matthew Nesbit
696b9741dd Remove ClashingThreads exception by tightening up unique id on LinearState to be a secure random value, with constraints that it cannot be duplicated. Also, rename to linearId rather than the confusing thread.
Try providing a helper interface to encourage enforcing LinearState rules

Fixup after rebase

Change to using Clauses for verifying LinearState standard properties

Fix whitespace change

Tidy up ClauseVerifier after PR comments

Change from SecureHash to a TradeIdentifier class

Change TradeIdentifier to UniqueIdentifier
2016-08-19 11:52:16 +01:00
Mike Hearn
db3aa1491c Upgrade Quasar to 0.7.6 and fix an exception handling bug in SMM that it revealed (if an exception was thrown immediately on protocol startup we let it leak instead of capturing it in the future. 2016-08-17 14:43:45 +01:00
Ross Nicoll
a9ec3c253e Merged in rnicoll-notify-tx (pull request #282)
Add observable for transactions being stored
2016-08-16 14:50:55 +01:00
Clinton Alexander
85dce390f4 makeNotaryService now enforces post condition with type system. 2016-08-16 09:21:29 +01:00
Andras Slemmer
9d9164980e Merged in andrius-driver-fix (pull request #280)
DriverTest fix: get quasar.jar location from the classpath
2016-08-15 17:31:02 +01:00
Mike Hearn
a451000623 Merged in mike-fix-artemis-threading (pull request #276)
Messaging layer improvements
2016-08-12 19:07:54 +02:00
Mike Hearn
3d391ec8c2 Add unit tests for the resolve transactions protocol 2016-08-12 17:14:54 +02:00
Ross Nicoll
a3d37a4d00 Require notary to be explicitely stated on each transaction 2016-08-12 15:51:04 +01:00
Ross Nicoll
17ae349f4d Remove support for timestamp commands 2016-08-12 13:51:34 +01:00
Mike Hearn
cba0427e01 Make ArtemisMessagingClient blocking and require the user to directly enter a message loop. This cleans up a few things and ensures we can't get caught out by messages being arbitrarily re-ordered as they pass through any Artemis thread pools. 2016-08-12 14:06:03 +02:00
Ross Nicoll
8346c58d4c Add observable for transactions being stored
Add observable for transactions being stored, so the UI can show transactions as they're received, rather than being
limited to the summarised version available from the wallet service.
2016-08-12 11:58:17 +01:00
Andrius Dagys
cd344058d2 Driver: get quasar.jar location from the classpath instead of a constructor parameter 2016-08-12 11:41:15 +01:00
Mike Hearn
ac81d2aa32 Messaging layer improvements:
- Fix thread safety issues in ArtemisMessagingClient. The Artemis API isn't thread safe, but that isn't well documented and it will happily invoke callbacks in parallel.
- Add discussion of how we tackle threading currently in the codebase and make a few other improvements.
- Add a shutdown hook so we stop properly when the user presses ctrl-c
2016-08-11 14:16:05 +02:00
Andras Slemmer
1b98c32579 Merged in node-driver (pull request #253)
Node driver
2016-08-10 14:21:16 +01:00
Ross Nicoll
cf40e0db70 Add WalletMonitorService 2016-08-09 18:24:14 +01:00
Andrius Dagys
8386100677 Remove BriefLogFormatter as the formatting is now handled by Log4j configuration. Introduce LogHelpers which now handles the custom log level setting for specific loggers. 2016-08-09 17:31:27 +01:00
rick.parker
d883b3f134 First working hand-rolled persistent wallet
First working Exposed-assisted persistent wallet

Cleaned up Exposed-based persistent wallet

Cleaned up warnings

Fixed up some generic types

Improved comments

Fix up TODO comment

Hikari and config integration

Fix existing tests

Clean up after looking at PR

Clean up commented out lines

Fix initialisation of IRS demo leaving database open

Fix up after rebase

Review feedback.  Main change is lazy wallet iteration.

Rebased and incorporated config changes.

Use standardised config loading.  Make wallet cash test use persistent wallet.

Added test to ensure wallet retains state in database across instance creation.

Tidy up whitespace and fix bug in test.
2016-08-09 16:41:32 +01:00
Andras Slemmer
f20322136f Revert "Merged in node-driver (pull request #253)"
This reverts commit af893e0af5, reversing
changes made to 7357597501.
2016-08-09 16:19:18 +01:00
Andras Slemmer
5b2c687c64 node-driver: Hacky fix of startup race condition 2016-08-09 15:27:27 +01:00
Andras Slemmer
df4413ab68 node: Add extra Driver checks for node shutdown, extend try/finally scope of cleanup 2016-08-09 15:27:27 +01:00
Andras Slemmer
feecc36661 node: Address PR comments, better resource releasing, add kdoc 2016-08-09 15:27:27 +01:00
Andras Slemmer
773d53b4c8 node: Load config from disk in Driver, further cleanup 2016-08-09 15:27:27 +01:00
Andras Slemmer
8cf635cf74 node: Expose ArtemisMessagingService.Address 2016-08-09 15:27:27 +01:00
Andras Slemmer
3bc62fdb95 node: Add driver dsl test, expose some needed functions 2016-08-09 15:27:27 +01:00
Mike Hearn
87047c8996 Minor: fix various inspector warnings and delete some dead code. 2016-08-09 11:55:40 +02:00
Mike Hearn
8c00b5284d Merged in mike-ledgertx-refactoring (pull request #264)
Refactor the core transaction types
2016-08-08 18:02:32 +02:00
Andrius Dagys
8d3a3197b9 Split up ArtemisMessagingService into ArtemisMessagingClient & ArtemisMessagingServer. If a Node is given a messagingServerAddress, it will only run a client and attempt to connect to the server at the provided address. By default, it will run both client & server locally 2016-08-05 14:02:32 +01:00
Mike Hearn
701fc853ad Refactor the core transaction types to improve clarity, simplify verification and prepare for sandboxing.
Changes include:
- LedgerTransaction is now much more central: it represents a fully resolved and looked-up tx, with the inputs available.
- TransactionGroup and TransactionForVerification are gone. There is a temporary TransactionForContract class for backwards
  compatibility but it will also be gone soon.
- ResolveTransactionsProtocol is simplified, and now commits a tx to the database as soon as it's determined to be valid.
- ServiceHub is now passed in more consistently to verification code, so we can use more services in future more easily e.g. a sandboxing service.
- A variety of APIs have been tweaked or documented better.
2016-08-04 13:05:50 +02:00
Mike Hearn
c2aee2d4e8 Minor: Replace MockServices with a new class that's in core instead of node, old class becomes MockServiceHubInternal. 2016-08-04 12:53:09 +02:00
Mike Hearn
1c3379f508 Testing: make the ledger DSL take a ServiceHub rather than individual services.
It defaults to a fresh UnitTestServices(). Also clear up a few other areas.
2016-08-04 12:52:02 +02:00
Mike Hearn
ba05b90b8f Testing: change fillWithTestCash to issue cash under the DUMMY_CASH_ISSUER identity and adjust code that uses it. Introduce some code that'll prove useful later in WalletWithCashTest.
This change reduces the  testing confusion that can occur when cash is issued by one of the parties in a transaction rather than e.g. a neutral third party like a central bank.
2016-08-04 12:52:01 +02:00
Ross Nicoll
fc804ec746 Add NotifyTxProtocol
Add a protocol for notifying remote nodes of a transaction that may interest them
(typically this means involves them).
2016-08-03 17:10:26 +01:00
Mike Hearn
b40fee1512 Allow for easier conversion from Amount<Issued<T>> to Amount<T> and de-issuerify a few places. 2016-08-01 16:42:56 +02:00
Ross Nicoll
cf4bb0c9af Break down topic into component parts
Break down what is referred to as "topic" of a message into its component parts. This splits the
general topic from the session ID, so it's clear where a session ID is provided, and whether any
given topic string includes a session ID or not.
2016-07-29 14:24:46 +01:00
Matthew Nesbit
a462bb1d6a Incorporate comments from PR 2016-07-28 16:30:53 +01:00
Matthew Nesbit
10f68b22f9 Minor fix after rebase 2016-07-28 13:39:16 +01:00
Matthew Nesbit
235497e0f4 Convert long lived services supporting protocol listeners to plugins 2016-07-28 13:39:12 +01:00
Matthew Nesbit
09c795e341 Merge remote-tracking branch 'remotes/origin/master' into mnesbit-cor-261-artemis-over-ssl 2016-07-28 13:28:31 +01:00
Ross Nicoll
ec726da7d0 Merged in rnicoll-warnings (pull request #246)
Correct warnings
2016-07-28 13:03:55 +01:00
Matthew Nesbit
7d5ee8ba08 Create MessageServiceInternal interface to allow NetworkMapCache to register addresses with the network service.
Activate WhitelistTrustManager for now to secure the TLS messaging.
2016-07-28 11:25:57 +01:00
Ross Nicoll
d54beca77e Add wallet service for notifying remote nodes of transactions 2016-07-27 17:40:52 +01:00
Ross Nicoll
aaaf6ea4f6 Correct warnings 2016-07-27 17:11:46 +01:00
Matthew Nesbit
e3aef96b09 Merge remote-tracking branch 'remotes/origin/master' into mnesbit-cor-261-artemis-over-ssl
# Conflicts:
#	build.gradle
2016-07-27 15:43:01 +01:00
Matthew Nesbit
e5777fd999 Fetch KeyStore passwords from NodeConfiguration 2016-07-26 10:35:57 +01:00
Matthew Nesbit
00f897d58d Add X509 creation and manipulation utilities to core and enable SSL in ArtemisMQ 2016-07-26 10:35:54 +01:00
Ross Nicoll
2f04d876ae Move FiberRequest out to a top level class
Move FiberRequest out to a top level class, both because it is expanding as functionality is added,
and to enable alternative state machine implementations to share it.
2016-07-24 09:30:16 +01:00
Ross Nicoll
31ee8ab60b Rework checkpoint storage to include the FiberRequest
Rework checkpoint storage to include the FiberRequest, so that different requests can be supported.
2016-07-22 16:40:15 +01:00
Ross Nicoll
c92d51a0b6 Correct processing of unhandled messages
Unhandled messages in the in memory messaging network can disrupt runNetwork(), as they
result in getNextQueue() returning null, irrespective of whether there is further work
which could be done. This modifies the flow to loop through the remaining transfers on
the queue before giving up, rather than stopping after the first.
2016-07-19 14:19:57 +01:00
Andrius Dagys
c442cd01a7 Merged in andrius-cleanup-tweaks (pull request #208)
Remove the "verify correct notary has signed" check from TwoParty protocols
2016-07-18 10:40:25 +01:00
Ross Nicoll
254592dc54 Move protocols into correct package 2016-07-12 18:42:00 +01:00
Mike Hearn
0a2f313d40 Minor: run IntelliJ 'code cleanup' 2016-07-11 18:15:28 +02:00
Mike Hearn
41d092a169 Minor: optimize imports 2016-07-11 18:15:28 +02:00
Mike Hearn
cc22810b09 Testing cleanup:
- Move code out of ambiguously named TestUtils files (there were three). Sometimes it's simpler to just put these things into the contract source files directly.
- Remove JavaTestHelpers objects (there were three), in favour of just giving the top level kotlin file class better names.
- Misc other small tweaks and cleanups.
2016-07-11 16:22:02 +02:00
Ross Nicoll
6b775ebd4d Replace named timestamping authority with notary
As the timestamping authority is now always the notary service, contracts should
no longer be using name-based lookup of the timestamping authority (as this will
generally be wrong). This introduces a new "timestamp" property on a transaction,
and updates most contracts to refer to it.

In some cases (IRS, CommercialPaper) there are transactions with no input states
to derive notary from, that use timestamps. In these cases a notary is specified
in the command.
2016-07-11 14:54:36 +01:00
Andras Slemmer
4324e33fea testdsl: Removed R type parameter, unify verifies() interface 2016-07-11 14:25:27 +01:00
Andras Slemmer
cd0299f650 testdsl: Javadoc comments 2016-07-11 14:25:27 +01:00
Matthew Nesbit
1fb4371de9 Make the IRS Demo web api an api plugin (scanned from the Node classpath) and use the same permission checking entry point for web api's as the scheduler.
Fix whitespace

Change ProtocolLogicRefFactory to use Map<String, Set<String>> as whitelist definition
2016-07-08 10:34:30 +01:00
Andrius Dagys
fb93b86d6b Move test class into correct package 2016-07-07 15:51:47 +01:00
Andrius Dagys
b498928f75 Remove the "verify correct notary has signed" check. This is no longed necessary as the required notary key is added to the "signers" list during transaction construction. We have general validation rules that check the correct notary was included in the signers list, and that we have signatures for all "signers". 2016-07-07 13:22:30 +01:00
Andras Slemmer
f177b1ffaa test dsl: LastLineShouldTestForVerifiesOrFails->EnforceVerifyOrFail 2016-07-06 13:25:08 +01:00
Andras Slemmer
e31b769fef test dsl: Dsl->DSL, add top-level transaction primitive, add ledger-embedded signAll, other cosmetics 2016-07-06 13:25:08 +01:00
Andras Slemmer
e3d6f51049 contracts, core, node: Port TransactionForTest tests to new DSL 2016-07-06 13:25:08 +01:00
Andras Slemmer
cde315aca9 contracts, node: Port CommercialPaperTests, TwoPartyTradeProtocolTests and GroupToGraphConversion to use new dsl 2016-07-06 13:25:08 +01:00
Shams Asari
5c0e7fbbf2 Moved topic parameter from send/receive methods to a ProtocolLogic property 2016-07-05 15:12:25 +01:00
Ross Nicoll
2121824662 Rename com.r3cord.contracts.cash package to ...asset 2016-06-30 13:31:59 +01:00
Shams Asari
a02263937c send and sendAndReceive use Party for the destination 2016-06-30 12:04:39 +01:00
rick.parker
5271882dcd Event scheduling and docs for event scheduling 2016-06-30 08:51:52 +01:00
Ross Nicoll
779034691e Add AbstractTransactionSubstitutionProtocol
Abstracts the NotaryChangeProtocol to be extensible for other use-cases.
2016-06-29 17:16:46 +01:00
Mike Hearn
2dfcff1f31 Testing: Fix the wallet filler code. 2016-06-24 17:13:27 +02:00
Andras Slemmer
ac69f566c9 node: Add another test testing correct LinearState sequencing 2016-06-23 18:06:57 +01:00
Andras Slemmer
3a84e2fe9d node: Add test for LinearState thread clash 2016-06-23 18:06:57 +01:00
Andrius Dagys
aaeb99ac25 Validating notary: check for missing signatures. The notary can only sign if all other signatures are present
Please enter the commit message for your changes. Lines starting
2016-06-23 16:15:14 +01:00
Mike Hearn
7ee6bd05ce Refactor the wallet code:
- Rename NodeWalletService to InMemoryWalletService and move into the core module where it's available for unit testing.
- Make a new NodeWalletService that just inherits from InMemoryWalletService and doesn't customise it at all, for now.
- Take the cash specific functionality out of Wallet and into an extension property in the Cash contract (this compiles as CashKt.getCashBalance(wallet) for java users).
- Return the generated states in the fillWalletWithTestCash function.
2016-06-22 14:49:52 +02:00
Mike Hearn
f3d4639059 Testing: make the WalletFiller code a file-level singleton and fillTestWithCash an extension method. For Java users not much changes, the class is still called WalletFiller and the signature remains the same. Re-order some arguments to make it easier to use when accepting the defaults. 2016-06-22 14:49:52 +02:00
Mike Hearn
cdb3e2f126 Minor: move WalletFiller from node.testing to contracts.testing 2016-06-22 14:49:52 +02:00
Shams Asari
411fd1aeb3 Upgraded to artemis 1.3.0 so that exceptions are thrown if something goes wrong on startup 2016-06-20 14:29:27 +01:00
Ross Nicoll
a5e07c2600 Require all transactions are added via the ServiceHub.recordTransaction() function 2016-06-20 14:24:55 +01:00
Andras Slemmer
6eab61a6a1 node: fix hanging test 2016-06-20 12:37:42 +01:00
Andras Slemmer
08e6333284 node: Add sendManuallyPumped parameter to test 2016-06-20 12:37:42 +01:00
Andras Slemmer
fbbff9fad2 node: remove test that tested buffering logic in IMMN 2016-06-20 12:37:42 +01:00
Andras Slemmer
03c1550394 node: add ability to pump sending as well as receiving, expose both streams 2016-06-20 12:37:42 +01:00
Andrius Dagys
30ca340b6e Refactored NotaryChangeProtocol and tests: moved the proposal verification step into the protocol.
Added another proposal verification step in the NotaryChangeProtocol.
Added the cause exception message to the 'notary change refused' error.
2016-06-17 15:05:35 +01:00
Andrius Dagys
0a5b7ace35 Made TransactionBuilder abstract. Every transaction type now needs to implement and provide its own Builder. This is required since for specific types we need to run different logic when adding new items to the transaction. For example, when adding a new input state to a transaction of type NotaryChange we need to add all of the states participants to the signers list. 2016-06-17 15:05:35 +01:00
Andrius Dagys
9958b5c603 Added 'signers' property to the transaction data models. Signers holds the list of all public keys that need to be signed for (command keys and additional ones such as notary).
Removed Notary & ChangeNotary commands, keys to be signed for are added to the signers list during transaction build phase.
2016-06-17 15:05:35 +01:00
Andrius Dagys
70495a021e Introduce TransactionState, which wraps ContractState and holds the notary pointer.
Remove notary from ContractState.
Introduce TransactionType, which specifies custom validation logic for a transaction.
2016-06-17 15:05:35 +01:00
Andrius Dagys
3b1e020082 Extended the data model so that every state has to define a set of 'participants' - parties that are able to consume that state in a valid transaction.
Added protocol for changing the notary for a state, which requires signatures from all participants
2016-06-17 15:05:35 +01:00
Shams Asari
7f3458803c Protocols can use the serviceHub lazily in their constructors 2016-06-17 10:30:25 +01:00
Ross Nicoll
ad72f3e48f Add issuer to cash amounts
Add issuer of a cash when referring to amounts of cash (except for the very few cases where
the issuer is not important, such as when referring to aggregated totals across a set of
issuers). Replaces CommonCashState with TokenDefinition, as a more accurate reflection of
what the class represents.
2016-06-16 15:05:49 +01:00
Ross Nicoll
d6a79b7bae Minor: Pass reference into fillWithSomeTestCash()
Reference is now a parameter to fillWithSomeTestCash() so that the caller can be
clear on the reference to use.
2016-06-16 15:04:33 +01:00
Shams Asari
860353c4d4 Initial checkpoint when protocol is first added 2016-06-16 09:54:49 +01:00
rick.parker
73cbab0084 Pull out Wallet observable into it's own branch
Review feedback

Review feedback

Apply feedback from previous PR

Apply feedback from previous PR

Apply feedback from previous PR

PR feedback

PR feedback

PR feedback
2016-06-10 17:16:56 +01:00
Shams Asari
2365f9bca5 Persisting transactions to disk 2016-06-08 10:15:14 +01:00
Andrius Dagys
21f53a7d3e Revert "Revert "Merged in validating-notary (pull request #123)""
This reverts commit e64145991e.
2016-06-07 13:53:00 +01:00
Ross Nicoll
f4f0e160d2 Genericise Cash contract to support non-Currency things
Split the verification and commands for the Cash contract into a new AbstractCashLike
class, and make Cash a concrete implementation of that class, specialised for dealing
with Currency as the underlying token.
2016-06-07 13:49:26 +01:00
Andrius Dagys
e64145991e Revert "Merged in validating-notary (pull request #123)"
This reverts commit d9f4e4da2e, reversing
changes made to 654dc3f60a.
2016-06-07 12:29:27 +01:00
Andrius Dagys
c45bc0df20 Split up Notary protocol into Client and Service parts. The Service protocol can be extended to provide additional transaction processing logic, e.g. validation.
Implemented a Simple and Validating Notary services.
2016-06-07 10:58:34 +01:00
Shams Asari
654dc3f60a Resuming from checkpoints now working - seller (but not buyer) in trader demo can be restarted 2016-06-06 17:49:40 +01:00
rick.parker
8122e35a8a Have ServiceHub entries implement SerializeAsToken so they are not copied into protocol checkpoints. 2016-06-06 16:55:46 +01:00
Ross Nicoll
d7b367965f Genericise Amount class
Make the Amount class generic so it doesn't have to represent a quantity of a
currency, but can handle other things such as assets as well, or extended detail
(for example a currency-issuer tuple).
2016-06-01 11:58:13 +01:00
Ross Nicoll
fc62010da6 Move cash contract into its own package 2016-05-31 17:07:36 +01:00
Mike Hearn
fac38e1f3f Attempt to fix AffinityExecutorTest and fix an IDE hint.
This test sometimes fails on Jenkins but I can't reproduce the failure here. There is a race in the tests though, I think this should fix it.
2016-05-25 12:27:57 +02:00
rick.parker
0b2c16be67 Changes to packages after refactor 2016-05-24 11:48:04 +01:00
rick.parker
f8e610aa71 Re-apply changes 2016-05-24 09:41:00 +01:00
Matthew Nesbit
63a5fd1b9e Add com.r3corda to all namespaces. 2016-05-23 14:53:56 +01:00
Matthew Nesbit
06f4c6ab5b Move test to core as part of tidy up. 2016-05-19 14:10:25 +01:00
Matthew Nesbit
5d054c8ab3 Rename node.core to node.internal from Rick's suggestion not to use core outside of the core package. 2016-05-19 12:07:14 +01:00
Matthew Nesbit
01e9536444 Refactor code into clear core, contracts and node namespaces. Move services into clear implementation and api sides. Push unit tests down to lowest level of dependency hierarchy possible. 2016-05-19 10:59:10 +01:00
Matthew Nesbit
c8130581a9 Push internal subsystems into node 2016-05-19 10:59:07 +01:00
Mike Hearn
8bcc6bdf1c Testing: expose the full message transfer record (with sender and recipients) when iterating a mock network and simulation.
This is useful for the visualiser to exclude uninteresting interactions.
2016-05-17 17:56:32 +02:00
Mike Hearn
5de2ba4ef9 Tweak the simulation so that the startup sequence of the network (with map registration etc) can be observed. 2016-05-17 17:56:31 +02:00
Andrius Dagys
4affe7271b Seller: Verify that the Notary signature received from the Buyer is by the correct Notary 2016-05-17 12:14:14 +01:00
Matthew Nesbit
988e00099d Capture file moves to separate Node implementation code into its own gradle module and leave only demo code in top level src folders.
I have to temporarily break\disable the IRS demo to which has a circular dependency. Will fix next.
2016-05-14 17:57:41 +01:00