ZooBC ウィキ
データとストレージ

チェーン上のファイル(DFS)

ZooBC にはファイルを保持する方法が 2 つあります。DFS ファイルは小さな内容のためのものです。ファイルは自身のトランザクションの中で運ばれ、チェーンはそれをオーナーのデータセットの行として記録します。より大きなファイルは 分散ストレージプール に送られ、決してチェーンに触れないピースに分割されます。この記事では DFS ファイルを扱います。

レコードと内容

あるオーナーのあるパスにある DFS ファイルは、データセットの行 (owner, owner, "dfs:" + path) です。設定者と受取人はどちらもオーナーで、プロパティは dfs: にパスを続けたものです。行の値は、次のメタデータのレコードを 16 進にしたものです。

  • 内容の SHA3-256 ハッシュとそのサイズ
  • パーミッション(0644)
  • 2 つのタイムスタンプ
  • チャンクの数と各チャンクのハッシュ

内容そのものはトランザクションの本体の中で運ばれます。本体は最大 65,536 バイトなので、DFS ファイルは最大約 64 KiB を保持します。ノードはそのバイト列を、チェーンの傍らにあるローカルのチャンクテーブルに保持します。それはコンセンサスの状態の一部ではありません。チェーン上の行がハッシュを保持しているため、誰でも内容をそれと照合できます。

パス

パスは / で始まり、長さは最大 1,024 バイトです。//、..、NUL バイト、復帰、改行を含んではなりません。末尾の / は取り除かれるため、/a/b/ と /a/b は同じファイルを指します。dfs: または dfs:dir: の下に行を書き込めるのは DFS のトランザクションだけで、どちらかのプレフィックスを持つ SetupAccountDataset は拒否されます。

作成、更新、削除

トランザクションタイプ行うこと
DFSCreateFile8パスにファイルを内容とともに作成します
DFSUpdateFile264同じパスの内容を置き換えます
DFSDeleteFile520ファイルを削除します

既存のファイルに対する作成や、存在しないファイルの更新や削除は、有料の空操作です。手数料は徴収され、何も変わりません。したがってアプリは、作成と更新のどちらにするかを選ぶ前に、パスの行を読むべきです。

レントと返金

DFS の行は、他と同じデータセットオブジェクトです。誰でも資金を入れられる独自のデポジットアドレス(ZBS_…)を持ち、そのバイト数(プロパティと 16 進の値)に対して期間ごとにデータセットレントを支払います。mainnet の開始時の価格では、1 期間・1 MiB あたり 0.05 ZBC です。レントはデポジットから、次にオーナーから引かれ、ロンジェビティプールに入金されます。どちらも支払えなければ、他のデータセットと同様に行は無効になります。

DFS ファイルを削除すると、オーナーを含む各支払者に、デポジットのうちそれぞれの未使用分が戻ります。お金は先入れ先出しで消費されます。最も古い支払いが使い切られてから次の支払いに手が付けられるため、最も最近の支払者が最も多く取り戻します。

DFS ファイルか、保存されたファイルか

DFS ファイル保存されたファイル
サイズ最大約 64 KiB1 MiB のピース最大 100,000 個
内容トランザクションの中5 つの保持ノード上のピース。チェーンには決して置かれない
チェーン上dfs: の下の 1 つの行マニフェスト:ルート、サイズ、ピース ID
変更同じパスでの更新と削除新しい内容は新しいルートを持つので、新しいファイルになる
レントの行き先ロンジェビティプールストレージプール
アクセス制御なし:内容は公開されたトランザクションの中にある許可リスト付きの非公開フラグ

どちらの方法も、ZooBC Foundation のマシンにもアップロードした人のコンピューターにも依存しません。

ファイルを保持する 2 つの方法:トランザクションの中に入る DFS ファイルと、5 つのノードが保持するピースに分割された保存ファイル。
ファイルを保持する 2 つの方法:トランザクションの中に入る DFS ファイルと、5 つのノードが保持するピースに分割された保存ファイル。

関連項目