Corda is an open source blockchain project, designed for business from the start. Only Corda allows you to build interoperable blockchain networks that transact in strict privacy. Corda's smart contract technology allows businesses to transact directly, with value.
Go to file
2016-09-20 18:42:47 +01:00
.idea Update modules.xml to reflect rename of network explorer to simulator 2016-09-20 17:14:45 +01:00
buildSrc build: Fix CanonicalizerPlugin dependencies 2016-08-26 12:31:09 +01:00
client client: Add example code to ObservableUtilities 2016-09-20 10:23:46 +01:00
config Simplify the FullNodeConfiguration now that an explicit identity for the NetworkMapService isn't a problem. 2016-09-07 15:35:50 +01:00
contracts Removed session IDs from the send and receive methods of ProtocolLogic and are now partially managed by HandshakeMessage 2016-09-14 15:26:55 +01:00
core Switched the roles of Instigator and Acceptor in the auto-offer protocol so that they're correctly used according to the classes they inherit 2016-09-20 18:42:47 +01:00
docs client certificate signing utility 2016-09-20 10:51:09 +01:00
experimental Universal: completed Cap unit test, full life cycle 2016-09-19 00:06:42 +02:00
explorer explorer: Add small comment about i18n 2016-09-20 10:43:22 +01:00
gradle/wrapper Minor: bump Gradle to 2.10 2016-01-22 12:54:24 +01:00
lib Upgrade Quasar to 0.7.6 and fix an exception handling bug in SMM that it revealed (if an exception was thrown immediately on protocol startup we let it leak instead of capturing it in the future. 2016-08-17 14:43:45 +01:00
network-simulator client certificate signing utility 2016-09-20 10:51:09 +01:00
node Merged in aslemmer-node-explorer (pull request #311) 2016-09-20 12:02:09 +01:00
scripts Add a client library that provides an RPC mechanism for talking to the Corda node. 2016-09-16 10:13:21 +01:00
src Switched the roles of Instigator and Acceptor in the auto-offer protocol so that they're correctly used according to the classes they inherit 2016-09-20 18:42:47 +01:00
test-utils client certificate signing utility 2016-09-20 10:51:09 +01:00
.gitignore .gitignore: explorer/build 2016-09-19 15:05:22 +01:00
build.gradle Ensure integration tests in modules are in separate configurations and not directly called from build or installDist. 2016-09-08 15:28:04 +01:00
gradle.properties Move contracts base files to namespace to make api aspect clearer in includes. 2016-05-14 13:47:07 +01:00
gradlew Initial import 2015-11-03 17:54:17 +01:00
gradlew.bat Initial import 2015-11-03 17:54:17 +01:00
README.md In README.md instruct users to grab latest version of IntelliJ. 2016-09-05 10:45:16 +01:00
settings.gradle client certificate signing utility 2016-09-20 10:51:09 +01:00

Introduction

This source repository contains explorations of various design concepts the R3 DLG is exploring.

Things you need to know:

  • 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 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 site - please 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, 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.

    There is also Java code included, to demonstrate how to use the framework from a more familiar language.

  • For bug tracking and project management we use JIRA. 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.

  • There will be a mailing list for discussion, brainstorming etc called r3dlg-awg.

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 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