特許第6467540号(P6467540)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ 株式会社bitFlyerの特許一覧

特許6467540ブロックチェーン・ネットワークにおいてトランザクションを検証するための方法及び当該ネットワークを構成するためのノード
<>
  • 特許6467540-ブロックチェーン・ネットワークにおいてトランザクションを検証するための方法及び当該ネットワークを構成するためのノード 図000002
  • 特許6467540-ブロックチェーン・ネットワークにおいてトランザクションを検証するための方法及び当該ネットワークを構成するためのノード 図000003
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】6467540
(24)【登録日】2019年1月18日
(45)【発行日】2019年2月13日
(54)【発明の名称】ブロックチェーン・ネットワークにおいてトランザクションを検証するための方法及び当該ネットワークを構成するためのノード
(51)【国際特許分類】
   H04L 9/32 20060101AFI20190204BHJP
【FI】
   H04L9/00 675Z
【請求項の数】5
【全頁数】9
(21)【出願番号】特願2018-43666(P2018-43666)
(22)【出願日】2018年3月10日
(62)【分割の表示】特願2018-26529(P2018-26529)の分割
【原出願日】2018年2月16日
【審査請求日】2018年3月10日
【早期審査対象出願】
(73)【特許権者】
【識別番号】514231103
【氏名又は名称】株式会社bitFlyer
(74)【代理人】
【識別番号】100174078
【弁理士】
【氏名又は名称】大谷 寛
(72)【発明者】
【氏名】加納 裕三
(72)【発明者】
【氏名】小宮山 峰史
【審査官】 金沢 史明
(56)【参考文献】
【文献】 特開2016−151802(JP,A)
【文献】 国際公開第2017/042890(WO,A1)
【文献】 特開2017−200196(JP,A)
【文献】 米国特許出願公開第2017/0228731(US,A1)
【文献】 米国特許出願公開第2017/0344987(US,A1)
【文献】 国際公開第2017/079652(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/32
(57)【特許請求の範囲】
【請求項1】
ブロックチェーン・ネットワークにおいてトランザクションを検証するための方法であって、
検証対象となるトランザクションを受け取るステップと、
前記ブロックチェーン・ネットワークにおいて過去に合意されたブロックに含まれる1又は複数のトランザクションに基づいて生成されたブルームフィルターに対して前記トランザクション又は前記トランザクションに対応するtxidを入力するステップと、
前記ブルームフィルターの出力が偽である場合、前記トランザクションを有効と判定するステップと、
前記ブルームフィルターの出力が真である場合、前記トランザクションのtxidをキーに、前記ブロックチェーン・ネットワークにおいて過去に合意されたブロックに含まれる1又は複数のトランザクションに基づいて生成されたディクショナリを検索するステップと、
前記ディクショナリの検索結果が偽である場合、前記トランザクションを有効と判定するステップと、
前記ディクショナリの検索結果が真である場合、前記トランザクションを無効と判定するステップと
を含むことを特徴とする方法。
【請求項2】
前記ブルームフィルターを構成するためのデータは、前記過去に合意されたブロックに含まれる1又は複数のトランザクションに対応する1又は複数のtxidから生成されたデータ列であることを特徴とする請求項1に記載の方法。
【請求項3】
前記検証対象となるトランザクションは、合意形成の対象となるブロックに含まれる1又は複数のトランザクションのうちのいずれかであることを特徴とする請求項1又は2に記載の方法。
【請求項4】
コンピュータに、ブロックチェーン・ネットワークにおいてトランザクションを検証するための方法を実行させるためのプログラムであって、前記方法は、
検証対象となるトランザクションを受け取るステップと、
前記ブロックチェーン・ネットワークにおいて過去に合意されたブロックに含まれる1又は複数のトランザクションに基づいて生成されたブルームフィルターに対して前記トランザクション又は前記トランザクションに対応するtxidを入力するステップと、
前記ブルームフィルターの出力が偽である場合、前記トランザクションを有効と判定するステップと、
前記ブルームフィルターの出力が真である場合、前記トランザクションのtxidをキーに、前記ブロックチェーン・ネットワークにおいて過去に合意されたブロックに含まれる1又は複数のトランザクションに基づいて生成されたディクショナリを検索するステップと、
前記ディクショナリの検索結果が偽である場合、前記トランザクションを有効と判定するステップと、
前記ディクショナリの検索結果が真である場合、前記トランザクションを無効と判定するステップと
を含むことを特徴とするプログラム。
【請求項5】
ブロックチェーン・ネットワークにおいてトランザクションを検証するための前記ブロックチェーン・ネットワークを構成するノードであって、
検証対象となるトランザクションを受け取り、
前記ブロックチェーン・ネットワークにおいて過去に合意されたブロックに含まれる1又は複数のトランザクションに基づいて生成されたブルームフィルターに対して前記トランザクション又は前記トランザクションに対応するtxidを入力し、
前記ブルームフィルターの出力が偽である場合、前記トランザクションを有効と判定し、
前記ブルームフィルターの出力が真である場合、前記トランザクションのtxidをキーに、前記ブロックチェーン・ネットワークにおいて過去に合意されたブロックに含まれる1又は複数のトランザクションに基づいて生成されたディクショナリを検索し、
前記ディクショナリの検索結果が偽である場合、前記トランザクションを有効と判定し、
前記ディクショナリの検索結果が真である場合、前記トランザクションを無効と判定することを特徴とするノード。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ブロックチェーン・ネットワークにおいてトランザクションを検証するための方法及び当該ネットワークを構成するためのノードに関する。
【背景技術】
【0002】
複数のノードを備えるブロックチェーン・ネットワークにおいて、各ノードは、採択について合意が形成されたブロックが連なったブロックチェーンを有する。各ブロックは、ヘッダと、1又は複数のトランザクションを含むボディとを有する。
【0003】
各トランザクションは、当該トランザクションのハッシュ値をその識別子とすることができ、当該識別子は「トランザクションid(txid)」と呼ばれることがある。txidは、過去のトランザクションを参照する際に用いられ、そのディクショナリが必要に応じて、1若しくは複数又はすべてのノードにおいて保持されることがある。
【0004】
txidが用いられる場面の1つとして、同一のトランザクションの二重実行の防止が挙げられる。採択についての合意形成が図られるブロックは、いずれかのノードが、メモリプールに蓄積したトランザクションの中から1又は複数のトランザクションを選んで生成するものであるが、トランザクションをメモリプールに記憶する際に、過去に合意されたブロックに含まれるトランザクションではないかについての検証(vaildation)がなされることがある。また、他のノードにおいて生成されたブロックに含まれるトランザクションに対する検証がなされることがある。
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、検証を行うためには、過去に合意されたブロックに含まれるすべてのトランザクションに対するtxidのディクショナリを保持しておき、新たなトランザクションを受け取るたびに当該ディクショナリを参照して、過去に存在していないことの確認を行わなければならず、これは、ブロック高の増大とともに時間又は記憶領域を要する処理となっていく。
【0006】
本発明は、このような問題点に鑑みてなされたものであり、その目的は、ブロックチェーン・ネットワークにおいてトランザクションを検証するための方法及び当該ネットワークを構成するためのノードにおいて、検証速度の高速化又は記憶領域増大の抑制を図ることにある。
【課題を解決するための手段】
【0007】
このような目的を達成するために、本発明の第1の態様は、ブロックチェーン・ネットワークにおいてトランザクションを検証するための方法であって、検証対象となるトランザクションを受け取るステップと、前記ブロックチェーン・ネットワークにおいて過去に合意されたブロックに含まれる1又は複数のトランザクションに基づいて生成されたブルームフィルターに対して前記トランザクションを入力するステップと、前記ブルームフィルターの出力が偽である場合、前記トランザクションを有効と判定するステップとを含むことを特徴とする。
【0008】
また、本発明の第2の態様は、第1の態様において、前記ブルームフィルターの出力が真である場合、前記トランザクションのtxidをキーに、前記ブロックチェーン・ネットワークにおいて過去に合意されたブロックに含まれる1又は複数のトランザクションに基づいて生成されたディクショナリを検索するステップと、前記ディクショナリの検索結果が偽である場合、前記トランザクションを有効と判定するステップとを含むことを特徴とする。
【0009】
また、本発明の第3の態様は、第2の態様において、前記ディクショナリの検索結果が真である場合、前記トランザクションを無効と判定するステップをさらに含むことを特徴とする。
【0010】
また、本発明の第4の態様は、第1から第3のいずれかの態様において、前記ブルームフィルターを構成するためのデータは、メモリに記憶されていることを特徴とする。
【0011】
また、本発明の第5の態様は、第4の態様において、前記データは、前記過去に合意されたブロックに含まれる1又は複数のトランザクションに対応する1又は複数のtxidから生成されたデータ列であることを特徴とする。
【0012】
また、本発明の第6の態様は、第5の態様において、前記データ列は、前記トランザクションのtxidよりもビット長が長いことを特徴とする。
【0013】
また、本発明の第7の態様は、第1から第6のいずれかの態様において、前記検証対象となるトランザクションは、合意形成の対象となるブロックに含まれる1又は複数のトランザクションのうちのいずれかであることを特徴とする。
【0014】
また、本発明の第8の態様は、第7の態様において、前記検証対象となるトランザクションのtxidをキーに、前記ブロックに含まれる1又は複数のトランザクションに対応する1又は複数のtxidを保持するテンポラリーディクショナリを検索するステップをさらに含むことを特徴とする。
【0015】
また、本発明の第9の態様は、コンピュータに、ブロックチェーン・ネットワークにおいてトランザクションを検証するための方法を実行させるためのプログラムであって、前記方法は、検証対象となるトランザクションを受け取るステップと、前記ブロックチェーン・ネットワークにおいて過去に合意されたブロックに含まれる1又は複数のトランザクションに基づいて生成されたブルームフィルターに対して前記トランザクションを入力するステップと、前記ブルームフィルターの出力が偽である場合、前記トランザクションを有効と判定するステップとを含むことを特徴とする。
【0016】
また、本発明の第10の態様は、ブロックチェーン・ネットワークにおいてトランザクションを検証するための前記ブロックチェーン・ネットワークを構成するノードであって、検証対象となるトランザクションを受け取り、前記ブロックチェーン・ネットワークにおいて過去に合意されたブロックに含まれる1又は複数のトランザクションに基づいて生成されたブルームフィルターに対して前記トランザクションを入力し、前記ブルームフィルターの出力が偽である場合、前記トランザクションを有効と判定することを特徴とする。
【発明の効果】
【0017】
本発明の一態様によれば、ブロックチェーン・ネットワークにおいて過去に合意されたブロックに含まれる1又は複数のトランザクションに基づいて生成されたブルームフィルターに対して、検証対象となるトランザクションを入力し、真が出力として得られた場合にのみディクショナリへのアクセスを行うことによって、時間を要するディクショナリへのアクセスを抑制してトランザクションの検証を高速化することができる。
【図面の簡単な説明】
【0018】
図1】本発明の第1の実施形態にかかるブロックチェーン・ネットワークを示す図である。
図2】本発明の第1の実施形態にかかるトランザクションの検証方法の流れ図である。
【発明を実施するための形態】
【0019】
以下、図面を参照して本発明の実施形態を詳細に説明する。
【0020】
(第1の実施形態)
図1に、本発明の第1の実施形態にかかるブロックチェーン・ネットワークを示す。ネットワーク100は、第1のノード101と、第2のノード102と、第3のノード103と、第4のノード104とを備える。これらのノードは、それぞれブロックチェーンを有し、新たなブロックの採択にかかる合意形成に参加する。図1では、4個の例を示しているが、これはあくまで例示である。また、合意形成に参加しないノードがネットワーク100に含まれることもある。以下では、第1のノード101に着目して説明する。その他のノードについても、以下に述べる構成を有することが出来る。
【0021】
第1のノード101は、通信インターフェースなどの通信部101−1と、プロセッサ、CPU等の処理部101−2と、メモリ等の主記憶装置101−3と、ハードディスク等の補助記憶装置101−4とを備え、各処理を行うためのプログラムを実行することによって構成することができる。第1のノード101は、1又は複数の装置ないしサーバを含むことがあり、また当該プログラムは、1又は複数のプログラムを含むことがあり、また、コンピュータ読み取り可能な記憶媒体に記録して非一過性のプログラムプロダクトとすることができる。
【0022】
また、主記憶装置101−3と補助記憶装置101−4とを分けて説明するものの、これらを同一の記憶装置又は記憶媒体とし、又はこれらを包含する記憶装置又は記憶媒体を記憶部とみることも考えられる。また、主記憶装置101−3及び補助記憶装置101−4は、それぞれ複数の記憶装置又は記憶媒体を含むことも考えられる。また、主記憶装置101−3に記憶されるものとして以下で説明するデータは、CPU等の処理部101−2が有するL1、L2、L3等のキャッシュメモリに記憶されることもあることを付言する。この場合、主記憶装置101−3と処理部101−2が有するキャッシュメモリとを包含して「第1の記憶装置」と呼び、補助記憶装置101−4を包含して「第2の記憶装置」と呼ぶこともできる。
【0023】
第1のノード101は、まずブロックチェーン・ネットワーク100内又は外で生成されたトランザクション(tx)を受け取る(S201)。ここで、ネットワーク100においてトランザクションが生成され、自ら受け取ることもある。図1の例では、ネットワーク100の外で生成されたトランザクションが第1のノードによって受け取られている。
【0024】
検証の対象となるトランザクションの受け取りは、1又は複数のトランザクションを直接受け取る場合のほか、他のノードにおいて生成されたブロックを受信することによって、当該ブロックに含まれる1又は複数のトランザクションを受け取る場合がある。
【0025】
第1のノード101は、受け取ったトランザクションをブルームフィルターに対する入力として与える(S202)。ブルームフィルターは、当該フィルターを構成するためのプログラム及びデータを有するモジュールを主記憶装置101−3又は第1の記憶装置に記憶しておき、当該プログラムを実行することによって動作させることができる。
【0026】
当該データは、ネットワーク100を構成する各ノードが有するブロックチェーンに含まれる過去の1又は複数のトランザクションに基づいて生成されるものであり、より具体的には、当該過去の1又は複数のトランザクションに対応する1又は複数のtxidに基づいて生成することができる。
【0027】
txidは、32バイトのハッシュ値とすることができるが、一例として、4ビットの場合について説明する。第1のtxidとして0101、第2のtxidとして1001が過去のトランザクションに対応するtxidとして存在するものとする。これらの2つのtxidの各ビットを重ね合わせて、1101という4ビットのデータ列を生成し、上記ブルームフィルターを構成するためのデータとすることができる。換言すれば、過去の1又は複数のトランザクションに対応する1又は複数のtxidに基づいて、値が1であるビットを重ね合わせて生成したデータ列を当該フィルターを構成するためのデータとすることができる。
【0028】
実際には、txidの長さとデータ列の長さを同一とする必要はなく、過去の1又は複数のトランザクションに対応する1又は複数のtxidになんらかの変換を行ってデータ列をtxidよりも長く生成することもできる。たとえば、txidのビット長よりも10万倍、より好ましくは50万倍、100万倍以上長いのが望ましい。32バイトのtxidに対して100万倍とすると32MBとなり、このようにしても一般的な主記憶装置101−3又は第1の記憶装置に格納することができる。
【0029】
上記ブルームフィルターは、検証対象として入力されたトランザクションが過去に合意されたブロックに含まれないトランザクションである場合には、出力として必ず偽(False)を返し、出力として真(True)を返すときは、過去に存在したトランザクションであるときとそうでないときがある。過去に存在しないにも関わらず真を返すことを偽陽性と呼ぶ。
【0030】
実際にはより複雑な処理も可能であるが、上述の4ビットの例で説明すれば、検証対象として4ビットのハッシュ値1001が第1のノード101において新たにブルームフィルターに与えられると、当該フィルターを構成するためのプログラムが、検証対象のトランザクションの値が1であるビットが当該データ列においても1であるか否かを判定する。検証対象のトランザクションの値が1であるビットのすべてにおいて肯定的に判定された場合、ブルームフィルフィルターは真を返す。過去のtxidに1001は存在しないものの、1101との対比において、偽陽性となる。
【0031】
上記ブルームフィルターが真を返す場合、第1のノード101は、検証対象となるトランザクションのtxidをキーに又は当該txidに基づいてディクショナリを検索して、その有無を判定する(S203)。ディクショナリは、過去に合意されたブロックに含まれる1若しくは複数又はすべてのトランザクションに対するtxidを順序付けて保持したものであり、補助記憶装置101−4又は第2の記憶装置に記憶しておくことができる。
【0032】
ディクショナリの検索結果が偽、すなわち、検証対象のトランザクションのtxidが当該ディクショナリに含まれないときは、検証対象のトランザクションを有効と判定する(S204)。
【0033】
上記ブルームフィルターが偽を返す場合、検証対象のトランザクションを同様に有効と判定する(S204)。
【0034】
ディクショナリの検索結果が真、すなわち、検証対象のトランザクションのtxidが当該ディクショナリに含まれるときは、検証対象のトランザクションを無効と判定する(S205)。
【0035】
以上のように、過去に合意されたブロックに含まれる1又は複数のトランザクション又はそのtxidに基づき、ディクショナリに加えてブルームフィルターを生成し、記憶しておくことによって、時間を要するディクショナリへのアクセスを抑制してトランザクションの検証を高速化することができる。特に、ブルームフィルターモジュールをメモリ等の主記憶装置101−3又は第1の記憶装置に記憶しておくことによって、一層の高速化が図られる。
【0036】
ブルームフィルター及びディクショナリは、新たなブロックについて合意形成がなされた後であって次の検証対象のトランザクションを受け取る前に、当該ブロックに含まれる1又は複数のトランザクションについて更新を行うのが望ましい。
【0037】
上述のブルームフィルターの変形形態として、当該フィルターを構成するためのデータ列の各値をビットではなくバイトの単位として、txidの値が1であるビットに対応する位置のバイトの値を当該位置の値が1であるtxidの数に応じてインクリメントしていくようにしてもよい。第1のtxidとして0101、第2のtxidとして1001が過去のトランザクションに対応するtxidとして存在するものとした場合、生成されるデータ列は、4バイトの1102となる。第3のtxidとして0001をさらに考えると、データ列は、1103となる。このようにすることによって、過去に反映されたtxidの削除が可能となる。この形態においては、一例として、検証対象のトランザクションの値が1であるビットに対応するバイトが当該データ列において1以上の値であるか否かの判定を行うことで真又は偽が定めることができる。ブルームフィルターとして本明細書において説明したフィルターは、説明した所要の動作を行うフィルターであればよい。
【0038】
なお、「××のみに基づいて」、「××のみに応じて」、「××のみの場合」というように「のみ」との記載がなければ、本明細書においては、付加的な情報も考慮し得ることが想定されていることに留意されたい。
【0039】
また、念のため、なんらかの方法、プログラム、端末、装置、サーバ又はシステム(以下「方法等」)において、本明細書で記述された動作と異なる動作を行う側面があるとしても、本発明の各態様は、本明細書で記述された動作のいずれかと同一の動作を対象とするものであり、本明細書で記述された動作と異なる動作が存在することは、当該方法等を本発明の各態様の範囲外とするものではないことを付言する。
【0040】
(第2の実施形態)
第1の実施形態においては、検証対象のトランザクションが過去に合意されたブロックに含まれるトランザクションであるか否かの検証について記述したところ、合意対象のブロックに複数の同一のトランザクションが含まれることを防止することはできない。
【0041】
そこで、本発明の第2の実施形態においては、第1のノード101は、自ら生成したブロック又は他のノードから受け取ったブロックについて、当該ブロックに含まれる1又は複数のトランザクションに対応する1又は複数のtxidを保持する一時的なテンポラリーディクショナリを生成する。
【0042】
たとえば、第1の実施形態において説明した検証方法において、ブルームフィルターが偽を返したとしても(S202)、当該テンポラリーディクショナリを検索して同一のtxidが検出される可能性がある。この場合、検証対象のトランザクションを無効と判定されなければならない。ディクショナリが偽を返したとき(S203)も同様である。また、一律にブルームフィルターを適用する前にすべてのトランザクションについてテンポラリーディクショナリの検索を検証対象のトランザクションのtxidをキーとして行うようにすることもできる。テンポラリーディクショナリの検索時点をランダムに又は所定の規則に従い可変としたり、図2に示すループとは並列な処理として実行することもできる。
【符号の説明】
【0043】
100 ブロックチェーン・ネットワーク
101 第1のノード
101−1 通信部
101−2 処理部
101−3 主記憶装置
101−4 補助記憶装置
102 第2のノード
103 第3のノード
104 第4のノード
【要約】      (修正有)
【課題】トランザクションを検証するための方法において、検証速度の高速化を図る。
【解決手段】ブロックチェーン・ネットワークにおいて、第1のノードは、トランザクション(tx)を受け取るS201。第1のノードは、受け取ったtxをブルームフィルターに対する入力として与えるS202。ブルームフィルターは、ブロックチェーンに含まれる過去の1又は複数のtxに基づいて生成される。ブルームフィルターが真を返す場合S202T、第1のノードは、検証対象となるtxのtxidをキーにディクショナリを検索して、その有無を判定するS203。ディクショナリは、過去に合意されたブロックに含まれる1又は複数のtxに基づいて生成される。ディクショナリの検索結果が偽であるときはS203F、検証対象のトランザクションを有効と判定し、ブルームフィルターが偽を返すときS202Fも検証対象のtxを同様に有効と判定するS204。
【選択図】図2
図1
図2