mirror of
https://github.com/corda/corda.git
synced 2025-04-29 15:30:10 +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
|
### **[Project website](https://corda.net)**
|
||||||
[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
|
### **[Documentation](https://docs.corda.net)**
|
||||||
refer to that for an explanation of some of the background concepts that the prototype is exploring.
|
|
||||||
|
|
||||||
* The code is a JVM project written mostly in [Kotlin](https://kotlinlang.org/), which you can think of as a simpler
|
The project is supported by R3, a financial industry consortium, which is why it
|
||||||
version of Scala (or alternatively, a much better syntax for Java). Kotlin can be learned quickly and is designed
|
contains some code for financial use cases and why the documentation focuses on finance. The goal is to use it
|
||||||
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
|
to construct a global ledger, thus simplifying finance and reducing the overheads of banking. But it is run as
|
||||||
add new features, please read its documentation on the website.
|
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).
|
Corda consists of node software that takes part in a network, libraries you can use to develop apps for the platform,
|
||||||
For source control we use this BitBucket repository. You should have received credentials for these
|
a client library that lets you interact with the node via RPC, and some samples showing how it all works.
|
||||||
services as part of getting set up. If you don't have access, please contact Richard Brown or James Carlyle.
|
|
||||||
|
|
||||||
* 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
|
# License
|
||||||
|
|
||||||
This code is not yet released under a traditional open source license. Until it is, the following license applies:
|
Apache 2.0
|
||||||
|
|
||||||
_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
|
|
||||||
|
|
||||||

|
|
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
|
.. 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.
|
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
|
.. _`Introductory white paper`: _static/corda-introductory-whitepaper.pdf
|
||||||
on the market, tailor made for the needs of the financial industry. We are attempting to prove or disprove the
|
.. _`Technical white paper`: _static/corda-technical-whitepaper.pdf
|
||||||
following hypothesis:
|
.. _`API docs`: api/index.html
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
Read on to learn:
|
Read on to learn:
|
||||||
|
|
||||||
@ -60,6 +56,7 @@ Read on to learn:
|
|||||||
|
|
||||||
contract-catalogue
|
contract-catalogue
|
||||||
contract-irs
|
contract-irs
|
||||||
|
initialmarginagreement
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 2
|
: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
|
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.
|
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.
|
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
|
Milestone 4
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user