Corda 使用的是行业标准的工具:
- Oracle JDK 8 JVM - 最低支持版本 8u131
- IntelliJ IDEA - 支持版本 2017.1, 2017.2 和 2017.3
- Git
我们也使用 Gradle 和 Kotlin,但是你不需要单独安装他们。一个独立的 Gradle wrapper 会被提供,而且它会下载正确版本的 Kotlin。
请注意:
- Corda 是在 JVM 中运行的。除了 Oracle JDK8,JVM 的实现是不支持的。但是如果你选择使用 OpenJDK,那么你需要安装 OpenJFX
- Corda 应用程序(CorDapp)可以使用任何目标是 JVM 的编程语言编写。但是 Corda 本身以及大部分的示例都是用 Kotlin 编写的。Kotlin 是官方的 Android 开发语言。如果你不熟悉 Kotlin,可以看看官方的快速开始文档,以及一些相关的文章。
使用这些推荐的软件开发 CorDapp可以最小化产生问题的几率,也能够让他人提供支持的时候更加容易。
下边的指导内容可以告诉你如何配置一个 Corda 开发环境和如何运行一个基本的 CorDapp。如果你遇到任何问题,可以查看 Troubleshooting 页面,或者在 Slack, Stack Overflow 或 论坛中提问。
- 访问 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
- 到 “Java SE Development Kit 8uXXX”(XXX 表示最新的版本号)
- 选择 “Accept License Agreement”
- 点击 jdk-8uXXX-windows-x64.exe 的下载链接(XXX 表示最新的版本号)
- 下载并运行Java 的安装文件(使用默认设置)
- 打开一个新的命令窗口然后运行
java -version
来测试一下 Java 是否正确安装了
val timeWindow: TimeWindow? = tx.timeWindow
for ((inputs, outputs, _) in groups) {
when (command.value) {
is Commands.Move -> {
val input = inputs.single()
requireThat {
"the transaction is signed by the owner of the CP" using (input.owner.owningKey in command.signers)
"the state is propagated" using (outputs.size == 1)
// Don't need to check anything else, as if outputs.size == 1 then the output is equal to
// the input ignoring the owner field due to the grouping.
}
}
is Commands.Redeem -> {
// Redemption of the paper requires movement of on-ledger cash.
val input = inputs.single()
val received = tx.outputs.map { it.data }.sumCashBy(input.owner)
val time = timeWindow?.fromTime ?: throw IllegalArgumentException("Redemptions must be timestamped")
requireThat {
"the paper must have matured" using (time >= input.maturityDate)
"the received amount equals the face value" using (received == input.faceValue)
"the paper must be destroyed" using outputs.isEmpty()
"the transaction is signed by the owner of the CP" using (input.owner.owningKey in command.signers)
}
}
is Commands.Issue -> {
val output = outputs.single()
val time = timeWindow?.untilTime ?: throw IllegalArgumentException("Issuances must be timestamped")
requireThat {
// Don't allow people to issue commercial paper under other entities identities.
"output states are issued by a command signer" using (output.issuance.party.owningKey in command.signers)
"output values sum to more than the inputs" using (output.faceValue.quantity > 0)
"the maturity date is not in the past" using (time < output.maturityDate)
// Don't allow an existing CP state to be replaced by this issuance.
"can't reissue an existing state" using inputs.isEmpty()
}
}
else -> throw IllegalArgumentException("Unrecognised command")
}
}
- 访问 https://git-scm.com/download/win
- 点击下载链接 “64-bit Git for Windows Setup”
- 下载并运行 Git 安装文件(使用默认设置)
- 打开一个新的命令窗口然后运行 git --version 来测试一下 Git 是否正确安装了
- 访问 https://www.jetbrains.com/idea/download/download-thanks.html?code=IIC
- 下载并运行 InteliJ Community Edition 安装文件(使用默认设置)
- 打开一个命令窗口
- 使用下边的命令克隆 CorDapp 的示例代码 git clone https://github.com/corda/cordapp-example
- 通过运行 cd cordapp-example 命令进入 cordapp-example 文件夹下
- 从 cordapp-example 文件夹下,运行 gradlew deployNodes 来部署节点
- 运行 call kotlin-source/build/nodes/runnodes.bat 来开始运行节点
- 等待所有的命令窗口中都显示“Webserver started up in XX.X sec”或者“Node for “NodeC” started up and registered in XX.XX sec”
- 通过访问一下的前端页面来测试 CorDapp 是否成功运行起来了http://localhost:10007/web/example/
- 打开 IntelliJ Community Edition
- 在初始界面,点击“Open”(不要点击“Import Project”)并选择 cordapp-example 文件夹
- 项目打开后,点击“File > Project Structure”。在“Project SDK:”下,通过点击“New...”来设置项目的 SDK,然后选择 C:Program FilesJavajdk1.8.0_XXX(XXX 是最新的版本号)。点击“OK”。
- 点击“View > Tool Windows > Event Log”,然后点击“Import Gradle project”,然后点击“OK”。等待,在“Gradle Project Data To Import”窗口出现的时候,再次点击“OK”。
- 等待 indexing 完成(在 IntelliJ 窗口的右下方会显示一个进度条,直到 indexing 结束)
- 在屏幕的右上角,到绿色的“play”箭头的左侧,你应该会看到一个下拉列表。在里表中,选择“Run Example Cordapp - Kotlin”然后点击绿色的“play”箭头。
- 等待至所有的命令窗口显示“Webserver started up in XX.X sec”
- 通过访问一下的前端页面来测试 CorDapp 是否成功运行起来了 http://localhost:10007/web/example/
- 打开“System Preferences > Java”
- 在 Java 的控制面板中,如果有可用的更新的话,点击 “Update Now”
- 在 “Software Update” 窗口,点击“Install Update”。如果需要,在弹出输入密码的提示窗的时候,输入你的密码并点击“Install Helper”。
- 等待一个弹出的窗口提示你已经成功安装了更新,点击“Close”
- 打开一个新的命令窗口然后运行 java -version 来测试一下 Java 是否正确安装了
- 访问 https://www.jetbrains.com/idea/download/download-thanks.html?code=IIC
- 下载并运行 InteliJ Community Edition 安装文件(使用默认设置)
- 打开一个命令窗口
- 使用下边的命令克隆 CorDapp 的示例代码 git clone https://github.com/corda/cordapp-example
- 通过运行 cd cordapp-example 命令进入 cordapp-example 文件夹下
- 从 cordapp-example 文件夹下,运行 gradlew deployNodes 来部署节点
- 运行 call kotlin-source/build/nodes/runnodes.bat 来开始运行节点
- 等待所有的命令窗口中都显示“Webserver started up in XX.X sec”或者“Node for “NodeC” started up and registered in XX.XX sec”
- 通过访问一下的前端页面来测试 CorDapp 是否成功运行起来了 http://localhost:10007/web/example/
- 打开 IntelliJ Community Edition
- 在初始界面,点击“Open”(不要点击“Import Project”)并选择 cordapp-example 文件夹
- 项目打开后,点击“File > Project Structure”。在“Project SDK:”下,通过点击“New...”来设置项目的 SDK,然后选择 /Library/Java/JavaVirtualMachines/jdk1.8.0_XXX(XXX 是最新的版本号)。点击“OK”。
- 点击“View > Tool Windows > Event Log”,然后点击“Import Gradle project”,然后点击“OK”。等待,在“Gradle Project Data To Import”窗口出现的时候,再次点击“OK”。
- 等待 indexing 完成(在 IntelliJ 窗口的右下方会显示一个进度条,直到 indexing 结束)
- 在屏幕的右上角,到绿色的“play”箭头的左侧,你应该会看到一个下拉列表。在里表中,选择“Run Example Cordapp - Kotlin”然后点击绿色的“play”箭头。
- 等待至所有的命令窗口显示“Webserver started up in XX.X sec”
- 通过访问一下的前端页面来测试 CorDapp 是否成功运行起来了 http://localhost:10007/web/example/
Corda 平台的源代码链接:https://github.com/corda/corda.git
Java 和 Kotlin 版本的 CorDapp 模板代码可以作为你的应用的基础代码
https://github.com/corda/cordapp-template-java.git
https://github.com/corda/cordapp-template-kotlin.git
也可以通过查看其他的示例代码来研究更多的 Corda 基本概念
https://www.corda.net/samples/
可以通过运行下边的命令将代码克隆到本地
git clone [repo URL]