(57)【要約】【課題】ブロックチェーン・ネットワークにおいて過去のトランザクションに効率的にアクセス可能とするための方法を提供する。【解決手段】第１のノード１０１は、記憶部１０１Ｃ又は第１のノード１０１からアクセス可能な記憶装置又は記憶媒体をメモリプールとして蓄積した１又は複数のトランザクションから新たなブロックを生成する（Ｓ２０１）。生成されたブロックは、ブロックチェーン・ネットワーク１００においてその採択が合意された場合、各ノードにおいて、ブロックチェーンに追加される（Ｓ２０２）。本発明の実施形態では、さまざまな合意アルゴリズムを採用可能であるが、ファイナリティ（ｆｉｎａｌｉｔｙ）のある合意アルゴリズムであることを条件とする。各ノードでは、追加されたブロックの高さと当該ブロック内における順序とに基づいて、各トランザクションを一意に特定する識別子を生成して記憶する（Ｓ２０３）。【選択図】図２
2019110511.tif 000002
【特許請求の範囲】
【請求項１】
ブロックチェーン・ネットワークにおいて過去のトランザクションにアクセス可能とするための方法であって、
前記ブロックチェーン・ネットワークを構成するノードが、ファイナリティのある合意アルゴリズムの下で合意されたブロックについて、前記ブロックに含まれる各トランザクションに対して、前記ブロックの高さ及び前記ブロック内の順序に基づく識別子を記憶するステップを含み、
前記識別子は、第１のバイト数のブロック高領域と第２のバイト数の順序領域とを有することを特徴とすることを特徴とする方法。
【請求項２】
前記第１のバイト数は、３から４のいずれかであることを特徴とする請求項１に記載の方法。
【請求項３】
前記第２のバイト数は、１又は２であることを特徴とする請求項１又は２に記載の方法。
【請求項４】
前記識別子のバイト数は、４から６のいずれかであることを特徴とする請求項１から３のいずれかに記載の方法。
【請求項５】
コンピュータに、ブロックチェーン・ネットワークにおいて過去のトランザクションにアクセス可能とするための方法を実行させるためのプログラムであって、前記方法は、
前記ブロックチェーン・ネットワークを構成するノードが、ファイナリティのある合意アルゴリズムの下で合意されたブロックについて、前記ブロックに含まれる各トランザクションに対して、前記ブロックの高さ及び前記ブロック内の順序に基づく識別子を記憶するステップを含み、
前記識別子は、第１のバイト数のブロック高領域と第２のバイト数の順序領域とを有することを特徴とするプログラム。
【請求項６】
過去のトランザクションへのアクセスを可能とするブロックチェーン・ネットワークを構成するためのノードであって、
ファイナリティのある合意アルゴリズムの下で合意されたブロックについて、前記ブロックに含まれる各トランザクションに対して、前記ブロックの高さ及び前記ブロック内の順序に基づく識別子を記憶し、
前記識別子は、第１のバイト数のブロック高領域と第２のバイト数の順序領域とを有することを特徴とするノード。
【請求項７】
ブロックチェーン・ネットワークが有する過去のトランザクションにアクセス可能とするための方法であって、
前記ブロックチェーン・ネットワークを構成するいずれかのノードが有するブロックチェーンにアクセス可能なコンピュータが、前記ブロックチェーンに含まれる、ファイナリティのある合意アルゴリズムの下で合意されたブロックについて、前記ブロックに含まれる各トランザクションに対して、前記ブロックの高さ及び前記ブロック内の順序に基づく識別子を記憶するステップを含み、
前記識別子は、第１のバイト数のブロック高領域と第２のバイト数の順序領域とを有することを特徴とする方法。
【請求項８】
コンピュータに、ブロックチェーン・ネットワークが有する過去のトランザクションにアクセス可能とするための方法を実行させるためのプログラムであって、前記方法は、
前記ブロックチェーン・ネットワークを構成するいずれかのノードが有するブロックチェーンにアクセス可能なコンピュータが、前記ブロックチェーンに含まれる、ファイナリティのある合意アルゴリズムの下で合意されたブロックについて、前記ブロックに含まれる各トランザクションに対して、前記ブロックの高さ及び前記ブロック内の順序に基づく識別子を記憶するステップを含み、
前記識別子は、第１のバイト数のブロック高領域と第２のバイト数の順序領域とを有することを特徴とするプログラム。
【請求項９】
過去のトランザクションへのアクセスを可能とするコンピュータであって、
ブロックチェーン・ネットワークを構成するいずれかのノードが有するブロックチェーンに含まれる、ファイナリティのある合意アルゴリズムの下で合意されたブロックについて、前記ブロックに含まれる各トランザクションに対して、前記ブロックの高さ及び前記ブロック内の順序に基づく識別子を記憶し、
前記識別子は、第１のバイト数のブロック高領域と第２のバイト数の順序領域とを有することを特徴とするコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ブロックチェーン・ネットワークにおいて過去のトランザクションにアクセス可能とするための方法及び当該ネットワークを構成するためのノードに関する。
【背景技術】
【０００２】
複数のノードを備えるブロックチェーン・ネットワークにおいて、各ノードは、採択について合意が形成されたブロックが連なったブロックチェーンを有する。各ブロックは、ヘッダと、１又は複数のトランザクションを含むボディとを有する。
【０００３】
各トランザクションは、当該トランザクションのハッシュ値をその識別子とすることができ、当該識別子は「トランザクションｉｄ（ｔｘｉｄ）」と呼ばれることがある。ｔｘｉｄは、過去のトランザクションを参照する際に用いられ、そのディクショナリが必要に応じて、１若しくは複数又はすべてのノードにおいて保持されることがある。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、ｔｘｉｄは一般的に３２バイトのハッシュ値であり、トランザクションの数が増加すればするだけ、それに対応するｔｘｉｄのデータが膨大となる。データの肥大化は、ｔｘｉｄを用いる際のアクセス速度の低下を招く。
【０００５】
本発明は、このような問題点に鑑みてなされたものであり、その目的は、ブロックチェーン・ネットワークにおいて過去のトランザクションに効率的にアクセス可能とするための方法及びそのためのプログラム並びに当該ネットワークを構成するためのノードを提供することにある。
【課題を解決するための手段】
【０００６】
このような目的のために、本発明の第１の態様は、ブロックチェーン・ネットワークにおいて過去のトランザクションにアクセス可能とするための方法であって、前記ブロックチェーン・ネットワークを構成するノードが、ファイナリティのある合意アルゴリズムの下で合意されたブロックについて、前記ブロックに含まれる各トランザクションに対して、前記ブロックの高さ及び前記ブロック内の順序に基づく識別子を記憶するステップを含むことを特徴とする。
【０００７】
また、本発明の第２の態様は、第１の態様において、前記ブロックチェーン・ネットワークにおいてトランザクションに関連する１又は複数の条件が指定され、指定された条件と関連するトランザクションに対応する識別子が記憶されることを特徴とする。
【０００８】
また、本発明の第３の態様は、第２の態様において、前記条件は、仮想通貨又は暗号通貨のアドレスであることを特徴とする。
【０００９】
また、本発明の第４の態様は、第１から第３のいずれかの態様において、前記識別子は、第１のバイト数のブロック高領域と第２のバイト数の順序領域とを有することを特徴とする。
【００１０】
また、本発明の第５の態様は、第４の態様において、前記第１のバイト数は、３から４のいずれかであることを特徴とする。
【００１１】
また、本発明の第６の態様は、第４の態様において、前記第２のバイト数は、１又は２であることを特徴とする。
【００１２】
また、本発明の第７の態様は、第４から第６のいずれかの態様において、前記識別子のバイト数は、４から６のいずれかであることを特徴とする。
【００１３】
また、本発明の第８の態様は、コンピュータに、ブロックチェーン・ネットワークにおいて過去のトランザクションにアクセス可能とするための方法を実行させるためのプログラムであって、前記方法は、前記ブロックチェーン・ネットワークを構成するノードが、ファイナリティのある合意アルゴリズムの下で合意されたブロックについて、前記ブロックに含まれる各トランザクションに対して、前記ブロックの高さ及び前記ブロック内の順序に基づく識別子を記憶するステップを含むことを特徴とする。
【００１４】
また、本発明の第９の態様は、過去のトランザクションへのアクセスを可能とするブロックチェーン・ネットワークを構成するためのノードであって、ファイナリティのある合意アルゴリズムの下で合意されたブロックについて、前記ブロックに含まれる各トランザクションに対して、前記ブロックの高さ及び前記ブロック内の順序に基づく識別子を記憶することを特徴とする。
【００１５】
また、本発明の第１０の態様は、ブロックチェーン・ネットワークが有する過去のトランザクションにアクセス可能とするための方法であって、前記ブロックチェーン・ネットワークを構成するいずれかのノードが有するブロックチェーンにアクセス可能なコンピュータが、前記ブロックチェーンに含まれる、ファイナリティのある合意アルゴリズムの下で合意されたブロックについて、前記ブロックに含まれる各トランザクションに対して前記ブロックの高さ及び前記ブロック内の順序に基づく識別子を記憶するステップを含むことを特徴とする。
【発明の効果】
【００１６】
本発明の一態様によれば、ファイナリティのある合意アルゴリズムの下で合意されたブロックについて、当該ブロックに含まれる１又は複数のトランザクションに対して、当該ブロックの高さ及び当該ブロック内の順序に基づく識別子を用いて各トランザクションを特定することによって、データ量の膨大化を回避することができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の一実施形態にかかるブロックチェーン・ネットワークを示す図である。
【図２】本発明の一実施形態にかかる過去のトランザクションに効率的にアクセス可能とするための方法を示す図である。
【発明を実施するための形態】
【００１８】
以下、本発明の実施形態を図面を参照して詳細に説明する。
【００１９】
（第１の実施形態）  
図１に、本発明の第１の実施形態にかかるブロックチェーン・ネットワークを示す。ネットワーク１００は、第１のノード１０１と、第２のノード１０２と、第３のノード１０３と、第４のノード１０４とを備える。これらのノードは、それぞれブロックチェーンを有し、新たなブロックの採択にかかる合意形成に参加する。図１では、４個の例を示しているが、これはあくまで例示である。また、合意形成に参加しないノードがネットワーク１００に含まれることもある。
【００２０】
第１のノード１０１は、通信インターフェースなどの通信部１０１Ａと、プロセッサ、ＣＰＵ等の処理部１０１Ｂと、メモリ、ハードディスク等の記憶装置又は記憶媒体を含む記憶部１０１Ｃとを備え、各処理を行うためのプログラムを実行することによって構成することができ、１又は複数の装置ないしサーバを含むことがあり、また当該プログラムは、１又は複数のプログラムを含むことがあり、また、コンピュータ読み取り可能な記憶媒体に記録して非一過性のプログラムプロダクトとすることができる。
【００２１】
第１のノード１０１は、記憶部１０１Ｃ又は第１のノード１０１からアクセス可能な記憶装置又は記憶媒体をメモリプールとして蓄積した１又は複数のトランザクションから新たなブロックを生成する（Ｓ２０１）。
【００２２】
生成されたブロックは、ブロックチェーン・ネットワーク１００においてその採択が合意された場合、各ノードにおいて、ブロックチェーンに追加される（Ｓ２０２）。本実施形態では、さまざまな合意アルゴリズムを採用可能であるが、ファイナリティ（ｆｉｎａｌｉｔｙ）のある合意アルゴリズムであることを条件とする。ここで、「ファイナリティ」とは、あるブロックに対して一度合意が形成されれば正常に振る舞うノードのすべてが当該合意を覆すことがないことを意味する。加えて、追加されたブロックの順序付けが可能であり、かつ、その順序が覆らないことが適当である。
【００２３】
具体的には、１本のブロックチェーンに何らかの分岐が生じ得る場合、いずれかのチェーンに収束していくとすると、選択されなかったチェーンのためになされた合意は覆ることとなるから、この場合、ファイナリティがない。また、本実施形態では、合意アルゴリズムにファイナリティがあることに加えて、各ブロック内で、１又は複数のトランザクションが順序付け可能であることを条件とする。
【００２４】
各ノードでは、追加されたブロックの高さと当該ブロック内における順序とに基づいて、各トランザクションを一意に特定する識別子を生成可能である（Ｓ２０３）。ここで、当該識別子を「トランザクションポインタ（ｔｘｐ）」と呼ぶ。生成されたｔｘｐは、第１のノード１０１について図示するように、データベース１０１Ｄに記憶することができる。当然、記憶部１０１Ｃ又は第１のノード１０１からアクセス可能な記憶装置又は記憶媒体に記憶することもできるが、以下ではデータベース１０１Ｄに記憶する例の下で説明を行う。
【００２５】
上述の説明では、ブロックが追加された後に識別子であるｔｘｐを生成しているが、ブロックの追加前に生成しておくこともできる。ただし、ｔｘｐが各ノードにおいて有効に記憶されるためには、当該ブロックが追加された後であることは求められる。また、ｔｘｐは、必ずしもすべてのトランザクションについて生成・記憶される必要はなく、また、ブロック追加の直後に記憶されるのではなく、適宜のタイミングで行ってもよい。
【００２６】
ｔｘｐは、たとえばブロックの高さが３２１で、トランザクションが当該ブロックのボディ内で３番目に配置されている場合、３２１：３のように示すことができる。先頭の３桁がブロック高を表し、最後の１桁がトランザクションの順序を表す。
【００２７】
より一般には、ｔｘｐは、第１のバイト数のブロック高領域と第２のバイト数の順序領域とを有し、例示として、許容するブロックチェーンの高さ及びブロックの大きさに応じて、第１のバイト数を３バイト、第２のバイト数を１バイトとすることが挙げられる。第１のバイト数を３バイトから４バイト、第２のバイト数を１バイトから２バイト、合計して４バイトから６バイト程度とすることで、広範な用途に適したブロックチェーン・ネットワーク１００に対応可能である。
【００２８】
従来は、ブロックチェーンに追加されたブロックに含まれる過去のトランザクションを一意に特定する上で、３２バイトのハッシュ値が用いられてきたところ、本実施形態では、追加されたブロックの高さと当該ブロック内における順序とに基づくｔｘｐを特定でき、これを必要に応じて記憶していくことで、データ量を大きく低減して過去のトランザクションへの一意的な参照が可能となる。
【００２９】
ブロックが追加されると、当該ブロック内に含まれる１又は複数のトランザクションが実行されて、多くの場合、各ノードの状態が変化する。たとえば、仮想通貨又は暗号通貨の送金を行うためのブロックチェーン・ネットワークにおいて、アドレスＡからアドレスＢに送金を行うトランザクションが実行されると、アドレスＡの残高及びアドレスＢの残高の状態がそれぞれ変化する。このような入出金が繰り返される際にｔｘｐを用いると、アドレスＡ及びＢの入出金履歴を従来よりも大幅に少ない記憶領域で記憶することができる。
【００３０】
すなわち、１又は複数のアドレスの入出金履歴を記憶するためには、追加されたブロックに対して、各アドレスをキーとして、当該ブロック内の当該キーに関連するトランザクションに対応するｔｘｐを記憶していけばよい。こうしたｔｘｐの活用は、仮想通貨又は暗号通貨の入出金履歴に限られず、トランザクションが実行されることにより変動する各ノードの状態をキーとして予め又は事後的に指定しておき、当該キーに関連づけられた履歴データを生成することができる。
【００３１】
また、上記に限らず、より一般には、何らかの条件に合致する１又は複数のトランザクションに関する情報を保存したいときにｔｘｐの活用が可能である。たとえば、送金額が１００万円以上のトランザクションを抽出する場合「１００万円以上」が指定されるべき条件になる。当該条件を満たす１又はトランザクションに対応する１又は複数のｔｘｐのリストを記憶することができる。
【００３２】
データ量を抑えて何らかの条件に関連づけれた履歴データを記憶可能であることによって、履歴データへのアクセス速度が向上することに加えて、本発明にかかるｔｘｐは、それ自体にブロック高及びトランザクション順序が含まれているため、ブロックチェーンに対する検索の高速化が図られる。
【００３３】
なお、「××のみに基づいて」、「××のみに応じて」、「××のみの場合」というように「のみ」との記載がなければ、本明細書においては、付加的な情報も考慮し得ることが想定されていることに留意されたい。
【００３４】
また、念のため、なんらかの方法、プログラム、端末、装置、サーバ又はシステム（以下「方法等」）において、本明細書で記述された動作と異なる動作を行う側面があるとしても、本発明の各態様は、本明細書で記述された動作のいずれかと同一の動作を対象とするものであり、本明細書で記述された動作と異なる動作が存在することは、当該方法等を本発明の各態様の範囲外とするものではないことを付言する。
【００３５】
（第２の実施形態）  
第１の実施形態では、ブロックチェーン・ネットワーク１００を構成する各ノードにおいて、１又は複数のｔｘｐのリストの記憶が行われる形態を説明したが、ブロックチェーン・ネットワーク１００を構成するいずれかのノードでのみ、１又は複数のｔｘｐのリストを履歴データとして記憶してもよい。当該ノードは、合意形成に参加してもしなくともよく、特定の用途に求められる処理を行うアプリケーションノードとして機能する。
【００３６】
また、ブロックチェーン・ネットワーク１００のいずれかのノードが有するブロックチェーンにブロックチェーン・ネットワーク１００の外部コンピュータからアクセスして、当該外部コンピュータにおいて、用途に応じた１又は複数のｔｘｐのリストを記憶してもよい。当該外部コンピュータからは、記憶されたｔｘｐに基づいてブロックチェーン内のトランザクションにアクセスすればよい。
【００３７】
（第３の実施形態）  
第１又は第２の実施形態にかかる履歴データは、ｔｘｐに含まれるブロック高に関する情報が各ブロックの追加時刻に対応することから、日時を指定した検索を行うことができる。たとえば、３日前の午前１時００分以降のブロックに含まれるトランザクションを表すｔｘｐを抽出したり、３日前の午前１時００分以降のブロックに含まれるトランザクションのうち特定の条件を満たすものを抽出したりすることができる。
【００３８】
このような検索を行うために、このような検索機能を提供するノードは、ブロック高とその追加時刻又は確定時刻との間の対応テーブル等の対応づけを保持するのが望ましい。
【符号の説明】
【００３９】
１００  ブロックチェーン・ネットワーク
１０１  第１のノード
１０１Ａ  通信部
１０１Ｂ  処理部
１０１Ｃ  記憶部
１０１Ｄ  データベース
１０２  第２のノード
１０３  第３のノード
１０４  第４のノード
【図１】
2019110511.tif 000003
【図２】
2019110511.tif 000004