Commit Graph

2138 Commits

Author SHA1 Message Date
rick.parker
97e04ba7d0 Fix registration of services due to Kryo not following synthetic fields by default
Review feedback
2016-06-07 16:29:59 +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
f7c0756526 Add a dummy test to NonEmptySetTest.Guava
Add a dummy test so that when IntelliJ (incorrectly) scans NonEmptySetTest.Guava
looking for tests, it finds one and doesn't complain.
2016-05-25 10:17:02 +01:00
Ross Nicoll
e3727a1de6 Merged in rnicoll-base58-tests (pull request #113)
Port Base58Test to Kotlin
2016-05-24 18:20:56 +01:00
Rick Parker
570dc38423 Merged in cor-133-clock-helpers (pull request #112)
MutableClock for testing, simulation and demos plus associated utilities
2016-05-24 17:58:37 +01:00
Ross Nicoll
4744740913 Add NonEmptySet
Add a new set-like collection which is constrained to ensure it's never
empty.
2016-05-24 15:39:24 +01:00
Ross Nicoll
40b6b0d186 Port Base58Test to Kotlin 2016-05-24 14:20:53 +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
d1e8d15d9d Merge branch 'mnesbit-cor-174-refactor-namespaces' of https://bitbucket.org/R3-CEV/r3prototyping into mnesbit-cor-174-refactor-namespaces
# Conflicts:
#	core/src/main/kotlin/core/testing/TestUtils.kt
2016-05-20 16:56:41 +01:00
Matthew Nesbit
1d5f409c66 Remove unnecessary .Companion statements brought in during refactoring. 2016-05-20 16:43:03 +01:00
Matthew Nesbit
60ff42dd30 Move test to core as part of tidy up. 2016-05-20 16:43:02 +01:00
Matthew Nesbit
69cba98ddc Push unit tests that needed some contract functionality into core by embedding the minimal contract support needed. 2016-05-20 16:43:02 +01:00
Matthew Nesbit
f6f56797ce 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-20 16:42:59 +01:00
Matthew Nesbit
a556dfb17d Push internal subsystems into node 2016-05-20 16:42: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
097a520e05 Push unit tests that needed some contract functionality into core by embedding the minimal contract support needed. 2016-05-19 14:01:38 +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
rick.parker
041aab5af0 Serialization tokenization support for large objects (e.g. entries in ServiceHub) 2016-05-18 10:25:50 +01:00
Andrius Dagys
e8ae3be38d TwoPartyDealProtocol fix: don't check Notary identity if the transaction has no inputs 2016-05-18 10:06:30 +01: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
Andrius Dagys
f363439a6c NotaryException now provides the specific error information 2016-05-17 12:14:14 +01:00
Matthew Nesbit
058ac986bd Move contracts base files to namespace to make api aspect clearer in includes.
Move Party to core.crypto as Party is closely aligned with the signing and used in code areas unrelated to the contract code.
2016-05-14 13:47:07 +01:00
Andrius Dagys
422d65cc54 Rearranging interfaces and implementations. Notary fix for the cash tests. 2016-05-13 16:34:25 +01:00
Andrius Dagys
2c422bebd3 Added noneOrSingle extension method, which returns a single element, null if no elements found and throws if more than one element found 2016-05-13 16:17:50 +01:00
Andrius Dagys
fa3f7e7fa6 Added a basic Notary service with protocol for signing transactions 2016-05-13 16:17:50 +01:00
Rick Parker
539e23a0b1 Merged in plt-141-moves-only-part-3 (pull request #93)
File and interface moves to core module for scheduler
2016-05-13 15:17:32 +01:00
Ross Nicoll
25e2c4bc4d Add issuance definition for cash contract
Add issuance definition for cash contract, as well as common interfaces to support later
extensions. The issuance definition encapsulates the core values for state objects when
issued, and essentially acts as the Ricardian contract for Corda states.
2016-05-13 14:55:12 +01:00
rick.parker
030f12876f Remove copyright notices from a couple of files 2016-05-13 14:12:28 +01:00
rick.parker
1ce8a64938 File and interface moves to core module 2016-05-13 14:03:28 +01:00
Rick Parker
3ee601360e Merged in plt-141-moves-only-part-2 (pull request #92)
File moves to core module and split of interfaces and implementations in preparation for further moves
2016-05-13 13:22:08 +01:00
rick.parker
e319a33b52 Added TODO to ServiceHub and CheckpointStorage 2016-05-13 12:37:39 +01:00
Mike Hearn
81c698a260 Minor: fix some compiler warnings 2016-05-13 12:58:17 +02:00
rick.parker
6017179bc0 File moves to core module and split of interfaces and implementations in preparation for further moves 2016-05-13 11:35:45 +01:00
rick.parker
a18e7b06bf File moves to core module and split of interfaces and implementations in preparation for further moves 2016-05-13 10:07:44 +01:00
Ross Nicoll
2d4c83556e Annotate verify() function to indicate it throws IllegalArgumentException 2016-05-09 18:16:33 +01:00
Ross Nicoll
642b951bae Rename PartyReference to PartyAndReference 2016-05-09 17:55:37 +01:00
Ross Nicoll
73f4803b72 Move common move command verification into a shared function 2016-05-05 11:12:25 +01:00
Ross Nicoll
47401a2a28 Merged in rnicoll-signed-data (pull request #69)
Add SignedData class
2016-04-27 13:16:42 +01:00
Ross Nicoll
7c9cff799e Add SignedData class
Adds a new SignedData class which will provide a deserialized copy of the data
contained only if the signature on it is valid.
2016-04-27 13:16:01 +01:00
Ross Nicoll
c8865c1b40 Remove deregisterIdentity()
Remove the ability to remove registered identities. Once registered, identities are part
of a permanent record (for example you would want to ensure parties to contracts cannot
"disappear" by removing themselves from the identity service).
2016-04-27 11:43:10 +01:00
Ross Nicoll
b4513e8bec Add InMemoryIdentityService
Move FixedIdentityService to MockIdentityService under testing as it's specialised for use in tests.
Add a new InMemoryIdentityService replacing the fixed identity service in AbstractNode.
2016-04-21 17:10:43 +01:00
Mike Hearn
e88907dd41 Delete unnecessary service IDs. Only services exposed to the wider network need this type of identifier. 2016-04-20 15:28:59 +02:00
Mike Hearn
fcc36c472a Improve the contracts API and Cash contract a bit, and beef up the unit tests.
Better usage of generics in groupStates so the group exposes the grouping key that was used, this avoids constructs like `val issuer = outputs[0].deposit.party` which is a bit ugly.
2016-04-20 14:36:14 +02:00
Mike Hearn
2de44a516f Switch Kryo serialisation to always include the class name, and avoid overhead from writing out SerializedBytes wrapper data.
This simplifies the serialisation code, reduces the use of inline functions, and ensures that running SerializedBytes<SuperClass>.deserialise() will correctly return SubClass if that's what it contained, efficiently.
2016-04-20 14:27:40 +02:00
Mike Hearn
105f39adb5 Minor: Rename core/.../Services.kt to AttachmentStorage.kt 2016-04-20 14:27:40 +02:00
Mike Hearn
77fd7941f9 Minor: remove a utility method that's used only once from WireTransaction 2016-04-20 14:27:40 +02:00
Mike Hearn
70210f3ef9 Minor: rename some fields in Command to be consistent with AuthenticatedObject, just to simplify the next refactor 2016-04-20 14:27:40 +02:00
Mike Hearn
306ff69312 Minor: split TransactionBuilder into its own file, so Transactions.kt is just the core immutable types. 2016-04-20 14:27:40 +02:00
Mike Hearn
d9cfb5e1eb Minor: make LedgerTransaction implement the NamedByHash interface, for improved consistency 2016-04-20 14:27:40 +02:00
Mike Hearn
6c9222ad6a Minor: delete some unnecessary code from LedgerTransaction 2016-04-20 14:27:40 +02:00
Mike Hearn
37f3061958 Minor: add a TODO to SignedTransaction indicating that the sandboxing/attachments based ClassLoader isn't actually used yet 2016-04-18 18:01:03 +02:00
Mike Hearn
800151b774 Merge branch 'master' into dynamic-loading 2016-04-18 17:56:31 +02:00
Mike Hearn
531e4a85fe Tweak the attachment classloader tests so that they don't break if IntelliJ has put the 'contracts:isolated' module on the classpath. 2016-04-14 19:42:39 +02:00
Mike Hearn
e91c46f045 Rewrite the AttachmentsClassLoader to avoid temporary file copies and fix the overlap check.
Throw a specialised exception that lists missing exceptions during deserialisation, so the dependency resolution code can access it (coming up).
2016-04-14 17:55:49 +02:00
Mike Hearn
3050a6ad8f Minor: add API docs for the groupStates methods on TransactionForVerification 2016-04-14 12:45:47 +02:00
Mike Hearn
7a9f74ca79 Merge branch 'master' into dynamic-loading 2016-04-13 19:03:04 +02:00
Andrius Dagys
9a8b3bd1ef Added interpolation functionality for the rates oracle. The oracle can be set up with different interpolation mechanisms, currently supported are: linear and cubic spline 2016-04-13 12:32:04 +01:00
Ross Nicoll
265948dcee Clean up code based on feedback from Mike
* Move advertisedServices parameter in NodeInfo up one in the parameter order
* Change ServiceType away from being an enum
* Tweaked wording around what a NodeInfo is
* Renamed LocationStructures to PhysicalLocationStructures
* Move generator outside of function parameters
2016-04-11 16:09:15 +01:00
sofusmortensen
d05e6bb6a4 Merge branch 'master' into dynamic-loading 2016-04-09 01:01:36 +02:00
sofusmortensen
6fe8107d27 Merge branch 'master' into dynamic-loading 2016-04-08 22:40:18 +02:00
Mike Hearn
49d5fb33c4 Remove copyright headers from the files and put the text in the README instead, per feedback from Jacob and external counsel. 2016-04-08 11:46:07 +02:00
Mike Hearn
caf48b65c9 Run auto-formatter over the code. 2016-04-07 20:16:28 +02:00
Mike Hearn
f3863ac5ef Minor: eliminate compiler warnings 2016-04-07 20:00:29 +02:00
Mike Hearn
10ee49d994 Minor: refactoring to reduce dependencies of the JSON object mapper. Clean up how mock identities are handled a little. This assists with the simulation code. 2016-04-07 19:32:06 +02:00
Mike Hearn
196380a9be Some ProgressTracker improvements 2016-04-07 19:32:06 +02:00
Rick Parker
34940c903b Merged in plt-17-api-server-merge5 (pull request #51)
IRS related protocols and scripts
2016-04-07 15:01:25 +01:00
rick.parker
55265e6115 IRS related protocols and scripts
Additional changes based on feedback

Additional changes based on feedback
2016-04-07 14:56:30 +01:00
Andrius Dagys
40443f68cb Changed the order of Polynomial coefficients back 2016-04-05 17:40:42 +01:00
Andrius Dagys
b728bd3b9d Changed Polynomial to accept coefficients in reverse order 2016-04-05 16:47:39 +01:00
Andrius Dagys
ec80ddfcd5 Added an interpolator (natural cubic splines) to be used by the interest rate fix oracle for missing data points. 2016-04-05 15:35:47 +01:00
sofusmortensen
9561013b65 Replaced class Kryo2 with extension method on Kryo 2016-04-05 01:02:54 +02:00
sofusmortensen
bba0a4a55d Fixed bug in Kryo.useClassLoader
Renamed to AttachmentsClassLoader + autoformat
Added unit test to validate exception being throw when deserializing WireTransaction without contract jar in attachments.
2016-04-05 00:34:46 +02:00
sofusmortensen
88a7406ec9 Merge branch 'master' into dynamic-loading 2016-04-03 13:59:36 +02:00
rick.parker
e122a57bf2 First working commit
First working commit

Formatting clean up

Revert All_tests.xml

Remove extra space

Feedback from code review
2016-03-30 15:04:08 +01:00
sofusmortensen
58a509de63 Merge branch 'master' into dynamic-loading 2016-03-24 13:10:36 +00:00
sofusmortensen
0b8820265e removed couple of warnings 2016-03-24 13:09:04 +00:00
sofusmortensen
1156e5ef52 fixed unit test TwoPartyTradeProtocolTests 2016-03-24 12:36:18 +00:00
sofusmortensen
e5dbf5d2a8 WireTransaction deserialization using AttachmentStorage 2016-03-24 12:06:41 +00:00
sofusmortensen
1344bfd6bb Replaced programRef in ContractState with a simple reference to contract 2016-03-23 17:51:14 +00:00
Richard Green
c450c70f9a Merged in calendar-name-parameter (pull request #43)
Field name request from client
2016-03-23 17:08:30 +00:00
Mike Hearn
e21f61ff10 Minor: add toString methods to progress tracker objects 2016-03-23 16:53:29 +00:00
rick.parker
a0780c84a7 Made calendars property a string array rather than just string 2016-03-23 13:42:52 +00:00
Richard Green
4167b044a1 Field name request from client 2016-03-23 12:17:30 +00:00
rick.parker
9f7ae4c61d Basic JSON API with servertime call exposed at GET /api/servertime
Global Clock as part of ServiceHub to offer source of time in transactions, protocols, time stamping service etc (can be replace for demos and testing with a Clock that can be externally manipulated)

Edited with Mike's feedback

Edited with Mike's feedback
2016-03-23 09:34:45 +00:00
sofusmortensen
5d5bcbfb00 Merge branch 'master' into dynamic-loading 2016-03-22 13:37:33 +00:00
sofusmortensen
527b0f4817 Improved unit tests.
Cleaned up project structure a bit.
2016-03-22 12:15:47 +00:00
Richard Green
6c0e696107 Updated with new Tenor class that verifies string during construction.
Now uses new Tenor class for Interest Rate Oracle
2016-03-22 11:46:06 +00:00
Richard Green
a78c5b11d1 IRS Contract example 2016-03-22 11:36:40 +00:00
Richard Green
5e3ff4238f Cosmetic change to Amount to display decimal places 2016-03-18 13:45:22 +00:00
Mike Hearn
5161b2b085 Minor: style fixes 2016-03-15 19:43:37 +01:00
Richard Green
966724f941 Utility functions / classes / enums that will assist in the writing of some financial products 2016-03-15 18:22:36 +00:00
Mike Hearn
2754546942 Don't report errors when dependency version conflicts are found, as Gradle's default behaviour of picking the newest version is normally the right one and in practice what we've been doing anyway.
Remove RxKotlin. It doesn't add enough value over just using the RxJava API directly.
2016-03-11 11:49:50 +01:00
Mike Hearn
975d569e55 Merged irs-oracle into master 2016-03-09 14:38:39 +01:00
Mike Hearn
779e5d8af8 Minor: remove dokka stuff from build.gradle, it's now invoked via an external script 2016-03-08 18:30:17 +01:00
Mike Hearn
f1c9b5495c Add Fix and FixOf types to a new FinanceTypes.kt file, move Amount there too. 2016-03-08 17:29:56 +01:00
Mike Hearn
57ec407755 Minor: TransactionBuilder: split up checkAndAddSignature 2016-03-08 15:19:44 +01:00
Mike Hearn
9069a80bc3 Minor: add another variant of signWithECDSA 2016-03-08 13:55:20 +01:00
Mike Hearn
c18579fd60 Minor: add extension method to support "1.234".d to create a BigDecimal 2016-03-08 13:55:03 +01:00
Mike Hearn
8d041a6b1a Minor: yet another small move 2016-03-08 11:12:45 +01:00
Mike Hearn
bf3aed11e7 Minor: another small move 2016-03-08 11:10:31 +01:00
Mike Hearn
e9fddbc709 Reorganise the file hierarchy a bit. 2016-03-08 11:06:16 +01:00
Mike Hearn
d26b06c35c Allow download of attachments, and files within attachments, over HTTP. 2016-03-04 15:56:25 +01:00
Mike Hearn
6cb86ab840 Plumb attachments through to the contract verify functions (no contract uses them yet).
The right way to do this is probably to put the contracts onto the classpath before execution of the contract. However, this interacts closely with the sandboxing work, which isn't yet started, so for now this will do.
2016-03-02 15:35:46 +01:00
Mike Hearn
1123c28f02 Make the trader demo attach a PDF to the commercial paper self-issuance and then scan for it on the buyer side, print out the path on the filesystem where the PDF can be found. 2016-03-02 15:08:55 +01:00
Mike Hearn
8d906c703d Support auto-expansion of attachment jars on disk. 2016-03-02 14:51:42 +01:00
Mike Hearn
7fd9b43e50 Add a simple TransactionGraphSearch class that can be used to query transaction graphs recursively loaded from storage. Right now it only supports a single type of query. 2016-03-02 14:51:42 +01:00
Mike Hearn
f0fa9e3097 Resolve and insert attachments to the local store when resolving transactions. Attachments aren't yet exposed to contract code. 2016-03-02 14:51:42 +01:00
Mike Hearn
7f5eb5bf2f Minor: make TwoPartyTradeProtocolTests use the new MockNode infrastructure 2016-03-02 14:51:42 +01:00
Mike Hearn
a69a663354 Minor: add a paperclip icon to the Emoji library 2016-03-02 14:51:42 +01:00
Mike Hearn
c52f1e096f Minor: a serialisation related fix and an additional explainer comment in SerializedBytes 2016-03-02 14:51:42 +01:00
Mike Hearn
42cd9a14cb Minor: fix bug in SecureHash.parse() 2016-03-02 14:51:42 +01:00
Mike Hearn
02e9473201 Minor: add a simple List<T>.indexOfOrThrow() utility and use it in a new LedgerTransaction.outRef helper. 2016-02-29 22:06:18 +01:00
Mike Hearn
bab3c609c1 Minor: provide a specialisation of SerializedBytes<WireTransaction>.deserialize() which caches the bytes properly. 2016-02-29 19:05:06 +01:00
Mike Hearn
0224bca1a9 Add a simple file backed attachment store, with tests. 2016-02-29 19:04:41 +01:00
Mike Hearn
105f9e1069 Add Apache JEXL as a dependency, as part of an exploration of on-the-fly contract specialisation (this solution may not be taken forward but suffices to unblock other work) 2016-02-29 18:56:03 +01:00
Mike Hearn
c24d991a7e Introduce a NamedByHash interface, for things that are identified via secure hash. 2016-02-25 19:24:18 +01:00
Mike Hearn
f32c83b8b3 Protocols: fix unit tests for progress tracker and don't emit UNSTARTED to all subscribers. 2016-02-24 14:51:04 +01:00
Mike Hearn
8f27c35f18 Minor: compile->testCompile dependency in core/build.gradle 2016-02-24 14:50:21 +01:00
Mike Hearn
c3f86f6557 Integrate a simple progress tracking system into the protocol framework.
The progress tracker API lets you model a tree of steps, along the same structure as protocols and subprotocols. Each step has an (optionally changing) label, and thus progress trackers can be arranged in a tree. Updates to the progress at each level flow up the tree via an RxJava observable (I guess we will use this more in future).

A simple console renderer is provided that uses ANSI escapes and Emoji to show animated progress through a protocol.

The trader demo is enhanced to use this framework, when run outside of Gradle.
2016-02-24 12:58:37 +01:00
Mike Hearn
ab2b447a5e Minor: add a TransientProperty utility class.
It makes it a bit easier to define properties that don't survive serialisation and are reconstructed each time.
2016-02-23 18:28:06 +01:00
Mike Hearn
96eacfeda8 Minor: another emoji 2016-02-23 18:28:06 +01:00
Mike Hearn
6c4825aeb2 Minor: fix typo in file name 2016-02-23 18:28:06 +01:00
Mike Hearn
54a73166c3 Merge branch 'master' into PLT-61-resolve-deps 2016-02-18 17:22:35 +01:00
Mike Hearn
f6167cbe12 Minor: tweak build file to describe how to activate Dokka API docs 2016-02-18 13:43:15 +01:00
Mike Hearn
1243ca2066 Trading: in the two party trade protocol, check that the proposed transaction is contract-valid, and that the missing signatures are what is expected. 2016-02-17 18:38:24 +01:00
Mike Hearn
cd28733360 Major: Separate out the dep resolution protocol into a couple of sub protocols and use on both sides of the trade.
* Dependency resolution/checking is now working on both sides of the two party trading protocol.
* The commercial paper contract was changed to check timestamping authority identities by name instead of key.
* The trader demo has been rewritten to use the protocol framework, which simplifies the code.
2016-02-17 18:11:37 +01:00
Mike Hearn
df4d926bca First pass at implementing dependency resolution and checking in the two-party trade protocol.
This commit is incomplete: only the seller side currently checks. The code will be refactored out into subprotocols in further commits.

Note that timeouts are currently unhandled.
2016-02-17 17:19:36 +01:00
Mike Hearn
ed72e9b997 Unit tests: fix a couple of threading issues for async unit tests that use the in memory network 2016-02-16 17:39:08 +01:00
Mike Hearn
de4427c240 Minor: add a few utilities for working with listenable futures 2016-02-16 17:39:02 +01:00
Sofus Mortensen
994abb3edb Added new project core.
Project Contracts depends only on core.
2016-02-16 17:14:17 +01:00