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

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

▶ タール・ディーアイティー・ゲーエムベーハーの特許一覧

<>
  • 特表-ハッシュ値の給送 図1A
  • 特表-ハッシュ値の給送 図1B
  • 特表-ハッシュ値の給送 図2
  • 特表-ハッシュ値の給送 図3
  • 特表-ハッシュ値の給送 図4
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-12-27
(54)【発明の名称】ハッシュ値の給送
(51)【国際特許分類】
   H04L 9/32 20060101AFI20231220BHJP
   G06F 21/64 20130101ALI20231220BHJP
【FI】
H04L9/32 200Z
G06F21/64
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023558937
(86)(22)【出願日】2021-11-26
(85)【翻訳文提出日】2023-08-07
(86)【国際出願番号】 EP2021083229
(87)【国際公開番号】W WO2022122423
(87)【国際公開日】2022-06-16
(31)【優先権主張番号】2019451.0
(32)【優先日】2020-12-10
(33)【優先権主張国・地域又は機関】GB
(81)【指定国・地域】
(71)【出願人】
【識別番号】523221887
【氏名又は名称】タール・ディーアイティー・ゲーエムベーハー
(74)【代理人】
【識別番号】100108453
【弁理士】
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【弁理士】
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【弁理士】
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】ジェリー・デイヴィッド・チャン
(57)【要約】
ハッシュ値をハッシュデバイスからハッシュプールに給送する、コンピュータによって実施される方法であって、ブロックチェーンの候補ブロックについての候補ブロックヘッダを取得するステップと、候補ブロックヘッダに対して複数のハッシュ演算を実行して複数の候補プルーフオブワーク(PoW)解を生成するステップと、候補PoW解の各々を暗号化鍵を用いて暗号化するステップと、暗号化された候補PoW解をハッシュプールに送るステップであって、ハッシュプールが、暗号化された候補PoW解を復号するように構成される、ステップとを含む方法。
【特許請求の範囲】
【請求項1】
ハッシュ値をハッシュデバイスからハッシュプールに給送する、コンピュータによって実施される方法であって、
ブロックチェーンの候補ブロックについての候補ブロックヘッダを取得するステップと、
前記候補ブロックヘッダに対して複数のハッシュ演算を実行して複数の候補プルーフオブワーク(PoW)解を生成するステップと、
前記候補PoW解の各々を暗号化鍵を用いて暗号化するステップと、
前記暗号化された候補PoW解をハッシュプールに送るステップであって、前記ハッシュプールが、前記暗号化された候補PoW解を復号するように構成される、ステップとを含む方法。
【請求項2】
前記暗号化鍵は、ワンタイムパッド暗号化鍵である、請求項1に記載の方法。
【請求項3】
前記候補PoW解の各々は、XOR暗号化またはモジュール加算を使用して暗号化される、請求項1または2に記載の方法。
【請求項4】
前記ハッシュプールから前記暗号化鍵を取得するステップまたは前記暗号化鍵を前記ハッシュプールに送るステップを含む、請求項1から3のいずれか一項に記載の方法。
【請求項5】
前記ハッシュプールとの共有秘密を確立するステップを含み、前記暗号化鍵は、前記ハッシュプールから取得されならびに/または前記ハッシュプールに送られる前に前記共有秘密を用いて暗号化される、請求項4に記載の方法。
【請求項6】
前記ハッシュデバイスの秘密鍵および前記ハッシュプールの公開鍵に基づいて前記共有秘密を算出するステップを含み、前記ハッシュプールは、前記ハッシュプールの秘密鍵および前記ハッシュデバイスの公開鍵に基づいて前記共有秘密を算出することができる、請求項5に記載の方法。
【請求項7】
前記ハッシュデバイスのファームウェアは、フィンガープリントを有し、前記ハッシュデバイスの前記秘密鍵は、前記フィンガープリントのチェックサムに基づく、請求項6に記載の方法。
【請求項8】
前記フィンガープリントは、既存の公開鍵フィンガープリントである、請求項7に記載の方法。
【請求項9】
前記暗号化鍵を更新するステップを含む、請求項1から8のいずれか一項に記載の方法。
【請求項10】
前記暗号化鍵は、事前に定義されたイベントのセットのうちの1つに応じて更新され、前記事前に定義されたイベントのセットは、
前記ハッシュデバイスのリブートと、
前記暗号化鍵の最後の更新からの所定の期間と、
新しい候補ブロックヘッダを受信することとを含む、請求項9に記載の方法。
【請求項11】
前記方法は、暗号化されるハッシュプールに送られるすべての候補PoW解を実施するステップを含む、請求項1から10のいずれか一項に記載の方法。
【請求項12】
所定の困難条件を満たす候補PoW解のみを暗号化するステップを含む、請求項1から11のいずれか一項に記載の方法。
【請求項13】
前記送るステップは、前記暗号化された候補PoW解を前記ハッシュプールに転送するように構成された中間デバイスへの前記暗号化された候補PoW解を送るステップを含む、請求項1から12のいずれか一項に記載の方法。
【請求項14】
コンピュータ機器であって、
1つまたは複数のメモリユニットを備えるメモリと、
1つまたは複数の処理ユニットを備える処理装置とを備え、前記メモリは、前記処理装置上で実行されるように構成されたコードを記憶し、前記コードは、前記処理装置上で実行されたときに請求項1から13のいずれか一項に記載の方法を実施するように構成されるコンピュータ機器。
【請求項15】
コンピュータ可読ストレージ上で具体化され、1つまたは複数のプロセッサ上で実行されたときに請求項1から13のいずれかに一項に記載の方法を実行するように構成されたコンピュータプログラム。
【請求項16】
ハッシュデバイスであって、
ブロックチェーンの候補ブロックについての候補ブロックヘッダを取得するように構成された入力インターフェースと、
少なくとも前記候補ブロックヘッダにハッシュ関数を1回または複数回適用するように構成されたハッシュ構成要素であって、少なくとも前記候補ブロックヘッダに前記ハッシュ関数を適用するたびに、それぞれの候補PoW解が生成されるハッシュ構成要素と、
前記候補PoW解の各々を暗号化するように構成された暗号化構成要素と、
前記候補PoW解をハッシュプールに出力するように構成された出力インターフェースとを備えるハッシュデバイス。
【請求項17】
ハッシュデバイスからハッシュ値を取得する、コンピュータによって実施される方法であって、
ハッシュデバイスから複数の候補PoW解を受信するステップと、
所定の期間にわたって前記ハッシュデバイスから受信される前記候補PoW解の数をカウントするステップと、
前記候補PoW解の数が候補PoW解の期待数を満たすかどうかに基づいてコントラクトが履行されたかどうかを判定するステップとを含む方法。
【請求項18】
所定の困難条件が前記候補PoW解のうちの1つによって満たされる条件で、その候補PoW解を含むブロックチェーンブロックをブロックチェーンネットワークに送るステップを含む、請求項17に記載の方法。
【請求項19】
候補ブロックヘッダをハッシュデバイスに送るステップを含む、請求項17または18に記載の方法。
【請求項20】
前記ハッシュデバイスから受信された前記複数の候補PoW解の各々は、暗号化鍵を用いて暗号化され、前記方法は、
前記複数の暗号化された候補PoW解の各々を復号するステップと、前記暗号化鍵に対応する復号鍵を使用して複数の候補PoW解を取得するステップとを含む、請求項16から18のいずれか一項に記載の方法。
【請求項21】
前記暗号化鍵は、ワンタイムパッド暗号化鍵である、請求項20に記載の方法。
【請求項22】
前記候補PoW解の各々は、XOR暗号化またはモジュール加算を使用して暗号化される、請求項20または21に記載の方法。
【請求項23】
前記ハッシュデバイスから前記暗号化鍵を取得するステップ、または前記暗号化鍵を前記ハッシュデバイスに送るステップを含む、請求項20から22のいずれか一項に記載の方法。
【請求項24】
前記ハッシュデバイスとの共有秘密を確立するステップを含み、前記暗号化鍵は、前記ハッシュデバイスから取得されるかまたは前記ハッシュデバイスに送られる前に前記共有秘密を用いて暗号化される、請求項23に記載の方法。
【請求項25】
コンピュータ機器であって、
1つまたは複数のメモリユニットを備えるメモリと、
1つまたは複数の処理ユニットを備える処理装置とを備え、前記メモリは、前記処理装置上で実行されるように構成されたコードを記憶し、前記コードは、前記処理装置上で実行されたときに請求項17から24のいずれか一項に記載の方法を実施するように構成されるコンピュータ機器。
【請求項26】
コンピュータ可読ストレージ上で具体化され、1つまたは複数のプロセッサ上で実行されたときに請求項17から24のいずれかに一項に記載の方法を実行するように構成されたコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ハッシュ値をハッシュデバイスからハッシュプールに供給するための方法および装置に関する。
【背景技術】
【0002】
ハッシュプール(マイニングプールとも呼ばれる)は、ブロックチェーンネットワークのノードであり、ブロックチェーントランザクションを収集し、ブロックテンプレートを構築し、次いでこのブロックテンプレートをハッシュプロデューサ(すなわち、ハッシュデバイス)に送出して、それらのハッシュプロデューサにハッシュ解を見つけさせることに関与する。ハッシュプロデューサは、ブロックテンプレートにハッシュ関数を繰り返し適用して候補プルーフオブワーク解を作成する。候補プルーフオブワーク解はハッシュプールに送り返される。ある候補プルーフオブワーク解がある基準を満足した場合、その候補プルーフオブワーク解は、ブロックチェーンの新しい有効なブロック用の有効なプルーフオブワーク解として使用することができる。ハッシュプールは一般に、有効なブロックを作成することによって稼いだブロック報酬の一部をハッシュプロデューサに支払うことによってハッシュプロデューサの作業を補償する。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】WO2017/145016
【発明の概要】
【課題を解決するための手段】
【0004】
ハッシュプロデューサが候補プルーフオブワーク(PoW)解のハッシュプールへの送信を実施することはできない。すなわち、ハッシュプロデューサは、候補PoW解を意図的に「隠す」ことがある。このことは、ハッシュプロデューサが、ハッシュプールが新しいブロックを公開し関連するブロック報酬を請求するのを可能にする有効なPoW解を見つけた場合に特に問題になる。さらに悪いことに、現在のところ、ハッシュプールが、ハッシュプロデューサに、他のハッシュプールではなくその特定のハッシュプールに候補PoW解を送らせることはできない。
【0005】
したがって、これらの問題の一方または両方を解決することが望ましい。すなわち、ハッシュプロデューサによって作成された候補PoW解を1つの特定のハッシュプールのみが使用できるようにすることが望ましい。また、ハッシュプロデューサが候補PoW解を隠さないようにさせることが望ましい。
【0006】
本明細書で開示される一態様によれば、ハッシュ値をハッシュデバイスからハッシュプールに給送する、コンピュータによって実施される方法であって、ブロックチェーンの候補ブロックについての候補ブロックヘッダを取得するステップと、候補ブロックヘッダに対して複数のハッシュ演算を実行して複数の候補プルーフオブワーク(PoW)解を生成するステップと、候補PoW解の各々を暗号化鍵を用いて暗号化するステップと、暗号化された候補PoW解をハッシュプールに送るステップであって、ハッシュプールが、暗号化された候補PoW解を復号するように構成される、ステップとを含む方法が提供される。
【0007】
本明細書で開示される別の態様によれば、ハッシュデバイスであって、ブロックチェーンの候補ブロックについての候補ブロックヘッダを取得するように構成された入力インターフェースと、少なくとも候補ブロックヘッダにハッシュ関数を1回または複数回適用するように構成されたハッシュ構成要素であって、少なくとも候補ブロックヘッダにハッシュ関数を適用するたびに、それぞれの候補PoW解が生成されるハッシュ構成要素と、候補PoW解の各々を暗号化するように構成された暗号化構成要素と、候補PoW解をハッシュプールに出力するように構成された出力インターフェースとを備えるハッシュデバイスが提供される。
【0008】
ハッシュデバイスは、候補ブロックヘッダを取得し、候補ブロックヘッダに対してハッシュ演算を実行して候補PoW解を生成する。ハッシュ演算の各々の異なる例は、候補ブロックヘッダおよび異なる値(ノンスと呼ばれることもある)にハッシュ関数(たとえば、ダブルハッシュ)を適用して、異なる候補PoW解を生成することを含む。各候補PoW解は、暗号化されてハッシュプールに送られる。ハッシュプールのみが暗号化された解を復号することができる。したがって、特定のハッシュプールのみが候補PoW解を利用することができ、他のどのハッシュプールも候補PoW解を利用することはできない。候補PoW解が候補ブロックについての有効な(すなわち、ウイニング)PoW解である場合、この有効なPoW解を使用してブロックチェーン上で新しいブロックを公開することができる。新たに公開されたブロックおよびそのウイニングPoW解は、ブロックチェーンネットワーク上の他のエンティティによって検証される。
【0009】
本明細書で開示される別の態様によれば、ハッシュデバイスからハッシュ値を取得する、コンピュータによって実施される方法であって、ハッシュデバイスから複数の候補PoW解を受信するステップと、所定の期間にわたってハッシュデバイスから受信される候補PoW解の数をカウントするステップと、候補PoW解の数が候補PoW解の期待数を満たすかどうかに基づいてコントラクトが履行されたかどうかを判定するステップとを含む方法が提供される。
【0010】
ハッシュプールは、ハッシュデバイスから複数の候補PoW解を受信する。ハッシュプールは次いで、所定の期間、たとえば、分数、時間数、日数にわたって期待数の候補PoW解が受信されたかどうかに基づいてハッシュプールとハッシュデバイスとの間のコントラクト条件が満たされたかどうかを判定することができる。これによって、ハッシュデバイスは、候補PoW解をハッシュプールに送ってコントラクトを履行し、いくつかの例では、候補PoW解に対する報酬を受ける。いくつかの例では。候補PoW解は、ハッシュプールに送られる前に暗号化される。
【0011】
本開示の実施形態の理解を助け、そのような実施形態をどのように実施すればよいかを示すために、以下の添付の図面を一例としてのみ参照する。
【図面の簡単な説明】
【0012】
図1A】ブロックチェーンに新しいブロックをマイニングするための例示的な方法を概略的に示す図である。
図1B】ブロックチェーントランザクションの対を概略的に示す図である。
図2】ハッシュ値をハッシュデバイスからハッシュプールに給送するためのシステムの概略ブロック図である。
図3】ハッシュデバイスの概略ブロック図である。
図4】本発明のいくつかの実施形態による例示的な方法を概略的に示す図である。
【発明を実施するための形態】
【0013】
図1Aは、ブロックチェーン102上で新しいブロック101nをマイニングするための例示的な方法を概略的に示す。ブロックチェーン102は、分散データベース(または台帳)の一形態であり、ブロックチェーンネットワークに送信されたすべての有効なトランザクション103の記録として働く。
【0014】
ブロックチェーンネットワーク上でブロードキャストされる有効なトランザクション103は、マイナー(マイニングノードとも呼ばれる)によってブロックチェーン102上にブロック単位で記録される。ブロックチェーントランザクション103は、保管されたある値のデジタルトークンを転送するために使用される。トランザクション103の対が図1Bに示されている。図示のように、各トランザクション103は、特に、少なくとも1つの入力および少なくとも1つの出力を含む。入力は、前のトランザクションからの未使用のトランザクション出力(UTXO)の参照である。たとえば、図1Bでは、Tx1はTx0のUTXOを参照する入力を含む。トランザクション103は、未使用のトランザクション出力(UTXO)を入力として使用し、その値を新しい出力に分散させる。出力は一般に、その出力の値をロックし、ロック解除するには新しいトランザクション103の入力に特定のデータ(たとえば、鍵または他の情報のセット)を設ける必要があるロック条件を含む。出力を使用して台帳上にデータを刻印することもできる。トランザクション103の入力は通常、トランザクション103上に記載されたデジタル署名を含む。したがって、トランザクション103のチェーンは、デジタルトークンの有効化交換の履歴全体をトークンの作成時まで遡ってマップするデジタル署名のチェーンを含む。
【0015】
次に、図1Aを再び参照すると、ブロックチェーン102は、「ジェネシスブロック」101gから開始し、「ジェネシスブロック」101gは最初に作成されたブロック101である。ブロックチェーン102上の各ブロックは、ジェネシスブロックに至るまで前のブロックを参照する。すなわち、n番目のブロック101はn-1番目のブロック101を参照し、n-1番目のブロックはn-2番目のブロックを参照し、以下同様であり、最終的にジェネシスブロック101gを参照する。
【0016】
ブロック101は、ブロックチェーントランザクション103の順序付きリストと、ブロックヘッダ104とを含む。ブロックヘッダ104は、ブロックチェーントランザクション103の順序付きリストをハッシングしてマークルツリーにすることによって生成されたマークルルート105と、タイムスタンプと、現在のブロック101が基づく前のブロック101の参照106と、他のマイナーがブロック101を有効なブロックとして受け入れるのに必要な「プルーフオブワーク」を検証するための手段とを含む。その検証手段は、各ブロック101に一意のハッシュパズルの答えである。ブロックチェーンネットワークのノードによって実行されるブロックチェーンプロトコルは、マイナーに、パズルを解こうとする前にマイナーの候補ブロック101cを再構築することを要求するハッシュアルゴリズムを使用する。新しいブロック101nを正しい答えなしにネットワークに送ることはできず、「マイニング」プロセスは基本的に、現在のブロック101を「解く」答えを次に見つけることを競うプロセスである。各ブロック101におけるハッシュパズルは解くことが困難であるが、有効な解が見つかった後、ネットワークの残りの部分が、その解が正しいことを確認することは非常に容易である。所与のブロック101には複数の有効な解があり、ブロック101を解くには解のうちの1つを見つけるだけでよい。
【0017】
以下に、ブロックチェーン102に新しいブロック101nをマイニングすることを試みるプロセスについて概略的に説明する。ブロックチェーントランザクション103は、マイニングノードに送信されると、まずブロックチェーンネットワークのコンセンサスルールに従って検証される。トランザクション103は、有効である場合、未確認トランザクション103のプール107に追加される。プール107は、「メモリプール」と呼ばれることもある。メモリプール107は、次のブロック101nにマイニングされるトランザクション103を一時的ストアとして働く。各マイニングノードは、それ自体のメモリプール107を有し、任意の所与のトランザクション103が2つ以上のマイニングノードにブロードキャストされた場合、そのトランザクション103は2つ以上のメモリプール107に含められてもよい。
【0018】
ハッシュ関数は、任意の長さのデータの文字列を、ハッシュ値またはハッシュダイジェストと呼ばれる固定長値に変換する関数である。ハッシングは、一方向関数であり、すなわち、入力データから作成されたハッシュ値を見ることによって入力データが何であるかを判定することは不可能である。一方、同じ入力データに同じハッシュ関数を実行して同じハッシュを再現することは容易である。いくつかのブロックチェーンプロトコルは、SHA-256ハッシュアルゴリズムを使用し、いくつかのプロトコルはSHA-256ハッシュアルゴリズムを2度使用し、すなわち、候補ブロックヘッダは同じハッシュアルゴリズムに2度従う。
【0019】
マークルツリーは、ハッシュ値のツリーの形をしたデータ構造である。ブロックチェーン102の文脈では、トランザクション103がハッシングされてツリーのリーフノードを形成する。図1Aに示すように、トランザクションTx1はハッシングされてリーフノードD1を形成し、トランザクションTx2はハッシングされてリーフノードD2を形成し、以下同様である。リーフノードの対は、連結され、次いでハッシングされて、ツリーの上位層におけるノードを形成する。たとえば、リーフノードD1およびD2は、連結されハッシングされて上位層におけるノードをもたらす。その層におけるノードの対は次いで、連結されハッシングされてツリーのさらに上位の層におけるノードを形成する。このプロセスは、ルートノード、またはマークルルート105と呼ばれる単一のノードのみが残るまで繰り返される。
【0020】
マイナーは、次のブロックに含める予定であるトランザクション103を取り出して、それらをハッシングしてマークルツリー構造にし、得られるマークルルート105を候補ブロックヘッダ104に含める。マイナーは次いで、この候補ブロックヘッダ104をハッシングし、有効なプルーフオブワークを見つけることを試みる。
【0021】
有効なプルーフオブワークは、候補ブロックヘッダ104を、結果が目標値と呼ばれる別の値未満になるまで(後述のように他のデータと組み合わせて)ハッシングすることによって見つけられる。目標値は、ブロックチェーンプロトコルによって、ブロックチェーンネットワークが、有効なプルーフオブワークを見つけるのに平均で10分かかるように自動的に調整される。
【0022】
ハッシュ値を変更するには、マイニングノードが候補ブロックヘッダ104に追加の情報を追加しなければならない。マイニングノードは一般に、2つの「ノンスフィールド」を使用して、ハッシングされる値を変更し、したがって、得られるハッシュ値を変更する。第1のノンスフィールド108は、ブロックヘッダ自体に含められ、第2のノンスフィールドは、「コインベーストランザクション」に含められる。コインベーストランザクションは、マイニングノードによって作成され候補ブロックに含められるトランザクションである。各フィールドは、増分することができるカウンタパラメータを含む。ハッシュ関数は、第1のノンスフィールド108のすべての値を循環し、次いで第2のノンスフィールドを増分し(または他の方法で変更し)、その後、第1のノンスフィールド108のすべての変更された値を再び循環する。第2のノンスフィールドを増分することは、マークルルート105が、マークルツリーに含まれるコインベーストランザクションのハッシュを修正するときに、マークルルート105を再計算することを含む。
【0023】
マイニングノードは、ブロック101についての有効なプルーフオブワークハッシュ(すなわち、目標値未満の値にハッシングする候補ブロックヘッダ104)を見つけると、新しいブロック101nをブロックチェーンネットワークの残りの部分にブロードキャストする。ネットワーク上の他のノードは、この新しいブロック101n内のすべてのトランザクション103が有効であり、まだブロックに含められていない場合にのみこの新しいブロック101nを受け入れる。あらゆるブロック101がタイムスタンプを付加され、それに先行するブロック101のハッシュを参照し、したがって、ブロックのチェーン(すなわち、ブロックチェーン102)が得られる。
【0024】
「出力ベースの」トランザクションモデルに関して上記で説明した。代替タイプのトランザクションモデルは「アカウントベースの」モデルである。このモデルでは、各トランザクション103は、未使用のトランザクション出力を参照し直すことによって転送されるデジタルトークンの量を定義することはなく、その代わりに絶対アカウントバランスを参照する。すべてのアカウントの現在の状態が、ブロックチェーン102から独立したマイナーによって記憶され、常に更新される。そのようなシステムでは、トランザクション103は、アカウントの実行中トランザクションタリー(「位置」とも呼ばれる)を使用して順序付けられる。この値は、送信側によって送信側の暗号署名の一部として署名され、トランザクション参照計算の一部としてハッシングされる。
【0025】
図2は、ハッシュ値をハッシュデバイス201a、201bのセットからハッシュプール202に給送するための例示的なシステム200を概略的に示す。この例示的なシステム200では、2つのハッシュデバイス201a、201bがあるが、システム200は一般に、任意の数のハッシュデバイス201を備えてもよい。システムはまた、ブロックチェーンクライアントアプリケーション203a、203b、203cのセットを備える。3つのクライアントアプリケーション203a、203b、203cのみが示されているが、システムは、任意の数のクライアントアプリケーション203を備えてもよい。一般に、クライアントアプリケーション203は、ハッシュプール202にブロックチェーントランザクションを送るように構成される。ハッシュプールは、ブロックテンプレート101cを構築し、ブロックテンプレート101c(または少なくともブロックテンプレート101cの候補ブロックヘッダ104)をハッシュデバイス201a、201bに送るように構成される。各ハッシュデバイス201は、候補ブロックヘッダ104に基づいて候補PoW解を生成するように構成される。システムは、複数のブロックチェーンノードを備えるブロックチェーンネットワーク204をさらに備える。
【0026】
本発明のいくつかの実施形態によれば、ハッシュデバイス201aは、候補ブロックヘッダ104を取得するように構成される。たとえば、候補ブロックヘッダは、ハッシュプールによって別個にまたはブロックテンプレート101cの一部としてハッシュデバイス201aに送られてもよい。すなわち、ハッシュデバイスは、ブロックテンプレート101cのトランザクションにアクセスする必要はない。ハッシュデバイスは次いで、ブロックヘッダ104に基づいて複数のハッシュ値を生成するように構成される。これらのハッシュ値は候補PoW解とも呼ばれる。候補PoW解は必ずしも有効なブロック解である必要はない。すなわち、候補PoW解のいくつかまたはすべては、ブロックチェーン上で新しい有効なブロックを公開するのに必要なPoWパズルを解けない場合がある。実際、ハッシングの確率的性質に起因して、所与のハッシュデバイス201によって作成される候補PoW解の大部分は有効なブロック解ではない。図1を参照して上記で説明したように、候補ブロックヘッダ104のノンス値108は、ハッシュ関数を適用するたび(すなわち、ハッシュ演算の各インスタンス)に変更され、異なるハッシュ値が作成される。
【0027】
いくつかの実施形態では、ハッシュデバイス201aは、候補PoW解の各々を暗号化する。すなわち、各候補PoW解は別個に暗号化される。一般に、任意の暗号化技法が使用されてもよい。いくつかの例示的な暗号化技法を以下に示す。
【0028】
これらの実施形態では、ハッシュデバイス201aは、暗号化された候補PoW解をハッシュプール202に送る。ハッシュプール202は、暗号化された候補PoW解を復号して候補PoW解を明らかにするように構成される。候補PoW解のうちの1つが有効なブロック解である場合、ハッシュプールは、有効なブロック解、候補ブロックヘッダ104、候補ブロックヘッダ104のベースとなるトランザクションを含むブロックをブロックチェーンに公開してもよい。
【0029】
図2に示すように、ハッシュプール202は、候補ブロックヘッダ104を(たとえば、ブロックテンプレート101cの一部として)2つ以上のハッシュデバイス201に送ってもよい。これによって、有効なブロック解が見つかる機会が改善される。各ハッシュデバイス201は、作成された候補PoW解の同様な動作を実行し、それらの候補PoW解を暗号化し、暗号化されたバージョンをハッシュプール202に送る。
【0030】
ハッシュデバイス201aは、暗号化鍵を使用して候補PoW解を暗号化する。暗号化鍵は、対称鍵であっても、非対称鍵であっても、または異なるタイプの暗号化鍵であってもよい。
【0031】
たとえば、ハッシュデバイス201aは、ワンタイムパッド(OTP)を使用して候補PoW解を暗号化してもよい。ワンタイムパッドは、事前共有鍵であり、暗号化されるメッセージと同じサイズであるかまたは暗号化されるメッセージよりも長い。この場合、メッセージは候補PoW解である。候補PoW解の各ビットは、そのビットをワンタイムパッドの対応するビットと組み合わせることによって暗号化される。ここで、OTPのビットおよび候補PoW解のビットが同じ位置にある場合、OTPのビットは候補PoW解のビットに対応し、たとえば、候補PoW解の第1のビットがOTPの第1のビットと組み合わされ、候補PoW解の第2のビットがOTPの第2のビットと組み合わされ、以下同様である。これらのビットは、モジュール加算または異なるタイプのモジュール演算を使用して組み合わされてもよい。暗号化されたメッセージ(すなわち、暗号化された候補PoW解)は、OTPの知識がなければ復号することができない。ハッシュプール202は、OTPの知識を有し、したがって、暗号化された候補PoW解を復号することができる。たとえば、ハッシュプール202は、暗号化されたPoW解を受信すると、OTPを使用して暗号化されたPoW解からOTPを「分離する」(すなわち、除外する)。言い換えれば、逆演算を使用して候補PoW解の基礎的なビットを明らかにしてもよい。たとえば、候補PoW解およびOTPのビットがモジュール加算を使用して組み合わされた場合、モジュール減算を使用して候補PoW解のビットを明らかにしてもよい。モジュール加算を使用した暗号化をOTP以外の暗号化鍵と共に使用することもできる。
【0032】
いくつかの例では、OTPを使用して、XOR暗号化を使用して、すなわち排他的論理和(XOR)演算子を使用して候補PoWのシェアを暗号化してもよい。当業者にはよく知られているように、XOR演算子は、入力が一致したときには必ず0を出力し、入力が一致しないときには必ず1を出力する。XOR暗号化をOTP以外の暗号化鍵と共に使用してもよいことに留意されたい。
【0033】
いくつかの例では、ハッシュプールは、暗号化鍵(たとえば、OTP)をハッシュデバイス201aに送ってもよい。ハッシュプールは、それぞれの異なる暗号化鍵をそれぞれに異なるハッシュデバイス201bに送ってもよい。逆に、ハッシュデバイスは、暗号化鍵をハッシュプール202に送ってもよい。
【0034】
暗号化鍵を共有するための1つのオプションは、ハッシュデバイス201aとハッシュプール202との間に共有鍵を確立することである。共有秘密は、ハッシュデバイス201aおよびハッシュプール202にのみ知られている(またはハッシュデバイス201aおよびハッシュプール202によってのみ導出可能な)データである。共有秘密は、暗号化鍵を暗号化するために使用される。すなわち、暗号化鍵自体が暗号化され、したがって、暗号化鍵をハッシュデバイス201aとハッシュプール202との間で共有するときに暗号化鍵のセキュリティが向上する。
【0035】
一般に、共有秘密は任意の秘密データであってもよい。特定の例として、共有秘密は、ハッシュデバイス201aの(たとえば、デバイス上に設置される)秘密鍵およびハッシュプール202の公開鍵に基づいて導出されてもよい。秘密-公開鍵ペアの特性に起因して、ハッシュデバイス201aによって使用される公開鍵に対応するハッシュプール202の秘密鍵、およびハッシュデバイス201aによって使用される秘密鍵に対応するハッシュデバイス201aの公開鍵に基づいて、同じ共有秘密が導出されてもよい。公開鍵は、公的にアクセス可能であってもよく、またはハッシュプール202とハッシュデバイス201aとの間で他の何らかの方法で共有されてもよい。
【0036】
いくつかの例では、共有秘密を生成するために使用される公開-秘密鍵ペア自体が共通の値(必ずしも秘密ではない)に基づいてもよい。この共通の値は通常、決定論的鍵と呼ばれ、ハッシュ関数をメッセージに適用した結果であってもよい。すなわち、ハッシュデバイス201aは、第1の秘密鍵および決定論的鍵に基づいて第2の秘密鍵を生成してもよい。ハッシュデバイスは、ハッシュプール202の第1の公開鍵および決定論的鍵に対応する公開鍵に基づいてハッシュプール202の第2の公開鍵を生成してもよい。次いで、ハッシュデバイス201aの第2の秘密鍵およびハッシュプール202の第2の公開鍵に基づいて共有秘密が生成される。ハッシュプール202は、等価演算を実行して同じ共有秘密を生成してもよい。共有秘密を確立する特定の例としてWO2017/145016を参照されたい。
【0037】
ハッシュデバイス201a上にインストールされるファームウェアは、フィンガープリント、または公開鍵フィンガープリントを有してもよい。公開鍵フィンガープリントは、公開鍵自体のみであってもよく、またはたとえば公開鍵に基づいてもよい。いくつかの例では、ハッシュデバイス201aの秘密鍵は、フィンガープリント、たとえば、フィンガープリントのハッシュまたはチェックサムに基づいてもよい。
【0038】
単一の暗号化鍵を使用するだけでなく、暗号化鍵が更新されてもよい。たとえば、暗号化鍵は、周期的に、たとえば、最後の更新から所定の時間が経過するたびに更新されてもよい。たとえば、1時間おき、1日おきなどに更新されてもよい。いくつかの例では、暗号化鍵は、新しい候補ブロックヘッダ104を受信したことに応答して更新されてもよい。すなわち、ハッシュデバイス201aが、候補PoW解のベースとなる新しい候補ブロックヘッダ104を受信するたびに、新しい暗号化鍵を使用してそれらの解を暗号化してもよい。いくつかの例では、暗号化鍵は、候補ブロックヘッダ104に基づいてもよい。別の例として、暗号化鍵は、ハッシュデバイス201aのリセットまたはリブートに応答して、たとえば、ハッシュデバイス201aが一時的にオフラインになったことに応答して、更新されてもよい。
【0039】
ハッシュデバイス201aは、単一の候補PoW解が作成されるたびに候補PoW解を暗号化するように構成されてもよい。したがって、暗号化された解をハッシュデバイス201aから、たとえばハッシュプール202に出力することができる。これによって、他のハッシュプールが解を使用することが防止される。
【0040】
ハッシュデバイスは、いくつかの例では、所定の困難条件を満たす候補PoW解、すなわち、所定数の先頭ゼロ(たとえば、10個のゼロ)を含む解を暗号化するだけでよい。これらの例では、これらの暗号化された解のみがハッシュプール202に送られる。これによって、ハッシュデバイス201aからハッシュプール202に送られるデータの量が低減する。
【0041】
上記のことは主として、ハッシュデバイス201aが、暗号化されたPoW解をハッシュプール202に送ることに関して説明したが、暗号化されたPoW解は、ハッシュプール202に間接的に送られてもよく、たとえば、暗号化されたPoW解をハッシュプール202に転送するように構成された中継デバイスを介して送られてもよい。
【0042】
図3は、本発明の実施形態によるハッシュデバイス201を概略的に示す。ハッシュデバイス201は、入力インターフェース301と、ハッシュ構成要素302と、暗号化構成要素303と、出力インターフェース304とを備える。
【0043】
入力インターフェース201は、候補ブロックヘッダを取得するように構成される。候補ブロックヘッダ104については図1を参照しながら説明した。候補ブロックヘッダ104は、ブロックチェーントランザクションのセットの表現、たとえば、マークルルート105を備える。候補ブロックヘッダ104は、前のブロックの参照106、タイムスタンプ、および/またはノンス値108を含んでもよい。いくつかの例では、入力インターフェース301はトランザクション103のセットを取得してもよい。それらの例では、入力インターフェース201は、トランザクション103のセットに基づいて候補ブロックヘッダ104を生成することによって候補ブロックヘッダ104を取得するように構成されてもよい。すなわち、入力インターフェース301は、マークルツリーをトランザクション103のセットのマークルルート105を生成するように構築するための構成要素を備えてもよい。入力インターフェース301は、候補ブロックヘッダ104を構築するのに必要な任意の他の情報を取得するように構成されてもよい。たとえば、入力インターフェース301は、ブロックチェーン102の前のブロック101の参照、すなわち、前のブロック101のブロックヘッダを受信するように構成されてもよい。入力インターフェース301は、候補ブロックヘッダ104およびトランザクション103のセットを備える候補ブロックテンプレート101cを取得するように構成されてもよい。データ項目を「取得する」任意のインスタンス(たとえば、候補ブロックヘッダ104または候補ブロックテンプレート101c)は、文脈上他の意味に解すべき場合を除きそのデータ項目を受信することを意味すると見なされてもよい。
【0044】
いくつかの例では、入力インターフェース301は、マイニングソフトウェアに接続されてもよい。たとえば、マイニングソフトウェアは、ハッシュデバイス201に、たとえば、入力インターフェース301を介して、トランザクション103のセットおよび/または候補ブロックヘッダ104を供給するように構成されてもよい。マイニングソフトウェアは、ハッシュデバイス201に追加の情報、たとえば、ブロックチェーン102の前のブロック101の参照106を供給するように構成されてもよい。マイニングソフトウェアは、トランザクション103のセットがハッシュデバイス201に供給される未確認トランザクションのプール107を含むか、またはそうでなければプール107にアクセス可能であってもよい。マイニングソフトウェアは、いくつかの例ではハッシュプール202によって操作されてもよく、したがって、ハッシュデバイス201から独立されてもよい。
【0045】
ハッシュ構成要素302は、少なくとも候補ブロックヘッダ104にハッシュ関数を適用するように構成される。いくつかの例では、ハッシュ構成要素302は、候補ブロックテンプレート101cにハッシュ関数を適用するように構成され、候補ブロックテンプレート101cは、候補ブロックヘッダ104を含む。ハッシュ構成要素302は、入力インターフェース301から受信される入力、たとえば、候補ブロックヘッダ104に基づいて1つまたは複数のハッシュダイジェスト(またはハッシュ値)を生成するように構成される。ハッシュ構成要素302は、複数のハッシュダイジェストを生成してもよい。たとえば、ハッシュ構成要素302は、候補ブロックヘッダ104を複数回ハッシングする単一のハッシュ関数を含んでもよい。追加または代替的に、ハッシュ構成要素302は、複数のハッシュ関数を含んでもよく、各ハッシュ関数は、候補ブロックヘッダ104を1回または複数回ハッシングするように構成される。各ハッシュ関数は、同じハッシュ関数(たとえば、SHA-256)を適用してもよい。代替的に、1つまたは複数のハッシュ関数が異なるハッシュ関数(たとえば、SHA-512)を適用してもよい。ハッシュ関数を適用することは、ハッシュ関数のシーケンスを適用して(たとえば、SHA-256を2度適用して)単一のハッシュダイジェストを生成することを含んでもよい。候補ブロックヘッダ104をハッシングすることへの参照は、文脈上他の意味に解すべき場合を除き少なくとも候補ブロックヘッダ104をハッシングすることを意味すると見なされるべきであることに留意されたい。また、ハッシュダイジェストは候補PoW解と同義であることに留意されたい。
【0046】
ハッシュ構成要素302は、ハッシュダイジェストを暗号化構成要素303に供給するように構成される。暗号化構成要素303は、ハッシュ構成要素302から受信されたハッシュダイジェストを暗号化するように構成される。一般に、任意の暗号化技法を使用してもよい。いくつかの例では、暗号化構成要素303は、入力インターフェース301から暗号化鍵を受信するように構成されてもよく、ハッシュプール202は、暗号化鍵をハッシュデバイス201に送信してもよい。いくつかの例では、暗号化構成要素303は、たとえば、入力インターフェース301から供給されるデータに基づいて暗号化鍵を生成するように構成されてもよい。暗号化構成要素303は、暗号化されたPoW解を出力インターフェース304に供給するように構成される。
【0047】
ハッシュデバイス201、またはより具体的には出力インターフェース304は、LANアクセスのためのローカルエリアネットワーク(LAN)接続を有してもよく、暗号化されたPoW解は、ハッシュデバイス201が位置するローカルエリアネットワークにおいてハッシュプール202によってローカルに消費されるように出力される。追加または代替的に、出力インターフェース304は、WANアクセスのためのワイドエリアネットワーク(WAN)接続を有してもよく、暗号化されたPoW解は、ハッシュデバイス201が位置するネットワークから、WAN(たとえば、インターネット)を介してハッシュプール202にトランスポートされる。
【0048】
ハッシュデバイス201の構成要素のうちの1つまたは複数はソフトウェアにおいて実装されてもよい。すなわち、ハッシュデバイス201は、1つまたは複数のプロセッサ、たとえば、1つまたは複数の中央処理装置(CPU)、アクセラレータプロセッサ(GPU)、特定用途向けプロセッサ、および/またはフィールドプログラマブルゲートアレイ(FPGA)を備える処理装置を備えてもよい。装置は、メモリ、すなわち、非一時的コンピュータ可読媒体の形のコンピュータ可読ストレージを備えてもよい。メモリは、1つまたは複数のメモリ媒体、たとえば、ハードディスクなどの磁気媒体、ソリッドステートドライブ(SSD)などの電子媒体、フラッシュメモリもしくはEEPROM、および/または光ディスクドライブなどの光学媒体を使用する1つもしくは複数のメモリユニットを備えてもよい。ハッシュデバイス201は、少なくとも1つのユーザ端末、たとえば、デスクトップもしくはラップトップコンピュータ、タブレット、スマートフォン、またはスマートウォッチなどのウェアラブルデバイスを備えてもよい。代替的または追加的に、ハッシュデバイス201は、ユーザ端末を介してアクセスされるクラウドコンピューティングリソースなど(クラウドコンピューティングリソースは、1つまたは複数のサイトに実装される1つまたは複数の物理サーバデバイスのリソースを含む)の1つまたは複数の他のネットワーク化リソースを備えてもよい。
【0049】
追加または代替的に、ハッシュデバイス201のうちの1つまたは複数は、専用ハードウェアの形をとってもよい。たとえば、ハッシュ構成要素302は、ハッシュアルゴリズムを実施するように特定的に構成された1つまたは複数のハッシュデバイスを備えてもよい。たとえば、ハッシュ構成要素302は、たとえば、SHA-256ハッシュアルゴリズムを実施するように構成された1つまたは複数の特定用途向け集積回路(ASIC)マイニングデバイスを備えてもよい。一般に、任意のハッシュアルゴリズムを使用してハッシュダイジェストを作成してもよい。
【0050】
いくつかの例では、ハッシュデバイス201はハッシュファームによって操作されてもよい。ハッシュファームは複数のハッシュデバイスを備えてもよい。ハッシュデバイス201は、たとえば、入力インターフェース301を介してハッシュファームに接続されてもよい。いくつかの例では、候補ブロックヘッダ104は、(たとえば、ハッシュプール202から)ハッシュファームに送られてもよく、ハッシュファームは次いで、候補ブロックヘッダ104をハッシュデバイス201に供給する。同様に、ハッシュデバイス201は、暗号化されたPoW解をハッシュファームに供給し、ハッシュファームは次いで、暗号化されたPoW解をハッシュプール202に供給する。
【0051】
上述のように、ハッシュプール202は、ハッシュデバイス201aから暗号化されたPoW解を受信して復号し、したがって、候補PoW解を得るように構成される。ハッシュプール202は、ハッシュデバイス201aによって使用される暗号化鍵に対応する復号鍵を使用し、復号鍵は、いくつかの例では、暗号化鍵と同じである。候補PoW解が、ブロックチェーンネットワークによって設定された所定の困難設定値を満たす場合、ハッシュプール202は、PoW解をブロック解として使用してもよい。次いで、ブロック解を含むブロックをブロックチェーンネットワーク204に送ってもよい。
【0052】
いくつかの実施形態によれば、ハッシュプール202は、ハッシュデバイス201aから受信される候補PoW解の数をカウントして、コントラクトが履行されているかどうかを検査する。コントラクトは、ハッシュデバイス201aによってハッシュプール202に送るべきPoW解の数を明記してもよい。コントラクトは、所定の期間、たとえば、1時間、1日、1週間などにわたって特定の数の候補PoW解を受信しなければならないことを明記してもよい。これらの実施形態では、ハッシュプール202は、コントラクトが履行された場合にのみハッシュデバイス201a(またはハッシュデバイス201aのオペレータ、たとえば、ハッシュファーム)に報酬を与えてもよい。さらに、有効なブロック解が提供された場合にのみ報酬が与えられてもよい。
【0053】
最も一般的な実施形態では、ハッシュプール202は暗号化されたPoW解をカウントしてコントラクトが履行されたかどうかを判定する必要はないことに留意されたい。しかし、少なくともいくつかの例では、暗号化されたPoW解のみがカウントされる。
【0054】
ハッシュプール202は、1つまたは複数のプロセッサ、たとえば、1つまたは複数の中央処理装置(CPU)、アクセラレータプロセッサ(GPU)、特定用途向けプロセッサ、および/またはフィールドプログラマブルゲートアレイ(FPGA)を備える処理装置を備えてもよい。ハッシュプール202は、メモリ、すなわち、非一時的コンピュータ可読媒体の形のコンピュータ可読ストレージを備えてもよい。メモリは、1つまたは複数のメモリ媒体、たとえば、ハードディスクなどの磁気媒体、ソリッドステートドライブ(SSD)などの電子媒体、フラッシュメモリもしくはEEPROM、および/または光ディスクドライブなどの光学媒体を使用する1つもしくは複数のメモリユニットを備えてもよい。ハッシュプール202は、少なくとも1つのユーザ端末、たとえば、デスクトップもしくはラップトップコンピュータ、タブレット、スマートフォン、またはスマートウォッチなどのウェアラブルデバイスを備えてもよい。代替的または追加的に、ハッシュプール202は、ユーザ端末を介してアクセスされるクラウドコンピューティングリソースなど(クラウドコンピューティングリソースは、1つまたは複数のサイトに実装される1つまたは複数の物理サーバデバイスのリソースを含む)の1つまたは複数の他のネットワーク化リソースを備えてもよい。
【0055】
図4は例示的な方法400を示す。この方法400のステップのうちのいくつかは任意選択であり、方法400が追加のステップを含んでもよいことが諒解されよう。また、いくつかのステップがハッシュデバイス201aによって実行され、いくつかがハッシュプール202によって実行されることが諒解されよう。ステップ401において、ハッシュデバイス201aは、候補ブロックヘッダ104を、たとえばブロックテンプレート101cの一部として取得する。ステップ402において、ハッシュデバイス201aは、候補ブロックヘッダ104に基づいて、複数の異なる候補PoW解を生成する。それらの候補PoW解は次いで、ステップ403において暗号化され、その後、ステップ404においてハッシュプール202に送られる。ステップ405において、ハッシュプール202は、暗号化されたPoW解を復号し、ステップ406において、復号されたPoW解をカウントして、設定数および/またはハッシュレートについてのコントラクトが履行されたかどうかを判定する。
【0056】
例示的なユースケース
現在、オーバーザカウンター(OTC)ハッシュ先物が存在する。主として、関与するカウンターパートリスクを十分にヘッジするための方法がないので、この市場は非常に薄く、広く取り引きされてはいない。ハッシュレート市場は、最適化されたハッシュアルゴリズムを実行してプルーフオブワークデジタルアセットブロックチェーンをサポートする特定用途向けASICである暗号通過「マイニングリグ」の出現の一部として比較的最近出現した。したがって、この「商品」に基づく金融派生商品市場が適切に機能する方法は完全に明らかであるわけではない。したがって、現在利用可能なOTCハッシュ電力先物の参加者は、原資産を保持するための代理としてこれらの先物を取り引きするスペキュレータおよびヘッジファンドに主として制限されている。また、ハッシュレートは物理的商品ではないので、そのような先物取引において物理的な決済をするのは困難である。しかし、ハッシュレートと、このハッシュレートから作成することのできるデジタルアセットとの間には直接的な関係があり、したがって、アセットのスポット価格とこれらのハッシュレート先物との間には関係がある。すなわち、プールにおいて受信されるハッシュシェアが増えるほど、PoWブロック解が見つかる可能性が高くなり、したがって、より多くのデジタルアセットが作成される。しかし、現在、このベーシスリスクをヘッジすることのできる方法はない。
【0057】
したがって、ハッシュ電力先物を正確に決済し会計処理し、電力先物市場が電力プール(または電力市場、たとえば、PJM、Northwest、ISO-NEなど)を使用して受渡所として働くのとまったく同じようにマイニングプールを使用することによって決済するのを可能にすることが望ましい。既存の電力市場をアナログとして使用することによって、ハッシュレート先物およびスポットマーケットの円滑な運用にまつわる市場の特徴および問題の多くを解消することができ、したがって、流動性の高い市場を発展させることができ、したがって、ハッシュ作成から作成されるデジタルアセットの公正価格を見出すことができる。
【0058】
また、ハッシュリグから得られるハッシュレートを確実に生成し、決済プールにのみ送り、他のどのプールにも送らないデバイスおよびプロセスが望ましい。これによって、ブロックを実際に解いてプールをチートするハッシュ解を「保持する」一般的な問題が解決される。
【0059】
PPLNS(Pay Per Last N Shares)は、ハッシュプールによって使用される支払いアルゴリズムである。これは、稼いだもののみに対して支払う方法であるので、プールオペレータが、支払いを支援するためのブロック報酬を実際には有しないにもかかわらずハッシュコントリビュータに支払う必要が生じるリスクはない。PPLNSは、ハッシャーが利益を共有するプールからのウイニングシェアを保留するのを十分に阻止するが、ウイニングハッシュシェアをハッシュレート先物の物理的な決済を目的としてプールに送らないことを十分に防止することにはならない。したがって、ハッシュレートが「確実に」受信されるようにするさらなる方法が必要である(そうでないとシェアがプールに送られなくなる)。
【0060】
定義
ハッシャー(すなわち、マイナー)-ハッシュリグ(すなわち、ハッシュデバイス)-たとえば、ブロックチェーン上のブロックを解くための有効なSHA256(または他の)ハッシュ解を作成するASICマイニングユニットの所有者。
【0061】
ハッシュファームオペレータ-1つまたは複数の位置におけるハッシュリグ全体を管理し運用し、そのサービスに対して料金を請求するオペレータ。
【0062】
ハッシュプール(すなわち、マイニングプール)-ブロックを組み立てて作成する責任を負うブロックチェーンネットワークノードのオペレータ。これは、ハッシュレート先物用の決済および清算機関に類似している。
【0063】
市場参加者-登録された交換所上のハッシュレート先物の買い手および売り手。ヘッジャー、スペキュレータ、および消費者の3つのタイプがある。
【0064】
ハッシュレートヘッジャー-通常、ハッシャー、ハッシュファームのオペレータ、ヘッジャーのハッシュリグの先物ランプアップスケジュールを認識しており、ハッシュレート作成を将来において売ってハッシュレートの価格を固定し、原デジタル資産価格の変動に対してヘッジするとともに、総ネットワークハッシュ分散におけるボラティリティに対してヘッジすることを望む。ハッシュプールがFPPD(full pay per share)またはPPS(pay per share)を使用している場合、ハッシュレートをハッシュプールに支払う。しかし、ハッシュプールがPPLNS(pay per last n shares)を使用している場合、ハッシャーはプールされた宝くじシステムに参加する場合に非常に似ている。宝くじがプールされ、プールが勝利した場合、ジャックポットは、ウイニングブロックにかけたハッシュの割合に応じてプールハッシュコントリビュータに比例配分される(ブロックに至るまでのn個のシェア)。
【0065】
ハッシュレートヘッジャーは、将来におけるある点で単位時間当たり固定数のハッシュを売る。ハッシュレートヘッジャーは、たとえば、1d、3d、1w、1mなどについて1秒当たり100THを売る。THはテラハッシュを表すことに留意されたい。したがって、コントラクトの買い手は、給送されるハッシュレートが実際に「良好である」ことの計量および保証が必要である。停電またはハッシュリグ故障のようなイベントが起こり、したがって、給送されたすべてのハッシュをカウントアップし、平均値を算出し、数の計算が、決済および清算機関として働くことを望むプールに必要なサービスであることを確認する。
【0066】
ハッシュレートスペキュレータ-実際に資産を所有せずにデジタルアセットへのリスクエクスポージャを望む場合があるヘッジファンド。総ネットワークハッシュ分散および作成における変化に対するリスクエクスポージャを望む場合がある人。ハッシュリグ売上に従ってハッシュレート先物を空売りすることによって利鞘を高めることを望む場合があるASIC製造業者。
【0067】
ハッシュレート消費者-ハッシュレートの自然な買い手、トランザクションプロセッサは、ブロックチェーン上のトランザクションをブロックに含めるためにハッシュレートを必要とした。どのくらいのハッシュレートが必要であるかは、ハッシュレート消費者のトランザクション処理契約に関する必要なサービス品質保証契約(SLA)に正比例する。
【0068】
ハッシュプール-ブロックチェーン上のトランザクションを収集し、ブロックテンプレートを構築し、次いでこのブロックテンプレートをハッシュ作成者に送り、プルーフオブワークハッシングを使用することによってハッシュ解を見つける責任を負うエンティティ。ハッシュプールは、ハッシュ作成者に有効なブロックを作成することによって稼いだ任意のブロック報酬のシェアを支払うことによってハッシュ作成者の仕事を償う。ハッシュプールは、コンピューティングパワーを組み合わせてプールの上述のアクションを実行するマイニングノードのグループであってもよい。
【0069】
決済および清算機関は、交換所での1日分の取引を決済するかまたは清算するために使用される。
【0070】
あらゆるハッシュコントラクトは給送プールを有する。各コントラクトは、ハッシュ電力が給送されるハッシュプールを指定しなければならない。そのハッシュプールは、ハッシュ電力の計量、および作成されたコイン(たとえば、ビットコイン)の交換クライアント(コントラクトの買い手)への給送に責任を負う。コントラクトの期限が切れると、物理的に決済する場合、ハッシュプールは、プールに到達するハッシュがコントラクトを履行することを予期する。プールは、ハッシュ電力の給送を必要とする当事者に給送指令を与えてもよい。これらの指令は、給送者および給送位置に一意のフィンガープリントと、一意のファクター(たとえば、コントラクトIDと連結されたタイムスタンプ)とを含んでもよく、ハッシングされてワンタイム事前共有鍵を作成する。これは次いで、ワンタイムパッドとして使用され、給送プールに送られ給送コントラクトのためにカウントされるハッシュシェアを(たとえば、XORまたはモジュール加算を使用して)暗号化してもよい。
【0071】
さらに、参加者が給送に適合されたファームウェアを任意に実行する場合、ハッシュリグと給送プールとの間でシェアが失われることがないように給送プールを保証することができるようにハッシュ電力を確保することができる。このハッシュ電力が確保されたので、決済および清算手数料ならびにアカウントを維持するのに必要なマージンを安くすることができる。ハッシュリグ上にインストールされたファームウェアのフィンガープリントの検査を実行して、改ざんされていないことを確認することができる。たとえば、ファームウェアのチェックサム(たとえば、sha256ハッシュ)自体を(秘密共有のために)秘密鍵の一部として使用してもよい。ハードウェア呼を使用してファームウェアのバイナリダンプを検査してもよい。ファームウェアがハッシュリグから除外されるシェアを暗号化する。ハッシュを他の場所へ送る場合、ハッシュは復号可能ではない。この方法では、所与のハッシュリグをハイジャックして給送プールによって対処されていない代替ブロックを解くことはできない。
【0072】
プールに入るハッシュ電力を「測定し計量する」能力があれば、ハッシュプールは事実上電力デリバティブビジネスにおける「給送位置」に類似する。給送位置は、電力先物が給送されるときに給送されるkWhの「計量点」である。電力先物は、特定の価格について将来における特定の時点でkWhの特定の量を給送するコントラクトである。そのようなコントラクトの保持者は、給送の時間における電力のスポット価格に応じて、(時間単位の)現金決算を要求するか、または電力の給送を実際に受けることができる。現在、ハッシュ電力市場は、現金決済のみを有し、ハッシュ電力の実際の給送は可能ではない。このため、市場は非常に投機性が高く、ハッシュ作成能力を所有するマイナーのヘッジ機器としてそれほど有用ではない。プールをハッシュ電力用の計量デバイスとして使用する本特許および方法では、物理ハッシュ電力を受信し測定することができ、したがって、ハッシュ先物を物理的に決済することができる。このことは、この市場の有用性および流動性に有利である。
【0073】
以下に計量ハッシュの例を示す。買い手は1日分として1秒当たり100THを購入した場合、単に86400*1兆ハッシュをカウントして実行することができる。しかし、そのことは、各ハッシュがネットワークを介してハッシュリグからハッシュプールに送られることを意味する。しかし、これはインターネットを介して送るには多すぎるので好ましくない。したがって、「困難ハッシュ目標」が設定され、すなわち、(純粋にランダムな機会を介して)たとえば、4つの先頭の0を有する場合にのみハッシュ値が送られることにする。統計的には、任意の所与のハッシュが4つの先頭ゼロを有する機会は、厳密には10000回の機会において1/16^4~=1.5である。したがって、ハッシュデバイスは、このようにセットアップされた場合、統計的には10000回ごとに1回ハッシュシェアを送るに過ぎない。さらに、通常、困難目標(先頭ゼロの数)は、ハッシュデバイスが10秒程度おきに1度のみハッシュシェアを放出するように設定される。このことは、たとえば、1秒当たり10THハッシングする機械の場合、目標は、ハッシュが目標に一致する機会が100,000,000,000,000(10*10兆)回おきに1回になるように、設定される。そのように、デバイスは一般に、シェアを10秒おきに放出する。統計的に直前の24時間の期間に約8640のシェアを送る限り、良好であると仮定され、コントラクトは履行されていると仮定される。しかし、問題は、これがサイコロ転がしのようなものであり、統計的には完全に規則的に動く機械はなく、統計的な「振れ」があり、それによって、機械が単に不運であるわけではないことを明確に示すことは困難である。また、仕様では機械は多少規則的に動き、したがって、機械の動作が不十分であるかどうかを示すか、または機械がハイジャックされているかどうかを示すことも困難である。したがって、これらのハッシュ値を他の場所では使用できなくなるようにハッシュを暗号化すべきである。
【0074】
ハッシュデバイス上にカスタムファームウェアを有することの代替策は、ネットワークスイッチの前方に配置され、プールの代理として働くことができる、(たとえば、FPGAに形成された)中間デバイスを有することである。ハッシュユニットは、このユニットをプールノードと同様に制御する。このデバイスの目的は、プールサーバを用いて認証し、ワンタイム事前共有鍵について交渉し、中間デバイスを通過するすべてのシェアを保証するために暗号化することである。また、IPアドレスを介して接続されたすべてのハッシュユニットを単に追跡し、任意の不規則なアクティビティを追跡し、すなわち、プロキシから切断することが可能である場合もある。このことのみを使用してハッシュユニットがハッシュの保証に寄与することを保証してもよい。
【0075】
要約すると、本発明の実施形態はハッシュ作成を保証するためのデバイスを提供する。デバイスは、あらゆるPoWシェアをOTP(ワンタイプパッド)を用いて符号化する。このOTPは受信側において排他的論理和を取られる。このフィルタを通過するPoWシェアのみを総シェアに至るまでカウントする。これによって、生成されたシェアは、ハッシュ電力についての給送位置として働くマイニングプールにおいてのみ受け入れることができる。
【0076】
ハッシュ電力用の測定デバイスを使用して、ハッシュ電力先物市場が電力先物市場と極めて同様に働くのを可能にすることができる。このことは、この市場の流動性および有用性を大幅に拡張することを可能にし、ブロックチェーンシステム上のプルーフオブワークマイナーについてのこの市場の有用性が著しく向上することを意味する。ハッシュ先物を物理的に決済するための効果的な決済および清算プロセスを作成することによって、ハッシュ先物市場を電力市場に類似させることができ、プールに送られるハッシュ電力が信頼できることを保証することができる任意のハッシュプールは、プラットフォームを介して決済されるすべてのコントラクトについて決済および清算手数料を課すことができる。
【0077】
結論
上記の実施形態が一例としてのみ記載されたことが諒解されよう。
【0078】
より一般的には、本明細書で開示する一態様によれば、ハッシュ値をハッシュデバイスからハッシュプールに給送する、コンピュータによって実施される方法であって、ブロックチェーンの候補ブロックについての候補ブロックヘッダを取得するステップと、候補ブロックヘッダに対して複数のハッシュ演算を実行して複数の候補プルーフオブワーク(PoW)解を生成するステップと、候補PoW解の各々を暗号化鍵を用いて暗号化するステップと、暗号化された候補PoW解をハッシュプールに送るステップであって、ハッシュプールが、暗号化された候補PoW解を復号するように構成される、ステップとを含む方法が提供される。
【0079】
実施形態では、暗号化鍵は、ワンタイムパッド暗号化鍵であってもよい。
【0080】
実施形態では、候補PoW解の各々は、XOR暗号化またはモジュール加算を使用して暗号化されてもよい。
【0081】
実施形態では、方法は、ハッシュプールから暗号化鍵を取得するステップまたは暗号化鍵をハッシュプールに送るステップを含んでもよい。
【0082】
実施形態では、方法は、ハッシュプールとの共有秘密を確立するステップを含んでもよく、暗号化鍵は、ハッシュプールから取得されならびに/またはハッシュプールに送られる前に共有秘密を用いて暗号化される。
【0083】
実施形態では、方法は、ハッシュデバイスの秘密鍵およびハッシュプールの公開鍵に基づいて共有秘密を算出するステップを含んでもよく、ハッシュプールは、ハッシュプールの秘密鍵およびハッシュデバイスの公開鍵に基づいて共有秘密を算出することができる。
【0084】
実施形態では、ハッシュデバイスのファームウェアは、フィンガープリントを有してもよく、ハッシュデバイスの秘密鍵は、フィンガープリントのチェックサムに基づいてもよい。
【0085】
実施形態では、フィンガープリントは、既存の公開鍵フィンガープリントであってもよい。
【0086】
実施形態では、方法は、暗号化鍵を更新するステップを含んでもよい。
【0087】
実施形態では、暗号化鍵は、事前に定義されたイベントのセットのうちの1つに応じて更新されてもよく、事前に定義されたイベントのセットは、ハッシュデバイスのリブートと、暗号化鍵の最後の更新からの所定の期間と、新しい候補ブロックヘッダを受信することとを含む。
【0088】
実施形態では、方法は、暗号化されるハッシュプールに送られるすべての候補PoW解を実施するステップを含んでもよい。
【0089】
実施形態では、方法は、所定の困難条件を満たす候補PoW解のみを暗号化するステップを含んでもよい。
【0090】
実施形態では、前記送るステップは、暗号化された候補PoW解をハッシュプールに転送するように構成された中間デバイスへの暗号化された候補PoW解を送るステップを含んでもよい。
【0091】
本明細書で開示される別の態様によれば、ハッシュデバイスであって、ブロックチェーンの候補ブロックについての候補ブロックヘッダを取得するように構成された入力インターフェースと、少なくとも候補ブロックヘッダにハッシュ関数を1回または複数回適用するように構成されたハッシュ構成要素であって、少なくとも候補ブロックヘッダにハッシュ関数を適用するたびに、それぞれの候補PoW解が生成されるハッシュ構成要素と、候補PoW解の各々を暗号化するように構成された暗号化構成要素と、候補PoW解をハッシュプールに出力するように構成された出力インターフェースとを備えるハッシュデバイスが提供される。
【0092】
本明細書で開示される別の態様によれば、ハッシュデバイスからハッシュ値を取得する、コンピュータによって実施される方法であって、ハッシュデバイスから複数の候補PoW解を受信するステップと、所定の期間にわたってハッシュデバイスから受信される候補PoW解の数をカウントするステップと、候補PoW解の数が候補PoW解の期待数を満たすかどうかに基づいてコントラクトが履行されたかどうかを判定するステップとを含む方法が提供される。
【0093】
実施形態では、方法は、所定の困難条件が候補PoW解のうちの1つによって満たされる条件で、その候補PoW解を含むブロックチェーンブロックをブロックチェーンネットワークに送るステップを含んでもよい。
【0094】
実施形態では、方法は、候補ブロックヘッダをハッシュデバイスに送るステップを含んでもよい。
【0095】
実施形態では、ハッシュデバイスから受信された複数の候補PoW解の各々は、暗号化鍵を用いて暗号化されてもよく、方法は、複数の暗号化された候補PoW解の各々を復号するステップと、暗号化鍵に対応する復号鍵を使用して複数の候補PoW解を取得するステップとを含んでもよい。
【0096】
実施形態では、暗号化鍵は、ワンタイムパッド暗号化鍵であってもよい。
【0097】
実施形態では、候補PoW解の各々は、XOR暗号化またはモジュール加算を使用して暗号化されてもよい。
【0098】
実施形態では、方法は、ハッシュデバイスから暗号化鍵を取得するステップ、または暗号化鍵をハッシュデバイスに送るステップを含んでもよい。
【0099】
実施形態では、方法は、ハッシュデバイスとの共有秘密を確立するステップを含んでもよく、暗号化鍵は、ハッシュデバイスから取得されるかまたはハッシュデバイスに送られる前に共有秘密を用いて暗号化される。
【0100】
本明細書で開示される別の態様によれば、コンピュータ機器であって、1つまたは複数のメモリユニットを備えるメモリと、1つまたは複数の処理ユニットを備える処理装置とを備え、メモリは、処理装置上で実行されるように構成されたコードを記憶し、コードは、処理装置上で実行されたときに上述の実施形態のうちのいずれかの方法を実施するように構成されるコンピュータ機器が提供されてもよい。
【0101】
本明細書で開示される別の態様によれば、コンピュータ可読ストレージ上で具体化され、コンピュータ機器上で実行されたときに上述の実施形態のいずれかに記載の方法を実行するように構成されたコンピュータプログラムが提供されてもよい。
【0102】
本明細書で開示される別の態様によれば、ハッシュデバイスおよびハッシュプールのアクションを含む方法が提供されてもよい。
【0103】
本明細書で開示される別の態様によれば、ハッシュデバイスおよびハッシュプールを備えるシステムが提供されてもよい。
【0104】
開示される技法の他の変形例またはユースケースは、本明細書における開示が与えられた後に当業者に明らかになろう。本開示の範囲は、説明した実施形態によって限定されず、添付の特許請求の範囲によってのみ限定される。
【符号の説明】
【0105】
101c 候補ブロック
101g ジェネシスブロック
101n ブロック
102 ブロックチェーン
103 トランザクション
104 ブロックヘッダ
105 マークルルート
106 参照
107 プール
108 第1のノンスフィールド
200 システム
201a、201b ハッシュデバイス
202 ハッシュプール
203a、203b、203c クライアントアプリケーション
301 入力インターフェース
302 ハッシュ構成要素
303 暗号化構成要素
304 出力インターフェース
400 方法
D1、D2 リーフノード
Tx1 トランザクション
図1A
図1B
図2
図3
図4
【国際調査報告】