mirror of
https://github.com/corda/corda.git
synced 2024-12-18 20:47:57 +00:00
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:
parent
68506984a3
commit
3ae25dbff5
148
README.md
148
README.md
@ -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.
|
||||
|
||||
Things you need to know:
|
||||
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.
|
||||
|
||||
* 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.
|
||||
### **[Project website](https://corda.net)**
|
||||
|
||||
* 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
|
BIN
docs/source/_static/corda-technical-whitepaper.pdf
Normal file
BIN
docs/source/_static/corda-technical-whitepaper.pdf
Normal file
Binary file not shown.
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
-----------
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user