Release notes for M5

Add a snapshot of the tech whitepaper.

Misc doc fixes. Change README to prepare for the open source release.
This commit is contained in:
Mike Hearn 2016-11-04 14:10:27 +01:00
parent 68506984a3
commit 3ae25dbff5
5 changed files with 91 additions and 132 deletions

150
README.md
View File

@ -1,124 +1,48 @@
# Introduction
# Corda
This source repository contains explorations of various design concepts the R3 DLG is exploring.
Corda is a decentralised database system in which nodes trust each other as little as possible. This reference
implementation is not yet complete or offering backwards compatibility, but should be suitable for small experiments
and exploration of the underlying ideas.
Pull requests are appreciated. You can chat to the team on our forums and on our Slack.
It runs on the JVM and is mostly written in Kotlin.
Things you need to know:
### **[Project website](https://corda.net)**
* The main code documentation is in the form of a website in the git repository. There is a copy of the site online, so
[access the website](http://docs.corda.r3cev.com) using the username 'corda' and password 'delegato' to start reading
about what's included, how to get set up, and to read a tutorial on writing smart contracts in this framework.
* The architecture documentation is on the [Architecture Working Group Wiki](https://r3-cev.atlassian.net/wiki/display/AWG/Architecture+Working+Group) site - please
refer to that for an explanation of some of the background concepts that the prototype is exploring.
### **[Documentation](https://docs.corda.net)**
* The code is a JVM project written mostly in [Kotlin](https://kotlinlang.org/), which you can think of as a simpler
version of Scala (or alternatively, a much better syntax for Java). Kotlin can be learned quickly and is designed
to be readable, so you won't need to know it very well to understand what the code is doing. If you'd like to
add new features, please read its documentation on the website.
The project is supported by R3, a financial industry consortium, which is why it
contains some code for financial use cases and why the documentation focuses on finance. The goal is to use it
to construct a global ledger, thus simplifying finance and reducing the overheads of banking. But it is run as
a typical open source project and the basic technology of a peer to peer decentralised database may be useful
for many different projects. We'd love to hear about any interesting experiments you do with it!
There is also Java code included, to demonstrate how to use the framework from a more familiar language.
# Getting started
* For bug tracking and project management we use [JIRA](https://r3-cev.atlassian.net/secure/RapidBoard.jspa?rapidView=25&projectKey=COR).
For source control we use this BitBucket repository. You should have received credentials for these
services as part of getting set up. If you don't have access, please contact Richard Brown or James Carlyle.
Corda consists of node software that takes part in a network, libraries you can use to develop apps for the platform,
a client library that lets you interact with the node via RPC, and some samples showing how it all works.
* There will be a mailing list for discussion, brainstorming etc called [r3dlg-awg](https://groups.google.com/forum/#!forum/r3dlg-awg).
To install:
1. Make sure you have Oracle JDK 8 available (OpenJDK 8 support is coming).
2. Run `./gradlew install` to download all the dependencies (including the build tools), compile the code and
install the core libraries into your local Maven repository (under `~/.m2`)
To run some demo nodes that swap cash around between themselves:
1. `./gradlew tools:explorer:runDemoNodes`
2. You can find a node now running on port 20002
To run an explorer app that lets you connect to a node and explore what it's doing, try `./gradlew tools:explorer:run`.
The explorer also lets you send and receive cash.
Now [go read the documentation](https://docs.corda.net).
# Getting involved
* [Forums](https://not.here.yet)
* [Chat](https://cordaledger.slack.com)
# License
This code is not yet released under a traditional open source license. Until it is, the following license applies:
_Copyright Distributed Ledger Group LLC. Distributed as Licensed Company IP to DLG Group Members
pursuant to the August 7, 2015 Advisory Services Agreement and subject to the Company IP License terms
set forth therein. Distributed as Non-Project IP to R3 LRC Members pursuant to their respective Member
and Services Agreements and subject to the Non-Project IP license terms. set forth therein. All other rights reserved._
# Instructions for installing prerequisite software
## JDK for Java 8
Install the Oracle JDK 8u45 or higher. It is possible that OpenJDK will also work but we have not tested with this.
## Using IntelliJ
It's a good idea to use a modern IDE. We use IntelliJ. Install the __latest version__ of IntelliJ community edition (which is free):
https://www.jetbrains.com/idea/download/
Upgrade the Kotlin plugin to the latest version (1.0-beta-2423) by clicking "Configure > Plugins" in the opening screen,
then clicking "Install JetBrains plugin", then searching for Kotlin, then hitting "Upgrade" and then "Restart".
Choose "Check out from version control" and use this git URL
https://your_username@bitbucket.org/R3-CEV/r3prototyping.git
Agree to the defaults for importing a Gradle project. Wait for it to download the dependencies.
Right click on the tests directory, click "Run -> All Tests" (note: NOT the first item in the submenu that has the gradle logo next to it).
The code should build, the unit tests should show as all green.
You can catch up with the latest code by selecting "VCS -> Update Project" in the menu.
# Troubleshooting
## IntelliJ
If on attempting to open the project, IntelliJ refuses because SDK was not selected, do the following:
Configure -> Project Defaults -> Project Structure
on that tab:
Project Settings / Project
click on New… next to the red <No SDK> symbol, and select JDK. It should then pop up and show the latest JDK it has found at something like
jdk1.8.0_xx…/Contents/Home
Also select Project language level: as 8. Click OK. Open should now work.
## Quasar
If you get an error about a missing Quasar agent, then your JVM is being invoked without a needed command line argument.
Make sure an argument like `-javaagent:lib/quasar.jar` is being passed to the invocation.
You may need/want to edit your default JUnit run config in IntelliJ to ensure that parameter is being set, along with
`-Dco.paralleluniverse.fibers.verifyInstrumentation` which is useful to catch mistakes. To do that, click the dropdown
in the toolbar and select "Edit configurations", then expand the defaults tree, then select JUnit and add the two
arguments to the VM options edit.
## "Foo is ambiguous" error during compilation
Gradle's incremental compilation isn't always reliable. Run `./gradlew clean` and then try again.
## ClassNotFoundException during Gradle quasarScan task
Your Gradle build server is hosed. Run `gradle --stop` and then try `gradle clean build`.
# Accessing Source Without an IDE
If you don't want to explore or modify the code in a local IDE, you can also just use the command line and a text editor:
git clone https://your_username@bitbucket.org/R3-CEV/r3prototyping.git
You will need to have your Bitbucket account set up already from R3. Then:
cd r3prototyping
Run the following to run the unit tests:
./gradlew test
For the first time only, this will download and configure Gradle.
Run "git pull" to upgrade
# Starting point - the Tutorial
We have prepared a comprehensive tutorial.
One you have access to the source, open the following in a browser:
r3prototyping/docs/build/html/index.html
![Screenshot](https://r3-cev.atlassian.net/wiki/download/attachments/3441064/Screen%20Shot%202015-12-10%20at%2010.43.06.png)
Apache 2.0

Binary file not shown.

View File

@ -1,26 +1,22 @@
Welcome to the Corda repository!
================================
Welcome to the Corda!
=====================
.. warning:: This build of the docs is from the *master branch*, not a milestone release. It may not reflect the
current state of the code.
This documentation describes Corda, a proposed architecture for distributed ledgers, the vision for which is outlined in the `Corda Introductory Whitepaper`_.
This is the developer guide for Corda, a proposed architecture for distributed ledgers. Here are the sources
of documentation you may find useful, from highest level to lowest:
.. _`Corda Introductory Whitepaper`: _static/corda-introductory-whitepaper.pdf
1. The `Introductory white paper`_ describes the motivating vision and background of the project. It is the kind
of document your boss should read. It describes why the project exists and briefly compares it to alternative
systems on the market.
2. This user guide. It describes *how* to use the system to write apps. It assumes you already have read the
relevant sections of the technology white paper and now wish to learn how to use it.
3. The `API docs`_.
The goal of this prototype is to explore fundamentally better designs for distributed ledgers than what presently exists
on the market, tailor made for the needs of the financial industry. We are attempting to prove or disprove the
following hypothesis:
The combination of
* An upgraded state transition model
* Industry standard, production quality virtual machines and languages
* An advanced orchestration framework
* Limited data propagation
* Conflict resolution without proof of work or blocks
is sufficiently powerful to justify the creation of a new platform implementation.
.. _`Introductory white paper`: _static/corda-introductory-whitepaper.pdf
.. _`Technical white paper`: _static/corda-technical-whitepaper.pdf
.. _`API docs`: api/index.html
Read on to learn:
@ -60,6 +56,7 @@ Read on to learn:
contract-catalogue
contract-irs
initialmarginagreement
.. toctree::
:maxdepth: 2

View File

@ -1,5 +1,5 @@
Initial Margin Agreement Demo
=============================
Initial Margin Agreements
=========================
This app is a demonstration of how Corda can be used for the real world requirement of initial margin calculation and
agreement; featuring the integration of complex and industry proven third party libraries into Corda nodes.

View File

@ -3,6 +3,44 @@ Release notes
Here are brief summaries of what's changed between each snapshot release.
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
-----------