0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Cordaのサンプルを動かしてみる〜bank-of-corda-demo編〜

Posted at

はじめに

どーも、のぶこふです。

今回は、公式で提供されているサンプルを動かしてみようと思います。

ダウンロード

▼サンプルも色々あるので、特定のディレクトリのみダウンロードします。
※参考:「GitHubから特定のディレクトリだけを直接ダウンロード」
https://qiita.com/raucha/items/1219327df8a9ded494df

Terminal_Githubから特定のディレクトリのみダウンロードする
$ svn export https://github.com/corda/corda/tags/release/4.0/samples/bank-of-corda-demo/

▼ディレクトリ移動

Terminal_ディレクトリ移動
$ cd bank-of-corda-demo/

▼設定ファイルの作成

Terminal_設定ファイルの作成
$ ./gradlew samples:bank-of-corda-demo:deployNodes

-bash: ./gradlew: No such file or directory

-bash: ./gradlew: No such file or directory
…ファッ?!

▼闇に帰す

Terminal_ダウンロードしたディレクトリを抹殺・・・ごめんなさい
$ cd ../ && rm -rf ./bank-of-corda-demo

改めてダウンロード

▼今度は全部ダウンロードします

Terminal_すべてダウンロード
$ git clone https://github.com/corda/corda.git

起動

▼設定ファイルの作成

Terminal_設定ファイルの作成
$ ./gradlew samples:bank-of-corda-demo:deployNodes

○おそらく、そこそこ時間がかかります。(BUILD SUCCESSFUL in 5m 43s

▼ノードの起動

Terminal_ノードを起動します。タブが5つ開くので待機(1分程度)。
$ ./samples/bank-of-corda-demo/build/nodes/runnodes

▼キャッシュ発行リクエストを実行1

Terminal_キャッシュ発行リクエストを実行します。
$ ./gradlew samples:bank-of-corda-demo:runRPCCashIssue

▼別のキャッシュ発行リクエストを実行1

Terminal_別のキャッシュ発行リクエストを実行します。
$ ./gradlew samples:bank-of-corda-demo:runWebCashIssue

▼Bank of Cordaノードの稼働確認
http://localhost:10007/api/bank/date

image.png

▼アプリ起動

$ ./gradlew tools:explorer:run

上記を実行すると、下記アプリが起動する
image.png

▼ログインする(Bank of Corda node)

Bank of Corda node Big Corporation node
Host localhost localhost
Port 10006 10009
Username bankUser bigCorpUser
Password test test

image.png
image.png

○アプリの詳細は、下記を参考
https://docs.corda.net/node-explorer.html

○一回目はうまく起動できたのに、二回目以降はログイン処理後ずっと起動失敗してる:thinking:

Terminal_キドウ二シッパイシテルヨー
$ ./gradlew tools:explorer:run

> Task :tools:explorer:run
[INFO ] 16:55:26,655 [JavaFX Application Thread] (ReconnectingCordaRPCOps.kt:188) internal.ReconnectingCordaRPCOps.establishConnectionWithRetry - Connecting to: [localhost:10009]
QUASAR WARNING: Quasar Java Agent isn't running. If you're using another instrumentation method you can ignore this message; otherwise, please refer to the Getting Started section in the Quasar documentation.
[INFO ] 16:55:28,152 [JavaFX Application Thread] (InternalUtils.kt:204) internal.RPCClient.logElapsedTime - Failed Startup took 507 msec
・・・

→デモの章の頭(▼設定ファイルの作成)から実施したら起動できた。

アプリデモ

UTXO方式をとっているので、Input→Outputの流れが普通の算数とはちょい違う。
500USDを持っているとしても、「500USD」なのか「250USD+250USD」なのか「12.3USD+456.7USD+8.9USD+22.1USD」なのかで意味合いは変わってくる。
詳しくは「UTXO」で検索してください(丸投げ)

処理は体感早め。

画面

左側のメニューから画面を切り替えられます。


Dashboard

・その名の通り、ダッシュボード。
 ・Transactions:押下するとTransactionsタブに遷移する
 ・Treasury:押下するとCashタブに遷移する
image.png


Transactions

・トランザクションの一覧
image.png
▼「+」を押下すると、詳細が表示されます
image.png


Cash

・トランザクションの作成
image.png
▼「+ New Transaction」押下でモーダルが立ち上がり、作成するトランザクションの詳細を入力します
image.png

Transaction Type 説明
Issue 発行
Pay 支払い
Exit 削除?

Exitの用途がいまいちわからない。
公式ドキュメントを見ると、Exiting(Destroying)と書いてあるので、ですとろいするみたいです。


Network

・各ノードの(地理的な)場所が表示
image.png


Settings

・設定
▼右上の「Edit」のチェックボックスを外すと、編集が行えるようになります
image.png


▼ターミナルで別タブを新しく開き、アプリ起動(./gradlew tools:explorer:run)することで、もう一方のユーザでログインすることも可能です。
image.png

トランザクションの作成

ということで、「BankOfCorda」でトランザクションを作成してみます。

発行(Issue)

▼「Cashタブ」>「+ New Transaction」>「Transaction Type:Issue」
image.png
▼「BigCorpration」へ「1000USD」発行
image.png
○無事終了するとメッセージが表示されます
image.png
○「BigCorporation」側のCashタブを見ると、1000USD発行(保持)されているのが確認できます。反対に、「BankOfCorda」では、自身のCashは保持していないので、表示されていません。
image.png

▼Transactionsタブへ遷移します
image.png
▼「+」を押下すると、詳細が開きます
image.png

画面左側が「BankOfCorda」、右側が「BigCorporation」です。
流れとしては「BankOfCorda」が1000USDを発行(Issue)して、「BigCorporation」へ譲渡(Move)しているのが、今回の処理の流れです。

支払い(Pay)

「BankOfCorda」はCashを保持していないので、「BigCorporation」で実行します。
※「BigCorporation」は権限の関係上「Pay」しか実行できません
▼「Cashタブ」>「+ New Transaction」>「Transaction Type:Pay」
image.png
▼「BankOfCorda」へ「750USD」支払い
image.png
○無事終了するとメッセージが表示されます。画面左側のTransactionsタブを見てもわかる通り、トランザクションが増えています。
image.png
○Transactionsタブを見てみます。
「BigCorporation」の「1000USD」から「750USD」を「BankOfCorda」へ支払い(Pay=Output)をして、おつりとして「250USD」を「BigCorporation」へ支払い(Pay=Output)しています。
簡単ですが、これがUTXOの特徴になります。
image.png

???(Exit)

発行したCashを、闇に帰すコマンドです。
用途としては、「発行したCashを別システム等のポイントに変換」などでしょうか。あまりユースケースが思いついていません。
「BankOfCorda」で実行します。
▼「Cashタブ」>「+ New Transaction」>「Transaction Type:Exit」
image.png
▼「BankOfCorda」から「100USD」を焼却
image.png
○無事終了するとメッセージが表示されます。画面左側のCashタブを見てもわかる通り、Cashの総額が減っています(750USD→650USD)。
image.png
○Transactionsタブでは、「BankOfCorda」側のみ「Exit」のトランザクションが増えています。
image.png

おまけ(UTXO)

自分自身へ支払い(Pay)をすることで、Cashを分割することができます。
▼「BankOfCorda」から「BankOfCorda」へ支払い(Pay)をします。
image.png
○Cashの内訳を見てみると「150USD」と「500USD」に分けられていることがわかります。
image.png
○Transactionsタブでも同様に、分割していることがわかります。
image.png

おわりに

今回は、公式のサンプルを動かしてみました。
ほぼほぼサンプルアプリの動作説明になってしまっているが・・・
GUIで操作ができると、視覚的にわかりやすいですし、操作も直感的で、とても良いですね。

Corda自身が金融系に特化しているとのことなので、今回のようにお金のやり取りするユースケースがメインとなるのでしょうね。
ユースケースも考えないとなーーー。

今回はこれで以上です。
ありがとうございました。

  1. アプリの起動には不要です。 2

0
3
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?