ブロックチェーンについて考えてみた

   特許を考案し出願審査中だ。

【書類名】明細書

【発明の名称】データ構造

【技術分野】

 【0001】

 本発明は、ブロックチェーンのデータ構造に関する。

【背景技術】

 【0002】

 現在、Peer to Peerに係る個々のPeer(コンピュータ)について、データベースを分散して管理するブロックチェーン技術を応用した様々なシステムが開発されている。ブロックチェーン技術は、仮想通貨の決済、企業間での情報共有、社内における稟議手続等、ネットワーク上で行われる種々の手続処理についての応用が検討されている。

 【0003】

 例えば、以下の非特許文献1等の従来のデータ構造(ブロックチェーン10)は、ブロックチェーン10を構成するGenesisブロック20が1つ存在する(図5参照)。そして、Genesisブロック20のハッシュ値を、連結されるトランザクションデータより計算されたマークルルートと共に、後段の第1のデータブロック30に格納している。

【先行技術文献】

【非特許文献】

 【0004】

  【非特許文献1】『ビットコインとブロックチェーン 暗号通貨を支える技術』(著:Andreas M. Antonopoulos、訳:今井崇也、鳩貝淳一郎、発行:NTT出版)

【発明の概要】

【発明が解決しようとする課題】

 【0005】

 しかしながら、ブロックチェーン10のデータ構造は直列数珠つなぎの構造となっているため、第1のデータブロック30のナンス計算中には、第2のデータブロック40が連結できない状態である。第2のデータブロック40のナンス計算は、第1のデータブロック30のナンス計算が完了し、ブロック0ヘッダのハッシュ値が確定した段階で開始される。すなわち、新たなデータブロックの連結にナンス計算の完了待ちが発生し、性能に影響を及ぼすという問題があった。

 【0006】

 ビットコインの場合、平均10分に1回の割合でデータブロックが生成されるが、あえてこの時間を設定している。しかしながら、実際は5分でデータブロックが生成されることもあれば、1時間経ってもデータブロックが生成されないこともある。

 【0007】

 また、2つのグループが同時にマイニングに成功した場合、ブロックチェーンが一時的に分岐する現象が起こる。例えば、データブロック40(「D2」)がデータブロック50(「D3」)とデータブロック51(「Dx」)に分岐したときは(図6参照)、データブロック60(「D4」)とデータブロック61(「Dy」)をマイニングして分岐の判定に利用する。

 【0008】

 このとき、データブロック60とデータブロック61の一方の処理については無駄になてしまう。これは、ブロックチェーン10の連結点が1箇所であるために発生する事象であり、連結点が複数あれば無駄な処理を別のロジックに置き換えることができる。

 【0009】

 本発明は、このような事情に鑑みてなされたものであり、ブロックチェーンを構成する新たなデータブロックの追加、接続の際に発生する不均一な待ち時間を解消することができるデータ構造を提供することを目的とする。

【課題を解決するための手段】

 【0010】

 本発明は、データの先頭をなすジェネシスブロックと、前記ジェネシスブロックの後方に連結されるデータブロックとからなるブロックチェーンのデータ構造において、前記ジェネシスブロックはn(n≧3)個で構成され、全ての前記ジェネシスブロックが円環状に接続され、前記データブロックの1つは、少なくとも2つ以上の異なる前記ジェネシスブロックに接続され、前記データブロックには、連結された前記ジェネシスブロックのそれぞれのハッシュ値が格納されていることを特徴とする。

 【0011】

 本発明のブロックチェーンは、データの先頭をなすジェネシスブロックがn(n≧3)個あり、これらが円環状に接続されている。データブロックはジェネシスブロックの後方に連結されるが、データブロックの1つは、少なくとも2つ以上の異なるジェネシスブロックに接続されている。

 【0012】

 従来、新たなデータブロックを連結可能なポイントは、データ構造(直線状)の終端の1箇所に限られていたが、本発明は連結ポイントの選択肢を増やすことができる。これにより、新たなデータブロックの追加、接続の際に発生する不均一な待ち時間を解消することができる。


 【0013】


 本発明のブロックチェーンのデータ構造において、前記ジェネシスブロックの各々の後方に第m(m≧1)列の前記データブロックが連結され、第m列の前記データブロックの1つは、第(m+1)列の少なくとも2つ以上の前記データブロックに接続され、データ全体としてチューブ形状をなしている。


 【0014】


 この構成によれば、ジェネシスブロックの後方に第1列のデータブロックが連結され、当該第1列のデータブロックの後方に第2列のデータブロックが連結される。さらに、第m(m≧1)列のデータブロックの1つは、第(m+1)列の少なくとも2つ以上のデータブロックに接続されて、データ全体としてチューブ形状をなす。1つのデータブロックが後段の2つ以上のデータブロックに接続されてデータが拡散していくため、データ改竄の難易度を高めることができる。


【発明の効果】


 【0015】


 新たなデータブロックの追加、接続の際に発生する不均一な待ち時間を解消し、データブロックの改竄の難易度を高めることができる。


【図面の簡単な説明】


 【0016】


 【図1】実施形態のブロックチェーンのデータ構造を示す概略図である。


 【図2】ブロックチェーンのデータ構造の詳細(ジェネシスブロックとデータブロックの接続)を示す図である。


 【図3】ブロックチェーンのデータ構造の詳細(チューブ形状)を示す図である。


 【図4】ブロックチェーンのデータ構造(変更形態)の詳細を示す図である。


 【図5】従来のブロックチェーンのデータ構造(1)を示す図である。


 【図6】従来のブロックチェーンのデータ構造(2)を示す図である。


 【図7】従来のブロックチェーンのデータ構造(3)を示す図である。


 【図8】従来のブロックチェーンのデータ構造(4)を示す図である。


【発明を実施するための形態】


 【0017】


 まず、図1を参照して、本発明のブロックチェーンのデータ構造を説明する。


 【0018】


 本発明の実施形態に係るブロックチェーン1は、データの先頭をなすブロックであるジェネシスブロックを複数有し、これらが接続されて円環ブロック2を構成している。ジェネシスブロックは任意の数(n:自然数)であるが、n≧3としてジェネシスブロックが論理的かつ円環状に接続されている。


 【0019】


 ここで、「論理的かつ円環状に接続」とは、10個のジェネシスブロック(図中のGenesisブロック0~9)を利用する場合、ハッシュ番号の「0と1」、「1と2」、「2と3」、「3と4」、「4と5」、「5と6」、「6と7」、「7と8」、「8と9」を接続し、さらに、ハッシュ番号の最小値「0」と最大値「9」とを組み合わせて「9と0」を接続することを意味する。


 【0020】


 従来のブロックチェーン10のデータ構造(図7参照)は、例えば4個のGenesisブロック20~23を用いた場合、ジェネシスブロックの数だけ直列のデータチェーンが作成される。具体的には、Genesisブロック20の列にはデータブロック30,40,50が連結され、Genesisブロック21の列にはデータブロック31,41,51が連結されるが、データチェーン間に相関はない。すなわち、Genesisブロック20~23ごとに別のデータ構造をとることとなる。一方で、本発明は、複数のジェネシスブロックを円環状にして、データブロック同士に相関が生じる点こと特徴点となる。


 【0021】


 また、従来のブロックチェーン15のデータ構造(図8参照)は、本実施形態のブロックチェーン1と比較して、Genesisブロック20~23が円環状となっていない点以外は同じ構成といえる。しかしながら、ブロックチェーン15では、新たなデータブロック33の追加に伴い、Genesisブロック24を追加する必要がある。この点、本実施形態のブロックチェーン1は、ジェネシスブロックの増加を抑えることができる。


 【0022】


 図1に示す本実施形態のブロックチェーン1において、Genesisブロック0には、2個のデータブロック(データブロック3A、データブロック3B)が連結されている。ここで、データブロック3Aはブロック0ヘッダを有し、データブロック3Bはブロック1ヘッダを有している。ブロックNヘッダ(N≧0)は、トランザクションの履歴が書き込まれるデータであり、接続されるブロックのハッシュ値と、ナンス値と、マークルルートとから構成されている。


 【0023】


 ハッシュ値とは、ブロックNヘッダに対してアルゴリズム(SHA256)を用いて、別の数値(文字列)を生成する暗号的な数値である。例えば、Genesisブロック0はデータブロック3A及びデータブロック3Bに接続しているので、Genesisブロック0のハッシュ値は、ブロック0ヘッダの内部とブロック1ヘッダの内部にそれぞれ記憶される。このように、1つのデータブロックに2つのハッシュ値が格納される。


 【0024】


 ナンス値とは、ハッシュ関数の出力を変更するために用いられる数値である。また、マークルルートとは、マークルツリー(ハッシュ値を含む二分木)内で二分木(ノード)ののペアから1つのハッシュ値が残るルートのことであり、ブロックに含まれる全てのトランザクションが要約されたものである。


 【0025】


 図2は、ジェネシスブロックとデータブロックの詳細を示している。


 【0026】


 例えば、Genesisブロック0は、データブロック3A(ブロック0ヘッダ)とデータブロック3B(ブロック1ヘッダ)に連結されている。また、Genesisブロック1は、データブロック3B(ブロック1ヘッダ)とデータブロック3C(ブロック2ヘッダ)に連結されている。このため、各データブロックは、ジェネシスブロックのハッシュ値が2つ格納されている。Genesisブロック2~9についても同様である。なお、図中の「GB」は、ジェネシスブロックを意味する。


 【0027】


 さらに、データブロック3Aは、後段のデータブロック4A(ブロック10ヘッダ)とデータブロック4B(ブロック11ヘッダ)に連結されている。また、データブロック3Bは、後段のデータブロック4B(ブロック11ヘッダ)とデータブロック4C(ブロック12ヘッダ)に連結されている。2列目以降のデータブロックは、前段のデータブロックのハッシュ値が2つ格納されている。


 【0028】


 このようにデータブロックを後段に連結していくと、ジェネシスブロックが円環状になっていることから、ブロックチェーン1の全体のデータ構造は、図3に示すようなチューブ形状をなす。


 【0029】


 データブロック3A~3C(図2参照)は、図3において、ジェネシスブロック(図中の「G」で示す)の後方に連結される第1列(m=1)のデータブロック(図中の「D」で示す)である。また、データブロック4A~4D(図2参照)は、第2列(m=2)のデータブロックである。そして、第m列のデータブロックの1つは、第(m+1)列の少なくとも2つ以上のデータブロックに接続される。


 【0030】


 このようなデータ構造では、データブロック「X1」の追加完了を待たずに、新たなデータブロック「X2」の追加が可能となる。すなわち、ブロックチェーン1は、連結ポイントを複数有するデータ構造となっているため、1つの連結ポイントがナンス計算の実行中で、新たなデータブロックが連結できない場合でも、別の計算済みの連結ポイントにデータブロックを連結することができる。


 【0031】


 具体的には、データブロック「X1」は、データブロック「D1」のハッシュ値とデータブロック「D2」のハッシュ値を格納するが、データブロック「D1」、データブロック「D2」は連結が完了していれば、その後段にデータブロック「X1」を追加することができる。


 【0032】


 また、データブロック「X2」は、データブロック「D2」のハッシュ値とデータブロック「D3」のハッシュ値を格納する。データブロック「D2」、データブロック「D3」の連結が完了していれば、データブロック「X1」の連結完了に関係なく、データブロック「X2」を追加することができる。これは、従来のデータ構造(図5~図7参照)よりもデータブロックの追加にかかる時間が短縮されることを意味する。また、1つのデータブロックのハッシュ値が2つのデータブロックに格納され拡散していくため、データ改竄の難易度が高まる。


 【0033】


 次に、図4に、ブロックチェーン1のデータ構造の変更形態を示す。図示するように、Genesisブロック0は、データブロック3A(ブロック0ヘッダ)とデータブロック3B(ブロック1ヘッダ)に連結されている。また、Genesisブロック1は、データブロック3B(ブロック1ヘッダ)とデータブロック3C(ブロック2ヘッダ)に連結されている。データブロック3Bには、Genesisブロック0とGenesisブロック1のそれぞれのハッシュ値が、1つのファイルにまとめて格納されている。


 【0034】


 さらに、データブロック3Aは、後段のデータブロック4A(ブロック10ヘッダ)とデータブロック4B(ブロック11ヘッダ)に連結されている。また、データブロック3Bは、後段のデータブロック4B(ブロック11ヘッダ)とデータブロック4C(ブロック12ヘッダ)に連結されている。2列目のデータブロック4Bは、前段のデータブロック3Aとデータブロック3Bのそれぞれのハッシュ値が、1つのファイルにまとめて格納されている。このように、格納する2つのハッシュ値を連結し、さらにハッシュ化して格納しても同様の効果が得られる。


 【0035】


 なお、ジェネシスブロックの数の増減により多重度が増加するが、要求されるシステムスケールに合わせて適宜変更することができる。上記実施形態は、本発明を実施する一態様であり、上記実施形態に限定されるものではない。また、本発明は、各ブロックに対する様々な情報の付加も考慮し得ることを想定している。


 【0036】


 何らかの方法、プログラム、端末、装置、サーバ又はシステムにおいて、本実施形態に記載されたものと異なる動作をする側面があるとしても、本発明は、記載された動作の何れかと同一の動作を対象とする。すなわち、記載されたものと異なる動作が存在することは、当該方法等を本発明の範囲外とするものではないことを付言する。


【符号の説明】


 【0037】


 1,10,15…ブロックチェーン、2,20~24…ジェネシスブロック、3A~3C,4A~4C,30~70…データブロック。


【書類名】特許請求の範囲


 【請求項1】


 データの先頭をなすジェネシスブロックと、前記ジェネシスブロックの後方に連結されるデータブロックとからなるブロックチェーンのデータ構造において、


 前記ジェネシスブロックはn(n≧3)個で構成され、全ての前記ジェネシスブロックが円環状に接続され、


 前記データブロックの1つは、少なくとも2つ以上の異なる前記ジェネシスブロックに接続されていることを特徴とするデータ構造。


 【請求項2】


 請求項1に記載のデータ構造において、


 前記ジェネシスブロックの各々の後方に第m(m≧1)列の前記データブロックが連結され、


 第m列の前記データブロックの1つは、第(m+1)列の少なくとも2つ以上の前記データブロックに接続され、データ全体としてチューブ形状をなしていることを特徴とするデータ構造。

【書類名】要約書


【要約】


【課題】ブロックチェーンを構成する新たなデータブロックの追加、接続の際に発生する不均一な待ち時間を解消することができるデータ構造を提供する。


【解決手段】本発明のブロックチェーン1は、データの先頭をなすジェネシスブロック(G)と、ジェネシスブロック(G)の後方に連結されるデータブロック(D)とからなるデータ構造を有している。データブロック(D)の1つは、少なくとも2つ以上の異なるジェネシスブロック(G)に連結され、データブロック(D)には、連結されたジェネシスブロック(G)のそれぞれのハッシュ値が格納されている。


【選択図】図3













コメント

このブログの人気の投稿

アマチュア無線で利用する1.8Mhz のアンテナ作成に挑戦

発言の仕方には気をつけよう

コーディング用フォント