1.概要
Oracle Blockchain Cloud Service(OBCS)を使ってみたので、その手順をまとめた。
CLIでの作業と比べ、Dockerファイルの書き換え等が発生しないので、個人的には、精神的負担が少なく、お手軽に実施できた。
まじ、「ネ申」。
この記事では、OBCSでのHLFのPeerの追加までを駆け足で紹介していきます。
2.Oracle Blockchain Cloud Service(OBCS)とは
Oracle Cloudで提供されるHyperledger FabricベースのPaaSです。
略称はOBCS。
■紹介スライド
https://www.slideshare.net/oracle4engineer/oracle-blockchain-cloud-service20181213-125784996
3.アカウントの作成
手順は省略。
$300クレジット付きの無料があるので、そちらを試用すると良さげ。
4.マイ・サービス・ダッシュボードへアクセス
▼Oracle Cloud Infrastructureへアクセス
https://console.ロケーション.oraclecloud.com/
5.インスタンスの作成
▼「インスタンスの作成」を選択
▼「すべてのサービス」から「Blockchain Platform」の作成を選択
▼「Custom」ボタンを選択
クイックスタートかカスタムを選択します。
HLFネットワークを新規に作成する場合は、カスタムを選択します。
今回はカスタムで作成します。
インスタンスの構成については、公式ドキュメントを参照ください。
https://docs.oracle.com/en/cloud/paas/blockchain-cloud/administer/create-oabcs-instance.html#GUID-84E28529-A879-4BC9-81D1-60C2B679C0C3
項目 | 説明 |
---|---|
Instance Name | 任意のインスタンス名。 |
アルファベット小文字と数字のみ。 | |
インスタンス名がそのままHLFのOrganization名になる。 | |
Create a new Network | チェックをつけると、インスタンス作成時にHLFネットワークを作成する。 |
既存のネットワークに参加させる場合は、チェック不要。 | |
Configuration | インスタンスの構成 |
▼「Instance Name」に任意のインスタンス名を入力
▼「Create a new Network」にチェック
HLFネットワークを作成するため
▼「Configuration」は、「Developer」を選択
一番安いので・・・
▼「次へ」を選択
確認画面へ遷移する。
▼しばし待つ(5分〜40分?)
※作成ボタンを押しても「The request timed out. Try again later.」となり、作成できなかった。(2019/04/08 15:00頃)
(エラーが出てもめげずに、作成をポチポチ押していると)インスタンス構築完了メールが飛んでくる。
▼左メニューから「サービス」>「Blockchain Platform」へ遷移
作成されていることが確認出来る。
6.ブロックチェーンコンソール
▼インスタンスのメニューから「Blockchain Console」を選択
▼別タブで、選択したインスタンスのGUIコンソール(ダッシュボード)が開く
7.チャネルの作成
デフォルトで存在している「default」チャネルは、チェーンコードのインストール等の用途には使うべきではない特殊なチャネル。
作業が必要な場合は、新しくチャネルを作成する事が望ましい。
▼フォームを入力し、「Submit」を選択
▼画面リロード
約1分程度でチャネルが作成される。
おそらく、画面リロード必要。
「チャネル作成」完了。
8.サンプルチェーンコードのインストール/インスタンス化/実行
サンプルで提供されているチェーンコードをインストールし、インスタンス化、そして実行まで行います。
■インストール
▼「Developer Tools」>「Samples」>「install」を選択
▼フォームを入力し、「install」を選択
項目 | 説明 |
---|---|
Peers | チェーンコードをインストールするPeerを選択する |
Language | Go:デフォルト |
全てのPeerは同じ言語を選択する必要がある | |
![]() |
■インスタンス化
Installed on peersが増えている。
▼instantiateを選択
▼フォームを入力し、「Instantiate and Enable in REST Proxy」を選択
項目 | 説明 |
---|---|
Channel | チェーンコードをインスタンス化するチャネルを選択 |
Initial parameters of chaincode | 初期アカウント残高を設定 |
REST Proxy | サンプルチェーンコードのInvokeをREST経由で行っているため設定 |
▼リクエストが通っているようであれば、☓ボタンでフォームを閉じる
■実行
Instantiated on channelsが増えている。
▼Invokeを選択
▼Channelは、インスタンス化したチャネルを選択し、Executeを選択
画面下部にチェーンコード実行(トランザクション)の結果が表示される。
項目 | 説明 |
---|---|
Transfer from A to B | AからBへ送金する |
Transfer from B to A | BからAへ送金する |
Query A | Aの残高を確認する |
Query B | Bの残高を確認する |
![]() |
9. トランザクション履歴の確認
前章の実施により、当該チャネルの台帳にはトランザクション履歴が発生している。
Hyperledger Fabric でトランザクション履歴が格納されているのが「ブロックチェーン」部分。
▼User Transactionが1以上になっているBlockの行を選択
▼画面下部にUserTransactionの一覧が表示される。
10.Orgの追加
組織(Org)を追加してみます。
組織の追加には証明書が必要になります。
現在の状態では、RoleがFounderだけのため、証明書をエクスポートして使い回すことはできません。
なので、新規にインスタンスを作成し、その組織をインポートする方式を取ります。
※別途、サードパーティのCAから証明書を作成するなどの方式がありますが、Orderer/Peerの追加が行えないため、今回はこの方式をとります。
10.1.新規インスタンスの作成
「5.インスタンスの作成」と同様に、インスタンスを作成します。
今回は、Hyperledger Fabric ネットワークは不要なので、チェックは外しておきます。
▼「Instance Name」を入力、「Create a new Network」のチェックを外し、「次」を選択
10.2.証明書のエクスポート
▼新規作成したインスタンスのBlockchainConsoleに遷移。
▼Certification JSONファイルをエクスポートする
促されるまま、エクスポートする。
▼インポート対象のインスタンスへ移動する
Founderのインスタンス
10.3.Orgの追加
▼「Upload Organization Certifications」を押下し、ダウンロードしたjsonを選択。その後「Add」を選択します。
無事、Orgが作成されています。
ちなみに、画面上部のアイコンを押下すると、リスト表示と関係性表示?を切り替えることが可能です。
11.Peer
11.1.追加
▼「Nodes」へ移動>「Add Node」>「Peer」を選択
Peerの数は「2」
▼「Advanced Attributes」を選択し、トグルを開く。
▼「Bootstrap Peers」で(Peer0)を選択。
11.2.Channelへの追加
12.課金周りの話
- 500トランザクション/時間:60円
- 0トランザクションでも、1時間あたりのトランザクション料は発生する
- 1,440円/日は、最低費用。
- 約43,200円/月/1インスタンス
- 各Peerの内部トランザクションも課金対象
- と、やはり便利なものには、それなりの費用がかかる。
13.参考
公式ドキュメント(英語)
https://docs.oracle.com/en/cloud/paas/blockchain-cloud/index.html
空谷に吼える
「Oracle Blockchain Cloud Serviceのインスタンスを作成してサンプルChaincode動かしてみた」
https://gakumura.hatenablog.com/entry/2018/12/15/145558
Oracle Blockchain Cloud Service 触ってみた(Dataspiderとの連携もちょっと紹介)
https://qiita.com/Yosuke_Sakaue/items/159d86fb5022426d4bce
まとめ
触り始めて、まだ1週間くらいですが、
「いままでCLIでDockerファイルいじって、Dockerコマンド打って、うまくいかなくて、タイポみつけて、がっかりしながら修正して・・・」
という、負のスパイラルからの脱却ができそうです。
ほんと、楽!!
やはり、エンジニアは巨人(神託)の肩に乗るべきです。
やめよう、車輪の再発明。
次回は、「独自のチェーンコードのデプロイ」「外部システムとの連携」あたりについて、書いていこうと思います。
今回はここまでです。
ありがとうございました。