メインコンテンツまでスキップ

NFTDriveの保存メカニズム

NFTDriveは、ファイルを小さなデータ片に分け、Symbol互換ネットワークのトランザクションに格納する仕組みです。フルオンチェーンの具体例として、ファイル本体の保存から取得・復元までを説明します。

ファイル本体はどこに残るのか​

データ片は、Transferトランザクションのメッセージ欄に格納します。複数のTransferをAggregate Completeトランザクションにまとめ、署名してネットワークへ書き込みます。取り込まれたデータは、チェーンのトランザクション履歴に残ります。

元のファイル
↓ 保存形式への変換・必要に応じた暗号化
小さなデータ片に分割
↓ Transferのメッセージに格納
Aggregate Completeにまとめて署名・書き込み
↓ ネットワークでブロックに取り込まれる
データ実体を含むトランザクション履歴

ファイル本体は、アカウントの残高やAccount Metadataに入るものではありません。データ保存用のアドレスに関連付いたトランザクション履歴に格納されます。

保存対象は選択したファイル本体です。例えば、HTMLファイルに外部画像のURLが含まれていても、その画像まで自動で保存されるわけではありません。後から同じ内容を表示するには、外部参照先も含めて何を残す必要があるか確認してください。

ネットワークとデータアドレスから探す​

通常、ファイル1件の記録には、送信に使う作業用アカウントと、データ片の宛先となるデータ保存用アカウントを用意します。

利用者の記録を一覧化する入口となる「記録者アドレス」と、個々のファイルに対応する「データアドレス」は別です。記録者の履歴からデータアドレスへの参照をたどり、そのアドレスに関連するトランザクションを取得します。

データを特定するときは、対象ネットワークとデータアドレスの組み合わせを確認します。アドレス文字列だけでは、別ネットワーク上の記録と区別できません。また、一覧に表示されることだけでは、ファイルを構成するデータ片がすべてそろっているとは判断できません。

データ片からファイルを復元する​

取得したトランザクションから、保存形式とデータ片の順序を読み取ります。APIから届いた順番をそのまま使うのではなく、記録された順序に並べて連結します。

Base64形式は文字列から、バイナリ形式はバイト列からファイルを復元します。どちらも圧縮を意味するものではなく、Base64自体には内容を秘密にする効果もありません。暗号化された記録では、対応する鍵や共有パスワードによる復号が必要です。

ファイルが複数のAggregateに分かれる場合、書き込み途中で一部だけがブロックに取り込まれることがあります。送信の受付や進捗表示と、ファイル全体を復元できることは分けて確認します。

保存・取得・照合・検証の関係​

段階NFTDriveの記録で確認すること
保存データ実体を構成するデータ片がトランザクション履歴に残ること
取得指定したネットワークとデータアドレスから必要な履歴を読み出せること
照合データ片の順序や識別情報、トランザクションとブロックの参照関係などを比較すること
検証照合結果と取得元などの根拠から、記録が検証条件を満たすか判断すること

BEYONDは、この取得・復元と検証根拠の確認を利用者が行える環境を提供します。ファイルを開けたことだけで、取得元や対象ネットワークまで確認できたことにはなりません。復元したバイト列から計算したハッシュも、それだけでは独立したチェーン上の基準との一致を証明しません。

後から利用するために残すもの​

再取得・復元には、必要な履歴を保持して提供できるノードやアーカイブと、保存形式に対応する復元手段が必要です。暗号化した記録では復号に必要な鍵も保全します。

暗号化の対象はファイル本体です。作者情報や説明などの公開ヘッダー、トランザクションの署名者や宛先まで自動的に非公開にはなりません。また、NFTの発行とファイル本体の保存は別の処理です。NFTの識別子や作者欄だけで内容の真実性や著作権が証明されるわけではありません。

操作は データを書き込む と データを検証する、暗号化は ファイルを暗号化する を参照してください。データ片のサイズや配置は NFTDriveの記録形式 にまとめています。