<li><codeclass="docutils literal"><spanclass="pre">NotaryService</span></code> is now extensible.</li>
<li>Every <codeclass="docutils literal"><spanclass="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 <codeclass="docutils literal"><spanclass="pre">TransactionState</span></code>, which wraps <codeclass="docutils literal"><spanclass="pre">ContractState</span></code>, and is used when defining a transaction output.
The notary field is moved from <codeclass="docutils literal"><spanclass="pre">ContractState</span></code> into <codeclass="docutils literal"><spanclass="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).
<codeclass="docutils literal"><spanclass="pre">TransactionBuilder()</span></code> is now abstract, you should use <codeclass="docutils literal"><spanclass="pre">TransactionType.General.Builder()</span></code> for building transactions.</li>
</ul>
</div></blockquote>
</li>
<li><pclass="first">The cash contract has moved from <codeclass="docutils literal"><spanclass="pre">com.r3corda.contracts</span></code> to <codeclass="docutils literal"><spanclass="pre">com.r3corda.contracts.cash</span></code></p>
</li>
<li><pclass="first"><codeclass="docutils literal"><spanclass="pre">Amount</span></code> class is now generic, to support non-currency types such as physical assets. Where you previously had just
<codeclass="docutils literal"><spanclass="pre">Amount</span></code>, you should now use <codeclass="docutils literal"><spanclass="pre">Amount<Currency></span></code>.</p>
</li>
<li><pclass="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><pclass="first">Messaging:</p>
<blockquote>
<div><ulclass="simple">
<li><codeclass="docutils literal"><spanclass="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 <codeclass="docutils literal"><spanclass="pre">Ack</span></code> instead of <codeclass="docutils literal"><spanclass="pre">Unit</span></code> from now on.</li>
</ul>
</div></blockquote>
</li>
<li><pclass="first">In the IRS contract, dateOffset is now an integer instead of an enum.</p>
</li>
<li><pclass="first">In contracts, you now use <codeclass="docutils literal"><spanclass="pre">tx.getInputs</span></code> and <codeclass="docutils literal"><spanclass="pre">tx.getOutputs</span></code> instead of <codeclass="docutils literal"><spanclass="pre">getInStates</span></code> and <codeclass="docutils literal"><spanclass="pre">getOutStates</span></code>. This is
just a renaming.</p>
</li>
<li><pclass="first">A new <codeclass="docutils literal"><spanclass="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><pclass="first">Please use the global <codeclass="docutils literal"><spanclass="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>
Built with <ahref="http://sphinx-doc.org/">Sphinx</a> using a <ahref="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <ahref="https://readthedocs.org">Read the Docs</a>.