検証可能なデータとは
BEYONDにおける検証可能なデータとは、データ実体を取得できるだけでなく、そのデータ実体とチェーン上の記録との関係を、取得元と検証条件を含む根拠から確認できるデータです。
画面にデータが表示されること、ハッシュが存在すること、トランザクションが見つかることは、それぞれ検証の一部にすぎません。データ実体、トランザクション、ブロック、チェーン、ネットワークを関連付け、どの取得元から何を得て、何と何を照合したかを確認できる必要があります。
保存・取得・照合・検証
BEYOND Docsでは、データを扱う過程を次の4段階に分けます。
| 段階 | 意味 | 確認する問い |
|---|---|---|
| 保存 | データまたは記録を永続的な媒体へ配置する | 何を、どこへ残したか |
| 取得 | 保存されたデータやチェーン情報を読み出す | 今、どの取得元から何を読み出せたか |
| 照合 | 取得した情報同士のハッシュ、識別子、参照関係などを比較する | 比較した値や参照先は一致するか |
| 検証 | 照合結果と検証根拠をもとに、記録の状態を判断する | 定めた検証条件を満たしているか |
書き込みは保存と同義ではありません。書き込みは、トランザクションとしてブロックチェーンへ送信する行為です。送信しただけではチェーン上の記録になったとは限らないため、対象ブロックへの包含や必要な確定状態を取得・照合して確認します。
4段階は互いに代替できません。
- 保存されていても、利用できる取得元がなければ内容を読み出せません。
- 取得できても、比較対象がなければ保存後に変更されていないかを照合できません。
- 値が一致しても、別のネットワークを参照していれば意図した記録の検証にはなりません。
- 検証結果は、使用した取得元、検証条件、暗号方式、ソフトウェアなどの前提に依存します。
検証対象を一つの関係としてたどる
検証では、次の関係を順にたどります。
データ実体
↓ ハッシュまたは識別情報を計算・取得する
トランザクション
↓ 対象ブロックへの包含を確認する
ブロック
↓ ブロック履歴上の位置と状態を確認する
チェーン
↓ 識別情報と取得元を確認する
ネットワーク
↓ 照合結果と前提を評価する
検証結果
ここでいうチェーンは形成されたブロック履歴、ネットワークはそのチェーンを共有・維持するノード群と設定です。同じトランザクション識別子やブロック高を示す情報でも、対象ネットワークが異なれば同じ検証根拠としては扱えません。
この関係は、次のように確認します。
- データ実体と、そのハッシュまたは識別情報を取得する。
- データ実体から計算した値を、トランザクションに含まれる値や参照情報と照合する。
- トランザクションが対象ブロックに含まれているかを確認する。
- ブロックが対象チェーンの履歴上にあるか、必要な確定状態を満たすかを確認する。
- チェーンの識別情報と、情報を返したノードを確認する。
- すべての照合結果と前提を示し、検証条件を満たすかを判断する。
取得不能や不一致は重要な結果ですが、直ちに改ざんを意味するとは限りません。ノードの停止、履歴の保持範囲、同期状況、Network Profileの設定、データの欠損なども切り分ける必要があります。
ハッシュとデータ実体は代替できない
ハッシュは、手元のデータ実体から計算した値と記録された値を比較するために使えます。しかし、ハッシュから元のデータ実体を復元することはできません。
- ハッシュだけが残っている場合、照合対象となるデータ実体を別に取得できなければ内容を確認できません。
- データ実体だけが残っている場合、チェーン上の記録との参照関係がなければ、いつ、どのトランザクションで記録されたものかを確認できません。
- 両方があっても、対象ネットワークや取得元が不明なら、検証の前提が不足します。
したがって、検証可能性は「ハッシュがある」「データ実体がある」という単独の性質ではなく、それらとチェーン上の記録を再び関連付けられる性質です。保存方式による違いは フルオンチェーンとは で説明します。
検証結果が示す範囲
検証条件を満たした結果は、たとえば「取得したデータ実体のハッシュが記録内容と一致している」「トランザクションが対象ブロックに含まれている」「指定されたネットワークの複数の取得元で同じ情報を得た」といった、確認できた範囲を示します。
その結果だけから、記録内容が現実世界の事実であること、入力者の説明が真実であること、将来も取得できることまでは判断できません。保証の境界は BEYONDが保証すること / 保証しないこと を参照してください。
実際の操作は データを検証する、なぜこの設計が必要かは なぜ検証が必要なのか で説明します。