Mike Hearn
6f3b07a600
Minor: move and api doc the Node.DEFAULT_PORT field
2016-02-10 16:30:20 +01:00
Mike Hearn
5d0d926568
Node: if the node is started twice, abort and tell the sysadmin the PID of the other instance.
2016-02-10 16:30:20 +01:00
Mike Hearn
7a70cdd4de
Minor: rename InMemoryNetwork.Node to InMemoryNetwork.InMemoryNode
...
Makes IDE class navigation easier by avoiding having two classes with the same name.
2016-02-10 16:30:20 +01:00
Mike Hearn
262124385d
Move Crypto.kt into core/crypto/CryptoUtilities.kt
2016-02-10 16:30:20 +01:00
Mike Hearn
1bc57085c8
Rename ContractStateRef -> StateRef. Rename craft* methods to generate*
2016-02-10 16:29:44 +01:00
Mike Hearn
5e30e1b94b
Fix build.
2016-02-10 16:28:22 +01:00
Richard Green
ea2b18eb41
Merged in rg_work_in_progress (pull request #16 )
...
Updated as comments per previous pull request, now generic tests run both Kotlin and Java CommercialPaper class tests.
2016-02-10 15:04:13 +00:00
Richard Green
201803ff36
Now runs Java CommercialPaper unit tests
...
Acted upon comments from last pull request.
Added an interface to enable the usage of the same tests for both the Kotlin and Java example CommercialPaper class - did appropriate refactoring to enable.
Added javadoc, removed public modifier from interfaces.
Various fixes from code review comments.
2016-02-10 14:56:11 +00:00
Mike Hearn
88e02440d4
Kotlin 1.0 RC
...
Hopefully this is the last time they break backwards compatibility.
2016-02-08 19:35:30 +01:00
Mike Hearn
b57f30ff3e
Use DL as the address prefix instead of R3.
2016-02-05 15:49:26 +01:00
Mike Hearn
f705eee312
Use buyer/seller instead of alpha/beta and allow nodes to both be named localhost. Update docs.
2016-02-05 15:48:58 +01:00
Richard 'ragmondo' Green
75a542f79d
Change network config to listen to adapter publicly
2016-02-05 11:59:50 +00:00
Mike Hearn
a06d4d23bd
Add toString() methods to a few data structures and use them to make the output of the trader demo a bit nicer.
...
Import Base58 code from bitcoinj and use it for rendering pubkeys (note: not calculated in the same way as Bitcoin).
2016-02-05 11:13:49 +01:00
Mike Hearn
1e8ea8eb2c
Implement the beginnings of a serving node.
...
It uses Artemis (an embeddable MQ broker) and can run in either a 'serving' mode, in which case it will sit around waiting to sell fake commercial paper assets, or a 'buying' mode in which case it will connect to a specified serving node and run the two party trade protocol.
Most services are either mocked out or too trivial to be useful at this point. They will be fleshed out in the future.
2016-02-03 16:57:01 +01:00
Mike Hearn
f683f50eb5
Logging: mention if a log message is a warning or error.
2016-02-03 15:35:55 +01:00
Mike Hearn
af116f6990
Minor: bugfix for the Java requireSingleCommand API.
2016-02-03 15:35:08 +01:00
Mike Hearn
606926a692
Logging: don't include inner class names in log output (i.e. trim anything after the $ sign in the class name)
2016-02-03 12:49:36 +01:00
Mike Hearn
fbd4b60834
Minor: allow double constants to be used to create Amounts, you can now write 35.99.DOLLARS to mean $35.99
2016-02-03 12:49:36 +01:00
Mike Hearn
0417e24fae
Minor: fix an incorrect use (process specific) of reflection hashCodes in the Kryo wrapper.
2016-02-03 12:49:36 +01:00
Mike Hearn
f51aa73687
Minor: fix bug in BriefLogFormatter
2016-02-03 12:49:36 +01:00
Mike Hearn
a355ad14be
Minor: javadoc fixes
2016-02-03 12:49:35 +01:00
Mike Hearn
b014782959
Minor: comment fix
2016-02-03 12:48:53 +01:00
Richard Green
cb12770b9c
Tyop :-/
2016-02-01 17:48:45 +00:00
Richard Green
68e8f32462
Merge remote-tracking branch 'origin/master'
2016-02-01 17:21:41 +00:00
Richard Green
ca0f5ff9f5
Adding Issue in Commands class to mirror Kotlin code
2016-02-01 17:20:39 +00:00
Mike Hearn
b3e801eb85
Minor: add an explanatory comment to the two-party trade protocol.
2016-02-01 16:09:09 +01:00
Mike Hearn
9cfa5743ff
Minor: rewrap a few lines to be style guide compliant.
2016-01-27 15:01:20 +00:00
Mike Hearn
d9c6df51f4
Update docs for new simpler protocol framework API.
2016-01-13 13:54:10 +01:00
Mike Hearn
3d051ced3a
Minor: fix bug in BriefLogFormatter
2016-01-12 16:40:35 +01:00
Mike Hearn
a729d5134e
Minor: take out the 'inline reified' functions from the ProtocolStateMachine class. The slightly nicer syntax it enables isn't worth the readability hit for readers who aren't familiar with what this Kotlin feature does in this case.
2016-01-12 12:14:46 +01:00
Mike Hearn
363b335896
Minor: use "platform.*" as the naming hierarchy for protocols that are supposed to be standardised.
2016-01-12 12:14:46 +01:00
Mike Hearn
717651db45
Minor: remove a TODO that is now done.
2016-01-12 12:14:45 +01:00
Mike Hearn
78849f44d2
Protocols: simplify the two party (dvp) protocol some more, now that we've switched to Quasar. There's no longer any need to define InitialArgs objects.
2016-01-12 12:14:45 +01:00
Mike Hearn
c59603c26f
Implement timestamping as a separate service that the two party (dvp) protocol calls out to via a simple client object.
...
Lots of big changes in this commit:
* Introduction of "network map" and "legally identifiable node" concepts to the networking abstraction.
* State machines framework now lets you send messages to multiple different destinations in the same protocol.
* Timestamping service that can run inside a node is now implemented and unit tested.
* Starting to benefit from the improvements in Quasar (the initialArgs concept can mostly be got rid of now, etc)
2016-01-12 12:14:45 +01:00
Mike Hearn
412212a860
Switch from JavaFlow to Quasar to provide fibers.
...
Quasar is a more modern, better maintained and more powerful framework. The main improvement is that this lets us avoid the ClassLoader tricks that JavaFlow was requiring, by using an agent. This introduces a requirement to mark methods that might be on a suspended stack as @Suspendable, but means that code interops cleanly. In Java 9 it is hoped that the marking requirement may even go away entirely.
2016-01-12 12:14:39 +01:00
Mike Hearn
018825d7d7
Minor: fix the JDK logging bug workaround
2016-01-07 16:20:44 +01:00
Mike Hearn
9e22cda15c
Messaging interface now exposes the nodes own address.
2016-01-07 15:58:26 +01:00
Mike Hearn
5f8dec4ff9
Minor: add an "until" infix function that applies to Temporal's ... the primary purpose of this beyond a trivial bit of extra readability, is null safety.
2016-01-07 15:58:26 +01:00
Mike Hearn
2190fbf2ee
Minor: reintroduce using Java serialisation for KeyPair as the JDK customises it and the Kryo serialisation is both bloated and (more problematically) non-deterministic!
2016-01-07 15:58:26 +01:00
Mike Hearn
0a9fffe8b7
Minor: remove unused import
2016-01-07 15:58:26 +01:00
Mike Hearn
0d0e75e6ff
Commands must have at least one pubkey.
2016-01-07 15:58:26 +01:00
Mike Hearn
5aeab5c933
Minor: move a bit of code around, add some javadocs
2016-01-04 11:24:14 +01:00
Mike Hearn
cd7d01917f
Kotlin 1.0.0-beta-4584
2015-12-24 17:21:10 +00:00
Mike Hearn
31fbf5e1eb
Improve the transactions API a small amount with lazily deserialized access to the WireTransaction inside a SignedTransaction, and id/hash fields (again lazily calculated).
...
This required bringing back the ImmutableClassSerializer and registration of classes that need it, to ensure the constructors run.
2015-12-22 16:41:25 +00:00
Mike Hearn
3c23c4f53d
Minor: move TransactionForVerification to be next to TransactionGroup and rename the file to be more descriptive.
2015-12-22 15:30:49 +00:00
Mike Hearn
049f0aa3b3
Rename PartialTransaction -> TransactionBuilder. The term "partial transaction" should be reserved to mean a transaction that is lacking some signatures as it's in the process of being built up by multiple parties.
2015-12-22 15:28:38 +00:00
Mike Hearn
bcc56859af
Add a unit test to check before/after processing by the dummy timestamper.
...
Tweak the timestamping API a bit.
2015-12-22 15:03:11 +00:00
Mike Hearn
784452ac50
Reorganise how time is handled: timestamping authorities are now oracles who sign the entire transaction.
...
As a result, TimestampedWireTransaction is gone. Timestamp fields are gone. Timestamp commands contain before/after fields. The notion of time tolerance is now a part of the timestamping interface and timestamp data.
TODO:
- Unit tests to verify the notBefore/notAfter logic
- Documentation update
2015-12-18 19:14:33 +01:00
Mike Hearn
6144ccc2c7
Small cleanup of commands.
...
1. Rename Command -> CommandData, WireCommand -> Command, PartialTransaction.addArg -> addCommand
2. Add some helper functions to PartialTransaction to make creation of transactions simpler.
2015-12-18 12:38:26 +01:00
Mike Hearn
4cec5dac02
Minor: remove ambiguous c'tor in PartialTransaction and rename addItems -> withItems
2015-12-16 16:25:58 +01:00
Mike Hearn
ab9e026053
Minor: some small serialisation type safety improvements
2015-12-16 15:24:52 +01:00
Mike Hearn
5863d489bc
Minor: misc comment/whitespace fixes.
2015-12-15 18:54:22 +01:00
Mike Hearn
06ee9db3f6
Minor: provide a random63BitValue() function and use it instead of the previously duplicated code. Update docs.
2015-12-15 13:16:13 +01:00
Mike Hearn
020a594a60
State machines: thread safety and a few more comments.
2015-12-15 13:01:57 +01:00
Mike Hearn
3c578550a9
State machines: don't leak references to completed state machines. Add an extension function for working with futures.
2015-12-14 21:41:57 +01:00
Mike Hearn
d43bbe8faa
Trading: move session ID into the initial args to avoid possible confusion at the start.
2015-12-14 18:22:00 +01:00
Mike Hearn
f15e24e7be
Messaging: Rename MessagingSystem to MessagingService for consistency with other interfaces.
2015-12-14 17:39:48 +01:00
Mike Hearn
3f19e68b3f
Messaging: another minor simplification to the state machines framework. This is not the end!
2015-12-14 17:35:20 +01:00
Mike Hearn
9720d4e404
Messaging: more huge simplifications to the state machine framework.
...
The usage now looks straightforward enough to document and put into a tutorial.
2015-12-11 20:21:22 +01:00
Mike Hearn
89ba996a3c
Two party trading: big changes to support and test serialisation, refactorings ...
2015-12-11 15:19:13 +01:00
Mike Hearn
65c5fa7502
Messaging: (mock) in memory network implementation improvements.
...
- Now supports simulated restart of nodes
- Messages sent to non-running nodes are queued for delivery
- Messages received by a node that don't match any topics are queued until handlers are registered
These improvements help us unit test various robustness features and ensure things work in truly concurrent context where there can be race conditions like receiving a message before the node had a chance to register the right handlers.
2015-12-11 15:19:13 +01:00
Mike Hearn
0ca47156bc
Trading protocol work in progress
2015-12-11 15:19:13 +01:00
Mike Hearn
fed0ae5629
Add placeholder interfaces for various service submodules.
2015-12-11 15:17:44 +01:00
Mike Hearn
2df8153cda
Minor: rename wallet -> cashStates in the Cash contract spending function.
2015-12-11 15:17:28 +01:00
Mike Hearn
f13b9b00e4
Minor: fix Arrays.asList serialisation by adding the extra serialisers lib as a dependency
2015-12-10 17:14:49 +01:00
Mike Hearn
4c87dc2981
First draft of a basic messaging module interface (VERY ROUGH). Ideally, is something that can have an e.g. Kafka backend, with a full P2P implementation later.
2015-12-10 15:08:11 +01:00
Mike Hearn
7881be07ed
Delete a lot of Kryo/serialisation related boilerplate.
...
This is/was an attempt to be secure against malicious streams, but as Kryo is just a temporary bit of scaffolding and isn't intended to be actually used in any real product, it was just a waste of time and the registration requirement was getting increasingly awkward.
2015-12-10 15:03:34 +01:00
Mike Hearn
951912f8e7
Minor: rename Kryo.registerDataClass to Kryo.registerImmutableClass
2015-12-10 14:27:53 +01:00
Mike Hearn
67c810e315
Make Amount use 64 bit precision and overflow checked operations.
2015-12-08 14:58:16 +01:00
Mike Hearn
73cbd41a09
Misc fixes:
...
- Use the OpaqueBytes wrapper (a box for byte[]) inside TimestampedWireTransaction to avoid array comparison issues.
- Introduce a few utility functions to make OpaqueBytes less painful.
- Make StateAndRef serialisable
- Introduce the notion of an OwnedState which abstracts out the owner field.
2015-12-07 17:53:01 +01:00
Mike Hearn
a656e210c4
Merged in crowdfund-tweaks (pull request #7 )
...
Crowdfunding contract: some cleanups and add some discussion at the top of the different possible models.
2015-12-04 12:34:03 +00:00
Mike Hearn
41f54b8555
Crowdfunding contract: some cleanups and add some discussion at the top of the different possible models.
2015-12-04 12:33:42 +00:00
Mike Hearn
ea4a6d8f06
Add logging utilities using slf4j
2015-12-03 18:24:26 +00:00
Mike Hearn
2193dced0a
Minor: add docs for the cash DSL extensions
2015-12-03 11:07:25 +00:00
Mike Hearn
0e34779fce
Merged in mod-crowdfund-close (pull request #5 )
...
Updated close method
2015-12-03 10:20:18 +00:00
Mike Hearn
f98ebce58b
Update copyrights
2015-12-02 18:53:16 +00:00
Mike Hearn
a95cd056ea
Implement a simple transaction graph visualiser tool.
2015-12-02 09:50:45 +00:00