LoginSignup
13
4

More than 5 years have passed since last update.

Oracle Blockchain Cloud Service(OBCS)を使ってみたら、まじ「ネ申」だった。

Posted at

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/

▼左側メニューから「マイ・サービス・ダッシュボード」を選択
image.png

5.インスタンスの作成

▼「インスタンスの作成」を選択
▼「すべてのサービス」から「Blockchain Platform」の作成を選択
image.png

▼「Custom」ボタンを選択
クイックスタートかカスタムを選択します。
HLFネットワークを新規に作成する場合は、カスタムを選択します。
今回はカスタムで作成します。
インスタンスの構成については、公式ドキュメントを参照ください。
https://docs.oracle.com/en/cloud/paas/blockchain-cloud/administer/create-oabcs-instance.html#GUID-84E28529-A879-4BC9-81D1-60C2B679C0C3
image.png

項目 説明
Instance Name 任意のインスタンス名。
アルファベット小文字と数字のみ。
インスタンス名がそのままHLFのOrganization名になる。
Create a new Network チェックをつけると、インスタンス作成時にHLFネットワークを作成する。
既存のネットワークに参加させる場合は、チェック不要。
Configuration インスタンスの構成

▼「Instance Name」に任意のインスタンス名を入力
▼「Create a new Network」にチェック
HLFネットワークを作成するため
▼「Configuration」は、「Developer」を選択
一番安いので・・・
▼「次へ」を選択
確認画面へ遷移する。
image.png

▼「作成」ボタンを選択
image.png

▼しばし待つ(5分〜40分?)
※作成ボタンを押しても「The request timed out. Try again later.」となり、作成できなかった。(2019/04/08 15:00頃)
(エラーが出てもめげずに、作成をポチポチ押していると)インスタンス構築完了メールが飛んでくる。
image.png

▼左メニューから「サービス」>「Blockchain Platform」へ遷移
作成されていることが確認出来る。
image.png

6.ブロックチェーンコンソール

▼インスタンスのメニューから「Blockchain Console」を選択
image.png

▼別タブで、選択したインスタンスのGUIコンソール(ダッシュボード)が開く
image.png

7.チャネルの作成

デフォルトで存在している「default」チャネルは、チェーンコードのインストール等の用途には使うべきではない特殊なチャネル。
作業が必要な場合は、新しくチャネルを作成する事が望ましい。

▼Channelsを選択
image.png

▼Create a New Channel を選択
image.png

▼フォームを入力し、「Submit」を選択

項目 説明
Channel Name 任意のチャネル名。半角英数字のみ
Application Capabilities v1.3:OracleBlockchainPlatformインスタンス v19.1.1以下は使用不可
v1.1:Hyperledger Fabric v1.2、v1.3の機能の使用不可
Organizations ReaderOnly:チェーンコード実施不可
ReaderWriter:チャネル作成の組織はこちらを選択
Peers to Join Channel チャネルに参加させるPeer

image.png

▼「Yes」を選択
作成したチャネルは削除できない
image.png

▼画面リロード
約1分程度でチャネルが作成される。
おそらく、画面リロード必要。
「チャネル作成」完了。
image.png

8.サンプルチェーンコードのインストール/インスタンス化/実行

サンプルで提供されているチェーンコードをインストールし、インスタンス化、そして実行まで行います。

■インストール
▼「Developer Tools」>「Samples」>「install」を選択
image.png

▼フォームを入力し、「install」を選択

項目 説明
Peers チェーンコードをインストールするPeerを選択する
Language Go:デフォルト
全てのPeerは同じ言語を選択する必要がある

image.png

■インスタンス化
Installed on peersが増えている。
▼instantiateを選択
image.png

▼フォームを入力し、「Instantiate and Enable in REST Proxy」を選択

項目 説明
Channel チェーンコードをインスタンス化するチャネルを選択
Initial parameters of chaincode 初期アカウント残高を設定
REST Proxy サンプルチェーンコードのInvokeをREST経由で行っているため設定

▼リクエストが通っているようであれば、☓ボタンでフォームを閉じる

image.png

■実行
Instantiated on channelsが増えている。
▼Invokeを選択
image.png

▼Channelは、インスタンス化したチャネルを選択し、Executeを選択
画面下部にチェーンコード実行(トランザクション)の結果が表示される。

項目 説明
Transfer from A to B AからBへ送金する
Transfer from B to A BからAへ送金する
Query A Aの残高を確認する
Query B Bの残高を確認する

image.png

9. トランザクション履歴の確認

前章の実施により、当該チャネルの台帳にはトランザクション履歴が発生している。
Hyperledger Fabric でトランザクション履歴が格納されているのが「ブロックチェーン」部分。

▼「Channels」>「作成したチャネル」を選択
image.png

▼User Transactionが1以上になっているBlockの行を選択
image.png

▼画面下部にUserTransactionの一覧が表示される。
image.png

10.Orgの追加

組織(Org)を追加してみます。
組織の追加には証明書が必要になります。
現在の状態では、RoleがFounderだけのため、証明書をエクスポートして使い回すことはできません。
なので、新規にインスタンスを作成し、その組織をインポートする方式を取ります。
※別途、サードパーティのCAから証明書を作成するなどの方式がありますが、Orderer/Peerの追加が行えないため、今回はこの方式をとります。

10.1.新規インスタンスの作成

「5.インスタンスの作成」と同様に、インスタンスを作成します。
今回は、Hyperledger Fabric ネットワークは不要なので、チェックは外しておきます。

▼「インスタンスの作成」を選択
image.png

▼「Instance Name」を入力、「Create a new Network」のチェックを外し、「次」を選択
image.png

▼確認画面が出てきたら「作成」を選択し、しばし待つ
image.png

10.2.証明書のエクスポート

▼新規作成したインスタンスのBlockchainConsoleに遷移。
image.png

▼Certification JSONファイルをエクスポートする
促されるまま、エクスポートする。
image.png

▼インポート対象のインスタンスへ移動する
Founderのインスタンス
image.png

10.3.Orgの追加

▼「Add Organizations」を選択
image.png

▼「Upload Organization Certifications」を押下し、ダウンロードしたjsonを選択。その後「Add」を選択します。
image.png

▼「Finish」でモーダルを閉じます。
image.png

無事、Orgが作成されています。
ちなみに、画面上部のアイコンを押下すると、リスト表示と関係性表示?を切り替えることが可能です。
image.png

11.Peer

11.1.追加

▼「Nodes」へ移動>「Add Node」>「Peer」を選択
Peerの数は「2」
image.png

▼「Advanced Attributes」を選択し、トグルを開く。
image.png

▼「Bootstrap Peers」で(Peer0)を選択。
image.png

▼「Submit」を選択
image.png

▼確認
Peerの数が「3」になっている。
image.png

11.2.Channelへの追加

▼当該Peerを選択
image.png

▼Channelsを選択
image.png

▼「Join New Channels」を選択
image.png

▼追加するChannelを選択する
image.png

▼「Join」を選択
image.png

▼追加されている
※表示まで1分程度のラグあり
image.png

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コマンド打って、うまくいかなくて、タイポみつけて、がっかりしながら修正して・・・」
という、負のスパイラルからの脱却ができそうです。

ほんと、楽!!

やはり、エンジニアは巨人(神託)の肩に乗るべきです。
やめよう、車輪の再発明。

次回は、「独自のチェーンコードのデプロイ」「外部システムとの連携」あたりについて、書いていこうと思います。

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

13
4
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
13
4