空谷に吼える

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

Samsung SDSがHyperledger Fabricのトランザクション処理性能高速化ツールを開発

Samsung SDSがHyperledger Fabricのトランザクション処理性能を(さらに)高速にするツールを開発したよ、というニュースが出ていました。

www.ledgerinsights.com

どういう仕組みのツールなのかなーと思って調べていたところ↓のホワイトペーパーで説明されていました。

accelerator/Whitepaper-Acceleratoring Throughput in Permissioned Blockchain Networks.pdf at master · nexledger/accelerator · GitHub

ホワイトペーパーによると、本来ならひとつずつコンセンサスを取っていかなければならない複数のトランザクションをある条件でグルーピングしてひとつのトランザクションにまとめる(aggregate)というアプローチのようです。ここである条件とは、そのグループ内のトランザクションが互いに関係していない、つまり、同一のkeyにアクセスしておらず、したがってMVCCで衝突(collision)を起こす心配がないという条件です。単純にコンセンサスを取らなければならないトランザクションの数が減り、コストがかかるコンセンサスが減るので時間当たりに処理可能なトランザクションが増えますよね、というやり方。

素のHLFではクライアントアプリケーションからPeerにTransaction Proposalを送るわけですが、このツール(Accelerator)はその間に挟まるようなかたちで動作させるようです。以下の図のように、クライアントアプリケーションがこのAcceleratorにTransaction Proposalを送付し、Acceleratorがaggregateしたうえで、そのAggregated Transaction ProposalをPeerに送るという流れですね。ChaincodeはAggregated Transactionを処理できるようにトランザクションを配列で受け取って中でループ回してSegregateする、とかが必要でしょうね。

f:id:gakumura:20190215210503p:plain(ホワイトペーパーから引用)

結果を見るにこのAcceleratorを使うことで5倍~10倍の時間当たり処理量になっています。すごいですね、ワオ!

ただ、仕組み的にできるだけこのAcceleratorのひとつのインスタンスを多くのTransaction Proposalを集中させたほうがAggregationの効率がよくなり、したがって高速化の効果が出やすいはずです。その場合、Acceleratorが単一障害点(SPoF)になっちゃわないように注意が必要ですね。また、複数ネットワークメンバーから成るコンソーシアムで利用する場合に、使用するAcceleratorはみんなが信頼する必要が生じるというところも重要です。HLFのネットワークに対するトラスト以外のレイヤーに、集権的なトラストゲートウェイができてしまうということになりますからね。

このAcceleratorは2019年前半を目途にソースが公開される予定だそうです。また、まずはHyperledger Fabric用に作られているものの、他のブロックチェーン基盤にも対応することが検討されている模様。こういった周辺ツールも徐々に充実してきましたね。