見出し画像

ブロックチェーンシステム設計を検討する(処理性能編)

私は普段ブロックチェーンシステムの事業企画側で仕事をしており、システム側の検討については、システム担当の方に検討を主にお願いしている状況です。

一方で、最近ブロックチェーンシステムの設計についての相談を受けることがあり、一から設計する場合はどのように検討していけばいいのか勉強してみることにしました。

参考にしたのは書籍”ブロックチェーンシステム設計”です。

このnoteではブロックチェーンシステムに関してよく議論に上がる処理性能について検討します。

処理性能の指針には"スループット"と"レスポンスタイム"があります。

RDBと異なるスループット特性

スループットは単位時間あたりの処理量を表します。RDBでは、データ登録は1件ごとに処理されるため、線形に増加します。
一方でブロックチェーンでは、ブロックが生成されるタイミングで、ブロックに格納されている件数だけ処理件数が増加します。

ブロックチェーンによるシステム構築のフィージビリティを検討する場合は、処理する必要があるデータ量及びその時間をあらかじめ定義し、
1ブロック生成時間✖︎(処理総量/1ブロックあたりの処理量)がその時間ないに収まるかどうかを確認する必要があるということになります。
もちろんこれは他のユーザーからのトランザクションを考えなくて良い、プライベートチェーンの場合になりますので、パブリックチェーンの場合は、他のトランザクションも影響してきますので、必ず時間内に全てのトランザクションを処理できる保証ができているシステムを構築するのは困難だと思われます。

レスポンスタイム

レスポンスタイムとは要求を出してから応答が返ってくるまでの時間です。要求は参照と更新に大きく分けられます。参照はブロックチェーンに書き込まれている内容を参照するだけで、更新はデータの更新が伴うものになります。

参照については、ブロックチェーンシステムにおいてもRDBと基本的には同じようなレスポンスタイムとなります。

更新については、以下の時間の合計値と考えられます。
1. ブロック生成までの待ち時間
2. トランザクション伝播時間
3. ブロック生成時間
4. ブロック伝播時間

レスポンスタイムについては、構築しようとしているシステムの各ユースケースにおけるシーケンスを検討し、ブロックチェーンのデータ更新におけるレスポンスタイムによって何か制限されることがないかを注意する必要があります。






この記事が気に入ったらサポートをしてみませんか?