LightChain

Blockchain の4つのレイヤー


ブロックチェーンは少なくとも4つのプロトコルのスタックでモデル化されている[1]。ネットワーク、コンセンサス、ストレージ、ビューのレイヤーが積み重なっており、それぞれの出力が各上層の入力となっている。

Network Layer

システムのピア間でのトランザクションやブロックの伝搬メカニズムを処理する。

Consensus Layer

ブロック生成のための意思決定プロセス(ピア間で認められたブロックの順番(配列)を提供)。

Storage Layer

ピアがブロックチェーンからデータを読むことができる機能を提供する。

View Layer

最新のブロックから参加しているピアのデータの状態を表す。

既存のブロックチェーンの欠陥


ネットワークとコンセンサスのレイヤーにおける欠陥をまとめる。

Network Layer

既存のブロックチェーンは非構造化オーバーレイであり、ピアのIPアドレスやブロックのコンテンツ、新しいトランザクションなどを検索するための効率的なメカニズムが存在しない。

Consensus Layer

既存のブロックチェーンに対する解決策では、特定の偏った部分集合のピアたちにブロック生成の意思決定をまかせること(一部のピアのみがマイニングを行うこと)で中央集権に収束してしまう。→ selfish-mining 等を招く
また、コンセンサスレイヤーにおける確率的なフォーク解決アプローチ(フォークした先に最も多くのブロックが続いたチェーンをメインチェーンにすること)によって一貫性の問題を起こす傾向にある。このフォーク解決アプローチの確率的な性質は、メインチェーンの揮発性(ボラティリティ)によるものである。これは、他のチェーンによってメインチェーンが打ち負かされるとそれまでのブロックがすべて価値のないものと見なされるので、システムの一貫性とパフォーマンスを脅かす。従って、確率的戦術はブロック生成の確率的ファイナライズを引き起こす。つまり、ブロックの後ろにある程度のブロックが続かないとメインチェーンとしてファイナライズされたことにならない。よって、既存のブロックチェーンに対する解決策では、生成されたブロックを追加していくことは多くのブロックが後ろに続かない限り、効率的にはならない。

Sharding

ネットワーク内のノードを小さなグループに分け、各グループ内でブロックチェーンを管理する。そうすることでトランザクションを各グループで並列実行するのでスピードは向上するが、単一トランザクションを処理するための通信複雑性は O(n) となる(n はノード数)。ストレージとビューレイヤーでは、ベストな状態でメモリと時間複雑性は O(b / log n) となる(b はブロック数)。

提案する解決策(LightChain)


Network Layer

分散ハッシュテーブル(DHT)である Skip graphs[2] を用いて構造化オーバーレイを実装する。これによって、参加ピアがそれらの持つブロックやトランザクションを通信複雑性 O(log n) で効率的なアクセスと処理が可能になる(各ピアは O(log n)のメッセージでブロックやトランザクションを検索できる)。また、各データオブジェクトの最新情報は、Skip graphs オーバーレイネットワークに直接クエリを投げることで検索できる。

Skip graphs に関する記事はこちら(そのうち書きます。)

Consensus Layer

フェアでイミュータブルでセキュアである効率的なコンセンサスアプローチ Proof-of-Validation(以下:PoV) を提案。

単語 定義
フェア システム内のピアが(計算力やステークなどの)影響に関係なくコンセンサスに関わる機会が一様にあること。
イミュータブル ファイナライズされた後に合法的にコンセンサスを変えることができるピアは存在しない。
セキュア 悪意のあるノードが台帳に違法なトランザクションやブロックを作成して追加することができない。

PoV では各ブロックの検証はピアノ部分集合のみに指定されており、その集合は各ブロックのハッシュ値に基づいて一様に選ばれる。フォークを解決するために決定論的ルールを管理され、メインチェーンは決定論的流儀にとって識別される。フォークの各ブランチは LightChain によって捨てられる。この仕組みによって、メインチェーンのブロックが一度台帳に追加され、その後ろに1つブロックが続くことでブロックが評価されファイナライズされる。

Storage Layer

各ピアはトランザクションやブロックをローカルに台帳にすべて保存するよりも、Skip graphs の検索性を用いて効率的に検索することができる。また、ブロックやトランザクションのコピーを複数のピアに持たせることでより高い可用性を提供する。

View Layer

新規ピアには view introducer と呼ばれるシステムでランダムに選ばれたピアたちを提供する。view introducer は彼らの台帳のビューを共有するために参加しているピアの中から一様に選ばれる。これは、新規ピアがシステムに参加するブートストラップを促進し、ブロックチェーン全体の検証を必要とせずに即座にシステムに参加することができる。ブートストラップ後には、最新のビューが得られる。

予備知識


Skip Graph

Skip Graph はノードで構成された DHT ベースの分散データ構造である。Skip Graph ノードは 3 つの属性(数的 ID、名前 ID、IP アドレス)を持つスタンドアロン要素である。数的 ID と名前 ID はノードの識別子として知られている。Skip Graph に参加するために新しいノードはネットワークにすでに参加している任意のノードを1つ(introducer:導入者)だけ知ればよい。ネットワークに参加すると新しいノードは log n 個(n:Skip Graph の全ノード数)の他ノードの属性をえる(それらが隣接ノードとなる)。各ノードは Skip Graph の特定の数的 ID もしくは名前 ID を検索することで他ノードの IP アドレスを探し、見つけることができる。どちらも通信複雑性 O(log n) で検索できる。

システムモデル

システム内の各ピアは Skip Graph 上のノードであり、数的 ID と名前 ID はハッシュ関数を使った公開鍵のハッシュ値である。System Capacity(n) はシステム内の登録できるピア数の最大値を表す(n = O(2^n))。アセットと残高は暗号通貨アプリケーションにおいて同じものと見られているが、LightChain では異なるものと見なされている(分散 DB のような潜在的なアプリケーションを考慮しているらしい)。また、トランザクションはそのトランザクションの発注者のアセットの状態移動と見なされている。

LightChain システムモデルに参加しているピアのビューは (numID, lastBlock, state, balance) のタプルでできているテーブルである。各タプルはシステムの他のピアに関するビューを表している。lastBlock はそのピアの最も最近のトランザクションを含むブロックチェーンのブロックのハッシュ値を表す。他のピアのアセットの現在状態(ジェネシスブロックから現在のブロックまで、そのピアによって生成された全トランザクションを考慮した最新アセット値)に関する関連ピアのビューとその残りの残高は statebalance で表される。LightChain でのブロックチェーンの各性質は以下の通りに定義されている。

単語 意味
可用性 ブロックが適宜アクセス可能であること
完全性 プロパティ(ブロックチェーンに対するピアのビュー)がコンセンサスプロトコルに関わるピアによって単に新しいブロックを追加することを除いて、変更されないこと

正当なピアは LightChain プロトコルに従っているノードであり、敵対ノードは任意の点で集合的に LightChain プロトコルから故意に逸脱するノードのことである。

LightChain:Skip Graph 上の非許可型ブロックチェーン


概要

LightChain ではブロックチェーンの形成のために Skip Graph DHT を採用しており、ピア、トランザクション、ブロックが Skip Graph のノードとしてインデックス付けされている。各ピアは自身の識別子と IP アドレスを使って Skip Graph の挿入アルゴリズムを呼び出してシステムに参加する。各ピアの名前 ID と数的 ID は公開鍵のハッシュ値である。ネットワークに参加すると、対数的に他のピアを知る(通信複雑度 O(log n) でシステム内の他のピアを効率的に探すことができる。)。ネットワークに参加したピアは LightChain のランダムブートストラッピングを使ってブロックチェーンのビューを作ることができる。

トランザクションはトランザクションのオーナー(発注者)によってアセットの状態移動を表す。オーナーピアはトランザクションに状態移動を付け足し、検証者の識別子を計算し、Skip Graph 上の検証者を探し、そのトランザクションを検証するように要求する。各トランザクションが検証されるためには、システム全体で一定数の検証者に署名してもらう必要がある(検証者はセキュリティを確実にするために、各トランザクションでランダムに選ばれる。)。 これによって、ブロック生成を行うノードらは各トランザクションの検証を行う必要がない。 トランザクションが一度検証されると、オーナーはそのトランザクションを Skip Graph のノードとしてネットワークに挿入する。トランザクションの挿入はトランザクションの識別子とオーナーの IP アドレスを用いて実行される。

新しい検証済みトランザクションを見つけると、各ピアはそれをブロックに追加し(トランザクションと同様の)検証手続きを通して、そのブロックを Skip Graph のノードとして挿入する。そのとき、各トランザクションのオーナーはブロックに入った検証済みトランザクションをネットワークのノードから取り除く。トランザクションやブロックを Skip Graph 上のノードとして表すアイデアによって、ピアもしくはトランザクションの検索が行われ、ブロックがピアの IP アドレスにルーティングするように保持され、他のピアが完全に分散した方法でアクセスができるようになる。LightChain では、各ブロックとトランザクションのオーナーと検証者がそれらを複製することで可用性とアクセシビリティ、フォールトトレランスをサポートしている。

また、LightChain に参加しているピアが互いに交換したりブロックチェーンにデータを追加する操作的料金を補うために、インセンティブメカニズムとして金銭的バランスを採用している。LightChain はシステムの接続性の維持に貢献しているピアに(貢献度に応じて)報酬が支払われ、検証サービスを提供し、ブロックを生成する。加えて、誠実なピアは他のピアを監視することを奨励する。悪意のあるピアの行動を検知し、報告すると報酬がもらえる。悪意のある行動をしたピアはブラックリストに追加され、徐々にシステムから隔離されていく。

トランザクションの構造

LightChain のトランザクションの構造は以下のようになっている。トランザクションの各要素はその下にある表に示す。トランザクション間または全ブロックとブロックチェーンでの優先順位を定義するために各トランザクションに prev ポインタを使用している。これにより時間の同期が必要なくなるprev で参照されたブロックはそのトランザクション(Txとする)よりも先行しており、prev ブロックに入っている全トランザクションは Tx よりも先にコミットされていることが推定できるからだ。owner の署名は信憑性の目的で必要であり、悪意のあるピアが誠実なノードになりすまし、代わりにトランザクションを提出してしまうことを防ぐためにある。検証者の署名は次節 PoV で解説する。

\begin{align} Tx = (prev, owner, cont, search\_proof, h, \sigma) \end{align}
要素 意味
prev ブロックチェーンにコミットされたブロックのハッシュ値
owner Skip Graph のオーナーノード(そのトラクザションを作成したノード)の識別子
cont オーナーノードのアセット移動に関する記述
search_proof ネットワーク上での認証済みな検索の証明(このトンランザクションの検証者を見つけるもの)
h トランザクションのハッシュ値
σ オーナーと検証者の署名

トランザクションのハッシュ値は以下のように計算される(|| は前後要素の連結を意味する)。

\begin{align} h = H(prev || owner || cont || search\_proof) \tag{1} \end{align}

ブロックの構造

ブロックの構造もトランザクションと似ており、必要な部分を表に示している。

\begin{align} Block = (prev, owner, S, search\_proof, h, \sigma) \end{align}
要素 意味
S ブロックに入っているトランザクションの集合
h ブロックのハッシュ値
σ オーナーと検証者の署名

ブロックのハッシュ値は以下のように計算される。

\begin{align} h = H(prev || owner || S || search\_proof) \tag{2} \end{align}

Network Layer : Skip Graph

ピア、トランザクション、ブロックは Skip Graph のノードである。トランザクションとブロックの数的 ID はハッシュ値(h)であり、名前 ID は prev である。この規則により、ピアが LightChain 台帳のディレクションの前後に横切ることを可能にする。ハッシュ値(h)の数的 ID と前ブロックのポインタ prev を名前 ID に持つブロックを持っているとする。このブロックの次に繋がるブロックを持つピアの IP アドレスは Skip Graph で数的 ID が prev であるピアを検索することで得られる。同様に、1 つ前のブロックを持つピアの IP アドレスは Skip Graph で名前 ID が h のピアを検索すればよい。

これによって、各ピアはローカルの台帳の最後尾の名前 ID を検索することでブロックチェーンの後ろ(最新ブロック)の方へのビューを効率的にアップデートできる。ピアはすべてのブロックをローカルに保存しておく必要はない。むしろ 1 つブロックを持っていれば他のブロックをすべて検索することができる。図より、もし B2 を持っていたとする。その前のブロック B1 を必要とするとき、B2 の名前 ID と同じ値を数的 ID に持つブロックを検索する。検索の結果はブロック B1 のオーナーが IP アドレスと共に返す。従って、オーナーと直接通信するため効率的に検索が可能である。また、後ろのブロックも同様である。新しいトランザクションはブロックチェーンの最新のブロックを名前 ID にしているため、最新のブロックには一時的に複数のサクセッサがいるように見える。

Consensus Layer : Proof-of-Validation

PoV は LightChain で提案されたコンセンサスアルゴリズムであり、一度ブロックやトランザクションが検証されるとそれはすべてのピアで正当と見なされる。上述したようなセキュア、イミュータブル、フェアな性質を持つ。検証されたトランザクションの内容はブロックチェーンのコミットされたブロックに含まれない限り、有効または認証されたとは見なされない。

トランザクションの生成と検証

PoV はハッシュ値 h のトランザクションがランダムに選ばれた検証者たち t によって署名されている場合、正当と見なす(tSignature Threashold と呼ばれる定数プロトコルパラメタ)。トランザクション(tx)の場合、各検証者の数的 ID は以下のように一様に選ばれる。

\begin{align} v_{i} = H(tx.prev || tx.owner || tx.cont || i) \tag{3} \end{align}

$v_{i}$ は i 番目検証者の数的 ID である。トランザクションのオーナーは Skip Graph 内の検証者の数的 ID($v_{i}$)の検索を行う。もし、$v_{i}$ という ID のピアが存在していれば、 オーナーはその IP アドレスを受け取る。なければ、$v_{i}$ よりも小さい中で最も大きい ID を持つピアの IP アドレスを受け取る。どちらの場合も検証済み検索証明(search_proof)が検索経路上にある Skip Graph のピアによって作られ、オーナーに送られる。i 番目検証者の数的 ID 検索の認証済み証明は search_proof_i で示される。search_proof_i は検索経路上の Skip Graph ピアの全識別子と IP アドレスを含んでいる。$v_{i}$ 検索経路の最終ピアが i 番目の検証者に指定される。そして、そのトランザクションオーナーはそのトランザクションに全検証者の認証済み検索証明を追加し、式 1 に従ってハッシュ値を計算し、ハッシュ値に署名し、署名を \sigma に追加する。そして、検証を依頼するために検証者にコンタクトをとる。検証者はトランザクションの健全性、正当性、信憑性について評価する。(料金を補うためのオーナーのバランスコンプライアンスと同様に)トランザクション検証の結果として、トランザクションオーナーは検証者から h もしくは \suityoku の署名を受け取る。トランザクションの各性質(健全性、正当性、信憑性)は以下のようになる。

Soundness : 健全性

トランザクション(tx)はブロックチェーン上のトランザクションオーナーの最新トランザクションに先行していなければ健全と言われている。同じオーナーの最新トランザクションに先行しないということは、その prev が後続のブロックにいずれもそのオーナーのトランザクションがなく、検証、コミット済みの台帳上のブロックを指していることを意味する。新しいトランザクションはブロックチェーン上のそのオーナーの既に保存済みのトランザクションの後に続くことが要求される。これは同じアセットからの二重使用を抑制すると同様に、トランザクションの検証を一度きりの操作にする。つまり、検証済みトランザクションのオーナーは prev を元にしたトランザクションに先行する新しいトランザクションを生成しない限りそのトランザクションをブロックチェーンに追加することができる。

健全性を考慮すると、あるピアで同時に生成され検証されたトランザクションの最大1つが新しいブロックに含まれる可能性がある。一度その(同時に生成された)トランザクションの1つがブロックに入るとそれ以外のトランザクションは健全性を失い、同じブロックまたはその先のブロックに入れることはできず、再検証に行く必要がある。健全性は二重使用を防ぐことに加えて、各新しいブロックにそれらのトランザクションを入れるために一様なトランザクション生成機会を与える。

Correctness : 正当性

トランザクション(tx)に正当性があると言うには、トランザクションの cont 領域がそのオーナーのアセットの正当な状態移動を表す必要がある。暗号通貨では料金が足りているかなど。

Authenticity : 信憑性

信憑性の評価は式 1 による h の正確性の確認、そのトランザクションの全検証者の search_proof の検索によって行われる。検証者はこれらの条件が満たされていなければ信憑性がないとして検証を否定する。

Balance Compliance(⬅︎どう訳したらいい?)

検証に参加するためのインセンティブメカニズムとして LightChain は、ハッシュ値に署名して検証させるトランザクションの検証者に支払われる検証料金を考慮している。また、トランザクションの検証者を見つけるために、参加している全ての Skip Graph ピア(検証者とオーナーを除いて、search_proof によって全検証者の検索経路上にある識別子)にルーティング料金が支払われることを考慮している。トランザクションのオーナーが検証とルーティングのための料金をカバーできる十分な残高を持っていれば検証のバランスコンプライアンスの部分を通過できる。バランスコンプライアンスの検証は、検証者のビューを元に行われる。これらの料金は Sybil ピアから悪意のあるピアの間で預金を循環して使っていき、悪意のあるピアのトランザクション検証で絶え間なくシステムが混雑することを防いでいる。

トランザクションが健全性、正当性、信憑性がありそのオーナーが料金をカバーできるバランスコンプライアンスを持っていれば、検証者は h に署名し、オーナーにその署名を送る(検証者の署名は $\sigma$ に入っている)。トランザクションが検証済みとみなすには、PoV はオーナーに search_proof による検証者によって t 個の署名が含むことを要求する。検証済みトランザクションはオーナーによって Skip Graph ノードとして挿入され、ブロックに含まれるためにシステムに参加する他ピアによってアクセス可能になる。トランザクションの数的 ID は h であり、名前 ID は prev である。これにより Skip Graph ピアは Skip Graph オーバーレイ内の台帳のブロックのハッシュ値で名前 ID の検索を実行しそのブロックを指す全ての新しいトランザクションを見つけることができる。

ブロックの生成と検証

ブロックを生成するピアをブロックオーナーと呼ぶ。ブロックオーナーは、まだどのブロックチェーンにコミットされた検証済みブロックにも含まれていない新しいトランザクションを最低 min_tx 個集める。それらを新しいブロックに入れ検証のためにそのブロックを送信する。集めたトランザクショントランザクションは式 2 で言う $S$ を意味する(min_tx はアプリケーションに依存する LightChain の固有値パラメタである)。トランザクションの prev ポインタより柔軟に選択できるトランザクションオーナーとは対照的に、ブロックオーナーは常に prev をブロックチェーンの現在の最新ブロックに設定する必要がある。トランザクションと同様に、PoV ではブロックはそのハッシュ値(h)が t 個のランダムに選ばれた検証者によって署名されていることで検証済みと言う。検証させるにはブロックオーナーは下式に示すような $i$ 番目検証者の数的 ID を計算する。

\begin{align} v_i = H(prev || owner || S || i) \tag{4} \end{align}

トランザクションの検証と同様に、ブロックオーナーは Skip Graph 内の検証者を探し、検証者の検索証明を search_proof に入れ、ブロックのハッシュ値を計算し、h の自身の署名を $\sigma$ に入れることによって、ブロックの構造を完成させる。ブロックオーナーは各検証者に検証を要求する。ブロックオーナーが PoV 検証者らから t 個の署名を受け取ったら、そのブロックは検証を通過したと言える。検証リクエストを受け取ると各 PoV 検証者はブロックの信憑性と一貫性を確認し( S に含まれる全トランザクションの信憑性と健全性と同様に)ブロックの信憑性評価はトランザクションと同様に行われる。

Consistency : 一貫性

もし、prev ポインタがブロックチェーンの最新ブロックを指していれば、そのブロックは一貫性があると言える。検証者のビュー間の不一致は、後に述べる fork-free メカニズム によって処理される。しかし、ブロックチェーンが新しいブロックの検証中に更新されるかもしれない。ランダムに選ばれたブロックの PoV 検証者は検証フェーズでその一貫性を評価するが、ブロックチェーンの更新は検証手続き中のそのブロックは一貫性を失う。そのような一貫性のないブロックの検証はブロックチェーンのフォークを引き起こす。この問題を解決するために、もし検証者が検証のどこかの段階で潜在的なフォークを検知したら、検証を終了しオーナーに通知する。潜在的なフォークとは他のブロックが検証下のブロックを打ち負かし新しいブロックが先に続いた事態が発生した場合を意味する。これはブロックの検証者は現在のブロックチェーンの最新ブロックのハッシュ値の名前 ID を検索することで、検証者らのビューを更新する必要がある。潜在的なフォークの例を下図に示す。$B_5$ は検証を行なっているが他のブロック($B_4$)が検証において $B_5$ を打ち負かし、新しいブロックチェーンの末端になることを検知すると検証を中止する。

ブロックの構造が信憑性があり、一貫性があり、S に入っている全トランザクションが健全で信憑性がある場合、検証者は h に署名し、オーナーはそれを $\sigma$ に入れる。PoV はもし $\sigma$ 領域に t 個の署名が含まれていれば、そのブロックを検証済みとみなす。その後、オーナーはノードとして Skip Graph オーバーレイに挿入する。LightChain ではインセンティブメカニズムとして、ブロックのオーナーは検証済みでブロックチェーンにコミット済みのブロックになるとブロック生成報酬を得る。この報酬は LightChain であらかじめ固定されており、ピアが累進的にブロック生成に参加することを推奨するために働く。この報酬はルーティングや検証の料金よりも大きく設定している。また、システムに参加したピアもすぐにブロック生成に参加することができる。

Fork-free メカニズム

同時に検証されたブロックによって生じたフォークを解決するために、LightChain はフォーク上の最もハッシュ値の小さいブロックだけをフォローするように示す決定論アプローチを規定する。

上図の場合、$B_4$ と $B_5$ のハッシュ値を比較し、より小さいハッシュ値を持つブロックがコミットされる。フォークが発生したブロックのうち最もハッシュ値の小さいブロックを「勝ブロック」、それ以外を「負ブロック」と呼ぶ。負ブロックのオーナーはそれを Skip Graph から取り除き、勝ブロックに含まれたトランザクションを捨てることで彼らの持つトランザクションの集合を更新する。そして、min_tx までトランザクションが集まったら再び新しいブロックを作るための検証手続きを始める。負ブロックのオーナーはブロック生成の報酬を得ることもないが、残高が減ることもない。台帳に新しく追加された検証済みブロックは、さらにフォークによる競争は発生せず、コミットされ、効果がありファイナライズされることを確実にするには LightChain はそのブロックの後ろに1つだけブロックが追加されるのを待つ。これによって、そのブロックの深さの全フォークは潜在的なフォークと見なされ、それらは PoV の入っている全トランザクションの貢献(cont)と料金がブロック自身に関連した料金と報酬と同時に有効になる。

Storage Layer : Replication for better efficiency and availability

LightChain では、各トランザクションやブロックは関連するオーナーのローカルストレージに保存され、また Skip Graph ノードとして表される。各ピアは必要に応じてトランザクションやブロックを検索し、それをオーバーレイから効率的に検索する。より効率的にするためにトランザクションオーナーはコミット済みブロックにそのトランザクションが入ったらオーバーレイからそれを取り除き、ブロック内に入れられることを待っているトランザクションリストから取り除く。LightChain のピアはオンラインとオフライン状態を変更する不安定なたいしょうとしてみなしている。そんな不安定な中でトランザクションとブロックの可用性を提供するためにトランザクションの PoV 検証者はそれらをローカルストレージに複製を保存し、オーバーレイのノードとして表し、他のピアからのクエリに反応することで対応する複製として機能する。

View Layer : Randomized Bootstrapping

LightChain でのピアのビューは $(numID, lastBlock, state, balance)$ のタプルのテーブルでできている。各ビューのテーブルのエントリは numID を持つシステム内の単一ピアを表しており、アセットの現在状態は state によって決定され、残高は balance で表す。lastBlock はそのピアの最近のトランザクションが入っているブロックチェーンのブロックを表す。

新しいピアがネットワークに参加するための view introducer はブロックチェーンのビューを共有するためにランダムに選ばれたピアの集合である。参加するにあたって新しいピアは以下の式の計算により view introducer の数的 ID を求める。

\begin{align} view\_intro_i = H(new\_peer.numID || i) \tag{5} \end{align}

そして新規ピアは view_intro_i の数的 ID の検索を行い、結果からそのピアらと通信を行いブロックチェーンを得る。新規ピアは t 個の一致するビューを得るまで反復して検索を行う。

Direct retrieval of the latest state

他ピアのアセットビュー全体の更新を追跡することは、新しいブロックでローカルビューを更新し続ける必要がある(既存の解決策の大半でもっともらしい仮定である)。しかし、順番にブロックを検索しビューを更新していくことに加えて、LightChain は各ピアが他ピアの最新アセット状態を台帳の新しいブロックの後を追う必要なく、直接検索することができる。これは複数の Skip Graph ノードを持つ各ブロックの追加表現によってなされる。つまり、ブロックに入っているトランザクションごとに行われるこれらの追加ノードが同じブロックのトランザクションの1つを表すため、それらをそのブロックの関連したトランザクションポインタと呼ぶ。これによって、コミット済みブロックに入った各トランザクションはトランザクションポインタノードによって表される。トランザクションポインタノードの名前 ID と数的 ID は tx.ownerBlock.h である。各ブロックに関連したトランザクションポインタノードは、ブロックオーナーによって挿入させ PoV 検証者に複製される。これによって他ピアのアセットの最新状態を知ることのみに関心のあるピアに tx.owner は、Skip Graph 内の検索目標として tx.owner の名前 ID でトランザクションポインタの検索を実行する。この検索はブロックオーナーかブロックのコピーを持っている PoV 検証者が答える。そのアセットの最新更新を追跡するためには、ブロックオーナーと検証者はどちらも台帳の新しくコミットされrたブロックに一致するアセットが現れたら関連するトランザクションポインタを倒す必要がある。オーバーレイからポインタノードを倒すには Skip Graph のノード削除操作をすればよい。

[0] : LightChain: A DHT-based Blockchain for Resource Constrained Environments
[1] : On Scaling Decentralized Blockchains
[2] : Skip graphs