LOCUS CHAIN 技術シリーズ 5:検証可能なプルーニング 第1章
原文标题:《LOCUS CHAIN TECH SERIES 5: Verifiable Pruning Chapter 1.》
作者:LOCUS CHAIN FOUNDATION
编译:ChainCatcher
データの局所性を活用する:帳簿のシャーディングと検証可能なプルーニング
シャーディングデータの局所性:帳簿のシャーディング
従来の意味でのブロックチェーンでは、帳簿は単一のチェーンの形式です。 各ノードは、既存のデータと新しいデータを含むすべての帳簿データを保存して、データの完全性を確認する必要があります。
しかし、holding-all-ledgerモデルはシャーディング帳簿には適用できません。本質的に、各独立したシャードは他のシャードについての理解がゼロであるべきです。ノードは、現在のシャードに含まれるトランザクションのみを検証します。シャーディングコンセンサスは、シャード内のアカウントから発信されたトランザクションのみを処理します。
この特性は、ノードが他のシャードに関するデータを安全に削除(または「プルーニング」)できることも意味します。シャード間のトランザクションのような通信は、他のシャードに関するデータをノードに送信しますが、これらのデータは一時的であり、ローカルストレージに長期間保存する必要はありません。
帳簿のシャーディングは、各ノードのローカルストレージのサイズを効果的に削減し、シャードの数を減少させます。
興味に基づくデータの局所性
データ(トランザクションやブロック)の完全性は帳簿に基づいて確認されます。実際には、検証には(非常に)小さな部分の帳簿データが必要です。たとえば、各新しいデータは実際にはチェーン上で最近検証されたデータとのみ検証されます。古いデータはそこに安全に保持されますが、最新データの完全性が保護されると、それらは主に非アクティブな状態にあります。
この特性は興味深い問題を提起します;古いデータを一時的に削除できるとしたらどうなるでしょうか?Locus Chainはこの問題を検証可能なプルーニングの概念として説明しています。検証可能なプルーニングを通じて、Locus Chainノードはローカルストレージからほとんどの興味のないトランザクションやブロックを削除(またはプルーニング)できます。
検証可能なプルーニング
検証可能なプルーニングは、ブロックチェーンのデータ検証機能に影響を与えずに、ローカル環境で過去の特定の期間の以前のデータを削除(プルーニング)する技術です。
ノードがデータブロックを削除し、後で再取得する場合、そのノードはデータを再度検証する必要があります。従来のブロックチェーンの意味では、データブロックを検証するには、チェーン上のすべての処理されたデータブロックが必要であり、これは大量の計算を要します。
Locus Chainの検証可能なプルーニングは、すべての以前のデータブロックをスキャンすることなく、データブロックを効果的に検証することに関するものです。検証可能なプルーニングは、特許取得済みの独自のデータ構造である階層的歪んだマークルツリー(H-SMT)を使用しており、データ検証のオーバーヘッドを大幅に削減します。検証可能なプルーニングを使用すると、データブロックの検証にはわずかに以前のデータブロックが必要で、約log10(N)程度です。必要なデータの量は非常に少なく、1秒未満で必要なすべてのブロックを検証できます。
たとえば、Locus Chainノードが興味のない古いトランザクションを特定した場合、そのノードはそのトランザクションを検証するために必要な他のトランザクションのセットを特定できます。トランザクションセットは十分に小さく、次回のコンセンサス前に取得して検証することができます。
検証可能なプルーニングは帳簿のストレージスペースを節約できます。さらに、検証可能なプルーニングはノードの迅速な起動をサポートします。Locus Chainでは、ノードは現在のヘッダーの完全性を検証するために、以前のブロックのごく一部のみを使用します。新しいノードは数回のコンセンサスでシャーディングに参加できます。
データの所有権と責任
検証可能なプルーニングは、興味のないデータをプルーニングできます。言い換えれば、ノードは興味のあるデータをプルーニングしてはいけません。典型的なプルーニングできないデータは、ノード所有者アカウントや保留中のアカウントに関するトランザクションです。
各ノードには所有者アカウントがあります。ノードは未操作のノードの保留中アカウントを持つ可能性があります。ノードは関連するアカウントに関するデータを追跡し、必要に応じて他のノードにデータを提供する必要があります。
プルーニングはすべてのノードの基本的な操作です。特にIoTモジュールなどの低容量ノードはプルーニングを活用できます。一方、十分なストレージスペースを持つノードは、他のノードのために成果ノードとして貢献できます。














