257 Commits

Author SHA1 Message Date
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 af893e0af5fa5938275e09e1fb83c5efb55398a6, reversing
changes made to 7357597501044f035479ceb4a2d5ef125a3faf33.
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