企業向けブロックチェーン基盤「Corda」を触ってみたい初学者に向けたクイックスタートガイドです。
- はじめに
- 参考ドキュメント:R3 公式Doc - CorDapp Template
- 本記事で導入する環境
- 手順の全体像
- A. Corda5環境の構築手順
- B. CorDappの操作手順
- A. Corda5環境の構築手順
- A-1. Javaのインストール
- A-2. サンプルコードのダウンロード
- A-3. Corda Templateに必要なツール2点
- a. Docker Desktopのインストール
- b. Corda-CLIのインストール
- A-4. InteliJの導入
- a. インストール
- b. 各種設定
- B. CorDappの操作手順
- B-1. Corda起動とCorDapp導入
- B-3. 仮想ノードの情報を取得
- B-4. Swaggerにアクセス
- B-5. REST APIでFlowを実行
- さいごに
- 付録:よくある質問集
2024年「ブロックチェーンビジネス・アドベントカレンダー企画」7日目の記事です。 関連企業の皆様にも記事を書いていただく予定ですので、是非お立ち寄りください!
はじめに
本記事では「Corda上の分散型アプリケーション(CorDapp)を動かせること」をゴールとし、Cordaの環境構築とアプリ操作の手順をまとめました。
試しにCordaを触ってみたいという方は、是非チャレンジしてみてください!! 非エンジニアの方でも、動かせるようになるはずです!!
参考ドキュメント:R3 公式Doc - CorDapp Template
本記事で導入する環境
ソフトウェア | バージョン |
Corda | Open Source 5.2.0 |
OS | - Mac OS (intel and ARM)
- Windows 10/11
(Linuxも対応していますが本記事では割愛) |
Java | Java Azul Zulu JDK 17.0.11 |
IntelliJ | v2021.3.3 Community Edition |
Docker | Docker Desktop v4.25.0 |
Corda-CLI | ver.5.2(事前にJava 17の導入が必要) |
手順の全体像
Cordaの2024年時点の最新版であるver.5.2では、手軽にCordaの動作を確認できる「CorDapp Template」というツールが備わっています。
本来はAWSなどのクラウド上で様々なコンポーネント(Kafka, k8s等)を構築していく必要がありますが、Corda Templateを用いるとローカルPCなどでCorda環境を簡易的にデプロイでき、開発やテストが効率よく行えるようになっています。
本記事では、Corda Templateを前提としたA.Corda5環境構築手順およびB.CorDappの操作手順をまとめます。OSによっては挙動が異なる可能性がありますので、本記事の手順で問題や不明点があれば、弊社までお問い合わせください。
A. Corda5環境の構築手順
- Javaのインストール
- サンプルコードのダウンロード
- Corda Templateに必要なツール2点
- Docker Desktopのインストール
- Corda-CLIのインストール
- InteliJの導入
- インストール
- 各種設定
B. CorDappの操作手順
- Corda起動とCorDapp導入
- 仮想ノードの情報を取得
- Swaggerにアクセス
- REST APIでFlowを実行
A. Corda5環境の構築手順
青文字が実践していただく手順を示しています。
A-1. Javaのインストール
Corda5の実行環境はJava17です。今回はAzulの提供しているものを使います。
- こちらのページから、お使いのOSに合わせて、「バージョンが17.0.11以上のJava17(LTS)」をダウンロードし、インストーラーの指示に沿ってインストール
- OSに合わせて、環境変数JAVA_HOMEを設定します。
A-2. サンプルコードのダウンロード
本記事では、R3のGitHub上にサンプルコードを使います。kotolin版のサンプルコードはこちら。
※「release-V5.2」を使用してください。執筆時点ではこのブランチがデフォルトです。
- Macの場合はターミナル(Windowの場合はpowerShell)を開き、ローカルPCの任意のディレクトリにダウンロード
git clone https://github.com/corda/cordapp-template-java.git <任意ディレクトリパス>
A-3. Corda Templateに必要なツール2点
a. Docker Desktopのインストール
Docker DesktopはCorda内で立ち上がるコンテナの管理ツールとして自動的に使われます。
- 「バージョン4.25.0のDocker Desktop」のダウンロードリンクは以下の通り
- For Mac OS → Docker Desktop v4.25.0 for Mac OS のダウンロードリンク
- For Windows → Docker Desktop v4.25.0 for windows のダウンロードリンク
- ダウンロードしたら、インストラーの指示に従ってインストール
- 詳細な導入方法については、公式ページを確認
- (Dockerアカウントが必要なため、新規の方はDockerアカウントを準備)
b. Corda-CLIのインストール
Corda-CLIはCordaに関する様々なタスクをサポートするコマンドラインツールです。Corda TemplateもこのCLIに含まれています。(参考:R3公式Doc)
- (手順に進む前に、Java17がインストール済みであることを確認)
- こちらのページから「corda-cli-installer-5.2.0.0.zip」をダウンロードして任意の場所に配置
A-4. InteliJの導入
CordaはJavaベースであることやGradle(自動ビルドツール)を用いていることなどから、Cordaの開発では「InteliJ」を用いることを推奨しています。
a. インストール
- こちらのページから、OSに合わせた「IntelliJ IDEA Community Edition 2021.3.3」をダウンロードし、インストーラーの指示に沿ってインストール
b. 各種設定
次に、InteliJを開き初期設定を行います。
- インストールしたInteliJのアプリケーションを開く
- 「Open」を押し、‣ にて取得した「cordapp-template-java(kotolin)」フォルダを指定
- ※ Mac OSでうまくいかない場合は、 フォルダ内の「build.gradle」を選択
- ※「Trust and Open Project <ファイル名>?」と警告が出た場合は「Trust Project」を選択
- サンプルコードを開くと自動的にプロジェクトのImportが開始するのでしばらく待機
- 「Found invalid Gradle JVM configuration」と表示された場合は次手順の初期設定①を実施し、再起動することで解消されます
- 初期設定①:プロジェクトで使用するJDKの設定
- File > ProjectStructure > Project > ProjectSDK にてJDK(Java17)を選択し、Apply
- 初期設定②プロジェクトで使用するビルドツールの設定
- File > Setting > Build,Excution,Deployment > Build Tool > Gradleにて、設定画面のGradle JVMの項目が、初期設定①で指定したJDKと同じものを選択
- 初期設定①②が完了後、File > Invalid Caches > Invalidate and Restartを実行しInteliJを再起動
環境構築手順は以上です。お疲れ様でした。
B. CorDappの操作手順
青文字が実践していただく手順を示しています。
B-1. Corda起動とCorDapp導入
- InteliJで右側のGradle(象のアイコン)を押しメニューを展開
- Corda起動:corda-runtime-plugin-local-enviroment > startCordaを押す
注意1:起動する前に、Docker Desktopが稼働状態であることを確認してください。 注意2:Mac OSの場合、事前にAirplay Receiver(Macの機能)のオフにして、5005ポートを手動に解放する必要があります。詳細はこちら
- Cordaが起動が完了するまでしばらく待機
- CorDapp導入:corda-runtime-plugin-network > vNodeSetupを押す
Corda5基盤の停止したいときは、startCorda
の下にあるstopCorda
を押すと一時停止します。さらにstartCorda
を押すと稼働が再開します。
また基盤のリソースを含めて削除する時は、StopCordaAndCleanWorkspace
を押します。さらにstartCorda
を押すと環境が再構築されます。
B-3. 仮想ノードの情報を取得
次に、CorDappを操作するために必要な仮想ノードの情報を取得します。
Corda5では1つのCorda基盤の上で複数のノードを動かす「仮想ノード」という仕組みがあり、サンプルコードではデフォルトでAlice, Bob, Charlie, Daveの4ノードが準備されています。 ここでは、CorDappを操作する上で「複数の仮想ノードのうち誰がアプリを起動する側なのか」を明示的に扱うために、仮想ノードの情報をあらかじめ取得しておきます
- ノード情報取得:corda-runtime-plugin-queries > listVNodes を押す
- ログ内の赤枠のノード情報をメモしておく
B-4. Swaggerにアクセス
Corda5では、運用の操作やアプリの操作など含めほぼ全ての操作がREST APIベースに統一されており、Swaggerというフレームワーク上で操作できます。
- Webブラウザからローカルホストの8888ポートにアクセス
- https://localhost:8888/api/v5_2/swagger
- Swaggerにアクセスできたら「Authorize」を開き、ID:
admin
, PW:admin
で承認する。
B-5. REST APIでFlowを実行
企業同士による送金、売買、承認、また商品の追跡など一つ一つの機能がFlowであり、これらによってCorDappが構成されています。ここでは、実行可能なFlow一覧を確認して、試しにFlowを一つ実行してみます。
- 特定のノードが操作可能なFlow一覧を確認(GET)
- Swagger > Flow Info API > GET: /flowclass/{holdingidentityshorthash}に遷移
- 「Try it out」を押すと、パラメータが入力可能になる
- B-3.でメモした特定のノードのholdingidentityshorthashを入力
- 例:Aliceの仮想ノードのショートハッシュ:
9E63A920455E
- Executeボタンを押す
- Server responseを確認
- AliceからBobへチャットを送るFlowをAlice側から実行(POST)
- Swagger > Flow Management API > POST: /flowclass/{holdingidentityshorthash}に遷移
- 「Try it out」を押すと、パラメータが入力可能になる
- Aliceの仮想ノードのショートハッシュをパラメータに入力
- requestBodyを以下のように入力
- Executeボタンを押す
- Server responseを確認
{
"clientRequestId": "create-1",
"flowClassName": "com.r3.developers.cordapptemplate.utxoexample.workflows.CreateNewChatFlow",
"requestBody": {
"chatName":"Chat with Bob",
"otherMember":"CN=Bob, OU=Test Dept, O=R3, L=London, C=GB",
"message": "Hello Bob"
}
}
サンプルコードのREADMEには、このサンプルチャットアプリの使用例が記載されていますので、アプリ内でチャットを取得したり返事をする操作も余裕があれば色々試してみましょう。
また、こちらにはより多くのサンプルCorDappを集めたリポジトリもあり、ユースケース適用例やCorda実装のヒントが多く含まれています。
CorDapp操作手順は以上です。お疲れ様でした。
さいごに
クイックスタートガイドとしてCorda5構築手順を解説しましたが、無事、起動できましたでしょうか。企業向けブロックチェーンがどのようなものなのか、実際に立ち上げてみて感触を確かめていただけると幸いです。
次回は、今回立ち上げたCorda基盤をベースに、ローコードツールを用いた簡易的なフロントエンドの実装を解説していきます。(Cordaはあまり関係ないですが・・)
UIのあるCorDappを操作することで、ノード同士がどのようなやり取りを行なっているのかをより実感を持って確かめられるようになっています。
付録に「よくある質問集」も乗せておりますので、何かお困りの場合はご一読ください。
次のフロントエンド実装編の記事はこちら
<ご質問・ご要望の例>
- Corda Portalの記事について質問したい
- ブロックチェーンを活用した新規事業を相談したい
- 企業でのブロックチェーン活用方法を教えて欲しい 等々
SBI R3 Japan ビジネス推進部 🐾
投信PdM/不動産PdM/Cordaトレーニング/Blockchain Workshop運営など
シュナとスマートホームが好き
付録:よくある質問集
本記事の手順で問題や不明点があれば、弊社までお問い合わせください。
以下に追記する形でFAQを更新していきます。
Q1. InteliJのコンソールのログが文字化けします。 A. 以下の日本語化設定をしてみてください。(参考URL) ①Help > Edit Custom VM Optionsを開く ②以下内容を追記して、InteliJを再起動
-Dfile.encoding=UTF-8
Q2. M1 Macなのですが、処理がかなり重い気がします。 A. 以下の設定をしてみてください。(参考URL) ①Help > Edit Custom VM Optionsを開く ②以下2項目を追加して、InteliJを再起動
-Dsun.java2d.opengl=TRUE
-Dsun.java2d.opengl.fbobject=FALSE
Q3. PCのスペックが足りていない気がします。 A. Corda Templateにスペック要件は特にありませんが、参考までに本記事で検証したPCのスペックを記載します。
Windows
デバイス名 SR19-006
プロセッサ Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz 1.80 GHz
実装 RAM 8.00 GB
OS Windows 11
システム種類 64 ビット オペレーティング システム、x64 ベース プロセッサ
Mac
デバイス名 Mac Book Air
チップ Apple M1
メモリ 16 GB
macOS Sonoma 14.6.1
Q4. Windowsで、「stopCorda」を押すと以下のエラーが出ます。
Failed to delete C:\Users\imoto\corda5\Cluster02-PoC03-main\workspace\CordaPIDCache.dat, please remove before starting Corda again.
A. windowsで稀に発生するエラーです。StopCordaAndCleanWorkspace
→startCorda
の順で再構築を何度か繰り返しお試しください。