This repo contains all the solutions for the practical exercises of the Corda two day training course.
This repository is divided into two parts: Java solutions, and Kotlin solutions. You may complete the training in whichever language you prefer.
- JDK 1.8 latest version
- IntelliJ latest version (2017.1 or newer)
- git
After installing the required tools, clone or download a zip of this repository, and place it in your desired location.
- From the main menu, click
open
(notimport
!) then navigate to where you placed this repository. - Click
File->Project Structure
, and set theProject SDK
to be the JDK you downloaded (by clickingnew
and nagivating to where the JDK was installed). ClickOkay
. - Next, click
import
on theImport Gradle Project
popup, leaving all options as they are. - If you do not see the popup: Navigate back to
Project Structure->Modules
, clicking the+ -> Import
button, navigate to and select the repository folder, selectGradle
from the next menu, and finally clickOkay
, again leaving all options as they are.
Now that you are all set-up, you can run the unit tests in either language. This project follows a test-based development style - the unit tests contain all the information you would need to complete this CorDapp. In this repository, the solutions have been provided for you. With the project open in IntelliJ
- Kotlin: Select
Kotlin - Unit tests
from the dropdown run configuration menu, and click the green play button. - Java: Select
Java - Unit tests
from the dropdown run configuration menu, and click the green play button.
State solution:
kotlin-source/src/main/kotlin/net/corda/training/state/IOUState.kt
Contract solution:
kotlin-source/src/main/kotlin/net/corda/training/contract/IOUContract.kotlin
Flow solutions:
- Issue
kotlin-source/src/main/kotlin/net/corda/training/flow/IOUIssueFlow.kt
- Transfer
kotlin-source/src/main/kotlin/net/corda/training/flow/IOUTransfer.kt
- Settle
kotlin-source/src/main/kotlin/net/corda/training/flow/IOUSettleFlow.kt
The code in the following files was already added for you:
kotlin-source/src/main/kotlin/net/corda/training/plugin/IOUPlugin.kt
kotlin-source/src/test/kotlin/net/corda/training/Main.kt
kotling-source/src/main/kotlin/net/corda/training/plugin/IOUPlugin.kt
kotling-source/src/main/java/kotlin/corda/training/flow/SelfIssueCashFlow.kt
State solution:
java-source/src/main/java/net/corda/training/state/IOUState.java
Contract solution:
java-source/src/main/java/net/corda/training/contract/IOUContract.java
Flow solutions:
- Issue
java-source/src/main/java/net/corda/training/flow/IOUIssueFlow.java
- Transfer
Not implemented:
java-source/src/main/java/net/corda/training/flow/IOUTransfer.java
- Settle
Not implemented:
java-source/src/main/java/net/corda/training/flow/IOUSettleFlow.java
The code in the following files was already added for you:
java-source/src/main/java/net/corda/training/plugin/IOUPlugin.java
java-source/src/test/java/net/corda/training/NodeDriver.java
java-source/src/main/java/net/corda/training/plugin/IOUPlugin.java
Not implemented:
java-source/src/main/java/net/corda/training/flow/SelfIssueCashFlow.java
To run the finished application, you have two choices for each language: from the terminal, and from IntelliJ.
- Terminal: Navigate to the root project folder and run
./gradlew kotlin-source:deployNodes
, followed by./kotlin-source/build/node/runnodes
- IntelliJ: With the project open, select
Kotlin - Node driver
from the dropdown run configuration menu, and click the green play button.
- Terminal: Navigate to the root project folder and run
./gradlew java-source:deployNodes
, followed by./java-source/build/node/runnodes
- IntelliJ: With the project open, select
Java - NodeDriver
from the dropdown run configuration menu, and click the green play button.
Once all the three nodes have started up (look for Webserver started up in XXX sec
in the terminal or IntelliJ ), you can interact
with the app via a web browser.
-
From a Node Driver configuration, look for
Starting webserver on address localhost:100XX
for the addresses. -
From the terminal: Node A:
localhost:10009
, Node B:localhost:10012
, Node C:localhost:10015
.
To access the front-end gui for each node, navigate to localhost:XXXX/web/iou/