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

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

▶ 韓國電子通信研究院の特許一覧

特開2024-61645ファウンテンコードを用いたブロックチェーントランザクションデータ格納方法およびそのための装置
<>
  • 特開-ファウンテンコードを用いたブロックチェーントランザクションデータ格納方法およびそのための装置 図1
  • 特開-ファウンテンコードを用いたブロックチェーントランザクションデータ格納方法およびそのための装置 図2
  • 特開-ファウンテンコードを用いたブロックチェーントランザクションデータ格納方法およびそのための装置 図3
  • 特開-ファウンテンコードを用いたブロックチェーントランザクションデータ格納方法およびそのための装置 図4
  • 特開-ファウンテンコードを用いたブロックチェーントランザクションデータ格納方法およびそのための装置 図5
  • 特開-ファウンテンコードを用いたブロックチェーントランザクションデータ格納方法およびそのための装置 図6
  • 特開-ファウンテンコードを用いたブロックチェーントランザクションデータ格納方法およびそのための装置 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024061645
(43)【公開日】2024-05-07
(54)【発明の名称】ファウンテンコードを用いたブロックチェーントランザクションデータ格納方法およびそのための装置
(51)【国際特許分類】
   G06F 11/10 20060101AFI20240425BHJP
   G06F 16/182 20190101ALI20240425BHJP
【FI】
G06F11/10 644
G06F16/182
【審査請求】有
【請求項の数】20
【出願形態】OL
(21)【出願番号】P 2023176210
(22)【出願日】2023-10-11
(31)【優先権主張番号】10-2022-0136501
(32)【優先日】2022-10-21
(33)【優先権主張国・地域又は機関】KR
(31)【優先権主張番号】10-2023-0106652
(32)【優先日】2023-08-16
(33)【優先権主張国・地域又は機関】KR
(71)【出願人】
【識別番号】596180076
【氏名又は名称】韓國電子通信研究院
【氏名又は名称原語表記】Electronics and Telecommunications Research Institute
【住所又は居所原語表記】218,Gajeong-ro Yuseong-gu Daejeon 34129,Republic of Korea
(74)【代理人】
【識別番号】100120031
【弁理士】
【氏名又は名称】宮嶋 学
(74)【代理人】
【識別番号】100107582
【弁理士】
【氏名又は名称】関根 毅
(74)【代理人】
【識別番号】100152205
【弁理士】
【氏名又は名称】吉田 昌司
(72)【発明者】
【氏名】チェ、ビョン-ジュン
(72)【発明者】
【氏名】イ、ミョン-チョル
(57)【要約】      (修正有)
【課題】ブロックチェーンノードの数の変化にロバストなブロックチェーントランザクションデータ分散格納方法およびそのためのブロックチェーントランザクションデータ格納装置を提供する。
【解決手段】ブロックチェーントランザクションデータ格納方法は、エンコーディンググループに相応するトランザクションブロックを選択するステップと、前記トランザクションブロックをファウンテン符号化(Fountain encoding)して参加ノードそれぞれに相応する少なくとも1つ以上のエンコーディングチャンクを生成するステップと、前記参加ノードのうちの1つに相応する前記少なくとも1つ以上のエンコーディングチャンクを格納するステップと、を含む。
【選択図】図4
【特許請求の範囲】
【請求項1】
ブロックチェーントランザクションデータ格納装置によって行われるブロックチェーントランザクションデータ格納方法において、
エンコーディンググループに相応するトランザクションブロックを選択するステップと、
前記トランザクションブロックをファウンテン符号化(Fountain encoding)して参加ノードそれぞれに相応する少なくとも1つ以上のエンコーディングチャンクを生成するステップと、
前記参加ノードのうちの1つに相応する前記少なくとも1つ以上のエンコーディングチャンクを格納するステップと
を含むことを特徴とするブロックチェーントランザクションデータ格納方法。
【請求項2】
前記トランザクションブロックの少なくとも1つ以上のシステマティックトランザクションブロックを選択するステップと、
前記少なくとも1つ以上のシステマティックトランザクションブロックをシステマティックトランザクションブロックセットに格納するステップとをさらに含むことを特徴とする請求項1に記載のブロックチェーントランザクションデータ格納方法。
【請求項3】
前記トランザクションブロックのうち前記システマティックトランザクションブロックを除いた残りは削除されることを特徴とする請求項2に記載のブロックチェーントランザクションデータ格納方法。
【請求項4】
前記少なくとも1つ以上のエンコーディングチャンクは、
前記参加ノードそれぞれに相応する識別情報に基づいて、前記トランザクションブロックの一部を擬似ランダムに(pseudo-randomly)選択するエンコーディングベクトル生成器(Encoding Vector Generator;EVG)を用いて生成されることを特徴とする請求項3に記載のブロックチェーントランザクションデータ格納方法。
【請求項5】
前記少なくとも1つ以上のシステマティックトランザクションブロックは、
前記参加ノードそれぞれに相応する識別情報に基づいて、前記トランザクションブロックの一部を擬似ランダムに(pseudo-randomly)選択するシステマティックインデックス生成器(Systematic Index Generator;SIG)を用いて選択されることを特徴とする請求項4に記載のブロックチェーントランザクションデータ格納方法。
【請求項6】
前記エンコーディングベクトル生成器およびシステマティックインデックス生成器は、
それぞれ、前記識別情報のほか、前記参加ノードそれぞれに相応する帯域幅情報および格納容量情報をさらに考慮して動作することを特徴とする請求項5に記載のブロックチェーントランザクションデータ格納方法。
【請求項7】
前記参加ノードのうち他のノードに相応するエンコーディングチャンクを検証する検証セット(verifying set)を格納するステップをさらに含むことを特徴とする請求項1に記載のブロックチェーントランザクションデータ格納方法。
【請求項8】
前記参加ノードに新たなノードが追加される場合、
既に格納された前記少なくとも1つ以上のエンコーディングチャンクをそのまま維持したまま、前記新たなノードに相応するエンコーディングチャンクのみ新たに生成して前記検証セットに追加する検証値を生成に用いることを特徴とする請求項7に記載のブロックチェーントランザクションデータ格納方法。
【請求項9】
前記参加ノードの個数が再エンコーディング条件を満たすか否かを判断するステップと、
前記再エンコーディング条件が満たされる場合、前記トランザクションブロックを復元した後、再度エンコーディングするステップとをさらに含むことを特徴とする請求項3に記載のブロックチェーントランザクションデータ格納方法。
【請求項10】
前記再エンコーディング条件は、
前記参加ノードの個数の増加に相応して前記エンコーディンググループに含まれるトランザクションブロックの個数を増加させる第1条件、または前記参加ノードの個数の減少に相応して前記エンコーディンググループに含まれるトランザクションブロックの個数を減少させる第2条件、のいずれか1つであることを特徴とする請求項9に記載のブロックチェーントランザクションデータ格納方法。
【請求項11】
ブロックチェーントランザクションデータ生成装置によって行われるブロックチェーントランザクションデータ生成方法において、
要請されたトランザクションブロックがシステマティックトランザクションブロックセットに含まれるか否かを判断するステップと、
前記システマティックトランザクションブロックセットに含まれない場合、前記要請されたトランザクションブロックが他の参加ノードの少なくとも1つのシステマティックトランザクションブロックセットに含まれるか否かを判断するステップと、
前記他の参加ノードの少なくとも1つのシステマティックトランザクションブロックセットに含まれない場合、トランザクションブロックをファウンテン符号化(Fountain encoding)して生成されたエンコーディングチャンクを前記他の参加ノードの少なくとも一部から受信するステップと、
前記エンコーディングチャンクをデコーディングして前記要請されたトランザクションブロックを復元するステップと
を含むことを特徴とするブロックチェーントランザクションデータ生成方法。
【請求項12】
前記要請されたトランザクションブロックは、
前記システマティックトランザクションブロックセットに含まれた場合、前記システマティックトランザクションブロックセットから読出して返されることを特徴とする請求項11に記載のブロックチェーントランザクションデータ生成方法。
【請求項13】
前記要請されたトランザクションブロックは、
前記他の参加ノードの少なくとも1つのシステマティックトランザクションブロックセットに含まれた場合、前記他の参加ノードのうち前記要請されたトランザクションブロックを保有したノードから提供されて(by being provided)返されることを特徴とする請求項11に記載のブロックチェーントランザクションデータ生成方法。
【請求項14】
前記他の参加ノードの少なくとも1つのシステマティックトランザクションブロックに含まれるか否かは、
前記他の参加ノードそれぞれに相応する識別情報に基づいて、前記トランザクションブロックの一部を擬似ランダムに(pseudo-randomly)選択するシステマティックインデックス生成器(Systematic Index Generator;SIG)を用いて決定されることを特徴とする請求項11に記載のブロックチェーントランザクションデータ生成方法。
【請求項15】
1つ以上のプロセッサと、
前記1つ以上のプロセッサによって実行される少なくとも1つ以上のプログラムを格納する実行メモリとを含み、
前記少なくとも1つ以上のプログラムは、
エンコーディンググループに相応するトランザクションブロックを選択し、
前記トランザクションブロックをファウンテン符号化(Fountain encoding)して参加ノードそれぞれに相応する少なくとも1つ以上のエンコーディングチャンクを生成し、
前記参加ノードのうちの1つに相応する前記少なくとも1つ以上のエンコーディングチャンクを格納することを特徴とするブロックチェーントランザクションデータ格納装置。
【請求項16】
前記少なくとも1つ以上のプログラムは、
トランザクションブロックの少なくとも1つ以上のシステマティックトランザクションブロックを選択し、
前記少なくとも1つ以上のシステマティックトランザクションブロックをシステマティックトランザクションブロックセットに格納することを特徴とする請求項15に記載のブロックチェーントランザクションデータ格納装置。
【請求項17】
前記トランザクションブロックのうち前記システマティックトランザクションブロックを除いた残りは削除されることを特徴とする請求項16に記載のブロックチェーントランザクションデータ格納装置。
【請求項18】
前記少なくとも1つ以上のエンコーディングチャンクは、
前記参加ノードそれぞれに相応する識別情報に基づいて、前記トランザクションブロックの一部を擬似ランダムに(pseudo-randomly)選択するエンコーディングベクトル生成器(Encoding Vector Generator;EVG)を用いて生成されることを特徴とする請求項17に記載のブロックチェーントランザクションデータ格納装置。
【請求項19】
前記少なくとも1つ以上のシステマティックトランザクションブロックは、
前記参加ノードそれぞれに相応する識別情報に基づいて、前記トランザクションブロックの一部を擬似ランダムに(pseudo-randomly)選択するシステマティックインデックス生成器(Systematic Index Generator;SIG)を用いて選択されることを特徴とする請求項18に記載のブロックチェーントランザクションデータ格納装置。
【請求項20】
前記少なくとも1つ以上のプログラムは、
前記参加ノードのうち他のノードに相応するエンコーディングチャンクを検証する検証セット(verifying set)を格納することを特徴とする請求項17に記載のブロックチェーントランザクションデータ格納装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ブロックチェーントランザクションデータ格納システムに関し、特に、ブロックチェーントランザクションデータをエンコーディングして生成されたエンコーディングチャンクを分散格納する分散格納システム技術に関する。
【背景技術】
【0002】
ビットコイン(Bitcoin)の登場以来大きく注目されているブロックチェーン技術は、銀行などに信頼される第三者の中継なしに、ネットワークのユーザ間の安全な取引を可能にするプロトコルである。ネットワークに参加するユーザの一部が悪意的な行動(例えば、電子マネーを二重に支払うダブルスペンディングアタック(double spending attackなど)をしうるにもかかわらず、ブロックチェーン技術は、暗号学的技術を利用して安全な取引を可能にする。ブロックチェーン技術の核心アイデアは、すべてのユーザが1つの統一された帳簿を合意して共有させることにより、それぞれのユーザが取引の有効性を帳簿の対照により検証できるようにして異常な取引を遮断することである。ブロックチェーン技術は、銀行などに信頼される第三者に依存しなくても、ノードがピーツーピー(P2P;Peer to Peer)ネットワークを介して無欠性を検証して、第三者の仲介費用が発生する不必要な過程を省略することができる。
【0003】
基本的に、ブロックチェーンは、格納されたデータを削除できず、単にデータを追加することのみ可能なアペンドオンリー(append-only)技術であり、すべてのノードが同じデータを有することでデータの無欠性を維持する。このため、各ノードが必要とする格納容量が時間経過とともに次第に大きくなり、これは十分な格納容量を有し得ない多くのノードがブロックチェーンに容易に参加できないようにする障害物になる。例えば、2022年8月現在、ビットコインネットワークにフルノードとして参加する場合、約400GBの大きな格納空間が必要になり、年間約50GBの格納容量が追加的に必要になる。ブロックチェーン技術の核心価値である脱中央性を維持するには、多くのノードがネットワークに参加することが必須であることを勘案すれば、各ノードが格納すべきデータのサイズを減少させる必要がある。
【0004】
一方、分散格納システムは、サイズの大きいデータを小さい格納容量を有する多数のノードに分けて格納するシステムである。分散格納システムでは、一般的にノードの一部にアクセス不可能な場合に備えて、符号化技術が適用される。この時、符号化技術は、元データに特定の数学的構造を有するパリティを追加して、全体データの一部にアクセスできない時にもパリティを介して全体データを読出し可能にする技術である。
【0005】
ブロックチェーントランザクションデータを分散格納する場合、ブロックチェーンの格納空間不足の問題を解決するために、格納されるトランザクションデータに分散格納システムに適用される符号化技術を適用した研究がなされてきている。符号化技術が適用されると、各ノードは、トランザクションデータをすべて格納するのではなく、エンコーディングされたデータの一部を格納して各ノードの格納空間の負担が低減される。この時、符号化技術は、リード・ソロモン符号(Reed-Solomon code)やファウンテン符号(Fountain code)などが考えられた。ファウンテンコード(Fountain code)は、消去コード(erasure code)の一種で、レートレスイレイジャーコード(rateless erasure code)ともいい、与えられた個数のソースシンボルから潜在的に無限のエンコーディングシンボルを作ることができる。
【0006】
特に、ブロックチェーンシステムでは頻繁なノード参加/離脱が発生するが、既存の技術は、ブロックチェーンノードの数の変化がある度に、元データを復旧し、これを新たにエンコーディングする過程が必要で計算複雑度を高めるというデメリットがある。同じく、ファウンテンコードを用いる従来技術の場合にも、ノードの動的なノード参加/離脱の状況で既存のノードが新規ノードの担当するトランザクションデータを得るためには、複雑な演算が必要であった。また、ブロックチェーントランザクションデータをエンコーディングして分散格納する場合、クライアントがトランザクションデータを読むのに多くの通信および計算の負担が存在するというデメリットがあった。
【発明の概要】
【発明が解決しようとする課題】
【0007】
本発明の目的は、ブロックチェーンノードの数の変化にロバストなブロックチェーントランザクションデータ分散格納技術を提供することである。
【0008】
また、本発明の目的は、エンコーディングベースでブロックチェーンネットワークに参加するノード(ユーザ)の格納空間の負担を低減しながらも、容易に元データを得ることができるようにすることである。
【0009】
さらに、本発明の目的は、頻繁なノードの参加と離脱の状況でも低い計算複雑度でトランザクションデータの可用性(availability)を維持することである。
【課題を解決するための手段】
【0010】
上記の目的を達成するための、本発明によるブロックチェーントランザクションデータ格納方法は、エンコーディンググループに相応するトランザクションブロックを選択するステップと、前記トランザクションブロックをファウンテン符号化(Fountain encoding)して参加ノードそれぞれに相応する少なくとも1つ以上のエンコーディングチャンクを生成するステップと、前記参加ノードのうちの1つに相応する前記少なくとも1つ以上のエンコーディングチャンクを格納するステップとを含む。
【0011】
この時、前記ブロックチェーントランザクションデータ格納方法は、ブロックチェーントランザクションデータ格納装置によって行われる。
【0012】
この時、前記ブロックチェーントランザクションデータ格納方法は、前記トランザクションブロックの少なくとも1つ以上のシステマティックトランザクションブロックを選択するステップと、前記少なくとも1つ以上のシステマティックトランザクションブロックをシステマティックトランザクションブロックセットに格納するステップとをさらに含むことができる。
【0013】
この時、前記トランザクションブロックのうち前記システマティックトランザクションブロックを除いた残りは削除可能である。
【0014】
この時、前記少なくとも1つ以上のエンコーディングチャンクは、前記参加ノードそれぞれに相応する識別情報に基づいて、前記トランザクションブロックの一部を擬似ランダムに(pseudo-randomly)選択するエンコーディングベクトル生成器(Encoding Vector Generator;EVG)を用いて生成される。
【0015】
この時、前記少なくとも1つ以上のシステマティックトランザクションブロックは、前記参加ノードそれぞれに相応する識別情報に基づいて、前記トランザクションブロックの一部を擬似ランダムに(pseudo-randomly)選択するシステマティックインデックス生成器(Systematic Index Generator;SIG)を用いて選択される。
【0016】
この時、前記エンコーディングベクトル生成器およびシステマティックインデックス生成器は、それぞれ、前記識別情報のほか、前記参加ノードそれぞれに相応する帯域幅情報および格納容量情報をさらに考慮して動作できる。
【0017】
この時、前記ブロックチェーントランザクションデータ格納方法は、前記参加ノードのうち他のノードに相応するエンコーディングチャンクを検証する検証セット(verifying set)を格納するステップをさらに含むことができる。
【0018】
この時、前記参加ノードに新たなノードが追加される場合、既に格納された前記少なくとも1つ以上のエンコーディングチャンクをそのまま維持したまま、前記新たなノードに相応するエンコーディングチャンクのみ新たに生成して前記検証セットに追加する検証値を生成に用いることができる。
【0019】
この時、前記ブロックチェーントランザクションデータ格納方法は、前記参加ノードの個数が再エンコーディング条件を満たすか否かを判断するステップと、前記再エンコーディング条件が満たされる場合、前記トランザクションブロックを復元した後、再度エンコーディングするステップとをさらに含むことができる。
【0020】
この時、前記再エンコーディング条件は、前記参加ノードの個数の増加に相応して前記エンコーディンググループに含まれるトランザクションブロックの個数を増加させる第1条件、または前記参加ノードの個数の減少に相応して前記エンコーディンググループに含まれるトランザクションブロックの個数を減少させる第2条件、のいずれか1つであってもよい。
【0021】
また、本発明によるブロックチェーントランザクションデータ生成方法は、要請されたトランザクションブロックがシステマティックトランザクションブロックセットに含まれるか否かを判断するステップと、前記システマティックトランザクションブロックセットに含まれない場合、前記要請されたトランザクションブロックが他の参加ノードの少なくとも1つのシステマティックトランザクションブロックセットに含まれるか否かを判断するステップと、前記他の参加ノードの少なくとも1つのシステマティックトランザクションブロックセットに含まれない場合、トランザクションブロックをファウンテン符号化(Fountain encoding)して生成されたエンコーディングチャンクを前記他の参加ノードの少なくとも一部から受信するステップと、前記エンコーディングチャンクをデコーディングして前記要請されたトランザクションブロックを復元するステップとを含む。
【0022】
この時、前記ブロックチェーントランザクションデータ生成方法は、ブロックチェーントランザクションデータ生成装置によって行われる。
【0023】
この時、前記要請されたトランザクションブロックは、前記システマティックトランザクションブロックセットに含まれた場合、前記システマティックトランザクションブロックセットから読出して返される。
【0024】
この時、前記要請されたトランザクションブロックは、前記他の参加ノードの少なくとも1つのシステマティックトランザクションブロックセットに含まれた場合、前記他の参加ノードのうち前記要請されたトランザクションブロックを保有したノードから提供されて(by being provided)返される。
【0025】
この時、前記他の参加ノードの少なくとも1つのシステマティックトランザクションブロックに含まれるか否かは、前記他の参加ノードそれぞれに相応する識別情報に基づいて、前記トランザクションブロックの一部を擬似ランダムに(pseudo-randomly)選択するシステマティックインデックス生成器(Systematic Index Generator;SIG)を用いて決定される。
【0026】
また、本発明の一実施例によるブロックチェーントランザクションデータ格納装置は、1つ以上のプロセッサと、前記1つ以上のプロセッサによって実行される少なくとも1つ以上のプログラムを格納する実行メモリとを含む。
【0027】
この時、前記少なくとも1つ以上のプログラムは、エンコーディンググループに相応するトランザクションブロックを選択し、前記トランザクションブロックをファウンテン符号化(Fountain encoding)して参加ノードそれぞれに相応する少なくとも1つ以上のエンコーディングチャンクを生成し、前記参加ノードの少なくとも1つに相応する前記少なくとも1つ以上のエンコーディングチャンクを格納する。
【0028】
この時、前記少なくとも1つ以上のプログラムは、トランザクションブロックの少なくとも1つ以上のシステマティックトランザクションブロックを選択し、前記少なくとも1つ以上のシステマティックトランザクションブロックをシステマティックトランザクションブロックセットに格納することができる。
【0029】
この時、前記トランザクションブロックのうち前記システマティックトランザクションブロックを除いた残りは削除可能である。
【0030】
この時、前記少なくとも1つ以上のエンコーディングチャンクは、前記参加ノードそれぞれに相応する識別情報に基づいて、前記トランザクションブロックの一部を擬似ランダムに(pseudo-randomly)選択するエンコーディングベクトル生成器(Encoding Vector Generator;EVG)を用いて生成される。
【0031】
この時、前記少なくとも1つ以上のシステマティックトランザクションブロックは、前記参加ノードそれぞれに相応する識別情報に基づいて、前記トランザクションブロックの一部を擬似ランダムに(pseudo-randomly)選択するシステマティックインデックス生成器(Systematic Index Generator;SIG)を用いて選択される。
【0032】
この時、前記少なくとも1つ以上のプログラムは、前記参加ノードのうち他のノードに相応するエンコーディングチャンクを検証する検証セット(verifying set)を格納することができる。
【発明の効果】
【0033】
本発明によれば、ブロックチェーンノードの格納容量の負担を低減するだけでなく、符号化技術が適用されたブロックチェーンシステムにおいて、ノードが頻繁に参加し離脱する状況で、通信と計算ロードが大きいデコーディング(decoding)および再エンコーディング(re-encoding)過程を減少させることができる。
【0034】
また、本発明によれば、動的なノードの参加/離脱が可能なブロックチェーンシステムにおいて、低い通信および計算複雑度でブロックチェーンに新たに参加する新規ノードが格納するデータを得ることができ、クライアントが必要なトランザクションブロックを低い計算複雑度で得ることができる。
【0035】
さらに、本発明によれば、各ノードに要求される格納容量が少なくなるので、多数のノードがネットワークに参加可能になり、これはブロックチェーンの核心価値である脱中央性を維持するのに欠かせない要素である。
【図面の簡単な説明】
【0036】
図1】本発明の一実施例によるブロックチェーントランザクションデータ格納方法のコンセプトを示す図である。
図2】ファウンテンコードの生成行列によりk個のトランザクションブロックからk+m個のエンコーディングチャンクが生成される過程を示す図である。
図3】ブロックチェーンのブロックの構造とブロックが集まって生成されるグループを示す図である。
図4】本発明の一実施例によるブロックチェーントランザクションデータ格納方法を示す動作フロー図である。
図5】本発明の一実施例によるブロックチェーントランザクションデータ生成方法を示す動作フロー図である。
図6】動的にノードの個数が変化する状況で再エンコーディング実行方法を示す動作フロー図である。
図7】本発明の一実施例によるコンピュータシステムの構成を示すブロック図である。
【発明を実施するための形態】
【0037】
本発明の利点および特徴、そしてそれらを達成する方法は添付した図面と共に詳細に後述する実施例を参照すれば明確になる。しかし、本発明は以下に開示される実施例に限定されるものではなく、互いに異なる多様な形態で実現され、単に本実施例は本発明の開示が完全となるようにし、本発明の属する技術分野における通常の知識を有する者に発明の範疇を完全に知らせるために提供されるものであり、本発明は請求項の範疇によってのみ定義される。明細書全体にわたって同一の参照符号は同一の構成要素を指す。
【0038】
たとえ、「第1」または「第2」などが多様な構成要素を述べるために使われるが、このような構成要素は前記のような用語によって制限されない。前記のような用語は単に1つの構成要素を他の構成要素と区別するために使われる。したがって、以下に言及される第1構成要素は、本発明の技術的思想内で第2構成要素であってもよい。
【0039】
本明細書で使われた用語は実施例を説明するためのものであり、本発明を制限しようとするものではない。本明細書において、単数形は、文言で特に言及しない限り、複数形も含む。明細書で使われる「含む(comprises)」または「含む(comprising)」は、言及された構成要素または段階が1つ以上の他の構成要素または段階の存在または追加を排除しないという意味を含む。
【0040】
他に定義がなければ、本明細書で使われるすべての用語は、本発明の属する技術分野における通常の知識を有する者に共通して理解できる意味で解釈できる。また、一般的に使われる事前に定義されている用語は、明らかに特別に定義されていない限り、理想的または過度に解釈されない。
【0041】
以下、添付した図面を参照して本発明の実施例を詳細に説明し、図面を参照して説明するにあたり、同一または対応する構成要素は同一の図面符号を付し、これに関する重複した説明は省略する。
【0042】
図1は、本発明の一実施例によるブロックチェーントランザクションデータ格納方法のコンセプトを示す図である。
【0043】
図1を参照すれば、一般的なブロックチェーントランザクション格納方法と、本発明の一実施例によるブロックチェーントランザクションデータ格納方法との差異が明らかになる。
【0044】
トランザクションの内訳が含まれたk個のブロックチェーンのブロックがある時、既存のブロックチェーンシステムは、すべてのノードがk個のブロック全体を格納する。これに対し、本発明の一実施例によるブロックチェーントランザクションデータ格納方法は、k個のブロックをファウンテン符号化(Fountain encoding)して多数のエンコーディングチャンク(エンコーディングブロック)を生成した後、各ノードがエンコーディングチャンクの一部を格納してノードの格納容量の負担を低下させる。
【0045】
図1にて、ノードiは、生成されたエンコーディングチャンクのうちα個のチャンクを格納し、k個の元データブロックのうちβ個のブロックをシステマティックに格納する。この時、すべてのノードの格納されるエンコーディングチャンクの個数は、同一であってもよく、互いに異なっていてもよい。この時、すべてのノードの格納されるシステマティックブロックの個数は、同一であってもよく、互いに異なっていてもよい。例えば、高い帯域幅および高い格納容量を有するノードにはより多くのシステマティックブロックが割当てられる。
【0046】
このようにすべてのノードがすべてのデータブロックを格納せずにノードそれぞれに割当てられたエンコーディングチャンクおよびシステマティックブロックのみを格納すれば、他のノードが格納するエンコーディングチャンクのハッシュ値とブロックヘッダのデータのサイズを0に近似させる時、格納容量が約(α+β)/k倍に減少する。
【0047】
本発明は、ブロックチェーントランザクションデータにファウンテン符号化(Fountain encoding)を適用し、追加的に、元トランザクションデータをシステマティック(systematic)に追加格納する。
【0048】
この時、システマティックに格納するというのは、デコーディングプロセスなしにすぐに所望のデータにアクセスできるように元データを格納することを意味する。したがって、本発明の一実施例によるブロックチェーントランザクションデータ格納方法による各ノードは、ファウンテンコードでエンコーディングされたエンコーディングチャンクの一部と元トランザクションブロックの一部を格納する。
【0049】
ファウンテンコード(Fountain code)は、イレイジャーコードの一種で、与えられた個数のソースシンボルで潜在的に無限のエンコーディングシンボルを作ることができる。
【0050】
図1に示されるように、本発明の一実施例によるブロックチェーントランザクションデータ格納方法は、エンコーディングの対象になるブロックチェーントランザクションデータを予め設定された個数(k)のデータブロックに分け、予め設定された個数のデータブロックをエンコーディングして無数に多い(infinite number of)独立したエンコーディングチャンク(encoding chunks or encoding blocks)を生成することができる。ここで、エンコーディングチャンクが互いに独立したというのは、あるエンコーディングチャンクの生成方式が他のすべてのエンコーディングチャンクの生成方式と無関係であることを意味する。与えられた個数(k)のデータブロックにより独立したエンコーディングチャンクを生成できるという点は、新たな参加ノードが存在する時、新たなノードが自ら格納するエンコーディングチャンクを既存のエンコーディングチャンクと無関係に計算できることを意味する。また、ファウンテンコードの特性上、無数に多いエンコーディングチャンクを生成できるので、新たなノードの参加が頻繁なネットワーク状況で本発明の一実施例によるブロックチェーントランザクションデータ格納方法が効果的に動作できる。エンコーディングチャンクの一部は、ブロックチェーンノードに分散格納され、これにより各ノードの格納容量の負担を低減することができる。また、各ノードは、エンコーディングチャンクのほか、元データブロックの一部をシステマティックに追加的に格納することができる。
【0051】
本発明の一実施例によるブロックチェーントランザクションデータ格納方法は、ブロックチェーントランザクションデータにファウンテンコードベースのエンコーディングを行い、エンコーディングチャンクの一部とともにシステマティックなデータブロックを追加格納することにより、2つのメリットを有することができる。第一、既存のノードが新規ノードに相応する符号化されたブロックチェーンデータを低い複雑度で計算することができる。第二、クライアントがトランザクションブロックを低い複雑度で得ることができる。
【0052】
新たなノードが担当するエンコーディングチャンクは、元データブロックの一部の合計(sum)であってもよい。ファウンテン符号を適用したブロックチェーンシステムにおいてすべてのノードがエンコーディングされたチャンクのみを格納する場合、新たなノードがブロックチェーンに参加した時、エンコーディングチャンクにより元データブロックをデコーディングする過程を必ず経てこそ、新規ノードに相応するエンコーディングチャンクを計算することができる。したがって、エンコーディングチャンクのみを格納するシステムは、大きい通信および計算のためのロードをもたらす。これに対し、システマティックなブロックを追加的に格納する場合、いくつかのノードが保有したシステマティックなブロックを受信して、必要な元データを構成して新規ノードが担当するエンコーディングチャンクをデコーディング過程なしに得ることができるので、通信および計算複雑度を低下させることができる。
【0053】
また、本発明の一実施例によるブロックチェーントランザクションデータ格納方法は、クライアントがデータを読込む時、多数のノードが格納したシステマティックなブロックを優先的に活用することにより、元データをデコーディングする過程なしにデータを直接的に速やかに読出すことができる。システマティックなブロックだけで所望のデータを生成できない場合にのみファウンテンコードのエンコーディングチャンクが用いられ、エンコーディングチャンクを用いたデコーディングにより所望のデータが読出(read)される。
【0054】
図2は、ファウンテンコードの生成行列(generator matrix)によりk個のトランザクションブロックからk+m個のエンコーディングチャンクが生成される過程を示す図である。
【0055】
図2を参照すれば、k個のトランザクションブロックにファウンテン符号化(Fountain encoding)が適用されて、k+m個のエンコーディングチャンク(エンコーディングブロック)が生成されることが分かる。
【0056】
図2にて、mは、任意の負でない整数であってもよく、生成行列のそれぞれの列ベクトル(column vector)は、他の列ベクトルとは独立していてもよい。この時、エンコーディング過程でデータブロックのサイズが互いに異なる場合、ゼロパディング(zero-padding)によりデータブロックのサイズをすべて同一に作ることができる。
【0057】
図3は、ブロックチェーンのブロックの構造とブロックが集まって生成されるグループを示す図である。
【0058】
図3を参照すれば、ブロックチェーンを構成するブロックB、B、...、Bは、それぞれ、ブロックに関するメタ情報を盛り込んでいるブロックヘッダHと、トランザクションの内訳を含むブロックボディTとで構成されることが分かる(iは、1以上かつr以下の自然数)。すなわち、図3に示された例は、ファウンテン符号化が適用されないブロックチェーンと見なされ、ブロックチェーンのi番目ブロックBは、トランザクションデータを盛り込んでいるトランザクションブロックTと、ブロックに関するメタ情報を盛り込んでいるブロックヘッダHとで構成される。ブロックヘッダの大きさと、エンコーディングチャンクのハッシュ値の大きさとは、ブロックの大きさに比べると非常に小さいため、これらは格納容量の面で有意でない。
【0059】
k個のブロックが集まって1つのグループをなし、グループ別にブロックボディ(トランザクションブロック)に対して符号化過程を行う。この時、ブロックに格納されるトランザクションブロックのサイズが互いに異なる場合、ゼロパディング技術を利用してグループ内のすべてのトランザクションブロックのサイズを同一にすることができる。例えば、グループ1の場合、トランザクションブロックT、T、...、Tに対して符号化が行われ、符号化前にトランザクションブロックT、T、...、Tのサイズがすべて同一に設定可能である。
【0060】
本発明において、ファウンテン符号化を用いた理由は、次の通りである。第一、それぞれのエンコーディングチャンクが他のエンコーディングチャンクの影響を受けずに独立して生成されるため、ブロックチェーンシステムのノードの数が変化する時、既存のノードのエンコーディングチャンクを変化したノードの個数を有するシステムに合わせて再エンコーディングする必要がない。再エンコーディングをするには、多数のノードに格納された情報を読込むための通信資源が多く必要であり、新たなパラメータで再度ファウンテン符号化をしなければならないため、計算資源も多く要求される。したがって、ファウンテンコードベースの符号化ブロックチェーンシステムは資源効率的である。第二、ファウンテンコードは無数に多いエンコーディングチャンクを生成できるため、多くの新規ノードがブロックチェーンシステムに参加しても、当該新規ノードが担当する符号化チャンクを作ることができる。
【0061】
また、本発明において、システマティックに元トランザクションデータ(トランザクションブロック)を追加的に格納する理由は、次の通りである。第一、既存のノードが新規ノードの担当する符号化チャンクを低複雑度で計算することができる。既存のノードは、新規ノードが格納するエンコーディングチャンクを検証するために、新規ノードが担当するエンコーディングチャンクを計算し、これをハッシングしたハッシュ値を証明(proof)として格納する過程を経る。この時、エンコーディングチャンクは、元トランザクションブロックの一部の合計(sum)であってもよい。この時、エンコーディングチャンクを生成するための元トランザクションブロックの一部は、擬似ランダムに(pseudo randomly)選択可能である。したがって、システマティックに格納されたデータを介して元データにすぐにアクセスできれば、低い通信/計算複雑度でエンコーディングチャンクを得ることができる。もし、元トランザクションブロックを全く格納しなければ、エンコーディングチャンクからトランザクションデータを復元する過程を必ず経なければならないので、多くの通信資源および計算資源が消耗する。第二、システマティックに元トランザクションデータを格納すれば、クライアントがトランザクションブロックを非常に低い複雑度で得ることができる。クライアントが特定のトランザクションブロックを要請すれば、優先的に当該ブロックを直接的に格納しているノードに要請してトランザクションブロックを返すことができる。この時、データの真偽は、メタデータとして管理されるブロックヘッダのハッシュ値を用いて検証できる。
【0062】
[擬似コード1]
【0063】
擬似コード1は、グループmでノードiがエンコーディングによってデータを格納する過程を示す。
【0064】
擬似コード1を参照すれば、ブロックチェーンシステムの各ノードが格納する情報を計算する過程が分かる。擬似コード1の例においては、すべてのノードが1つのエンコーディングチャンクを格納するα=1の場合を中心に本発明の一実施例を説明したが、各ノードがいくつかのエンコーディングチャンクを格納することもできる。
【0065】
擬似コード1により説明された過程(process)は、グループmに属するk個の連続したトランザクションブロック、ノードiの帯域幅資源および格納容量資源、システムに参加している参加ノードのパブリックキー(ノード識別情報)を入力として受けて、ノードiが格納しなければならないブロックヘッダセットH、システマティックブロックセットS、エンコーディングチャンクeおよび他のノードから伝送されたエンコーディングチャンクを検証するのに必要な検証セット(verifying set;V)を出力する。すなわち、擬似コード1の過程は、特定のグループに属するk個の連続したブロックとノードiの帯域幅および格納資源およびシステムに参加しているノードのパブリックキーを入力として受けて、当該グループからノードiが格納するデータを出力する。擬似コード1のHはブロックヘッダセット、Sはノードiが担当するシステマティックブロックセット、eはノードiが担当するエンコーディングチャンク、Vは他のノードが格納するエンコーディングチャンクのハッシュ値が含まれた検証セットである。
【0066】
擬似コード1を参照すれば、まず、グループ内のすべてのトランザクションブロックのブロックヘッダH、...、Hが格納される。
【0067】
また、システマティックブロックセットおよび検証セットは、それぞれ、空集合に初期化される。
【0068】
また、システマティックインデックス生成器(Systematic Index Generator;SIG)を用いて、ノードiが担当するシステマティックトランザクションブロックに相応するβ個のインデックスが生成される。例えば、k個のトランザクションブロックのうち1番目および2番目ブロックがノードiのためのトランザクションブロックとして選択されれば、インデックス0および1が生成される。
【0069】
この時、システマティックインデックス生成器は、ノードiの識別情報(パブリックキー)、ノードiの帯域幅資源γ、格納容量資源ρを入力として受けて、ノードiが担当するシステマティックトランザクションブロックに相応するβ個のインデックスを出力することができる。ノードiは、出力されたインデックスに相当するトランザクションブロックのみをシステマティックに格納し、残りのトランザクションブロックは削除することができる。この時、システマティックインデックス生成器は、ノードiが有する帯域幅資源と格納容量資源が多いほどシステマティックトランザクションブロックが多くなるようにインデックスを生成することができる。
【0070】
システマティックトランザクションブロックのインデックスの生成が完了すれば、生成されたインデックスに相当するシステマティックトランザクションブロックがシステマティックブロックセットSiに格納される。
【0071】
また、エンコーディングベクトル生成器(Encoding Vector Generator;EVG)を用いて、n個の参加ノードそれぞれに対してkの大きさを有するバイナリベクトルが生成される。この時、バイナリベクトルは、エンコーディングに用いられるトランザクションブロックに対しては1を元素(element)として有し、エンコーディングに用いられないトランザクションブロックに対しては0を元素として有することができる。例えば、ノードiのエンコーディングチャンクの生成に用いられるトランザクションブロックがk個のブロックのうち1番目ブロックのみの場合、バイナリベクトル{1、0、...、0}が生成される。
【0072】
この時、エンコーディングベクトル生成器は、ノードj(jは、1以上かつn以下の自然数)の識別情報(パブリックキー)を入力として受けて、長さがkの各元素(element)が0または1のバイナリベクトルvを生成する。生成されたバイナリベクトルは、トランザクションブロックと内積してノードjが担当するエンコーディングチャンクeを生成するのに用いられる。ノードiは、ノードi以外の参加ノードが担当するエンコーディングチャンクそれぞれをハッシュ関数hを用いてハッシングし、ハッシングされた結果値を検証セット(verifying set)Vに追加して格納する。
【0073】
図4は、本発明の一実施例によるブロックチェーントランザクションデータ格納方法を示す動作フロー図である。
【0074】
図4を参照すれば、本発明の一実施例によるブロックチェーントランザクションデータ格納方法は、エンコーディンググループに相応するトランザクションブロックを選択する(S410)。
【0075】
また、本発明の一実施例によるブロックチェーントランザクションデータ格納方法は、前記トランザクションブロックをファウンテン符号化(Fountain encoding)して参加ノードそれぞれに相応する少なくとも1つ以上のエンコーディングチャンクを生成する(S420)。
【0076】
この時、前記少なくとも1つ以上のエンコーディングチャンクは、前記参加ノードそれぞれに相応する識別情報に基づいて、前記トランザクションブロックの一部を擬似ランダムに(pseudo-randomly)選択するエンコーディングベクトル生成器(Encoding Vector Generator;EVG)を用いて生成される。
【0077】
また、本発明の一実施例によるブロックチェーントランザクションデータ格納方法は、前記参加ノードのうちの1つに相応する前記少なくとも1つ以上のエンコーディングチャンクを格納する(S430)。
【0078】
さらに、本発明の一実施例によるブロックチェーントランザクションデータ格納方法は、前記参加ノードのうち他のノードに相応するエンコーディングチャンクを検証する検証セット(verifying set)を格納する(S440)。
【0079】
また、本発明の一実施例によるブロックチェーントランザクションデータ格納方法は、前記トランザクションブロックの少なくとも1つ以上のシステマティックトランザクションブロックを選択する(S450)。
【0080】
この時、前記少なくとも1つ以上のシステマティックトランザクションブロックは、前記参加ノードそれぞれに相応する識別情報に基づいて、前記トランザクションブロックの一部を擬似ランダムに(pseudo-randomly)選択するシステマティックインデックス生成器(Systematic Index Generator;SIG)を用いて選択される。
【0081】
この時、前記エンコーディングベクトル生成器およびシステマティックインデックス生成器は、それぞれ、前記識別情報のほか、前記参加ノードそれぞれに相応する帯域幅情報および格納容量情報をさらに考慮して動作できる。
【0082】
また、本発明の一実施例によるブロックチェーントランザクションデータ格納方法は、前記少なくとも1つ以上のシステマティックトランザクションブロックをシステマティックトランザクションブロックセットに格納する(S460)。
【0083】
この時、前記トランザクションブロックのうち前記システマティックトランザクションブロックを除いた残りは削除可能である。
【0084】
この時、前記参加ノードに新たなノードが追加される場合、既に格納された前記少なくとも1つ以上のエンコーディングチャンクをそのまま維持したまま、前記新たなノードに相応するエンコーディングチャンクのみ新たに生成して前記検証セットに追加する検証値を生成に用いることができる。
【0085】
図4には明示的に示さないが、本発明の一実施例によるブロックチェーントランザクションデータ格納方法は、前記参加ノードの個数が再エンコーディング条件を満たすか否かを判断するステップと、前記再エンコーディング条件が満たされる場合、前記トランザクションブロックを復元した後、再度エンコーディングするステップとをさらに含むことができる。
【0086】
この時、前記再エンコーディング条件は、前記参加ノードの個数の増加に相応して前記エンコーディンググループに含まれるトランザクションブロックの個数を増加させる第1条件、または前記参加ノードの個数の減少に相応して前記エンコーディンググループに含まれるトランザクションブロックの個数を減少させる第2条件、のいずれか1つであってもよい。
【0087】
図4に示された各ステップは、図7に示されたブロックチェーントランザクションデータ格納装置によって行われる。
【0088】
[擬似コード2]
【0089】
擬似コード2は、ノードiがトランザクションブロックTを読出す過程を示す。
【0090】
まず、ノードiのシステマティックブロックセットにブロックTが含まれていれば、直ちにTを読出すことができる。
【0091】
そうでなければ、Tをシステマティックに有しているノードを探して当該ノードにデータを要請する。この時、Tの真偽の有無は、ブロックヘッダに格納されたハッシュ値で検証される。
【0092】
もし、Tをシステマティックに有しているノードがなければ、すべての他の参加ノードにエンコーディングチャンクを要請し、受信されたk+τ(τは、デコーディングマージン)個の検証されたエンコーディングチャンクからデコーディング過程によりTを得る。この時、エンコーディングチャンクの真偽の有無は、ノードiが格納する検証セットにより検証することができる。
【0093】
擬似コード2の過程でノードそれぞれはすべてのトランザクションブロックを有していないため、特定のノードが特定のトランザクションブロックにアクセスするには、他の参加ノードの補助が必要になりうる。まず、当該ノードが元データブロックTを格納していれば、当該データブロックを直ちに読出すことができる。そうでなければ、特定のノードが他の参加ノードの有しているシステマティックデータブロックTを要請して読出す。いかなる他の参加ノードもシステマティックデータブロックTを有していない場合、多数のノードにエンコーディングチャンクが要請され、k+τ個の検証されたエンコーディングチャンクが活用されたデコーディング過程によりTが得られる。他のノードから提供されたシステマティックブロック(システマティックトランザクションブロック)とエンコーディングチャンクは、ブロックヘッダセットHと検証セットVを用いて検証される。
【0094】
図5は、本発明の一実施例によるブロックチェーントランザクションデータ生成方法を示す動作フロー図である。
【0095】
図5を参照すれば、本発明の一実施例によるブロックチェーントランザクションデータ生成方法は、トランザクションブロックの要請を受信する(S510)。
【0096】
また、本発明の一実施例によるブロックチェーントランザクションデータ生成方法は、要請されたトランザクションブロックがシステマティックトランザクションブロックセットに含まれるか否かを判断する(S520)。
【0097】
ステップS520の判断結果、要請されたトランザクションブロックが前記システマティックトランザクションブロックセットに含まれない場合、前記要請されたトランザクションブロックが他の参加ノードの少なくとも1つのシステマティックトランザクションブロックセットに含まれるか否かを判断する(S530)。
【0098】
ステップS530で要請されたトランザクションブロックが前記他の参加ノードの少なくとも1つのシステマティックトランザクションブロックに含まれるか否かは、前記他の参加ノードそれぞれに相応する識別情報に基づいて、前記トランザクションブロックの一部を擬似ランダムに(pseudo-randomly)選択するシステマティックインデックス生成器(Systematic Index Generator;SIG)を用いて決定される。
【0099】
ステップS520の判断結果、要請されたトランザクションブロックが前記システマティックトランザクションブロックセットに含まれる場合、要請されたトランザクションブロックは、前記システマティックトランザクションブロックセットから読出して返される(S590)。
【0100】
ステップS530の判断結果、要請されたトランザクションブロックが前記他の参加ノードの少なくとも1つのシステマティックトランザクションブロックセットに含まれる場合、本発明の一実施例によるブロックチェーントランザクションデータ生成方法は、前記他の参加ノードのうち前記要請されたトランザクションブロックを保有したノードから提供される(S540)。
【0101】
ステップS540の後、要請されたトランザクションブロックは返される(S590)。
【0102】
ステップS530の判断結果、要請されたトランザクションブロックが前記他の参加ノードの少なくとも1つのシステマティックトランザクションブロックセットに含まれない場合、トランザクションブロックをファウンテン符号化(Fountain encoding)して生成されたエンコーディングチャンクを前記他の参加ノードの少なくとも一部から受信する(S550)。
【0103】
ステップS550の後、本発明の一実施例によるブロックチェーントランザクションデータ生成方法は、前記エンコーディングチャンクをデコーディングして前記要請されたトランザクションブロックを復元する(S560)。
【0104】
ステップS560の後、本発明の一実施例によるブロックチェーントランザクションデータ生成方法は、要請されたトランザクションブロックを返す(S590)。
【0105】
図5に示された各ステップは、図7に示されたブロックチェーントランザクションデータ生成装置によって行われる。
【0106】
本発明の一実施例によるブロックチェーントランザクションデータ格納および生成方法は、ブロックチェーンシステムに参加するノードの一部が悪意的な行動をするビザンチン(Byzantine)ノードの時、データ可用性(availability)を維持できなければならない。この時、可用性(availability)とは、正常に動作する正直なノードに格納された情報だけで全体トランザクションを復旧できる能力を意味する。n個のノードで構成されたシステムにおいて最大f個の障害ノード(ビザンチンノードと正常に作動しない正直なノードを含む)が存在すると仮定すれば、可用性を保障するために、n-f個の正常作動する正直なノードだけですべてのトランザクションの復旧が可能でなければならない。
【0107】
ファウンテンコードは、エンコーディングチャンクそれぞれが独立して生成されるため、ブロックチェーンシステムが可用性を満たす確率が完全に100%(1)になれない。しかし、非常に小さいδ値に対して、その確率が1-δ以上であれば可用性を満たすと仮定することができる。この時、δ値は10-12程度の値が考えられる。
【0108】
元トランザクションデータを復旧する時、最大に使用可能な信頼可能なエンコーディングチャンクの数は、全体ノードn個から障害ノードf個を除いたn-f個である。n-f個のエンコーディングチャンクから非常に高い確率で元トランザクションブロックを復旧するために、1つのグループに含まれるトランザクションブロックの数kをn-fより小さいk=n-f-τ(τ≧0)に設定する。擬似コード1の方法とともに、ガウス消去(Gaussian-elimination)デコーダを用いると、n値と無関係な小さいτ値でδ=10-12水準の可用性を満たすことができる。
【0109】
ブロックチェーンシステムにノードが追加される時、まず、新たなノードは、全体トランザクションの内訳を得る。この時、優先的に他のノードからシステマティックトランザクションブロックが転送されて、デコーディング過程なしに全体トランザクションの内訳を得ることができる。システマティックトランザクションブロックの一部にアクセスできない場合、当該グループのエンコーディングチャンクを多数のノードから転送された後、デコーディング過程によりアクセスできないトランザクションの内訳を得ることができる。新規ノードは、全体トランザクションの内訳を得た後、これを活用して、ブロックチェーンの状態データベースを構成する。この時、新規ノードは、擬似コード1の方法を活用して、自ら格納する元帳情報のみ残し、残りのデータは削除する。一方、既存のノードiは、新たなノードが格納するエンコーディングチャンクのハッシュ値を検証セットVに追加的に格納してエンコーディングチャンクの真偽の有無を検証できなければならない。ノードiは、新たなノードのパブリックキーとエンコーディングベクトル生成器(EVG)を活用して、新規ノードが担当するエンコーディングチャンクを得ることができる。この時、新規ノードが担当するエンコーディングチャンクを計算するのに欠かせないシステマティックブロックを優先的に要請することにより、通信および計算の負担を最小化しつつ、必要なデータを読出すことができる。
【0110】
多くのノードが追加される時、ブロックチェーンシステムの格納容量の効率性のために、追加的にすべてのノードが元ブロックを復旧した後、復旧された元ブロックに新たなパラメータでファウンテン符号化を適用して、各ノードが担当するエンコーディングチャンクを新たに指定する再エンコーディング(re-encoding)が行われる。
【0111】
多くのノードがブロックチェーンネットワークから離脱する状況で、正直なノードのデータから元トランザクションデータの一部を得ることができない可用性の問題が生じうる。システムにおいてノードの数がより減少して可用性を満たす確率が1-δ未満になると判断された場合、システムは、現在のノードの数に基づいて再エンコーディングを行い、可用性を満たす確率を常に1-δ以上に維持することができる。
【0112】
図6は、動的にノードの個数が変化する状況で再エンコーディング実行方法を示す動作フロー図である。
【0113】
図6に記載されたnは、現在のブロックチェーンシステムのノードの個数、
は現在許容可能な最大障害ノードの数、kは1つのグループに属したトランザクションブロックの数、τはシステムの可用性を満たすために定められた固定定数値、φ(n-f-k)はブロックチェーンシステムが可用性を満たさない確率(正直なノードだけでトランザクションデータを復旧できない確率)を示す。
【0114】
初期にブロックチェーンノードの数がn個であれば、1つのグループに属したトランザクションブロックの数はk=n-f-τに設定されてエンコーディングが行われる。
【0115】
図6を参照すれば、再エンコーディング実行方法は、ノードの個数の変化を待機する(S610)。
【0116】
また、再エンコーディング実行方法は、ノードが追加された否かを判断する(S620)。
【0117】
ステップS620の判断結果、ノードが追加されたと判断されると、追加された分だけノードの数を増加させる(S632)。
【0118】
ステップS632の後、許容可能な最大障害ノードの個数fをアップデートする(S634)。
【0119】
ステップS634の後、n-f-τ値がkより非常に大きいか否かを判断する(S636)。
【0120】
この時、n-f-τ値がkより非常に大きいか否かは、kに予め設定された関数を適用して出た結果値とn-f-τ値とを比較して決定できる。この時、n-f-τ値がkより非常に大きいか否かは、kに予め設定された値を掛けた値とn-f-τ値とを比較して決定できる。この時、n-f-τ値がkより非常に大きいか否かは、kに予め設定された値を加えた値とn-f-τ値とを比較して決定できる。
【0121】
すなわち、システムにノードが多数追加されてn-f-τ値がkより非常に大きい場合には、ノードの格納空間が非効率的に用いられているのである。
【0122】
ステップS636の判断結果、n-f-τ値がkより非常に大きくない場合、再エンコーディング実行方法は、ステップS610に戻って、ノードの個数の変化を待機する。
【0123】
ステップS636の判断結果、n-f-τ値がkより非常に大きいと判断された場合、再エンコーディング実行方法は、kをアップデートし、新たなk値で再エンコーディングを行う(S660)。
【0124】
すなわち、システムにノードが多数追加されてn-f-τ値がkより非常に大きい場合、ノードの格納効率性を増加させるために、元データブロックを復元した後、新たなk値で再エンコーディングを行う。
【0125】
ステップS620の判断結果、ノードが減少したと判断されると、減少した分だけノードの数を減少させる(S642)。
【0126】
ステップS642の後、許容可能な最大障害ノードの個数fをアップデートする(S644)。
【0127】
ステップS644の後、可用性を満たさない確率φ(n-f-k)が非常に小さい限界値であるδより大きいか否かを判断する(S646)。
【0128】
すなわち、ノードが多数除去される場合、正直なノードに格納された情報だけで元トランザクションブロックを復旧できない可用性の問題が発生しうるので、これを防止する必要がある。
【0129】
ステップS646の判断結果、可用性を満たさない確率φ(n-f-k)が非常に小さい限界値であるδより大きくない場合、再エンコーディング実行方法は、ステップS610に戻って、ノードの個数の変化を待機する。
【0130】
ステップS646の判断結果、可用性を満たさない確率φ(n-f-k)が非常に小さい限界値であるδより大きい場合、再エンコーディング実行方法は、kをアップデートし、新たなk値で再エンコーディングを行う(S660)。
【0131】
すなわち、システムにおいてノードが多数除去されて正直なノードに格納された情報だけで元トランザクションブロックを復旧できない可用性の問題が生じうる場合、可用性保障のために、元データブロックを復元した後、新たなk値で再エンコーディングを行う。
【0132】
図7は、本発明の一実施例によるコンピュータシステムの構成を示すブロック図である。
【0133】
実施例によるブロックチェーントランザクションデータ格納装置、ブロックチェーントランザクションデータ生成装置、ブロックチェーンを構成するノードおよびクライアントは、コンピュータ可読記録媒体のようなコンピュータシステム700で実現できる。
【0134】
コンピュータシステム700は、バス720を介して互いに通信する1つ以上のプロセッサ710、メモリ730、ユーザインターフェース入力装置740、ユーザインターフェース出力装置750、およびストレージ760を含むことができる。また、コンピュータシステム700は、ネットワーク780に連結されるネットワークインターフェース770をさらに含むことができる。プロセッサ710は、中央処理装置またはメモリ730やストレージ760に格納されたプログラムまたはプロセッシングインストラクションを実行する半導体装置であってもよい。メモリ730およびストレージ760は、揮発性媒体、不揮発性媒体、分離型媒体、非分離型媒体、通信媒体、または情報伝達媒体の少なくとも1つ以上を含む記憶媒体であってもよい。例えば、メモリ730は、ROM731やRAM732を含むことができる。
【0135】
この時、メモリ730には少なくとも1つのプログラムが記録される。
【0136】
この時、プロセッサ710は、前記プログラムを実行することができる。この時、前記プログラムは、エンコーディンググループに相応するトランザクションブロックを選択し、前記トランザクションブロックをファウンテン符号化(Fountain encoding)して参加ノードそれぞれに相応する少なくとも1つ以上のエンコーディングチャンクを生成し、前記参加ノードのうちの1つに相応する前記少なくとも1つ以上のエンコーディングチャンクを格納することができる。
【0137】
この時、前記少なくとも1つ以上のプログラムは、トランザクションブロックの少なくとも1つ以上のシステマティックトランザクションブロックを選択し、前記少なくとも1つ以上のシステマティックトランザクションブロックをシステマティックトランザクションブロックセットに格納することができる。
【0138】
この時、前記トランザクションブロックのうち前記システマティックトランザクションブロックを除いた残りは削除可能である。
【0139】
この時、前記少なくとも1つ以上のエンコーディングチャンクは、前記参加ノードそれぞれに相応する識別情報に基づいて、前記トランザクションブロックの一部を擬似ランダムに(pseudo-randomly)選択するエンコーディングベクトル生成器(Encoding Vector Generator;EVG)を用いて生成される。
【0140】
この時、前記少なくとも1つ以上のシステマティックトランザクションブロックは、前記参加ノードそれぞれに相応する識別情報に基づいて、前記トランザクションブロックの一部を擬似ランダムに(pseudo-randomly)選択するシステマティックインデックス生成器(Systematic Index Generator;SIG)を用いて選択される。
【0141】
この時、前記エンコーディングベクトル生成器およびシステマティックインデックス生成器は、それぞれ、前記識別情報のほか、前記参加ノードそれぞれに相応する帯域幅情報および格納容量情報をさらに考慮して動作できる。
【0142】
この時、前記少なくとも1つ以上のプログラムは、前記参加ノードのうち他のノードに相応するエンコーディングチャンクを検証する検証セット(verifying set)を格納することができる。
【0143】
この時、前記参加ノードに新たなノードが追加される場合、既に格納された前記少なくとも1つ以上のエンコーディングチャンクをそのまま維持したまま、前記新たなノードに相応するエンコーディングチャンクのみ新たに生成して前記検証セットに追加する検証値を生成に用いることができる。
【0144】
この時、前記少なくとも1つ以上のプログラムは、前記参加ノードの個数が再エンコーディング条件を満たすか否かを判断し、前記再エンコーディング条件が満たされる場合、前記トランザクションブロックを復元した後、再度エンコーディングすることができる。
【0145】
この時、前記再エンコーディング条件は、前記参加ノードの個数の増加に相応して前記エンコーディンググループに含まれるトランザクションブロックの個数を増加させる第1条件、または前記参加ノードの個数の減少に相応して前記エンコーディンググループに含まれるトランザクションブロックの個数を減少させる第2条件、のいずれか1つであってもよい。
【0146】
以上、本発明によるブロックチェーントランザクションデータ格納方法、ブロックチェーントランザクションデータ生成方法およびそのための装置は、上記のように説明された実施例の構成と方法が限定されて適用されるのではなく、上記の実施例は多様な変形が行われるように各実施例の全部または一部が選択的に組み合わされて構成されてもよい。
【符号の説明】
【0147】
700:コンピュータシステム 710:プロセッサ
720:バス 730:メモリ
731:ROM 732:RAM
740:ユーザインターフェース入力装置
750:ユーザインターフェース出力装置
760:ストレージ 770:ネットワークインターフェース
780:ネットワーク
図1
図2
図3
図4
図5
図6
図7