IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ エヌチェーン ホールディングス リミテッドの特許一覧

特開2024-36578ブロックチェーントランザクションの並列検証のためのシステム及び方法
<>
  • 特開-ブロックチェーントランザクションの並列検証のためのシステム及び方法 図1
  • 特開-ブロックチェーントランザクションの並列検証のためのシステム及び方法 図2
  • 特開-ブロックチェーントランザクションの並列検証のためのシステム及び方法 図3
  • 特開-ブロックチェーントランザクションの並列検証のためのシステム及び方法 図4
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024036578
(43)【公開日】2024-03-15
(54)【発明の名称】ブロックチェーントランザクションの並列検証のためのシステム及び方法
(51)【国際特許分類】
   G06F 21/64 20130101AFI20240308BHJP
   G06F 9/50 20060101ALI20240308BHJP
   G06F 9/46 20060101ALI20240308BHJP
【FI】
G06F21/64
G06F9/50 150C
G06F9/46 430
【審査請求】有
【請求項の数】14
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2024016781
(22)【出願日】2024-02-07
(62)【分割の表示】P 2022119234の分割
【原出願日】2018-05-04
(31)【優先権主張番号】1707296.8
(32)【優先日】2017-05-08
(33)【優先権主張国・地域又は機関】GB
(71)【出願人】
【識別番号】318001991
【氏名又は名称】エヌチェーン ライセンシング アーゲー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】モティリンスキ,パトリック
(72)【発明者】
【氏名】ヴィンセント,ステファヌ
(72)【発明者】
【氏名】デステファニス,ジュゼッペ
(72)【発明者】
【氏名】マデオ,シモーネ
(57)【要約】
【課題】コンピュータにより実施される方法であって、ブロックチェーンプロトコル、ビットコインプロトコル又は代替物に適合するブロックチェーンを実装するノードのネットワーク内のあるノードでブロックを妥当性確認する方法を提供する。
【解決手段】方法は、ブロック内の複数のトランザクションの夫々で入力として参照される各未使用トランザクション出力が一意であることを逐次決定し、決定に基づき各トランザクションを2つ以上の並列プロセッサのうちの1つに割り当て、2つ以上の並列プロセッサによって並行して、トランザクションがトランザクションレベルの妥当性確認基準に従うことを確認することを含む。ノードはまた、ブロックがブロックレベルの妥当性確認基準を満足することを決定する。トランザクションがトランザクションレベルの妥当性確認基準に従い且つブロックがブロックレベルの妥当性確認基準に従う場合には、ブロックは妥当と見なされ、ノードはブロックをネットワーク内の1つ以上のピアノードへ転送する。
【選択図】図2
【特許請求の範囲】
【請求項1】
ブロックチェーンプロトコルに適合するブロックチェーンを実装するノードのネットワーク内で、複数のトランザクションを含むブロックを妥当性確認する、コンピュータにより実施される方法であって、
ブロックレベルの妥当性確認基準に前記ブロックが従うことを決定することと、
前記複数のトランザクションの夫々における入力として参照される各未使用トランザクション出力が一意であることを逐次決定し、該決定に基づいて、
前記複数のトランザクションの中の各トランザクションを2つ以上の並列プロセッサのうちの1つに割り当て、前記複数のトランザクションのうちの他のトランザクションに依存している前記複数のトランザクションの中の各トランザクションが、前記2つ以上の並列プロセッサのうちの、前記他のトランザクションと同じ1つのプロセッサに割り当てられ、
並行して、前記2つ以上の並列プロセッサによって、前記複数のトランザクションの中の前記トランザクションがトランザクションレベルの妥当性確認基準に従うことを検証することと
を有する方法。
【請求項2】
前記複数のトランザクションの中の各トランザクションに識別子を割り当てることを更に有し、
前記複数のトランザクションのうちの他のトランザクションに依存しているトランザクションは、それが依存している前記他のトランザクションと同じ識別子を割り当てられ、同じ識別子を有するトランザクションは、前記2つ以上の並列プロセッサのうちの同じ1つのプロセッサに割り当てられる、
請求項1に記載の方法。
【請求項3】
前記複数のトランザクションの中の各トランザクションに識別子を割り当てることは、前記複数のトランザクションの夫々における入力として参照される各未使用トランザクション出力が一意であることを逐次決定することと同時に実行される、
請求項2に記載の方法。
【請求項4】
前記トランザクションがトランザクションレベルの妥当性確認基準に従い且つ前記ブロックがブロックレベルの妥当性確認基準に従う場合には、前記ブロックを前記ネットワーク内の1つ以上のピアノードへ転送することを更に有する、
請求項1乃至3のうちいずれか一項に記載の方法。
【請求項5】
前記トランザクションレベルの妥当性確認基準は、前記ブロックチェーンプロトコルによって規定されるトランザクション特性を有し、
各トランザクションは、妥当と見なされる前記トランザクション特性を持っている必要がある、
請求項1乃至4のうちいずれか一項に記載の方法。
【請求項6】
前記ブロックレベルの妥当性確認基準は、前記ブロックチェーンプロトコルによって規定されるブロック特性を有し、
各ブロックは、妥当と見なされる前記ブロック特性を持っている必要がある、
請求項1乃至5のうちいずれか一項に記載の方法。
【請求項7】
前記複数のトランザクションの中の各トランザクションを2つ以上の並列プロセッサのうちの1つに割り当てることは、ランダム割り当てスキーム又は決定論的割り当てスキームを用いて前記トランザクションを割り当てることを有する、
請求項1乃至6のうちいずれか一項に記載の方法。
【請求項8】
前記トランザクションを割り当てることは、先着順アルゴリズムを用いて前記2つ以上の並列プロセッサの間で前記トランザクションを割り当てることを有する、
請求項7に記載の方法。
【請求項9】
前記複数のトランザクションの中の各トランザクションを2つ以上の並列プロセッサのうちの1つに割り当てることは、各トランザクションに関連する処理費用を決定し、該処理費用を前記2つ以上の並列プロセッサの間で負荷分散するように前記トランザクションを割り当てることを有する、
請求項1乃至8のうちいずれか一項に記載の方法。
【請求項10】
各トランザクションのための前記処理費用は、当該トランザクションにおけるスクリプト操作の数に基づき、任意に、各トランザクションのための前記処理費用は、スクリプト操作の加重和に更に基づき、
重みが、各々のスクリプト操作の計算複雑性に基づいて各スクリプト操作と関連づけられる、
請求項9に記載の方法。
【請求項11】
前記複数のトランザクションの夫々における入力として参照される各未使用トランザクション出力が一意であることを逐次決定することは、各未使用トランザクション出力が前記複数のトランザクションにおける入力として一度しか現れないことを決定することを有する、
請求項1乃至10のうちいずれか一項に記載の方法。
【請求項12】
ブロックチェーンを実装するノードのネットワーク内の計算装置であって、ブロックチェーンプロトコルに適合するブロックを妥当性確認するよう構成され、該ブロックが複数のトランザクションを含む、前記計算装置において、
ブロックチェーンを実装するノードのネットワークへのネットワーク接続性を提供し、ブロックチェーンプロトコルに適合する、複数のトランザクションを含むブロックを受け取るネットワークインターフェイスと、
ブロックレベルの妥当性確認基準に前記ブロックが従うことを決定するブロックレベル妥当性確認モジュールと、
前記複数のトランザクションの夫々における入力として参照される各未使用トランザクション出力が一意であることを逐次決定する入力一意性確認モジュールと、
前記複数のトランザクションの中のトランザクションがトランザクションレベルの妥当性確認基準に従うことを並行して検証する2つ以上の並列プロセッサと、
前記複数のトランザクションの中の前記トランザクションを検証のために前記2つ以上の並列プロセッサの間で割り当てるトランザクション割り当てユニットと
を有し、
当該計算装置は、請求項1乃至11のうちいずれか一項に記載のコンピュータにより実施される方法を実行するよう構成される、
計算装置。
【請求項13】
前記トランザクションがトランザクションレベルの妥当性確認基準に従い且つ前記ブロックがブロックレベルの妥当性確認基準に従う場合には、前記ネットワークインターフェイスは、前記ブロックを前記ネットワーク内の1つ以上のピアノードへ転送する、
請求項12に記載の計算装置。
【請求項14】
ブロックチェーンを実装するノードのネットワーク内でプロセッサ実行可能命令を記憶している非一時的なプロセッサ可読媒体であって、
前記命令は、ブロックチェーンプロトコルに適合するブロックを妥当性確認し、該ブロックが複数のトランザクションを含み、
前記命令は、2つ以上のプロセッサに、請求項1乃至11のうちいずれか一項に記載の方法を実行させる、
非一時的なプロセッサ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、ブロックチェーントランザクションに、より具体的には、ブロックチェーンネットワークにおいてブロックの迅速な妥当性確認及び伝播を可能にする方法及びデバイスに関する。
【背景技術】
【0002】
本明細書中で、我々は、あらゆる形式の電子的な、コンピュータに基づく分散台帳(distributed ledgers)を含むよう語「ブロックチェーン」を使用する。それらは、ブロックチェーン及びトランザクションチェーン技術、許可(permissioned)及び無許可(un-permissioned)台帳、共有台帳、並びにこれらの変形を含むが限られない。ブロックチェーン技術の最も広く知られた応用は、他のブロックチェーン実施が提案及び開発されているとはいえ、ビットコイン台帳である。ビットコインが、便宜上、説明のために本明細書で言及され得るが、本発明は、ビットコインブロックチェーンとともに使用することに限られず、代替のブロックチェーン実施及びプロトコルが本発明の適用範囲内にあることが留意されるべきである。
【0003】
ブロックチェーンは、合意に基づく電子台帳であり、これは、トランザクションから成るブロックで構成された、コンピュータに基づく非中央集権型の分散システムとして実装される。各トランザクション(TX)は、ブロックチェーンシステム内の参加者間のデジタル資産の制御の移行を符号化するデータ構造であり、少なくとも1つの入力及び少なくとも1つの出力を含む。ブロックチェーンにその始まり以来書き込まれてきた全てのトランザクションの永久的且つ不変な記録を構成するようブロックどうしが連鎖するように、各ブロックは前のブロックのハッシュを含む。トランザクションは、それらの入力及び出力に埋め込まれたスクリプトとして知られている小さいプログラムを含む。スクリプトは、如何にして誰によってトランザクションの出力がアクセスされ得るかを特定する。ビットコインプラットフォームで、それらのスクリプトは、スタックに基づくスクリプト言語を用いて書かれている。
【0004】
新しいトランザクションを受け取るネットワークノードは、直ちに、そのトランザクションをネットワーク内の他のノードへ押し出そうと試みる。新しいトランザクションを他のノードへ送る前に、それは“妥当性確認”(validated)される。つまり、それは、トランザクションが適用可能なプロトコルに従って適切なトランザクションのための基本要件を満たすことを確かにするために、基準の組に対してチェックされる。
【0005】
トランザクションがブロックチェーンに書き込まれるために、それはノード(“マイナー”(miner))によってブロックに組み込まれる。マイナーは、トランザクションを収集し、それらをブロックへと形成するよう設計される。マイナーは、次いで、ブロックに対して“プルーフ・オブ・ワーク”(proof of work)を完了しようと試みる。複数のマイナーは、ブロックチェーンネットワークにわたって競争して、トランザクションのブロックをアセンブルしそのブロックについての関連するプルーフ・オブ・ワークを完了する最初のものであろうとする。成功したマイナーは、その承認されたブロックをブロックチェーンに加え、ブロックは、ネットワークを通じて伝播される。それにより、ブロックチェーンのコピーを保持する他のノードは、自身の記録を更新することができる。ブロックを受け取るそれらのノードはまた、そのブロックを“妥当性確認”し、それを確かにするその中の全てのトランザクションは、プロトコルの方式要件に従う。例えば、新しいブロックを受け取るノードは、ブロックデータ構造が適用可能なシンタックス規則に従うこと、ブロックが年齢要件に従うタイムスタンプを有していること、ブロックが所定のサイズ制限内にあること、及び他のそのような基準を確かめるようチェックし得る。それはまた、ブロック内のあらゆるトランザクションが妥当であることも確かめる。ビットコインプロトコルに適用可能な基準の例は、ビットコインコア(Bitcoin Core)クライアント関数CheckBlock及びCheckBlockHeaderにおいて定義される。
【0006】
トランザクションを妥当性確認するための基準は冗長であることがあり得る。例えば、ビットコインプロトコルで適用可能な条件は、ビットコインリファレンス(Bitcoin reference)クライアントにおける関数AcceptToMemoryPool、CheckTransaction及びCheckInputsで詳細に見られ得る。
【0007】
ブロックチェーン実施に付随した潜在的な障害の1つは、ブロック内の全てのトランザクションを妥当性確認することを含め、ノードがブロック妥当性確認を完了するのにかかる時間である。その遅延は、高速な大容量処理のためのブロックチェーンの使用を阻害し邪魔をすることがある。更に、プルーフ・オブ・ワーク(Proof-of-Work,PoW)ネットワーク内のマイナーが、それ自体のプルーフ・オブ・ワークを終了する前に、ブロックが完成されたとの通知を受けるとき、そのマイナーは自身の活動を放棄し、次のブロックを構築しようと試みることを始める。従って、遅い妥当性確認は、マイナーがそれらの活動を不必要に続けることを意味する。マイニングは、プロセッサ及びエネルギ集約的な活動であるから、無駄なマイニング労力は、リソースに関して高くつく。
【0008】
このように、ブロックチェーントランザクションの妥当性確認に付随した技術的問題が存在する。それらは、ブロックを妥当性確認する工程に関わる速度、効率及びリソース要件に関する問題を含む。ブロックの妥当性確認及びその後の伝播は、ネットワーク内のノードによってエネルギ、時間及び労力を必要とし、工程に対する改善は、ネットワーク性能及び速度に関してだけでなく、必要とされるリソースの量に関しても、大いに有益である。ビットコインネットワーク内のブロックのより速い伝播を可能にする改善された方法及びデバイスを提供することが望ましい。
【発明の概要】
【0009】
従って、本発明によれば、添付の特許請求の範囲で定義される方法及びデバイスが提供される。
【0010】
本願は、改善されたデバイス及び方法を提供する。方法は、ブロックを妥当性確認する方法であってよい。ブロックは、ブロックチェーントランザクションのブロックであって良い。本発明は、ブロックが妥当であるかそれとも妥当でないかに関するより速い決定を可能にすることができる。より速い妥当性確認は、ブロックがより速くシステム内を伝えられるということで、無駄なリソースの低減をもたらし得る。また、最終的にはコンフリクトに終わり、先立つブロックに取って代わられる競合ブロックを妥当性確認し伝播することに関して無駄にされる時間及びリソースは、少なくなる。本発明は、トランザクションレベルの妥当性確認動作の一部の並列化を可能にすることができる。ブロック内の全てのトランザクションにわたる一意のUTXOの承認は、並列プロセッサの間の費用のかかる同期化を回避するために、並列化されなくてもよい。
【0011】
追加的に、又は代替的に、本願は、コンピュータにより実施される方法について記載し得る。それは、妥当性確認方法として記載され得る。それは、ブロックチェーンを実装するノードのネットワーク内でブロックを妥当性確認する方法を有してよい。ブロックチェーンは、ブロックチェーンプロトコルに従うか、又はそれに関連して動作してよい。ブロックは、複数の(ブロックチェーン)トランザクションを有してよい。方法は、ブロックがブロックレベルの妥当性確認基準に従うことを決定することと、複数のトランザクションの夫々における入力として参照される各未使用トランザクション出力が一意であることを逐次決定し、該決定に基づいて、複数のトランザクションの中の各トランザクションを2つ以上の並列プロセッサのうちの1つに割り当て、並行して、2つ以上の並列プロセッサによって、複数のトランザクションの中のトランザクションがトランザクションレベルの妥当性確認基準に従うことを検証することとを含んでよい。
【0012】
方法は更に、トランザクションがトランザクションレベルの妥当性確認基準に従い且つブロックがブロックレベルの妥当性確認基準に従う場合に、ブロックをネットワーク内の1つ以上のピアノードへ転送することを含んでよい。
【0013】
いくつかの実施において、トランザクションレベルの妥当性確認基準は、ブロックチェーンプロトコルによって規定されるトランザクション特性を含み、各トランザクションは、妥当と見なされるトランザクション特性を持っている必要がある。同様に、いくつかの実施において、ブロックレベルの妥当性確認基準は、ブロックチェーンプロトコルによって規定されるブロック特性であり、各ブロックは、妥当と見なされるブロック特性を持っている必要がある。
【0014】
いくつかの実施において、複数のトランザクションの中の各トランザクションを2つ以上の並列プロセッサのうちの1つに割り当てることは、ランダム割り当てスキーム又は決定論的割り当てスキームを用いてトランザクションを割り当てることを含む。一例において、スキームは、先着順(first-come first-serve)アルゴリズムを用いて2つ以上の並列プロセッサの間でトランザクションを割り当てることを含む。いくつかの例となる実施では、割り当てることは、各トランザクションに関連する処理費用を決定し、該処理費用を2つ以上の並列プロセッサの間で負荷分散するようにトランザクションを割り当てることを含む。各トランザクションのための処理費用は、そのトランザクションにおけるスクリプト操作の数に基づいてよい。各トランザクションのための処理費用は、スクリプト操作の加重和に更に基づいてよく、各スクリプト操作は、その計算複雑性に基づいた関連した重みを有している。
【0015】
いくつかの実施において、方法は、各未使用トランザクション出力が複数のトランザクションにおける入力として一度しか現れないことを決定することによって、複数のトランザクションの夫々における入力として参照される各未使用トランザクション出力が一意であることを逐次決定することを含んでよい。
【0016】
追加的に、又は代替的に、本願は、ブロックチェーンを実装するノードのネットワーク内の計算装置であって、複数のトランザクションを含む、ブロックチェーンプロトコルに従うブロックを妥当性確認するよう構成された前記計算装置について記載する。計算装置は、ブロックチェーンを実装するノードのネットワークへのネットワーク接続性を提供し、ブロックチェーンプロトコルに適合する、複数のトランザクションを含むブロックを受け取るネットワークインターフェイスと、ブロックがブロックレベルの妥当性確認基準に従うことを決定するブロックレベル妥当性確認モジュールと、複数のトランザクションの夫々における入力として参照される各未使用トランザクション出力が一意であることを逐次決定する入力一意性確認モジュールと、複数のトランザクションの中のトランザクションがトランザクションレベルの妥当性確認基準に従うことを並行して検証する2つ以上の並列プロセッサと、複数のトランザクションの中のトランザクションを検証のために2つ以上の並列プロセッサの間で割り当てるトランザクション割り当てユニットとを含んでよい。トランザクションがトランザクションレベルの妥当性確認基準に従い且つブロックがブロックレベルの妥当性確認基準に従う場合に、ネットワークインターフェイスは、ブロックをネットワーク内の1つ以上のピアノードへ転送する。
【0017】
追加的に、又は代替的に、本願は、実行される場合に、1つ以上のプロセッサに、本明細書で記載されるプロセス及び/又は動作の1つ以上を実行させるプロセッサ実行可能命令を記憶している非一時的なプロセッサ可読媒体について記載し得る。
【0018】
本発明の1つの態様又は実施形態に関して記載される如何なる特徴も、1つ以上の他の態様/実施形態に関しても使用され得る。本発明のこれら及び他の態様は、本明細書中で記載される実施形態から明らかであり、それを参照して説明される。本発明の実施形態が、これより、単なる一例として、添付の図面を参照して記載される。
【図面の簡単な説明】
【0019】
図1】ノードのブロックチェーンネットワークの例を表す。
図2】ノードにおけるブロック妥当性確認プロセスの例を図式的に表す。
図3】ブロック妥当性確認方法の一例をフローチャート形式で示す。
図4】ブロックチェーンネットワークにおいてブロックを妥当性確認するノードのブロック図を示す。
【発明を実施するための形態】
【0020】
本願において、語「及び/又は」(and/or)は、必ずしも追加の要素を除外せずに、挙げられている要素のみ、任意のサブコンビネーション、又は全ての要素、のうちのいずれか1つを含む、挙げられている要素の全ての起こり得る組み合わせ及びサブコンビネーションをカバーするよう意図される。
【0021】
本願において、「~又は~の少なくとも1つ」(at least one of … or …)との語句は、必ずしも追加の要素を除外することなしに、且つ、必ずしも全ての要素を必要とせずに、挙げられている要素のみ、任意のサブコンビネーション、又は全ての要素、のうちのいずれか1つを含む、挙げられている要素のうちの任意の1つ以上をカバーするよう意図される。
【0022】
最初に図1を参照する。図1は、ブロックチェーンに関連するブロックチェーンネットワーク100の例をブロック図形式で表す。ブロックチェーンネットワークは、招待なしで又は他のメンバーからの同意なしで誰もが参加することができるピア・ツー・ピアの非会員制ネットワークである。ブロックチェーンネットワーク100が動作するブロックチェーンプロトコルのインスタンスを実行する分散した電子デバイスが、ブロックチェーンネットワーク100に参加し得る。そのような分散した電子デバイスは、ノード102と呼ばれ得る。ブロックチェーンプロトコルは、例えば、ビットコインプロトコル又は他の暗号資産であってよい。
【0023】
ブロックチェーンプロトコルを実行し、ブロックチェーンネットワーク100のノード102を形成する電子デバイスは、例えば、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータなどのコンピュータ、サーバ、スマートフォンなどのモバイル機器、スマートウォッチなどの装着型コンピュータ、又は他の電子デバイスを含む様々なタイプであってよい。
【0024】
ブロックチェーンネットワーク100のノード102は、有線及び無線通信技術を含み得る適切な通信技術を用いて互いへ結合される。多くの場合に、ブロックチェーンネットワーク100は、少なくとも部分的にインターネット上で実装され、個々のノード102の一部は、地理的に散開した位置に配置されてよい。
【0025】
ノード102は、ブロックチェーン上の全てのトランザクションの大域的な台帳(global ledger)を保持する。大域的な台帳は分散台帳(distributed ledger)であり、各ノード102は、大域的な台帳の完全なコピー又は部分的なコピーを保管し得る。大域的な台帳に影響を与えるノード102によるトランザクションは、大域的な台帳の妥当性が保たれるように、他のノード102によって検証される。ビットコインプロトコルを使用するもののような、ブロックチェーンネットワークを実装し動作させることの詳細は、当業者によって十分に理解される。
【0026】
各トランザクションは、通常は、1つ以上の入力及び1つ以上の出力を有する。入力及び出力に埋め込まれたスクリプトは、如何にして誰によってトランザクションの出力がアクセスされ得るかを特定する。トランザクションの出力は、トランザクションの結果として値が移される先のアドレスであることができる。その値は、次いで、未使用トランザクション出力としてその出力アドレスと関連付けられる。その後のトランザクションは、次いで、そのアドレスを、その値を使用又は分散するために、入力として参照してよい。
【0027】
上述されたように、マイニングノード(“マイナー”)は、ブロックチェーンにおいて次のブロックを作る競争に参加する。ブロックをアセンブルするよう、マイナーは、未承認のトランザクションのプール(“メモリプール”(mempool))からトランザクションの組としてブロックを構築する。マイナーは次いで、自身がアセンブルしたブロックに対してプルーフ・オブ・ワークを完了しようと試みる。マイナーが、いずれかの他のマイナーがブロックを生成しそのプルーフ・オブ・ワークを完了することに成功したとの通知を受ける前に、何とかプルーフ・オブ・ワークを完了する場合には、次いで、マイナーは、ブロックをネットワーク上でピアノードへ送ることによってそのブロックを伝播する。それらのノードは、ブロックを妥当性確認し、次いで、それを更に、ネットワーク上で他のノードへ送る。マイナーが、自身のプルーフ・オブ・ワークを終了する前に、他のブロックが完成されたとの通知を受ける場合には、次いで、マイナーは、その活動を放棄し、次のブロックを構築しようと試みることを開始する。
【0028】
このように、ブロックの迅速な伝播は、マイナー及び妥当性確認するノードのために無駄な労力を回避するのを助ける。より速い妥当性確認、よってブロックの伝播を可能にする解決法を提供することによって、本発明は、向上したネットワーク性能を提供する。それは、必要とされる計算時間及び労力の量とともに、ネットワークによって必要とされるエネルギの量を減らす。それは、リソース及び時間に関してより効率的であるネットワークを提供する。それは、最終的に、改善された(ブロックチェーン)ネットワークを提供する。
【0029】
ビットコインネットワークのようなブロックチェーンの現在の実施では、ブロックを受け取る各ノードは、ブロックを他のノードへ送る前に、最初にブロックを妥当性確認する。ブロックを妥当性確認するのにかかる時間は、ネットワークを通るブロックの伝播を遅くする。既存のプロトコルの展開を含むブロックチェーンのいくつかの実施は、ネットワーク内の各ノードよりむしろノードの一部のみによるブロック妥当性確認を提供し得る点に留意されたい。しかし、ほとんどのノードでのブロック妥当性確認は、妥当でないブロックがネットワーク内を伝播することを防ぐための任意のブロックチェーン実施の特徴であることが依然としてあり得る。
【0030】
ブロックを妥当性確認することは、適用可能なブロックチェーンプロトコルによってセットされた所定の基準をブロックが満足することを確かめることを含む。ビットコインプロトコルに適用可能な基準の例は、ビットコインコアクライアント関数CheckBlock及びCheckBlockHeaderにおいて定義される。ブロック自体が所定の基準に従うことを確かめることに加えて、ブロック内の各トランザクションが、トランザクションレベルの基準に従うことを評価されてもよい。一例として、ビットコインプロトコルに適用可能なトランザクションレベルの基準は、AcceptToMemoryPool、CheckTransaction及びCheckInputsで詳細に見られ得る。
【0031】
ブロックレベルの基準の具体例は、ビットコインプロトコルに基づき、次を含む:
・ブロックデータ構造が構文的に妥当である。
・ブロックヘッダハッシュが(プルーフ・オブ・ワークを実行する)ターゲットディフィカルティに満たない。
・ブロックタイムスタンプが(時間エラーを許容する)2時間未来より小さい。
・ブロックサイズが許容限界内にある。
・最初のトランザクション(及び最初のみ)がコインベース生成(coinbase generation)トランザクションである。
・ブロック内の全てのトランザクションが妥当である。
【0032】
トランザクションレベルの基準の具体例は、ビットコインプロトコルに基づき、次を含む:
・トランザクションのシンタックス及びデータ構造が正確でなければならない。
・入力及び出力のいずれのリストも空である。
・各出力値x及び全ての出力の合計が0<x<21・10の範囲内になければならない。
・入力のどれもnullハッシュを有さない。
・nLockTimeがINT_MAX以下である。
・バイト単位のトランザクションサイズが最小値以上且つ最大値未満である。
・署名動作の回数が署名動作限界に満たない。
・アンロックスクリプト(unlocking script)scriptSigがスタックに数字をプッシュすることがしかできず、ロックスクリプト(locking script)scriptPubkeyが標準(Standard)形式である。
・各入力について、参照される出力がプール内のいずれかの他のトランザクションに存在する場合には、トランザクションは拒絶されなければならない。
・各入力について、参照される出力トランザクションがコインベース出力である場合には、それは少なくともCOINBASE_MATURITY(100)承認(confirmation)を有する必要がある。
・各入力について、参照される出力が存在すべきであり、既に使用されていることはあり得ない。
・入力値を得るための参照される出力トランザクションを使用して、各入力値及び和が値xの許容範囲、すなわち、0<x<21・10にあることをチェックする。
・プール内又はメインブランチにおけるブロック内に一致するトランザクションが存在しなければならない。
・入力値の和が出力値の和以上でなければならない。
・トランザクション手数料が空のブロックに入るのに十分でなければならない。
・各入力についてのアンロックスクリプトが対応する出力に対してロックスクリプトを妥当性確認しなければならない。
【0033】
所定の基準は、異なるプロトコルでは異なることがあり、所与のプロトコルについては、そのプロトコルに対して変更が行われる場合に、時間とともに変化する可能性があるということで、これらの例となる基準は実例であり、全ての実施形態にとって十分又は必要と解釈されるべきではない。一般に、トランザクションレベルの妥当性確認基準は、適用可能なブロックチェーンプロトコルの下でトランザクションが妥当と見なされるべきである特性を規定したものである。同様に、ブロックレベルの妥当性確認基準は、適用可能なブロックチェーンプロトコルの下でブロックが妥当と見なされるべきである特性を規定したものである。
【0034】
本願によれば、ネットワークにおいてブロックのより速い伝播を容易にするために、ブロック妥当性確認を加速させる方法及びデバイスが、記載される。
【0035】
一態様において、本願は、個々のトランザクションのトランザクションレベルの妥当性確認を並行して実行することによってブロックを妥当性確認するよう構造化されたノードについて記載する。しかし、トランザクションレベルの特定の基準は、並行して評価されるべきではない。特に、UTXOの一意性は、逐次的に評価されるべきである。従って、ノードは、トランザクションレベルの残りの基準の妥当性確認のために2つの並列プロセッサの組の間でトランザクションを割り当てることより前に、トランザクションの参照される入力(UTXO)の一意性を確認するよう構造化又は配置される。
【0036】
「プロセッサ」との語は、本明細書中で並列プロセッサの記載に関連して使用される場合に、物理的に相異なるマイクロプロセッサを必ずしも意味せず、プロセッサ機能を独立して且つ並行して実行することができる並列処理リソースを可能にする如何なるハードウェア又はソフトウェア実施も含んでよい。並列プロセッサは、複数のコアを有している1つのプロセッサを含んでよい。いくつかの事例で、並列プロセッサは、複数の別個の処理ユニットを含んでよい。並列プロセッサは、物理メモリを共有してもしなくてもよい。各並列プロセッサは、どんなふうに実施されても、妥当でないトランザクションを識別することに応答して信号を出力することなどのシグナリングのためのソフトウェア又はハードウェアメカニズムを有している。並列プロセッサの実施はまた、割り当てられたトランザクションデータを局所処理のために各々のプロセッサへ転送するよう、ソフトウェア及び/又はハードウェアにおいて、必要なデータ転送メカニズムを提供することを含む。
【0037】
これより図2を参照すると、図2は、ブロックチェーンネットワークのノードにおけるブロック妥当性確認プロセス200の簡単な例を図式的に示す。プロセス200は、ブロックレベルの妥当性確認段階202を含み、段階202では、入来する新しいブロックがブロックレベルの基準に対して試験される。例となるブロックレベルの基準は上記の通りであり、一般に、ブロック内のトランザクションとは対照的に、ブロック自体に適用される所定のフォーマット要件及び特性又は制限に関係がある。例えば、ブロックサイズ、ブロックヘッダ構造又はコンテンツ、及び同様の基準がある。
【0038】
プロセス200は、UTXO一意性確認モジュール204を更に含む。モジュール204は、新しいブロックにおけるトランザクションへの入力の夫々、すなわち、各UTXOが一意であるかどうかを評価する。新しいブロックにおいて入力として1回より多く同じUTXOが現れる場合には、それは二重支払い(double-spending)の問題の可能性を示し、UTXO一意性基準に違反する。UTXO一意性確認モジュール204が、新しいブロック内のトランザクション入力の中で1回よりも多く参照されるUTXOを識別する場合には、次いでそれは、ブロックが拒絶されるべきであることを示すようエラー信号又は他のインタラプトを出力する。
【0039】
新しいブロックが拒絶されないとすれば、すなわち、全てのUTXOが一意であるとすれば、次いで、個々のトランザクションが、トランザクション割り当てユニット206によって並列プロセッサ208の組の間で割り当てられる。トランザクション割り当てユニット206は、ブロック内のトランザクションを個々のプロセッサ208の間で分けるための多数の可能な割り当てスキームのうちのいずれか1つを用いてよい。いくつかの場合に、割り当てスキームは、負荷分散(load balancing)を目的とし得る。割り当ては、処理時間が様々であるジョブの組が、それ自身の処理能力又は出力を夫々が有しているマシン/プロセッサ208の組の間で割り当てられる一方で、プロセッサ208の間で最長の処理時間の長さを最小にしようと試みる“ジョブショップスケジューリング”(job shop scheduling)と見なされ得る。更なる例となる詳細は、以下で与えられる。
【0040】
個々のプロセッサ208は、それらに割り当てられているトランザクションを、トランザクションレベルの妥当性確認基準に対して妥当性確認する。プロセッサ208は、それらの間の同期化パラダイムを必要としない。すなわち、それらは、それらが割り当てられているトランザクションが妥当であることを検証することに夫々独立して取り組む。各プロセッサ208は、その割り当てられたトランザクションの妥当性を裏付ける結果を出力し、結果は、ブロック内の全てのトランザクションが妥当であることを確認するために加えられる。プロセッサ208のうちの1つが不適合なトランザクション、すなわち、妥当でないトランザクションを識別する場合に、次いでそれは、妥当でないトランザクションが存在することを示すよう、インタラプト又は他の信号などの出力を発してよい。そのインタラプト又は信号は他のプロセッサ208へ送られてよく、それにより、それらは、それらの各々のトランザクションを試験するのを直ちに中止し、拒絶されるべきブロック内のトランザクションを妥当性確認することで更なるリソースを無駄にすることがないようにすることができる。
【0041】
ブロックレベルの基準は、例となるプロセス200では、最初に試験されるものとして示されているが、ブロックレベルの妥当性確認段階202は、トランザクションレベルの妥当性確認試験の後で、あるいは、いくつかの場合では、トランザクションレベルの妥当性確認試験と並行して、行われてよいことが理解されるだろう。
【0042】
これより図3を参照すると、図3は、ブロックチェーンネットワークに置いてブロックを妥当性確認する方法300の一例をフローチャート形式で示す。ブロックは複数のトランザクションを含み、各トランザクションは1つ以上の入力を参照し、各入力はUTXOである(コインベース生成トランザクションの場合を除く。)。方法300は、ブロックチェーンネットワークにおけるあるノード内で適切なハードウェア及びプロセッサ実行可能命令を用いて実施される。
【0043】
動作302で、ノードは新しいブロックを受け取る。新しいブロックは、新しいブロックを生成しプルーフ・オブ・ワークを完了したマイニングノードから受け取られてよい。新しいブロックは、ネットワーク内の他の(非マイニング)ノードから受け取られてもよい。新しいブロックをネットワーク内のいずれかの他のノードへ転送する前に、現在のノードはブロックを妥当性確認する。上述されたように、新しいブロックの妥当性確認は、ブロックがブロックレベルの特定の基準を満足することを確認することと、ブロック内のトランザクションの夫々が妥当であることを確認することとを含む。
【0044】
動作304で、ノードは、新しいブロックがブロックレベルの基準を満足するかどうかを評価する。上述されたように、この動作304は、いくつかの実施では方法300において後で実行されてもよく、いくつかの場合に、他の動作と並行して実行されてもよい。ブロックレベルの基準は、とりわけ、ブロック構造がシンタックス要件を満足すること、タイムスタンプが通貨要件を満たすこと、及びブロックサイズが所定の制限内にあることを確認することを含んでよい。
【0045】
新しいブロックがこれらのブロックレベルの基準を満足する場合には、次いで動作306で、ノードは、個々のトランザクションへの入力が一意であるかどうかを評価する。すなわち、ノードは、入力として参照されるUTXOのいずれかがブロックにおいて1回よりも多く現れるかどうかを判定する。そうであるならば、UTXOは一意ではなく、ブロックは拒絶されるべきである。UTXOが一意であるとの決定は、並列処理ユニットの間で計算的に費用のかかる同期化パラダイムを使用しないと、並行して実行され得ない。従って、動作306は、逐次的に実行される。
【0046】
一例となる実施では、トランザクション入力における参照される出力(UTXO)のハッシュテーブルが使用されてよく、各UTXOは、偽(false)に初期化されたブール値を有する。二重支払い攻撃は、値が予め真(true)にセットされている所与のハッシュテーブル入力が再び参照される場合に起こる。そのような場合に、UTXOは一意ではなく、ブロック全体が妥当でないと見なされ、プロセス300は中止される。
【0047】
他の例となる実施では、二分探索木が、例えば、C++におけるマップ(map)データ構造を通じて、使用されてよい。マップは、特定の順序に従って、キー値及びマッピングされる値の組み合わせによって形成された要素を格納する連想コンテナである。n個のトランザクションを考えると、探索、挿入及び削除時間複雑性は、平均してO(logn)であり、最悪の場合でO(n)である。
【0048】
新しいブロック内のUTXOが一意である場合には、次いで動作308で、ノードは、トランザクションを並列プロセッサの間で割り当てる。
【0049】
追加のハッシュテーブルが、ブロック内の他のトランザクションに依存するトランザクションの経過を追うよう、動作306の直列処理の間に使用されてよい。1つの実施では、識別子iddep(0から始まる。)が、現在解析されているトランザクションに当てがわれる。トランザクションが他のトランザクションに依存する場合には、それは、それが依存するトランザクションと同じ識別子を与えられることになる。すなわち、2つ以上の依存したトランザクションは同じ識別子を有し、まだ見られている如何なるトランザクションにも依存しない夫々の新しいトランザクションは、逓増的なiddep値を有する。依存したトランザクションの各組は、同じ処理ユニットに前もって割り当てられる。例えば、Nが並列処理ユニットの数であるとして、idCPU=iddepmoduloN。依存したトランザクションは、例えば、それが依存するトランザクションからの出力である入力を有するものである。
【0050】
最も簡単な実施では、プロセッサ間のトランザクションの割り当ては、プロセッサ要求及び/又は能力の差にかかわらず、プロセッサの数及びトランザクションの数に基づく。しかし、利用可能なプロセッサの間で処理負荷をより良く平衡にするよう、いくつかの実施では、ノードは、トランザクションの複雑性、特に、各トランザクションを妥当性確認することの複雑性を考慮に入れてもよい。処理負荷の(又はその代理となる)1つのそのような指標は、トランザクションに関わるスクリプト記述動作の数である。すなわち、個々のトランザクションjを妥当性確認するのに必要な時間は、関連するスクリプト記述動作の数cに比例すると見なされ得る。例えば、P2PKHトランザクションの場合に、cは、署名スクリプト(入力)における操作の数と、公開キースクリプト(参照される出力)における操作の数との和である。
【0051】
他の例では、異なる重みが異なるスクリプト操作に割り当てられ得る。例えば、OP_HASH160及びOP_CHECKSIGは、単純なOP_EQUAL操作よりもはるかに複雑である。従って、トランザクションjの妥当性確認のための全体の費用cは、そのM個の個別的な重み付けされたスクリプト操作wの和として定義される:
【数1】
重みwは、適用可能なブロックチェーンプロトコルによって規定又は定義されたスクリプト記述動作の複雑性に基づきハードコードされてよい。
【0052】
ノードの計算リソースに対する何らかの形の攻撃を防ぐために、閾値Tがセットされ得る。任意のトランザクションjについて、c>Tの場合に、ノードは、ブロックを妥当性確認しないことを決定することができる。Tの値は、ヘルツ又は毎秒あたりの命令数で測定される、局所妥当性確認ノードにおける個々の処理ユニットの計算出力に直接比例し得る。
【0053】
スケジューリングスキームSは、トランザクション妥当性確認のリスト{c},0≦j<nをCPUの間で分配する。この問題は、ジョブショップスケジューリングとして知られており、様々な処理時間のn個のジョブ{J,J,・・・,J}は、様々な処理出力を有するN個のマシンに対してスケジューリングされる必要があり、一方で、スケジュールUの全体の長さ(メイクスパン)、すなわち、並列処理が完了するのにかかる時間を最小にしようと試みる。いくつかの実施では、プロセッサ間のトランザクションの割り当ては、ランダム割り当てスキームに従ってよい。いくつかの実施では、割り当ては、決定論的(deterministic)割り当てスキームに従ってよい。
【0054】
例となる2つのスケジューリングスキームは、次を含む:
・FCFS(先着順サービス(First Come First Served))は、利用可能な処理ユニットにラウンドロビン(round-robin)様式でトランザクションを順次割り当てる。これは、ランダム割り当てスキームの一種である。ブロックの上からt番目のトランザクションを考えると、IDt modulo Nを有するコアが妥当性確認に関与することになる。このスケジューラは、少なくとも計算的に複雑である。
・LPT(最小処理時間(Longest Processing Time))どん欲法(greedy algorithm)は、より有効な負荷分担解決法を提供し、決定論的割り当てスキームの一例である。ジョブ(トランザクション)は、最初に、それらの各々の処理時間(スクリプト記述動作の数、又は重み付けされたスクリプト記述動作の和に基づく“費用”)によってソートされ、次いで、プロセッサごとの計算負荷を平衡にするように、これまでの最も早い終了時刻を有するマシンに割り当てられ得る。
【0055】
いくつかの実施で、FCFSスキームは、妥当性確認ノードの並列処理の程度N(例えば、N又はN/2個のトランザクションごとにスクリプトを要求しながらブロックを構築すること)を悪用する悪意のある攻撃を受ける可能性がある。このシナリオを回避するために、本当にランダムなトランザクション妥当性確認割り当てが、余分の費用なしで使用され得る。
【0056】
LPTアルゴリズムは、理論的な最適条件Uに対して次の上限Uを達成する:

U/U=(4/3)-(1/3N)

マージソート(Mergesort)のようなソートのアルゴリズムは、O(nlogn)の最悪及び平均時間複雑性を特徴とする。しかし、動作306のUTXO一意性評価は、c値をソートしながら実行されてよく、それによって、如何なる余分の計算費用も回避する。
【0057】
並列プロセッサの間でトランザクションを割り当てると、方法300は次いで、それらのプロセッサの夫々が、割り当てられたトランザクションの各々の組を独立して妥当性確認することを含む。全ての個別的なトランザクションが妥当と検証されると、次いで、動作312によって示されるように、ノードは、ブロックを妥当であるとして受け入れることができる。ブロックを妥当であるとして受け入れること又は指定することは、ブロックチェーンネットワーク上で1つ以上のピアノードへ妥当なブロックを転送することのような、ブロックの妥当性に基づく更なる機能をもたらし得る。いくつかの場合に、それは、現在のノードにローカルで記憶されたブロックチェーンのコピーにブロックを加えることを含んでもよい。
【0058】
プロセッサのいずれかが、妥当でないトランザクションを検出する場合には、そのプロセッサは妥当性確認方法300を中止し、動作314によって示されるように、ノードはブロックを妥当でないとして拒絶する。
【0059】
このように、本発明は、先行技術における少なくとも1つの技術的問題に対して1つ以上の技術的解決法を提供する。例えば、既知のブロックチェーン配置は、並列プロセッサ間のトランザクションの割り当てより前に、全てのトランザクションにおける未使用トランザクション出力(UTXO)の妥当性を逐次検証する技術を教示していない。2014年10月8日に公表されたビットコインフォーラムは、例えば、新しいデータ構造(出力セット)を構築し、出力セット構造をチェックすることによって、並列化されたトランザクション検証プロセス内で二重支払いを防ごうと試みることを提案しているように見える(https://bitcointalk.org/index.php?topic=816199.0 [06/10/2017] “Looking Into forking the core wallet to use parallel computing to verify blocks”)。
【0060】
これより図4を参照すると、図4は、ノード400の簡略化された例をブロック図で示す。ノード400は、複数のプロセッサ402を含む。プロセッサ402には、1つ以上のマイクロプロセッサ、特定用途向け集積回路(ASIC)、マイクロコントローラ、又は同様のコンピュータ処理装置が含まれ得る。プロセッサ402は、マルチコアプロセッサを含んでもよい。
【0061】
ノード400はメモリ404を更に含む。メモリ404には、値、変数、及びいくつかの事例では、プロセッサにより実行可能なプログラム命令を記憶する永久的且つ非一時的なメモリが含まれ得る。ノード400は、有線又な無線ネットワークにわたってネットワーク接続性を提供するネットワークインターフェイス406を更に含む。
【0062】
ノード400は、プロセッサ実行可能命令を含むプロセッサ実行可能ブロックチェーンアプリケーション408を含む。プロセッサ実行可能命令は、実行される場合に、プロセッサ402に、本明細書中で記載される機能又は動作の1つ以上を実行させる。
【0063】
本明細書中で記載されるデバイス及びプロセス、並びにブロックチェーンノードを構成するために、記載される方法/プロセスを実装するあらゆるモジュール、ルーチン、プロセス、スレッド、アプリケーション、又は他のソフトウェアコンポーネントが、標準のコンピュータプログラミング技術及び言語を用いて実現され得ることが理解されるだろう。本願は、特定のプロセッサ、コンピュータ言語、コンピュータプログラミング仕様、データ構造、他のそのような実施詳細に限定されない。
【0064】
上記の実施形態は、本発明を制限するのではなく説明しているのであって、当業者は、添付の特許請求の範囲によって定義される本発明の適用範囲から外れることなしに、多くの代替の実施形態を設計することが可能である点が留意されるべきである。特許請求の範囲において、かっこ内の如何なる参照符号も、特許請求の範囲を制限するものとして解釈されるべきではない。語「有する」(comprising及びcomprises)などは、いずれかの請求項又は明細書の全文に挙げられているもの以外の要素又はステップの存在を除外しない。本明細書中、「有する」(comprises)は、「含むか、又は~から成る」(includes or consists of)を意味し、「有する」(comprising)は、「含むか、又は~から成る」(including or consisting of)を意味する。要素の単一参照は、そのような要素の複数参照を除外せず、逆もまた同じである。本発明は、いくつかの個別要素を有するハードウェアを用いて、且つ、適切にプログラムされたコンピュータを用いて、実施されてよい。いくつかの手段を列挙している装置クレームでは、それらの手段のうちのいくつかが、ハードウェアの同一アイテムによって具現されてもよい。特定の手段が相互に異なる請求項で挙げられているという単なる事実は、それらの手段の組み合わせが有利に使用され得ないことを示すものではない。
図1
図2
図3
図4
【外国語明細書】