IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ブルーム・テクノロジー・インコーポレイテッドの特許一覧

<>
  • 特許-元帳の証明可能プルーニングシステム 図1
  • 特許-元帳の証明可能プルーニングシステム 図2
  • 特許-元帳の証明可能プルーニングシステム 図3
  • 特許-元帳の証明可能プルーニングシステム 図4
  • 特許-元帳の証明可能プルーニングシステム 図5
  • 特許-元帳の証明可能プルーニングシステム 図6
  • 特許-元帳の証明可能プルーニングシステム 図7
  • 特許-元帳の証明可能プルーニングシステム 図8
  • 特許-元帳の証明可能プルーニングシステム 図9
  • 特許-元帳の証明可能プルーニングシステム 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-06-02
(45)【発行日】2023-06-12
(54)【発明の名称】元帳の証明可能プルーニングシステム
(51)【国際特許分類】
   H04L 9/32 20060101AFI20230605BHJP
【FI】
H04L9/32 200Z
【請求項の数】 7
(21)【出願番号】P 2022503829
(86)(22)【出願日】2020-07-21
(65)【公表番号】
(43)【公表日】2022-09-20
(86)【国際出願番号】 KR2020009588
(87)【国際公開番号】W WO2021020794
(87)【国際公開日】2021-02-04
【審査請求日】2022-01-18
(31)【優先権主張番号】10-2019-0093684
(32)【優先日】2019-08-01
(33)【優先権主張国・地域又は機関】KR
(73)【特許権者】
【識別番号】518235631
【氏名又は名称】ブルーム・テクノロジー・インコーポレイテッド
【氏名又は名称原語表記】Bloom Technology, INC.
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ジュ,ヨンヒョン
【審査官】行田 悦資
(56)【参考文献】
【文献】国際公開第2019/032891(WO,A1)
【文献】特開2015-180097(JP,A)
【文献】国際公開第2008/026238(WO,A1)
【文献】米国特許出願公開第2017/0236123(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/32
(57)【特許請求の範囲】
【請求項1】
元帳の証明可能プルーニングシステムにおいて、
連結リスト方式に従って、以前サーブツリーのルートハッシュ値Rn‐1ータブロックTに含ませ、前記ルートハッシュ値Rn‐1が含まれる前記データブロックTをハッシュしてh(T)を算出し、算出されたh(T)と前記以前サーブツリーの前記ルートハッシュ値Rn‐1を合算した後、ハッシュしてh(h(T)|Rn‐1)を算出し、算出されたh(h(T)|Rn‐1)をバイナリマークルツリー構造の各ノードに順次追加してスキュードマークルツリーを拡張生成するスキュードマークルツリー生成モジュール、
を含む元帳の証明可能プルーニングシステム。
【請求項2】
過去所定のデータブロックTが前記スキュードマークルツリーに含まれているか否かを検証するために、前記Tと前記スキュードマークルツリーの所定ルートハッシュ値h(T)(ここで、k<i<=n)を利用して順次ハッシュ値を演算して前記スキュードマークルツリーの最新ルートハッシュ値を算出し、算出された最新ルートハッシュ値が予め知っている最新ルートハッシュ値Rと一致するか対比して前記データブロックTの真偽可否を検証するノード真偽証明モジュールをさらに含むことを特徴とする請求項1に記載の元帳の証明可能プルーニングシステム。
【請求項3】
元帳の証明可能プルーニングシステムにおいて、
連結リスト方式に従って、前サーブツリーのルートハッシュ値Rn‐1ータブロックTに含ませ、前記ルートハッシュ値Rn‐1が含まれる前記データブロックTをハッシュしてh(T)を算出し、算出されたh(T)と前記以前サーブツリーの前記ルートハッシュ値Rn‐1とジャンプリンクRn‐(ベース^オフセット)を合算した後、ハッシュしてh(h(T)|Rn‐1|Rn‐(ベース^オフセット))を算出し、算出されたh(h(T)|Rn‐1|Rn‐(ベース^オフセット))をバイナリマークルツリー構造の各ノードに順次追加して、h‐スキュード(hierarchical‐skewed)マークルツリーを拡張生成するh‐スキュードマークルツリー生成モジュールを含み、
前記ジャンプリンクRn‐(ベース^オフセット)は、前記h‐スキュードマークルツリー上の所定の過去時点のノード上のルートハッシュ値であり、
前記ベースは、所定間隔ごとにジャンプリンクを割り当てるために所定のジャンプリンクの最短距離であり
前記オフセットは、現在ノードの位置nを前記ベースに分けた値の残りの値あり
前記ジャンプリンクの距離は、ベースオフセット(baseoffset)値で算出されるように構成される、
ことを特徴とする元帳の証明可能プルーニングシステム。
【請求項4】
前記h‐スキュードマークルツリー生成モジュールは、
オフセット+(ベースオフセット)*kのノードごとに前記ジャンプリンクを割り当てるように構成され、
前記kはの整数で構成されることを特徴とする請求項3に記載の元帳の証明可能プルーニングシステム。
【請求項5】
過去の所定のデータブロックTが前記h‐スキュードマークルツリーに含まれているか否かを検証するために前記Tと前記h‐スキュードマークルツリーの所定ルートハッシュ値h(T)(ここで、k<i<=n)を利用して順次ハッシュ値を演算して前記h‐スキュードマークルツリーの最新ルートハッシュ値を算出し、算出された最新ルートハッシュ値が予め知っている最新ルートハッシュ値Rと一致するかを対比して前記データブロックTの真偽可否を検証するノード真偽証明モジュールをさらに含むように構成されることを特徴とする請求項3に記載の元帳の証明可能プルーニングシステム。
【請求項6】
前記ノード真偽証明モジュールは、
下記手続きに従って前記h‐スキュードマークルツリーにハッシュ値RまたはデータブロックTが存在するのか否かを証明するように構成され、
1)最新ルートハッシュ値Rheadから過去時点方向の所定距離内のリンク(ノード)を基準にしてRの時点と同一であるか、または未来にあるリンク(ノード)のうち、最も過去の時点に存在するジャンプリンクまたはリンク(ノード)を検索し、
2)前記検索された最も過去の時点に存在するジャンプリンクまたはリンクのハッシュ値から過去時点方向の所定距離内のリンク(ノード)を基準にしてRの時点と同一であるか、または未来にあるリンク(ノード)のうち、最も過去の時点に存在するジャンプリンクまたはリンク(ノード)を検索し、
3)2)過程を前記Rに到逹するまで繰り返して、
4)前記Tを利用して前記2)及び3)で繰り返して検索されたジャンプリンクまたはリンク(ノード)の集合に対して順次未来方向に向かうルートハッシュを計算し、
5)最終的に算出されたルートハッシュ値が前記Rheadと同一であるかを対比し、その対比結果が同一であれば前記ハッシュ値Rまたは前記データブロックT前記h‐スキュードマークルツリーに存在すると証明されることを特徴とする請求項5に記載の元帳の証明可能プルーニングシステム。
【請求項7】
前記所定距離は、
ベースであることを特徴とする請求項6に記載の元帳の証明可能プルーニングシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、元帳(ledger)のプルーニング(pruning)システムに係り、具体的には、元帳の証明可能プルーニング(verifiable pruning)システムに関する。
【背景技術】
【0002】
既存のブロックチェーン(blockchain)やDAG(directed acyclic graph)のような分散元帳は、時間が経つにつれ元帳の大きさが大きくなって、ストレージ(storage)不足が大きい問題として台頭されている。
【0003】
高速化技術が発展するほどストレージ容量の不足現象はより大きい問題となっている。
【0004】
現在イーサリアム(ethereum)の場合は、20トランザクション(Tx)/秒(sec)、ビットコイン(bitcoin)は7Tx/secの処理速度を持っている。イーサリアムの場合は、1年間250GBのデータが蓄積されている。
【0005】
今後はさらに高いトランザクション処理速度も持つことができる。例えば、ブロックチェーンよりトランザクションの処理速度がずっと高いDAG(directed acyclic graph)‐AWTC(account‐wise transaction chain)元帳方式では、今後4kTx/secの目標設定も可能である。
【0006】
4kTx/secのトランザクション処理速度では、一日に生成される分散元帳の大きさが0.5kByte/Tx×4kTx/sec×60sec/min×60min/hour×24hours/dayであって、172.8GB/dayになる。
【0007】
全てのノードで毎日172.8GBのデータが積もるようになったら、時間がたつほど無数に多い容量のストレージが確保されなければならない問題点がある。
【0008】
高いトランザクション処理速度を持つ元帳構造では、元帳大きさの累積増加によるストレージ活用度の問題がより一層大きい問題となるしかない。
【0009】
処理速度が低いイーサリアム(ethereum)の場合も何年前の時点以前のデータを削除するプルーニング(pruning)をしていて、各ノードではその何年前の時点以後のデータのみを保有するようにしている。プルーニングしたデータは、古いデータは財団で別途管理しながら依頼が入ってくる度に配布する方式で利用されている。
【0010】
ここで、単純に既存のプルーニング(pruning)だけでも効率的に元帳を管理することに限界があると見られる。
【発明の概要】
【発明が解決しようとする課題】
【0011】
本発明の目的は、元帳の証明可能プルーニングシステムを提供することにある。
【課題を解決するための手段】
【0012】
第1実施例による元帳の証明可能プルーニングシステムは、連結リスト(linked list)方式に従って前記以前サーブツリーのルートハッシュ(root hash)値Rn‐1を前記データブロック(data block)Tに含ませ、前記ルートハッシュ値Rn‐1が含まれたデータブロックTをハッシュしてh(T)を算出し、算出されたh(T)と以前サーブツリーのルートハッシュ値Rn‐1を合算した後、ハッシュしてh(h(T)|Rn‐1)を算出し、算出されたh(h(T)|Rn‐1)をバイナリマークルツリー(binary merkle tree)構造の各ノードに順次追加してスキュードマークルツリー(skewed merkle tree)を拡張生成するスキュードマークルツリー生成モジュールを含むように構成されることができる。
【0013】
ここで、過去所定のデータブロックTが前記スキュードマークルツリーに含まれているかを検証するために、前記Tと前記スキュードマークルツリーの所定ルートハッシュ値h(T)(ここで、k<i<=n)を利用して順次ハッシュ値を演算して前記スキュードマークルツリーの最新ルートハッシュ値を算出し、算出された最新ルートハッシュ値が予め知っている最新ルートハッシュ値Rと一致するか対比して前記ブロックTの真偽可否を検証するノード真偽証明モジュールをさらに含むように構成されることができる。
【0014】
第2実施例による元帳の証明可能プルーニングシステムは、連結リスト(linked list)方式に従って前記以前サーブツリーのルートハッシュ(root hash)値Rn‐1を前記データブロック(data block)Tに含ませ、前記ルートハッシュ値Rn‐1が含まれたデータブロックTをハッシュしてh(T)を算出し、算出されたh(T)と以前サーブツリーのルートハッシュ値Rn‐1とジャンプリンク(jump link)Rn‐(ベース^オフセット)を合算した後、ハッシュしてh(h(T)|Rn‐1|Rn‐(ベース^オフセット))を算出し、算出されたh(h(T)|Rn‐1|Rn‐(ベース^オフセット))をバイナリマークルツリー(binary merkle tree)構造の各ノードに順次追加して、h‐スキュードマークルツリー(hierarchical‐skewed merkle tree)を拡張生成するh‐スキュードマークルツリー(hierarchical‐skewed merkle tree)生成モジュールを含むように構成されることができる。
【0015】
ここで、前記ジャンプリンクRn‐(ベース^オフセット)は、前記h‐スキュードマークルツリー上の所定過去時点のノード上のルートハッシュ値で、前記ベース(base)は、所定間隔ごとにジャンプリンクを割り当てるために予め決まったジャンプリンクの最短距離であって、前記オフセット(offset)は、現在ノードの位置n%ベースで構成されることができる。
【0016】
そして、前記ジャンプリンクの距離(dist)は、ベースオフセット(baseoffset)値に算出されるように構成されることができる。
【0017】
一方、前記h‐スキュードマークルツリー生成モジュールは、オフセット+(ベースオフセット)*kのノードごとに前記ジャンプリンクを割り当てるように構成されることができる。
【0018】
この時、前記kは、陽の整数で構成されることができる。
【0019】
一方、過去所定のデータブロックTが前記h‐スキュードマークルツリーに含まれているか否かを検証するために前記Tと前記h‐スキュードマークルツリーの所定ルートハッシュ値h(T)(ここで、k<i<=n)を利用して順次ハッシュ値を演算して前記h‐スキュードマークルツリーの最新ルートハッシュ値を算出し、算出された最新ルートハッシュ値が予め知っている最新ルートハッシュ値Rと一致するかを対比して前記ブロックTの真偽可否を検証するノード真偽証明モジュールをさらに含むように構成されることができる。
【0020】
ここで、前記ノード真偽証明モジュールは、下記の手続きにしたがって前記h‐スキュードマークルツリーにハッシュ値RまたはデータブロックTが存在するのか否かを証明するように構成され、1)最新ルートハッシュ値Rheadから過去時点方向の所定距離内のリンク(ノード)を基準にしてRの時点と同一であるか、または未来にあるリンク(ノード)のうち、最も過去の時点に存在するジャンプリンクまたはリンク(ノード)を検索し、2)前記検索された最も過去の時点に存在するジャンプリンクまたはリンクのハッシュ値から過去時点方向の所定距離内のリンク(ノード)を基準にしてRの時点と同一であるか、または未来にあるリンク(ノード)のうち、最も過去の時点に存在するジャンプリンクまたはリンク(ノード)を検索し、3)前記2)過程を前記Rに到逹するまで繰り返して、4)前記Tを利用して前記2)及び3)で繰り返して検索されたジャンプリンクまたはリンク(ノード)の集合に対して順次未来方向に向かうルートハッシュを計算し、5)最終的に算出されたルートハッシュ値が前記Rheadと同一であるかを対比し、その対比結果が同一であれば前記ハッシュ値RまたはデータブロックTがh‐スキュードマークルツリーに存在すると証明されることができる。
【0021】
ここで、前記所定距離はベースになれる。
【発明の効果】
【0022】
前述した元帳の証明可能プルーニングシステムによれば、元帳構造をスキュードマークルツリーで構成し、最新データのみを貯蔵して管理し、他のノードで提出するトランザクションの真偽を検証するように構成されることで、元帳の大きさの増加を最小化して維持することができる効果がある。
【0023】
特に、スキュードマークルツリーからアップグレードされたh‐スキュードマークルツリーに変換して元帳を管理するように構成されることで、時間がたつほど大きくなる証明用データ(proof)の大きさを画期的に減らすことができる効果がある。プルーフの大きさの縮小とともに数年前以上の古いデータの真偽検証をより少ない回数の演算ステップでもできるようにして、検証速度をさらに高められる効果がある。
【0024】
同時に、h‐スキュードマークルツリーでは、2つ以上の演算経路によって計算されたハッシュ値を相互対比して同一可否を確認するように構成されることで、新たに加えられるジャンプリンクの偽造可否を確認することができる効果がある。
【図面の簡単な説明】
【0025】
図1】本発明の実施例による元帳の証明可能プルーニングシステムのブロック構成図である。
図2】既存マークルツリーの構造図である。
図3】本発明の実施例によるスキュードマークルツリー生成アルゴリズムの概念図である。
図4】本発明の実施例によるスキュードマークルツリー生成アルゴリズムの概念図である。
図5】本発明の実施例によるh‐スキュードマークルツリー生成アルゴリズムの概念図である。
図6】本発明の実施例によるh‐スキュードマークルツリー生成アルゴリズムの概念図である。
図7】本発明の実施例によるh‐スキュードマークルツリー生成アルゴリズムの概念図である。
図8】本発明の実施例によるh‐スキュードマークルツリー生成アルゴリズムの概念図である。
図9】本発明の実施例によるh‐スキュードマークルツリー生成アルゴリズムの概念図である。
図10】本発明の実施例によるh‐スキュードマークルツリー生成アルゴリズムの概念図である。
【発明を実施するための形態】
【0026】
本発明は、多様な変更を加えることができ、様々な実施例を持つことができるところ、特定実施例を図面に例示して発明を実施するための具体的な内容について詳細に説明する。しかし、これは本発明を特定実施形態に対して限定しようとするものではなく、本発明の思想及び技術範囲に含まれる全ての変更、均等物ないし代替物を含むものとして理解しなければならない。各図面を説明しながら類似な参照符号を類似な構成要素に対して使用した。
【0027】
第1、第2、A、Bなどの用語は多様な構成要素を説明するために使われることができるが、前記構成要素は前記用語によって限定されてはならない。前記用語は一つの構成要素を他の構成要素から区別する目的のみに使われる。例えば、本発明の権利範囲を脱せずに第1構成要素は第2構成要素と命名されることができるし、同様に第2構成要素も第1構成要素と命名されることができる。及び/またはという用語は、複数の係る記載された項目の組み合わせまたは複数の係る記載された項目のいずれかの項目を含む。
【0028】
とある構成要素が他の構成要素に「連結されて」いたり「接続されて」いると言及された時は、その他の構成要素に直接連結されていたり、または接続されていることもできるが、中間に他の構成要素が存在することもできると理解しなければならない。一方、とある構成要素が他の構成要素に「直接連結されて」いたり「直接接続されて」いると言及された時は、中間に他の構成要素が存在しないものとして理解しなければならない。
【0029】
本出願で使用した用語は、単に特定実施例を説明するために使われたもので、本発明を限定しようとする意図ではない。単数の表現は文脈上明らかに違うことを意味しない限り、複数の表現を含む。本出願において、「含む」または「持つ」などの用語は、明細書上に記載された特徴、数字、段階、動作、構成要素、部品またはこれらを組み合わせたものが存在することを指定しようとするものであって、一つまたはそれ以上の他の特徴や数字、段階、動作、構成要素、部品またはこれらを組み合わせたものなどの存在または付加可能性を予め排除しないものとして理解しなければならない。
【0030】
他に断らない限り、技術的や科学的用語を含んで、ここで使われる全ての用語は、本発明が属する技術分野における通常の知識を有する者によって一般的に理解されるものと同一な意味を持っている。一般的に使われる辞典に定義されているもののような用語は、関連技術が文脈上持つ意味と一致する意味を持つものとして解釈しなければならず、本出願で明らかに定義しない限り、理想的や過度に形式的な意味で解釈されない。
【0031】
以下、本発明による好ましい実施例を添付の図面を参照して詳細に説明する。
【0032】
図1は本発明の実施例による元帳の証明可能プルーニングシステムのブロック構成図で、図2は既存マークルツリーの構造図で、図3及び図4は本発明の実施例によるスキュードマークルツリー生成アルゴリズムの概念図で、図5ないし図10は本発明の実施例によるh‐スキュードマークルツリー生成アルゴリズムの概念図である。
【0033】
先ず、図1を参照すれば、本発明の実施例による元帳の証明可能プルーニングシステムは、スキュードマークルツリー(skewed merkle tree)生成モジュール110またはh‐スキュードマークルツリー(hierarchical‐skewed merkle tree)生成モジュール120と、ノード真偽証明モジュール130を含むように構成されることができる。
【0034】
一般に、マークルツリー(merkle tree)は、ハッシュツリー(hash tree)ともいい、暗号学的ハッシュ値で構成されるツリーデータ構造を持つ。
【0035】
図2で見るように、マークルツリーは、とあるデータ(例えば、H、H、H、H、H)に対するハッシュ値(例えば、H、H、H、root)がマークルツリーに含まれていたことを証明するために使われる。すなわち、ルートノード(root node)までの経路に沿ってハッシュ値を計算して検証すればよい。最終計算値がルートハッシュ値と一致すれば証明される。例えば、Hを検証するためには、HとHを利用して経路に沿ってハッシュ値を計算検証した結果がルートハッシュ値と一致すれば証明される。
【0036】
しかし、このようなマークルツリーを利用した証明方式を利用するにあたり、ハッシュ値(H、H、H、root)のデータの大きさは小さい方だが、元々のデータ(H、H、H、H、H)は相対的にデータの大きさがとても大きいしかない。
【0037】
元帳の証明可能プルーニングシステムは、このような既存の一般的なマークルツリー構造ではなく、これよりアップグレードされたスキュードマークルツリー構造と、スキュードマークルツリー構造からさらにアップグレードされたh‐スキュードマークルツリー構造を利用して古いデータを削除するプルーニング(pruning)をすると同時に、このようなアップグレードされたマークルツリー構造だけでも古いデータの真偽可否を完璧に証明できるように構成される。
【0038】
スキュードマークルツリー構造では、各ノードは最近のデータ、例えば、一日程度のデータのみを保有したまま全てのデータの真偽可否を検証することができる。
【0039】
分散元帳システムが一日4kTx/secのトランザクション処理速度を持つと仮定すれば、一日に蓄積されるデータである172.8GBのデータのみノードに保管して、残りの以前のデータは全てプルーニングし、プルーニングされたデータは保管されたデータ、すなわち、スキュードマークルツリーのルートハッシュ値を利用して真偽可否を完璧に検証するように構成される。
【0040】
これに加え、h‐スキュードマークルツリー構造では数年以上の非常に古いデータに対してスキュードマークルツリー構造よりずっと短いプルーフ(proof)長さを持つようになる。このような証明用データ(proof)の大きさは、時間がたつにつれ大きくなるが、本発明ではプルーフの大きさ自体を縮めて検証にかかる演算負担を減らし、検証にかかる時間も減らすことができる。
【0041】
また、図1及び図3を参照すれば、スキュードマークルツリー生成モジュール110は、データブロック(data block)を利用してバイナリマークルツリー(binary merkle tree)構造のスキュードマークルツリーを生成するように構成されることができる。
【0042】
スキュードマークルツリー生成モジュール110は、データブロック(data block)Tと以前サーブツリーのルートハッシュ値Rn‐1が対を成すバイナリマークルツリー(binary merkle tree)構造の形態を持つスキュードマークルツリーを生成するように構成されることができる。
【0043】
スキュードマークルツリーの各ノードには初期データブロックTとルートハッシュ値Rn‐1が貯蔵される。
【0044】
スキュードマークルツリー生成モジュール110は、各ノードのルートハッシュ値をh(h(T)|Rn‐1)によって算出して各ノードに順次貯蔵し、スキュードマークルツリーを拡張生成するように構成されることができる。
【0045】
スキュードマークルツリー生成モジュール110は、先ず新たに生成されるデータブロックTに連結リスト(linked list)方式に従ってそれ以前のサーブツリーのルートハッシュ(root hash)値Rn‐1を含ませるように構成されることができる。
【0046】
そして、Tをハッシュしてh(T)を算出し、その算出されたh(T)と以前サーブツリーのルートハッシュ値Rn‐1を合算した後、再びハッシュしてh(h(T)|Rn‐1)を算出するように構成されることができる。スキュードマークルツリーには、h(h(T)|Rn‐1)が順次貯蔵される。
【0047】
すなわち、スキュードマークルツリーは連結リストとバイナリマークルツリーの組み合わせと見られる。
【0048】
図3において、ハッシュ値Rは一番目のデータブロックであるTとルートハッシュ初期値Rを合わせてハッシュした値である。そして、ハッシュ値Rは二番目のデータブロックであるTと一番最近のルートハッシュ値Rをハッシュした値である。Tには連結リスト方式によって一番最近のルートハッシュ値Rが含まれているので、TとRをハッシュしてRを算出することができる。このような方式でTデータブロックにはRを追加して前記過程を繰り返してスキュードマークルツリーを拡張生成するように構成される。
【0049】
一方、図1のノード真偽証明モジュール130は、スキュードマークルツリー上の過去の特定ノードに対してその真偽可否を検証するように構成されることができる。
【0050】
図4において、Tがスキュードマークルツリーに含まれていたのか否かを検証するためには、スキュードマークルツリーの最新データブロックであるTからこれに含まれたRを取得する。そして、検証のために与えられたTからその中に含まれたRを取得する。そして、Tをハッシュしてh(T)を算出し、そしてRとh(T)を合わせてハッシュすればRを算出することができる。
【0051】
ここで、もし、Tのハッシュ値h(T)を予め知っていたら、同一な方式でRを計算することができるし、h(T)も予め知っていたら、Rを利用してRを計算することができる。このように計算されたRが取得したRと同一であれば、検証対象であるTがスキュードマークルツリーに含まれているノードであることを証明することができる。
【0052】
すなわち、Tの検証はスキュードマークルツリーでh(T)とh(T)さえ知っていれば可能になる。
【0053】
これを一般化して適用すれば、ノード真偽証明モジュール130はスキュードマークルツリーで特定ノードのデータブロックTを証明するために最新のルートハッシュ値Rと中間段階のデータブロックのハッシュ値h(T)(ここで、k<i<=n)さえ予め知っていればTの真偽証明ができると見られる。
【0054】
この時、中間段階の他のデータブロックを予め知っている必要がなく、T以前のとあるデータブロックやハッシュ値に対しては知らなくてもよい。
【0055】
スキュードマークルツリー構造では、全てのデータブロックを各ノードが直接全部保有しなくても、いくつかの小さなハッシュ値だけでもデータの真偽検証が可能である。これはネットワークの負荷減少にも多く寄与するようになる。
【0056】
しかし、スキュードマークルツリーもやはり短所がある。スキュードマークルツリーの各ノードは、連結リスト方式によって直ぐ以前のサーブツリーのハッシュ値のみ保有しているので、検証プロセスでは図4のように全てのノードに対して一つずつ計算して演算しなければならない。スキュードマークルツリーは最近のデータに対する検証には有利であるが、数年単位の数千億トランザクションに対しては演算ステップが多くなって計算負荷が増加する短所がある。これを補完するために、h‐スキュードマークルツリーが利用されることができる。
【0057】
図1のh‐スキュードマークルツリー生成モジュール120は、図5で見るように各ノードが直前のルートハッシュ値を保有することに加え、それよりずっと以前のノードのルートハッシュ値に対する情報をさらに保有するように構成される。ずっと以前のノードのルートハッシュ値を過去ツリーを参照するリンクとしてジャンプリンク(jump link)と定義する。すなわち、ジャンプリンクは過去のルートハッシュ値である。
【0058】
図5で見るように、ジャンプリンクは指数関数的なノード間の距離を持つようになるが、検証にかかる長い演算ステップを省略し、直ぐ過去ジャンプリンクのデータブロックに対して検証することができるようにする。すなわち、プルーフの大きさが減って演算ステップの回数も著しく減って、数年前のノードに対しても早く検証できるようにする。
【0059】
図5のジャンプリンクをさらに保有するh‐スキュードマークルツリーの各ノード値Rは、h(h(T)|Rn‐1|Rn‐(ベース^オフセット))で整理されることができる。
【0060】
ここで、Rn‐(ベース^オフセット)は過去のある時点のノードのハッシュ値であるジャンプリンクである。
【0061】
ジャンプリンクでベース(base)は、所定間隔ごとにジャンプリンクを割り当てるために予め決まったジャンプリンクの最短距離である。ベースが3であれば3個のノード間隔でジャンプリンクが割り当てられる。
【0062】
そして、オフセット(offset)は現在ノードの位置nをベースに分けた値の残りの値、すなわち、n%ベースである。
【0063】
そして、現在ノードの位置nからジャンプリンクまでの距離(dist)はベースオフセット(baseoffset)値で算出されることができる。
【0064】
図5でベースが3でオフセットが1のジャンプリンクを例示している。
【0065】
図5を参照すれば、ジャンプリンクの距離はベースオフセットすなわち、3として3である。
【0066】
ノードRをよく見れば、Rの値はTのハッシュ値と直ぐ前のハッシュ値R、そしてジャンプリンクRを合算した後でハッシュして得られることができることが分かる。
【0067】
図6はベースが3でオフセットが2のジャンプリンクを例示している。
【0068】
図6ではジャンプリンクの距離が3として9になることが分かる。
【0069】
しかし、オフセットが2である全てのノードにジャンプリンクを割り当てる必要はない。図7のようにノード位置nでオフセット+(ベースオフセット)*kのノードのみに割り当てることができる。ここで、kは陽の整数である。上記ノード以外のノードにはジャンプリンクを割り当てないこともある。
【0070】
図7で見るようにベースが1でオフセットが1であれば、1+3*kになってR19、R13、R10、R、R、Rにジャンプリンクが割り当てられている。そして、ベースが3でオフセットが2であれば、2+3*kになってR20、R11、Rにジャンプリンクが割り当てられている。ベースが3でオフセットが3であれば、R57、R30、Rにジャンプリンクが割り当てられる。
【0071】
図8は、図7のジャンプリンクの割り当てが完了された状態を示している。ジャンプリンクの割り当ては、各オフセットがベースに至るまで繰り返し遂行されることを示す。
【0072】
一方、ブロックの検証は次のように行われることができる。
【0073】
h‐スキュードマークルツリーでルートハッシュ値Rを持っていて、ある中間ハッシュ値にアクセスできる状況において、データブロックTまたはその上位ノードRがh‐スキュードマークルツリーに含まれていたか否かを検証するためには次の手続きにしたがう。
【0074】
1)最新のルートハッシュ値から過去時点方向の適切な距離(例えば、ベース)分のリンク(ノード)を基準にしてRと同一であるか、未来にある一番過去のジャンプリンクまたは一般リンクを検索する。
【0075】
2)検索された過去のジャンプリンクまたは一般リンクのハッシュ値からまた過去時点方向の適切な距離(例えば、ベース)分をリンク(ノード)を基準にしてRと同一であるか、未来にある一番過去のジャンプリンク或いは一般リンクを検索する。この過程をRに到逹するまで繰り返す。
【0076】
3)Tを利用して上記検索されたリンクの集合に対して順に未来方向に向かうルートハッシュを計算する。もし、最終計算結果がRheadと同一であれば、検証が完了されてh‐スキュードマークルツリーに存在することが証明される。
【0077】
図9は、R59で始めてTを検証するためにRを捜すことを例示している。
【0078】
図9を参照すれば、RheadはR59であり、R59から適切な距離、すなわち、ベース3の距離分のリンク(ノード)R58、R57を値を参照し、R57からオフセット3の距離、すなわち3のジャンプリンクの中でRよりは未来にある一番過去のリンクR30を検索して照会する。
【0079】
ここで、また適切な距離、すなわち、ベース3の距離分のリンク(ノード)R29を照会する。R29でまたオフセット2の距離、すなわち、3のジャンプリンクR20とジャンプリンクR20のジャンプリンクR11を検索して照会する。ジャンプリンクR11はR29を基準にしてオフセット2のジャンプリンクの中でRよりは未来にある一番過去のリンクになる。
【0080】
そして、R11でまた適切な距離内のリンクR10、R、Rをそれぞれ検索して、最終的にRに至る。
【0081】
そして、上記検証対象であるTを利用して、また未来方向にルートハッシュ値を順次算出していく。最終算出されたルートハッシュ値がh‐スキュードマークルツリー上のR59と一致すれば、Tがh‐スキュードマークルツリー上に存在することが証明される。
【0082】
この過程で、RからR、R10、R11、R20、R29、R30、R57、R58、R59に至るまで、総9回の演算ステップが要求される。しかし、ジャンプリンクを利用しない場合は、RからR59まで全てのノードを全て演算しなければならないので、総51演算ステップが要求される。著しく演算ステップが減ることが分かるし、元帳の大きさが大きくなれば相当な演算量と演算時間が減少されることができる。
【0083】
図10は実際の具現事例であって、ベースが10であるh‐スキュードマークルツリーを示す。ジャンプリンクは10オフセットなので、10、10、10とジャンプリンクの距離が増え、距離が1999の場合、28ステップだけでも到達可能である。
【0084】
このように、元帳の証明可能プルーニングシステムは、全てのデータブロックを直接保有しなくてもハッシュ値のみでデータ検証が完璧に可能であるため、データの貯蔵量を大幅に減らすことができる。元帳も時間が経てばその大きさが顕著に大きくなるので、ジャンプリンクを利用した検索と演算が切実に必要となる。
【0085】
以上、実施例を参照して説明したが、該当技術分野における熟練された当業者は下記特許請求範囲に記載された本発明の思想及び領域から脱しない範囲内で本発明を多様に修正及び変更させることができることを理解することができる。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10