(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-03-18
(45)【発行日】2025-03-27
(54)【発明の名称】セキュアな共生(Symbiosis)マイニングのための方法および装置
(51)【国際特許分類】
H04L 9/32 20060101AFI20250319BHJP
【FI】
H04L9/32 200Z
(21)【出願番号】P 2022521289
(86)(22)【出願日】2020-10-08
(86)【国際出願番号】 IB2020059462
(87)【国際公開番号】W WO2021070106
(87)【国際公開日】2021-04-15
【審査請求日】2023-09-12
(32)【優先日】2019-10-09
(33)【優先権主張国・地域又は機関】GB
(73)【特許権者】
【識別番号】318001991
【氏名又は名称】エヌチェーン ライセンシング アーゲー
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】デイヴィーズ,ジャック
(72)【発明者】
【氏名】ジャーン,ウエイ
(72)【発明者】
【氏名】ライト,クレイグ スティーヴン
【審査官】中里 裕正
(56)【参考文献】
【文献】米国特許出願公開第2016/0330031(US,A1)
【文献】米国特許出願公開第2017/0249606(US,A1)
【文献】米国特許出願公開第2018/0109541(US,A1)
【文献】米国特許出願公開第2019/0303363(US,A1)
【文献】国際公開第2018/215949(WO,A1)
【文献】国際公開第2019/021107(WO,A1)
【文献】アンドレアス・M・アントノプロス ,ビットコインとブロックチェーン 暗号通貨を支える技術,NTT出版株式会社,2016年07月21日,pp.147-160,189-210
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/32
(57)【特許請求の範囲】
【請求項1】
コンピュータにより実施される、ブロックチェーンネットワークにおけるマイニングの方法であって、前記ブロックチェーンネットワークは非マイニングノードおよび複数のマイニングノードを含み、前記方法は、
前記非マイニングノードによって、複数のトランザクションを含む候補ブロックを生成するステップであって、前記複数のトランザクションは、前記非マイニングノードに関連する第1アウトプットを含むソーストランザクションと、インプットとして前記ソーストランザクションの前記第1アウトプットを含み、第1マイニングノードに関連する第2アウトプットを含むマイナートランザクションと、を含む、ステップと、
前記候補ブロックのペイロードサマリーを決定するステップと、
前記第1マイニングノードにペイロードサマリー、前記マイナートランザクション、および前記マイナートランザクションの第1サマリーパスを送信するステップと、
前記第1マイニングノードから、前記候補ブロックのためのproof-of-work解を受信するステップと、
前記候補ブロックを前記ブロックチェーンネットワーク上で伝播させるステップと、
を含む方法。
【請求項2】
送信するステップは、前記ソーストランザクションを前記第1マイニングノードに送信することを排除する、請求項1に記載の方法。
【請求項3】
送信するステップは、前記候補ブロックに対する候補ブロックヘッダーを送信することを含み、前記候補ブロックヘッダーは、前記ペイロードサマリーを含む、請求項1または2に記載の方法。
【請求項4】
前記ソーストランザクションおよび前記マイ
ナートランザクションは、前記ブロックチェーンネットワーク上で伝播されず、前記候補ブロックのproof-of-work解を受領する前に、メモプールに含まれない、請求項1~3のいずれか一項に記載の方法。
【請求項5】
前記送信するステップは、前記第1マイニングノードに、前記ソーストランザクションのハッシュおよび前記ソーストランザクションのための第2サマリーパスを送信することを含む、請求項1~4のいずれか一項に記載の方法。
【請求項6】
前記候補ブロック内の前記複数のトランザクションは、前記非マイニングノードと関連付けられたコインベースアウトプットを含む生成トランザクションをさらに含む、請求項1~5のいずれか一項に記載の方法。
【請求項7】
前記第1マイニングノードにおいて、前記ペイロードサマリーおよび前記第1サマリーパスに基づいて前記候補ブロックに前記マイナートランザクションが含まれることを検証する
ステップをさらに含む、請求項1~6のいずれか一項に記載の方法。
【請求項8】
前記送信するステップは、前記第1マイニングノードに、前記ソーストランザクションのハッシュと、前記ソーストランザクションのための第2サマリーパスとを送信することを含み、前記検証するステップは、前記ペイロード
サマリーおよび前記第2サマリーパスに基づいて、前記ソーストランザクションが前記候補ブロックに含まれることを検証することを含む、請求項7に記載の方法。
【請求項9】
前記ペイロードサマリーはMerkleルートを含み、前記第1サマリーパスは第1Merkleパスを含み、前記第1Merkleパスは前記マイナートランザクションから前記Merkleルートを再構築するためのハッシュの最小セットを含む、請求項1~8のいずれか一項に記載の方法。
【請求項10】
生成するステップは、
前記非マイニングノードによって、第2の複数のトランザクションを含む第2候補ブロックを生成するステップであって、前記第2の複数のトランザクションは、前記ソーストランザクションと、前記ソーストランザクションの前記第1アウトプットをインプットとして含み、前記第1マイニングノードとは異なる第2マイニングノードに関連する別のアウトプットを含む第2マイナートランザクションとを含む、ステップを含む、請求項1~9のいずれか一項に記載の方法。
【請求項11】
コンピュータにより実施される、ブロックチェーンネットワークにおけるマイニングの方法であって、前記ブロックチェーンネットワークは非マイニングノードとマイニングノードとを含み、前記方法は、
前記マイニングノードにおいて、前記非マイニングノードから、候補ブロックの候補ブロックヘッダー、前記候補ブロックのペイロードサマリー、マイナートランザクション、および前記マイナートランザクションの第1サマリーパスを受信するステップと、
前記ペイロードサマリーおよび前記第1サマリーパスに基づき、前記候補ブロックに前記マイナートランザクションが含まれることを検証するステップと、
proof-of-workが見付かるまで、前記候補ブロックヘッダーに挿入された連続ノンス値により、前記候補ブロックヘッダーを繰り返しマイニングするステップと、
前記非マイニングノードに、前記proof-of-workに対応する少なくとも1つのノンス値を送信するステップと、
を含む方法。
【請求項12】
ブロックチェーンネットワーク内で記憶および検証ノードを実装するコンピューティング装置であって、前記ブロックチェーンネットワークは複数のマイニングノードを含み、前記コンピューティング装置は、
1つ以上のプロセッサと、
ブロックチェーンデータを格納するメモリと、
前記メモリに格納されたコンピュータ実行可能命令であって、前記1つ以上のプロセッサにより実行されると、前記プロセッサに請求項1~
11のいずれか一項に記載の方法を実行させる、コンピュータ実行可能命令と、
を含むコンピューティング装置。
【請求項13】
ブロックチェーンネットワーク内で記憶および検証ノードを実装するためのプロセッサ実行可能命令を格納するコンピュータ可読媒体であって、前記ブロックチェーンネットワークは複数のマイニングノードを含み、前記プロセッサ実行可能命令は、1つ以上のプロセッサにより実行されると、前記プロセッサに請求項1~
11のいずれか一項に記載の方法を実行させる命令を含む、コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ブロックチェーンネットワークに関し、特に、ブロックチェーンネットワークにおけるマイニングに関する。
【背景技術】
【0002】
マイニングノード(または「マイナー」)は、ブロックチェーンネットワークの主要な要素である。「proof-of-work」ブロックチェーンネットワークでは、マイニングノードは、ブロックをマイニングする競争に「勝つ」ためにproof-of-workを達成するために争い、それにより、トランザクション手数料、および新しいブロック内のコインベーストランザクションに反映される新たに鋳造(mint)されたトークンを集める。この方法では、マイナーは、ネットワークをセキュアにし、トランザクションが有効であること、および全部の参加ノードが一般的ブロックチェーンプロトコルに従うことを保証している。ノードは、トランザクションとブロックをブロックチェーンネットワーク全体に伝播させる前に、トランザクションとブロックを含むトランザクションとブロックを、規定の有効性基準に照らして検証する。
【0003】
ネットワークスケールおよびproof-of-work検索が計算上より困難になるにつれて、マイニング機能はかなりの計算能力(「ハッシュパワー」と呼ばれることもある)を必要とする。トランザクションの量およびトランザクションのサイズは、検証および伝播機能に対する重いコンピューティング、ストレージ、および帯域幅の要求も意味する。信頼される仲介者を必要とせずにトランザクションのセキュリティを確保しながら、これらの要求を満たすように、ブロックチェーンネットワークおよびブロックチェーンノード、および/またはそれらのノードによって実行される動作をより良く構築するためのメカニズムを見つけることは有利である。
【発明の概要】
【0004】
一態様によると、コンピュータにより実施される、ブロックチェーンネットワークにおけるマイニングの方法であって、前記ブロックチェーンネットワークは非マイニングノードおよび複数のマイニングノードを含み、前記方法は、
前記非マイニングノードによって、複数のトランザクションを含む候補ブロックを生成するステップであって、前記複数のトランザクションは、前記非マイニングノードに関連する第1アウトプットを含むソーストランザクションと、インプットとして前記ソーストランザクションの前記第1アウトプットを含み、第1マイニングノードに関連する第2アウトプットを含むマイナートランザクションと、を含む、ステップと、
前記候補ブロックのペイロードサマリーを決定するステップと、
前記第1マイニングノードにペイロードサマリー、前記マイナートランザクション、および前記マイナートランザクションの第1サマリーパスを送信するステップと、
前記第1マイニングノードから、前記候補ブロックのためのproof-of-work解を受信するステップと、
前記候補ブロックを前記ブロックチェーンネットワーク上で伝播させるステップと、を含んでよい方法が提供され得る。
【0005】
いくつかの実装では、送信するステップは、前記ソーストランザクションを前記第1マイニングノードに送信することを排除してよい。いくつかの場合には、送信するステップは、前記候補ブロックに対する候補ブロックヘッダーを送信することを含み、前記候補ブロックヘッダーは、前記ペイロードサマリーを含む。
【0006】
いくつかの実装では、前記ソーストランザクションおよび前記マイニングトランザクションは、前記ブロックチェーンネットワーク上で伝播されず、前記候補ブロックのproof-of-work解を受領する前に、メモプールに含まれない。
【0007】
いくつかの実装では、送信するステップは、前記第1マイニングノードに、前記ソーストランザクションのハッシュおよび前記ソーストランザクションのための第2サマリーパスを送信することを含んでよい。
【0008】
前記方法は、前記第1マイニングノードにおいて、前記ペイロードサマリーおよび前記第1サマリーパスに基づいて前記候補ブロックに前記マイナートランザクションが含まれることを検証することをさらに含んでよい。そのような場合には、いくつかの例では、前記送信するステップは、前記第1マイニングノードに、前記ソーストランザクションのハッシュと、前記ソーストランザクションのための第2サマリーパスとを送信することを含み、前記検証するステップは、前記ペイロードおよび前記第2サマリーパスに基づいて、前記ソーストランザクションが前記候補ブロックに含まれることを検証することを含む。
【0009】
いくつかの実装では、前記ペイロードサマリーはMerkleルートを含み、前記第1サマリーパスは第1Merkleパスを含み、前記第1Merkleパスは前記マイナートランザクションから前記Merkleルートを再構築するためのハッシュの最小セットを含む。
【0010】
いくつかの実装では、生成するステップは、
前記非マイニングノードによって、第2の複数のトランザクションを含む第2候補ブロックを生成するステップであって、前記第2の複数のトランザクションは、前記ソーストランザクションと、前記ソーストランザクションの前記第1アウトプットをインプットとして含み、前記第1マイニングノードとは異なる第2マイニングノードに関連する別のアウトプットを含む第2マイナートランザクションとを含む、ステップを含んでよい。
【0011】
さらなる態様では、本願は、コンピュータにより実施される、ブロックチェーンネットワークにおけるマイニングの方法であって、前記ブロックチェーンネットワークは非マイニングノードとマイニングノードとを含み、前記方法は、
前記マイニングノードにおいて、前記非マイニングノードから、候補ブロックの候補ブロックヘッダー、前記候補ブロックのペイロードサマリー、マイナートランザクション、および前記マイナートランザクションの第1サマリーパスを受信するステップと、
前記ペイロードサマリーおよび前記第1サマリーパスに基づき、前記候補ブロックに前記マイナートランザクションが含まれることを検証するステップと、
proof-of-workが見付かるまで、前記候補ブロックヘッダーに挿入された連続ノンス値により、前記候補ブロックヘッダーを繰り返しマイニングするステップと、
前記非マイニングノードに、前記proof-of-workに対応する少なくとも1つの前記ノンス値を送信するステップと、
を含み得る方法を記載する。
【0012】
またさらなる態様では、本願は、コンピュータにより実施される、ブロックチェーンネットワークにおけるマイニングの方法であって、前記ブロックチェーンネットワークは非マイニングノードと複数のマイニングノードとを含み、前記方法は、
前記非マイニングノードにより、複数のトランザクションを含む候補ブロックを生成するステップと、
前記複数のマイニングノードに、前記候補ブロックの少なくとも候補ブロックヘッダーを送信するステップと、
前記複数のマイニングノードの中の第1マイニングノードから、proof-of-work解のハッシュを受信するステップであって、前記proof-of-work解は、ノンスを含む候補ブロックを含む、ステップと、
前記proof-of-work解のハッシュをハッシングしてproof-of-work結果を生成し、前記proof-of-work結果が採掘難易度設定を満たすことを決定するステップと、
前記proof-of-work結果が前記採掘難易度設定を満たすことに応答して、前記第1マイニングノードに関連し前記proof-of-work解によりロックされたアウトプットを有するマイナートランザクションを生成するステップと、
前記第1マイニングノードから、前記proof-of-work解を受信するステップと、
前記候補ブロックを完成させ、前記ブロックチェーンネットワーク上に伝播させるステップと、
を含み得る方法を提供する。
【0013】
追加の態様では、本願は、コンピュータにより実施される、ブロックチェーンネットワークにおけるマイニングの方法であって、前記ブロックチェーンネットワークは非マイニングノードとマイニングノードとを含み、前記方法は、
前記マイニングノードにより、前記非マイニングノードから、複数のトランザクションを含む候補ブロックの候補ブロックヘッダーを受信するステップと、
proof-of-workが見付かるまで、前記候補ブロックヘッダーに挿入された連続するノンス値により前記候補ブロックヘッダーを繰り返しマイニングするステップと、
前記非マイニングノードに、前記proof-of-workのハッシュを送信するステップと、
前記非マイニングノードから、前記マイニングノードに関連付けられ、前記proof-of-work解によりロックされたアウトプットを有するマイナートランザクションを受信するステップと、
前記マイナートランザクションを前記ブロックチェーンネットワーク上に伝播させるステップと、
を含み得る方法を記載する。
【0014】
別の態様では、ブロックチェーンネットワーク内でノードを実装するコンピューティング装置が提供されてよい。前記コンピューティング装置は、メモリと、1つ以上のプロセッサと、実行されると前記プロセッサに本願明細書に記載の方法のうちの1つ以上を実行させるコンピュータ実行可能命令と、を含んでよい。
【0015】
さらに別の態様では、ネットワーク内のノードを差動させるためのプロセッサ実行可能命令を格納しているコンピュータ可読媒体であって、前記プロセッサ実行可能命令は、1つ以上のプロセッサにより実行されると、前記プロセッサに本願明細書に記載の方法のうちの少なくとも1つを実行させる、コンピュータ可読媒体が提供され得る。
【0016】
本開示の他の例示的な実施形態は、図面と関連して以下の詳細な説明を読むことから当業者に明らかになるだろう。
【図面の簡単な説明】
【0017】
例として、本願の例示的な実施形態を示す以下の添付の図面を参照する。
【0018】
【
図1】分割マイニングおよび記憶/検証ノードを有する部分ブロックチェーンネットワークの単純化された例を示す;
【0019】
【
図2】フローチャート形式で、ブロックチェーンネットワーク上でのマイニングの一例の方法を示す;
【0020】
【
図3】例示的なMerkleツリーを図式的に示す;
【0021】
【
図4】分割マイニングおよび記憶/検証ノードを有する部分ブロックチェーンネットワークの別の単純化された例を示す;
【0022】
【
図5】フローチャート形式で、ブロックチェーンネットワーク上での別の例示的なマイニング方法を示す。
【0023】
【
図6】ブロックチェーンネットワーク内の計算ノードの簡略化された例をブロック図形式で示す。
【0024】
図中の同様の参照符号は同様の要素および特徴を示すために使用される。
【発明を実施するための形態】
【0025】
本願では、用語「および/または」は、列挙された要素単独、任意の一部の組合せ、または要素の全部、を含む列挙された要素の全部の可能な組合せおよび一部の組合せをカバーすることを意図しており、必ずしも追加要素を排除しない。
【0026】
本願では、用語「...または...のうちの少なくとも1つ」は、列挙された要素単独、任意の一部の組合せ、または要素の全部、を含む列挙された要素の全部の可能な組合せおよび一部の組合せをカバーすることを意図しており、必ずしも追加要素を排除せず、必ずしも全部の要素を必要としない。
【0027】
本願は、任意のデータセットまたは「メッセージ」に適用されるとユニークな固定長英数字文字列を決定論的に(deterministically)生成する多数の暗号ハッシュ関数のうちの任意の1つを含むことを意図している、ハッシング(hashing)またはハッシュ(hash)関数を参照する。ハッシュ関数の結果は、ハッシュ値、フィンガープリント、ハッシュ結果、またはそれらの均等物と呼ばれてよい。例示的なハッシュ関数は、限定ではないが、SHA-2、SHA-3、およびBLAKE2を含む。
【0028】
本願明細書では、用語「ブロックチェーン」は、全ての形式の電子的な、コンピュータに基づく、分散型台帳を包含すると理解される。これらは、総意に基づくブロックチェーンおよびトランザクションチェーン技術、許可および未許可台帳、共有台帳、並びにこれらの変形を含む。例示的なブロックチェーンプロトコルが説明を目的として以下に議論され得るが、本願は、任意の特定のブロックチェーンまたはブロックチェーンプロトコルと共に使用することに限定されず、代替ブロックチェーン実装およびプロトコルは、本願の範囲に包含される。
【0029】
ブロックチェーンは、コンピュータに基づく非集中型の分散型システムを用いて実装されるピアツーピアの電子台帳である。ブロックチェーンはブロックで構成され、ブロックはまた、トランザクションで構成される。各トランザクションは、特に、ブロックチェーンシステムの中のデジタルリソースの制御の移転を符号化するデータ構造であり、少なくとも1つのインプットおよび少なくとも1つのアウトプットを含む。トランザクションは、スクリプトとして知られている小さなプログラムを含んでよい。スクリプトは、それらのインプットおよびアウトプットを埋め込まれ、トランザクションのアウトプットがどのように、およびどんな条件下でアクセス可能であるかを指定する。いくつかのプラットフォームでは、これらのスクリプトはスタックに基づくスクリプト言語を用いて記述される。デジタルリソースへのアクセス、および、デジタルリソースの一部または全部をさらに分散する能力は、アウトプットに対するアンロック条件により支配される。例示的な条件は、標準的に、アウトプットをロックするために使用された公開鍵に対応する秘密鍵を用いるデジタル署名を含むが、多くの他の条件が課されてもよい。
【0030】
各ブロックヘッダーは、マークル(Merkle)ルートの形式のようなブロックのコンテンツの要約を含み、各ブロックヘッダーは前のブロックヘッダーのハッシュを含む。その結果、ブロックは一緒に繋がれるようになり、永久の変更不可能な、開始以来ブロックチェーンに書き込まれた全部のトランザクションのレコードを生成する。
【0031】
ブロックチェーンは、ノードのネットワークにより実装される。各ノードは、ネットワーク接続と適用可能なブロックチェーンプトロコルを実行する実行ソフトウェアとを有するコンピューティング装置である。ノードは、トランザクションを検証し、それらをネットワーク内の他のノードへ伝播させる。「マイニングノード」または「マイナー」と呼ばれる専用ネットワークノードは、未確定のトランザクション、つまり保留中のトランザクションのセットを集めて、ブロックにし、該ブロックを「マイニング」しようとする。マイニングは、これらの例では、ネットワーク内の他のマイナーが彼らのそれぞれのブロックのproof-of-workを解くことに成功する前に、proof-of-work(POW)を解くことを表す。いくつかの例では、POWは、ハッシングの結果が採掘難易度(difficulty)パラメータにより設定された閾値より下になるまで、ノンス(nonce)を含むブロックヘッダーをハッシングすることを含む。ノンスは、繰り返されインクリメントされ、結果が閾値より下になるまで、または別のマイナーが成功したノンスをマイナーが受信するまで、ハッシングが繰り返される。マイニング処理における変形は、当業者によく知られている。
【0032】
上述のように、マイニングノードは、ブロックチェーンネットワークをセキュアにするための鍵である。マイニングノードは、彼らが有効な新しいブロックを見付ける競争に勝つと、それらの作業を補償される。補償は、個々のトランザクションからの、および新しいブロックに含まれる「コインベース」トランザクションからの、トランザクション手数料を通じて生じる。コインベーストランザクションは、インプットを持たず(または、より適正には、空またはヌルインプットフィールド)、所定量のトークン(たとえば、コイン)をマイナーに出力し、事実上新しいトークンを生成する。コインベーストランザクションは、「生成トランザクション」とも呼ばれてよく、それらの用語は本願明細書において同義的に使用され得る。コインベースまたは生成トランザクションは、通常のトランザクションと区別される特定の特性を有する。たとえば、各有効ブロックは、1つの生成トランザクションのみを含む。各生成トランザクションは、インプットを持たず(またはインプットフィールドが存在する場合、それはトランザクションに影響を与えない)、統治しているブロックチェーンプロトコルに従い成功したマイナーに起因する次に優勢な(then-prevailing)ブロック報酬により設定された量のトークンのアウトプットを生成する。生成トランザクションは、ブロックをマイニングするのに成功した、つまりproof-of-workを達成したマイニングノードによってのみ生成できるので、「proof-of-workトランザクション」である。
【0033】
少なくとも1つの例示的なブロックチェーンでは、POWを見付けるためにブロックヘッダーをハッシングすることは、ダブルハッシュであり、ここでは表記H2(・)を用いて表現されてよい。いくつかのそのような例では、私用されるハッシュ関数はSHA-256である。他のブロックチェーンネットワークは他のハッシュを使用してよい。
【0034】
近年のブロックチェーンの進展では、「フルノード」は、一般的に、マイニング、検証、ブロックチェーン記憶、および伝播の全部の機能を実行し得るので、理想的であると考えられていた。ブロックチェーンネットワークが成熟するにつれ、マイニング、記憶、検証、および伝播において生じる異なる計算要求が現れている。マイニングは、ハッシングのために膨大な量の計算能力を必要とし、記憶は、膨大な量のディスク空間記憶を必要とし、検証は、非常に高速な計算スループットおよび高速アクセスメモリを必要とし、伝播は、スモールワールドネットワークモデルを実現しようとするために、ブロックチェーンネットワーク内の可能な限り多数の他のノードとの広帯域幅接続を必要とする。これらの機能のうちのいくつかを分離して、特殊化されたノードの構築および動作を通して効率を可能にすることは有利である。しかしながら、機能のいかなる分離も、ブロックチェーンネットワークの分散化された性質を維持するために、第三者の監視またはノード間の信頼された仲介者を必要とするであろうノード間の信頼性問題を導入することを避けるべきである。
【0035】
一態様では、本願は、マイニング機能がマイニングノードにより実行され、たとえば記憶および検証機能のようないくつかの他の機能が非マイニングノードにより実行されるブロックチェーンシステムおよび方法を記載する。いくつかの場合には、非マイニングノードは、検証および伝播機能を実行してよい。いくつかの場合には、非マイニングノードは、検証および記憶機能を実行してよい。いくつかの場合には、非マイニングノードは、マイニング以外のフルノードの全部の機能を実行してよい。そのようなシステムおよび方法では、非マイニングノードは、保留中トランザクションのプールおよびブロックチェーンを格納するか、またはそれにアクセスし、マイニングノードによるマイニングのために1つ以上の候補ブロックを構成する。マイニングノードは、ハッシング演算を実行して、非マイニングノードのうちの1つによりマイニングノードに提供される候補ブロックについてproof-of-workを発見する。非マイニングノードおよびマイニングノードは、必ずしも同じエンティティにより所有され、または制御されない。そのような処理では、非マイニングノードは、ブロックのマイニングに成功するとブロック報酬を取得してよく、非マイニングノードは、ブロックのマイニングが成功したときの自身の役割のためにマイニングノードにリソースを移転してよい。
【0036】
マイニングプロトコル上のセキュリティを維持するため、および悪意あるまたは不正な操作を防ぐために、マイニングプロトコルは、専用マイニングノードおよび個別記憶および検証ノード(つまり非マイニングノード)のような複数のエンティティにより集合的に実行されるよう再構成されてよい。個別ノードの間のマイニング処理の動作の再構成は、非マイニングノードとマイニングノードとの間のアトミック交換(atomic exchange)を保証するよう構造化されてよい。アトミック交換は、第1ノードと第2ノードが、それぞれ、他方のノードにより必要なデータまたはリソースを有し、イベントの発生により相互交換が生じ、その他の場合に生じないものである。交換は、両方のイベントが発生するか(データまたはリソースの相互交換)またはいずれのイベントも発生しないことのみが可能な結果である場合に、アトミックであると考えられる。アトミック交換が生じることを保証するために、ノード、それらの相互作用、および通信処理をどのように構成するかに、重大な技術的課題がある。いくつかの以下の例では、proof-of-work演算の中のダブルハッシュ演算が、知識証明を提供するために利用されてよく、アトミック交換を設定するための前提条件として信頼されてよい。いくつかの場合には、非マイニングノードにより、アトミック交換を確立する少なくとも1つのトランザクションを含むように、候補ブロックが構成されてよく、マイニングノードがマイニングの前にそれを検証できる。
【0037】
用語「非マイニングノード」および「記憶および検証ノード」は、本願明細書において同義的に使用されてよい。
【0038】
1つの例示的な実装では、非マイニングノードは、候補ブロックを多数のマイニングノードに提供する。マイニングノードのうちの1つから、POWの実際の解ではなく、検証可能な成功の証明を確立するメッセージを受信すると、非マイニングノードは、解の開示を条件として成功したマイニングノードにリソースの制御を移転するマイニングトランザクションを生成し、成功したマイニングノードに提供してよい。留意すべきことに、マイニングトランザクションは、マイニングノードが、POW解がマイニングノードにより決定されたことを証明する検証済み知識証明を提供したと決定することに応答して、非マイニングノードによってのみ生成される。
【0039】
ブロックチェーンネットワークが直面する課題の1つは、ネットワークを通じてトランザクションおよびブロックを高速伝播する必要である。これにはノード間の広い帯域幅接続が必須である。いくつかの場合には、帯域幅は制限されることがあり、伝播遅延およびその結果としてネットワーク内でのボトルネックをもたらす。たとえば、中国政府は、中国に出入りするネットワークトラフィックを制御するために使用するファイアーウォールの一部として、特定の帯域幅制限を課す。中国には、POWの課題を解決するために、大規模なハッシュパワーを提供するために構成された多数のマイニング装備が存在する。トランザクションおよびブロックを中国のマイナーに伝播させる際の遅延、および中国国内で成功したマイナーが解決済みPOWと共に完成したブロックを世界のマイナーへと伝播させる際の遅延により、中国に基づくマイニング装備の使用は最適なもとは言えない。いくつかの場合には、ブロックを孤児にする、および/または一時的な分岐を生じる可能性を増大する可能性がある。マイニングノードが低帯域幅接続を有することから生じる問題を緩和する、ブロックチェーントランザクションをマイニングする方法およびシステムを提供することは有利であろう。
【0040】
本願明細書に記載される方法およびシステムは、帯域幅消費の多くを非マイニングノードにオフロードすることにより、マイニングノードに送信される、およびそれから受信されるデータを最小限に抑えるために使用できる。
【0041】
後述するシステムおよび方法のいくつかは、記憶およびマイニング機能を分割することを可能にし、非マイニングノードにより準備されたブロックのPOWを解決するためにマイナーが競争できるマイニング市場を提供する。マイニングノードに完全な候補ブロックを提供する必要はなく、非マイニングノードは、完成したブロックを伝播させるために信頼されてよい。いくつかの場合には、非マイニングノードは、マイニングノードに部分候補ブロックヘッダーを、たとえば、ノンスとタイムスタンプを有しない、Merkleルートおよび他のフィールドを、提供してよい。マイニングノードは、次に、ノンスおよびタイムスタンプを挿入し、POW解の検索において候補ブロックヘッダーをハッシングしてよい。
【0042】
最小帯域幅使用による分離マイニングと検証
次に、
図1を参照する。
図1は、部分ブロックチェーンネットワーク100の一例を図式的に示している。部分ブロックチェーンネットワークは、記憶および検証ノード102(すなわち、非マイニングノード)および複数のマイニングノード104(104a、104b、104c、および104nとして個別にラベル付けされた)を含む。記憶および検証ノード102は、候補ブロックを構築する。これには、Merkleルートを決定し、候補ブロックヘッダーを部分的に完了することが含まれる。候補ブロックヘッダーには、ノンスフィールドとタイムスタンプフィールドが空であってもよい。記憶および検証ノード102は、各マイニングノード104に候補ブロックの少なくともヘッダーを提供し、マイニングノード104は、ノンスおよびタイムスタンプを挿入し、候補ブロックヘッダーをハッシュすることによってPOWを探索する。また、記憶および検証ノード102は、いくつかの実装において、候補ブロックヘッダーと共に、ブロックに含まれるトランザクションのためのTxIDを提供してもよい。いくつかの実施例では、記憶および検証ノード102は、マイニングプールマネージャの役割を実行することができ、各マイニングノード104に対してノンス探索スペースの一部を指定することができる。いくつかの例示的な実装では、記憶および検証ノード102は、ノンス探索空間のいかなる部分も指定せず、マイニングノード104は、解を探索する際に互いに競合し得る。いくつかの例示の実施態様では、1つ以上のマイニングノード104は、マイニングプールである。
【0043】
マイニングノード104のうちの1つがPOW解、すなわち、困難設定よりも小さいダブルハッシュブロックヘッダーを生じるノンスおよびタイムスタンプを見つけた場合、そのマイニングノード104は、記憶および検証ノード102にメッセージを送信する。特に、そのマイニングノード104は、記憶および検証ノード102にブロックヘッダーの単一ハッシュを送信する。次いで、記憶および検証ノード102は、結果が困難設定を満たすことを証明するために単一ハッシュをハッシュし、それにより、マイニングノード104がPOW解を見つけたことを検証する。次いで、記憶および検証ノード102は、リソースに関する制御をマイニングノード104に移転するトランザクションを生成することによって、マイニングノード104とのアトミック交換イベントを生成することができるが、これは、POW解の開示を必要とする条件によってロックされた出力を伴う。
【0044】
成功したマイニングノード104は、トランザクションが有効に見えることを検証し、もしそうであれば、それは記憶および検証ノード102にPOW解を提供し、その後、それはブロックを検証し、ブロードキャストする。
【0045】
記憶および検証ノード102は、POW解の単一ハッシュ、すなわち、H(φ)を受信した。それゆえ、ダブルハッシュがPOW解のダブルハッシュH2(φ)と一致するとき、候補ブロックヘッダーφをノンスとタイムスタンプと共に必要とする、マイナートランザクションのアウトプットに対するロック条件を確立してよい。マイナートランザクションのアウトプットにアクセスするために、マイニングノード104は、それがPOWを解決したとの主張として記憶および検証ノード102に送った知識証明H(φ)の基礎となったブロックヘッダーを開示しなければならない。
【0046】
マイニングノード104は、他のマイナーがブロックをマイニングした後まで、そのPOW解放を保留することができ、それにもかかわらず、現在価値のないPOW解放を行うことによって、マイナートランザクションのアウトプットにアクセスすることができることが理解されよう。しかし、保存および検証ノード102は、複数のマイナーに同じ候補ブロックを提供し、そのそれぞれが解を探索している。第2のマイニングノード104が別のソリューションを提供する場合、記憶および検証ノード102は、次に、同じUTXOを費やす第2のマイニングノード104のための第2のマイナートランザクションを作成する。その解を開示すべき最初のマイニングノード104は、UTXOを制御し、他のマイナートランザクションは無効となる。
【0047】
次に、ブロックチェーンネットワーク上でのマイニング方法200の例を示すフローチャートを示す
図2を参照する。方法200は、記憶および検証ノード(すなわち、非マイニングノード)が、メモプールからのトランザクションを含む候補ブロックを構築する動作202から始まる。候補ブロックは、さらに、記憶および検証ノードの制御に新しいリソースを割り当てる出力を持つ生成(コインベース)トランザクションを含む。動作204では、記憶および検証ノードは、少なくとも候補ブロックヘッダーを複数のマイナーに送信する。「メモプール(mempool)」という用語は、まだマイニング済みブロックに含まれていないブロックチェーンネットワーク内の保留中のトランザクションの集合を指す。フルノード、検証ノード、記憶ノード、または他のタイプのノードのような、ネットワーク内の多数のノードのいずれか1つは、新しいトランザクションがネットワークを通して伝播され、ブロックがマイニングされるにつれて、絶えず更新されるメモプールのコピーを維持することができる。
【0048】
マイニングノードは、採掘難易度設定を満足するダブルハッシュ候補ブロックヘッダーをもたらすPOW解、すなわちノンスとタイムスタンプを探索する。演算208および210によって示されるように、マイニングノードによるハッシュは、それらが解を見つけるまで、または別のマイナーが解を見つけて伝播したことを通知されるまで(同一の候補ブロックに対するものであるか、別の候補ブロックに対するものであるかを問わず)、継続する。
【0049】
マイニングノードの1つが解を見つけた場合、動作212において、マイニングノードは、POW解を含む候補ブロックヘッダーのハッシュを記憶および検証ノードに送信する。記憶および検証ノードは、演算214において、候補ブロックヘッダーのダブルハッシュを再度ハッシングして生成し、その結果が困難設定によって設定された数を下回るかどうかを評価することによって、意図された解が困難な設定を満たすかどうかを評価する。そうでない場合、検索は継続される。
【0050】
POW解が有効であると思われる場合、記憶および検証ノードは、動作216においてマイナートランザクションを生成する。マイナートランザクションは、成功したマイナーに関連する公開鍵によってロックされ、マイニングノードによって供給されるハッシュ候補ブロックヘッダーからの候補ブロックヘッダーを必要とするようにロックされた出力を含む。マイナートランザクションは、マイニング成功ノードに送られる。マイニングノードは、マイナートランザクションが動作218において有効であることを検証し、一旦検証されると、マイニングノードは動作220においてPOW解を開示する。これには、候補ブロックヘッダーを記憶および検証ノードに送信することが含まれる。これには、ノンスおよびタイムスタンプを記憶および検証ノードに送信することが含まれる。次に、記憶および検証ノードは、ブロックチェーンネットワーク上の全ブロックを伝播する。
【0051】
上述の方法は、マイニングノードの1つがPOWに対する解を見つけたことを証明した後に、アトミック交換を行うことを含む。帯域幅制限の技術的問題に対処し、マイニング機能を記憶機能と検証機能から分離できるようにするために、別のアプローチを使用することができる。一態様では、アトミック交換は、マイニング活動の前に確立されてもよい。この態様において、記憶および検証ノードは、特に各マイニングノードのための候補ブロックを構築することができる。各候補ブロックは、そのマイニングノードによってアンロック可能なアウトプットを有する、すなわち、そのマイニングノードに関連する公開鍵によってロックされた、マイナートランザクションを含む。マイニングノードが、proof-of-workを解決する前に、マイナートランザクションを利用することを防止するために、マイナートランザクションへの入力は、同じ候補ブロック内のソーストランザクションであってもよい。これは、マイナートランザクションが、候補ブロックがマイニングされた場合にのみ有効となることを意味する。Merkleツリーの特性は、たとえマイニングノードが完全な候補ブロックのコピーを持っていなくても、候補ブロックが適切に構築され、マイニングトランザクションを含むことをマイニングノードが検証できるようにするために利用される。
【0052】
この態様では、記憶およびマイニングノードは、マイニングノードに、Merkleルートを含む部分的な候補ブロックヘッダーを提供するが、完全なブロック詳細を提供せず、特にソーストランザクションを提供しない。しかし、マイニングノードが、候補ブロックが適切に作成され、マイニング取引を含むことを確認できるようにするために、貯蔵およびマイニングノードは、マイニング取引のコピーと、マイニング取引のためのメルクプルーフ(これは、本明細書ではMerkleパスとも呼ばれる)とをマイニングノードに提供する。マイニングノードが解を見つけると、マイニングノードはその解(ノンスとタイムスタンプ、または、これらの値を含む候補ブロックヘッダー)をストレージと検証ノードに送信する。記憶および検証ノードは、ソリューションが有効であることを検証し、ブロックチェーンネットワーク上でブロックを伝播する。そして、ソーストランザクションとマイナートランザクションの両方がブロックチェーン上で有効になり、マイナートランザクションのアウトプットがマイニングノードで利用できるようになる。
【0053】
以下の説明は、Merkleツリーに関する詳細を提供し、MerkleルートおよびMerkleパスという用語を使用するが、本出願は必ずしもMerkleツリーに限定されるものではない。用語「ペイロードサマリー」は、ペイロードの内容のハッシュである値またはパラメータを実質的に参照するために使用され得、それによってペイロードの内容を証明する。Merkleルートは、ペイロードサマリーの例である。用語「サマリーパス」は、ペイロードサマリーと共に、ペイロードサマリーが生成されたペイロードに含まれる特定のデータ項目を証明するために使用され得るデータを参照するために使用され得る。Merkleパスは、要約パスの例である。
【0054】
システムと方法の例をさらに詳しく説明する前に、Merkleツリーとプルーフについて簡単に説明する。
【0055】
Merkleツリーと校正
図3は、Merkleツリー300の例を示す。格子の各ノードにはインデックスのペア(i,j)が与えられ、N(i,j)として表現される。インデックスi,jは、ツリー内の特定の位置に関係する単なる数値ラベルである。各ノードは、そのインデックス対(i,j)によって参照されることがあり、各ノードは、次式によって与えられる関連値を持つことがある。
【数1】
【0056】
ここで、k=(((i+j-1))/2であり、Hは暗号ハッシュ関数である。
【0057】
i=jの場合はリーフノードに対応し、これは単にデータDiの対応するi番目のブロックのハッシュであることに注意されたい。i´jの場合は、内部ノードまたはルートノードに対応する。これは、特定のノードまたはルートに到達するまでツリー内の子ノードを再帰的にハッシュして連結することによって生成される。
【0058】
Merkleツリーの構築には、暗号ハッシュ関数の使用が必要である。一般に、ハッシュ関数は、以下の特性を持つ場合、暗号的に安全であるとみなされる:
【0059】
1)プレイメージ耐性:h=H(m)が与えられた場合、mを求めるのは計算上困難である;
【0060】
2)第2のプレイメージ耐性:h=H(m)およびmが与えられた場合、H(m')=hとなるようにm'を求めることは計算上困難である;
【0061】
3)耐衝突性-H(m)=H(m')となるようなメッセージmとm'のペアを見つけることは計算上困難である。
【0062】
トランザクション識別子TxIDは、このようなハッシュ関数を使用して生成されるため、識別子は、ハッシュ関数のダイジェストのプロパティを継承する。MerkleツリールートがTxIDと非常に似た特性を持つことを示すことができる。
【0063】
多くのアプリケーションにおけるMerkleツリーの主な機能は、何らかのデータブロックDiがN個のデータブロックのリストまたは集合D∈{D1,…,DN}の要素であることの証明を実現することである。Merkleルートおよび候補データブロックDiが与えられた場合、これは、集合内のブロックの「存在証明」として扱うことができる。
【0064】
このような証明のためのメカニズムは、Merkleプルーフとして知られており、与えられたデータブロックDiとMerkleルートRに対してMerkleパスとして知られているハッシュの集合を得ることを含む。データブロックのMerkleパスは、繰り返しハッシングと連結によってルートRを再構成するために必要なハッシュの最小集合であり、データブロックの認証パスと呼ばれることもある。
【0065】
すべてのブロックD1,…,DNが証明者に知られていれば、存在証明は簡単に実行できる。しかし、これには、Merkleパスよりもはるかに大きな記憶オーバーヘッドが必要である。また、データセット全体が証明者に使用可能である必要がある。
【0066】
MerkleルートRから始めると、データブロックD1が、以下の例示的な処理を用いて、集合D∈{D1,…,DN}に属することが証明される:
【0067】
1) MerkleルートRとMerkleパスΓを取得する。この場合、Γはハッシュの集合である:Γ={N(2,2),N(3,4),N(5,8)}
【0068】
2) D1とΓを用いて次のようにMerkleプルーフを計算する:
【0069】
(a) データブロックをハッシュ(または実装に依存して、ダブルハッシュ)して、N(1,1)=H(D1)を得る;
【0070】
(b) N(2,2)とハッシュを連結し、N(1,2)=H(N(1,1)||N(2,2))を得る;
【0071】
(c) N(3,4)とハッシュを連結し、N(1,4)=H(N(1,2)||N(3,4))を得る;
【0072】
(d) N(5,8)とハッシュを連結し、ルート:R'=N(1,8)=H(N(1,4)||N(5,8))を得る;
【0073】
(e) 計算されたルートR'とルートR'を比較する。R'=Rの場合、データブロックD1はツリーの中にある。
【0074】
与えられたブロックD1とルートRに対してMerkleプルーフを実行することは、必要なハッシュ値の最小数のみを使用することによって、Merkleツリーを「上向き」に効果的に移動させる。
【0075】
セキュアな共生マイニングのための方法および装置
以下の例では、記憶および検証ノードおよびマイニングノードは、いずれかのマイニング活動に従事する前にアトミック交換を確立する。これらの例では、記憶および検証ノードが作成する候補ブロックは、そのマイニングノードに固有である。候補ブロックは、リソースに対する制御をマイニングノードに移転するマイニングトランザクションを含む。しかしながら、マイナートランザクションへの入力は候補ブロック内でもソーストランザクションであり、一般にブロックチェーンネットワーク上ではブロードキャストされていない。マイニングノードは、フル候補ブロックを提供されておらず、特にフルソーストランザクションを提供されていません。これは、候補ブロック自体がマイニングされない限り、すなわち、候補ブロックのためにPOWを見つけることに成功しない限り、マイニングノードがマイニング取引を行うことを妨げる。
【0076】
マイニングに従事する前に、マイニングノードは、Merkleルートを含む記憶および検証ノードから部分的に候補となるブロックヘッダーを受信する。また、マイナートランザクションの少なくとも一部とマイナートランザクションのMerkleパスを受け取る。この受信データから、マイニングノードは、Merkleプルーフを実行することによって、マイナートランザクションが候補ブロックに含まれることを検証する。
【0077】
ここで、
図4を参照し、これは、フローチャート形式で、分離されたマイニングおよび検証ノードを使用するブロックチェーンネットワークにおけるマイニングの例示的な方法400を示す。
図4に示す操作の一部は、記憶および検証ノードによって実行され、一部の操作は、マイニングノードによって実行される。ストレージノードと検証ノードは、少なくとも1つのマイニングノードにネットワーク接続できる。
【0078】
動作402において、記憶および検証ノードは、マイニングノードのうちの1つのための部分的な候補ブロックを構築する。場合によっては、個別のマイニングノードのために、複数の候補ブロックを構築することができる。いくつかの実装では、候補ブロックは、各マイナーに固有であるマイナートランザクションを除き、同一のトランザクションを含む。候補ブロックの構築の一環として、記憶および検証ノードは、ブロックのMerkleルートを計算し、部分的に完全な候補ブロックヘッダーにMerkleルート値を記録する。候補ブロックヘッダーは、バージョン、前のブロックハッシュ、Merkleルート、およびnBits値を含むが、タイムスタンプとノンスを含んでいない部分的な候補ブロックヘッダーである。
【0079】
【数2】
は完全で有効なブロックに、
【数3】
は不完全な部分候補ブロックに用いることができ、タイムスタンプTxおよびノンスXの形式での有効なproof-of-work解が欠けている。同様に、ブロックヘッダーを表すために、表記φを用いてもよく、部分的な候補ブロックヘッダーの表記φ*を用いてもよい。
【0080】
候補ブロックヘッダーは、記憶および検証ノードの公開鍵に関連付けられたアウトプットを持つ生成(コインベース)トランザクションを含む。換言すれば、生成トランザクションは、リソース(たとえば、ブロック報酬)を記憶および検証ノードに割り当てる。いくつかのブロックチェーンプロトコルは、生成トランザクションによって割り当てられたリソースは、一般的にブロック高で測定される生成後の一定期間、移転できないことを規定していることが理解されるであろう。これは、場合によっては「コインベース満期(coinbase maturity)」と呼ばれることがある。
【0081】
候補ブロック内のマイナートランザクションは、そのマイナートランザクションおよび候補ブロックに関連するマイニングノードのための公開鍵を使用してロックされた出力を含む。マイナートランザクションへの入力は、候補ブロックに含まれるソーストランザクションの出力である。ソーストランザクションのアウトプットは、記憶および検証ノードによって制御される。このノードは、マイナートランザクションへのインプットにデジタル署名する。注目すべきことに、ソーストランザクションはブロックチェーンネットワークのためのメモプールに含まれておらず、他の方法では公開されていない。これは、記憶および検証ノードの候補ブロックの1つが正常にマイニングされた場合にのみブロードキャストされる。これは、記憶および検証ノードの候補ブロックの1つがマイニングされないか、または、マイニングノードがその候補ブロックのマイニングに成功することなく、マイニングノードが単純にそのマイニングトランザクションをブロックチェーンネットワーク上でブロードキャストすることを妨げるまで、マイニングトランザクションのいずれかからのインプットが有効であることを妨げる。
【0082】
動作404において、記憶および検証ノードは、部分候補ブロックヘッダー、その候補ブロックからのマイナートランザクションのコピー、およびマイナートランザクションのためのMerkleパスを、マイニングノードに送信するので、マイニングノードは、マイナートランザクションを利用可能にする。
【0083】
マイニングノードは、動作406において、受信した候補ブロックヘッダーに関連付けられた候補ブロックに、マイナートランザクションが含まれることを検証する。これは、マイナートランザクションとそのMerkleパスを用いてMerkleプルーフを決定することによって行われる。両者は、記憶ノードと検証ノードから受け取ることができる。Merkleプルーフは、部分候補ブロックヘッダーに含まれるMerkleルートに一致する値になるはずである。もしそうなら、そしてマイナートランザクションがマイニングノードの公開鍵に関連するアウトプットを有するなら、マイニングノードは提供された部分的な候補ブロックヘッダーが正しく構築されていることを検証する。
【0084】
いくつかの実装では、格納ノードと検証ノードは、ソーストランザクションのハッシュとソーストランザクションのMerkleパス:H(TSource)、Γ(R,TSource)をマイニングノードに提供してもよい。特に、それは、それがセキュリティを損なわないように、実際のソーストランザクションを提供しない。しかし、マイニングノードは、依然として、ソーストランザクションのMerkleプルーフを決定することによって、マイナートランザクションへの入力が候補ブロックに存在することを検証することができる。トランザクションのTXIDがそのトランザクションのハッシュによって与えられることを思い出してほしい。従って、マイニングノードは、実際のソーストランザクションを有しないが、そのトランザクションのハッシュを有し、従って、ソーストランザクションが、マイナートランザクションへのインプットにおいて適切に参照され、かつ、それが候補ブロック内に存在することを検証することができる。
【0085】
従って、たとえ記憶および検証ノードがソーストランザクションのハッシュおよびそのMerkleパスをマイニングノードに提供するとしても、それがマイニングノードに送るデータの量は、全候補ブロックを送ることと比較して非常に小さい。送信されたデータは、次式を用いて表すことができる:
【数4】
【0086】
動作408において、受信データを検証した後、マイニングノードは、候補ブロックのためのPOWの探索に従事し、すなわち、部分候補ブロックヘッダーにノンスとタイムスタンプを挿入し、管理ブロックチェーンプロトコルに従ってそれをハッシュして、採掘難易度閾値より少ない値を見つけようとする。演算410および412によって示されるように、他のエンティティがブロックを見つけるまで、またはマイニングノードが成功するまで、反復されたノンス値およびタイムスタンプを持つ候補ブロックヘッダーのハッシュを継続する。
【0087】
マイニングノードがPOWを見つけることに成功すると、動作414において、解、たとえばノンスおよびタイムスタンプ、または、同等に、完全なブロックヘッダーを記憶および検証ノードに送る。記憶および検証ノード416は、解が正当であることを迅速に検証し、次いで、ブロックチェーンネットワーク上の新しいブロックをブロードキャストする。
【0088】
新しいブロックを発見した結果、記憶および検証ノードの生成トランザクションが組み込まれ、これは、記憶および検証ノードにブロック報酬を割り当てる。ソーストランザクションおよびマイナートランザクションも組み込まれており、これは、マイナートランザクションへのインプットを満たすためのリソースを提供し、かつ、マイニングノードの公開鍵を使用してロックされているマイナートランザクションへのアウトプットのために、リソースに対する制御をマイニングノードに移転する。
【0089】
記憶および検証ノードとマイニングノードとの間の全体的な相互作用は、アトミック交換であることが理解されよう。2つのノード間には、双方向の情報の非対称性が確立されている。非対称性は、proof-of-workが見つかり、記憶および検証ノードに提供されると、アトミックに解決される。この双方向の情報の非対称性は、Merkleツリーの注意深い構築によって実際に達成される。MerkleツリーのルートRは、不完全ブロックヘッダー「φ*」に存在する。
【0090】
上記の例示的なプロセスは、マイニング機能と記憶/検証機能の分割を可能にする。このようにして分割を可能にすることにより、帯域幅の小さい接続性を有するエリアにマイニングノードが位置することを可能にする。また、情報の非対称性が、どちらのノードも他のノードを利用または詐欺することがないように構造化されているため、第三者の信頼を必要とせずに、保存および検証ノードがマイニングノードから独立して動作することができることを意味する。
【0091】
次に、
図5を参照し、これは、簡略化された例示的なブロックチェーンネットワーク500を図式的に示す。この単純化された例におけるネットワーク500は、記憶および検証ノード502およびマイニングノード504を含む。記憶および検証ノード502は、高帯域幅高速ネットワーク接続によって相互接続されることが理解されるであろう。この例における記憶および検証ノード502は、スモールワールドネットワークを実現するために十分に良好に接続されている。マイニングノード504は、それぞれ、少なくとも1つの記憶および検証ノード502に接続される。マイニングノード504と格納および検証ノード502との間の接続は、これらの接続を介したデータ通信の量が比較的少ないので、必ずしも高帯域幅の接続ではない。
【0092】
ある場合には、1つ以上のマイニングノード504を少なくとも2つの記憶および検証ノード502に接続することができる。これにより、マイニングノード504は、記憶および検証ノード502の一方に代わってマイニングのためのハッシュパワーを提供することができ、それにより、マイニングノード504は、それぞれの候補ブロックに含まれるマイナートランザクションに関して、記憶および検証ノード502からの競合するオファーを評価することができる。同様に、記憶および検証ノード502は、複数の可能なマイニングノード504からのマイニングへの参加を勧誘するために複数のマイニングノード504に接続されてもよい。これは、記憶および検証ノード502によって提供されるマイナートランザクションに反映される市場競争を実質的に生み出すことができる。
【0093】
マイニングノード504と記憶および検証ノード502との間の広帯域幅接続の必要性がないため、記憶および検証ノード502は、他の記憶および検証ノード502への広帯域低遅延接続のような、その機能を満たすために利用可能なリソースが最も良好な場所に配置され得る。マイニングノード504は、記憶および検証ノード502と同一に配置される必要なく、大規模マイニングリグを稼働させるための豊富な低コストの電力のような、それらのニーズに最も適合するリソースが利用可能な場所に配置され得る。
【0094】
図6を参照すると、本願の例に従う、簡易コンピューティング装置600をブロック図の形式で示す。コンピューティング装置600は、上述の機能のうちの1つ以上を実行してよい。いくつかの例では、計算装置600は、マイニングノードであってもよい。いくつかの例において、計算装置600は、記憶および検証ノードであってもよい。
【0095】
コンピューティング装置600は、1つ以上のマイクロプロセッサ、特定用途向け集積回路(ASIC)、マイクロコントローラ、または同様のコンピュータ処理装置を含んでよいプロセッサ602を含む。コンピューティング装置600は、値、変数、およびいくつかの例ではプロセッサ実行可能プログラム命令を格納するための永久および非永久メモリを含んでよいメモリ604と、ネットワークインターフェース606と、をさらに含んでよい。
【0096】
コンピューティング装置600は、実行されるとプロセッサ602に本願明細書に記載の機能または動作のうちの1つ以上を実行させるプロセッサ実行可能命令を含むプロセッサ実行可能アプリケーション608を含んでよい。
【0097】
上述の種々の実施形態は、単なる例であり、本願の範囲を限定することを意味しない。本願の意図された範囲内にある変形のように、ここに記載された種々の技術革新は、当業者に明らかである。特に、上述の例示的な実施形態のうちの1つ以上からの特徴は、以上に明示的に示されない特徴の部分結合を含む代替の例示的な実施形態を生成するために選択されてよい。さらに、上述の例示的な実施形態のうちの1つ以上からの特徴は、以上に明示的に示されない特徴の結合を含む代替の例示的な実施形態を生成するために選択され結合されてよい。このような結合および部分結合に適する特徴は、本願の全体的に吟味することにより当業者に直ちに明らかになるだろう。本願明細書および請求項に記載された主題は、あらゆる適切な技術的変更をカバーし包含する。