空谷に吼える

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

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

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

続きを読む

Oracle Blockchain Platformのリッチヒストリーデータベースの機能強化

Hyperledger Fabricベースのブロックチェーン基盤であるOracle Blockchain Platformには、独自の機能としてそのブロックチェーン台帳のデータをブロックチェーン外部のOracleデータベースに複製する機能(→リッチヒストリーデータベース機能)が備わっています。

で、このリッチヒストリーデータベース機能について、最近のアップデートで機能強化が入り、ブロックチェーン側から複製できるデータの種類が増え、業務的な観点だけでなく、Chaincodeの開発やらHyperledger Fabricのお勉強の観点からもさらに使い勝手がよくなりました。

このエントリではリッチヒストリーデータベース機能について、また、その機能強化について紹介していきます。

続きを読む

Hyperledger Fabricでアセットの履歴を台帳上にどのように持っておくかを考える際のポイント

台帳上でなにかしらのアセットについての状態が管理されており、その最新の状態だけではなく過去の状態(過去バージョンの値、履歴)もちょくちょく参照したいんだよな~ということがあります。

例:NFTトークンのユースケースで、あるNFTトークンについて過去の所有者変遷の履歴を参照したい

また、単に参照するだけならば台帳のデータを外部のDBにIndexingしておいて、その外部DB上で好きなように検索、参照してやってもいいんですが、更新トランザクションにおいて過去バージョンの値をなんらかの条件などに用いたいという場合にはそうもいきません(外部DBと台帳の一致は保証できないため、必ず台帳上の過去バージョンの値を用いる必要があるため)。

例:あるNFTトークンの所有権を移転するトランザクションで、過去に特定の人物が一度でもそのトークンを所有していた場合にはそれ以上の所有権の移転を不可としたい(AMLでブラックリストを管理しているケースなどを想定)

そういった場合にHLF(Hyperledger Fabric)ではどういうかたちでアセットの履歴のデータを台帳(State DB/World Stateとブロックチェーン)上で表現しておくべきかと検討することになります。また、特に更新トランザクションで過去バージョンの値をなんらか用いる場合には、履歴の持ち方を工夫しておかないと後述するPhantom Read検出不能問題にあたり整合性の担保が実装不能になったりするので、これは非常に重要なポイントになります。

そうした検討において結局毎度同じようなことを考えているので自分用の備忘として&同様の検討をされる方用のヒントとしてまとめておきます。

続きを読む

Hyperledger Fabric v2.2がLTS版としてリリース

2020/7/9付でHyperledger Fabric v2.2がLTS(Long Time Support)版としてリリースされました。LTSってつまりどういうこと?と見に行くと、v2.2のドキュメントのWhat's Newに;

v2.2 is the first long-term support (LTS) release of Fabric v2.x. Fixes will be provided on the v2.2.x release stream until after the next LTS release is announced.

と書いてあります。「次のLTS版がリリースされるまでは修正版をv2.2.xとしてリリースしていくよ」、とのことですね。

ちなみに、ひとつ前の(また、HLFとして最初の)LTS版であるv1.4のリリースの際には以下のような説明になっていました。

Our policy to date has been to provide bug fix (patch) releases for our most recent major or minor release until the next major or minor release has been published. We plan to continue this policy for subsequent releases. However, for Hyperledger Fabric v1.4, the Fabric maintainers are pledging to provide bug fixes for a period of one year from the date of release.
This will likely result in a series of patch releases (v1.4.1, v1.4.2, …), where multiple fixes are bundled into a patch release.

このv1.4の説明では「通常は最新のメジャー/マイナーリリースバージョンにしか不具合修正のパッチをリリースしないところ、このLTS版についてはリリース後1年間まではパッチリリースをしていくよ」、ということです。v1.4では「1年間」だったのが、v2.2では「次のLTS版がリリースされるまで」とポリシーがちょっと変わっているようですね。

ただこちらのリリースノートで過去バージョンのリリース履歴を見ると、v1.4のリリース(2019/1/10付)から1年4ヶ月程度経った2020/5/14付でv1.4.7がリリースされていますね。そのへんから考えると、実際にはv1.4.x系で既に「次のLTS版がリリースされるまで」は修正リリースが提供されていたみたいです。しかし次のLTS版であるv.2.2がリリースされたのでv1.4.x系はv1.4.7で最後でしょうねたぶん。

###追記###

「たぶん」と書いていてよかった、v1.4.8がリリースされました。

fabric@lists.hyperledger.org | ANNOUNCEMENT: Hyperledger Fabric v1.4.8 is now available!

it is worth noting that 3rd digit patch releases for open source Fabric v1.4.x are expected to continue until April 2021

だそうで、2021年4月まではv1.4.x系のパッチリリースが続けられる見通しだそうです。

###追記ここまで###

ともあれ1年ちょいぶりのLTS版ということで、v2.x系を触ってみたかったけどまだ早いかな~変なバグとか引きたくないし…と尻込みしていた方(わたしを含む)も、これを機にそろそろチャレンジしてみましょう。

Private Data Collectionの共有先のOrg配下にPeerを追加した場合、そのPeerにはそれまでに溜まっていたPrivate Dataレコードも共有されるのか検証してみた

このエントリは前・後編のうちの後編です。前編は↓です。

Private Data Collectionの新規共有先として追加されたOrg配下のPeerにはそれまでに溜まっていたPrivate Dataレコードも共有されるのか検証してみた - 空谷に吼える

前編では「Private Data Collectionの共有先Organizationを新たに追加した場合」について検証したんですが、今回は「もともとPrivate Data Collection共有先であるOrganizationの配下に新たにPeerを追加した場合」に、それまで溜まっていたPrivate Dataは追加されたPeerにも共有されるのか、を検証しました。

結果を書いておくと共有されます(Hyperledger Fabric v1.4.2での検証結果)。

続きを読む

Private Data Collectionの新規共有先として追加されたOrg配下のPeerにはそれまでに溜まっていたPrivate Dataレコードも共有されるのか検証してみた

###追記###

情報提供をいただきました。v1.4で追加されたreconciliationEnabledのフラグをTrueに設定すると、新規共有先として追加されたOrg配下のPeerにも既存Private Dataレコードが共有されるようになる模様です。

わたし自身では実機で検証できていないですが、(ドキュメント)https://hyperledger-fabric.readthedocs.io/en/release-1.4/private-data-arch.html?highlight=reconciliationenabled#private-data-reconciliationにそのように読める記述があるのでたぶんそういう仕様のはず!

###追記ここまで###

↓のついーとで述べている疑問がタイトルのやつなんですが、特にリプライで情報が寄せられなかった&ググってみてもわかんなかったので検証しました。結論を書いておくと、共有されないです(Hyperledger Fabric v1.4.2での検証結果)。

続きを読む

Hyperledger FabricのGossip関連の基本的な情報のまとめ

Hyperledger Fabric(HLF)のGossipプロトコルに関するLeader、Anchorってなんだっけってのいつも忘れるのでまとめておきます。

続きを読む