DemoBench for Corda V2.0

DemoBench 是一个独立的桌面应用程序,它可以很容易地进行配置和加载本地 Corda 节点。它对于做培训、演示以及探索 Corda 是非常有用的。

DemoBench 是基于 Apache 2.0 license 的开源软件。DemoBench 的源代码可以在 Corda GitHub repo 中找到。

DemoBench 的安装与使用

运行 DemoBench

配置节点

  • 每个节点必须有一个唯一的名字,这样 network map service 才能够识别出他们。DemoBench 会建议要使用的节点名字,最近的城市以及端口号。
  • 第一个节点会运行 network map service,我们也强制该节点同时作为 notary。因此在 Services 列表中只有 notary services 是可选的。对于接下来其他的节点,你可以选择任何的 Corda 内置的 services。
  • 点击 Start node 按钮来使用你设定的配置来启动 Corda 节点。

运行节点

  • DemoBench 会为每一个新的节点启动一个终端模拟器。 View DatabaseLaunch ExplorerLaunch Web Server 按钮会是不可用的状态,直到节点完全的启动起来。DemoBench 接下来会显示一些简单关于节点的数据,比如它的现金余额(cash balance)。
  • 现在对于 DemoBench 还无法重新启动一个已经关闭的节点(比如用户在节点的 shell prompt 中输入了“bye”)。但是那个节点的数据和 logs 还是会在它的路径下边保存的。

退出 DemoBench

当你结束了 DemoBench 之后,那会自动地结束其所有节点和 explorers,然后退出。

Profiles

你可以将当前正在运行的 DemoBench 所有节点的配置信息以及 CorDapps 存储成为一个 profile,它会是一个 zip 文件,包含以下的结构:

notary/
    node.conf
    plugins/
banka/
    node.conf
    plugins/
bankb/
    node.conf
    plugins/
        example-cordapp.jar
...

当 DemoBench 重新加载这个 profile的时候, 它会关闭当前运行的所有节点,然后启动这些新的节点。所有的节点会有一个全新的数据库。注意:每个 profile 的 node.conf 文件是 JSON/HOCON 格式的,所以能够根据需要被解压并编辑。

DemoBench 将 log 文件写到以下的路径:

  • MacXSX/Linux: $HOME/demobench/demobench.log
  • Windows: %USERPROFILE%\demobench\demobench.log

Building 安装文件

Gradle 定义了一些 tasks 使用 JavaPackager 来 build DemoBench 的安装文件。在 tools/demobench 路径下有三个脚本来执行这些 tasks:

  1. package-demobench-exe.bat (Windows)
  2. package-demobench-dmg.sh (MacOS)
  3. package-demobench-rpm.sh (Fedora/Linux)

每个脚本只能在指定的平台下运行,并且期望以下指定的每个平台的安装工具也都是可用的状态:

  1. Windows: Inno Setup 5+
  2. MacOS: 打包工具应该默认已经安装好了。如果打包工具找到了一个可用的 Developer ID Application 证书并且在 keyring 上带有证书的话,DMG 的内容同样会被签名。(默认的,DemoBench的 build.gradle 期望签名秘钥的用户名是 “R3CEV”)。你可以通过生成一个 Certificate Signing Request 来创建这样的一个证书,然后要求你本地的“Apple team agent” 来将它上传到 Apple Developer portal 中。(查看详细
    注意:
    a. 请确保 /usr/bin/codesign 应用总是能够访问你的证书的签名秘钥。当使用 MacOS Keychain Access 应用进行任何改动之后,你可能需要重启你的 Mac。
    b. 你应该使用 JDK >= 8u152 在 MacOS 上来创建 DemoBench 因为这个版本能够解决当启动每个 Corda 节点的时候会在终端上打印警告信息的问题
    c. 最好使用 JetBrains JDK 来 build DMG
  3. Fedora/Linux:rpm-build packages

同时你也需要定义 JAVA_HOME 环境变量并将它指向运行 Gradle 所使用的相同的 JDK 路径。安装文件会向 tools/demobench/build/javapackage/bundles 写入内容,就像在你的机器上安装其他的应用一样。

JetBrains JDK

Mac 用户应该注意到了,build DemoBench DMG 的最好的方式是使用 JetBrains JDK,可以从 BinTray 中下载。这个 JDK 有很多有用的 GUI fixes,最值得注意的是,当使用这个 JDK 来 build 的时候,DemoBench 终端将会支持 emoji 和有色的 ANSI 进度 renderer。它也解决了在 Windows 中 HiDPI rendering 的一些问题。

这个 JDK 不包含 JavaPackager,这意味着你仍然需要将 $JAVA_HOME/lib/ant-javafx.jar 从 Oracle JDK 拷贝到你的 JetBrains JDK 的相关路径。

开发者注意

开发者如果希望每次在运行 DemoBench 的时候不想 building 一个新的安装文件的话,可以使用 Gradle 在本地安装:

$ gradlew tools:demobench:installDist
$ cd tools/demobench/build/install/demobench
$ bin/demobench

不凑巧的是,DemoBench 的 $CLASSPATH 对于 Windows shell 可能会太长了。但是你仍然可以用下边的方式运行 DemoBench:

> java -Djava.util.logging.config.class=net.corda.demobench.config.LoggingConfig -jar lib/demobench-$version.jar

然而 DemoBench 是否能够运行在一个 IDE 中,还取决于开发者是否把它所需要的所有依赖项都正确地安装在了 user.dir 系统变量里定义的正确路径下(比如当前 JVM 的工作路径):

corda/
    corda.jar
    corda-webserver.jar
explorer/
    node-explorer.jar
plugins/
    bank-of-corda.jar