(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023159660
(43)【公開日】2023-11-01
(54)【発明の名称】合意形成システム
(51)【国際特許分類】
H04L 9/32 20060101AFI20231025BHJP
【FI】
H04L9/32 200Z
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2022069495
(22)【出願日】2022-04-20
(71)【出願人】
【識別番号】800000068
【氏名又は名称】学校法人東京電機大学
(74)【代理人】
【識別番号】100119677
【弁理士】
【氏名又は名称】岡田 賢治
(74)【代理人】
【識別番号】100160495
【弁理士】
【氏名又は名称】畑 雅明
(74)【代理人】
【識別番号】100173716
【弁理士】
【氏名又は名称】田中 真理
(74)【代理人】
【識別番号】100115794
【弁理士】
【氏名又は名称】今下 勝博
(72)【発明者】
【氏名】小川 猛志
(72)【発明者】
【氏名】大林 正樹
(57)【要約】
【課題】本開示の目的は、ライトノードが保持するブロックチェーンのデータ量を削減することにある。
【解決手段】本開示のシステムは、ブロックチェーンのデータを、複数のブロックを含むブロック群に分割して保持するフルノードと、自装置に記録されているブロックヘッダのチェーンに含まれる複数のブロックのヘッダ情報を用いてブロック群ヘッダのチェーンを作成し、前記ブロック群ヘッダのチェーンに含まれるブロックヘッダを、前記ブロックヘッダのチェーンから削除するライトノードと、を備える。
【選択図】
図4
【特許請求の範囲】
【請求項1】
ブロックチェーンに含まれるブロックのヘッダ情報を用いてブロックヘッダのチェーンを記録するライトノードであって、
ブロックヘッダのチェーンに含まれる複数のブロックのヘッダ情報を用いて、複数のブロックで構成されるブロック群のヘッダ情報であるブロック群ヘッダのチェーンを作成し、
前記ブロック群ヘッダのチェーンに含まれるブロックヘッダを、前記ブロックヘッダのチェーンから削除する、
ライトノード。
【請求項2】
前記ブロック群ヘッダは、前記ブロック群に含まれるトランザクションのハッシュ値を用いて求められるマークルルートを含み、
任意のブロックに含まれる任意のトランザクションの検証を行う際、
検証対象のトランザクションのハッシュ値をフルノードに送信し、
前記フルノードから検証対象のトランザクションの格納されているブロック群ヘッダのハッシュ値及び前記ブロック群のマークルツリーデータを受信し、
自装置に格納されているブロック群ヘッダのチェーンから、受信したブロック群のハッシュ値に対応するブロック群ヘッダを読み出し、
受信したマークルツリーデータを用いて検証対象のトランザクションの格納されているブロック群のマークルルートを算出し、
算出されたマークルルートが前記読み出したブロック群ヘッダに格納されているマークルルートと一致することを検証する、
請求項1に記載のライトノード。
【請求項3】
トランザクションデータの格納されている複数のブロックを含むブロックチェーンを送受信するフルノードであって、
ブロックチェーンの長さが一定の個数に達すると、ブロックチェーンに含まれるブロックの最新のブロックから前記一定の個数に対応するブロックを含むブロック群を構成し、
前記ブロック群に含まれるブロックのブロックヘッダに格納されているマークルルートを用いて前記ブロック群のマークルルートを算出し、
前記ブロック群の1つ前のブロック群のブロック群ヘッダのハッシュ値、及び前記算出したマークルルートを、前記ブロック群のヘッダに格納する、
フルノード。
【請求項4】
請求項1又は2に記載のライトノードと、
請求項3に記載のフルノードと、
を備える合意形成システム。
【請求項5】
ブロックチェーンに含まれる各ブロックのヘッダ情報を用いてブロックヘッダのチェーンを記録するライトノードが実行する方法であって、
ブロックヘッダのチェーンに含まれる複数のブロックのヘッダ情報を用いて、複数のブロックで構成されるブロック群のヘッダ情報であるブロック群ヘッダのチェーンを作成し、
前記ブロック群ヘッダのチェーンに含まれるブロックヘッダを、前記ブロックヘッダのチェーンから削除する、
方法。
【請求項6】
トランザクションデータの格納されている複数のブロックを含むブロックチェーンを送受信するフルノードが実行する方法であって、
ブロックチェーンの長さが一定の個数に達すると、ブロックチェーンに含まれるブロックの最新のブロックから前記一定の個数に対応するブロックを含むブロック群を構成し、
前記ブロック群に含まれるブロックのブロックヘッダに格納されているマークルルートを用いて前記ブロック群のマークルルートを算出し、
前記ブロック群の1つ前のブロック群のブロック群ヘッダのハッシュ値、及び前記算出したマークルルートを、前記ブロック群のヘッダに格納する、
方法。
【請求項7】
請求項1又は2に記載のライトノード、或いは請求項3に記載のフルノード、としてコンピュータを実現させるためのプログラム。
【請求項8】
トランザクションデータの格納されている複数のブロックと、
前記複数のブロックで構成されるブロック群に含まれるブロックのブロックヘッダに格納されているマークルルートを用いて求められるブロック群のマークルルートと、
前記複数のブロックの前に接続されているブロック群のブロック群ヘッダのハッシュ値と、
を含むブロックチェーンのデータ構造。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ブロックチェーンのデータ容量を削減するための技術に関する。
【背景技術】
【0002】
ブロックチェーンとは、一定期間の取引データの中で有効と判定されたものをブロックという単位でまとめ、そのブロックのハッシュ値をチェーン上に繋ぎ合わせることで有効な取引データの集合及びその実行順序を多数のノード間で合意できる技術である。ブロックチェーンの全データを保持するノード(以下、フルノード)の中でプルーフ・オブ・ワーク(PoW)などの不正が困難とされるランダムなくじにより選ばれたノードは、有効と判定したブロックチェーンの末尾につながる次のブロックを生成し、ブロックチェーンネットワークに送信し、全てのフルノードは当該ブロックをブロックチェーンの当該末尾に接続する。よってブロックチェーンの長さが長くなると、当該のチェーンを多数のフルノードが有効とみなしていること(=多数のノード間の合意形成)を、統計的に保証することができる。また、ブロックチェーンのデータは全てのフルノードが保持しているため極めて高い耐障害性がある。
【0003】
フルノードはブロックチェーンを安定して保持する重要なノードであり、ブロックチェーンの最初のブロックから最新のブロックまで全てのブロックデータを保持するノードである。全てのブロックを保持しているため、取引データ(以下、トランザクションまたは略記してTxとして示す)の全てについて有効/無効を判定することができる。フルノードになることで、ブロックチェーンネットワークのセキュリティがTxの検証によって保障され、またユーザはブロックの作成者になることで報酬を得ることができる。そのため、フルノードになることは他の全ノード(ネットワーク)に対しても、当該ノード自身(ユーザー)に対しても、双方にメリットがある。
【0004】
図1に、ブロックの構造の一例を示す。図では理解が容易になるよう、ブロックチェーンが2つのブロック11#101及び#102で構成される例を示す。各ブロックには、1以上のトランザクションTxとブロックヘッダが含まれる。ブロックヘッダには、バージョン、Nonce、プリビアスハッシュ(Previous Hash)、時刻、マークルルート(Markle Root)、ビット数(n Bits)が格納される。Nonceは、PoW(Proof of Work)で用いる情報であり、一定の長さを有する任意のbit列である。プリビアスハッシュは、検証済みの1つ前のブロック(メインチェーンの最上位のブロック)のブロックヘッダのハッシュ値である。なお、先頭のブロック群ヘッダのプリビアスハッシュは、ブロックチェーンとの対応を明示するため、ブロックチェーンの先頭ブロック(ジェネシスブロック)のブロックヘッダのハッシュ値を格納してもよい。
【0005】
図2に、マークルルートの一例を示す。マークルルートは、トランザクションのハッシュ値を用いて求められる値である。例えば、4つのトランザクションがある場合、それぞれのハッシュ値を求め、求めたハッシュ値の2つを用いてさらにハッシュ値(Hash0及びHash1)を算出し、Hash0及びHash1のハッシュ値(Top Hash)をさらに求める。このように、ツリー構造に従ってハッシュ値を算出することで、マークルルートを算出することができる。
【0006】
ブロックデータのすべてを保持すると、データ量が膨大になるため、各ブロックのヘッダ情報(Block Header)のみを持ち、トランザクションデータは保持しないライトノードが定義されている。ライトノードはブロックチェーンデータを保持しないが、Txを発行することと、Txがフルノードによってブロックチェーンに取り込まれたことを検証することができるノードである。
【0007】
イーサリアムやビットコインなどのパブリック型のブロックチェーンでは過去の全てのTxデータの保持が必要である。年々、利用者も増え単位時間当たりのTx発行数が大幅に増えている。2021年6月11日時点でのイーサリアムのフルノードの保持するブロックチェーンデータ量は821GBであり、2020年6月11日と比較すると1年で約445GB増加している。ライトノードで保持するブロックヘッダはブロックチェーンデータの1/19程度のサイズであるが、どちらの種類のノードも今後さらに保持が必要なデータ量が急激に増加する可能性が高い。データ量が増えることでフルノードやライトノードを運用するユーザーは容量の大きいSSDまたはHDDが必要になる。
【0008】
金子らの研究ではネットワークに属するノードをIPアドレスからランダムにクラスタリングして、ブロックの作成をクラスタの順にし、ブロックごとに順に特定のクラスタが持つことでフルノードが保持するストレージ量をクラスタ数分の1に軽減した(非特許文献1)。またYibin Xuらの研究ではブロックチェーンのセグメントに分けて分散的に保持することでフルノードのストレージ量を軽減した(非特許文献2)。しかし、両文献ともにライトノードのストレージ量を削減することはできない。
【先行技術文献】
【非特許文献】
【0009】
【非特許文献1】金子 勇大,朝香 卓也,“ブロックチェーンにおけるストレージを考慮したDHT 負荷分散クラスタリング”,信学技報, vol. 118, no. 371, NS2018-161, pp. 29-34,2021.7.1
【非特許文献2】YIBIN XU,YANGYU HUAN,“Segment Blockchain: A Size Reduced Storage Mechanism for Blockchain”,IEEE,13.1.2020
【発明の概要】
【発明が解決しようとする課題】
【0010】
本開示の目的は、ライトノードが保持するブロックチェーンのデータ量を削減することにある。
【課題を解決するための手段】
【0011】
本開示のブロックチェーンのデータ構造は、第一に、従来技術と同様、複数のトランザクションで構成されるブロックデータと、ブロックヘッダと、を含むブロックである。第二に、本開示に独自のデータ構造として、複数のブロックで構成されるブロック群データと、ブロック群ヘッダと、を含むブロック群である。前記複数のブロックは、それぞれ、トランザクションデータが格納されている。
【0012】
前記ブロックヘッダは、前記ブロックに含まれるトランザクションのハッシュ値を用いて求められるマークルルートと、前記ブロックの前に接続されているブロックヘッダのハッシュ値と、を含む。また、ブロック群ヘッダのハッシュ値を含む場合がある。前記ブロック群ヘッダは、前記複数のブロックに含まれるトランザクションのハッシュ値又は前記ブロック群に含まれるブロックのブロックヘッダに格納されているマークルルートを用いて求められるブロック群のマークルルートと、前記複数のブロックの前に接続されているブロック群ヘッダのハッシュ値と、を含む。
【0013】
本開示のシステムは、本開示のフルノードと、本開示のライトノードを備える。本開示のフルノード及びライトノードは、トランザクションデータが格納され、1つ前のブロックヘッダのハッシュ値によりチェーン構造となる複数のブロックを送受信する。本開示のフルノード及びライトノードは、さらに本開示の方法を実行する。
【0014】
本開示のフルノードは、ブロックチェーンの長さが一定の個数に達すると、ブロックチェーンに含まれるブロックの最新のブロックから前記一定の個数に対応するブロックを含むブロック群を構成し、
前記ブロック群に含まれるブロックのブロックヘッダに格納されているマークルルートを用いて前記ブロック群のマークルルートを算出し、
前記ブロック群の1つ前のブロック群のブロック群ヘッダのハッシュ値、及び前記算出したマークルルートを、前記ブロック群のヘッダに格納する。
【0015】
本開示のフルノードは、前記くじに当選すると、ブロックを生成するが、当該ブロックが前記ブロック群ヘッダを作成直後のブロックの場合、当該ブロックのブロックヘッダに前記ブロック群ヘッダのハッシュ値も収納する。ブロックを生成すると、他のフルノードとライトノードに転送する。他のノードからブロックを受信すると当該ブロックをノード内に記録する。
【0016】
本開示のライトノードは、ブロックチェーンに含まれるブロックのヘッダ情報を用いてブロックヘッダのチェーンを記録するライトノードであって、
ブロックヘッダのチェーンに含まれる複数のブロックのヘッダ情報を用いて、複数のブロックで構成されるブロック群のヘッダ情報であるブロック群ヘッダのチェーンを作成し、
前記ブロック群ヘッダのチェーンに含まれるブロックヘッダを、前記ブロックヘッダのチェーンから削除する。
【0017】
本開示のライトノードは、
任意のブロックに含まれる任意のトランザクションの検証を行う際、
検証対象のトランザクションのハッシュ値をフルノードに送信し、
前記フルノードから検証対象のトランザクションの格納されているブロック群ヘッダのハッシュ値及び前記ブロック群のマークルツリーデータを受信し、
自装置に格納されているブロック群ヘッダのチェーンから、受信したブロック群のハッシュ値に対応するブロック群ヘッダを読み出し、
受信したマークルツリーデータを用いて検証対象のトランザクションの格納されているブロック群のマークルルートを算出し、
算出されたマークルルートが前記読み出したブロック群ヘッダに格納されているマークルルートと一致することを検証してもよい。
【0018】
なお、上記各開示は、可能な限り組み合わせることができる。
【発明の効果】
【0019】
本開示によれば、ライトノードは、ブロックヘッダよりも数もデータ量も少ないブロック群ヘッダを保持すればよい。このため、本開示は、ライトノードが保持するブロックチェーンのデータ量を削減することができる。このため、本開示は、ブロックチェーンノードの経済的ハードルを下げることができる。
【図面の簡単な説明】
【0020】
【
図2】ブロックヘッダに含まれるマークルルートの一例を示す。
【
図6】ブロック群ヘッダに含まれるマークルルートの一例を示す。
【
図7】ライトノードがトランザクションの検証を行う場合の動作の一例を示す。
【
図9】フルノード及びライトノードのデータ量の一例を示す。
【発明を実施するための形態】
【0021】
以下、本開示の実施形態について、図面を参照しながら詳細に説明する。なお、本開示は、以下に示す実施形態に限定されるものではない。これらの実施の例は例示に過ぎず、本開示は当業者の知識に基づいて種々の変更、改良を施した形態で実施することができる。なお、本明細書及び図面において符号が同じ構成要素は、相互に同一のものを示すものとする。
【0022】
図3に、本開示のシステム構成例を示す。本開示に係る合意形成システムは、複数のノード91がP2P(peer-to-peer)ネットワークで接続されている。ノード91は、コンピュータであり、例えば、処理部31、メモリ32、及び送受信部33を備える。ノード91は、フルノード又はライトノードとして機能する。
【0023】
図4に、本開示のブロックチェーンの構成例を示す。本開示では、ブロックチェーンデータを一定の個数の複数の連続するブロック(以下、ブロック群)単位で分割する。その際、Nの整数倍に該当する区切り部分をチェックポイントとする。すなわち、ブロックチェーンの長さがNの整数倍のチェックポイントに達すると、ブロックチェーンに含まれるブロックの末尾に位置する最新のブロックからN個のブロックを含むブロック群を構成する。これにより、本来フルノードが保持するブロックチェーンのデータを複数ブロック群に分割する。
【0024】
以下、既にブロック群12#1~12#110が存在し、ブロック11#501以降のブロック11がブロックチェーンに接続される例を示す。この場合、ブロック群を構成する最初のブロック11#501のブロックヘッダには、一つ前のブロック11#500のブロックヘッダのハッシュ値に加えて一つ前のブロック群12#110のブロック群ヘッダのハッシュ値が格納されている。また、ブロック11#505のブロックヘッダには、一つ前のブロック11#504のブロックヘッダのハッシュ値に加えてブロック群12#111のブロック群ヘッダのハッシュ値が格納されている。
【0025】
フルノードは、トランザクションの格納されている複数のブロックを含むブロックチェーンを送受信し、認証済みの新たなブロックをブロックチェーンに追加する。このとき、ブロックチェーンが新たなチェックポイントに到達すると、フルノードは、新しいブロック群12のブロック群ヘッダを作成する。例えば、チェックポイントがブロック11#504の場合、各フルノードは、ブロック11#504を受信した際、ブロックの末尾に位置するブロック11#504からN個のブロックを含む新しいブロック群12#111のブロック群ヘッダを作成する。
【0026】
図5はブロック群のデータ構造の一例である。ブロック群12#111のデータは当該ブロック群に含まれる全ブロック11#501~11#504のデータと、新たに定義したブロック群ヘッダ13で構成する。ブロック群ヘッダ13は、プリビアスハッシュ及びマークルルートを含む。ブロック群ヘッダ13に格納されるプリビアスハッシュは、一つ前のブロック群12#110のブロックヘッダのハッシュ値である。なお、先頭のブロック群ヘッダのプリビアスハッシュは、ブロックチェーンとの対応を明示するため、ブロックチェーンの先頭ブロック(ジェネシスブロック)のブロックヘッダのハッシュ値を格納してもよい。
【0027】
図6に、ブロック群ヘッダ13に含まれるマークルルートの一例を示す。本開示では、Txがブロックチェーンに取り込まれていることを極力少ないデータ量で検証するため、ブロック群12のマークルツリーを構成する。ブロック群12のマークルツリーは、ブロック11#501~11#504に含まれる各トランザクションのハッシュ値を葉ノードとしてブロック群12のマークルルートを計算したものであり、ブロック群ヘッダ13内に記録される。
【0028】
例えば、ブロック11#501にトランザクション#5011~#5014が含まれる場合、トランザクション#5011~#5014の各ハッシュ値を用い、トランザクション#5011~#5014のツリー構造に従って、ブロック群12#111のマークルツリーが算出される。ブロック11#501~11#504のブロックヘッダには、マークルルートが格納されている。そのため、フルノードは、ブロック11#501~11#504のブロックヘッダに格納されているマークルルートを用いて、ブロック群12#111のマークルルートを算出する。
【0029】
ここで、マークルツリーデータはあるTxが当該ブロックの一部であることを示す事ができるlog2n個のハッシュ値のセット(nは当該ブロックに含まれるトランザクション数)であり、nが大きい場合ブロック全体のサイズに比べて大幅に小さい特徴がある。本開示では、マークルツリーがブロック11からブロック群12に拡張されている。そのため、フルノードは、TxIDを用いてマークルルートを算出した場合に、当該Txの格納されているブロック群ヘッダのマークルルートとなるデータを、マークルツリーデータとして算出する。このように、本開示は、ブロック群を構成するブロックを集約するブロック群ヘッダ13を新たに定義する。
【0030】
フルノードは、前記くじに当選するとブロックを生成するが、当該ブロックが前記ブロック群ヘッダを作成直後のブロックの場合、例えば、チェックポイントブロック111#504の次のブロック111#505の場合、ブロック群12#111のブロック群ヘッダのハッシュ値も当該ブロック111#505のブロックヘッダに収納する。ブロック111#505を生成すると、他のフルノードとライトノードに転送する。他のノードからブロックを受信すると当該ブロックをノード内に記録する。
【0031】
一方、ライトノードは、他のノードからブロックを受信すると、当該ブロックのヘッダのみをノード内に記録する。これによって、オリジンブロックであるブロック11#501から続くブロックヘッダのチェーンが作成され、ライトノードに保持される。
【0032】
ライトノードにおいても、オリジンブロックであるブロック11#501からNの整数倍毎に、ブロックヘッダを用いてブロック群ヘッダ13を作成する。本実施形態では、ライトノードは、ブロックヘッダのチェーンの中のブロック11#501からブロック11#504までのヘッダ情報を用いてブロック群ヘッダを作成する。
【0033】
ブロック群ヘッダ13には、前述の通り、プリビアスハッシュ及びマークルルートが含まれている。プリビアスハッシュは、一つ前のブロック群12#110のブロック群ヘッダのハッシュ値である。本実施形態では、ライトノードは、ブロック群12#111の最初のブロック11#501のブロックヘッダから読み出すことができる。マークルルートは、ブロック群12を構成するブロック11を受信する毎にブロック11のブロックヘッダに含まれるマークルルート値を用いてアップデートしてもよいし、ブロック11#501~11#504の全てを受信後にブロックヘッダのチェーンに含まれるブロック11#501~11#504のマークルルートを用いて計算してもよい。
【0034】
本実施形態では、新しいブロック群12#111が構成されると、ライトノードは、ブロック群12#111のブロック群ヘッダ13を保持する。そして、
図4に示すように、最初のブロック群から最新のブロック群12#111までのブロック群ヘッダ13のチェーンを保持する。このため、ライトノードは、最初のブロック11#001からブロック11#504までの全てのブロックヘッダを保持する必要はなく、ブロック群ヘッダ13を保持すればよい。
【0035】
なお、ブロックチェーンは低い確率でチェーンが分岐するが、その後長い方のチェーンに後続のブロックを接続することでチェーンが長くなるとメインチェーンが確定する特徴がある。ビットコインの場合6段から8段程度チェーンが長くなるとメインチェーンがほぼ確定すると言われている。そこで、メインチェーンがほぼ確定するブロック数Mを予め定める。ライトノードは、ブロックチェーンの長さがNの整数倍+一定の個数M個に達すると、末尾のブロック群12#111に含まれるブロックのヘッダを廃棄する。末尾のブロック群12#111内に分岐(セカンダリチェーン)がある場合は、さらにセカンダリチェーンの末尾とメインチェーン末尾の長さの差がMに達してから廃棄する。Mの大きさを十分大きくすることでブロックチェーン分岐の影響がブロック群12#111に及ばないようにすることができる。以上のように、本開示は、1ライトノードが保持するデータ量を減らすことができる。
【0036】
また、フルノードについても、ブロックチェーンの最初のブロック11から最新のブロック11まで全てのブロックデータを保持する必要はない。一定の個数がNの整数倍である場合、フルノードは、ブロックチェーンの長さがNの整数倍+一定の個数M個に達すると、末尾のブロック群12#111に含まれるブロックを廃棄することができる。
【0037】
前記ブロックを廃棄するフルノードは、例えば以下のように決定する。「フルノードの総数=S、ネットワークからのブロック消失を防ぐための冗長度=R、フルノードの番号=I、当該ブロック群ヘッダのハッシュ値=Hのとき、IとHのハッシュ値をSで割った余りがR以上の場合、当該フルノードは当該ブロック群に含まれるブロックを廃棄して良い。」以上のように、本開示は、1フルノードが保持する必要があるデータ量も減らすことができる。
【0038】
図7に、ライトノードがトランザクションの検証を行う場合の動作の一例を示す。ライトノードにおいて、あるTxがブロックチェーンに含まれていることを検証したい場合、いずれかのフルノードに当該Txのハッシュ値(TxID)を送信する(S101)。当該フルノードは、当該Txを含むブロック群12のブロック群ヘッダのハッシュ値(ブロック群ID)とマークルツリーデータを算出し(S102)、当該ライトノードに返却する(S103)。
【0039】
ライトノードは、自装置に格納されているブロック群ヘッダのチェーンから、受信したブロック群IDに対応するブロック群ヘッダを読み出す。ライトノードは、受信したマークルツリーデータを用いて、受信したブロック群IDに対応するブロック群12のマークルルートを算出する(S104)。ライトノードは、計算できるマークルルートの値が、ブロック群IDに対応するブロック群ヘッダ13内に保持しているマークルルートの値と一致するか否かを判定する。
【0040】
一致すれば、当該Txが当該ブロック群12に含まれていることになる。このため、ライトノードは、ブロック群12のブロック群ヘッダ13を保持するだけで、ブロック全体を受信せずに、任意のTxがブロック群12に含まれていることを確認することができる。
【0041】
ブロックチェーン技術では、最新のブロックが複数のノードでほぼ同時に作成された場合、
図8に示すように、ブロックチェーンの分岐が発生する可能性がある。次のブロックは長いほうのチェーンに接続されるため短い方のチェーンが伸長する確率は低いが、まれに伸長してメインチェーンの切り替えが発生する。そこで、チェックポイントがブロック11#503であればブロック11#503までのブロック群12を構成するが、切り替えの可能性のあるブロック11#504以降は一定数のブロック11が接続されるまで、ブロック群12を構成するブロック及びブロックヘッダの廃棄を行わない。この一定数(前記M)は、例えば、1000が例示できる。
【0042】
また、本開示のシステムでは、チェーンの切り替えが起こる確率が低い過去の古いブロックは複数のフルノードが分散して保持し、切り替えの可能性のある一定段数以内の新しいブロックは全てのフルノードが保持する。例えば、
図4の例では、ブロック群12#111については全てのフルノードが保持するが、ブロック群12#1については一部のフルノードのみが保持する。よって、ノードがフルノードになる際には、0以上の任意の数のブロック群12のデータと全てのブロック群ヘッダ及び、一つ前のチェックポイントから最新のブロックまでのデータ(最大で1ブロック群分のブロック+M個ブロック)を他のフルノードからダウンロードする。
【0043】
ジェネシスブロックから最新ブロックまでのブロック群ヘッダ及びブロックヘッダのハッシュ値に矛盾がなく、またそのチェーンの末尾が伸び続けることで、当該フルノードは当該ブロック群ヘッダとブロックヘッダのチェーンが正当なメインチェーンであることを判断する事ができる。また、受信したブロック群データのマークルツリーを計算し受信したブロック群ヘッダ内のマークルルートと比較することで受信したブロック群データが正当であることを判断することができる。
【0044】
同様にノードがライトノードになる際には、全てのブロック群ヘッダと、一つ前のチェックポイントから最新のブロックまでのブロックヘッダ(最大で1ブロック群分のブロックヘッダ+M個のブロックヘッダ)を他のフルノードまたはライトノードからダウンロードする。またジェネシスブロックから最新ブロックまでのブロック群ヘッダ及びブロックヘッダのハッシュ値に矛盾がなく、またそのチェーンの末尾が伸び続けることで、当該ライトノードは当該ブロック群ヘッダとブロックヘッダのチェーンが正当なメインチェーンであることを判断する事ができる。
【0045】
さらに、
図8に示すように、ブロックチェーンの分岐が発生した場合、ブロック11#504以降のブロック群12の構成を行う際に、ブロック11#509及び11#510もブロック群12に含めてもよい。
【0046】
図9に、フルノード及びライトノードのデータ量の一例を示す。従来のブロックチェーンのノードは、年々肥大化するブロックチェーンの全データを保存する必要があった。例えば、2021年12月時点では、ブロック数が1400万ブロックであった。この場合、ブロックサイズが80kBであり、ヘッダーサイズが500Bとして計算すると、ライトノードが必要なデータ量は7GBであり、フルノードが必要なデータ量は1.1TBである。非特許文献2のSegment Blockchainを同一条件で適用すると、1000個のブロックで1ブロック群を構成することで、フルノードの保持すべきデータ量を7.1GBまで削減できている。
【0047】
一方、本開示では、過去のトランザクションをネットワーク上から消すことなく、1ノードが保持するデータ量を大幅に削減できる。例えば、非特許文献2と同様に1000個のブロックで1ブロック群を構成した場合、1400万個のブロック11は14000個のブロック群12にまとめられている。この場合、本開示は、14000個のブロック群ヘッダ13を保持すればよく、ヘッダ情報を8MBまで削減することができる。従って、本開示は1ライトノードが保持するデータ量を大幅に削減できる。
【0048】
また、本開示では、フルノードにおいて、各ブロック11のヘッダ情報を保持してもよいが、各ブロック11のヘッダ情報に代えてブロック群ヘッダ13を保持することもできる。この場合、ヘッダ情報のデータ量が7GBから8MBになるため、1フルノードが保持するデータ量を88MBまで削減することができる。従って、本開示は1フルノードが保持するデータ量についても大幅に削減できる。
【0049】
このように、本開示はデータ量を削減することができるため、従来フルノードやライトノードとして使用できなかった軽量デバイスでもノードになることが可能である。さらにノードの経済的なハードルを下げることができるため、ブロックチェーンネットワークに参加しやすくなり、フルノードが減ることによるセキュリティの懸念も解決することが可能である。
【0050】
本開示のノード91はコンピュータとプログラムによっても実現でき、プログラムを記録媒体に記録することも、ネットワークを通して提供することも可能である。本開示のプログラムは、本開示に係るノード91に備わる各機能部としてコンピュータを実現させるためのプログラムであり、本開示に係るノード91が実行する方法に備わる各ステップをコンピュータに実行させるためのプログラムである。
【産業上の利用可能性】
【0051】
本開示は情報通信産業に適用することができる。
【符号の説明】
【0052】
11:ブロック
12:ブロック群
13:ブロック群ヘッダ
31:処理部
32:メモリ
33:送受信部
91:ノード