(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-11-08
(54)【発明の名称】マイニングプールにおいてプルーフ・オブ・ワークの寄与を追跡及び測定するための方法及びデバイス
(51)【国際特許分類】
H04L 9/32 20060101AFI20221031BHJP
【FI】
H04L9/32 200Z
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2022514700
(86)(22)【出願日】2020-09-02
(85)【翻訳文提出日】2022-04-27
(86)【国際出願番号】 IB2020058175
(87)【国際公開番号】W WO2021044313
(87)【国際公開日】2021-03-11
(32)【優先日】2019-09-06
(33)【優先権主張国・地域又は機関】GB
(81)【指定国・地域】
(71)【出願人】
【識別番号】522084636
【氏名又は名称】エヌチェーン ライセンシング アーゲー
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】マッケイ,アレグザンダー
(72)【発明者】
【氏名】ヴォーン,オーウェン
(57)【要約】
マイニングプール内のマイニングデバイスからのプルーフ・オブ・ワークの寄与を追跡するための方法及びデバイスである。マイニングプールは、ブルームフィルタを記憶するプールマスター計算デバイスを含む。ブルームフィルタは、プルーフ・オブ・ワークの探索中にマイニングデバイスからの定期的なレポートに基づいて、部分的プルーフ・オブ・ワーク基準を満たす候補ブロックヘッダ情報を記憶する。マイニングデバイスの1つから新たな候補ブロックヘッダ情報を受信すると、プールマスターは、その情報を使用して候補ブロックヘッダを構築し、それが既にブルームフィルタに記憶されているか否かを評価する。そうでない場合、ブロックヘッダをブルームフィルタに記憶する。そうである場合、報告したマイニングデバイスに関連付けて不良ハッシュを記録する。
【特許請求の範囲】
【請求項1】
マイニングプール内のマイニングデバイスからのプルーフ・オブ・ワークの寄与を追跡するコンピュータ実施方法であり、前記マイニングプールは、ブルームフィルタを記憶するプールマスター計算デバイスを有する、方法であって、
前記プール内の第1のマイニングデバイスから候補ブロックヘッダ情報を受信するステップと、
前記候補ブロックヘッダ情報に基づいて候補ブロックヘッダを構築するステップと、
前記候補ブロックヘッダが前記ブルームフィルタに記憶されていないと決定するステップと、
前記ブルームフィルタが前記候補ブロックヘッダを含まないという決定に基づいて、前記候補ブロックヘッダを前記ブルームフィルタに記憶するように前記ブルームフィルタを更新するステップと
を含む方法。
【請求項2】
前記候補ブロックヘッダ情報は、ナンス値を含み、
構築するステップは、
前記ナンス値を前記候補ブロックヘッダに挿入するステップを含む、請求項1に記載の方法。
【請求項3】
前記候補ブロックヘッダ情報は、コインベーストランザクションデータを含み、
前記候補ブロックヘッダを構築するステップは、
前記コインベーストランザクションデータに部分的に基づいて、マークルツリーを構築するステップと、
前記マークルツリーに基づいて、前記候補ブロックヘッダのマークルルートフィールドに入力するステップと
を含む、請求項1又は2に記載の方法。
【請求項4】
前記ブルームフィルタはビット配列を含み、
前記候補ブロックヘッダが前記ブルームフィルタに記憶されていないと決定するステップは、
k個のビット位置を識別するためにk個のハッシュ関数を使用して前記候補ブロックヘッダをハッシュ演算するステップと、
前記ビット配列内の前記k個のビット位置のうち少なくとも1つがゼロに設定されると決定するステップと
を含む、請求項1乃至3のうちいずれか1項に記載の方法。
【請求項5】
k個のハッシュ関数を使用してハッシュ演算するステップは、
1つのハッシュ関数を使用して、前記候補ブロックヘッダをk回繰り返しハッシュ演算するステップを含む、請求項4に記載の方法。
【請求項6】
前記ブルームフィルタを更新するステップは、
前記k個のビット位置において前記ビット配列のビットを1に設定するステップを含む、請求項4又は5に記載の方法。
【請求項7】
前記プール内の第2のマイニングデバイスから第2の候補ブロックヘッダ情報を受信するステップと、
前記第2の候補ブロックヘッダ情報に基づいて第2の候補ブロックヘッダを構築するステップと、
前記第2の候補ブロックヘッダが前記ブルームフィルタに記憶されている可能性が高いと決定するステップと、
前記ブルームフィルタが前記第2の候補ブロックヘッダを含む可能性が高いという決定に基づいて、前記第2のマイニングデバイスに関連する無効な候補ブロックのカウントをインクリメントするステップと
を更に含む、請求項1乃至6のうちいずれか1項に記載の方法。
【請求項8】
前記ブルームフィルタはビット配列を含み、
前記第2の候補ブロックヘッダが前記ブルームフィルタに記憶されている可能性が高いと決定するステップは、
k個のビット位置を識別するためにk個のハッシュ関数を使用して前記第2の候補ブロックヘッダをハッシュ演算するステップと、
前記ビット配列内の前記k個のビット位置の全てが1に設定されていると決定するステップと
を含む、請求項7に記載の方法。
【請求項9】
ハッシュ結果を生成するために前記候補ブロックヘッダをハッシュ演算するステップと、
前記ハッシュ結果を第2の難易度パラメータによって設定された高い方の閾値と比較するステップと、
前記ハッシュ結果が前記高い方の閾値未満であると決定するステップと
を更に含む、請求項1乃至8のうちいずれか1項に記載の方法。
【請求項10】
前記第1のマイニングデバイスからの候補ブロックヘッダ情報を含む2つ以上の部分的プルーフ・オブ・ワークのレポートの間の受信時間が、目標期間から閾値量よりも多く逸脱すると決定するステップと、
これに基づいて、前記第2の難易度パラメータを調整し、前記調整された第2の難易度パラメータを前記第1のマイニングデバイスに送信するステップと
を更に含む、請求項9に記載の方法。
【請求項11】
有効ブロックが前記マイニングプールによって見つけられたと決定するステップと、
前記第1のマイニングデバイスに関連する第2の難易度パラメータ、
前記有効ブロックをマイニングする間の前記第1のマイニングデバイスに関連する第2の難易度パラメータの履歴、又は
前記有効ブロックをマイニングする間の前記第1のマイニングデバイスから受信した部分的プルーフ・オブ・ワークのレポートのカウント
のうち1つ以上に基づいて、前記第1のマイニングデバイスに割り当てられたブロック報酬のシェアを決定するステップと
を更に含む、請求項1乃至10のうちいずれか1項に記載の方法。
【請求項12】
前記マイニングプール内の各マイニングデバイスに関連する不良ハッシュのカウントを決定するステップと、
それぞれのマイニングデバイスに関連する前記不良ハッシュのカウントに基づいて各マイニングデバイスに割り当てられたブロック報酬の相対的シェアを調整するステップと
を更に含む、請求項1乃至11のうちいずれか1項に記載の方法。
【請求項13】
特定のマイニングデバイスについての前記不良ハッシュのカウントは、前記特定のマイニングデバイスが高い方の閾値を下回るハッシュ値を生じない候補ブロックヘッダ情報、又は前記ブルームフィルタに既に記憶されていると決定された候補ブロックヘッダ情報を送信したとき、1だけインクリメントされる、請求項12に記載の方法。
【請求項14】
マイニングプール内のマイニングデバイスからのプルーフ・オブ・ワークの寄与を追跡するためのプールマスター計算デバイスであって、
1つ以上のプロセッサと、
ブルームフィルタを記憶するメモリと、
前記1つ以上のプロセッサによって実行されると、前記プロセッサに請求項1乃至13のうちいずれか1項に記載の方法を実行させる、前記メモリに記憶されたコンピュータ実行可能命令と
を含む計算デバイス。
【請求項15】
マイニングプール内のマイニングデバイスからのプルーフ・オブ・ワークの寄与を追跡するためのプロセッサ実行可能命令を記憶したコンピュータ読み取り可能媒体であって、
前記マイニングプールは、ブルームフィルタを記憶するプールマスター計算デバイスを有し、
前記プロセッサ実行可能命令は、1つ以上のプロセッサによって実行されると、前記プロセッサに請求項1乃至13のうちいずれか1項に記載の方法を実行させる命令を含む、コンピュータ読み取り可能媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ブロックチェーンネットワークに関し、特にマイニングプールに関する。
【背景技術】
【0002】
マイニングノード(又は「マイナー(miner)」)はブロックチェーンネットワークの重要な要素である。「プルーフ・オブ・ワーク(proof-of-work)」のブロックチェーンネットワークでは、マイニングノードは、ブロックをマイニングする競争に「勝つ」ためにプルーフ・オブ・ワークを完成させるために競争し、それによって、トランザクション料と、新たなブロック内のコインベーストランザクションに反映されるいずれかの新たにマイニングされたトークンとを収集する。このように、マイナーはネットワークを安全にし、トランザクションが有効であり且つ全ての参加ノードが主流となっているブロックチェーンプロトコルに準拠することを確保する。
【0003】
ネットワーク規模及びプルーフ・オブ・ワークの探索が計算上より困難になるにつれて、マイニングプールがより一般的になり、場合によっては数万又は数十万又は数百万のマイニングデバイスが関与する。これらの相対的な寄与を測定するために、これらのマイニングデバイスの活動を正確且つ確実に追跡することは、重要な課題である。プルーフ・オブ・ワークを解決することに寄与したハッシュパワー(hashpower)を測定するシステムは、実際に寄与しているものよりも多くのハッシュパワーを請求することを試みる悪意のあるデバイスと、探索中に動作しているが実質的な寄与を行うことができない不完全なデバイスとの可能性に対処する必要がある。
【図面の簡単な説明】
【0004】
次に、例として、本出願の例示的な実施形態を示す添付の図面を参照する。
【
図2】例示的なブルームフィルタと、データが既にブルームフィルタに記憶されているか否かを決定するプロセスとを示す。
【
図3】マイニングデバイスからのプルーフ・オブ・ワークの寄与を追跡する1つの例示的な方法をフローチャート形式で示す。
【
図4】マイニングデバイスからのプルーフ・オブ・ワークの寄与を追跡する他の例示的な方法をフローチャート形式で示す。
【
図5】マイニングノードのような計算ノードの簡略化した例をブロック図の形式で示す。 図面において、同様の要素及び特徴を示すために、同様の参照符号が使用される。
【発明を実施するための形態】
【0005】
一態様では、マイニングプール内のマイニングデバイスからのプルーフ・オブ・ワークの寄与を追跡するコンピュータ実施方法が提供されてもよく、マイニングプールは、ブルームフィルタを記憶するプールマスター計算デバイスを有する。当該方法は、プール内の第1のマイニングデバイスから候補ブロックヘッダ情報を受信するステップと、候補ブロックヘッダ情報に基づいて候補ブロックヘッダを構築するステップと、候補ブロックヘッダがブルームフィルタに記憶されていないと決定するステップと、ブルームフィルタが候補ブロックヘッダを含まないという決定に基づいて、候補ブロックヘッダをブルームフィルタに記憶するようにブルームフィルタを更新するステップとを含んでもよい。
【0006】
いくつかの実装では、候補ブロックヘッダ情報は、ナンス値を含んでもよく、構築するステップは、ナンス値を候補ブロックヘッダに挿入するステップを含んでもよい。いくつかの場合、候補ブロックヘッダ情報は、コインベーストランザクションデータを含んでもよく、候補ブロックヘッダを構築するステップは、コインベーストランザクションデータに部分的に基づいて、マークルツリー(merkle tree)を構築するステップと、マークルツリーに基づいて、候補ブロックヘッダのマークルルートフィールドに入力するステップとを含んでもよい。
【0007】
いくつかの実装では、ブルームフィルタはビット配列を含んでもよく、候補ブロックヘッダがブルームフィルタに記憶されていないと決定するステップは、k個のビット位置を識別するためにk個のハッシュ関数を使用して候補ブロックヘッダをハッシュ演算するステップと、ビット配列内のk個のビット位置のうち少なくとも1つがゼロに設定されると決定するステップとを含んでもよい。いくつかの場合、k個のハッシュ関数を使用してハッシュ演算するステップは、1つのハッシュ関数を使用して、候補ブロックヘッダをk回繰り返しハッシュ演算するステップを含んでもよい。いくつかの場合、ブルームフィルタを更新するステップは、k個のビット位置においてビット配列のビットを1に設定するステップを含んでもよい。
【0008】
いくつかの実装では、当該方法は、プール内の第2のマイニングデバイスから第2の候補ブロックヘッダ情報を受信するステップと、第2の候補ブロックヘッダ情報に基づいて第2の候補ブロックヘッダを構築するステップと、第2の候補ブロックヘッダがブルームフィルタに記憶されている可能性が高いと決定するステップと、ブルームフィルタが第2の候補ブロックヘッダを含む可能性が高いという決定に基づいて、第2のマイニングデバイスに関連する無効な候補ブロックのカウントをインクリメントするステップとを含んでもよい。いくつかの場合、ブルームフィルタはビット配列を含んでもよく、第2の候補ブロックヘッダがブルームフィルタに記憶されている可能性が高いと決定するステップは、k個のビット位置を識別するためにk個のハッシュ関数を使用して第2の候補ブロックヘッダをハッシュ演算するステップと、ビット配列内のk個のビット位置の全てが1に設定されていると決定するステップとを含んでもよい。
【0009】
いくつかの実装では、当該方法は、ハッシュ結果を生成するために候補ブロックヘッダをハッシュ演算するステップと、ハッシュ結果を第2の難易度パラメータによって設定された高い方の閾値と比較するステップと、ハッシュ結果が高い方の閾値未満であると決定するステップとを含んでもよい。当該方法はまた、第1のマイニングデバイスからの候補ブロックヘッダ情報を含む2つ以上の部分的プルーフ・オブ・ワークのレポートの間の受信時間が、目標期間から閾値量よりも多く逸脱すると決定するステップと、これに基づいて、第2の難易度パラメータを調整し、調整された第2の難易度パラメータを第1のマイニングデバイスに送信するステップとを含んでもよい。
【0010】
いくつかの実装では、当該方法は、有効ブロックがマイニングプールによって見つけられたと決定するステップと、第1のマイニングデバイスに関連する第2の難易度パラメータ、有効ブロックをマイニングする間の第1のマイニングデバイスに関連する第2の難易度パラメータの履歴、又は有効ブロックをマイニングする間の第1のマイニングデバイスから受信した部分的プルーフ・オブ・ワークのレポートのカウントのうち1つ以上に基づいて、第1のマイニングデバイスに割り当てられたブロック報酬のシェアを決定するステップとを含んでもよい。
【0011】
いくつかの実装では、当該方法は、マイニングプール内の各マイニングデバイスに関連する不良ハッシュのカウントを決定するステップと、それぞれのマイニングデバイスに関連する不良ハッシュのカウントに基づいて各マイニングデバイスに割り当てられたブロック報酬の相対的シェアを調整するステップとを含んでもよい。いくつかの場合、特定のマイニングデバイスについての不良ハッシュのカウントは、特定のマイニングデバイスが高い方の閾値を下回るハッシュ値を生じない候補ブロックヘッダ情報、又はブルームフィルタに既に記憶されていると決定された候補ブロックヘッダ情報を送信したとき、1だけインクリメントされる。
【0012】
他の態様では、ネットワーク内のノードを実装する計算デバイスが提供されてもよい。計算デバイスは、メモリと、1つ以上プロセッサと、実行されると、プロセッサに本明細書に記載の方法のうち1つ以上を実行させるコンピュータ実行可能命令とを含んでもよい。メモリは、ブルームフィルタを記憶してもよい。
【0013】
更に他の態様では、ネットワーク内のノードを動作させるためのプロセッサ実行可能命令を記憶するコンピュータ読み取り可能媒体が提供されてもよく、プロセッサ実行可能命令は、1つ以上のプロセッサによって実行されると、プロセッサに本明細書に記載の方法のうち少なくとも1つを実行させる命令を含む。
【0014】
本開示の他の例示的な実施形態は、図面と共に以下の詳細な説明を検討することから当業者に明らかになる。
【0015】
本出願において、「及び/又は」という用語は、必ずしも更なる要素を除外することなく、列挙された要素の単独のいずれか1つ、いずれかのサブコンビネーション、又は全ての要素を含み、列挙された要素の全ての可能な組み合わせ及びサブコンビネーションをカバーすることを意図している。
【0016】
本出願において、「・・・又は・・・のうち少なくとも1つ」という語句は、必ずしも更なる要素を除外することなく、また必ずしも全ての要素を必要とすることなく、列挙された要素の単独のいずれか1つ、いずれかのサブコンビネーション、又は全ての要素を含み、列挙された要素のいずれか1つ以上をカバーすることを意図している。
【0017】
本出願は、ハッシュ演算又はハッシュ関数を参照する。これは、データ又は「メッセージ」の任意のセットに適用されたとき、固有の固定長の英数字列を決定論的に生成する多数の暗号ハッシュ関数のうちいずれか1つを含むことを意図している。ハッシュ関数の結果は、ハッシュ値、フィンガープリント、ハッシュ結果等と呼ばれてもよい。例は、SHA-2、SHA-3及びBLAKE2を含むが、これらに限定されない。
【0018】
本文書では、「ブロックチェーン(blockchain)」という用語は、全ての形式の電子的なコンピュータベースの分散型台帳を含むと理解される。これらは、コンセンサスベースのブロックチェーン及びトランザクションチェーン技術、プライベート型(permissioned)及びパブリック型(un-permissioned)台帳、共有台帳、並びにこれらの変形を含む。例示的な目的で、例示的なブロックチェーンプロトコルが以下で議論されることがあるが、本出願は、いずれかの特定のブロックチェーン又はブロックチェーンプロトコルと共に使用することに限定されず、代替のブロックチェーン実装及びプロトコルも、本出願の範囲内に入る。
【0019】
ブロックチェーンは、コンピュータベースの非集中型の分散システムを使用して実装されるピアツーピアの電子台帳である。ブロックチェーンはブロックから構成され、次に、ブロックはトランザクションから構成される。各トランザクションは、他の可能な情報の中でも、ブロックチェーンシステム内の参加者の間でデジタル資産の制御の移転を符号化するデータ構造であり、少なくとも1つのインプット及び少なくとも1つのアウトプットを含む。各ブロックヘッダは、マークルルート(Merkle root)の形式のように、ブロックの内容の要約を含み、各ブロックヘッダは、前のブロックヘッダのハッシュを含み、それにより、ブロックが一緒に繋げられて、ブロックチェーンの開始以降にブロックチェーンに書き込まれた全てのトランザクションの永続的で変更不能なレコードを作成する。トランザクションは、インプット及びアウトプットに埋め込まれたスクリプトとして知られる小さいプログラムを含み、スクリプトは、トランザクションのアウトプットがどのようにどのような条件でアクセスできるかを指定する。いくつかのプラットフォームでは、これらのスクリプトはスタックベースのスクリプト言語を使用して記述される。
【0020】
ブロックチェーンは、ノードのネットワーク上に実装される。各ノードは、ネットワーク接続を有し且つ適用可能なブロックチェーンプロトコルを実行するソフトウェアを実行する計算デバイスである。ノードはトランザクションを検証し、これらをネットワーク内の他のノードに伝搬する。「マイニングノード(mining node)」又は「マイナー(miner)」と呼ばれる特別なネットワークノードは、未確認トランザクション、すなわち、保留中のトランザクションのセットをブロックに収集し、ブロックを「マイニング」することを試みる。これらの例においてマイニングは、ネットワーク内のいずれかの他のマイナーがそれぞれのブロックについてのプルーフ・オブ・ワーク(proof-of-work, POW)を解決することに成功する前に、プルーフ・オブ・ワークを解決することを示す。いくつかの例では、POWは、ハッシュの結果が、難易度パラメータによって設定された閾値を下回るまで、ナンスを含むブロックヘッダをハッシュ演算することを含む。結果が閾値を下回るまで或いは他のマイナーが成功したという通知をマイナーが受信するまで、ナンスは繰り返しインクリメントされ、ハッシュ演算が繰り返される。マイニングプロセスにおける変形は、当業者にとって周知である。
【0021】
上記のように、マイニングノードはブロックチェーンネットワークを安全にするための鍵である。マイニングノードは、有効な新たなブロックを見つけるための競争に勝ったとき、その作業を補償される。補償は、個々のトランザクションからのトランザクション料と、新たなブロックに含まれる「コインベース(coinbase)」トランザクションとから得られる。コインベーストランザクションはインプットを有さず(或いはより適切には、空若しくはヌルのインプットフィールドを有し)、所定量のトークン(例えば、コイン)をマイナーにアウトプットし、効果的に新たなトークンを作成する。コインベーストランザクションはまた、「ジェネレーショントランザクション(generation transaction)」とも呼ばれてもよく、これらの用語は、本明細書では互換的に使用されてもよい。コインベース又はジェネレーショントランザクションは、通常のトランザクションとは異なる特定の特徴を有する。例えば、各有効ブロックは、1つのジェネレーショントランザクションのみを含む。各ジェネレーショントランザクションは、インプットを受け取らず(或いは、インプットフィールドは、存在する場合でも、トランザクションに影響せず、使用されない)、統制するブロックチェーンプロトコルに従って成功したマイナーのために、その時点の相場(then-prevailing)のブロック報酬によって設定された量のトークンのアウトプットを生成する。ジェネレーショントランザクションは、ブロックを成功してマイニングしたマイニングノード、すなわち、プルーフ・オブ・ワークを完成させたマイニングノードによってのみ生成できるので、「プルーフ・オブ・ワーク・トランザクション」である。
【0022】
ブロックチェーンネットワークが拡大するにつれて、いくつかの場合、ナンスの探索空間がPOWを解決するのに不十分になる可能性がある。いくつかの例示的なブロックチェーンでは、成功したPOWを探索するためにマイニングで行われることができる利用可能な変化の範囲を増加させるために、「エクストラナンス(extranonce)」が使用されている。これらの例の場合、「エクストラナンス」はコインベーストランザクションのインプットに入れられる値である。インプットは使用されないので、これは、ブロックの本体内のデータを変更するために利用可能であり、その結果、マークルツリー(ブロックトランザクションの要約)の変更を生じるが、トランザクション自体に影響を与えない。マークルツリーへの変更は、ブロックヘッダに含まれるマークルツリールートへの変更を生じる。
【0023】
少なくとも1つの例示的なブロックチェーンでは、POWを見つけるためのブロックヘッダのハッシュ演算は、SHA-256を使用するダブルハッシュである。他のブロックチェーンネットワークは、他のハッシュを使用してもよい。
【0024】
多くのブロックチェーンシステムでは、単一のエンティティが、マイニングノードとして機能する多数の個々のコンピュータを所有、制御又は指示してもよい。いくつかの場合、複数のマイニングノードのリソースは、膨大な数の個々のプロセッサの計算能力を利用するマイニングプールに一緒にプールされてもよい。いくつかのブロックチェーンは、より多くの数のトランザクション及びより大きいトランザクションデータを収容するように拡大し続けているので、また、難易度が増加しているので、成功したブロックを見つけることがより困難になり続けており、POW競争に「勝つ」ために、より多くのマイニングリソース(例えば、ハッシュパワー)を必要とする。したがって、マイニングプールはますます一般的になる可能性がある。
【0025】
マイニングプールでは、多数のマイニングデバイスがPOWを共同で探索し、これらのいくつかは異なるエンティティによって所有又は運営されている。プールが成功した場合、結果の「ブロック報酬」、すなわち、トランザクション料及びコインベーストランザクショントークンは、プール内の参加者の間で分割される。この目的及び他の目的のため、マイニングプールは、プールマスターデバイスを含んでもよい。プールマスターデバイスは、プール内のマイニングデバイスに対して、これらがマイニングを試みる可能な探索空間の部分(例えば、ナンス及び/又はエクストラナンスの値の範囲)に関して命令してもよい。プールマスターデバイスはまた、プール内の各マイニングデバイスによるブロック報酬の割り当てを決定してもよい。本明細書におけるマイナー又はマイニングノード又はマイニングデバイスへの言及は、適用可能なブロックチェーンマイニングプロトコルを実行するように構成された計算デバイスを意味するものと理解される。
【0026】
ブロック報酬を割り当てるための基礎は、典型的には、マイニングデバイスがマイニングプールの累積ハッシュパワーに寄与する割合である。すなわち、POWの探索に使用された計算リソースの相対的な寄与が、いずれかのブロック報酬のマイニングデバイスのシェアを決定してもよい。プールマスターデバイスは、ハッシュパワーへの相対的な寄与を決定することを担ってもよい。プールマスターデバイスが、マイニングデバイスからの自己報告に依存することなく、プルーフ・オブ・ワークの寄与を正確に決定することは困難になる可能性があり、これは、寄与したハッシュパワーの悪意のある請求に対してプールを脆弱にする可能性がある。さらに、絶対的又は相対的な意味での寄与は、リソースがマイナーによって追加又は削除されるにつれて、ブロック探索時間にわたって変化する可能性がある。
【0027】
全てのマイニングデバイスに、全てのテストされたナンスをプールマスターデバイスに報告させることは、利用される帯域幅及び計算リソースの点で膨大になる。したがって、プールメンバによるプルーフ・オブ・ワークの寄与を追跡するために、プールマスターデバイスは、マイニングデバイスが第2の難易度パラメータによって設定されたより簡単で高い方の閾値を満たすハッシュブロックヘッダを生成する毎に、レポートを送信することを通じて、デバイスがこれらの寄与を定期的に証明することを義務付けてもよい。いくつかの場合、このレポートは「部分的POW」と呼ばれてもよい。いくつかの例示的なブロックチェーンにおける通常のPOW難易度パラメータは、全体としてのブロックチェーンネットワークが平均で約10分毎に対応する閾値を下回るPOWを見つける可能性が高くなることを確保するように選択される。第2の難易度パラメータは、マイニングデバイスが、はるかに短い期間で、対応する高い方の閾値を下回るハッシュブロックヘッダを成功して見つけるように選択されてもよい。例えば、第2の難易度パラメータは、例として、3、5、7、10、15又は20秒毎に、マイニングデバイスによって満たされるように選択されてもよい。すなわち、第2の難易度パラメータは、レポートの間に目標期間を有する部分的POWレポートを生じるように選択される。
【0028】
成功したPOWの探索に関与するマイニングデバイスがブロックヘッダをハッシュ演算し、それが高い方の閾値を下回ることを検出する毎に、部分的POWレポートをプールマスターデバイスに送信する。レポートは、例えば、使用されたナンスを含んでもよい。プールマスターデバイスは、ブロック及びそのヘッダに関する全ての他の情報を有する。いくつかの場合、マイニングデバイスがコインベーストランザクションを変更すること、例えば、エクストラナンスを使用することが許可される場合、レポートは、エクストラナンス又はマイニングデバイスによって変更された他のフィールドのような更なる情報を含んでもよい。
【0029】
プールマスターデバイスは、そのマイニングデバイスからのレポートが、レポートの間の目標期間から閾値量よりも多く逸脱した場合、場合によっては、個々のマイニングデバイス毎に第2の難易度パラメータを調整してもよい。調整は、例えば、平均で3、5、7、10、15又は20秒毎に、各マイニングデバイスが部分的POWレポートを提供することを確保することを目的とする。プールマスターデバイスは、部分的POWレポートを受信すると、レポート内の情報から対応するブロックを組み立て、ブロックヘッダがハッシュ演算されたときに高い方の閾値を満たすことを検証してもよい。特定のマイニングデバイスが平均でX秒毎に発生するレポートを提供することを確保するように、第2の難易度パラメータを調整することによって、プールマスターデバイスは、その特定のマイニングデバイスによって寄与されているハッシュパワーを効果的に決定する。X秒毎にこのようなレポートをうまく生成できないマイニングデバイスは、そのマイニングデバイスについての対応する高い方の閾値がより容易に満たされることを確保するように、その第2の難易度パラメータを調整させてもよい。その第2の難易度パラメータは、マイニングデバイスの寄与ハッシュパワーの尺度である。
【0030】
悪意のあるマイニングデバイス又は不完全なマイニングデバイスは、同じ成功した部分的POWレポートを複数回送信する可能性があるので、プールマスターデバイスは、全てのマイナーからの全てのレポートを追跡し、繰り返しのレポートが存在しないこと、すなわち、「不良ハッシュ」が存在しないことを確保する。不良ハッシュは、同じマイニングデバイスによって既に報告されているもの、又は同じプール内の他のマイニングデバイスによって報告されているものである。この理由は、マイニングデバイスが典型的には探索空間の別々の異なる部分をテストすることが想定されるからである。したがって、プールマスターデバイスは、プール内の全てのマイニングデバイスによって送信された全てのレポートを記憶してもよく、受信したそれぞれの新たなレポートについて、それが以前に受信されていないことを確保するためにテストしてもよい。
【0031】
何万ものマイニングデバイスを用いて、プールマスターデバイスは、全てのマイニングデバイスからのレポートを記憶してテストしてもよい。しかし、ネットワークが拡大してマイニングプールが数十万又は数百万ものマイニングデバイスを伴うように増大するにつれて、プールマスターデバイスが全てのレポートを追跡し、それぞれの新たに受信したレポートが固有であることを迅速に識別することは、非現実的又は非効率的になる可能性がある。
【0032】
プールマスターデバイスにおける速度及びメモリ使用を改善するために、本出願のいくつかの態様では、プールマスターデバイスは、プール内のマイニングデバイスによってサブミットされた部分的POWレポートに関するデータを記憶するためにブルームフィルタを使用してもよい。ブルームフィルタはまた、新たにサブミットされたレポートが以前に受信されたか否か、すなわち、新たにサブミットされたレポートに対応する候補ブロックが既にブルームフィルタに記憶されているか否かを決定するための比較的高速なメカニズムを提供する。ブルームフィルタは、情報が以前に受信されていないことを示すことができるが、偽陽性を示す可能性がある。すなわち、サブミットされたレポートが以前に受信されたように誤って見える可能性がある。ブルームフィルタのサイズが十分に大きい場合、偽陽性の確率は許容可能なほど低くなり得る。
【0033】
次に、例示的なブルームフィルタ100を示す
図1を参照する。ブルームフィルタ100は、サイズmのビット配列である。最初に、配列内の全てのm個のビットがゼロに設定される。データ項目102は、k個の異なるハッシュ関数を使用してデータ項目をハッシュ演算することによってブルームフィルタ100に追加されてもよく、ハッシュ関数のそれぞれは、データ要素をm個の配列位置のうち1つにマッピングする。
図1に示すように、ハッシュ関数H
n[data] mod mのそれぞれは、ブルームフィルタ100のビット配列内の位置の1つを指す値a
nを生じる。これらのk個の位置のそれぞれにおけるバイナリ値は、データ項目をブルームフィルタ100に記憶するために1に設定される。
【0034】
k個のハッシュ関数を使用して項目をハッシュ演算し、配列の対応するビットを1に設定する同じプロセスによって、更なる項目がビット配列に追加されてもよい。
【0035】
次に、例示的なブルームフィルタ100を示す
図2も参照する。
図2に示すように、新たなデータ項目106を受信すると、データ項目106が、k個のハッシュ関数を使用してハッシュ演算して、k個のビット位置a
n(n=1~k)のセット又は連続を生成することによって、既にブルームフィルタ100内にあるか否かが決定されてもよい。参照符号200によって示すように、配列内のこれらのk個のビット位置のいずれかがゼロを含む場合、新たなデータ項目106は、以前に配列に追加されていない。k個のビット位置の全てが1を含む場合、新たなデータ項目106は、ブルームフィルタ100に既に追加されていた可能性が高いが、これが偽陽性の結果である可能性がある。
【0036】
k個のハッシュアルゴリズムが、いずれかのインプットをm個のビット位置のいずれかにマッピングする等しい確率を有する場合、配列内の特定のビットが特定のハッシュ関数によって1に設定されない確率は、以下のように与えられる。
【0037】
【数1】
したがって、k個のハッシュ関数では、ビットがハッシュ関数のいずれによっても1に設定されない確率は、以下のように与えられる。
【0038】
【数2】
入力されているデータがn個の項目を含む場合、ビットが設定されない確率は、以下の通りである。
【0039】
【数3】
ビットがデータ項目の1つによって1に設定される確率は、以下のように与えられる。
【0040】
【数4】
したがって、新たなデータ項目が受信され、それが既にブルームフィルタ内にあるか否かに関して評価が行われる場合、そのデータ項目がマッピングされているk個の配列位置の全てが既に1に設定されている確率は、以下のように与えられる。
【0041】
【数5】
これは、偽陽性の可能性を与える。これは、ハッシュ関数の数k、ビット配列のサイズm、及び既にビット配列に含まれているデータの数nに依存する点に留意する。ブルームフィルタを設定するとき、想定されるデータ項目の数が既知であり、誤確率の最大の可能性が選択されている場合、ハッシュ関数の数
【0042】
【0043】
【0044】
適切な偽陽性の確率は、いくつかの例において0.005でもよい。部分的POWレポートを追跡する場合の偽陽性は、実際には不良ハッシュを生成しなかったマイニングデバイスに対して「不良ハッシュ」を記録することを生じてもよい。ペナルティ又は他の制裁が、1つのマイニングデバイスから2つ若しくは3つ又はより多くの不良ハッシュを受信したことに基づく場合、マイニングデバイスが不公平にペナルティを受ける可能性は無視できるほど低くなる可能性がある。
【0045】
次に、マイニングプール内のマイニングデバイスからプルーフ・オブ・ワークの寄与を追跡する1つの例示的な方法300をフローチャート形式で示す
図3を参照する。方法300は、この例におけるプールマスターデバイスのような、ネットワーク接続された計算デバイス内に実装されてもよい。方法300は、マイニングプール内のマイニングデバイスから受信した不良ハッシュを追跡するために使用されてもよい。
【0046】
動作302において、プールマスターデバイスは、候補ブロックヘッダ情報を受信する。候補ブロックヘッダ情報は、マイニングプール内のマイニングデバイスから受信され、例えば、ハッシュ演算されたときに部分的POW基準を満たした、すなわち、そのマイニングデバイスについての第2の難易度パラメータによって設定された高い方の閾値を下回った候補ブロックヘッダ内で使用される、マイニングデバイスによって使用されるナンス値を含んでもよい。いくつかの場合、候補ブロックヘッダ情報は、ハッシュ演算したブロックヘッダを構成するために、マイニングデバイスによって使用される更なるデータを更に含んでもよい。一例では、更なるデータは、マークルツリールート値でもよい。他の例では、更なるデータは、コインベーストランザクション内のフィールドからのエクストラナンスデータでもよい。
【0047】
動作304において、プールマスターデバイスは、受信した候補ブロックヘッダ情報に基づいて候補ブロックヘッダを構築する。これは、候補ブロックヘッダ情報からのナンス値を部分的に構築されたブロックヘッダに挿入することを含んでもよい。いくつかの場合、これは、トランザクションのブロックを構築すること、及びマークルツリーを計算することを含んでもよく、これは、エクストラナンス値をコインベーストランザクションに挿入することを含んでもよい。構築された候補ブロックヘッダは、候補ブロックヘッダ情報に基づいてマイニングデバイスによってハッシュ演算された同じブロックヘッダである。
【0048】
次いで、動作306において、プールマスターデバイスは、構築された候補ブロックヘッダをハッシュ演算し、その結果が、候補ヘッダ情報が受信されたマイニングデバイスに関連する第2の難易度パラメータによって設定された高い方の閾値を下回るか否かを評価する。ハッシュは、適用可能なブロックチェーンプロトコルの規定されたPOWメカニズムに従う。いくつかの例示的なブロックチェーンの場合、ハッシュ演算はSHA-256を使用するダブルハッシュである。ハッシュ結果が高い方の閾値を下回らない場合、動作308において、レポートは拒否される。これは、マイニングデバイスに関する不良ハッシュの発生を記録することを含んでもよい。
【0049】
動作310において、ハッシュ結果が高い方の閾値を下回った場合、プールマスターデバイスは、候補ブロックヘッダがブルームフィルタに既に追加されているか否かを決定する。上記のように、これは、候補ブロックヘッダをk個のビット位置にマッピングするk個のハッシュ関数で候補ブロックヘッダをハッシュ演算し、次いでブルームフィルタ配列内のこれらのビット位置の全てが1に設定されているか否かを評価することを含んでもよい。設定されている場合、候補ブロックヘッダは以前にブルームフィルタに追加されている可能性が高く、動作308において不良ハッシュが記録されてもよい。ビット位置のうち少なくとも1つがゼロの値を含む場合、候補ブロックヘッダは以前に追加されていない。したがって、動作312において、ブルームフィルタは、全てのk個のビット位置を1に設定することによって候補ブロックヘッダを追加するように更新される。いくつかの場合、動作312は、マイニングデバイスに関連する有効な部分的POWレポートのカウントのインクリメントすることを更に含んでもよい。
【0050】
プールマスターデバイスは、候補ブロックヘッダ情報を含む、受信した部分的POWレポート毎に方法300を実行することが認識される。マイニングプールが現在のブロックのマイニングに成功した場合、プールマスターデバイスは、現在のブロックについてのマイニング活動の過程にわたるその寄与したハッシュパワーに基づいて、各マイニングデバイスによるブロック報酬の相対的シェアを決定してもよい。寄与したハッシュパワーは、その報告された部分的POWに関して、そのマイニングデバイスによって使用される第2の難易度パラメータに比例してもよい。マイニングデバイスに関連して記録された不良ハッシュは、いくつかの場合、マイニングデバイスのブロック報酬のシェアを下方に調整するために使用されてもよい。いくつかの場合、不良ハッシュは、ブロック報酬のシェアからマイニングデバイスを除外するための根拠として使用されてもよい。いくつかの場合、不良ハッシュは、マイニングプールからマイニングデバイスを除外し、プールによる更なるマイニング活動への参加を妨げるための根拠として使用されてもよい。いくつかの場合、ブロック報酬の相対的シェアは、そのマイニングデバイスからの有効な部分的POWレポートのカウントに更に基づく。例えば、そのマイニングデバイスからの有効なPOWレポートの数及びそれぞれ有効なPOWレポートに関連する第2の難易度パラメータは、そのマイニングデバイスのためのハッシュパワースコア又は同様のメトリックを決定する際に共同で使用されてもよく、次いで、これは、マイニングデバイスの間でブロック報酬の割り当てを決定するために、マイニングプール内の全てのデバイスの累積ハッシュパワースコアと比較されてもよい。
【0051】
マイニングプールが現在のブロックをマイニングすることに成功せず、その代わりに、他のマイナーがブロックをマイニングすることに成功したという通知を受信した場合、プール内のマイニングデバイスのいずれかについての不良ハッシュカウントが罰則動作についての閾値レベルを満たしているか否かを決定してもよい。罰則動作の例は、マイニング活動への更なる参加からマイニングデバイスを除外すること、将来のブロック報酬のマイニングデバイスの割り当てを低減すること、又は他のこのような動作を含む。
【0052】
有効なブロックがマイニングプール又は他のマイニングプールによって見つかると、ビット配列はゼロにされ、次のブロックの探索によって方法300が新たに開始する。
【0053】
図4は、マイニングプール内のマイニングデバイスからのプルーフ・オブ・ワークの寄与を決定する他の例示的な方法400をフローチャート形式で示す。マイニングデバイスは、大量のトランザクションを含むブロックのマイニングを担う。上記のように、第2の難易度パラメータは、マイニングデバイス毎に設定される。マイニングデバイスが第2の難易度パラメータによって設定された高い方の閾値を下回るダブルハッシュされたブロックヘッダを見つける毎に、マイニングデバイスは、部分的POWレポートをプールマスターデバイスに送信する。動作402によって示すように、プールマスターデバイスは、第2の難易度パラメータを満たすブロックに対応するナンスデータを含む参加マイニングデバイスからのレポートを受信する。ナンスデータは、該当する場合、ナンス及びエクストラナンスを含んでもよい。動作404において、プールマスターデバイスは、参加マイニングデバイスによって提供されたナンスデータを使用して候補ブロックを構築する。次いで、例えば、SHA-256を使用してブロックヘッダのダブルハッシュを含んでもよい適用可能なハッシュ演算を実行する。動作406において、ハッシュブロックヘッダが、その参加マイニングデバイスについて第2の難易度パラメータによって設定された高い方の閾値未満であるか否かを評価する。そうでない場合、動作408において、その参加マイニングデバイスに関連する不良ハッシュを記録する。
【0054】
報告された候補ブロックヘッダ情報が、高い方の閾値を下回るハッシュヘッダを生じる場合、演算410によって示すように、プールマスターデバイスは、k個のビットアレイ位置a1,a2,...,akを見つけるためにk個のハッシュ演算を実行し、候補ブロックヘッダをブルームフィルタにマッピングする。動作412において、プールマスターデバイスは、これらのk個のビットアレイ位置がブルームフィルタ内で既に1に設定されているか否かを評価する。そうである場合、これは、或る程度のエラーの可能性で、候補ブロックヘッダがブルームフィルタに既に記録されていることを示し、動作408においてプールマスターデバイスが不良ハッシュを記録する。ブルームフィルタ内のk個の位置のいずれかが0である場合、候補ブロックヘッダは以前に見つかっておらず、有効である。したがって、動作414において、まだ1に設定されていないこれらのk個のビット位置のいずれかが、候補ブロックヘッダを記録するために、ブルームフィルタ内で1に設定される。
【0055】
動作416において、プールマスターデバイスは、参加マイニングデバイスのための第2の難易度パラメータを更新するか否かを評価する。決定は、第2の難易度パラメータを満たす有効な候補ブロックの検出の間の時間に基づいてもよい。有効な候補ブロックの検出の間の時間は、2つ以上の最新の有効な候補ブロックの平均、又はいくつかの場合には最新の有効な候補ブロックの間の加重平均時間に基づいてもよい。マイニングデバイスが第2の難易度パラメータを満たす候補ブロックを見つけるのに長くかかりすぎた場合、パラメータは、そのマイニングデバイスの探索をより容易にするために、高い方の閾値を増加させるように調整されてもよい。反対に、マイニングデバイスが有効な候補ブロックをあまりにも早く見つけた場合、探索をより困難にするために、高い方の閾値を下げるように第2の難易度パラメータが調整されてもよい。動作418は、第2の難易度パラメータに対する調整がマイニングデバイスに送信されることを示す。いくつかの実施形態では、ブロックのマイニングの時間にわたって寄与したハッシュパワーの履歴がブロック報酬の割り当てを決定するために利用可能になるように、各マイニングデバイスについて調整又は難易度パラメータの履歴が維持されてもよい。第2の難易度パラメータが動作416及び418において調整されているか或いは調整されていないとき、方法400は動作402に戻り、次の部分的POWレポートを処理する。
【0056】
マイニングプールによってであれ、マイニングプール外の他のマイニングデバイスによってであれ、有効な新たなブロックが見つかると、ビット配列は全ての位置をゼロに設定するようにクリアされ、プロセスが新たに始まり、新たなブロックがマイニングプールによってマイニングされる。
【0057】
1つの実装では、k個のハッシュ関数は1回からk回の間で使用される1つのハッシュ関数を使用して実装される。すなわち、第nのハッシュ関数は、同じハッシュ関数を使用して入力データをn回ハッシュ演算することによって実装される。1つの実装では、使用されるハッシュ関数は、例えばSHA-256のように、ブロックヘッダが閾値を下回るか否かを決定するためにブロックチェーンプロトコルにおいて使用される同じハッシュ関数でもよい。
【0058】
様々な上記の例示的な方法の上記の動作の一部又は全部が、図示のもの以外の順序で実行されてもよく、及び/又は、これらの方法の全体的な動作を変更することなく同時に実行されてもよいことが認識される。
【0059】
次に、本出願の例による簡略化した計算デバイス500をブロック図の形式で示す
図5を参照する。計算デバイス500は、上記の機能のうち1つ以上を実行してもよい。いくつかの例では、計算デバイス500は、プールマスター機能も実行するマイニングプール内のマイニングノードでもよい。いくつかの実装では、計算デバイス500は、プールマスターデバイスとしてマイニングプールのためにマイニングデバイスのプルーフ・オブ・ワークの寄与を追跡及び測定するように動作する非マイニングノードでもよい。
【0060】
計算デバイス500はプロセッサ502を含み、プロセッサ502は、1つ以上のマイクロプロセッサ、特定用途向け集積回路(application specific integrated circuit, ASIC)、マイクロコントローラ又は同様のコンピュータ処理デバイスを含んでもよい。計算デバイス500は、値、変数、及び場合によってはプロセッサ実行可能プログラム命令を記憶するための永続的及び非永続的メモリを含んでもよいメモリ504と、ネットワークインタフェース506とを更に含んでもよい。
【0061】
計算デバイス500は、実行されると、プロセッサ502に本明細書に記載の機能又は操作のうち1つ以上を実行させるプロセッサ実行可能命令を含むプロセッサ実行可能アプリケーション508を含んでもよい。
【0062】
上記の様々な実施形態は単なる例に過ぎず、決して本出願の範囲を限定するものではない。本明細書に記載の発明のバリエーションは当業者にとって明らかであり、このようなバリエーションは、本出願の意図した範囲内にある。特に、上記の例示的な実施形態のうち1つ以上からの特徴は、上記に明示的に記載されないことがある特徴のサブコンビネーションを含む代替の例示的な実施形態を作成するために選択されてもよい。さらに、上記の例示的な実施形態のうち1つ以上からの特徴は、上記に明示的に記載されないことがある特徴の組み合わせを含む代替の例示的な実施形態を作成するように選択されて組み合わされてもよい。このような組み合わせ及びサブコンビネーションに適した特徴は、全体として本出願を検討することにより当業者には容易に明らかになる。本明細書及び特許請求の範囲に記載された対象物は、技術における全ての適切な変更をカバーして包含することを意図する。
【国際調査報告】