LoginSignup
0
2

More than 3 years have passed since last update.

CordaをUbuntuにインストール&サンプルプログラムを実行してみた。

Last updated at Posted at 2019-12-08

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」のロゴがそっくり)

  1. サイトからインストール
    https://www.jetbrains.com/idea/download/?fromIDE=#section=linux
    「Ultimate」と「Community」がある。今回は「Community」の「tar.gz」を選択しダウンロード。

  2. ディレクトリに格納・展開する。
    今回は、「/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リポジトリの以下のファイルを実行する。

  1. Nodeプロセスの生成 サンプルプロセスを生成するために、以下のコマンドを実行する。
/opt/cordapp-example/gradlew deployNodes

コンソールに大量のメッセージが出力されるが、正常終了すると
「BUILD SUCCESSFUL」が表示される。

  1. 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間のトークンの交換をしてみる。

  1. 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

0
2
0

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
2