mirror of
https://github.com/corda/corda.git
synced 2025-01-28 15:14:48 +00:00
RELEASE - Release v3.4 release docs
* RELEASE - Upgrade notes and change log * RELEASE - Release notes * Review comments
This commit is contained in:
parent
6c8b1d1e26
commit
6133998dd6
@ -13,5 +13,6 @@
|
||||
"https://docs.corda.net/releases/release-V3.1": "V3.1",
|
||||
"https://docs.corda.net/releases/release-V3.2": "V3.2",
|
||||
"https://docs.corda.net/releases/release-V3.3": "V3.3",
|
||||
"https://docs.corda.net/releases/release-V3.4": "V3.4",
|
||||
"https://docs.corda.net/head/": "Master"
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -60,11 +60,11 @@ author = u'R3 DLG'
|
||||
# built documents.
|
||||
#
|
||||
# The short X.Y version.
|
||||
version = 'V3.3'
|
||||
version = 'V3.4'
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = 'V3.3'
|
||||
release = 'V3.4'
|
||||
# The version for use in the dropdown html.
|
||||
html_context = {'version': 'V3.3'}
|
||||
html_context = {'version': 'V3.4'}
|
||||
|
||||
# Properties.
|
||||
kotlin_version = '1.2.51'
|
||||
|
@ -3,6 +3,27 @@ Release notes
|
||||
|
||||
.. _release_notes_v3_3:
|
||||
|
||||
Release 3.4
|
||||
-----------
|
||||
|
||||
In response to the recently released [`Corda 4.0 <https://docs.corda.net/releases/release-V4.0/release-notes.html>`_] Corda 3.4 brings a
|
||||
number of fixes that address several interoperability issues we've discovered between nodes. These should make the deployment of mixed
|
||||
version networks far smoother and the upgrade path from 3 to 4 easier.
|
||||
|
||||
The majority of these fixes surround the serialization and class synthesis frameworks where receiving states and messages from newer (Version 4) nodes highlighted
|
||||
a few edge cases, bugs, and performance enhancements we could make.
|
||||
|
||||
Issues Fixed
|
||||
~~~~~~~~~~~~
|
||||
|
||||
* Don't fail deserialization with carpentry errors if the carpented types would be discarded through evolution [`CORDA-2704 <https://r3-cev.atlassian.net/browse/CORDA-2704>`_]
|
||||
* RPC Vault query incompatibility between Corda 3.3 and Corda 4 [`CORDA-2687 <https://r3-cev.atlassian.net/browse/CORDA-2687>`_]
|
||||
* V3 node unable to record finalised transaction containing a V3 FungibleAsset state created by a V4 node [`CORDA-2422 <https://r3-cev.atlassian.net/browse/CORDA-2422>`_]
|
||||
* V3 node is unable to evolve serialised type that has introduced a property that is of an unknown type [`CORDA-2314 <https://r3-cev.atlassian.net/browse/CORDA-2314>`_]
|
||||
* ClassCastException during initiate Contract Upgrade [`CORDA-2109 <https://r3-cev.atlassian.net/browse/CORDA-2109>`_]
|
||||
|
||||
.. _release_notes_v3_3:
|
||||
|
||||
Release 3.3
|
||||
-----------
|
||||
|
||||
@ -580,381 +601,4 @@ Minor Changes
|
||||
* Numerous bug fixes and documentation tweaks.
|
||||
* Removed dependency on Jolokia WAR file.
|
||||
|
||||
.. _release_notes_v2_0:
|
||||
|
||||
Release 2.0
|
||||
-----------
|
||||
Following quickly on the heels of the release of Corda 1.0, Corda version 2.0 consolidates
|
||||
a number of security updates for our dependent libraries alongside the reintroduction of the Observer node functionality.
|
||||
This was absent from version 1 but based on user feedback its re-introduction removes the need for complicated "isRelevant()" checks.
|
||||
|
||||
In addition the fix for a small bug present in the coin selection code of V1.0 is integrated from master.
|
||||
|
||||
* **Version Bump**
|
||||
|
||||
Due to the introduction of new APIs, Corda 2.0 has a platform version of 2. This will be advertised in the network map structures
|
||||
and via the versioning APIs.
|
||||
|
||||
* **Observer Nodes**
|
||||
|
||||
Adds the facility for transparent forwarding of transactions to some third party observer, such as a regulator. By having
|
||||
that entity simply run an Observer node they can simply recieve a stream of digitally signed, de-duplicated reports that
|
||||
can be used for reporting.
|
||||
|
||||
.. _release_notes_v1_0:
|
||||
|
||||
Release 1.0
|
||||
-----------
|
||||
Corda 1.0 is finally here!
|
||||
|
||||
This critical step in the Corda journey enables the developer community, clients, and partners to build on Corda with confidence.
|
||||
Corda 1.0 is the first released version to provide API stability for Corda application (CorDapp) developers.
|
||||
Corda applications will continue to work against this API with each subsequent release of Corda. The public API for Corda
|
||||
will only evolve to include new features.
|
||||
|
||||
As of Corda 1.0, the following modules export public APIs for which we guarantee to maintain backwards compatibility,
|
||||
unless an incompatible change is required for security reasons:
|
||||
|
||||
* **core**:
|
||||
Contains the bulk of the APIs to be used for building CorDapps: contracts, transactions, flows, identity, node services,
|
||||
cryptographic libraries, and general utility functions.
|
||||
|
||||
* **client-rpc**:
|
||||
An RPC client interface to Corda, for use by both UI facing clients and integration with external systems.
|
||||
|
||||
* **client-jackson**:
|
||||
Utilities and serialisers for working with JSON representations of basic types.
|
||||
|
||||
Our extensive testing frameworks will continue to evolve alongside future Corda APIs. As part of our commitment to ease of use and modularity
|
||||
we have introduced a new test node driver module to encapsulate all test functionality in support of building standalone node integration
|
||||
tests using our DSL driver.
|
||||
|
||||
Please read :doc:`corda-api` for complete details.
|
||||
|
||||
.. note:: it may be necessary to recompile applications against future versions of the API until we begin offering
|
||||
`ABI (Application Binary Interface) <https://en.wikipedia.org/wiki/Application_binary_interface>`_ stability as well.
|
||||
We plan to do this soon after this release of Corda.
|
||||
|
||||
Significant changes implemented in reaching Corda API stability include:
|
||||
|
||||
* **Flow framework**:
|
||||
The Flow framework communications API has been redesigned around session based communication with the introduction of a new
|
||||
``FlowSession`` to encapsulate the counterparty information associated with a flow.
|
||||
All shipped Corda flows have been upgraded to use the new `FlowSession`. Please read :doc:`api-flows` for complete details.
|
||||
|
||||
* **Complete API cleanup**:
|
||||
Across the board, all our public interfaces have been thoroughly revised and updated to ensure a productive and intuitive developer experience.
|
||||
Methods and flow naming conventions have been aligned with their semantic use to ease the understanding of CorDapps.
|
||||
In addition, we provide ever more powerful re-usable flows (such as `CollectSignaturesFlow`) to minimize the boiler-plate code developers need to write.
|
||||
|
||||
* **Simplified annotation driven scanning**:
|
||||
CorDapp configuration has been made simpler through the removal of explicit configuration items in favour of annotations
|
||||
and classpath scanning. As an example, we have now completely removed the `CordaPluginRegistry` configuration.
|
||||
Contract definitions are no longer required to explicitly define a legal contract reference hash. In their place an
|
||||
optional `LegalProseReference` annotation to specify a URI is used.
|
||||
|
||||
* **Java usability**:
|
||||
All code has been updated to enable simple access to static API parameters. Developers no longer need to
|
||||
call getter methods, and can reference static API variables directly.
|
||||
|
||||
In addition to API stability this release encompasses a number of major functional improvements, including:
|
||||
|
||||
* **Contract constraints**:
|
||||
Provides a means with which to enforce a specific implementation of a State's verify method during transaction verification.
|
||||
When loading an attachment via the attachment classloader, constraints of a transaction state are checked against the
|
||||
list of attachment hashes provided, and the attachment is rejected if the constraints are not matched.
|
||||
|
||||
* **Signature Metadata support**:
|
||||
Signers now have the ability to add metadata to their digital signatures. Whereas previously a user could only sign the Merkle root of a
|
||||
transaction, it is now possible for extra information to be attached to a signature, such as a platform version
|
||||
and the signature-scheme used.
|
||||
|
||||
.. image:: resources/signatureMetadata.png
|
||||
|
||||
* **Backwards compatibility and improvements to core transaction data structures**:
|
||||
A new Merkle tree model has been introduced that utilises sub-Merkle trees per component type. Components of the
|
||||
same type, such as inputs or commands, are grouped together and form their own Merkle tree. Then, the roots of
|
||||
each group are used as leaves in the top-level Merkle tree. This model enables backwards compatibility, in the
|
||||
sense that if new component types are added in the future, old clients will still be able to compute the Merkle root
|
||||
and relay transactions even if they cannot read (deserialise) the new component types. Due to the above,
|
||||
`FilterTransaction` has been made simpler with a structure closer to `WireTransaction`. This has the effect of making the API
|
||||
more user friendly and intuitive for both filtered and unfiltered transactions.
|
||||
|
||||
* **Enhanced component privacy**:
|
||||
Corda 1.0 is equipped with a scalable component visibility design based on the above sophisticated
|
||||
sub-tree model and the introduction of nonces per component. Roughly, an initial base-nonce, the "privacy-salt",
|
||||
is used to deterministically generate nonces based on the path of each component in the tree. Because each component
|
||||
is accompanied by a nonce, we protect against brute force attacks, even against low-entropy components. In addition,
|
||||
a new privacy feature is provided that allows non-validating notaries to ensure they see all inputs and if there was a
|
||||
`TimeWindow` in the original transaction. Due to the above, a malicious user cannot selectively hide one or more
|
||||
input states from the notary that would enable her to bypass the double-spending check. The aforementioned
|
||||
functionality could also be applied to Oracles so as to ensure all of the commands are visible to them.
|
||||
|
||||
.. image:: resources/subTreesPrivacy.png
|
||||
|
||||
* **Full support for confidential identities**:
|
||||
This includes rework and improvements to the identity service to handle both `well known` and `confidential` identities.
|
||||
This work ships in an experimental module in Corda 1.0, called `confidential-identities`. API stabilisation of confidential
|
||||
identities will occur as we make the integration of this privacy feature into applications even easier for developers.
|
||||
|
||||
* **Re-designed network map service**:
|
||||
The foundations for a completely redesigned network map service have been implemented to enable future increased network
|
||||
scalability and redundancy, support for multiple notaries, and administration of network compatibility zones and business networks.
|
||||
|
||||
Finally, please note that the 1.0 release has not yet been security audited.
|
||||
|
||||
We have provided a comprehensive :doc:`upgrade-notes` to ease the transition of migrating CorDapps to Corda 1.0
|
||||
|
||||
Upgrading to this release is strongly recommended, and you will be safe in the knowledge that core APIs will no longer break.
|
||||
|
||||
Thank you to all contributors for this release!
|
||||
|
||||
Milestone 14
|
||||
------------
|
||||
|
||||
This release continues with the goal to improve API stability and developer friendliness. There have also been more
|
||||
bug fixes and other improvements across the board.
|
||||
|
||||
The CorDapp template repository has been replaced with a specific repository for
|
||||
`Java <https://github.com/corda/cordapp-template-java>`_ and `Kotlin <https://github.com/corda/cordapp-template-kotlin>`_
|
||||
to improve the experience of starting a new project and to simplify the build system.
|
||||
|
||||
It is now possible to specify multiple IP addresses and legal identities for a single node, allowing node operators
|
||||
more flexibility in setting up nodes.
|
||||
|
||||
A format has been introduced for CorDapp JARs that standardises the contents of CorDapps across nodes. This new format
|
||||
now requires CorDapps to contain their own external dependencies. This paves the way for significantly improved
|
||||
dependency management for CorDapps with the release of `Jigsaw (Java Modules) <http://openjdk.java.net/projects/jigsaw/>`_. For those using non-gradle build systems it is important
|
||||
to read :doc:`cordapp-build-systems` to learn more. Those using our ``cordformation`` plugin simply need to update
|
||||
to the latest version (``0.14.0``) to get the fixes.
|
||||
|
||||
We've now begun the process of demarcating which classes are part of our public API and which ones are internal.
|
||||
Everything found in ``net.corda.core.internal`` and other packages in the ``net.corda`` namespace which has ``.internal`` in it are
|
||||
considered internal and not for public use. In a future release any CorDapp using these packages will fail to load, and
|
||||
when we migrate to Jigsaw these will not be exported.
|
||||
|
||||
The transaction finalisation flow (``FinalityFlow``) has had hooks added for alternative implementations, for example in
|
||||
scenarios where no single participant in a transaction is aware of the well known identities of all parties.
|
||||
|
||||
DemoBench has a fix for a rare but inconvenient crash that can occur when sharing your display across multiple devices,
|
||||
e.g. a projector while performing demonstrations in front of an audience.
|
||||
|
||||
Guava types are being removed because Guava does not have backwards compatibility across versions, which has serious
|
||||
issues when multiple libraries depend on different versions of the library.
|
||||
|
||||
The identity service API has been tweaked, primarily so anonymous identity registration now takes in
|
||||
AnonymousPartyAndPath rather than the individual components of the identity, as typically the caller will have
|
||||
an AnonymousPartyAndPath instance. See change log for further detail.
|
||||
|
||||
Upgrading to this release is strongly recommended in order to keep up with the API changes, removal and additions.
|
||||
|
||||
Milestone 13
|
||||
------------
|
||||
|
||||
Following our first public beta in M12, this release continues the work on API stability and user friendliness. Apart
|
||||
from bug fixes and code refactoring, there are also significant improvements in the Vault Query and the
|
||||
Identity Service (for more detailed information about what has changed, see :doc:`changelog`).
|
||||
More specifically:
|
||||
|
||||
The long awaited new **Vault Query** service makes its debut in this release and provides advanced vault query
|
||||
capabilities using criteria specifications (see ``QueryCriteria``), sorting, and pagination. Criteria specifications
|
||||
enable selective filtering with and/or composition using multiple operator primitives on standard attributes stored in
|
||||
Corda internal vault tables (eg. vault_states, vault_fungible_states, vault_linear_states), and also on custom contract
|
||||
state schemas defined by CorDapp developers when modelling new contract types. Custom queries are specifiable using a
|
||||
simple but sophisticated builder DSL (see ``QueryCriteriaUtils``). The new Vault Query service is usable by flows and by
|
||||
RPC clients alike via two simple API functions: ``queryBy()`` and ``trackBy()``. The former provides point-in-time
|
||||
snapshot queries whilst the later supplements the snapshot with dynamic streaming of updates.
|
||||
See :doc:`api-vault-query` for full details.
|
||||
|
||||
We have written a comprehensive Hello, World! tutorial, showing developers how to build a CorDapp from start
|
||||
to finish. The tutorial shows how the core elements of a CorDapp - states, contracts and flows - fit together
|
||||
to allow your node to handle new business processes. It also explains how you can use our contract and
|
||||
flow testing frameworks to massively reduce CorDapp development time.
|
||||
|
||||
Certificate checks have been enabled for much of the identity service. These are part of the confidential (anonymous)
|
||||
identities work, and ensure that parties are actually who they claim to be by checking their certificate path back to
|
||||
the network trust root (certificate authority).
|
||||
|
||||
To deal with anonymized keys, we've also implemented a deterministic key derivation function that combines logic
|
||||
from the HMAC-based Extract-and-Expand Key Derivation Function (HKDF) protocol and the BIP32 hardened
|
||||
parent-private-key -> child-private-key scheme. This function currently supports the following algorithms:
|
||||
ECDSA secp256K1, ECDSA secpR1 (NIST P-256) and EdDSA ed25519. We are now very close to fully supporting anonymous
|
||||
identities so as to increase privacy even against validating notaries.
|
||||
|
||||
We have further tightened the set of objects which Corda will attempt to serialise from the stack during flow
|
||||
checkpointing. As flows are arbitrary code in which it is convenient to do many things, we ended up pulling in a lot of
|
||||
objects that didn't make sense to put in a checkpoint, such as ``Thread`` and ``Connection``. To minimize serialization
|
||||
cost and increase security by not allowing certain classes to be serialized, we now support class blacklisting
|
||||
that will return an ``IllegalStateException`` if such a class is encountered during a checkpoint. Blacklisting supports
|
||||
superclass and superinterface inheritance and always precedes ``@CordaSerializable`` annotation checking.
|
||||
|
||||
We've also started working on improving user experience when searching, by adding a new RPC to support fuzzy matching
|
||||
of X.500 names.
|
||||
|
||||
Milestone 12 - First Public Beta
|
||||
--------------------------------
|
||||
|
||||
One of our busiest releases, lots of changes that take us closer to API stability (for more detailed information about
|
||||
what has changed, see :doc:`changelog`). In this release we focused mainly on making developers' lives easier. Taking
|
||||
into account feedback from numerous training courses and meet-ups, we decided to add ``CollectSignaturesFlow`` which
|
||||
factors out a lot of code which CorDapp developers needed to write to get their transactions signed.
|
||||
The improvement is up to 150 fewer lines of code in each flow! To have your transaction signed by different parties, you
|
||||
need only now call a subflow which collects the parties' signatures for you.
|
||||
|
||||
Additionally we introduced classpath scanning to wire-up flows automatically. Writing CorDapps has been made simpler by
|
||||
removing boiler-plate code that was previously required when registering flows. Writing services such as oracles has also been simplified.
|
||||
|
||||
We made substantial RPC performance improvements (please note that this is separate to node performance, we are focusing
|
||||
on that area in future milestones):
|
||||
|
||||
- 15-30k requests per second for a single client/server RPC connection.
|
||||
* 1Kb requests, 1Kb responses, server and client on same machine, parallelism 8, measured on a Dell XPS 17(i7-6700HQ, 16Gb RAM)
|
||||
- The framework is now multithreaded on both client and server side.
|
||||
- All remaining bottlenecks are in the messaging layer.
|
||||
|
||||
Security of the key management service has been improved by removing support for extracting private keys, in order that
|
||||
it can support use of a hardware security module (HSM) for key storage. Instead it exposes functionality for signing data
|
||||
(typically transactions). The service now also supports multiple signature schemes (not just EdDSA).
|
||||
|
||||
We've added the beginnings of flow versioning. Nodes now reject flow requests if the initiating side is not using the same
|
||||
flow version. In a future milestone release will add the ability to support backwards compatibility.
|
||||
|
||||
As with the previous few releases we have continued work extending identity support. There are major changes to the ``Party``
|
||||
class as part of confidential identities, and how parties and keys are stored in transaction state objects.
|
||||
See :doc:`changelog` for full details.
|
||||
|
||||
Added new Byzantine fault tolerant (BFT) decentralised notary demo, based on the `BFT-SMaRT protocol <https://bft-smart.github.io/library/>`_
|
||||
For how to run the demo see: :ref:`notary-demo`
|
||||
|
||||
We continued to work on tools that enable diagnostics on the node. The newest addition to Corda Shell is ``flow watch`` command which
|
||||
lets the administrator see all flows currently running with result or error information as well as who is the flow initiator.
|
||||
Here is the view from DemoBench:
|
||||
|
||||
.. image:: resources/flowWatchCmd.png
|
||||
|
||||
We also started work on the strategic wire format (not integrated).
|
||||
|
||||
Milestone 11
|
||||
------------
|
||||
|
||||
Special thank you to `Gary Rowe <https://github.com/gary-rowe>`_ for his contribution to Corda's Contracts DSL in M11.
|
||||
|
||||
Work has continued on confidential identities, introducing code to enable the Java standard libraries to work with
|
||||
composite key signatures. This will form the underlying basis of future work to standardise the public key and signature
|
||||
formats to enable interoperability with other systems, as well as enabling the use of composite signatures on X.509
|
||||
certificates to prove association between transaction keys and identity keys.
|
||||
|
||||
The identity work will require changes to existing code and configurations, to replace party names with full X.500
|
||||
distinguished names (see RFC 1779 for details on the construction of distinguished names). Currently this is not
|
||||
enforced, however it will be in a later milestone.
|
||||
|
||||
* "myLegalName" in node configurations will need to be replaced, for example "Bank A" is replaced with
|
||||
"CN=Bank A,O=Bank A,L=London,C=GB". Obviously organisation, location and country ("O", "L" and "C" respectively)
|
||||
must be given values which are appropriate to the node, do not just use these example values.
|
||||
* "networkMap" in node configurations must be updated to match any change to the legal name of the network map.
|
||||
* If you are using mock parties for testing, try to standardise on the ``DUMMY_NOTARY``, ``DUMMY_BANK_A``, etc. provided
|
||||
in order to ensure consistency.
|
||||
|
||||
We anticipate enforcing the use of distinguished names in node configurations from M12, and across the network from M13.
|
||||
|
||||
We have increased the maximum message size that we can send to Corda over RPC from 100 KB to 10 MB.
|
||||
|
||||
The Corda node now disables any use of ObjectInputStream to prevent Java deserialisation within flows. This is a security fix,
|
||||
and prevents the node from deserialising arbitrary objects.
|
||||
|
||||
We've introduced the concept of platform version which is a single integer value which increments by 1 if a release changes
|
||||
any of the public APIs of the entire Corda platform. This includes the node's public APIs, the messaging protocol,
|
||||
serialisation, etc. The node exposes the platform version it's on and we envision CorDapps will use this to be able to
|
||||
run on older versions of the platform to the one they were compiled against. Platform version borrows heavily from Android's
|
||||
API Level.
|
||||
|
||||
We have revamped the DemoBench user interface. DemoBench will now also be installed as "Corda DemoBench" for both Windows
|
||||
and MacOSX. The original version was installed as just "DemoBench", and so will not be overwritten automatically by the
|
||||
new version.
|
||||
|
||||
Milestone 10
|
||||
------------
|
||||
|
||||
Special thank you to `Qian Hong <https://github.com/fracting>`_, `Marek Skocovsky <https://github.com/marekdapps>`_,
|
||||
`Karel Hajek <https://github.com/polybioz>`_, and `Jonny Chiu <https://github.com/johnnyychiu>`_ for their contributions
|
||||
to Corda in M10.
|
||||
|
||||
A new interactive **Corda Shell** has been added to the node. The shell lets developers and node administrators
|
||||
easily command the node by running flows, RPCs and SQL queries. It also provides a variety of commands to monitor
|
||||
the node. The Corda Shell is based on the popular `CRaSH project <http://www.crashub.org/>`_ and new commands can
|
||||
be easily added to the node by simply dropping Groovy or Java files into the node's ``shell-commands`` directory.
|
||||
We have many enhancements planned over time including SSH access, more commands and better tab completion.
|
||||
|
||||
The new "DemoBench" makes it easy to configure and launch local Corda nodes. It is a standalone desktop app that can be
|
||||
bundled with its own JRE and packaged as either EXE (Windows), DMG (MacOS) or RPM (Linux-based). It has the following
|
||||
features:
|
||||
|
||||
#. New nodes can be added at the click of a button. Clicking "Add node" creates a new tab that lets you edit the most
|
||||
important configuration properties of the node before launch, such as its legal name and which CorDapps will be loaded.
|
||||
#. Each tab contains a terminal emulator, attached to the pseudoterminal of the node. This lets you see console output.
|
||||
#. You can launch an Corda Explorer instance for each node at the click of a button. Credentials are handed to the Corda
|
||||
Explorer so it starts out logged in already.
|
||||
#. Some basic statistics are shown about each node, informed via the RPC connection.
|
||||
#. Another button launches a database viewer in the system browser.
|
||||
#. The configurations of all running nodes can be saved into a single ``.profile`` file that can be reloaded later.
|
||||
|
||||
Soft Locking is a new feature implemented in the vault to prevent a node constructing transactions that attempt to use the
|
||||
same input(s) simultaneously. Such transactions would result in naturally wasted effort when the notary rejects them as
|
||||
double spend attempts. Soft locks are automatically applied to coin selection (eg. cash spending) to ensure that no two
|
||||
transactions attempt to spend the same fungible states.
|
||||
|
||||
The basic Amount API has been upgraded to have support for advanced financial use cases and to better integrate with
|
||||
currency reference data.
|
||||
|
||||
We have added optional out-of-process transaction verification. Any number of external verifier processes may be attached
|
||||
to the node which can handle loadbalanced verification requests.
|
||||
|
||||
We have also delivered the long waited Kotlin 1.1 upgrade in M10! The new features in Kotlin allow us to write even more
|
||||
clean and easy to manage code, which greatly increases our productivity.
|
||||
|
||||
This release contains a large number of improvements, new features, library upgrades and bug fixes. For a full list of
|
||||
changes please see :doc:`changelog`.
|
||||
|
||||
Milestone 9
|
||||
-----------
|
||||
|
||||
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.
|
||||
|
||||
With thanks to open source contributor Thomas Schroeter for providing the BFT notary prototype, Corda can now resist
|
||||
malicious attacks by members of a distributed notary service. If your notary service cluster has seven members, two can
|
||||
become hacked or malicious simultaneously and the system continues unaffected! This work is still in development stage,
|
||||
and more features are coming in the next snapshot!
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
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!
|
||||
|
||||
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.
|
||||
|
||||
We've continued to improve error handling in flows, with information about errors being fed through to observing RPC
|
||||
clients.
|
||||
|
||||
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.
|
||||
|
||||
For a full list of changes please see :doc:`changelog`.
|
||||
|
@ -28,7 +28,18 @@ versions you are currently using are still in force.
|
||||
|
||||
We also strongly recommend cross referencing with the :doc:`changelog` to confirm changes.
|
||||
|
||||
V3.2 to v3.3
|
||||
v3.3 to v3.4
|
||||
------------
|
||||
|
||||
* Update the Corda Release version
|
||||
|
||||
The ``corda_release_version`` identifier in your project's gradle file will need changing as follows:
|
||||
|
||||
.. sourcecode:: shell
|
||||
|
||||
ext.corda_release_version = '3.4-corda'
|
||||
|
||||
v3.2 to v3.3
|
||||
------------
|
||||
|
||||
* Update the Corda Release version
|
||||
|
Loading…
x
Reference in New Issue
Block a user