詳細: Oracle Blockchain Table

このページでは、ブロックチェーン表と行ハッシュによる連鎖行、ブロックチェーン表の実装方法、管理方法およびブロックチェーン表での行データの処理方法についてに詳しく説明します。

ブロックチェーン表は、中央の権限がOracle Databaseである集中管理ブロックチェーン・アプリケーションの実装に使用されます。集中型のブロックチェーンにより、組織はネットワークの参加者を決定できるようになるため、カスタマイズの幅が広がり、詳細な制御が可能になります。参加者は、Oracle Databaseを信頼してトランザクションの改ざん防止ブロックチェーンを維持する様々なデータベース・ユーザーです。すべての参加者には、ブロックチェーン表にデータを挿入する権限が必要です。ブロックチェーンの内容は、アプリケーションによって定義および管理します。非集中型のブロックチェーンと比較すると、集中型のブロックチェーンは、コンセンサス・ベースの分散ブロックチェーンよりもトランザクションのスループットが高くレイテンシが小さいことが優先されるシナリオで役立ちます。

ブロックチェーン表は、行を複数のチェーンにまとめて編成する挿入専用の表です。チェーン内の最初の行を除き、各行は前の行に連鎖されます。

ブロックチェーン表の行は改ざんを防ぎます。各行には、その行のデータとチェーン内の前の行のハッシュ値に基づいた暗号化ハッシュ値が含まれています。ある行が改ざんされると、その行のハッシュ値が変わるため、チェーン内の次の行のハッシュ値も変わります。不正検出を強化するために、オプションのユーザー署名を行に追加できます。

ブロックチェーン表は、集中管理アプリケーションにとってデータの不変性が重要で、現行トランザクションおよび履歴トランザクションの改ざん不可能な状態の元帳を維持する必要がある場合に使用します。ブロックチェーン表はビルディング・ブロックです。集中管理ブロックチェーンを実装するタスクを実行するのに必要なトリガーまたはストアド・プロシージャを定義する必要があります。情報ライフサイクル管理(ILM)は、ブロックチェーン表のデータのライフサイクルを管理するために使用されます。ブロックチェーン表の1つ以上のパーティションのデータが古い場合は、ILM手法を使用してコストの低い記憶域に移動できます。

ブロックチェーン表の使用に関して、次の利点を考慮してください。
  • これらは、ブロックチェーン・ネットワークの他の参加者による不正行為からアプリケーション透過型の保護を提供します。

    不正は、ブロックチェーン表内の行を検証することで検出できます。これは、ハッシュ値を再計算して、その値が対応する内部列に保存されている値と一致することを検証します。

  • これらはOracleデータベースの一部であるため、新しいインフラストラクチャは必要ありません。

  • これらを使用すると、現在のアーキテクチャとプログラミング・モデルを維持できます。そのため、中央の権限を持つ既存のデータベース・アプリケーションのセキュリティを向上できます。

  • 分散ブロックチェーンと比較して、より簡単に使用できます。

ブロックチェーン表は、挿入操作のみできる追加専用の表です。行の削除は、禁止または時間に基づいて制限されます。ブロックチェーン表内の行は、特殊なシーケンシングおよび連鎖アルゴリズムによって改ざん防止状態になっています。ユーザーは、行が改ざんされていないことを確認できます。行メタデータの一部であるハッシュ値は、行の連鎖および検証に使用されます。ブロックチェーン表を使用すると、ブロックチェーン・ネットワーク内のすべての参加者が同じ改ざん防止レジャーにアクセスできる集中型レジャー・モデルを実装できるようになります。

ブロックチェーン表は、索引を作成することも、パーティション化することもできます。ブロックチェーン表から行を削除するかどうか、またいつ削除するかを制御できます。また、ブロックチェーン表の削除を許可するかどうかを制御することもできます。ブロックチェーン表は、トランザクションおよび問合せ内の(通常の)表とともに使用できます。

ブロックチェーン表の行の署名

行に署名することで、すでに作成されている行にユーザー署名を設定します。署名は、改ざんに対する追加のセキュリティを提供します。

Oracle Databaseは、現在のユーザーが更新する行とハッシュを所有していることを検証して、指定があれば保存されている行のハッシュ値と照合します。ブロックチェーン表に対するINSERT権限が必要です。署名を追加する行に既存の署名は、NULLになっている必要があります。DBMS_BLOCKCHAIN_TABLE.SIGN_ROWプロシージャを使用して、既存の行に署名を追加します。

ブロックチェーン表のデータの検証

PL/SQLプロシージャDBMS_BLOCKCHAIN_TABLE.VERIFY_ROWSでは、ブロックチェーン表の行が挿入後に変更されていないことを確認します。改ざん防止は、ブロックチェーン表の主要な要件です。このプロシージャを実行するには、ブロックチェーン表に対するSELECT権限が必要です。

ブロックチェーン表内のすべての行を検証するか、検証する必要のある行をフィルタする基準を指定できます。行のフィルタリングには、インスタンスID、チェーンIDまたは行作成時刻を使用できます。

ブロックチェーン表の行の削除

保存期間外の行のみをブロックチェーン表から削除できます。PL/SQLプロシージャDBMS_BLOCKCHAIN_TABLE.DELETE_ROWSでは、すべての行または指定日より前に作成された行を削除します。