Cordaとは?
R3社が開発した分散台帳プラットフォーム。「ブロックチェーンプラットフォーム」と紹介されることも多いが、厳密にはブロックチェーンではないらしい。
↓R3社のHP。
https://www.r3.com/platform/
投稿の動機
UbuntuにCordaの開発環境を構築しようとしたが、日本語のインストール手順が見当たらなかったため。
↓は英語版の公式インストール手順。
https://tutorials.ubuntu.com/tutorial/get-started-with-Corda#0
多少英語ができる人なら、問題なくインストールできるはず。
環境
Ubuntu:16.04.6 LTS (Xenial Xerus)
※rootが使用できること。
※WindowsからTera-termなどから実行する場合「サンプルプログラム起動」の手順にて、
UbuntuとGUI連携が必要になる。事前にXmingをインストール・起動しておくこと。
(Ubuntu端末を直接使用する場合は不要。)
Javaのインストール
Java8をインストールするが、自分は環境要件を満たしていたためスキップ。
以下公式の手順
sudo add-apt-repository ppa:webupd8team/java
sudo apt update
sudo apt install oracle-java8-installer
#Gitのインストール
Gitに関しても、環境要件を満たしていたためスキップ。
以下公式の手順
sudo apt install git
IntelliJのインストール
IntelliJは、Java、」Kotlinなどの開発に適した統合開発環境。
製作元のJetBrainsは、Pythonの統合開発環境PyCharmの製作元でもある。
(「IntelliJ」と「PyCharm」のロゴがそっくり)
-
サイトからインストール
https://www.jetbrains.com/idea/download/?fromIDE=#section=linux
「Ultimate」と「Community」がある。今回は「Community」の「tar.gz」を選択しダウンロード。 -
ディレクトリに格納・展開する。
今回は、「/opt」配下に展開する。
tar -zxvf ideaIC-2019.3.tar.gz
「/opt」配下に「idea-IC-193.5233.102」が展開される。
Gitからcordaのsampleリポジトリをクローンする。
これも「/opt」配下に展開する。
git clone https://github.com/corda/cordapp-example.git
サンプルプログラム起動
展開したsampleリポジトリの以下のファイルを実行する。
- Nodeプロセスの生成
サンプルプロセスを生成するために、以下のコマンドを実行する。
/opt/cordapp-example/gradlew deployNodes
コンソールに大量のメッセージが出力されるが、正常終了すると
「BUILD SUCCESSFUL」が表示される。
- Nodeネットワークの起動。
「1.Nodeプロセスの生成」で生成したノードを起動する。
/opt/cordapp-example/kotlin-source/build/nodes/runnodes
以下のコマンドを実行すると、以下の7種類のターミナルが生成される。
・PartyA-corda-webserver.jar
・PartyA-corda.jar
・PartyB-corda-webserver.jar
・PartyB-corda.jar
・PartyC-corda-webserver.jar
・PartyC-corda.jar
・Notary-Corda.jar
※windowsから操作している場合、Xサーバーを起動していない場合、ターミナルが生成されない。
予め、Xming等Windwos専用のXサーバーをインストールしておくこと。
※ちなみに、「×」ボタンで閉じると、ポートを占有してしまって次回起動時に使えなくなる場合がある。
必ず「PartyA,B,C-corda.jar」各ノードの端末で「bye」コマンドを実行して終了させること。
Webブラウザを起動し、Node間のトークンの交換をしてみる。
- Webブラウザからノードを表示する。
ブラウザに以下のURLを入力してアクセスする。
http://[UbuntuのIPアドレス]:[NodeA,B,C]のポート番号/web/example/
例:IPアドレスが192.168.0.11でNodeのPort番号が「10009」の場合、アクセスするURLは以下の通りになる。
http://192.168.0.11:10009/web/example/
※NodeA,B,Cのポート番号の確認方法:「Nodeネットワークの起動」で生成された、
「PartyA,B,C-corda-webserver.jar」に表示されている「Starting as webserver: localhost:」に続く番号を設定すること。
2.トークンの交換を行う。
ここでは「NodeAからNodeBにValue30を送信する」動作を確認してみる。
2-1.「NodeA」のブラウザ画面の「Create IOU」ボタンをクリックする。
2-2.「Add new IOU」というポップアップ画面が表示されるので、「Counter-party」に
「O=PartyB L=New York,C=US」、「Value(Int)」に「30」を設定し、画面右下の「Create IOU」ボタンをクリックする。
2-3.Transactionのコミット画面が表示される。(2-2のクリックから最大数十秒程度かかる)
2-4 各ノードに取引履歴が記録される。
NodeAのブラウザ画面。「My IOUs」と「Recorded IOUs」が更新されている。
NodeBのブラウザ画面。「Recorded IOUs」が更新されている。
ノード間で取引ができていることが確認できた。
備考
作られたノードのうち「Notary-Corda.jar」というのは、何なのか。
「Notary」は「公証人」という意味。
すなわち、CordaにおいてNotaryノードは各トランザクションのハッシュ値を確認し、
二重取引の防止を行うことに特化したノードである。
おわりに
↓次の記事↓
・CorDappを自作してみる。(テンプレートクローン~開発環境構築まで) - Qiita
参考サイト
【Cordaデータモデルの特徴】
https://medium.com/corda-japan/corda%E3%83%87%E3%83%BC%E3%82%BF%E3%83%A2%E3%83%87%E3%83%AB%E3%81%AE%E7%89%B9%E5%BE%B4-701d49f02cd