(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】6362805
(24)【登録日】2018年7月6日
(45)【発行日】2018年7月25日
(54)【発明の名称】ブロックチェーン・ネットワークにおいて過去のトランザクションにアクセス可能とするための方法及び当該ネットワークを構成するためのノード
(51)【国際特許分類】
G06F 12/00 20060101AFI20180712BHJP
H04L 9/32 20060101ALI20180712BHJP
【FI】
G06F12/00 545B
G06F12/00 518A
H04L9/00 675Z
【請求項の数】9
【全頁数】9
(21)【出願番号】特願2018-43665(P2018-43665)
(22)【出願日】2018年3月10日
(62)【分割の表示】特願2017-241256(P2017-241256)の分割
【原出願日】2017年12月16日
【審査請求日】2018年3月10日
【早期審査対象出願】
(73)【特許権者】
【識別番号】514231103
【氏名又は名称】株式会社bitFlyer
(74)【代理人】
【識別番号】100174078
【弁理士】
【氏名又は名称】大谷 寛
(72)【発明者】
【氏名】加納 裕三
(72)【発明者】
【氏名】小宮山 峰史
【審査官】
月野 洋一郎
(56)【参考文献】
【文献】
特開2017−123692(JP,A)
【文献】
特開2017−91148(JP,A)
【文献】
国際公開第2017/170997(WO,A1)
【文献】
米国特許出願公開第2016/0330031(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00
H04L 9/32
(57)【特許請求の範囲】
【請求項1】
ブロックチェーン・ネットワークにおいて過去のトランザクションにアクセス可能とするための方法であって、
前記ブロックチェーン・ネットワークを構成するノードが、ファイナリティのある合意アルゴリズムの下で合意されたブロックについて、前記ブロックに含まれる各トランザクションに対して、前記ブロックの高さ及び前記ブロック内の順序に基づく識別子を記憶するステップを含み、
前記識別子は、第1のバイト数のブロック高領域と第2のバイト数の順序領域とを有することを特徴とすることを特徴とする方法。
【請求項2】
前記第1のバイト数は、3から4のいずれかであることを特徴とする請求項1に記載の方法。
【請求項3】
前記第2のバイト数は、1又は2であることを特徴とする請求項1又は2に記載の方法。
【請求項4】
前記識別子のバイト数は、4から6のいずれかであることを特徴とする請求項1から3のいずれかに記載の方法。
【請求項5】
コンピュータに、ブロックチェーン・ネットワークにおいて過去のトランザクションにアクセス可能とするための方法を実行させるためのプログラムであって、前記方法は、
前記ブロックチェーン・ネットワークを構成するノードが、ファイナリティのある合意アルゴリズムの下で合意されたブロックについて、前記ブロックに含まれる各トランザクションに対して、前記ブロックの高さ及び前記ブロック内の順序に基づく識別子を記憶するステップを含み、
前記識別子は、第1のバイト数のブロック高領域と第2のバイト数の順序領域とを有することを特徴とするプログラム。
【請求項6】
過去のトランザクションへのアクセスを可能とするブロックチェーン・ネットワークを構成するためのノードであって、
ファイナリティのある合意アルゴリズムの下で合意されたブロックについて、前記ブロックに含まれる各トランザクションに対して、前記ブロックの高さ及び前記ブロック内の順序に基づく識別子を記憶し、
前記識別子は、第1のバイト数のブロック高領域と第2のバイト数の順序領域とを有することを特徴とするノード。
【請求項7】
ブロックチェーン・ネットワークが有する過去のトランザクションにアクセス可能とするための方法であって、
前記ブロックチェーン・ネットワークを構成するいずれかのノードが有するブロックチェーンにアクセス可能なコンピュータが、前記ブロックチェーンに含まれる、ファイナリティのある合意アルゴリズムの下で合意されたブロックについて、前記ブロックに含まれる各トランザクションに対して、前記ブロックの高さ及び前記ブロック内の順序に基づく識別子を記憶するステップを含み、
前記識別子は、第1のバイト数のブロック高領域と第2のバイト数の順序領域とを有することを特徴とする方法。
【請求項8】
コンピュータに、ブロックチェーン・ネットワークが有する過去のトランザクションにアクセス可能とするための方法を実行させるためのプログラムであって、前記方法は、
前記ブロックチェーン・ネットワークを構成するいずれかのノードが有するブロックチェーンにアクセス可能なコンピュータが、前記ブロックチェーンに含まれる、ファイナリティのある合意アルゴリズムの下で合意されたブロックについて、前記ブロックに含まれる各トランザクションに対して、前記ブロックの高さ及び前記ブロック内の順序に基づく識別子を記憶するステップを含み、
前記識別子は、第1のバイト数のブロック高領域と第2のバイト数の順序領域とを有することを特徴とするプログラム。
【請求項9】
過去のトランザクションへのアクセスを可能とするコンピュータであって、
ブロックチェーン・ネットワークを構成するいずれかのノードが有するブロックチェーンに含まれる、ファイナリティのある合意アルゴリズムの下で合意されたブロックについて、前記ブロックに含まれる各トランザクションに対して、前記ブロックの高さ及び前記ブロック内の順序に基づく識別子を記憶し、
前記識別子は、第1のバイト数のブロック高領域と第2のバイト数の順序領域とを有することを特徴とするコンピュータ。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ブロックチェーン・ネットワークにおいて過去のトランザクションにアクセス可能とするための方法及び当該ネットワークを構成するためのノードに関する。
【背景技術】
【0002】
複数のノードを備えるブロックチェーン・ネットワークにおいて、各ノードは、採択について合意が形成されたブロックが連なったブロックチェーンを有する。各ブロックは、ヘッダと、1又は複数のトランザクションを含むボディとを有する。
【0003】
各トランザクションは、当該トランザクションのハッシュ値をその識別子とすることができ、当該識別子は「トランザクションid(txid)」と呼ばれることがある。txidは、過去のトランザクションを参照する際に用いられ、そのディクショナリが必要に応じて、1若しくは複数又はすべてのノードにおいて保持されることがある。
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、txidは一般的に32バイトのハッシュ値であり、トランザクションの数が増加すればするだけ、それに対応するtxidのデータが膨大となる。データの肥大化は、txidを用いる際のアクセス速度の低下を招く。
【0005】
本発明は、このような問題点に鑑みてなされたものであり、その目的は、ブロックチェーン・ネットワークにおいて過去のトランザクションに効率的にアクセス可能とするための方法及びそのためのプログラム並びに当該ネットワークを構成するためのノードを提供することにある。
【課題を解決するための手段】
【0006】
このような目的のために、本発明の第1の態様は、ブロックチェーン・ネットワークにおいて過去のトランザクションにアクセス可能とするための方法であって、前記ブロックチェーン・ネットワークを構成するノードが、ファイナリティのある合意アルゴリズムの下で合意されたブロックについて、前記ブロックに含まれる各トランザクションに対して、前記ブロックの高さ及び前記ブロック内の順序に基づく識別子を記憶するステップを含むことを特徴とする。
【0007】
また、本発明の第2の態様は、第1の態様において、前記ブロックチェーン・ネットワークにおいてトランザクションに関連する1又は複数の条件が指定され、指定された条件と関連するトランザクションに対応する識別子が記憶されることを特徴とする。
【0008】
また、本発明の第3の態様は、第2の態様において、前記条件は、仮想通貨又は暗号通貨のアドレスであることを特徴とする。
【0009】
また、本発明の第4の態様は、第1から第3のいずれかの態様において、前記識別子は、第1のバイト数のブロック高領域と第2のバイト数の順序領域とを有することを特徴とする。
【0010】
また、本発明の第5の態様は、第4の態様において、前記第1のバイト数は、3から4のいずれかであることを特徴とする。
【0011】
また、本発明の第6の態様は、第4の態様において、前記第2のバイト数は、1又は2であることを特徴とする。
【0012】
また、本発明の第7の態様は、第4から第6のいずれかの態様において、前記識別子のバイト数は、4から6のいずれかであることを特徴とする。
【0013】
また、本発明の第8の態様は、コンピュータに、ブロックチェーン・ネットワークにおいて過去のトランザクションにアクセス可能とするための方法を実行させるためのプログラムであって、前記方法は、前記ブロックチェーン・ネットワークを構成するノードが、ファイナリティのある合意アルゴリズムの下で合意されたブロックについて、前記ブロックに含まれる各トランザクションに対して、前記ブロックの高さ及び前記ブロック内の順序に基づく識別子を記憶するステップを含むことを特徴とする。
【0014】
また、本発明の第9の態様は、過去のトランザクションへのアクセスを可能とするブロックチェーン・ネットワークを構成するためのノードであって、ファイナリティのある合意アルゴリズムの下で合意されたブロックについて、前記ブロックに含まれる各トランザクションに対して、前記ブロックの高さ及び前記ブロック内の順序に基づく識別子を記憶することを特徴とする。
【0015】
また、本発明の第10の態様は、ブロックチェーン・ネットワークが有する過去のトランザクションにアクセス可能とするための方法であって、前記ブロックチェーン・ネットワークを構成するいずれかのノードが有するブロックチェーンにアクセス可能なコンピュータが、前記ブロックチェーンに含まれる、ファイナリティのある合意アルゴリズムの下で合意されたブロックについて、前記ブロックに含まれる各トランザクションに対して前記ブロックの高さ及び前記ブロック内の順序に基づく識別子を記憶するステップを含むことを特徴とする。
【発明の効果】
【0016】
本発明の一態様によれば、ファイナリティのある合意アルゴリズムの下で合意されたブロックについて、当該ブロックに含まれる1又は複数のトランザクションに対して、当該ブロックの高さ及び当該ブロック内の順序に基づく識別子を用いて各トランザクションを特定することによって、データ量の膨大化を回避することができる。
【図面の簡単な説明】
【0017】
【
図1】本発明の一実施形態にかかるブロックチェーン・ネットワークを示す図である。
【
図2】本発明の一実施形態にかかる過去のトランザクションに効率的にアクセス可能とするための方法を示す図である。
【発明を実施するための形態】
【0018】
以下、本発明の実施形態を図面を参照して詳細に説明する。
【0019】
(第1の実施形態)
図1に、本発明の第1の実施形態にかかるブロックチェーン・ネットワークを示す。ネットワーク100は、第1のノード101と、第2のノード102と、第3のノード103と、第4のノード104とを備える。これらのノードは、それぞれブロックチェーンを有し、新たなブロックの採択にかかる合意形成に参加する。
図1では、4個の例を示しているが、これはあくまで例示である。また、合意形成に参加しないノードがネットワーク100に含まれることもある。
【0020】
第1のノード101は、通信インターフェースなどの通信部101Aと、プロセッサ、CPU等の処理部101Bと、メモリ、ハードディスク等の記憶装置又は記憶媒体を含む記憶部101Cとを備え、各処理を行うためのプログラムを実行することによって構成することができ、1又は複数の装置ないしサーバを含むことがあり、また当該プログラムは、1又は複数のプログラムを含むことがあり、また、コンピュータ読み取り可能な記憶媒体に記録して非一過性のプログラムプロダクトとすることができる。
【0021】
第1のノード101は、記憶部101C又は第1のノード101からアクセス可能な記憶装置又は記憶媒体をメモリプールとして蓄積した1又は複数のトランザクションから新たなブロックを生成する(S201)。
【0022】
生成されたブロックは、ブロックチェーン・ネットワーク100においてその採択が合意された場合、各ノードにおいて、ブロックチェーンに追加される(S202)。本実施形態では、さまざまな合意アルゴリズムを採用可能であるが、ファイナリティ(finality)のある合意アルゴリズムであることを条件とする。ここで、「ファイナリティ」とは、あるブロックに対して一度合意が形成されれば正常に振る舞うノードのすべてが当該合意を覆すことがないことを意味する。加えて、追加されたブロックの順序付けが可能であり、かつ、その順序が覆らないことが適当である。
【0023】
具体的には、1本のブロックチェーンに何らかの分岐が生じ得る場合、いずれかのチェーンに収束していくとすると、選択されなかったチェーンのためになされた合意は覆ることとなるから、この場合、ファイナリティがない。また、本実施形態では、合意アルゴリズムにファイナリティがあることに加えて、各ブロック内で、1又は複数のトランザクションが順序付け可能であることを条件とする。
【0024】
各ノードでは、追加されたブロックの高さと当該ブロック内における順序とに基づいて、各トランザクションを一意に特定する識別子を生成可能である(S203)。ここで、当該識別子を「トランザクションポインタ(txp)」と呼ぶ。生成されたtxpは、第1のノード101について図示するように、データベース101Dに記憶することができる。当然、記憶部101C又は第1のノード101からアクセス可能な記憶装置又は記憶媒体に記憶することもできるが、以下ではデータベース101Dに記憶する例の下で説明を行う。
【0025】
上述の説明では、ブロックが追加された後に識別子であるtxpを生成しているが、ブロックの追加前に生成しておくこともできる。ただし、txpが各ノードにおいて有効に記憶されるためには、当該ブロックが追加された後であることは求められる。また、txpは、必ずしもすべてのトランザクションについて生成・記憶される必要はなく、また、ブロック追加の直後に記憶されるのではなく、適宜のタイミングで行ってもよい。
【0026】
txpは、たとえばブロックの高さが321で、トランザクションが当該ブロックのボディ内で3番目に配置されている場合、321:3のように示すことができる。先頭の3桁がブロック高を表し、最後の1桁がトランザクションの順序を表す。
【0027】
より一般には、txpは、第1のバイト数のブロック高領域と第2のバイト数の順序領域とを有し、例示として、許容するブロックチェーンの高さ及びブロックの大きさに応じて、第1のバイト数を3バイト、第2のバイト数を1バイトとすることが挙げられる。第1のバイト数を3バイトから4バイト、第2のバイト数を1バイトから2バイト、合計して4バイトから6バイト程度とすることで、広範な用途に適したブロックチェーン・ネットワーク100に対応可能である。
【0028】
従来は、ブロックチェーンに追加されたブロックに含まれる過去のトランザクションを一意に特定する上で、32バイトのハッシュ値が用いられてきたところ、本実施形態では、追加されたブロックの高さと当該ブロック内における順序とに基づくtxpを特定でき、これを必要に応じて記憶していくことで、データ量を大きく低減して過去のトランザクションへの一意的な参照が可能となる。
【0029】
ブロックが追加されると、当該ブロック内に含まれる1又は複数のトランザクションが実行されて、多くの場合、各ノードの状態が変化する。たとえば、仮想通貨又は暗号通貨の送金を行うためのブロックチェーン・ネットワークにおいて、アドレスAからアドレスBに送金を行うトランザクションが実行されると、アドレスAの残高及びアドレスBの残高の状態がそれぞれ変化する。このような入出金が繰り返される際にtxpを用いると、アドレスA及びBの入出金履歴を従来よりも大幅に少ない記憶領域で記憶することができる。
【0030】
すなわち、1又は複数のアドレスの入出金履歴を記憶するためには、追加されたブロックに対して、各アドレスをキーとして、当該ブロック内の当該キーに関連するトランザクションに対応するtxpを記憶していけばよい。こうしたtxpの活用は、仮想通貨又は暗号通貨の入出金履歴に限られず、トランザクションが実行されることにより変動する各ノードの状態をキーとして予め又は事後的に指定しておき、当該キーに関連づけられた履歴データを生成することができる。
【0031】
また、上記に限らず、より一般には、何らかの条件に合致する1又は複数のトランザクションに関する情報を保存したいときにtxpの活用が可能である。たとえば、送金額が100万円以上のトランザクションを抽出する場合「100万円以上」が指定されるべき条件になる。当該条件を満たす1又はトランザクションに対応する1又は複数のtxpのリストを記憶することができる。
【0032】
データ量を抑えて何らかの条件に関連づけれた履歴データを記憶可能であることによって、履歴データへのアクセス速度が向上することに加えて、本発明にかかるtxpは、それ自体にブロック高及びトランザクション順序が含まれているため、ブロックチェーンに対する検索の高速化が図られる。
【0033】
なお、「××のみに基づいて」、「××のみに応じて」、「××のみの場合」というように「のみ」との記載がなければ、本明細書においては、付加的な情報も考慮し得ることが想定されていることに留意されたい。
【0034】
また、念のため、なんらかの方法、プログラム、端末、装置、サーバ又はシステム(以下「方法等」)において、本明細書で記述された動作と異なる動作を行う側面があるとしても、本発明の各態様は、本明細書で記述された動作のいずれかと同一の動作を対象とするものであり、本明細書で記述された動作と異なる動作が存在することは、当該方法等を本発明の各態様の範囲外とするものではないことを付言する。
【0035】
(第2の実施形態)
第1の実施形態では、ブロックチェーン・ネットワーク100を構成する各ノードにおいて、1又は複数のtxpのリストの記憶が行われる形態を説明したが、ブロックチェーン・ネットワーク100を構成するいずれかのノードでのみ、1又は複数のtxpのリストを履歴データとして記憶してもよい。当該ノードは、合意形成に参加してもしなくともよく、特定の用途に求められる処理を行うアプリケーションノードとして機能する。
【0036】
また、ブロックチェーン・ネットワーク100のいずれかのノードが有するブロックチェーンにブロックチェーン・ネットワーク100の外部コンピュータからアクセスして、当該外部コンピュータにおいて、用途に応じた1又は複数のtxpのリストを記憶してもよい。当該外部コンピュータからは、記憶されたtxpに基づいてブロックチェーン内のトランザクションにアクセスすればよい。
【0037】
(第3の実施形態)
第1又は第2の実施形態にかかる履歴データは、txpに含まれるブロック高に関する情報が各ブロックの追加時刻に対応することから、日時を指定した検索を行うことができる。たとえば、3日前の午前1時00分以降のブロックに含まれるトランザクションを表すtxpを抽出したり、3日前の午前1時00分以降のブロックに含まれるトランザクションのうち特定の条件を満たすものを抽出したりすることができる。
【0038】
このような検索を行うために、このような検索機能を提供するノードは、ブロック高とその追加時刻又は確定時刻との間の対応テーブル等の対応づけを保持するのが望ましい。
【符号の説明】
【0039】
100 ブロックチェーン・ネットワーク
101 第1のノード
101A 通信部
101B 処理部
101C 記憶部
101D データベース
102 第2のノード
103 第3のノード
104 第4のノード
【要約】
【課題】ブロックチェーン・ネットワークにおいて過去のトランザクションに効率的にアクセス可能とするための方法を提供する。
【解決手段】第1のノード101は、記憶部101C又は第1のノード101からアクセス可能な記憶装置又は記憶媒体をメモリプールとして蓄積した1又は複数のトランザクションから新たなブロックを生成する(S201)。生成されたブロックは、ブロックチェーン・ネットワーク100においてその採択が合意された場合、各ノードにおいて、ブロックチェーンに追加される(S202)。本発明の実施形態では、さまざまな合意アルゴリズムを採用可能であるが、ファイナリティ(finality)のある合意アルゴリズムであることを条件とする。各ノードでは、追加されたブロックの高さと当該ブロック内における順序とに基づいて、各トランザクションを一意に特定する識別子を生成して記憶する(S203)。
【選択図】
図2