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

データ保持のための支払い(ロンジェビティ)

ZooBC のノードは古い履歴をプルーニングするため、通常のトランザクションが mainnet のノードにとどまるのは 30 日から 60 日です(履歴のプルーニング)。ロンジェビティのレコードは、選んだ 1 つのトランザクションとそれが入っているブロックを、レコードにお金がある限り、すべてのノードに保持させます。これによって、支払いの証明、文書のハッシュ、遠い期限を持つエスクローを、どのノードからでも読める状態に保つことができます。

レコードを開く

レコードを開く方法は 2 つあります。

  • 延命フィールド。 バージョン 2 または 3 のトランザクションは延命フィールドを持ちます。これは送信者自身のデポジットで、0 か、少なくとも 0.1 ZBC(10,000,000 アトミック単位)です。ここにデポジットがあると、その同じトランザクションのためのレコードが開かれます(トランザクションのエンベロープ)。
  • FundLongevity(タイプ 52)。どのアカウントも、どのトランザクションにでも資金を入れることができます。本体はちょうど 28 バイトで、対象トランザクションの ID(8 バイト)、金額(8)、対象を含むブロックの高さ(4)、対象のサイズ(本体とメッセージ、8)です。金額は少なくとも 0.1 ZBC でなければなりません。

最初の資金拠出は、対象がスナップショットの間隔 1 つ、mainnet では 172,800 ブロック(約 30 日)より若いうちに届かなければならず、対象の本当の高さとサイズを示していなければなりません。この時間枠によって、すべてのノードがまだ対象を保持していて、その主張を確認できることが保証されます。遅すぎる、または誤った最初の資金拠出は有料の空操作です。手数料は保持され、何も資金拠出されません。

後からの追加の拠出は同じサイズを示さなければならず、レコードが存続している間はいつでも行えます。その価格は、加重平均としてレコードの価格に混ぜ合わされます。

FundLongevity の 28 バイトの本体、最初の資金拠出の時間枠、そして 2 つの無料の間隔。
FundLongevity の 28 バイトの本体、最初の資金拠出の時間枠、そして 2 つの無料の間隔。

費用

レコードは開かれるときに、対象のサイズと 1 MiB あたりの保存価格(開始時は 0.05 ZBC)を固定します。対象のブロックからスナップショットの間隔 2 つ分が経つまでは何も支払いません。ノードはいずれにせよその間はトランザクションを保持するからです。その後は、期間ごとに 1 回次のように支払います。

rent = ceil(payload bytes × locked price ÷ 1,048,576), at least 1 unit

レントはデポジットから引かれ、ロンジェビティプールに入金されます。プールは コインベース抽選 を通じて、すべてのブロックでその一部をノードに支払います。開始時の価格では、16 バイトのペイロードは 1 期間あたり 77 単位、1,000 バイトのペイロードは 4,769 単位を支払うため、後者では最低額 0.1 ZBC のデポジットで 2,000 期間以上をまかなえます。レコードのお金がゼロになると、レコードは解放され、そのトランザクションは再びプルーニングされうるようになります。

スナップショットは、資金拠出されたトランザクションを、それを含むブロックのヘッダーとともに運ぶため、スナップショットから参加したノードもそれらを保持します(スナップショットとファストシンク)。

レコードを終わらせる

レントは支払者のお金から先入れ先出しで引かれます。最も古いデポジットが使い切られてから次のデポジットに手が付けられます。誰かがまだ支払っている限り、レコードは存続します。

早めに終わらせるには、お金がまだ使い切られていないすべての支払者が、通常の CloseLongevity(タイプ 309)で投票します。最後の 1 人が投票すると、レコードは閉じられ、その残りはロンジェビティプールに入ります。

  • 追加の拠出はその支払者の票を取り消し、新しい支払者も投票しなければなりません。
  • 鍵を失った支払者は、そのお金が尽きるまで、単にレコードを存続させ続けます。
  • 課金によって、まだ投票していなかった最後の支払者のお金が使い切られると、レコードはその課金のブロックで閉じられます。

レコードに支払われたものが支払者に戻ってくることはないため、誰も他人のデポジットを取ることはできません。CancelLongevity タイプ(53)は廃止されており、どのチェーンもそれを拒否します。ZooBC Foundation を含め、外部の当事者がレコードを閉じることはできません。

支払者のデポジットは古いものから使われ、お金の残っているすべての支払者が投票した時点でレコードは閉じられます。
支払者のデポジットは古いものから使われ、お金の残っているすべての支払者が投票した時点でレコードは閉じられます。

レコードを読む

ノードの API には、レコードと価格のためのルートがあります。/longevity、/longevity/quote、/accounts/<address>/survival、/accounts/<address>/objects、/objects/<id> です。

関連項目