Rebuild docs for M9 release

This commit is contained in:
Ross Nicoll 2017-03-02 15:45:24 +00:00
parent 731c8a0681
commit 379eea31b7
5189 changed files with 24373 additions and 29667 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
docs/build/doctrees/changelog.doctree vendored Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,4 +1,4 @@
# Sphinx build info version 1
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
config: 8ea21e5fbb1ab56cc2450ad8e00d9479
config: 0d96d45537e6eef31c28565cd547739b
tags: 645f666f9bcd5a90fca523b33c5a78b7

View File

@ -133,6 +133,7 @@ API reference: <a href="api/kotlin/corda/index.html">Kotlin</a>/ <a href="api/ja
</ul>
<p class="caption"><span class="caption-text">The Corda node</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="serialization.html">Object Serialization</a></li>
<li class="toctree-l1"><a class="reference internal" href="clientrpc.html">Client RPC</a></li>
<li class="toctree-l1"><a class="reference internal" href="messaging.html">Networking and messaging</a></li>
<li class="toctree-l1"><a class="reference internal" href="persistence.html">Persistence</a></li>
@ -178,6 +179,7 @@ API reference: <a href="api/kotlin/corda/index.html">Kotlin</a>/ <a href="api/ja
<li class="toctree-l1"><a class="reference internal" href="secure-coding-guidelines.html">Secure coding guidelines</a></li>
<li class="toctree-l1"><a class="reference internal" href="release-process.html">Release process</a></li>
<li class="toctree-l1"><a class="reference internal" href="release-notes.html">Release notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="changelog.html">Changelog</a></li>
<li class="toctree-l1"><a class="reference internal" href="codestyle.html">Code style guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="building-the-docs.html">Building the documentation</a></li>
<li class="toctree-l1"><a class="reference internal" href="further-notes-on-kotlin.html">Further notes on Kotlin</a></li>

496
docs/build/html/_sources/changelog.txt vendored Normal file
View File

@ -0,0 +1,496 @@
Changelog
=========
Here are brief summaries of what's changed between each snapshot release.
Milestone 9
-----------
* With thanks to `Thomas Schroeter <https://github.com/thschroeter>`_ for the Byzantine fault tolerant (BFT)
notary prototype.
* Web server is a separate JAR. This is a breaking change. The new webserver JAR (``corda-webserver.jar``)
must be invoked separately to node startup, using the command``java -jar corda-webserver.jar`` in the same
directory as the ``node.conf``. Further changes are anticipated in upcoming milestone releases.
* API:
* Pseudonymous ``AnonymousParty`` class added as a superclass of ``Party``.
* Split ``CashFlow`` into individual ``CashIssueFlow``, ``CashPaymentFlow`` and ``CashExitFlow`` flows, so that fine
grained permissions can be applied. Added ``CashFlowCommand`` for use-cases where cash flow triggers need to be
captured in an object that can be passed around.
* ``CordaPluginRegistry`` method ``registerRPCKryoTypes`` is renamed ``customizeSerialization`` and the argument
types now hide the presence of Kryo.
* New extension functions for encoding/decoding to base58, base64, etc. See
``core/src/main/kotlin/net/corda/core/crypto/EncodingUtils.kt``
* Add ``openAttachment`` function to Corda RPC operations, for downloading an attachment from a node's data storage.
* Add ``getCashBalances`` function to Corda RPC operations, for getting cash balances from a node's vault.
* Configuration:
* ``extraAdvertisedServiceIds`` config is now a list of strings, rather than a comma separated string. For example
``[ "corda.interest_rates" ]`` instead of ``"corda.interest_rates"``.
* Flows:
* Split ``CashFlow`` into separate ``CashIssueFlow``, ``CashPaymentFlow`` and ``CashExitFlow`` so that permissions can
be assigned individually.
* Split single example user into separate "bankUser" and "bigCorpUser" so that permissions for the users make sense
rather than being a combination of both roles.
* ``ProgressTracker`` emits exception thrown by the flow, allowing the ANSI renderer to correctly stop and print the error
* Object Serialization:
* Consolidated Kryo implementations across RPC and P2P messaging with whitelisting of classes via plugins or with
``@CordaSerializable`` for added node security.
* Privacy:
* Non-validating notary service now takes in a ``FilteredTransaction`` so that no potentially sensitive transaction
details are unnecessarily revealed to the notary
* General:
* Add vault service persistence using Requery
* Certificate signing utility output is now more verbose
Milestone 8
-----------
* Node memory usage and performance improvements, demo nodes now only require 200 MB heap space to run.
* The Corda node no longer runs an internal web server, it's now run in a separate process. Driver and Cordformation have
been updated to reflect this change.
Existing CorDapps should be updated with additional calls to the new ``startWebserver()`` interface in their Driver logic (if they use the driver e.g. in integration tests).
See the IRS demo for an example.
* Data model: ``Party`` equality is now based on the owning key, rather than the owning key and name. This is important for
party anonymisation to work, as each key must identify exactly one party.
* Contracts: created new composite clauses called ``AllOf``, ``AnyOf`` and ``FirstOf`` to replace ``AllComposition``, ``AnyComposition``
and ``FirstComposition``, as this is significantly clearer in intent. ``AnyOf`` also enforces that at least one subclause
must match, whereas ``AnyComposition`` would accept no matches.
* Explorer: the user can now configure certificate path and keystore/truststore password on the login screen.
* Documentation:
* Key Concepts section revamped with new structure and content.
* Added more details to :doc:`getting-set-up` page.
* Flow framework: improved exception handling with the introduction of ``FlowException``. If this or a subtype is thrown
inside a flow it will propagate to all counterparty flows and subsequently be thrown by them as well. Existing flows such as
``NotaryFlow.Client/Service`` and others have been modified to throw a ``FlowException`` (in this particular case a
``NotaryException``) instead of sending back error responses.
* Notary flow: provide complete details of underlying error when contract validation fails.
Milestone 7
-----------
* With thanks to `Thomas Schroeter <https://github.com/thschroeter>`_ ``NotaryFlow`` is now idempotent.
* Explorer:
* The GUI for the explorer now shows other nodes on the network map and the transactions between them.
* Map resolution increased and allows zooming and panning.
* `Video demonstration <https://www.corda.net/2017/01/03/the-node-explorer/>`_ of the Node Explorer.
* The CorDapp template now has a Java example that parallels the Kotlin one for developers more comfortable with Java.
ORM support added to the Kotlin example.
* Demos:
* Added the Bank of Corda demo - a demo showing a node (Bank of Corda) acting as an issuer of Cash, and a client
driver providing both Web and RPC access to request issuance of cash.
* Demos now use RPC to communicate with the node from the webserver. This brings the demos more in line with how
interaction with nodes is expected to be. The demos now treat their webservers like clients. This will also allow
for the splitting of the webserver from the node for milestone 8.
* Added a SIMM valuation demo integration test to catch regressions.
* Security:
* MQ broker of the node now requires authentication which means that third parties cannot connect to and
listen to queues on the Node. RPC and P2P between nodes is now authenticated as a result of this change.
This also means that nodes or RPC users cannot pretend to be other nodes or RPC users.
* The node now does host verification of any node that connects to it and prevents man in the middle attacks.
* Improvements:
* Vault updates now contain full ``StateAndRef`` which allows subscribers to check whether the update contains
relevant states.
* Cash balances are calculated using aggregate values to prevent iterating through all states in the vault, which
improves performance.
* Multi-party services, such as notaries, are now load balanced and represented as a single ``Party`` object.
* The Notary Change flow now supports encumbrances.
Milestone 6
-----------
* Added the `Corda technical white paper <_static/corda-technical-whitepaper.pdf>`_. Note that its current version
is 0.5 to reflect the fact that the Corda design is still evolving. Although we expect only relatively small tweaks
at this point, when Corda reaches 1.0 so will the white paper.
* Major documentation restructuring and new content:
* More details on Corda node internals.
* New CorDapp tutorial.
* New tutorial on building transactions.
* New tutorials on how to run and use a notary service.
* An experimental version of the deterministic JVM sandbox has been added. It is not integrated with the node and will
undergo some significant changes in the coming releases before it is integrated, as the code is finished, as bugs are
found and fixed, and as the platform subset we choose to expose is finalised. Treat this as an outline of the basic
approach rather than something usable for production.
* Developer experience:
* Samples have been merged back into the main repository. All samples can now be run via command line or IntelliJ.
* Added a Client RPC python example.
* Node console output now displays concise startup information, such as startup time or web address. All logging to
the console is suppressed apart from errors and flow progress tracker steps. It can be re-enabled by passing
``--log-to-console`` command line parameter. Note that the log file remains unchanged and will still contain all
log entries.
* The ``runnodes`` scripts generated by the Gradle plugins now open each node in separate terminal windows or (on macOS) tabs.
* A much more complete template app.
* JARs now available on Maven Central.
* Data model: A party is now identified by a composite key (formerly known as a "public key tree") instead of a single public key.
Read more in :ref:`composite-keys`. This allows expressing distributed service identities, e.g. a distributed notary.
In the future this will also allow parties to use multiple signing keys for their legal identity.
* Decentralised consensus: A prototype RAFT based notary composed of multiple nodes has been added. This implementation
is optimised for high performance over robustness against malicious cluster members, which may be appropriate for
some financial situations. See :ref:`notary-demo` to try it out. A BFT notary will be added later.
* Node explorer app:
* New theme aligned with the Corda branding.
* The New Transaction screen moved to the Cash View (as it is used solely for cash transactions)
* Removed state machine/flow information from Transaction table. A new view for this will be created in a future release.
* Added a new Network View that displays details of all nodes on the network.
* Users can now configure the reporting currency in settings.
* Various layout and performance enhancements.
* Client RPC:
* Added a generic ``startFlow`` method that enables starting of any flow, given sufficient permissions.
* Added the ability for plugins to register additional classes or custom serialisers with Kryo for use in RPC.
* ``rpc-users.properties`` file has been removed with RPC user settings moved to the config file.
* Configuration changes: It is now possible to specify a custom legal name for any of the node's advertised services.
* Added a load testing framework which allows stress testing of a node cluster, as well as specifying different ways of
disrupting the normal operation of nodes. See :doc:`loadtesting`.
* Improvements to the experimental contract DSL, by Sofus Mortensen of Nordea Bank (please give Nordea a shoutout too).
API changes:
* The top level package has been renamed from ``com.r3corda`` to ``net.corda``.
* Protocols have been renamed to "flows".
* ``OpaqueBytes`` now uses ``bytes`` as the field name rather than ``bits``.
Milestone 5
-----------
* A simple RPC access control mechanism. Users, passwords and permissions can be defined in a configuration file.
This mechanism will be extended in future to support standard authentication systems like LDAP.
* New features in the explorer app and RPC API for working with cash:
* Cash can now be sent, issued and exited via RPC.
* Notes can now be associated with transactions.
* Hashes are visually represented using identicons.
* Lots of functional work on the explorer UI. You can try it out by running ``gradle tools:explorer:runDemoNodes`` to run
a local network of nodes that swap cash with each other, and then run ``gradle tools:explorer:run`` to start
the app.
* A new demo showing shared valuation of derivatives portfolios using the ISDA SIMM has been added. Note that this app
relies on a proprietary implementation of the ISDA SIMM business logic from OpenGamma. A stub library is provided
to ensure it compiles but if you want to use the app for real please contact us.
* Developer experience (we plan to do lots more here in milestone 6):
* Demos and samples have been split out of the main repository, and the initial developer experience continues to be
refined. All necessary JARs can now be installed to Maven Local by simply running ``gradle install``.
* It's now easier to define a set of nodes to run locally using the new "CordFormation" gradle plugin, which
defines a simple DSL for creating networks of nodes.
* The template CorDapp has been upgraded with more documentation and showing more features.
* Privacy: transactions are now structured as Merkle trees, and can have sections "torn off" - presented for
verification and signing without revealing the rest of the transaction.
* Lots of bug fixes, tweaks and polish starting the run up to the open source release.
API changes:
* Plugin service classes now take a ``PluginServiceHub`` rather than a ``ServiceHubInternal``.
* ``UniqueIdentifier`` equality has changed to only take into account the underlying UUID.
* The contracts module has been renamed to finance, to better reflect what it is for.
Milestone 4
-----------
New features in this release:
* Persistence:
* States can now be written into a relational database and queried using JDBC. The schemas are defined by the
smart contracts and schema versioning is supported. It is reasonable to write an app that stores data in a mix
of global ledger transactions and local database tables which are joined on demand, using join key slots that
are present in many state definitions. Read more about :doc:`persistence`.
* The embedded H2 SQL database is now exposed by default to any tool that can speak JDBC. The database URL is
printed during node startup and can be used to explore the database, which contains both node internal data
and tables generated from ledger states.
* Protocol checkpoints are now stored in the database as well. Message processing is now atomic with protocol
checkpointing and run under the same RDBMS transaction.
* MQ message deduplication is now handled at the app layer and performed under the RDMS transaction, so
ensuring messages are only replayed if the RDMS transaction rolled back.
* "The wallet" has been renamed to "the vault".
* Client RPC:
* New RPCs added to subscribe to snapshots and update streams state of the vault, currently executing protocols
and other important node information.
* New tutorial added that shows how to use the RPC API to draw live transaction graphs on screen.
* Protocol framework:
* Large simplifications to the API. Session management is now handled automatically. Messages are now routed
based on identities rather than node IP addresses.
* Decentralised consensus:
* A standalone one-node notary backed by a JDBC store has been added.
* A prototype RAFT based notary composed of multiple nodes is available on a branch.
* Data model:
* Compound keys have been added as preparation for merging a distributed RAFT based notary. Compound keys
are trees of public keys in which interior nodes can have validity thresholds attached, thus allowing
boolean formulas of keys to be created. This is similar to Bitcoin's multi-sig support and the data model
is the same as the InterLedger Crypto-Conditions spec, which should aid interop in future. Read more about
key trees in the ":doc:`transaction-data-types`" article.
* A new tutorial has been added showing how to use transaction attachments in more detail.
* Testnet
* Permissioning infrastructure phase one is built out. The node now has a notion of developer mode vs normal
mode. In developer mode it works like M3 and the SSL certificates used by nodes running on your local
machine all self-sign using a developer key included in the source tree. When developer mode is not active,
the node won't start until it has a signed certificate. Such a certificate can be obtained by simply running
an included command line utility which generates a CSR and submits it to a permissioning service, then waits
for the signed certificate to be returned. Note that currently there is no public Corda testnet, so we are
not currently running a permissioning service.
* Standalone app development:
* The Corda libraries that app developers need to link against can now be installed into your local Maven
repository, where they can then be used like any other JAR. See :doc:`creating-a-cordapp`.
* User interfaces:
* Infrastructure work on the node explorer is now complete: it is fully switched to using the MQ based RPC system.
* A library of additional reactive collections has been added. This API builds on top of Rx and the observable
collections API in Java 8 to give "live" data structures in which the state of the node and ledger can be
viewed as an ordinary Java ``List``, ``Map`` and ``Set``, but which also emit callbacks when these views
change, and which can have additional views derived in a functional manner (filtered, mapped, sorted, etc).
Finally, these views can then be bound directly into JavaFX UIs. This makes for a concise and functional
way of building application UIs that render data from the node, and the API is available for third party
app developers to use as well. We believe this will be highly productive and enjoyable for developers who
have the option of building JavaFX apps (vs web apps).
* The visual network simulator tool that was demoed back in April as part of the first Corda live demo has
been merged into the main repository.
* Documentation
* New secure coding guidelines. Corda tries to eliminate as many security mistakes as practical via the type
system and other mechanically checkable processes, but there are still things that one must be aware of.
* New attachments tutorial.
* New Client RPC tutorial.
* More tutorials on how to build a standalone CorDapp.
* Testing
* More integration testing support
* New micro-DSLs for expressing expected sequences of operations with more or less relaxed ordering constraints.
* QuickCheck generators to create streams of randomised transactions and other basic types. QuickCheck is a way
of writing unit tests that perform randomised fuzz testing of code, originally developed by the Haskell
community and now also available in Java.
API changes:
* The transaction types (Signed, Wire, LedgerTransaction) have moved to ``net.corda.core.transactions``. You can
update your code by just deleting the broken import lines and letting your IDE re-import them from the right
location.
* ``AbstractStateReplacementProtocol.verifyProposal`` has changed its prototype in a minor way.
* The ``UntrustworthyData<T>.validate`` method has been renamed to ``unwrap`` - the old name is now deprecated.
* The wallet, wallet service, etc. are now vault, vault service, etc. These better reflect the intent that they
are a generic secure data store, rather than something which holds cash.
* The protocol send/receive APIs have changed to no longer require a session id. Please check the current version
of the protocol framework tutorial for more details.
Milestone 3
-----------
* More work on preparing for the testnet:
* Corda is now a standalone app server that loads "CorDapps" into itself as plugins. Whilst the existing IRS
and trader demos still exist for now, these will soon be removed and there will only be a single Corda node
program. Note that the node is a single, standalone jar file that is easier to execute than the demos.
* Project Vega (shared SIMM modelling for derivative portfolios) has already been converted to be a CorDapp.
* Significant work done on making the node persist its wallet data to a SQL backend, with more on the way.
* Upgrades and refactorings of the core transaction types in preparation for the incoming sandboxing work.
* The Clauses API that seeks to make writing smart contracts easier has gone through another design iteration,
with the result that clauses are now cleaner and more composable.
* Improvements to the protocol API for finalising transactions (notarising, transmitting and storing).
* Lots of work done on an MQ based client API.
* Improvements to the developer site:
* The developer site has been re-read from start to finish and refreshed for M3 so there should be no obsolete
texts or references anywhere.
* The Corda non-technical white paper is now a part of the developer site and git repository. The LaTeX source is
also provided so if you spot any issues with it, you can send us patches.
* There is a new section on how to write CorDapps.
* Further R&D work by Sofus Mortensen in the experimental module on a new 'universal' contract language.
* SSL for the REST API and webapp server can now be configured.
Milestone 2
-----------
* Big improvements to the interest rate swap app:
* A new web app demonstrating the IRS contract has been added. This can be used as an example for how to interact with
the Corda API from the web.
* Simplifications to the way the demo is used from the command line.
* :doc:`Detailed documentation on how the contract works and can be used <contract-irs>` has been written.
* Better integration testing of the app.
* Smart contracts have been redesigned around reusable components, referred to as "clauses". The cash, commercial paper
and obligation contracts now share a common issue clause.
* New code in the experimental module (note that this module is a place for work-in-progress code which has not yet gone
through code review and which may, in general, not even function correctly):
* Thanks to the prolific Sofus Mortensen @ Nordea Bank, an experimental generic contract DSL that is based on the famous
2001 "Composing contracts" paper has been added. We thank Sofus for this great and promising research, which is so
relevant in the wake of the DAO hack.
* The contract code from the recent trade finance demos is now in experimental. This code comes thanks to a
collaboration of the members; all credit to:
* Mustafa Ozturk @ Natixis
* David Nee @ US Bank
* Johannes Albertsen @ Dankse Bank
* Rui Hu @ Nordea
* Daniele Barreca @ Unicredit
* Sukrit Handa @ Scotiabank
* Giuseppe Cardone @ Banco Intesa
* Robert Santiago @ BBVA
* The usability of the command line demo programs has been improved.
* All example code and existing contracts have been ported to use the new Java/Kotlin unit testing domain-specific
languages (DSLs) which make it easy to construct chains of transactions and verify them together. This cleans up
and unifies the previous ad-hoc set of similar DSLs. A tutorial on how to use it has been added to the documentation.
We believe this largely completes our testing story for now around smart contracts. Feedback from bank developers
during the Trade Finance project has indicated that the next thing to tackle is docs and usability improvements in
the protocols API.
* Significant work done towards defining the "CorDapp" concept in code, with dynamic loading of API services and more to
come.
* Inter-node communication now uses SSL/TLS and AMQP/1.0, albeit without all nodes self-signing at the moment. A real
PKI for the p2p network will come later.
* Logging is now saved to files with log rotation provided by Log4J.
API changes:
* Some utility methods and extension functions that are specific to certain contract types have moved packages: just
delete the import lines that no longer work and let IntelliJ replace them with the correct package paths.
* The ``arg`` method in the test DSL is now called ``command`` to be consistent with the rest of the data model.
* The messaging APIs have changed somewhat to now use a new ``TopicSession`` object. These APIs will continue to change
in the upcoming releases.
* Clauses now have default values provided for ``ifMatched``, ``ifNotMatched`` and ``requiredCommands``.
New documentation:
* :doc:`contract-catalogue`
* :doc:`contract-irs`
* :doc:`tutorial-test-dsl`
Milestone 1
-----------
Highlights of this release:
* Event scheduling. States in the ledger can now request protocols to be invoked at particular times, for states
considered relevant by the wallet.
* Upgrades to the notary/consensus service support:
* There is now a way to change the notary controlling a state.
* You can pick between validating and non-validating notaries, these let you select your privacy/robustness tradeoff.
* A new obligation contract that supports bilateral and multilateral netting of obligations, default tracking and
more.
* Improvements to the financial type system, with core classes and contracts made more generic.
* Switch to a better digital signature algorithm: ed25519 instead of the previous JDK default of secp256r1.
* A new integration test suite.
* A new Java unit testing DSL for contracts, similar in spirit to the one already developed for Kotlin users (which
depended on Kotlin specific features).
* An experimental module, where developers who want to work with the latest Corda code can check in contracts/cordapp
code before it's been fully reviewed. Code in this module has compiler warnings suppressed but we will still make
sure it compiles across refactorings.
* Persistence improvements: transaction data is now stored to disk and automatic protocol resume is now implemented.
* Many smaller bug fixes, cleanups and improvements.
We have new documentation on:
* :doc:`event-scheduling`
* :doc:`transaction-data-types`
* :doc:`consensus`
Summary of API changes (not exhaustive):
* Notary/consensus service:
* ``NotaryService`` is now extensible.
* Every ``ContractState`` now has to specify a *participants* field, which is a list of parties that are able to
consume this state in a valid transaction. This is used for e.g. making sure all relevant parties obtain the updated
state when changing a notary.
* Introduced ``TransactionState``, which wraps ``ContractState``, and is used when defining a transaction output.
The notary field is moved from ``ContractState`` into ``TransactionState``.
* Every transaction now has a *type* field, which specifies custom build & validation rules for that transaction type.
Currently two types are supported: General (runs the default build and validation logic) and NotaryChange (
contract code is not run during validation, checks that the notary field is the only difference between the
inputs and outputs).
``TransactionBuilder()`` is now abstract, you should use ``TransactionType.General.Builder()`` for building transactions.
* The cash contract has moved from ``net.corda.contracts`` to ``net.corda.contracts.cash``
* ``Amount`` class is now generic, to support non-currency types such as physical assets. Where you previously had just
``Amount``, you should now use ``Amount<Currency>``.
* Refactored the Cash contract to have a new FungibleAsset superclass, to model all countable assets that can be merged
and split (currency, barrels of oil, etc.)
* Messaging:
* ``addMessageHandler`` now has a different signature as part of error handling changes.
* If you want to return nothing to a protocol, use ``Ack`` instead of ``Unit`` from now on.
* In the IRS contract, dateOffset is now an integer instead of an enum.
* In contracts, you now use ``tx.getInputs`` and ``tx.getOutputs`` instead of ``getInStates`` and ``getOutStates``. This is
just a renaming.
* A new ``NonEmptySet`` type has been added for cases where you wish to express that you have a collection of unique
objects which cannot be empty.
* Please use the global ``newSecureRandom()`` function rather than instantiating your own SecureRandom's from now on, as
the custom function forces the use of non-blocking random drivers on Linux.
Milestone 0
-----------
This is the first release, which includes:
* Some initial smart contracts: cash, commercial paper, interest rate swaps
* An interest rate oracle
* The first version of the protocol/orchestration framework
* Some initial support for pluggable consensus mechanisms
* Tutorials and documentation explaining how it works
* Much more ...

View File

@ -88,17 +88,15 @@ Wire protocol
The client RPC wire protocol is not currently documented. To use it you must use the client library provided.
This is likely to change in a future release.
Registering classes with RPC Kryo
---------------------------------
Whitelisting classes with the Corda node
----------------------------------------
In the present implementation of the node we use Kryo to generate the *on the wire* representation of contracts states
or any other classes that form part of the RPC arguments or response. To avoid the RPC interface being wide open to all
classes on the classpath, Cordapps will currently have to register any classes or custom serialisers they require with Kryo
if they are not one of those registered by default in ``RPCKryo`` via the plugin architecture. See :doc:`creating-a-cordapp`.
This will require some familiarity with Kryo. An example is shown in :doc:`tutorial-clientrpc-api`.
To avoid the RPC interface being wide open to all
classes on the classpath, Cordapps have to whitelist any classes they require with the serialization framework of Corda,
if they are not one of those whitelisted by default in ``DefaultWhitelist``, via either the plugin architecture or simply
with the annotation ``@CordaSerializable``. See :doc:`creating-a-cordapp` or :doc:`serialization`. An example is shown in :doc:`tutorial-clientrpc-api`.
.. warning:: We will be replacing the use of Kryo in RPC with a stable message format and this will mean that this plugin
customisation point will either go away completely or change.
.. warning:: We will be replacing the use of Kryo in the serialization framework and so additional changes here are likely.
.. _CordaRPCClient: api/kotlin/corda/net.corda.client/-corda-r-p-c-client/index.html
.. _CordaRPCOps: api/kotlin/corda/net.corda.node.services.messaging/-corda-r-p-c-ops/index.html

View File

@ -91,9 +91,10 @@ extensions to be created, or registered at startup. In particular:
functions inside the node, for instance to initiate workflows when
certain conditions are met.
e. The ``registerRPCKryoTypes`` function allows custom Kryo serialisers
to be registered and whitelisted for the RPC client interface. For
instance new state types passed to flows started via RPC will need
to be explicitly registered. This will be called at various points on
various threads and needs to be stable and thread safe.
e. The ``customizeSerialization`` function allows classes to be whitelisted
for object serialisation, over and above those tagged with the ``@CordaSerializable``
annotation. In general the annotation should be preferred. For
instance new state types will need to be explicitly registered. This will be called at
various points on various threads and needs to be stable and thread safe. See
:doc:`serialization`.

View File

@ -9,14 +9,15 @@ App plugins
.. note:: Currently apps are only supported for JVM languages.
To create an app plugin you must you must extend from `CordaPluginRegistry`_. The JavaDoc contains
To create an app plugin you must extend from `CordaPluginRegistry`_. The JavaDoc contains
specific details of the implementation, but you can extend the server in the following ways:
1. Required flows: Specify which flows will be whitelisted for use in your RPC calls.
2. Service plugins: Register your services (see below).
3. Web APIs: You may register your own endpoints under /api/ of the bundled web server.
4. Static web endpoints: You may register your own static serving directories for serving web content from the web server.
5. Registering your additional classes used in RPC.
5. Whitelisting your additional contract, state and other classes for object serialization. Any class that forms part
of a persisted state, that is used in messaging between flows or in RPC needs to be whitelisted.
Services
--------

View File

@ -117,6 +117,7 @@ each side.
}
// This object is serialised to the network and is the first flow message the seller sends to the buyer.
@CordaSerializable
data class SellerTradeInfo(
val assetForSale: StateAndRef<OwnableState>,
val price: Amount<Currency>,
@ -188,6 +189,15 @@ and try again.
.. note:: Java 9 is likely to remove this pre-marking requirement completely.
Whitelisted classes with the Corda node
---------------------------------------
For security reasons, we do not want Corda nodes to be able to receive instances of any class on the classpath
via messaging, since this has been exploited in other Java application containers in the past. Instead, we require
that every class contained in messages is whitelisted. Some classes are whitelisted by default (see ``DefaultWhitelist``),
but others outside of that set need to be whitelisted either by using the annotation ``@CordaSerializable`` or via the
plugin framework. See :doc:`serialization`. You can see above that the ``SellerTradeInfo`` has been annotated.
Starting your flow
------------------

View File

@ -80,7 +80,7 @@ And a simple example CorDapp for you to explore basic concepts is available here
You can clone these repos to your local machine by running the command ``git clone [repo URL]``.
By default, these repos will be on the ``master`` branch. However, this is an unstable development branch. You should check
out the latest release tag instead by running ``git checkout release-M8.2``.
out the latest release tag instead by running ``git checkout release-M9.0``.
Opening Corda/CorDapps in IDEA
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

View File

@ -59,6 +59,8 @@ R3
The consortium behind Corda
SIMM
Standard Initial Margin Model. A way of determining a counterparty's margin payment to another counterparty based on a collection of trades such that, in the event of default, the receiving counterparty has limited exposure.
Serialization
Object serialization is the process of converting objects into a stream of bytes and, deserialization, the reverse process.
Service Hub
A hub in each Corda node that manages the services upon which other components of the node depend. Services may include facilities for identity management, storage management, network map management etc.
Signed Transaction
@ -71,3 +73,5 @@ UTXO
Unspent Transaction Output. First introduced by the bitcoin model, an unspent transaction is data that has been output from a transaction but not yet used in another transaction.
Verify
To confirm that the transaction is valid by ensuring the the outputs are correctly derived from the inputs combined with the command of the transaction.
Whitelisting
To indicate that a class is intended to be passed between nodes or between a node and an RPC client, it is added to a whitelist. This prevents the node presenting a large surface area of all classes in all dependencies of the node as containing possible vulnerabilities.

View File

@ -2,10 +2,10 @@ Welcome to the Corda documentation!
===================================
.. warning:: This build of the docs is from the "|version|" branch, not a milestone release. It may not reflect the
current state of the code. `Read the docs for milestone release M8.2 <https://docs.corda.net/releases/release-M8.2/>`_.
current state of the code. `Read the docs for milestone release M9.0 <https://docs.corda.net/releases/release-M9.0/>`_.
`Corda <https://www.corda.net/>`_ is an open-source distributed ledger platform. The latest *milestone* (i.e. stable)
release is M8.2. The codebase is on `GitHub <https://github.com/corda>`_, and our community can be found on
release is M9.0. The codebase is on `GitHub <https://github.com/corda>`_, and our community can be found on
`Slack <https://slack.corda.net/>`_ and in our `forum <https://discourse.corda.net/>`_.
If you're new to Corda, you should start by learning about its motivating vision and architecture. A good introduction
@ -13,6 +13,8 @@ is the `Introduction to Corda webinar <https://vimeo.com/192757743/c2ec39c1e1>`_
they become more familiar with Corda, readers with a technical background will also want to dive into the `Technical white paper`_,
which describes the platform's envisioned end-state.
.. note:: Corda training is now available in London, New York and Singapore! `Learn more. <https://www.corda.net/corda-training/>`_
Corda is designed so that developers can easily extend its functionality by writing CorDapps
(**Cor**\ da **D**\ istributed **App**\ lication\ **s**\ ). Some example CorDapps are available in the Corda repo's
`samples <https://github.com/corda/corda/tree/master/samples>`_ directory. To run these yourself, make
@ -70,6 +72,7 @@ Documentation Contents:
:maxdepth: 2
:caption: The Corda node
serialization
clientrpc
messaging
persistence
@ -123,6 +126,7 @@ Documentation Contents:
secure-coding-guidelines
release-process
release-notes
changelog
codestyle
building-the-docs
further-notes-on-kotlin

View File

@ -1,460 +1,49 @@
Release notes
=============
Here are brief summaries of what's changed between each snapshot release.
Here are release notes for each snapshot release from M9 onwards. This includes guidance on how to upgrade code from
the previous milestone release.
Milestone 9
-----------
* API:
This release focuses on improvements to resiliency of the core infrastructure, with highlights including a Byzantine
fault tolerant (BFT) decentralised notary, based on the BFT-SMaRT protocol and isolating the web server from the
Corda node.
* Pseudonymous ``AnonymousParty`` class added as a superclass of ``Party``.
* Split ``CashFlow`` into individual ``CashIssueFlow``, ``CashPaymentFlow`` and ``CashExitFlow`` flows, so that fine
grained permissions can be applied. Added ``CashFlowCommand`` for use-cases where cash flow triggers need to be
captured in an object that can be passed around.
With thanks to open source contributor Thomas Schroeter for providing the BFT notary, Corda can now resist malicious
attacks by members of a distributed notary service. If your notary has five members, two can become hacked or malicious
simultaneously and the system continues unaffected!
.. You can read more about this new feature <here>.
Milestone 8
-----------
The web server has been split out of the Corda node as part of our ongoing hardening of the node. We now provide a Jetty
servlet container pre-configured to contact a Corda node as a backend service out of the box, which means individual
webapps can have their REST APIs configured for the specific security environment of that app without affecting the
others, and without exposing the sensitive core of the node to malicious Javascript.
* Node memory usage and performance improvements, demo nodes now only require 200 MB heap space to run.
We have launched a global training programme, with two days of classes from the R3 team being hosted in London, New York
and Singapore. R3 members get 5 free places and seats are going fast, so sign up today.
* The Corda node no longer runs an internal web server, it's now run in a separate process. Driver and Cordformation have
been updated to reflect this change.
Existing CorDapps should be updated with additional calls to the new ``startWebserver()`` interface in their Driver logic (if they use the driver e.g. in integration tests).
See the IRS demo for an example.
We've started on support for confidential identities, based on the key randomisation techniques pioneered by the Bitcoin
and Ethereum communities. Identities may be either anonymous when a transaction is a part of a chain of custody, or fully
legally verified when a transaction is with a counterparty. Type safety is used to ensure the verification level of a
party is always clear and avoid mistakes. Future work will add support for generating new identity keys and providing a
certificate path to show ownership by the well known identity.
* Data model: ``Party`` equality is now based on the owning key, rather than the owning key and name. This is important for
party anonymisation to work, as each key must identify exactly one party.
There are even more privacy improvements when a non-validating notary is used; the Merkle tree algorithm is used to hide
parts of the transaction that a non-validating notary doesn't need to see, whilst still allowing the decentralised
notary service to sign the entire transaction.
* Contracts: created new composite clauses called ``AllOf``, ``AnyOf`` and ``FirstOf`` to replace ``AllComposition``, ``AnyComposition``
and ``FirstComposition``, as this is significantly clearer in intent. ``AnyOf`` also enforces that at least one subclause
must match, whereas ``AnyComposition`` would accept no matches.
The serialisation API has been simplified and improved. Developers now only need to tag types that will be placed in
smart contracts or sent between parties with a single annotation... and sometimes even that isn't necessary!
* Explorer: the user can now configure certificate path and keystore/truststore password on the login screen.
Better permissioning in the cash CorDapp, to allow node users to be granted different permissions depending on whether
they manage the issuance, movement or ledger exit of cash tokens.
* Documentation:
We've continued to improve error handling in flows, with information about errors being fed through to observing RPC
clients.
* Key Concepts section revamped with new structure and content.
* Added more details to :doc:`getting-set-up` page.
There have also been dozens of bug fixes, performance improvements and usability tweaks. Upgrading is definitely
worthwhile and will only take a few minutes for most apps.
* Flow framework: improved exception handling with the introduction of ``FlowException``. If this or a subtype is thrown
inside a flow it will propagate to all counterparty flows and subsequently be thrown by them as well. Existing flows such as
``NotaryFlow.Client/Service`` and others have been modified to throw a ``FlowException`` (in this particular case a
``NotaryException``) instead of sending back error responses.
* Notary flow: provide complete details of underlying error when contract validation fails.
Milestone 7
-----------
* With thanks to `Thomas Schroeter <https://github.com/thschroeter>`_ ``NotaryFlow`` is now idempotent.
* Explorer:
* The GUI for the explorer now shows other nodes on the network map and the transactions between them.
* Map resolution increased and allows zooming and panning.
* `Video demonstration <https://www.corda.net/2017/01/03/the-node-explorer/>`_ of the Node Explorer.
* The CorDapp template now has a Java example that parallels the Kotlin one for developers more comfortable with Java.
ORM support added to the Kotlin example.
* Demos:
* Added the Bank of Corda demo - a demo showing a node (Bank of Corda) acting as an issuer of Cash, and a client
driver providing both Web and RPC access to request issuance of cash.
* Demos now use RPC to communicate with the node from the webserver. This brings the demos more in line with how
interaction with nodes is expected to be. The demos now treat their webservers like clients. This will also allow
for the splitting of the webserver from the node for milestone 8.
* Added a SIMM valuation demo integration test to catch regressions.
* Security:
* MQ broker of the node now requires authentication which means that third parties cannot connect to and
listen to queues on the Node. RPC and P2P between nodes is now authenticated as a result of this change.
This also means that nodes or RPC users cannot pretend to be other nodes or RPC users.
* The node now does host verification of any node that connects to it and prevents man in the middle attacks.
* Improvements:
* Vault updates now contain full ``StateAndRef`` which allows subscribers to check whether the update contains
relevant states.
* Cash balances are calculated using aggregate values to prevent iterating through all states in the vault, which
improves performance.
* Multi-party services, such as notaries, are now load balanced and represented as a single ``Party`` object.
* The Notary Change flow now supports encumbrances.
Milestone 6
-----------
* Added the `Corda technical white paper <_static/corda-technical-whitepaper.pdf>`_. Note that its current version
is 0.5 to reflect the fact that the Corda design is still evolving. Although we expect only relatively small tweaks
at this point, when Corda reaches 1.0 so will the white paper.
* Major documentation restructuring and new content:
* More details on Corda node internals.
* New CorDapp tutorial.
* New tutorial on building transactions.
* New tutorials on how to run and use a notary service.
* An experimental version of the deterministic JVM sandbox has been added. It is not integrated with the node and will
undergo some significant changes in the coming releases before it is integrated, as the code is finished, as bugs are
found and fixed, and as the platform subset we choose to expose is finalised. Treat this as an outline of the basic
approach rather than something usable for production.
* Developer experience:
* Samples have been merged back into the main repository. All samples can now be run via command line or IntelliJ.
* Added a Client RPC python example.
* Node console output now displays concise startup information, such as startup time or web address. All logging to
the console is suppressed apart from errors and flow progress tracker steps. It can be re-enabled by passing
``--log-to-console`` command line parameter. Note that the log file remains unchanged and will still contain all
log entries.
* The ``runnodes`` scripts generated by the Gradle plugins now open each node in separate terminal windows or (on macOS) tabs.
* A much more complete template app.
* JARs now available on Maven Central.
* Data model: A party is now identified by a composite key (formerly known as a "public key tree") instead of a single public key.
Read more in :ref:`composite-keys`. This allows expressing distributed service identities, e.g. a distributed notary.
In the future this will also allow parties to use multiple signing keys for their legal identity.
* Decentralised consensus: A prototype RAFT based notary composed of multiple nodes has been added. This implementation
is optimised for high performance over robustness against malicious cluster members, which may be appropriate for
some financial situations. See :ref:`notary-demo` to try it out. A BFT notary will be added later.
* Node explorer app:
* New theme aligned with the Corda branding.
* The New Transaction screen moved to the Cash View (as it is used solely for cash transactions)
* Removed state machine/flow information from Transaction table. A new view for this will be created in a future release.
* Added a new Network View that displays details of all nodes on the network.
* Users can now configure the reporting currency in settings.
* Various layout and performance enhancements.
* Client RPC:
* Added a generic ``startFlow`` method that enables starting of any flow, given sufficient permissions.
* Added the ability for plugins to register additional classes or custom serialisers with Kryo for use in RPC.
* ``rpc-users.properties`` file has been removed with RPC user settings moved to the config file.
* Configuration changes: It is now possible to specify a custom legal name for any of the node's advertised services.
* Added a load testing framework which allows stress testing of a node cluster, as well as specifying different ways of
disrupting the normal operation of nodes. See :doc:`loadtesting`.
* Improvements to the experimental contract DSL, by Sofus Mortensen of Nordea Bank (please give Nordea a shoutout too).
API changes:
* The top level package has been renamed from ``com.r3corda`` to ``net.corda``.
* Protocols have been renamed to "flows".
* ``OpaqueBytes`` now uses ``bytes`` as the field name rather than ``bits``.
Milestone 5
-----------
* A simple RPC access control mechanism. Users, passwords and permissions can be defined in a configuration file.
This mechanism will be extended in future to support standard authentication systems like LDAP.
* New features in the explorer app and RPC API for working with cash:
* Cash can now be sent, issued and exited via RPC.
* Notes can now be associated with transactions.
* Hashes are visually represented using identicons.
* Lots of functional work on the explorer UI. You can try it out by running ``gradle tools:explorer:runDemoNodes`` to run
a local network of nodes that swap cash with each other, and then run ``gradle tools:explorer:run`` to start
the app.
* A new demo showing shared valuation of derivatives portfolios using the ISDA SIMM has been added. Note that this app
relies on a proprietary implementation of the ISDA SIMM business logic from OpenGamma. A stub library is provided
to ensure it compiles but if you want to use the app for real please contact us.
* Developer experience (we plan to do lots more here in milestone 6):
* Demos and samples have been split out of the main repository, and the initial developer experience continues to be
refined. All necessary JARs can now be installed to Maven Local by simply running ``gradle install``.
* It's now easier to define a set of nodes to run locally using the new "CordFormation" gradle plugin, which
defines a simple DSL for creating networks of nodes.
* The template CorDapp has been upgraded with more documentation and showing more features.
* Privacy: transactions are now structured as Merkle trees, and can have sections "torn off" - presented for
verification and signing without revealing the rest of the transaction.
* Lots of bug fixes, tweaks and polish starting the run up to the open source release.
API changes:
* Plugin service classes now take a ``PluginServiceHub`` rather than a ``ServiceHubInternal``.
* ``UniqueIdentifier`` equality has changed to only take into account the underlying UUID.
* The contracts module has been renamed to finance, to better reflect what it is for.
Milestone 4
-----------
New features in this release:
* Persistence:
* States can now be written into a relational database and queried using JDBC. The schemas are defined by the
smart contracts and schema versioning is supported. It is reasonable to write an app that stores data in a mix
of global ledger transactions and local database tables which are joined on demand, using join key slots that
are present in many state definitions. Read more about :doc:`persistence`.
* The embedded H2 SQL database is now exposed by default to any tool that can speak JDBC. The database URL is
printed during node startup and can be used to explore the database, which contains both node internal data
and tables generated from ledger states.
* Protocol checkpoints are now stored in the database as well. Message processing is now atomic with protocol
checkpointing and run under the same RDBMS transaction.
* MQ message deduplication is now handled at the app layer and performed under the RDMS transaction, so
ensuring messages are only replayed if the RDMS transaction rolled back.
* "The wallet" has been renamed to "the vault".
* Client RPC:
* New RPCs added to subscribe to snapshots and update streams state of the vault, currently executing protocols
and other important node information.
* New tutorial added that shows how to use the RPC API to draw live transaction graphs on screen.
* Protocol framework:
* Large simplifications to the API. Session management is now handled automatically. Messages are now routed
based on identities rather than node IP addresses.
* Decentralised consensus:
* A standalone one-node notary backed by a JDBC store has been added.
* A prototype RAFT based notary composed of multiple nodes is available on a branch.
* Data model:
* Compound keys have been added as preparation for merging a distributed RAFT based notary. Compound keys
are trees of public keys in which interior nodes can have validity thresholds attached, thus allowing
boolean formulas of keys to be created. This is similar to Bitcoin's multi-sig support and the data model
is the same as the InterLedger Crypto-Conditions spec, which should aid interop in future. Read more about
key trees in the ":doc:`transaction-data-types`" article.
* A new tutorial has been added showing how to use transaction attachments in more detail.
* Testnet
* Permissioning infrastructure phase one is built out. The node now has a notion of developer mode vs normal
mode. In developer mode it works like M3 and the SSL certificates used by nodes running on your local
machine all self-sign using a developer key included in the source tree. When developer mode is not active,
the node won't start until it has a signed certificate. Such a certificate can be obtained by simply running
an included command line utility which generates a CSR and submits it to a permissioning service, then waits
for the signed certificate to be returned. Note that currently there is no public Corda testnet, so we are
not currently running a permissioning service.
* Standalone app development:
* The Corda libraries that app developers need to link against can now be installed into your local Maven
repository, where they can then be used like any other JAR. See :doc:`creating-a-cordapp`.
* User interfaces:
* Infrastructure work on the node explorer is now complete: it is fully switched to using the MQ based RPC system.
* A library of additional reactive collections has been added. This API builds on top of Rx and the observable
collections API in Java 8 to give "live" data structures in which the state of the node and ledger can be
viewed as an ordinary Java ``List``, ``Map`` and ``Set``, but which also emit callbacks when these views
change, and which can have additional views derived in a functional manner (filtered, mapped, sorted, etc).
Finally, these views can then be bound directly into JavaFX UIs. This makes for a concise and functional
way of building application UIs that render data from the node, and the API is available for third party
app developers to use as well. We believe this will be highly productive and enjoyable for developers who
have the option of building JavaFX apps (vs web apps).
* The visual network simulator tool that was demoed back in April as part of the first Corda live demo has
been merged into the main repository.
* Documentation
* New secure coding guidelines. Corda tries to eliminate as many security mistakes as practical via the type
system and other mechanically checkable processes, but there are still things that one must be aware of.
* New attachments tutorial.
* New Client RPC tutorial.
* More tutorials on how to build a standalone CorDapp.
* Testing
* More integration testing support
* New micro-DSLs for expressing expected sequences of operations with more or less relaxed ordering constraints.
* QuickCheck generators to create streams of randomised transactions and other basic types. QuickCheck is a way
of writing unit tests that perform randomised fuzz testing of code, originally developed by the Haskell
community and now also available in Java.
API changes:
* The transaction types (Signed, Wire, LedgerTransaction) have moved to ``net.corda.core.transactions``. You can
update your code by just deleting the broken import lines and letting your IDE re-import them from the right
location.
* ``AbstractStateReplacementProtocol.verifyProposal`` has changed its prototype in a minor way.
* The ``UntrustworthyData<T>.validate`` method has been renamed to ``unwrap`` - the old name is now deprecated.
* The wallet, wallet service, etc. are now vault, vault service, etc. These better reflect the intent that they
are a generic secure data store, rather than something which holds cash.
* The protocol send/receive APIs have changed to no longer require a session id. Please check the current version
of the protocol framework tutorial for more details.
Milestone 3
-----------
* More work on preparing for the testnet:
* Corda is now a standalone app server that loads "CorDapps" into itself as plugins. Whilst the existing IRS
and trader demos still exist for now, these will soon be removed and there will only be a single Corda node
program. Note that the node is a single, standalone jar file that is easier to execute than the demos.
* Project Vega (shared SIMM modelling for derivative portfolios) has already been converted to be a CorDapp.
* Significant work done on making the node persist its wallet data to a SQL backend, with more on the way.
* Upgrades and refactorings of the core transaction types in preparation for the incoming sandboxing work.
* The Clauses API that seeks to make writing smart contracts easier has gone through another design iteration,
with the result that clauses are now cleaner and more composable.
* Improvements to the protocol API for finalising transactions (notarising, transmitting and storing).
* Lots of work done on an MQ based client API.
* Improvements to the developer site:
* The developer site has been re-read from start to finish and refreshed for M3 so there should be no obsolete
texts or references anywhere.
* The Corda non-technical white paper is now a part of the developer site and git repository. The LaTeX source is
also provided so if you spot any issues with it, you can send us patches.
* There is a new section on how to write CorDapps.
* Further R&D work by Sofus Mortensen in the experimental module on a new 'universal' contract language.
* SSL for the REST API and webapp server can now be configured.
Milestone 2
-----------
* Big improvements to the interest rate swap app:
* A new web app demonstrating the IRS contract has been added. This can be used as an example for how to interact with
the Corda API from the web.
* Simplifications to the way the demo is used from the command line.
* :doc:`Detailed documentation on how the contract works and can be used <contract-irs>` has been written.
* Better integration testing of the app.
* Smart contracts have been redesigned around reusable components, referred to as "clauses". The cash, commercial paper
and obligation contracts now share a common issue clause.
* New code in the experimental module (note that this module is a place for work-in-progress code which has not yet gone
through code review and which may, in general, not even function correctly):
* Thanks to the prolific Sofus Mortensen @ Nordea Bank, an experimental generic contract DSL that is based on the famous
2001 "Composing contracts" paper has been added. We thank Sofus for this great and promising research, which is so
relevant in the wake of the DAO hack.
* The contract code from the recent trade finance demos is now in experimental. This code comes thanks to a
collaboration of the members; all credit to:
* Mustafa Ozturk @ Natixis
* David Nee @ US Bank
* Johannes Albertsen @ Dankse Bank
* Rui Hu @ Nordea
* Daniele Barreca @ Unicredit
* Sukrit Handa @ Scotiabank
* Giuseppe Cardone @ Banco Intesa
* Robert Santiago @ BBVA
* The usability of the command line demo programs has been improved.
* All example code and existing contracts have been ported to use the new Java/Kotlin unit testing domain-specific
languages (DSLs) which make it easy to construct chains of transactions and verify them together. This cleans up
and unifies the previous ad-hoc set of similar DSLs. A tutorial on how to use it has been added to the documentation.
We believe this largely completes our testing story for now around smart contracts. Feedback from bank developers
during the Trade Finance project has indicated that the next thing to tackle is docs and usability improvements in
the protocols API.
* Significant work done towards defining the "CorDapp" concept in code, with dynamic loading of API services and more to
come.
* Inter-node communication now uses SSL/TLS and AMQP/1.0, albeit without all nodes self-signing at the moment. A real
PKI for the p2p network will come later.
* Logging is now saved to files with log rotation provided by Log4J.
API changes:
* Some utility methods and extension functions that are specific to certain contract types have moved packages: just
delete the import lines that no longer work and let IntelliJ replace them with the correct package paths.
* The ``arg`` method in the test DSL is now called ``command`` to be consistent with the rest of the data model.
* The messaging APIs have changed somewhat to now use a new ``TopicSession`` object. These APIs will continue to change
in the upcoming releases.
* Clauses now have default values provided for ``ifMatched``, ``ifNotMatched`` and ``requiredCommands``.
New documentation:
* :doc:`contract-catalogue`
* :doc:`contract-irs`
* :doc:`tutorial-test-dsl`
Milestone 1
-----------
Highlights of this release:
* Event scheduling. States in the ledger can now request protocols to be invoked at particular times, for states
considered relevant by the wallet.
* Upgrades to the notary/consensus service support:
* There is now a way to change the notary controlling a state.
* You can pick between validating and non-validating notaries, these let you select your privacy/robustness tradeoff.
* A new obligation contract that supports bilateral and multilateral netting of obligations, default tracking and
more.
* Improvements to the financial type system, with core classes and contracts made more generic.
* Switch to a better digital signature algorithm: ed25519 instead of the previous JDK default of secp256r1.
* A new integration test suite.
* A new Java unit testing DSL for contracts, similar in spirit to the one already developed for Kotlin users (which
depended on Kotlin specific features).
* An experimental module, where developers who want to work with the latest Corda code can check in contracts/cordapp
code before it's been fully reviewed. Code in this module has compiler warnings suppressed but we will still make
sure it compiles across refactorings.
* Persistence improvements: transaction data is now stored to disk and automatic protocol resume is now implemented.
* Many smaller bug fixes, cleanups and improvements.
We have new documentation on:
* :doc:`event-scheduling`
* :doc:`transaction-data-types`
* :doc:`consensus`
Summary of API changes (not exhaustive):
* Notary/consensus service:
* ``NotaryService`` is now extensible.
* Every ``ContractState`` now has to specify a *participants* field, which is a list of parties that are able to
consume this state in a valid transaction. This is used for e.g. making sure all relevant parties obtain the updated
state when changing a notary.
* Introduced ``TransactionState``, which wraps ``ContractState``, and is used when defining a transaction output.
The notary field is moved from ``ContractState`` into ``TransactionState``.
* Every transaction now has a *type* field, which specifies custom build & validation rules for that transaction type.
Currently two types are supported: General (runs the default build and validation logic) and NotaryChange (
contract code is not run during validation, checks that the notary field is the only difference between the
inputs and outputs).
``TransactionBuilder()`` is now abstract, you should use ``TransactionType.General.Builder()`` for building transactions.
* The cash contract has moved from ``net.corda.contracts`` to ``net.corda.contracts.cash``
* ``Amount`` class is now generic, to support non-currency types such as physical assets. Where you previously had just
``Amount``, you should now use ``Amount<Currency>``.
* Refactored the Cash contract to have a new FungibleAsset superclass, to model all countable assets that can be merged
and split (currency, barrels of oil, etc.)
* Messaging:
* ``addMessageHandler`` now has a different signature as part of error handling changes.
* If you want to return nothing to a protocol, use ``Ack`` instead of ``Unit`` from now on.
* In the IRS contract, dateOffset is now an integer instead of an enum.
* In contracts, you now use ``tx.getInputs`` and ``tx.getOutputs`` instead of ``getInStates`` and ``getOutStates``. This is
just a renaming.
* A new ``NonEmptySet`` type has been added for cases where you wish to express that you have a collection of unique
objects which cannot be empty.
* Please use the global ``newSecureRandom()`` function rather than instantiating your own SecureRandom's from now on, as
the custom function forces the use of non-blocking random drivers on Linux.
Milestone 0
-----------
This is the first release, which includes:
* Some initial smart contracts: cash, commercial paper, interest rate swaps
* An interest rate oracle
* The first version of the protocol/orchestration framework
* Some initial support for pluggable consensus mechanisms
* Tutorials and documentation explaining how it works
* Much more ...
For a full list of changes please see :doc:`change-log`.

View File

@ -27,18 +27,22 @@ Steps to cut a release
1. Pick a commit that is stable and do basic QA: run all the tests, run the demos.
2. Review the commits between this release and the last looking for new features, API changes, etc. Make sure the
summary in the current section of the :doc:`release-notes` is correct and update if not. Then move it into the right
section for this release. This is the right place to put any advice on how to port app code from the last release.
3. Additionally, if there are any new features or APIs that deserve a new section in the docsite and the author didn't
summary in the current section of the :doc:`changelog` is correct and update if not. Then move it into the right
section for this release.
3. Write up a summary of the changes for the :doc:`release-notes`. This should primarily be suited to a semi-technical
audience, but any advice on how to port app code from the previous release, configuration changes required, etc.
should also go here.
4. Additionally, if there are any new features or APIs that deserve a new section in the docsite and the author didn't
create one, bug them to do so a day or two before the release.
4. Regenerate the docsite if necessary and commit.
5. Create a branch with a name like `release-M0` where 0 is replaced by the number of the milestone.
6. Adjust the version in the root build.gradle file to take out the -SNAPSHOT and commit it on the branch.
7. Remove the "is master" warning from the docsite index page on this branch only.
8. Tag the branch with a tag like `release-M0.0`
9. Push the branch and the tag to git.
10. Write up a short announcement containing the summary of new features, changes, and API breaks. Send it to the r3dlg-awg mailing list.
11. On master, adjust the version number in the root build.gradle file upwards.
5. Regenerate the docsite if necessary and commit.
6. Create a branch with a name like `release-M0` where 0 is replaced by the number of the milestone.
7. Adjust the version in the root build.gradle file to take out the -SNAPSHOT and commit it on the branch.
8. Remove the "is master" warning from the docsite index page on this branch only.
9. Tag the branch with a tag like `release-M0.0`
10. Push the branch and the tag to git.
11. Write up a short announcement containing the summary of new features, changes, and API breaks.
This can often be derived from the release notes. Send it to the r3dlg-awg mailing list.
12. On master, adjust the version number in the root build.gradle file upwards.
If there are serious bugs found in the release, backport the fix to the branch and then tag it with e.g. `release-M0.1`
Minor changes to the branch don't have to be announced unless it'd be critical to get all developers updated.

View File

@ -0,0 +1,39 @@
Object Serialization
====================
What is serialization (and deserialization)?
--------------------------------------------
Object serialization is the process of converting objects into a stream of bytes and, deserialization, the reverse
process of creating objects from a stream of bytes. It takes place every time nodes pass objects to each other as
messages, when objects are sent to or from RPC clients from the node, and when we store transactions in the database.
Whitelisting
------------
In classic Java serialization, any class on the JVM classpath can be deserialized. This has shown to be a source of exploits
and vulnerabilities by exploiting the large set of 3rd party libraries on the classpath as part of the dependencies of
a JVM application and a carefully crafted stream of bytes to be deserialized. In Corda, we prevent just any class from
being deserialized (and pro-actively during serialization) by insisting that each object's class belongs on a whitelist
of allowed classes.
Classes get onto the whitelist via one of three mechanisms:
#. Via the ``@CordaSerializable`` annotation. In order to whitelist a class, this annotation can be present on the
class itself, on any of the super classes or on any interface implemented by the class or super classes or any
interface extended by an interface implemented by the class or superclasses.
#. By returning the class as part of a plugin via the method ``customizeSerialization``. It's important to return
true from this method if you override it, otherwise the plugin will be excluded. See :doc:`corda-plugins`.
#. Via the built in Corda whitelist (see the class ``DefaultWhitelist``). Whilst this is not user editable, it does list
common JDK classes that have been whitelisted for your convenience.
The annotation is the preferred method for whitelisting. An example is shown in :doc:`tutorial-clientrpc-api`.
It's reproduced here as an example of both ways you can do this for a couple of example classes.
.. literalinclude:: example-code/src/main/kotlin/net/corda/docs/ClientRpcTutorial.kt
:language: kotlin
:start-after: START 7
:end-before: END 7
.. note:: Several of the core interfaces at the heart of Corda are already annotated and so any classes that implement
them will automatically be whitelisted. This includes `Contract`, `ContractState` and `CommandData`.

View File

@ -85,11 +85,11 @@ Now let's try to visualise the transaction graph. We will use a graph drawing li
If we run the client with ``Visualise`` we should see a simple random graph being drawn as new transactions are being created.
Registering classes from your CorDapp with RPC Kryo
---------------------------------------------------
Whitelisting classes from your CorDapp with the Corda node
----------------------------------------------------------
As described in :doc:`clientrpc`, you currently have to register any additional classes you add that are needed in RPC
requests or responses with the `Kryo` instance RPC uses. Here's an example of how you do this for an example class.
As described in :doc:`clientrpc`, you have to whitelist any additional classes you add that are needed in RPC
requests or responses with the Corda node. Here's an example of both ways you can do this for a couple of example classes.
.. literalinclude:: example-code/src/main/kotlin/net/corda/docs/ClientRpcTutorial.kt
:language: kotlin
@ -98,8 +98,7 @@ requests or responses with the `Kryo` instance RPC uses. Here's an example of h
See more on plugins in :doc:`creating-a-cordapp`.
.. warning:: We will be replacing the use of Kryo in RPC with a stable message format and this will mean that this plugin
customisation point will either go away completely or change.
.. warning:: We will be replacing the use of Kryo in the serialization framework and so additional changes here are likely.
Security
--------

View File

@ -2,10 +2,10 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_121) on Wed Feb 22 10:57:29 GMT 2017 -->
<!-- Generated by javadoc (1.8.0_121) on Thu Mar 02 15:43:27 GMT 2017 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>All Classes</title>
<meta name="date" content="2017-02-22">
<meta name="date" content="2017-03-02">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
@ -44,6 +44,7 @@
<li><a href="net/corda/core/contracts/clauses/AllComposition.html" title="class in net.corda.core.contracts.clauses" target="classFrame">AllComposition</a></li>
<li><a href="net/corda/core/contracts/clauses/AllOf.html" title="class in net.corda.core.contracts.clauses" target="classFrame">AllOf</a></li>
<li><a href="net/corda/core/messaging/AllPossibleRecipients.html" title="interface in net.corda.core.messaging" target="classFrame"><span class="interfaceName">AllPossibleRecipients</span></a></li>
<li><a href="net/corda/core/serialization/AllWhitelist.html" title="class in net.corda.core.serialization" target="classFrame">AllWhitelist</a></li>
<li><a href="net/corda/core/contracts/Amount.html" title="class in net.corda.core.contracts" target="classFrame">Amount</a></li>
<li><a href="net/corda/core/contracts/Amount.Companion.html" title="class in net.corda.core.contracts" target="classFrame">Amount.Companion</a></li>
<li><a href="net/corda/client/fxutils/AmountBindings.html" title="class in net.corda.client.fxutils" target="classFrame">AmountBindings</a></li>
@ -54,8 +55,6 @@
<li><a href="net/corda/node/utilities/ANSIProgressRenderer.html" title="class in net.corda.node.utilities" target="classFrame">ANSIProgressRenderer</a></li>
<li><a href="net/corda/core/contracts/clauses/AnyComposition.html" title="class in net.corda.core.contracts.clauses" target="classFrame">AnyComposition</a></li>
<li><a href="net/corda/core/contracts/clauses/AnyOf.html" title="class in net.corda.core.contracts.clauses" target="classFrame">AnyOf</a></li>
<li><a href="net/corda/node/webserver/api/APIServer.html" title="interface in net.corda.node.webserver.api" target="classFrame"><span class="interfaceName">APIServer</span></a></li>
<li><a href="net/corda/node/webserver/internal/APIServerImpl.html" title="class in net.corda.node.webserver.internal" target="classFrame">APIServerImpl</a></li>
<li><a href="net/corda/core/utilities/ApiUtils.html" title="class in net.corda.core.utilities" target="classFrame">ApiUtils</a></li>
<li><a href="net/corda/core/flows/AppContext.html" title="class in net.corda.core.flows" target="classFrame">AppContext</a></li>
<li><a href="net/corda/node/ArgsParser.html" title="class in net.corda.node" target="classFrame">ArgsParser</a></li>
@ -72,10 +71,10 @@
<li><a href="net/corda/client/fxutils/AssociatedList.html" title="class in net.corda.client.fxutils" target="classFrame">AssociatedList</a></li>
<li><a href="net/corda/core/contracts/Attachment.html" title="interface in net.corda.core.contracts" target="classFrame"><span class="interfaceName">Attachment</span></a></li>
<li><a href="net/corda/core/contracts/Attachment.DefaultImpls.html" title="class in net.corda.core.contracts" target="classFrame">Attachment.DefaultImpls</a></li>
<li><a href="net/corda/node/webserver/servlets/AttachmentDownloadServlet.html" title="class in net.corda.node.webserver.servlets" target="classFrame">AttachmentDownloadServlet</a></li>
<li><a href="net/corda/core/contracts/AttachmentResolutionException.html" title="class in net.corda.core.contracts" target="classFrame">AttachmentResolutionException</a></li>
<li><a href="net/corda/core/node/AttachmentsClassLoader.html" title="class in net.corda.core.node" target="classFrame">AttachmentsClassLoader</a></li>
<li><a href="net/corda/core/node/AttachmentsClassLoader.OverlappingAttachments.html" title="class in net.corda.core.node" target="classFrame">AttachmentsClassLoader.OverlappingAttachments</a></li>
<li><a href="net/corda/core/node/services/AttachmentsStorageService.html" title="interface in net.corda.core.node.services" target="classFrame"><span class="interfaceName">AttachmentsStorageService</span></a></li>
<li><a href="net/corda/core/node/services/AttachmentStorage.html" title="interface in net.corda.core.node.services" target="classFrame"><span class="interfaceName">AttachmentStorage</span></a></li>
<li><a href="net/corda/core/contracts/AuthenticatedObject.html" title="class in net.corda.core.contracts" target="classFrame">AuthenticatedObject</a></li>
<li><a href="net/corda/core/transactions/BaseTransaction.html" title="class in net.corda.core.transactions" target="classFrame">BaseTransaction</a></li>
@ -89,6 +88,7 @@
<li><a href="net/corda/core/contracts/BilateralNettableState.html" title="interface in net.corda.core.contracts" target="classFrame"><span class="interfaceName">BilateralNettableState</span></a></li>
<li><a href="net/corda/flows/BroadcastTransactionFlow.html" title="class in net.corda.flows" target="classFrame">BroadcastTransactionFlow</a></li>
<li><a href="net/corda/flows/BroadcastTransactionFlow.NotifyTxRequest.html" title="class in net.corda.flows" target="classFrame">BroadcastTransactionFlow.NotifyTxRequest</a></li>
<li><a href="net/corda/core/serialization/BuiltInExceptionsWhitelist.html" title="class in net.corda.core.serialization" target="classFrame">BuiltInExceptionsWhitelist</a></li>
<li><a href="net/corda/core/contracts/BusinessCalendar.html" title="class in net.corda.core.contracts" target="classFrame">BusinessCalendar</a></li>
<li><a href="net/corda/core/contracts/BusinessCalendar.Companion.html" title="class in net.corda.core.contracts" target="classFrame">BusinessCalendar.Companion</a></li>
<li><a href="net/corda/core/contracts/BusinessCalendar.UnknownCalendar.html" title="class in net.corda.core.contracts" target="classFrame">BusinessCalendar.UnknownCalendar</a></li>
@ -126,6 +126,7 @@
<li><a href="net/corda/client/fxutils/ChosenList.html" title="class in net.corda.client.fxutils" target="classFrame">ChosenList</a></li>
<li><a href="net/corda/core/node/CityDatabase.html" title="class in net.corda.core.node" target="classFrame">CityDatabase</a></li>
<li><a href="net/corda/node/services/messaging/ClassSerializer.html" title="class in net.corda.node.services.messaging" target="classFrame">ClassSerializer</a></li>
<li><a href="net/corda/core/serialization/ClassWhitelist.html" title="interface in net.corda.core.serialization" target="classFrame"><span class="interfaceName">ClassWhitelist</span></a></li>
<li><a href="net/corda/core/contracts/clauses/Clause.html" title="class in net.corda.core.contracts.clauses" target="classFrame">Clause</a></li>
<li><a href="net/corda/core/contracts/clauses/Clause.Companion.html" title="class in net.corda.core.contracts.clauses" target="classFrame">Clause.Companion</a></li>
<li><a href="net/corda/core/contracts/clauses/ClauseKt.html" title="class in net.corda.core.contracts.clauses" target="classFrame">ClauseKt</a></li>
@ -265,6 +266,10 @@
<li><a href="net/corda/flows/ContractUpgradeFlow.Acceptor.html" title="class in net.corda.flows" target="classFrame">ContractUpgradeFlow.Acceptor</a></li>
<li><a href="net/corda/flows/ContractUpgradeFlow.Instigator.html" title="class in net.corda.flows" target="classFrame">ContractUpgradeFlow.Instigator</a></li>
<li><a href="net/corda/node/Corda.html" title="class in net.corda.node" target="classFrame">Corda</a></li>
<li><a href="net/corda/core/serialization/CordaClassResolver.html" title="class in net.corda.core.serialization" target="classFrame">CordaClassResolver</a></li>
<li><a href="net/corda/core/serialization/CordaClassResolver.Companion.html" title="class in net.corda.core.serialization" target="classFrame">CordaClassResolver.Companion</a></li>
<li><a href="net/corda/core/serialization/CordaClassResolverKt.html" title="class in net.corda.core.serialization" target="classFrame">CordaClassResolverKt</a></li>
<li><a href="net/corda/core/serialization/CordaKryo.html" title="class in net.corda.core.serialization" target="classFrame">CordaKryo</a></li>
<li><a href="net/corda/core/node/CordaPluginRegistry.html" title="class in net.corda.core.node" target="classFrame">CordaPluginRegistry</a></li>
<li><a href="net/corda/node/services/messaging/CordaRPCClient.html" title="class in net.corda.node.services.messaging" target="classFrame">CordaRPCClient</a></li>
<li><a href="net/corda/node/services/messaging/CordaRPCClientImpl.html" title="class in net.corda.node.services.messaging" target="classFrame">CordaRPCClientImpl</a></li>
@ -273,15 +278,13 @@
<li><a href="net/corda/node/internal/CordaRPCOpsImpl.html" title="class in net.corda.node.internal" target="classFrame">CordaRPCOpsImpl</a></li>
<li><a href="net/corda/node/internal/CordaRPCOpsImpl.Companion.html" title="class in net.corda.node.internal" target="classFrame">CordaRPCOpsImpl.Companion</a></li>
<li><a href="net/corda/core/messaging/CordaRPCOpsKt.html" title="class in net.corda.core.messaging" target="classFrame">CordaRPCOpsKt</a></li>
<li><a href="net/corda/node/webserver/api/Criteria.AllDeals.html" title="class in net.corda.node.webserver.api" target="classFrame">Criteria.AllDeals</a></li>
<li><a href="net/corda/node/webserver/api/Criteria.Deal.html" title="class in net.corda.node.webserver.api" target="classFrame">Criteria.Deal</a></li>
<li><a href="net/corda/core/serialization/CordaSerializable.html" title="interface in net.corda.core.serialization" target="classFrame"><span class="interfaceName">CordaSerializable</span></a></li>
<li><a href="net/corda/core/crypto/CryptoUtilities.html" title="class in net.corda.core.crypto" target="classFrame">CryptoUtilities</a></li>
<li><a href="net/corda/core/math/CubicSplineInterpolator.html" title="class in net.corda.core.math" target="classFrame">CubicSplineInterpolator</a></li>
<li><a href="net/corda/core/math/CubicSplineInterpolator.Factory.html" title="class in net.corda.core.math" target="classFrame">CubicSplineInterpolator.Factory</a></li>
<li><a href="net/corda/core/testing/CurrencyGenerator.html" title="class in net.corda.core.testing" target="classFrame">CurrencyGenerator</a></li>
<li><a href="net/corda/core/testing/CurrencyGenerator.Companion.html" title="class in net.corda.core.testing" target="classFrame">CurrencyGenerator.Companion</a></li>
<li><a href="net/corda/node/utilities/DatabaseSupportKt.html" title="class in net.corda.node.utilities" target="classFrame">DatabaseSupportKt</a></li>
<li><a href="net/corda/node/webserver/servlets/DataUploadServlet.html" title="class in net.corda.node.webserver.servlets" target="classFrame">DataUploadServlet</a></li>
<li><a href="net/corda/node/services/persistence/DataVending.html" title="class in net.corda.node.services.persistence" target="classFrame">DataVending</a></li>
<li><a href="net/corda/node/services/persistence/DataVending.Plugin.html" title="class in net.corda.node.services.persistence" target="classFrame">DataVending.Plugin</a></li>
<li><a href="net/corda/node/services/persistence/DataVending.Service.html" title="class in net.corda.node.services.persistence" target="classFrame">DataVending.Service</a></li>
@ -298,6 +301,8 @@
<li><a href="net/corda/node/services/persistence/DBTransactionMappingStorage.html" title="class in net.corda.node.services.persistence" target="classFrame">DBTransactionMappingStorage</a></li>
<li><a href="net/corda/node/services/persistence/DBTransactionStorage.html" title="class in net.corda.node.services.persistence" target="classFrame">DBTransactionStorage</a></li>
<li><a href="net/corda/core/contracts/DealState.html" title="interface in net.corda.core.contracts" target="classFrame"><span class="interfaceName">DealState</span></a></li>
<li><a href="net/corda/core/serialization/DefaultKryoCustomizer.html" title="class in net.corda.core.serialization" target="classFrame">DefaultKryoCustomizer</a></li>
<li><a href="net/corda/node/serialization/DefaultWhitelist.html" title="class in net.corda.node.serialization" target="classFrame">DefaultWhitelist</a></li>
<li><a href="net/corda/core/serialization/DeserializeAsKotlinObjectDef.html" title="interface in net.corda.core.serialization" target="classFrame"><span class="interfaceName">DeserializeAsKotlinObjectDef</span></a></li>
<li><a href="net/corda/client/model/Diff.html" title="class in net.corda.client.model" target="classFrame">Diff</a></li>
<li><a href="net/corda/core/crypto/DigitalSignature.html" title="class in net.corda.core.crypto" target="classFrame">DigitalSignature</a></li>
@ -336,6 +341,7 @@
<li><a href="net/corda/core/serialization/Ed25519PrivateKeySerializer.html" title="class in net.corda.core.serialization" target="classFrame">Ed25519PrivateKeySerializer</a></li>
<li><a href="net/corda/core/serialization/Ed25519PublicKeySerializer.html" title="class in net.corda.core.serialization" target="classFrame">Ed25519PublicKeySerializer</a></li>
<li><a href="net/corda/core/utilities/Emoji.html" title="class in net.corda.core.utilities" target="classFrame">Emoji</a></li>
<li><a href="net/corda/core/serialization/EmptyWhitelist.html" title="class in net.corda.core.serialization" target="classFrame">EmptyWhitelist</a></li>
<li><a href="net/corda/core/crypto/EncodingUtilsKt.html" title="class in net.corda.core.crypto" target="classFrame">EncodingUtilsKt</a></li>
<li><a href="net/corda/core/ErrorOr.html" title="class in net.corda.core" target="classFrame">ErrorOr</a></li>
<li><a href="net/corda/core/ErrorOr.Companion.html" title="class in net.corda.core" target="classFrame">ErrorOr.Companion</a></li>
@ -409,6 +415,8 @@
<li><a href="net/corda/client/mock/GeneratorKt.html" title="class in net.corda.client.mock" target="classFrame">GeneratorKt</a></li>
<li><a href="net/corda/client/mock/GeneratorsKt.html" title="class in net.corda.client.mock" target="classFrame">GeneratorsKt</a></li>
<li><a href="net/corda/core/testing/GeneratorsKt.html" title="class in net.corda.core.testing" target="classFrame">GeneratorsKt</a></li>
<li><a href="net/corda/core/serialization/GlobalTransientClassWhiteList.html" title="class in net.corda.core.serialization" target="classFrame">GlobalTransientClassWhiteList</a></li>
<li><a href="net/corda/core/serialization/GlobalTransientClassWhiteList.Companion.html" title="class in net.corda.core.serialization" target="classFrame">GlobalTransientClassWhiteList.Companion</a></li>
<li><a href="net/corda/core/contracts/clauses/GroupClauseVerifier.html" title="class in net.corda.core.contracts.clauses" target="classFrame">GroupClauseVerifier</a></li>
<li><a href="net/corda/node/services/schema/HibernateObserver.html" title="class in net.corda.node.services.schema" target="classFrame">HibernateObserver</a></li>
<li><a href="net/corda/node/services/schema/HibernateObserver.Companion.html" title="class in net.corda.node.services.schema" target="classFrame">HibernateObserver.Companion</a></li>
@ -452,27 +460,6 @@
<li><a href="net/corda/node/utilities/JDBCHashMapKt.html" title="class in net.corda.node.utilities" target="classFrame">JDBCHashMapKt</a></li>
<li><a href="net/corda/node/utilities/JDBCHashSet.html" title="class in net.corda.node.utilities" target="classFrame">JDBCHashSet</a></li>
<li><a href="net/corda/node/utilities/JDBCHashSet.BlobSetTable.html" title="class in net.corda.node.utilities" target="classFrame">JDBCHashSet.BlobSetTable</a></li>
<li><a href="net/corda/node/utilities/JsonSupport.html" title="class in net.corda.node.utilities" target="classFrame">JsonSupport</a></li>
<li><a href="net/corda/node/utilities/JsonSupport.AnonymousPartyDeserializer.html" title="class in net.corda.node.utilities" target="classFrame">JsonSupport.AnonymousPartyDeserializer</a></li>
<li><a href="net/corda/node/utilities/JsonSupport.AnonymousPartySerializer.html" title="class in net.corda.node.utilities" target="classFrame">JsonSupport.AnonymousPartySerializer</a></li>
<li><a href="net/corda/node/utilities/JsonSupport.CalendarDeserializer.html" title="class in net.corda.node.utilities" target="classFrame">JsonSupport.CalendarDeserializer</a></li>
<li><a href="net/corda/node/utilities/JsonSupport.CompositeKeyDeserializer.html" title="class in net.corda.node.utilities" target="classFrame">JsonSupport.CompositeKeyDeserializer</a></li>
<li><a href="net/corda/node/utilities/JsonSupport.CompositeKeySerializer.html" title="class in net.corda.node.utilities" target="classFrame">JsonSupport.CompositeKeySerializer</a></li>
<li><a href="net/corda/node/utilities/JsonSupport.IdentityObjectMapper.html" title="class in net.corda.node.utilities" target="classFrame">JsonSupport.IdentityObjectMapper</a></li>
<li><a href="net/corda/node/utilities/JsonSupport.LocalDateDeserializer.html" title="class in net.corda.node.utilities" target="classFrame">JsonSupport.LocalDateDeserializer</a></li>
<li><a href="net/corda/node/utilities/JsonSupport.LocalDateKeyDeserializer.html" title="class in net.corda.node.utilities" target="classFrame">JsonSupport.LocalDateKeyDeserializer</a></li>
<li><a href="net/corda/node/utilities/JsonSupport.NodeInfoDeserializer.html" title="class in net.corda.node.utilities" target="classFrame">JsonSupport.NodeInfoDeserializer</a></li>
<li><a href="net/corda/node/utilities/JsonSupport.NodeInfoSerializer.html" title="class in net.corda.node.utilities" target="classFrame">JsonSupport.NodeInfoSerializer</a></li>
<li><a href="net/corda/node/utilities/JsonSupport.NoPartyObjectMapper.html" title="class in net.corda.node.utilities" target="classFrame">JsonSupport.NoPartyObjectMapper</a></li>
<li><a href="net/corda/node/utilities/JsonSupport.PartyDeserializer.html" title="class in net.corda.node.utilities" target="classFrame">JsonSupport.PartyDeserializer</a></li>
<li><a href="net/corda/node/utilities/JsonSupport.PartyObjectMapper.html" title="interface in net.corda.node.utilities" target="classFrame"><span class="interfaceName">JsonSupport.PartyObjectMapper</span></a></li>
<li><a href="net/corda/node/utilities/JsonSupport.PartySerializer.html" title="class in net.corda.node.utilities" target="classFrame">JsonSupport.PartySerializer</a></li>
<li><a href="net/corda/node/utilities/JsonSupport.PublicKeyDeserializer.html" title="class in net.corda.node.utilities" target="classFrame">JsonSupport.PublicKeyDeserializer</a></li>
<li><a href="net/corda/node/utilities/JsonSupport.PublicKeySerializer.html" title="class in net.corda.node.utilities" target="classFrame">JsonSupport.PublicKeySerializer</a></li>
<li><a href="net/corda/node/utilities/JsonSupport.RpcObjectMapper.html" title="class in net.corda.node.utilities" target="classFrame">JsonSupport.RpcObjectMapper</a></li>
<li><a href="net/corda/node/utilities/JsonSupport.SecureHashDeserializer.html" title="class in net.corda.node.utilities" target="classFrame">JsonSupport.SecureHashDeserializer</a></li>
<li><a href="net/corda/node/utilities/JsonSupport.SecureHashSerializer.html" title="class in net.corda.node.utilities" target="classFrame">JsonSupport.SecureHashSerializer</a></li>
<li><a href="net/corda/node/utilities/JsonSupport.ToStringSerializer.html" title="class in net.corda.node.utilities" target="classFrame">JsonSupport.ToStringSerializer</a></li>
<li><a href="net/corda/core/node/services/KeyManagementService.html" title="interface in net.corda.core.node.services" target="classFrame"><span class="interfaceName">KeyManagementService</span></a></li>
<li><a href="net/corda/core/node/services/KeyManagementService.DefaultImpls.html" title="class in net.corda.core.node.services" target="classFrame">KeyManagementService.DefaultImpls</a></li>
<li><a href="net/corda/node/services/database/KotlinConfigurationTransactionWrapper.html" title="class in net.corda.node.services.database" target="classFrame">KotlinConfigurationTransactionWrapper</a></li>
@ -480,6 +467,7 @@
<li><a href="net/corda/node/services/database/KotlinConfigurationTransactionWrapper.CordaDataSourceConnectionProvider.html" title="class in net.corda.node.services.database" target="classFrame">KotlinConfigurationTransactionWrapper.CordaDataSourceConnectionProvider</a></li>
<li><a href="net/corda/core/serialization/KotlinObjectSerializer.html" title="class in net.corda.core.serialization" target="classFrame">KotlinObjectSerializer</a></li>
<li><a href="net/corda/core/serialization/KryoKt.html" title="class in net.corda.core.serialization" target="classFrame">KryoKt</a></li>
<li><a href="net/corda/core/serialization/KryoSerializationCustomization.html" title="class in net.corda.core.serialization" target="classFrame">KryoSerializationCustomization</a></li>
<li><a href="net/corda/node/services/network/LastAcknowledgeInfo.html" title="class in net.corda.node.services.network" target="classFrame">LastAcknowledgeInfo</a></li>
<li><a href="net/corda/core/transactions/LedgerTransaction.html" title="class in net.corda.core.transactions" target="classFrame">LedgerTransaction</a></li>
<li><a href="net/corda/client/fxutils/LeftOuterJoinedMap.html" title="class in net.corda.client.fxutils" target="classFrame">LeftOuterJoinedMap</a></li>
@ -490,6 +478,8 @@
<li><a href="net/corda/node/utilities/LocalDateColumnType.html" title="class in net.corda.node.utilities" target="classFrame">LocalDateColumnType</a></li>
<li><a href="net/corda/node/utilities/LocalDateTimeColumnType.html" title="class in net.corda.node.utilities" target="classFrame">LocalDateTimeColumnType</a></li>
<li><a href="net/corda/core/utilities/LoggingKt.html" title="class in net.corda.core.utilities" target="classFrame">LoggingKt</a></li>
<li><a href="net/corda/core/serialization/LoggingWhitelist.html" title="class in net.corda.core.serialization" target="classFrame">LoggingWhitelist</a></li>
<li><a href="net/corda/core/serialization/LoggingWhitelist.Companion.html" title="class in net.corda.core.serialization" target="classFrame">LoggingWhitelist.Companion</a></li>
<li><a href="net/corda/core/utilities/LogHelper.html" title="class in net.corda.core.utilities" target="classFrame">LogHelper</a></li>
<li><a href="net/corda/core/node/services/MapChange.Added.html" title="class in net.corda.core.node.services" target="classFrame">MapChange.Added</a></li>
<li><a href="net/corda/core/node/services/MapChange.Modified.html" title="class in net.corda.core.node.services" target="classFrame">MapChange.Modified</a></li>
@ -521,6 +511,7 @@
<li><a href="net/corda/contracts/testing/MoveGenerator.html" title="class in net.corda.contracts.testing" target="classFrame">MoveGenerator</a></li>
<li><a href="net/corda/contracts/clause/MultilateralNetState.html" title="class in net.corda.contracts.clause" target="classFrame">MultilateralNetState</a></li>
<li><a href="net/corda/core/contracts/MultilateralNettableState.html" title="interface in net.corda.core.contracts" target="classFrame"><span class="interfaceName">MultilateralNettableState</span></a></li>
<li><a href="net/corda/core/serialization/MutableClassWhitelist.html" title="interface in net.corda.core.serialization" target="classFrame"><span class="interfaceName">MutableClassWhitelist</span></a></li>
<li><a href="net/corda/node/utilities/MutableClock.html" title="class in net.corda.node.utilities" target="classFrame">MutableClock</a></li>
<li><a href="net/corda/core/contracts/NamedByHash.html" title="interface in net.corda.core.contracts" target="classFrame"><span class="interfaceName">NamedByHash</span></a></li>
<li><a href="net/corda/contracts/clause/NetClause.html" title="class in net.corda.contracts.clause" target="classFrame">NetClause</a></li>
@ -603,7 +594,6 @@
<li><a href="net/corda/contracts/clause/NoZeroSizedOutputs.html" title="class in net.corda.contracts.clause" target="classFrame">NoZeroSizedOutputs</a></li>
<li><a href="net/corda/core/crypto/NullPublicKey.html" title="class in net.corda.core.crypto" target="classFrame">NullPublicKey</a></li>
<li><a href="net/corda/core/crypto/NullSignature.html" title="class in net.corda.core.crypto" target="classFrame">NullSignature</a></li>
<li><a href="net/corda/node/webserver/servlets/ObjectMapperConfig.html" title="class in net.corda.node.webserver.servlets" target="classFrame">ObjectMapperConfig</a></li>
<li><a href="net/corda/contracts/asset/Obligation.html" title="class in net.corda.contracts.asset" target="classFrame">Obligation</a></li>
<li><a href="net/corda/contracts/asset/Obligation.Clauses.html" title="interface in net.corda.contracts.asset" target="classFrame"><span class="interfaceName">Obligation.Clauses</span></a></li>
<li><a href="net/corda/contracts/asset/Obligation.Commands.html" title="interface in net.corda.contracts.asset" target="classFrame"><span class="interfaceName">Obligation.Commands</span></a></li>
@ -687,7 +677,6 @@
<li><a href="net/corda/flows/ResolveTransactionsFlow.html" title="class in net.corda.flows" target="classFrame">ResolveTransactionsFlow</a></li>
<li><a href="net/corda/flows/ResolveTransactionsFlow.Companion.html" title="class in net.corda.flows" target="classFrame">ResolveTransactionsFlow.Companion</a></li>
<li><a href="net/corda/flows/ResolveTransactionsFlow.ExcessivelyLargeTransactionGraph.html" title="class in net.corda.flows" target="classFrame">ResolveTransactionsFlow.ExcessivelyLargeTransactionGraph</a></li>
<li><a href="net/corda/node/webserver/servlets/ResponseFilter.html" title="class in net.corda.node.webserver.servlets" target="classFrame">ResponseFilter</a></li>
<li><a href="net/corda/core/RetryableException.html" title="class in net.corda.core" target="classFrame">RetryableException</a></li>
<li><a href="net/corda/node/services/messaging/RPCDispatcher.html" title="class in net.corda.node.services.messaging" target="classFrame">RPCDispatcher</a></li>
<li><a href="net/corda/node/services/messaging/RPCException.html" title="class in net.corda.node.services.messaging" target="classFrame">RPCException</a></li>
@ -719,6 +708,7 @@
<li><a href="net/corda/node/services/statemachine/SendAndReceive.html" title="class in net.corda.node.services.statemachine" target="classFrame">SendAndReceive</a></li>
<li><a href="net/corda/node/services/statemachine/SendOnly.html" title="class in net.corda.node.services.statemachine" target="classFrame">SendOnly</a></li>
<li><a href="net/corda/node/services/statemachine/SendRequest.html" title="interface in net.corda.node.services.statemachine" target="classFrame"><span class="interfaceName">SendRequest</span></a></li>
<li><a href="net/corda/core/serialization/SerializationCustomization.html" title="interface in net.corda.core.serialization" target="classFrame"><span class="interfaceName">SerializationCustomization</span></a></li>
<li><a href="net/corda/core/serialization/SerializationToken.html" title="interface in net.corda.core.serialization" target="classFrame"><span class="interfaceName">SerializationToken</span></a></li>
<li><a href="net/corda/core/serialization/SerializeAsToken.html" title="interface in net.corda.core.serialization" target="classFrame"><span class="interfaceName">SerializeAsToken</span></a></li>
<li><a href="net/corda/core/serialization/SerializeAsTokenContext.html" title="class in net.corda.core.serialization" target="classFrame">SerializeAsTokenContext</a></li>
@ -742,6 +732,7 @@
<li><a href="net/corda/core/node/services/ServiceInfoKt.html" title="class in net.corda.core.node.services" target="classFrame">ServiceInfoKt</a></li>
<li><a href="net/corda/flows/ServiceRequestMessage.html" title="interface in net.corda.flows" target="classFrame"><span class="interfaceName">ServiceRequestMessage</span></a></li>
<li><a href="net/corda/flows/ServiceRequestMessageKt.html" title="class in net.corda.flows" target="classFrame">ServiceRequestMessageKt</a></li>
<li><a href="net/corda/core/node/ServicesForResolution.html" title="interface in net.corda.core.node" target="classFrame"><span class="interfaceName">ServicesForResolution</span></a></li>
<li><a href="net/corda/core/node/services/ServicesKt.html" title="class in net.corda.core.node.services" target="classFrame">ServicesKt</a></li>
<li><a href="net/corda/core/node/services/ServiceType.html" title="class in net.corda.core.node.services" target="classFrame">ServiceType</a></li>
<li><a href="net/corda/core/node/services/ServiceType.Companion.html" title="class in net.corda.core.node.services" target="classFrame">ServiceType.Companion</a></li>
@ -790,10 +781,6 @@
<li><a href="net/corda/core/schemas/requery/converters/StateRefConverter.html" title="class in net.corda.core.schemas.requery.converters" target="classFrame">StateRefConverter</a></li>
<li><a href="net/corda/core/testing/StateRefGenerator.html" title="class in net.corda.core.testing" target="classFrame">StateRefGenerator</a></li>
<li><a href="net/corda/flows/StateReplacementException.html" title="class in net.corda.flows" target="classFrame">StateReplacementException</a></li>
<li><a href="net/corda/node/webserver/api/StatesQuery.html" title="interface in net.corda.node.webserver.api" target="classFrame"><span class="interfaceName">StatesQuery</span></a></li>
<li><a href="net/corda/node/webserver/api/StatesQuery.Companion.html" title="class in net.corda.node.webserver.api" target="classFrame">StatesQuery.Companion</a></li>
<li><a href="net/corda/node/webserver/api/StatesQuery.Criteria.html" title="interface in net.corda.node.webserver.api" target="classFrame"><span class="interfaceName">StatesQuery.Criteria</span></a></li>
<li><a href="net/corda/node/webserver/api/StatesQuery.Selection.html" title="class in net.corda.node.webserver.api" target="classFrame">StatesQuery.Selection</a></li>
<li><a href="net/corda/core/node/services/StorageService.html" title="interface in net.corda.core.node.services" target="classFrame"><span class="interfaceName">StorageService</span></a></li>
<li><a href="net/corda/node/services/persistence/StorageServiceImpl.html" title="class in net.corda.node.services.persistence" target="classFrame">StorageServiceImpl</a></li>
<li><a href="net/corda/node/utilities/StrandLocalTransactionManager.html" title="class in net.corda.node.utilities" target="classFrame">StrandLocalTransactionManager</a></li>
@ -900,7 +887,6 @@
<li><a href="net/corda/node/services/messaging/VerifyingNettyConnectorFactory.html" title="class in net.corda.node.services.messaging" target="classFrame">VerifyingNettyConnectorFactory</a></li>
<li><a href="net/corda/node/services/statemachine/WaitForLedgerCommit.html" title="class in net.corda.node.services.statemachine" target="classFrame">WaitForLedgerCommit</a></li>
<li><a href="net/corda/node/services/statemachine/WaitingRequest.html" title="interface in net.corda.node.services.statemachine" target="classFrame"><span class="interfaceName">WaitingRequest</span></a></li>
<li><a href="net/corda/node/webserver/WebServer.html" title="class in net.corda.node.webserver" target="classFrame">WebServer</a></li>
<li><a href="net/corda/contracts/testing/WiredTransactionGenerator.html" title="class in net.corda.contracts.testing" target="classFrame">WiredTransactionGenerator</a></li>
<li><a href="net/corda/node/services/network/WireNodeRegistration.html" title="class in net.corda.node.services.network" target="classFrame">WireNodeRegistration</a></li>
<li><a href="net/corda/core/transactions/WireTransaction.html" title="class in net.corda.core.transactions" target="classFrame">WireTransaction</a></li>

View File

@ -2,10 +2,10 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_121) on Wed Feb 22 10:57:29 GMT 2017 -->
<!-- Generated by javadoc (1.8.0_121) on Thu Mar 02 15:43:27 GMT 2017 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>All Classes</title>
<meta name="date" content="2017-02-22">
<meta name="date" content="2017-03-02">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
@ -44,6 +44,7 @@
<li><a href="net/corda/core/contracts/clauses/AllComposition.html" title="class in net.corda.core.contracts.clauses">AllComposition</a></li>
<li><a href="net/corda/core/contracts/clauses/AllOf.html" title="class in net.corda.core.contracts.clauses">AllOf</a></li>
<li><a href="net/corda/core/messaging/AllPossibleRecipients.html" title="interface in net.corda.core.messaging"><span class="interfaceName">AllPossibleRecipients</span></a></li>
<li><a href="net/corda/core/serialization/AllWhitelist.html" title="class in net.corda.core.serialization">AllWhitelist</a></li>
<li><a href="net/corda/core/contracts/Amount.html" title="class in net.corda.core.contracts">Amount</a></li>
<li><a href="net/corda/core/contracts/Amount.Companion.html" title="class in net.corda.core.contracts">Amount.Companion</a></li>
<li><a href="net/corda/client/fxutils/AmountBindings.html" title="class in net.corda.client.fxutils">AmountBindings</a></li>
@ -54,8 +55,6 @@
<li><a href="net/corda/node/utilities/ANSIProgressRenderer.html" title="class in net.corda.node.utilities">ANSIProgressRenderer</a></li>
<li><a href="net/corda/core/contracts/clauses/AnyComposition.html" title="class in net.corda.core.contracts.clauses">AnyComposition</a></li>
<li><a href="net/corda/core/contracts/clauses/AnyOf.html" title="class in net.corda.core.contracts.clauses">AnyOf</a></li>
<li><a href="net/corda/node/webserver/api/APIServer.html" title="interface in net.corda.node.webserver.api"><span class="interfaceName">APIServer</span></a></li>
<li><a href="net/corda/node/webserver/internal/APIServerImpl.html" title="class in net.corda.node.webserver.internal">APIServerImpl</a></li>
<li><a href="net/corda/core/utilities/ApiUtils.html" title="class in net.corda.core.utilities">ApiUtils</a></li>
<li><a href="net/corda/core/flows/AppContext.html" title="class in net.corda.core.flows">AppContext</a></li>
<li><a href="net/corda/node/ArgsParser.html" title="class in net.corda.node">ArgsParser</a></li>
@ -72,10 +71,10 @@
<li><a href="net/corda/client/fxutils/AssociatedList.html" title="class in net.corda.client.fxutils">AssociatedList</a></li>
<li><a href="net/corda/core/contracts/Attachment.html" title="interface in net.corda.core.contracts"><span class="interfaceName">Attachment</span></a></li>
<li><a href="net/corda/core/contracts/Attachment.DefaultImpls.html" title="class in net.corda.core.contracts">Attachment.DefaultImpls</a></li>
<li><a href="net/corda/node/webserver/servlets/AttachmentDownloadServlet.html" title="class in net.corda.node.webserver.servlets">AttachmentDownloadServlet</a></li>
<li><a href="net/corda/core/contracts/AttachmentResolutionException.html" title="class in net.corda.core.contracts">AttachmentResolutionException</a></li>
<li><a href="net/corda/core/node/AttachmentsClassLoader.html" title="class in net.corda.core.node">AttachmentsClassLoader</a></li>
<li><a href="net/corda/core/node/AttachmentsClassLoader.OverlappingAttachments.html" title="class in net.corda.core.node">AttachmentsClassLoader.OverlappingAttachments</a></li>
<li><a href="net/corda/core/node/services/AttachmentsStorageService.html" title="interface in net.corda.core.node.services"><span class="interfaceName">AttachmentsStorageService</span></a></li>
<li><a href="net/corda/core/node/services/AttachmentStorage.html" title="interface in net.corda.core.node.services"><span class="interfaceName">AttachmentStorage</span></a></li>
<li><a href="net/corda/core/contracts/AuthenticatedObject.html" title="class in net.corda.core.contracts">AuthenticatedObject</a></li>
<li><a href="net/corda/core/transactions/BaseTransaction.html" title="class in net.corda.core.transactions">BaseTransaction</a></li>
@ -89,6 +88,7 @@
<li><a href="net/corda/core/contracts/BilateralNettableState.html" title="interface in net.corda.core.contracts"><span class="interfaceName">BilateralNettableState</span></a></li>
<li><a href="net/corda/flows/BroadcastTransactionFlow.html" title="class in net.corda.flows">BroadcastTransactionFlow</a></li>
<li><a href="net/corda/flows/BroadcastTransactionFlow.NotifyTxRequest.html" title="class in net.corda.flows">BroadcastTransactionFlow.NotifyTxRequest</a></li>
<li><a href="net/corda/core/serialization/BuiltInExceptionsWhitelist.html" title="class in net.corda.core.serialization">BuiltInExceptionsWhitelist</a></li>
<li><a href="net/corda/core/contracts/BusinessCalendar.html" title="class in net.corda.core.contracts">BusinessCalendar</a></li>
<li><a href="net/corda/core/contracts/BusinessCalendar.Companion.html" title="class in net.corda.core.contracts">BusinessCalendar.Companion</a></li>
<li><a href="net/corda/core/contracts/BusinessCalendar.UnknownCalendar.html" title="class in net.corda.core.contracts">BusinessCalendar.UnknownCalendar</a></li>
@ -126,6 +126,7 @@
<li><a href="net/corda/client/fxutils/ChosenList.html" title="class in net.corda.client.fxutils">ChosenList</a></li>
<li><a href="net/corda/core/node/CityDatabase.html" title="class in net.corda.core.node">CityDatabase</a></li>
<li><a href="net/corda/node/services/messaging/ClassSerializer.html" title="class in net.corda.node.services.messaging">ClassSerializer</a></li>
<li><a href="net/corda/core/serialization/ClassWhitelist.html" title="interface in net.corda.core.serialization"><span class="interfaceName">ClassWhitelist</span></a></li>
<li><a href="net/corda/core/contracts/clauses/Clause.html" title="class in net.corda.core.contracts.clauses">Clause</a></li>
<li><a href="net/corda/core/contracts/clauses/Clause.Companion.html" title="class in net.corda.core.contracts.clauses">Clause.Companion</a></li>
<li><a href="net/corda/core/contracts/clauses/ClauseKt.html" title="class in net.corda.core.contracts.clauses">ClauseKt</a></li>
@ -265,6 +266,10 @@
<li><a href="net/corda/flows/ContractUpgradeFlow.Acceptor.html" title="class in net.corda.flows">ContractUpgradeFlow.Acceptor</a></li>
<li><a href="net/corda/flows/ContractUpgradeFlow.Instigator.html" title="class in net.corda.flows">ContractUpgradeFlow.Instigator</a></li>
<li><a href="net/corda/node/Corda.html" title="class in net.corda.node">Corda</a></li>
<li><a href="net/corda/core/serialization/CordaClassResolver.html" title="class in net.corda.core.serialization">CordaClassResolver</a></li>
<li><a href="net/corda/core/serialization/CordaClassResolver.Companion.html" title="class in net.corda.core.serialization">CordaClassResolver.Companion</a></li>
<li><a href="net/corda/core/serialization/CordaClassResolverKt.html" title="class in net.corda.core.serialization">CordaClassResolverKt</a></li>
<li><a href="net/corda/core/serialization/CordaKryo.html" title="class in net.corda.core.serialization">CordaKryo</a></li>
<li><a href="net/corda/core/node/CordaPluginRegistry.html" title="class in net.corda.core.node">CordaPluginRegistry</a></li>
<li><a href="net/corda/node/services/messaging/CordaRPCClient.html" title="class in net.corda.node.services.messaging">CordaRPCClient</a></li>
<li><a href="net/corda/node/services/messaging/CordaRPCClientImpl.html" title="class in net.corda.node.services.messaging">CordaRPCClientImpl</a></li>
@ -273,15 +278,13 @@
<li><a href="net/corda/node/internal/CordaRPCOpsImpl.html" title="class in net.corda.node.internal">CordaRPCOpsImpl</a></li>
<li><a href="net/corda/node/internal/CordaRPCOpsImpl.Companion.html" title="class in net.corda.node.internal">CordaRPCOpsImpl.Companion</a></li>
<li><a href="net/corda/core/messaging/CordaRPCOpsKt.html" title="class in net.corda.core.messaging">CordaRPCOpsKt</a></li>
<li><a href="net/corda/node/webserver/api/Criteria.AllDeals.html" title="class in net.corda.node.webserver.api">Criteria.AllDeals</a></li>
<li><a href="net/corda/node/webserver/api/Criteria.Deal.html" title="class in net.corda.node.webserver.api">Criteria.Deal</a></li>
<li><a href="net/corda/core/serialization/CordaSerializable.html" title="interface in net.corda.core.serialization"><span class="interfaceName">CordaSerializable</span></a></li>
<li><a href="net/corda/core/crypto/CryptoUtilities.html" title="class in net.corda.core.crypto">CryptoUtilities</a></li>
<li><a href="net/corda/core/math/CubicSplineInterpolator.html" title="class in net.corda.core.math">CubicSplineInterpolator</a></li>
<li><a href="net/corda/core/math/CubicSplineInterpolator.Factory.html" title="class in net.corda.core.math">CubicSplineInterpolator.Factory</a></li>
<li><a href="net/corda/core/testing/CurrencyGenerator.html" title="class in net.corda.core.testing">CurrencyGenerator</a></li>
<li><a href="net/corda/core/testing/CurrencyGenerator.Companion.html" title="class in net.corda.core.testing">CurrencyGenerator.Companion</a></li>
<li><a href="net/corda/node/utilities/DatabaseSupportKt.html" title="class in net.corda.node.utilities">DatabaseSupportKt</a></li>
<li><a href="net/corda/node/webserver/servlets/DataUploadServlet.html" title="class in net.corda.node.webserver.servlets">DataUploadServlet</a></li>
<li><a href="net/corda/node/services/persistence/DataVending.html" title="class in net.corda.node.services.persistence">DataVending</a></li>
<li><a href="net/corda/node/services/persistence/DataVending.Plugin.html" title="class in net.corda.node.services.persistence">DataVending.Plugin</a></li>
<li><a href="net/corda/node/services/persistence/DataVending.Service.html" title="class in net.corda.node.services.persistence">DataVending.Service</a></li>
@ -298,6 +301,8 @@
<li><a href="net/corda/node/services/persistence/DBTransactionMappingStorage.html" title="class in net.corda.node.services.persistence">DBTransactionMappingStorage</a></li>
<li><a href="net/corda/node/services/persistence/DBTransactionStorage.html" title="class in net.corda.node.services.persistence">DBTransactionStorage</a></li>
<li><a href="net/corda/core/contracts/DealState.html" title="interface in net.corda.core.contracts"><span class="interfaceName">DealState</span></a></li>
<li><a href="net/corda/core/serialization/DefaultKryoCustomizer.html" title="class in net.corda.core.serialization">DefaultKryoCustomizer</a></li>
<li><a href="net/corda/node/serialization/DefaultWhitelist.html" title="class in net.corda.node.serialization">DefaultWhitelist</a></li>
<li><a href="net/corda/core/serialization/DeserializeAsKotlinObjectDef.html" title="interface in net.corda.core.serialization"><span class="interfaceName">DeserializeAsKotlinObjectDef</span></a></li>
<li><a href="net/corda/client/model/Diff.html" title="class in net.corda.client.model">Diff</a></li>
<li><a href="net/corda/core/crypto/DigitalSignature.html" title="class in net.corda.core.crypto">DigitalSignature</a></li>
@ -336,6 +341,7 @@
<li><a href="net/corda/core/serialization/Ed25519PrivateKeySerializer.html" title="class in net.corda.core.serialization">Ed25519PrivateKeySerializer</a></li>
<li><a href="net/corda/core/serialization/Ed25519PublicKeySerializer.html" title="class in net.corda.core.serialization">Ed25519PublicKeySerializer</a></li>
<li><a href="net/corda/core/utilities/Emoji.html" title="class in net.corda.core.utilities">Emoji</a></li>
<li><a href="net/corda/core/serialization/EmptyWhitelist.html" title="class in net.corda.core.serialization">EmptyWhitelist</a></li>
<li><a href="net/corda/core/crypto/EncodingUtilsKt.html" title="class in net.corda.core.crypto">EncodingUtilsKt</a></li>
<li><a href="net/corda/core/ErrorOr.html" title="class in net.corda.core">ErrorOr</a></li>
<li><a href="net/corda/core/ErrorOr.Companion.html" title="class in net.corda.core">ErrorOr.Companion</a></li>
@ -409,6 +415,8 @@
<li><a href="net/corda/client/mock/GeneratorKt.html" title="class in net.corda.client.mock">GeneratorKt</a></li>
<li><a href="net/corda/client/mock/GeneratorsKt.html" title="class in net.corda.client.mock">GeneratorsKt</a></li>
<li><a href="net/corda/core/testing/GeneratorsKt.html" title="class in net.corda.core.testing">GeneratorsKt</a></li>
<li><a href="net/corda/core/serialization/GlobalTransientClassWhiteList.html" title="class in net.corda.core.serialization">GlobalTransientClassWhiteList</a></li>
<li><a href="net/corda/core/serialization/GlobalTransientClassWhiteList.Companion.html" title="class in net.corda.core.serialization">GlobalTransientClassWhiteList.Companion</a></li>
<li><a href="net/corda/core/contracts/clauses/GroupClauseVerifier.html" title="class in net.corda.core.contracts.clauses">GroupClauseVerifier</a></li>
<li><a href="net/corda/node/services/schema/HibernateObserver.html" title="class in net.corda.node.services.schema">HibernateObserver</a></li>
<li><a href="net/corda/node/services/schema/HibernateObserver.Companion.html" title="class in net.corda.node.services.schema">HibernateObserver.Companion</a></li>
@ -452,27 +460,6 @@
<li><a href="net/corda/node/utilities/JDBCHashMapKt.html" title="class in net.corda.node.utilities">JDBCHashMapKt</a></li>
<li><a href="net/corda/node/utilities/JDBCHashSet.html" title="class in net.corda.node.utilities">JDBCHashSet</a></li>
<li><a href="net/corda/node/utilities/JDBCHashSet.BlobSetTable.html" title="class in net.corda.node.utilities">JDBCHashSet.BlobSetTable</a></li>
<li><a href="net/corda/node/utilities/JsonSupport.html" title="class in net.corda.node.utilities">JsonSupport</a></li>
<li><a href="net/corda/node/utilities/JsonSupport.AnonymousPartyDeserializer.html" title="class in net.corda.node.utilities">JsonSupport.AnonymousPartyDeserializer</a></li>
<li><a href="net/corda/node/utilities/JsonSupport.AnonymousPartySerializer.html" title="class in net.corda.node.utilities">JsonSupport.AnonymousPartySerializer</a></li>
<li><a href="net/corda/node/utilities/JsonSupport.CalendarDeserializer.html" title="class in net.corda.node.utilities">JsonSupport.CalendarDeserializer</a></li>
<li><a href="net/corda/node/utilities/JsonSupport.CompositeKeyDeserializer.html" title="class in net.corda.node.utilities">JsonSupport.CompositeKeyDeserializer</a></li>
<li><a href="net/corda/node/utilities/JsonSupport.CompositeKeySerializer.html" title="class in net.corda.node.utilities">JsonSupport.CompositeKeySerializer</a></li>
<li><a href="net/corda/node/utilities/JsonSupport.IdentityObjectMapper.html" title="class in net.corda.node.utilities">JsonSupport.IdentityObjectMapper</a></li>
<li><a href="net/corda/node/utilities/JsonSupport.LocalDateDeserializer.html" title="class in net.corda.node.utilities">JsonSupport.LocalDateDeserializer</a></li>
<li><a href="net/corda/node/utilities/JsonSupport.LocalDateKeyDeserializer.html" title="class in net.corda.node.utilities">JsonSupport.LocalDateKeyDeserializer</a></li>
<li><a href="net/corda/node/utilities/JsonSupport.NodeInfoDeserializer.html" title="class in net.corda.node.utilities">JsonSupport.NodeInfoDeserializer</a></li>
<li><a href="net/corda/node/utilities/JsonSupport.NodeInfoSerializer.html" title="class in net.corda.node.utilities">JsonSupport.NodeInfoSerializer</a></li>
<li><a href="net/corda/node/utilities/JsonSupport.NoPartyObjectMapper.html" title="class in net.corda.node.utilities">JsonSupport.NoPartyObjectMapper</a></li>
<li><a href="net/corda/node/utilities/JsonSupport.PartyDeserializer.html" title="class in net.corda.node.utilities">JsonSupport.PartyDeserializer</a></li>
<li><a href="net/corda/node/utilities/JsonSupport.PartyObjectMapper.html" title="interface in net.corda.node.utilities"><span class="interfaceName">JsonSupport.PartyObjectMapper</span></a></li>
<li><a href="net/corda/node/utilities/JsonSupport.PartySerializer.html" title="class in net.corda.node.utilities">JsonSupport.PartySerializer</a></li>
<li><a href="net/corda/node/utilities/JsonSupport.PublicKeyDeserializer.html" title="class in net.corda.node.utilities">JsonSupport.PublicKeyDeserializer</a></li>
<li><a href="net/corda/node/utilities/JsonSupport.PublicKeySerializer.html" title="class in net.corda.node.utilities">JsonSupport.PublicKeySerializer</a></li>
<li><a href="net/corda/node/utilities/JsonSupport.RpcObjectMapper.html" title="class in net.corda.node.utilities">JsonSupport.RpcObjectMapper</a></li>
<li><a href="net/corda/node/utilities/JsonSupport.SecureHashDeserializer.html" title="class in net.corda.node.utilities">JsonSupport.SecureHashDeserializer</a></li>
<li><a href="net/corda/node/utilities/JsonSupport.SecureHashSerializer.html" title="class in net.corda.node.utilities">JsonSupport.SecureHashSerializer</a></li>
<li><a href="net/corda/node/utilities/JsonSupport.ToStringSerializer.html" title="class in net.corda.node.utilities">JsonSupport.ToStringSerializer</a></li>
<li><a href="net/corda/core/node/services/KeyManagementService.html" title="interface in net.corda.core.node.services"><span class="interfaceName">KeyManagementService</span></a></li>
<li><a href="net/corda/core/node/services/KeyManagementService.DefaultImpls.html" title="class in net.corda.core.node.services">KeyManagementService.DefaultImpls</a></li>
<li><a href="net/corda/node/services/database/KotlinConfigurationTransactionWrapper.html" title="class in net.corda.node.services.database">KotlinConfigurationTransactionWrapper</a></li>
@ -480,6 +467,7 @@
<li><a href="net/corda/node/services/database/KotlinConfigurationTransactionWrapper.CordaDataSourceConnectionProvider.html" title="class in net.corda.node.services.database">KotlinConfigurationTransactionWrapper.CordaDataSourceConnectionProvider</a></li>
<li><a href="net/corda/core/serialization/KotlinObjectSerializer.html" title="class in net.corda.core.serialization">KotlinObjectSerializer</a></li>
<li><a href="net/corda/core/serialization/KryoKt.html" title="class in net.corda.core.serialization">KryoKt</a></li>
<li><a href="net/corda/core/serialization/KryoSerializationCustomization.html" title="class in net.corda.core.serialization">KryoSerializationCustomization</a></li>
<li><a href="net/corda/node/services/network/LastAcknowledgeInfo.html" title="class in net.corda.node.services.network">LastAcknowledgeInfo</a></li>
<li><a href="net/corda/core/transactions/LedgerTransaction.html" title="class in net.corda.core.transactions">LedgerTransaction</a></li>
<li><a href="net/corda/client/fxutils/LeftOuterJoinedMap.html" title="class in net.corda.client.fxutils">LeftOuterJoinedMap</a></li>
@ -490,6 +478,8 @@
<li><a href="net/corda/node/utilities/LocalDateColumnType.html" title="class in net.corda.node.utilities">LocalDateColumnType</a></li>
<li><a href="net/corda/node/utilities/LocalDateTimeColumnType.html" title="class in net.corda.node.utilities">LocalDateTimeColumnType</a></li>
<li><a href="net/corda/core/utilities/LoggingKt.html" title="class in net.corda.core.utilities">LoggingKt</a></li>
<li><a href="net/corda/core/serialization/LoggingWhitelist.html" title="class in net.corda.core.serialization">LoggingWhitelist</a></li>
<li><a href="net/corda/core/serialization/LoggingWhitelist.Companion.html" title="class in net.corda.core.serialization">LoggingWhitelist.Companion</a></li>
<li><a href="net/corda/core/utilities/LogHelper.html" title="class in net.corda.core.utilities">LogHelper</a></li>
<li><a href="net/corda/core/node/services/MapChange.Added.html" title="class in net.corda.core.node.services">MapChange.Added</a></li>
<li><a href="net/corda/core/node/services/MapChange.Modified.html" title="class in net.corda.core.node.services">MapChange.Modified</a></li>
@ -521,6 +511,7 @@
<li><a href="net/corda/contracts/testing/MoveGenerator.html" title="class in net.corda.contracts.testing">MoveGenerator</a></li>
<li><a href="net/corda/contracts/clause/MultilateralNetState.html" title="class in net.corda.contracts.clause">MultilateralNetState</a></li>
<li><a href="net/corda/core/contracts/MultilateralNettableState.html" title="interface in net.corda.core.contracts"><span class="interfaceName">MultilateralNettableState</span></a></li>
<li><a href="net/corda/core/serialization/MutableClassWhitelist.html" title="interface in net.corda.core.serialization"><span class="interfaceName">MutableClassWhitelist</span></a></li>
<li><a href="net/corda/node/utilities/MutableClock.html" title="class in net.corda.node.utilities">MutableClock</a></li>
<li><a href="net/corda/core/contracts/NamedByHash.html" title="interface in net.corda.core.contracts"><span class="interfaceName">NamedByHash</span></a></li>
<li><a href="net/corda/contracts/clause/NetClause.html" title="class in net.corda.contracts.clause">NetClause</a></li>
@ -603,7 +594,6 @@
<li><a href="net/corda/contracts/clause/NoZeroSizedOutputs.html" title="class in net.corda.contracts.clause">NoZeroSizedOutputs</a></li>
<li><a href="net/corda/core/crypto/NullPublicKey.html" title="class in net.corda.core.crypto">NullPublicKey</a></li>
<li><a href="net/corda/core/crypto/NullSignature.html" title="class in net.corda.core.crypto">NullSignature</a></li>
<li><a href="net/corda/node/webserver/servlets/ObjectMapperConfig.html" title="class in net.corda.node.webserver.servlets">ObjectMapperConfig</a></li>
<li><a href="net/corda/contracts/asset/Obligation.html" title="class in net.corda.contracts.asset">Obligation</a></li>
<li><a href="net/corda/contracts/asset/Obligation.Clauses.html" title="interface in net.corda.contracts.asset"><span class="interfaceName">Obligation.Clauses</span></a></li>
<li><a href="net/corda/contracts/asset/Obligation.Commands.html" title="interface in net.corda.contracts.asset"><span class="interfaceName">Obligation.Commands</span></a></li>
@ -687,7 +677,6 @@
<li><a href="net/corda/flows/ResolveTransactionsFlow.html" title="class in net.corda.flows">ResolveTransactionsFlow</a></li>
<li><a href="net/corda/flows/ResolveTransactionsFlow.Companion.html" title="class in net.corda.flows">ResolveTransactionsFlow.Companion</a></li>
<li><a href="net/corda/flows/ResolveTransactionsFlow.ExcessivelyLargeTransactionGraph.html" title="class in net.corda.flows">ResolveTransactionsFlow.ExcessivelyLargeTransactionGraph</a></li>
<li><a href="net/corda/node/webserver/servlets/ResponseFilter.html" title="class in net.corda.node.webserver.servlets">ResponseFilter</a></li>
<li><a href="net/corda/core/RetryableException.html" title="class in net.corda.core">RetryableException</a></li>
<li><a href="net/corda/node/services/messaging/RPCDispatcher.html" title="class in net.corda.node.services.messaging">RPCDispatcher</a></li>
<li><a href="net/corda/node/services/messaging/RPCException.html" title="class in net.corda.node.services.messaging">RPCException</a></li>
@ -719,6 +708,7 @@
<li><a href="net/corda/node/services/statemachine/SendAndReceive.html" title="class in net.corda.node.services.statemachine">SendAndReceive</a></li>
<li><a href="net/corda/node/services/statemachine/SendOnly.html" title="class in net.corda.node.services.statemachine">SendOnly</a></li>
<li><a href="net/corda/node/services/statemachine/SendRequest.html" title="interface in net.corda.node.services.statemachine"><span class="interfaceName">SendRequest</span></a></li>
<li><a href="net/corda/core/serialization/SerializationCustomization.html" title="interface in net.corda.core.serialization"><span class="interfaceName">SerializationCustomization</span></a></li>
<li><a href="net/corda/core/serialization/SerializationToken.html" title="interface in net.corda.core.serialization"><span class="interfaceName">SerializationToken</span></a></li>
<li><a href="net/corda/core/serialization/SerializeAsToken.html" title="interface in net.corda.core.serialization"><span class="interfaceName">SerializeAsToken</span></a></li>
<li><a href="net/corda/core/serialization/SerializeAsTokenContext.html" title="class in net.corda.core.serialization">SerializeAsTokenContext</a></li>
@ -742,6 +732,7 @@
<li><a href="net/corda/core/node/services/ServiceInfoKt.html" title="class in net.corda.core.node.services">ServiceInfoKt</a></li>
<li><a href="net/corda/flows/ServiceRequestMessage.html" title="interface in net.corda.flows"><span class="interfaceName">ServiceRequestMessage</span></a></li>
<li><a href="net/corda/flows/ServiceRequestMessageKt.html" title="class in net.corda.flows">ServiceRequestMessageKt</a></li>
<li><a href="net/corda/core/node/ServicesForResolution.html" title="interface in net.corda.core.node"><span class="interfaceName">ServicesForResolution</span></a></li>
<li><a href="net/corda/core/node/services/ServicesKt.html" title="class in net.corda.core.node.services">ServicesKt</a></li>
<li><a href="net/corda/core/node/services/ServiceType.html" title="class in net.corda.core.node.services">ServiceType</a></li>
<li><a href="net/corda/core/node/services/ServiceType.Companion.html" title="class in net.corda.core.node.services">ServiceType.Companion</a></li>
@ -790,10 +781,6 @@
<li><a href="net/corda/core/schemas/requery/converters/StateRefConverter.html" title="class in net.corda.core.schemas.requery.converters">StateRefConverter</a></li>
<li><a href="net/corda/core/testing/StateRefGenerator.html" title="class in net.corda.core.testing">StateRefGenerator</a></li>
<li><a href="net/corda/flows/StateReplacementException.html" title="class in net.corda.flows">StateReplacementException</a></li>
<li><a href="net/corda/node/webserver/api/StatesQuery.html" title="interface in net.corda.node.webserver.api"><span class="interfaceName">StatesQuery</span></a></li>
<li><a href="net/corda/node/webserver/api/StatesQuery.Companion.html" title="class in net.corda.node.webserver.api">StatesQuery.Companion</a></li>
<li><a href="net/corda/node/webserver/api/StatesQuery.Criteria.html" title="interface in net.corda.node.webserver.api"><span class="interfaceName">StatesQuery.Criteria</span></a></li>
<li><a href="net/corda/node/webserver/api/StatesQuery.Selection.html" title="class in net.corda.node.webserver.api">StatesQuery.Selection</a></li>
<li><a href="net/corda/core/node/services/StorageService.html" title="interface in net.corda.core.node.services"><span class="interfaceName">StorageService</span></a></li>
<li><a href="net/corda/node/services/persistence/StorageServiceImpl.html" title="class in net.corda.node.services.persistence">StorageServiceImpl</a></li>
<li><a href="net/corda/node/utilities/StrandLocalTransactionManager.html" title="class in net.corda.node.utilities">StrandLocalTransactionManager</a></li>
@ -900,7 +887,6 @@
<li><a href="net/corda/node/services/messaging/VerifyingNettyConnectorFactory.html" title="class in net.corda.node.services.messaging">VerifyingNettyConnectorFactory</a></li>
<li><a href="net/corda/node/services/statemachine/WaitForLedgerCommit.html" title="class in net.corda.node.services.statemachine">WaitForLedgerCommit</a></li>
<li><a href="net/corda/node/services/statemachine/WaitingRequest.html" title="interface in net.corda.node.services.statemachine"><span class="interfaceName">WaitingRequest</span></a></li>
<li><a href="net/corda/node/webserver/WebServer.html" title="class in net.corda.node.webserver">WebServer</a></li>
<li><a href="net/corda/contracts/testing/WiredTransactionGenerator.html" title="class in net.corda.contracts.testing">WiredTransactionGenerator</a></li>
<li><a href="net/corda/node/services/network/WireNodeRegistration.html" title="class in net.corda.node.services.network">WireNodeRegistration</a></li>
<li><a href="net/corda/core/transactions/WireTransaction.html" title="class in net.corda.core.transactions">WireTransaction</a></li>

View File

@ -2,10 +2,10 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_121) on Wed Feb 22 10:57:14 GMT 2017 -->
<!-- Generated by javadoc (1.8.0_121) on Thu Mar 02 15:43:19 GMT 2017 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Constant Field Values</title>
<meta name="date" content="2017-02-22">
<meta name="date" content="2017-03-02">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>

View File

@ -2,10 +2,10 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_121) on Wed Feb 22 10:57:28 GMT 2017 -->
<!-- Generated by javadoc (1.8.0_121) on Thu Mar 02 15:43:27 GMT 2017 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Deprecated List</title>
<meta name="date" content="2017-02-22">
<meta name="date" content="2017-03-02">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>

View File

@ -2,10 +2,10 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_121) on Wed Feb 22 10:57:29 GMT 2017 -->
<!-- Generated by javadoc (1.8.0_121) on Thu Mar 02 15:43:27 GMT 2017 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>API Help</title>
<meta name="date" content="2017-02-22">
<meta name="date" content="2017-03-02">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>

File diff suppressed because it is too large Load Diff

View File

@ -2,7 +2,7 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_121) on Wed Feb 22 10:57:29 GMT 2017 -->
<!-- Generated by javadoc (1.8.0_121) on Thu Mar 02 15:43:27 GMT 2017 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Generated Documentation (Untitled)</title>
<script type="text/javascript">

View File

@ -2,10 +2,10 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_121) on Wed Feb 22 10:56:40 GMT 2017 -->
<!-- Generated by javadoc (1.8.0_121) on Thu Mar 02 15:43:08 GMT 2017 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>AggregatedList</title>
<meta name="date" content="2017-02-22">
<meta name="date" content="2017-03-02">
<meta name="keywords" content="net.corda.client.fxutils.AggregatedList class">
<meta name="keywords" content="get()">
<meta name="keywords" content="getSourceIndex()">

View File

@ -2,10 +2,10 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_121) on Wed Feb 22 10:56:40 GMT 2017 -->
<!-- Generated by javadoc (1.8.0_121) on Thu Mar 02 15:43:08 GMT 2017 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>AmountBindings</title>
<meta name="date" content="2017-02-22">
<meta name="date" content="2017-03-02">
<meta name="keywords" content="net.corda.client.fxutils.AmountBindings class">
<meta name="keywords" content="INSTANCE">
<meta name="keywords" content="sum()">

View File

@ -2,10 +2,10 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_121) on Wed Feb 22 10:56:40 GMT 2017 -->
<!-- Generated by javadoc (1.8.0_121) on Thu Mar 02 15:43:08 GMT 2017 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>AssociatedList</title>
<meta name="date" content="2017-02-22">
<meta name="date" content="2017-03-02">
<meta name="keywords" content="net.corda.client.fxutils.AssociatedList class">
<meta name="keywords" content="getSourceList()">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">

View File

@ -2,10 +2,10 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_121) on Wed Feb 22 10:56:40 GMT 2017 -->
<!-- Generated by javadoc (1.8.0_121) on Thu Mar 02 15:43:08 GMT 2017 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>ChosenList</title>
<meta name="date" content="2017-02-22">
<meta name="date" content="2017-03-02">
<meta name="keywords" content="net.corda.client.fxutils.ChosenList class">
<meta name="keywords" content="get()">
<meta name="keywords" content="getSize()">

View File

@ -2,10 +2,10 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_121) on Wed Feb 22 10:56:40 GMT 2017 -->
<!-- Generated by javadoc (1.8.0_121) on Thu Mar 02 15:43:08 GMT 2017 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>ConcatenatedList</title>
<meta name="date" content="2017-02-22">
<meta name="date" content="2017-03-02">
<meta name="keywords" content="net.corda.client.fxutils.ConcatenatedList class">
<meta name="keywords" content="sourceChanged()">
<meta name="keywords" content="getSize()">

View File

@ -2,10 +2,10 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_121) on Wed Feb 22 10:56:41 GMT 2017 -->
<!-- Generated by javadoc (1.8.0_121) on Thu Mar 02 15:43:08 GMT 2017 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>FlattenedList.WrappedObservableValue</title>
<meta name="date" content="2017-02-22">
<meta name="date" content="2017-03-02">
<meta name="keywords" content="net.corda.client.fxutils.FlattenedList.WrappedObservableValue class">
<meta name="keywords" content="getObservableValue()">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">

View File

@ -2,10 +2,10 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_121) on Wed Feb 22 10:56:40 GMT 2017 -->
<!-- Generated by javadoc (1.8.0_121) on Thu Mar 02 15:43:08 GMT 2017 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>FlattenedList</title>
<meta name="date" content="2017-02-22">
<meta name="date" content="2017-03-02">
<meta name="keywords" content="net.corda.client.fxutils.FlattenedList class">
<meta name="keywords" content="getIndexMap()">
<meta name="keywords" content="sourceChanged()">

View File

@ -2,10 +2,10 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_121) on Wed Feb 22 10:56:40 GMT 2017 -->
<!-- Generated by javadoc (1.8.0_121) on Thu Mar 02 15:43:08 GMT 2017 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>LeftOuterJoinedMap</title>
<meta name="date" content="2017-02-22">
<meta name="date" content="2017-03-02">
<meta name="keywords" content="net.corda.client.fxutils.LeftOuterJoinedMap class">
<meta name="keywords" content="getLeftTable()">
<meta name="keywords" content="getRightTable()">

View File

@ -2,10 +2,10 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_121) on Wed Feb 22 10:56:40 GMT 2017 -->
<!-- Generated by javadoc (1.8.0_121) on Thu Mar 02 15:43:08 GMT 2017 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>MapValuesList.Companion</title>
<meta name="date" content="2017-02-22">
<meta name="date" content="2017-03-02">
<meta name="keywords" content="net.corda.client.fxutils.MapValuesList.Companion class">
<meta name="keywords" content="create()">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">

View File

@ -2,10 +2,10 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_121) on Wed Feb 22 10:56:41 GMT 2017 -->
<!-- Generated by javadoc (1.8.0_121) on Thu Mar 02 15:43:08 GMT 2017 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>MapValuesList</title>
<meta name="date" content="2017-02-22">
<meta name="date" content="2017-03-02">
<meta name="keywords" content="net.corda.client.fxutils.MapValuesList class">
<meta name="keywords" content="Companion">
<meta name="keywords" content="getSourceMap()">

View File

@ -2,10 +2,10 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_121) on Wed Feb 22 10:56:41 GMT 2017 -->
<!-- Generated by javadoc (1.8.0_121) on Thu Mar 02 15:43:08 GMT 2017 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>MappedList</title>
<meta name="date" content="2017-02-22">
<meta name="date" content="2017-03-02">
<meta name="keywords" content="net.corda.client.fxutils.MappedList class">
<meta name="keywords" content="sourceChanged()">
<meta name="keywords" content="get()">

View File

@ -2,10 +2,10 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_121) on Wed Feb 22 10:56:41 GMT 2017 -->
<!-- Generated by javadoc (1.8.0_121) on Thu Mar 02 15:43:08 GMT 2017 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>ObservableFoldKt</title>
<meta name="date" content="2017-02-22">
<meta name="date" content="2017-03-02">
<meta name="keywords" content="net.corda.client.fxutils.ObservableFoldKt class">
<meta name="keywords" content="foldToObservableValue()">
<meta name="keywords" content="fold()">

View File

@ -2,10 +2,10 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_121) on Wed Feb 22 10:56:41 GMT 2017 -->
<!-- Generated by javadoc (1.8.0_121) on Thu Mar 02 15:43:08 GMT 2017 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>ObservableUtilitiesKt</title>
<meta name="date" content="2017-02-22">
<meta name="date" content="2017-03-02">
<meta name="keywords" content="net.corda.client.fxutils.ObservableUtilitiesKt class">
<meta name="keywords" content="map()">
<meta name="keywords" content="lift()">

View File

@ -2,10 +2,10 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_121) on Wed Feb 22 10:56:41 GMT 2017 -->
<!-- Generated by javadoc (1.8.0_121) on Thu Mar 02 15:43:08 GMT 2017 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>ReadOnlyBackedObservableMapBase</title>
<meta name="date" content="2017-02-22">
<meta name="date" content="2017-03-02">
<meta name="keywords" content="net.corda.client.fxutils.ReadOnlyBackedObservableMapBase class">
<meta name="keywords" content="getBackingMap()">
<meta name="keywords" content="fireChange()">

View File

@ -2,10 +2,10 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_121) on Wed Feb 22 10:56:41 GMT 2017 -->
<!-- Generated by javadoc (1.8.0_121) on Thu Mar 02 15:43:08 GMT 2017 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>ReadOnlyBackedObservableMapBaseKt</title>
<meta name="date" content="2017-02-22">
<meta name="date" content="2017-03-02">
<meta name="keywords" content="net.corda.client.fxutils.ReadOnlyBackedObservableMapBaseKt class">
<meta name="keywords" content="createMapChange()">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">

View File

@ -2,10 +2,10 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_121) on Wed Feb 22 10:56:41 GMT 2017 -->
<!-- Generated by javadoc (1.8.0_121) on Thu Mar 02 15:43:08 GMT 2017 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>ReplayedList</title>
<meta name="date" content="2017-02-22">
<meta name="date" content="2017-03-02">
<meta name="keywords" content="net.corda.client.fxutils.ReplayedList class">
<meta name="keywords" content="getReplayedList()">
<meta name="keywords" content="getSize()">

View File

@ -2,10 +2,10 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_121) on Wed Feb 22 10:57:09 GMT 2017 -->
<!-- Generated by javadoc (1.8.0_121) on Thu Mar 02 15:43:17 GMT 2017 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>net.corda.client.fxutils</title>
<meta name="date" content="2017-02-22">
<meta name="date" content="2017-03-02">
<meta name="keywords" content="net.corda.client.fxutils package">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>

View File

@ -2,10 +2,10 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_121) on Wed Feb 22 10:57:09 GMT 2017 -->
<!-- Generated by javadoc (1.8.0_121) on Thu Mar 02 15:43:17 GMT 2017 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>net.corda.client.fxutils</title>
<meta name="date" content="2017-02-22">
<meta name="date" content="2017-03-02">
<meta name="keywords" content="net.corda.client.fxutils package">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>

View File

@ -2,10 +2,10 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_121) on Wed Feb 22 10:57:09 GMT 2017 -->
<!-- Generated by javadoc (1.8.0_121) on Thu Mar 02 15:43:17 GMT 2017 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>net.corda.client.fxutils Class Hierarchy</title>
<meta name="date" content="2017-02-22">
<meta name="date" content="2017-03-02">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
</head>
@ -81,13 +81,13 @@
<ul>
<li type="circle">net.corda.client.fxutils.<a href="../../../../net/corda/client/fxutils/ObservableUtilitiesKt.html" title="class in net.corda.client.fxutils"><span class="typeNameLink">ObservableUtilitiesKt</span></a></li>
<li type="circle">net.corda.client.fxutils.<a href="../../../../net/corda/client/fxutils/ConcatenatedList.html" title="class in net.corda.client.fxutils"><span class="typeNameLink">ConcatenatedList</span></a>&lt;A&gt;</li>
<li type="circle">net.corda.client.fxutils.<a href="../../../../net/corda/client/fxutils/AggregatedList.html" title="class in net.corda.client.fxutils"><span class="typeNameLink">AggregatedList</span></a>&lt;A,E,K&gt;</li>
<li type="circle">net.corda.client.fxutils.<a href="../../../../net/corda/client/fxutils/ReadOnlyBackedObservableMapBase.html" title="class in net.corda.client.fxutils"><span class="typeNameLink">ReadOnlyBackedObservableMapBase</span></a>&lt;K,A,B&gt;
<ul>
<li type="circle">net.corda.client.fxutils.<a href="../../../../net/corda/client/fxutils/AssociatedList.html" title="class in net.corda.client.fxutils"><span class="typeNameLink">AssociatedList</span></a>&lt;K,A,B&gt;</li>
<li type="circle">net.corda.client.fxutils.<a href="../../../../net/corda/client/fxutils/LeftOuterJoinedMap.html" title="class in net.corda.client.fxutils"><span class="typeNameLink">LeftOuterJoinedMap</span></a>&lt;K,A,B,C&gt;</li>
</ul>
</li>
<li type="circle">net.corda.client.fxutils.<a href="../../../../net/corda/client/fxutils/AggregatedList.html" title="class in net.corda.client.fxutils"><span class="typeNameLink">AggregatedList</span></a>&lt;A,E,K&gt;</li>
<li type="circle">net.corda.client.fxutils.<a href="../../../../net/corda/client/fxutils/ReplayedList.html" title="class in net.corda.client.fxutils"><span class="typeNameLink">ReplayedList</span></a>&lt;A&gt;</li>
<li type="circle">net.corda.client.fxutils.<a href="../../../../net/corda/client/fxutils/MapValuesList.html" title="class in net.corda.client.fxutils"><span class="typeNameLink">MapValuesList</span></a>&lt;K,A,C&gt;</li>
<li type="circle">net.corda.client.fxutils.<a href="../../../../net/corda/client/fxutils/MapValuesList.Companion.html" title="class in net.corda.client.fxutils"><span class="typeNameLink">MapValuesList.Companion</span></a></li>

View File

@ -2,10 +2,10 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_121) on Wed Feb 22 10:56:41 GMT 2017 -->
<!-- Generated by javadoc (1.8.0_121) on Thu Mar 02 15:43:09 GMT 2017 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>EventGenerator</title>
<meta name="date" content="2017-02-22">
<meta name="date" content="2017-03-02">
<meta name="keywords" content="net.corda.client.mock.EventGenerator class">
<meta name="keywords" content="getIssuerGenerator()">
<meta name="keywords" content="getCurrencyGenerator()">

Some files were not shown because too many files have changed in this diff Show More