空谷に吼える

ブロックチェーン/DLTまわりのなにかしらを書いていく所存

Oracle Blockchain Platform関連の入門ガイドや基本情報

Oracle上で提供されているBaaS(Blockchain as a Service)であるOracle Blockchain Platform(OBP)関連の入門ガイドや基本的な製品紹介情報をまとめておきます。なお、この記事は情報のアップデートに併せてちょくちょく更新していきます。

入門ガイド的なデモ動画

以下に日本語でのデモ動画が公開されています。このボソボソ喋っているのはわたしです。。。

www.youtube.com

以下の流れを45分くらいの動画で説明しており、そのうちデモやってるのは30分くらい。インスタンス作成待ちの時間を除けば、実際やってみても慣れていれば30分以内でできます。素のHyperledger Fabricではあんなにめんどくさいネットワーク構成やらChannel作成、ChaincodeデプロイなどのあれこれもOBPならめちゃめちゃかんたんにできるよ!エンタープライズブロックチェーンを今すぐかんたんに始められるよ!ということがわかっていただけるかと思います。

  1. OBPインスタンスの作成(×2)
  2. ふたつのOrganization(=インスタンス)でのHyperledger Fabricネットワークの構成
  3. Channelの作成
  4. サンプルChaincodeのコンソール上での動作
  5. Chaincodeのデプロイ
  6. 付属のRESTプロキシを利用したChaincodeのREST API経由での実行
  7. リッチヒストリーデータベース機能によるRDBOracle DB)への台帳データの複製

ちなみにほとんど同じことをやっている記事が以下にありますので動画よりテキスト派はこちらをどうぞ。なお、これらの記事のなかでOracle Blockchain Cloud Service(OBCS)という名称になっているのは、リリース後にOracle Blockchain Platformにサービス名称が変更された経緯があるためです。

Oracle Blockchain Cloud Serviceのインスタンスを作成してサンプルChaincode動かしてみた - 空谷に吼える

Oracle Blockchain Cloud ServiceのリッチヒストリーDB使ってみた - 空谷に吼える

製品紹介資料スライド

以下にOBPの製品としての機能などの情報あれこれや、お客様ユースケースの紹介の資料があります。

www.slideshare.net

OBP構築かんたんでめっちゃ使いやすそう、というのはデモ動画を観ていただければ十二分におわかりいただけると思うんですが、それ以外に推している点(=OBPの付加価値)は以下3つです。

REST APIによるChaincodeの実行が可能

OBPにはPeerノード、Ordererノード、CAノードなど各種Hyperledger Fabricのコンポーネントの他に、RESTプロキシーノードが付属しています。デモ動画でも試していますが、このRESTプロキシーを経由することでREST APIでChaincodeを容易に実行できます。Fabric SDKに習熟していなくても、Webアプリの一般的なお作法でREST APIを呼び出すだけでHyperledger Fabricを利用するアプリケーションが作れます

台帳のデータをRDBに複製可能

リッチヒストリーデータベース機能と呼称している、台帳データをリレーショナルデータベース(RDB)に複製する機能があります。対象のデータベース(Oracle DB)やどのようなテーブルが作成されるかなどの情報はこちらのエントリで説明しています。より詳細な情報はこちらの公式ドキュメントをご覧ください。

複雑な集計やデータ分析は台帳上/オンチェーン(Chaincode内)で行うのは向いていないとされています。RDBに台帳データを複製することで、集計や分析を大得意とするRDB側で行えるようになる、というのがメインの目的です。が、実はこれState DBの現状態がRDB上でふつうに見られるようになるのでChaincode開発、テストするときにめっちゃ便利(通常、現に開発しているChaincodeから見るしかないので混乱しがち)です。どういう風に見えるかはデモ動画で紹介しています。

State DBとしてBerkeley DBを独自に採用

素のHyperledger FabricではState DB(のバックエンド)としてシンプルなKey-Value構造を扱うのに向いており高速なLevelDBか、比較的低速だがJSONValueとして格納することでリッチクエリ(JSONのattributeで条件指定するクエリ)が利用可能なCouchDBのどちらかを選択できます。他方、OBPではState DBにBerkeley DBを採用しています。デモ動画では紹介できていませんが、以下の利点があります。

SQLリッチクエリを利用可能

CouchDBで使えるJSONリッチクエリに加えて、SQLリッチクエリが使えますSQLリッチクエリは何がいいかというと集計関数が使えるんだぜ……という話はこちらのエントリで説明しています。

リッチクエリ利用時のPhantom Read検知不能問題の解消

Hyperledger Fabricでは(CouchDBを使っていれば)リッチクエリが使えるという点で、Keyでしかクエリできないことが多い他のブロックチェーン基盤に比べてスマートコントラクト内での検索機能が強い、という利点があります……が、実はこのリッチクエリ、Phantom Readが発生した場合に検知できず、台帳の整合性が担保できなくなるため、更新トランザクション内でリッチクエリを使うなという制約があります

OBPではこのPhantom Read検知不能問題に技術的に対処して解消できているため、更新トランザクションでも安全にリッチクエリが使えます。詳しい話はこのエントリで説明しています。

速い

リッチクエリが使える、複雑なデータをJSON構造で表現できるためChaincodeの表現力が拡大できる、という点でCouchDBはすごく便利なんですが、いかんせんパフォーマンスを指向しているDBではないので遅いです。この点Berkeley DBは高速を指向しており、LevelDBとほとんど~それほど遜色ないくらいの性能を出しつつ、しかもJSON/SQLリッチクエリまで使えてしまうんだぜ

使ってみよう

ここまで読んでみてよさそうやんけ!よっしゃ試したろ!!と思っていただいた方はぜひOracle Cloudに登録して使ってみてください。

残念ながら現状ではOracle Cloud無料トライアルにはOBPは含まれていないため、有償でしか利用できないのですが、1時間あたり数十円~数百円(シェイプの大きさに依存)の課金なので、例えば前述のデモの内容だけやってみる、などであればおおよそ1日以内で済み、それほど費用はかかりません。ぜひぜひお試しください!

こちらに日本語チュートリアルも徐々に追加しているのでご利用ください。

oracle-japan.github.io