mirror of
https://github.com/corda/corda.git
synced 2024-12-24 23:26:48 +00:00
424 lines
19 KiB
HTML
424 lines
19 KiB
HTML
|
|
|
|
<!DOCTYPE html>
|
|
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
|
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
|
<head>
|
|
<meta charset="utf-8">
|
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
|
|
<title>Release notes — R3 Corda latest documentation</title>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<link rel="stylesheet" href="_static/css/custom.css" type="text/css" />
|
|
|
|
|
|
|
|
|
|
|
|
<link rel="top" title="R3 Corda latest documentation" href="index.html"/>
|
|
<link rel="next" title="Using the visualiser" href="visualiser.html"/>
|
|
<link rel="prev" title="Release process" href="release-process.html"/>
|
|
|
|
|
|
<script src="_static/js/modernizr.min.js"></script>
|
|
|
|
</head>
|
|
|
|
<body class="wy-body-for-nav" role="document">
|
|
|
|
<div class="wy-grid-for-nav">
|
|
|
|
|
|
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
<div class="wy-side-scroll">
|
|
<div class="wy-side-nav-search">
|
|
|
|
|
|
|
|
|
|
<a href="index.html" class="icon icon-home"> R3 Corda
|
|
|
|
|
|
|
|
</a>
|
|
|
|
|
|
|
|
|
|
<div class="version">
|
|
latest
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div role="search">
|
|
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
|
|
<input type="text" name="q" placeholder="Search docs" />
|
|
<input type="hidden" name="check_keywords" value="yes" />
|
|
<input type="hidden" name="area" value="default" />
|
|
</form>
|
|
</div>
|
|
|
|
|
|
<br>
|
|
<a href="api/index.html">API reference</a>
|
|
|
|
</div>
|
|
|
|
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
|
|
|
|
|
|
|
<p class="caption"><span class="caption-text">Overview</span></p>
|
|
<ul>
|
|
<li class="toctree-l1"><a class="reference internal" href="inthebox.html">What’s included?</a></li>
|
|
<li class="toctree-l1"><a class="reference internal" href="getting-set-up.html">Getting set up</a></li>
|
|
<li class="toctree-l1"><a class="reference internal" href="data-model.html">Data model</a></li>
|
|
<li class="toctree-l1"><a class="reference internal" href="transaction-data-types.html">Data types</a></li>
|
|
<li class="toctree-l1"><a class="reference internal" href="consensus.html">Consensus model</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="creating-a-cordapp.html">Creating a Cordapp</a></li>
|
|
<li class="toctree-l1"><a class="reference internal" href="running-the-demos.html">Running the demos</a></li>
|
|
<li class="toctree-l1"><a class="reference internal" href="node-administration.html">Node administration</a></li>
|
|
</ul>
|
|
<p class="caption"><span class="caption-text">Contracts</span></p>
|
|
<ul>
|
|
<li class="toctree-l1"><a class="reference internal" href="contract-catalogue.html">Contract catalogue</a></li>
|
|
<li class="toctree-l1"><a class="reference internal" href="contract-irs.html">Interest Rate Swaps</a></li>
|
|
</ul>
|
|
<p class="caption"><span class="caption-text">Tutorials</span></p>
|
|
<ul>
|
|
<li class="toctree-l1"><a class="reference internal" href="where-to-start.html">Where to start</a></li>
|
|
<li class="toctree-l1"><a class="reference internal" href="tutorial-contract.html">Writing a contract</a></li>
|
|
<li class="toctree-l1"><a class="reference internal" href="tutorial-contract-clauses.html">Writing a contract using clauses</a></li>
|
|
<li class="toctree-l1"><a class="reference internal" href="tutorial-test-dsl.html">Writing a contract test</a></li>
|
|
<li class="toctree-l1"><a class="reference internal" href="protocol-state-machines.html">Protocol state machines</a></li>
|
|
<li class="toctree-l1"><a class="reference internal" href="oracles.html">Writing oracle services</a></li>
|
|
<li class="toctree-l1"><a class="reference internal" href="event-scheduling.html">Event scheduling</a></li>
|
|
</ul>
|
|
<p class="caption"><span class="caption-text">Appendix</span></p>
|
|
<ul class="current">
|
|
<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-process.html#steps-to-cut-a-release">Steps to cut a release</a></li>
|
|
<li class="toctree-l1 current"><a class="current reference internal" href="#">Release notes</a><ul>
|
|
<li class="toctree-l2"><a class="reference internal" href="#milestone-2">Milestone 2</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="#milestone-1">Milestone 1</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="#milestone-0">Milestone 0</a></li>
|
|
</ul>
|
|
</li>
|
|
<li class="toctree-l1"><a class="reference internal" href="visualiser.html">Using the visualiser</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>
|
|
</ul>
|
|
|
|
|
|
|
|
</div>
|
|
</div>
|
|
</nav>
|
|
|
|
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
|
|
|
|
|
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
|
|
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
<a href="index.html">R3 Corda</a>
|
|
</nav>
|
|
|
|
|
|
|
|
<div class="wy-nav-content">
|
|
<div class="rst-content">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div role="navigation" aria-label="breadcrumbs navigation">
|
|
<ul class="wy-breadcrumbs">
|
|
<li><a href="index.html">Docs</a> »</li>
|
|
|
|
<li>Release notes</li>
|
|
<li class="wy-breadcrumbs-aside">
|
|
|
|
|
|
<a href="_sources/release-notes.txt" rel="nofollow"> View page source</a>
|
|
|
|
|
|
</li>
|
|
</ul>
|
|
<hr/>
|
|
</div>
|
|
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
<div itemprop="articleBody">
|
|
|
|
<div class="section" id="release-notes">
|
|
<h1>Release notes<a class="headerlink" href="#release-notes" title="Permalink to this headline">¶</a></h1>
|
|
<p>Here are brief summaries of what’s changed between each snapshot release.</p>
|
|
<div class="section" id="milestone-2">
|
|
<h2>Milestone 2<a class="headerlink" href="#milestone-2" title="Permalink to this headline">¶</a></h2>
|
|
<ul>
|
|
<li><p class="first">Big improvements to the interest rate swap app:</p>
|
|
<blockquote>
|
|
<div><ul class="simple">
|
|
<li>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.</li>
|
|
<li>Simplifications to the way the demo is used from the command line.</li>
|
|
<li><a class="reference internal" href="contract-irs.html"><span class="doc">Detailed documentation on how the contract works and can be used</span></a> has been written.</li>
|
|
<li>Better integration testing of the app.</li>
|
|
</ul>
|
|
</div></blockquote>
|
|
</li>
|
|
<li><p class="first">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.</p>
|
|
</li>
|
|
<li><p class="first">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):</p>
|
|
<blockquote>
|
|
<div><ul>
|
|
<li><p class="first">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 TheDAO hack.</p>
|
|
</li>
|
|
<li><p class="first">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:</p>
|
|
<blockquote>
|
|
<div><ul class="simple">
|
|
<li>Mustafa Ozturk @ Natixis</li>
|
|
<li>David Nee @ US Bank</li>
|
|
<li>Johannes Albertsen @ Dankse Bank</li>
|
|
<li>Rui Hu @ Nordea</li>
|
|
<li>Daniele Barreca @ Unicredit</li>
|
|
<li>Sukrit Handa @ Scotiabank</li>
|
|
<li>Giuseppe Cardone @ Banco Intesa</li>
|
|
<li>Robert Santiago @ BBVA</li>
|
|
</ul>
|
|
</div></blockquote>
|
|
</li>
|
|
</ul>
|
|
</div></blockquote>
|
|
</li>
|
|
<li><p class="first">The usability of the command line demo programs has been improved.</p>
|
|
</li>
|
|
<li><p class="first">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.</p>
|
|
</li>
|
|
<li><p class="first">Significant work done towards defining the “CorDapp” concept in code, with dynamic loading of API services and more to
|
|
come.</p>
|
|
</li>
|
|
<li><p class="first">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.</p>
|
|
</li>
|
|
<li><p class="first">Logging is now saved to files with log rotation provided by Log4J.</p>
|
|
</li>
|
|
</ul>
|
|
<p>API changes:</p>
|
|
<ul class="simple">
|
|
<li>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.</li>
|
|
<li>The <code class="docutils literal"><span class="pre">arg</span></code> method in the test DSL is now called <code class="docutils literal"><span class="pre">command</span></code> to be consistent with the rest of the data model.</li>
|
|
<li>The messaging APIs have changed somewhat to now use a new <code class="docutils literal"><span class="pre">TopicSession</span></code> object. These APIs will continue to change
|
|
in the upcoming releases.</li>
|
|
<li>Clauses now have default values provided for <code class="docutils literal"><span class="pre">ifMatched</span></code>, <code class="docutils literal"><span class="pre">ifNotMatched</span></code> and <code class="docutils literal"><span class="pre">requiredCommands</span></code>.</li>
|
|
</ul>
|
|
<p>New documentation:</p>
|
|
<ul class="simple">
|
|
<li><a class="reference internal" href="contract-catalogue.html"><span class="doc">Contract catalogue</span></a></li>
|
|
<li><a class="reference internal" href="contract-irs.html"><span class="doc">Interest Rate Swaps</span></a></li>
|
|
<li><a class="reference internal" href="tutorial-test-dsl.html"><span class="doc">Writing a contract test</span></a></li>
|
|
</ul>
|
|
</div>
|
|
<div class="section" id="milestone-1">
|
|
<h2>Milestone 1<a class="headerlink" href="#milestone-1" title="Permalink to this headline">¶</a></h2>
|
|
<p>Highlights of this release:</p>
|
|
<ul>
|
|
<li><p class="first">Event scheduling. States in the ledger can now request protocols to be invoked at particular times, for states
|
|
considered relevant by the wallet.</p>
|
|
</li>
|
|
<li><p class="first">Upgrades to the notary/consensus service support:</p>
|
|
<blockquote>
|
|
<div><ul class="simple">
|
|
<li>There is now a way to change the notary controlling a state.</li>
|
|
<li>You can pick between validating and non-validating notaries, these let you select your privacy/robustness tradeoff.</li>
|
|
</ul>
|
|
</div></blockquote>
|
|
</li>
|
|
<li><p class="first">A new obligation contract that supports bilateral and multilateral netting of obligations, default tracking and
|
|
more.</p>
|
|
</li>
|
|
<li><p class="first">Improvements to the financial type system, with core classes and contracts made more generic.</p>
|
|
</li>
|
|
<li><p class="first">Switch to a better digital signature algorithm: ed25519 instead of the previous JDK default of secp256r1.</p>
|
|
</li>
|
|
<li><p class="first">A new integration test suite.</p>
|
|
</li>
|
|
<li><p class="first">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).</p>
|
|
</li>
|
|
<li><p class="first">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.</p>
|
|
</li>
|
|
<li><p class="first">Persistence improvements: transaction data is now stored to disk and automatic protocol resume is now implemented.</p>
|
|
</li>
|
|
<li><p class="first">Many smaller bug fixes, cleanups and improvements.</p>
|
|
</li>
|
|
</ul>
|
|
<p>We have new documentation on:</p>
|
|
<ul class="simple">
|
|
<li><a class="reference internal" href="event-scheduling.html"><span class="doc">Event scheduling</span></a></li>
|
|
<li><a class="reference internal" href="transaction-data-types.html"><span class="doc">Data types</span></a></li>
|
|
<li><a class="reference internal" href="consensus.html"><span class="doc">Consensus model</span></a></li>
|
|
</ul>
|
|
<p>Summary of API changes (not exhaustive):</p>
|
|
<ul>
|
|
<li><p class="first">Notary/consensus service:</p>
|
|
<blockquote>
|
|
<div><ul class="simple">
|
|
<li><code class="docutils literal"><span class="pre">NotaryService</span></code> is now extensible.</li>
|
|
<li>Every <code class="docutils literal"><span class="pre">ContractState</span></code> now has to specify a <em>participants</em> 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.</li>
|
|
<li>Introduced <code class="docutils literal"><span class="pre">TransactionState</span></code>, which wraps <code class="docutils literal"><span class="pre">ContractState</span></code>, and is used when defining a transaction output.
|
|
The notary field is moved from <code class="docutils literal"><span class="pre">ContractState</span></code> into <code class="docutils literal"><span class="pre">TransactionState</span></code>.</li>
|
|
<li>Every transaction now has a <em>type</em> 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).
|
|
<code class="docutils literal"><span class="pre">TransactionBuilder()</span></code> is now abstract, you should use <code class="docutils literal"><span class="pre">TransactionType.General.Builder()</span></code> for building transactions.</li>
|
|
</ul>
|
|
</div></blockquote>
|
|
</li>
|
|
<li><p class="first">The cash contract has moved from <code class="docutils literal"><span class="pre">com.r3corda.contracts</span></code> to <code class="docutils literal"><span class="pre">com.r3corda.contracts.cash</span></code></p>
|
|
</li>
|
|
<li><p class="first"><code class="docutils literal"><span class="pre">Amount</span></code> class is now generic, to support non-currency types such as physical assets. Where you previously had just
|
|
<code class="docutils literal"><span class="pre">Amount</span></code>, you should now use <code class="docutils literal"><span class="pre">Amount<Currency></span></code>.</p>
|
|
</li>
|
|
<li><p class="first">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.)</p>
|
|
</li>
|
|
<li><p class="first">Messaging:</p>
|
|
<blockquote>
|
|
<div><ul class="simple">
|
|
<li><code class="docutils literal"><span class="pre">addMessageHandler</span></code> now has a different signature as part of error handling changes.</li>
|
|
<li>If you want to return nothing to a protocol, use <code class="docutils literal"><span class="pre">Ack</span></code> instead of <code class="docutils literal"><span class="pre">Unit</span></code> from now on.</li>
|
|
</ul>
|
|
</div></blockquote>
|
|
</li>
|
|
<li><p class="first">In the IRS contract, dateOffset is now an integer instead of an enum.</p>
|
|
</li>
|
|
<li><p class="first">In contracts, you now use <code class="docutils literal"><span class="pre">tx.getInputs</span></code> and <code class="docutils literal"><span class="pre">tx.getOutputs</span></code> instead of <code class="docutils literal"><span class="pre">getInStates</span></code> and <code class="docutils literal"><span class="pre">getOutStates</span></code>. This is
|
|
just a renaming.</p>
|
|
</li>
|
|
<li><p class="first">A new <code class="docutils literal"><span class="pre">NonEmptySet</span></code> type has been added for cases where you wish to express that you have a collection of unique
|
|
objects which cannot be empty.</p>
|
|
</li>
|
|
<li><p class="first">Please use the global <code class="docutils literal"><span class="pre">newSecureRandom()</span></code> 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.</p>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<div class="section" id="milestone-0">
|
|
<h2>Milestone 0<a class="headerlink" href="#milestone-0" title="Permalink to this headline">¶</a></h2>
|
|
<p>This is the first release, which includes:</p>
|
|
<ul class="simple">
|
|
<li>Some initial smart contracts: cash, commercial paper, interest rate swaps</li>
|
|
<li>An interest rate oracle</li>
|
|
<li>The first version of the protocol/orchestration framework</li>
|
|
<li>Some initial support for pluggable consensus mechanisms</li>
|
|
<li>Tutorials and documentation explaining how it works</li>
|
|
<li>Much more ...</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</div>
|
|
</div>
|
|
<footer>
|
|
|
|
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
|
|
|
|
<a href="visualiser.html" class="btn btn-neutral float-right" title="Using the visualiser" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a>
|
|
|
|
|
|
<a href="release-process.html" class="btn btn-neutral" title="Release process" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a>
|
|
|
|
</div>
|
|
|
|
|
|
<hr/>
|
|
|
|
<div role="contentinfo">
|
|
<p>
|
|
© Copyright 2016, Distributed Ledger Group, LLC.
|
|
|
|
</p>
|
|
</div>
|
|
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
|
|
|
</footer>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
</section>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<script type="text/javascript">
|
|
var DOCUMENTATION_OPTIONS = {
|
|
URL_ROOT:'./',
|
|
VERSION:'latest',
|
|
COLLAPSE_INDEX:false,
|
|
FILE_SUFFIX:'.html',
|
|
HAS_SOURCE: true
|
|
};
|
|
</script>
|
|
<script type="text/javascript" src="_static/jquery.js"></script>
|
|
<script type="text/javascript" src="_static/underscore.js"></script>
|
|
<script type="text/javascript" src="_static/doctools.js"></script>
|
|
|
|
|
|
|
|
|
|
|
|
<script type="text/javascript" src="_static/js/theme.js"></script>
|
|
|
|
|
|
|
|
|
|
<script type="text/javascript">
|
|
jQuery(function () {
|
|
SphinxRtdTheme.StickyNav.enable();
|
|
});
|
|
</script>
|
|
|
|
|
|
</body>
|
|
</html> |