(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-01
(45)【発行日】2024-08-09
(54)【発明の名称】POW暗号通貨のためのTEEベースマイニングプール
(51)【国際特許分類】
H04L 9/32 20060101AFI20240802BHJP
G06Q 20/38 20120101ALI20240802BHJP
【FI】
H04L9/32 200Z
G06Q20/38 310
(21)【出願番号】P 2022517902
(86)(22)【出願日】2020-09-25
(86)【国際出願番号】 EP2020076931
(87)【国際公開番号】W WO2021213691
(87)【国際公開日】2021-10-28
【審査請求日】2023-07-10
(32)【優先日】2020-04-23
(33)【優先権主張国・地域又は機関】EP
(73)【特許権者】
【識別番号】517451940
【氏名又は名称】エヌイーシー ラボラトリーズ ヨーロッパ ゲーエムベーハー
(74)【代理人】
【識別番号】100108453
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】カール・ヴースト
(72)【発明者】
【氏名】カリ・コスティアイネン
(72)【発明者】
【氏名】ガッサン・カラメ
(72)【発明者】
【氏名】スルジャン・カプクン
【審査官】平井 誠
(56)【参考文献】
【文献】米国特許出願公開第2019/0295049(US,A1)
【文献】特開2019-106612(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/32
G06Q 20/38
(57)【特許請求の範囲】
【請求項1】
マイニングプールを運用するための方法であって、
マイニングプールオペレータ(1)によって、ブロックチェーンノード(2)と少なくとも1つのエンクレーブ(6)とを実行するステップであって、前記ブロックチェーンノード(2)は、前記エンクレーブ(6)に、ならびにブロックチェーンP2Pネットワーク(3)および公表されているサイト(4)に接続される、ステップと、
前記ブロックチェーンノード(2)によって、前記ブロックチェーンP2Pネットワーク(3)から受信される、到来するブロックおよびトランザクションの正当性を検査し、前記受信されたブロックおよびトランザクションについての情報を前記少なくとも1つのエンクレーブ(6)に転送するステップと、
前記少なくとも1つのエンクレーブ(6)によって、状態透明性ログを生成し、かつ前記ブロックチェーンノード(2)から受信された前記ブロックおよびトランザクションの情報を前記状態透明性ログに挿入するステップと、
前記少なくとも1つのエンクレーブ(6)によって、前記状態透明性ログに署名し、前記状態透明性ログを前記公表されているサイト(4)において公開するステップと
を含む、方法。
【請求項2】
前記状態透明性ログに挿入された前記ブロックおよびトランザクションの情報が、前記受信されたブロックのブロックヘッダと、前記受信されたブロック内に含まれる前記トランザクションのハッシュと、前記受信されたブロック内に含まれる前記トランザクションについての追加の情報とを含む、請求項1に記載の方法。
【請求項3】
前記受信されたブロック内の前記トランザクションについてどのタイプの追加情報が、前記状態透明性ログ内に含まれるかについての決定が、前記少なくとも1つのエンクレーブ(6)のエンクレーブコード内で規定される規則、特に包含規則に基づいて行われる、請求項2に記載の方法。
【請求項4】
前記少なくとも1つのエンクレーブ(6)によって、ワークパケットをセキュアなチャネルを介してマイナー(7)に送信し、前記マイナー(7)が部分的PoWを発見すると前記マイナー(7)からシェアを応答として受信するステップと、
前記少なくとも1つのエンクレーブ(6)によって、前記受信されたシェアを検査し、報酬スキームに基づいて前記マイナー(7)に対する支払いトランザクションを生成するために、前記シェアを使用するステップと
をさらに含む、請求項1から3のいずれか一項に記載の方法。
【請求項5】
前記ブロックチェーンノード(2)によって、前記少なくとも1つのエンクレーブ(6)によって生成された前記支払いトランザクションを周期的に受信するステップと、
前記受信された支払いトランザクションを前記ブロックチェーンP2Pネットワーク(3)にブロードキャストするステップと
をさらに含む、請求項4に記載の方法。
【請求項6】
前記少なくとも1つのエンクレーブ(6)によって、有効なブロックをマイナー(7)から受信するステップと、
前記少なくとも1つのエンクレーブ(6)によって、そのハッシュを前記状態透明性ログ内に含め、前記有効なブロックおよび前記状態透明性ログを前記ブロックチェーンノード(2)に転送するステップと、
前記ブロックチェーンノード(2)によって、前記有効なブロックを前記ブロックチェーンP2Pネットワーク(3)にブロードキャストし、前記状態透明性ログを前記公表されているサイト(4)において更新するステップと
をさらに含む、請求項1から5のいずれか一項に記載の方法。
【請求項7】
前記マイニングプールオペレータ(1)によって、前記少なくとも1つのエンクレーブ(6)を用いて認証を実行し、認証声明を前記公表されているサイト(4)上に公開するステップをさらに含む、請求項1から6のいずれか一項に記載の方法。
【請求項8】
前記状態透明性ログに署名するために前記少なくとも1つのエンクレーブ(6)によって使用される秘密鍵が、前記エンクレーブ(6)の再始動ごとに新しく生成される、請求項1から7のいずれか一項に記載の方法。
【請求項9】
前記マイニングプールオペレータ(1)が2つのエンクレーブ(6.1、6.2)を実行し、前記エンクレーブ(6.1、6.2)が互いに相互認証を実行し、その間に前記エンクレーブ(6.1、6.2)が鍵を交換し、かつ互いの間にセキュアなチャネルを確立する、請求項1から8のいずれか一項に記載の方法。
【請求項10】
前記2つのエンクレーブのうちの第1のエンクレーブ(6.1)は前記ブロックチェーンノード(2)と相互作用し、前記2つのエンクレーブのうちの第2のエンクレーブ(6.2)は前記マイニングプールに接続するマイナー(7)と相互作用する、請求項9に記載の方法。
【請求項11】
マイニングプールオペレータ(1)によって実行されるマイニングプール運用システムであって、前記システムは、
ブロックチェーンノード(2)と、
少なくとも1つのエンクレーブ(6)と
を備え、前記ブロックチェーンノード(2)は、前記エンクレーブ(6)に、ならびにブロックチェーンP2Pネットワーク(3)および公表されているサイト(4)に接続され、
前記ブロックチェーンノード(2)は、前記ブロックチェーンP2Pネットワーク(3)から受信される、到来するブロックおよびトランザクションの正当性を検査することと、前記受信されたブロックおよびトランザクションについての情報を前記少なくとも1つのエンクレーブ(6)に転送することとを行うように構成され、
前記少なくとも1つのエンクレーブ(6)は、状態透明性ログを生成することと、前記ブロックチェーンノード(2)から受信された前記ブロックおよびトランザクションの情報を前記状態透明性ログに挿入することと、前記状態透明性ログに署名することとを行うように構成され、
前記ブロックチェーンノード(2)は、前記署名された状態透明性ログを前記公表されているサイト(4)において公開するようにさらに構成される、
マイニングプール運用システム。
【請求項12】
前記少なくとも1つのエンクレーブ(6)は、
ワークパケットをセキュアなチャネルを介してマイナー(7)に送信することと、
前記マイナー(7)が部分的PoWを発見すると前記マイナー(7)からシェアを応答として受信することと、
前記受信されたシェアを検査し、報酬スキームに基づいて前記マイナー(7)に対する支払いトランザクションを生成するために、前記受信されたシェアを使用することと
を行うように構成される、請求項11に記載のシステム。
【請求項13】
前記ブロックチェーンノード(2)は、
前記少なくとも1つのエンクレーブ(6)によって生成された前記支払いトランザクションを周期的に受信することと、
前記受信された支払いトランザクションを前記ブロックチェーンP2Pネットワーク(3)にブロードキャストすることと
を行うように構成される、請求項12に記載のシステム。
【請求項14】
前記少なくとも1つのエンクレーブ(6)は、有効なブロックをマイナー(7)から受信することと、そのハッシュを前記状態透明性ログ内に含めることと、前記有効なブロックおよび前記状態透明性ログを前記ブロックチェーンノード(2)に転送することとを行うように構成され、
前記ブロックチェーンノード(2)は、前記有効なブロックを前記ブロックチェーンP2Pネットワーク(3)にブロードキャストすることと、前記状態透明性ログを前記公表されているサイト(4)において更新することとを行うように構成される、請求項11から13のいずれか一項に記載のシステム。
【請求項15】
第1のエンクレーブ(6.1)と第2のエンクレーブ(6.2)とを備え、前記エンクレーブ(6.1、6.2)は、互いに相互認証を実行し、その間に前記エンクレーブ(6.1、6.2)は、鍵を交換することと、互いの間にセキュアなチャネルを確立することとを行うように構成され、
前記第1のエンクレーブ(6.1)は、前記ブロックチェーンノード(2)と相互作用するように構成され、前記第2のエンクレーブ(6.2)は、前記マイニングプールに接続されたマイナー(7)と相互作用するように構成される、請求項11から14のいずれか一項に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、マイニングプールを運用するための方法に関する。さらに、本発明は、マイニングプールオペレータによって実行されるマイニングプール運用システムに関する。
【背景技術】
【0002】
ビットコインが創出されたとき(Satoshi Nakamoto、ビットコイン:ピアツーピア電子キャッシュシステム、2008年を参照)、そのセキュリティは、多数のマイニングパワーは誠実なエンティティの制御のもとにあり、かつ、このマイニングパワーは多くの当事者の間に分散される(「1CPU-1投票」という比喩によって例示される)という仮定に基づいていた。
【0003】
それ以来、ビットコインネットワーク内の総合的マイニングパワーは、着実に増加した。これは、部分的には、マイニングハードウェア(たとえば、より効率的なASIC)における進歩に起因するが、より多数のマイナーにも起因する。このため、単一のマイナーに対する支払い間の期間に対する変動は、支払いが極めて不規則になる程度まで増加した。同じ変化は、イーサリアム(Gavin Wood、イーサリアム:セキュアな分散型の一般化されたトランザクション元帳、イーサリアムプロジェクトイエローペーパー、2014年を参照)など、他のプルーフオブワーク(PoW)暗号通貨に発生した。
【0004】
これは、多くのマイナーが彼らのマイニングパワーを提供し、すべてのブロック報酬は、彼らが提供したハッシュパワーに応じて参画者の間で分配される、大きいマイニングプールの創出につながった。このハッシュパワーは、より低い難易度を与えられたプルーフオブワークパズルに対する解を提示する、いわゆるシェアを提示することに基づいて測定される。彼らのマイニングパワーをプールすることによって、マイナーは、より一層規則的であるがより小さい支払いを得ることになり、それゆえ、単一のマイナーに対するリスクは低減される。
【0005】
マイニングプールに参画することは、マイナーにとってほぼ間違いなく有益ではあるが、それは、同時に、PoW暗号通貨における集中化につながる。なぜならば、極めて少数のマイニングプールが共に、多数のマイニングパワーを制御する(Arthur Gervais、Ghassan O Karame、Vedran CapkunおよびSrdjan Capkun、ビットコインは分散型通貨であるか、IEEE security& privacy、12(3):54-60、2014年を参照)からである。集中化は、それ自体は問題ではないが、それが、根本的な信頼の前提を実質的に変化させるならば、問題となり得る。
【0006】
この信頼の前提の変化は、マイニングプールにおいて、大部分のプールが、どのトランザクションが含まれるか、どのブランチがフォークの場合に選択されるか、および誰が個々のマイナーに対する報酬を彼らが提出したシェアに基づいて正しく支払う役割を担うかなどの決定を行う、集中型プールオペレータによって運用される場合である。したがって、集中型プールのオペレータは、強大なパワーを保持する。なぜならば、4つだけのマイニングプールが共に、ビットコインにおける多数のハッシュパワーを提供するからである。このパワーは、利己的なマイニングを含む大量の攻撃(Ittay EyalおよびEmin Gun Sirer、大多数は十分ではない:ビットコインマイニングは脆弱である、金融暗号化とデータセキュリティに関する国際会議、436~454ページ、Springer、2014年を参照)、および二重支払い(Arthur Gervais、Ghassan O Karame、Karl Wust、Vasileios Glykantzis、Hubert RitzdorfおよびSrdjan Capkun、プルーフオブワークブロックチェーンの決定的証拠のセキュリティおよび実績について、コンピュータおよび通信セキュリティに関する2016年のACM SIGSAC会議の会議記録、3~16ページ、ACM、2016年を参照)に対して悪用される可能性があり、参加者は、多数のマイニングパワーの代わりに小セットのプールオペレータを信頼することが要求される。それは、同じく、プール内で参画する個々のマイナーに対して信頼の前提を変化させる。なぜならば、彼らは、報酬の正しい支払いに対してオペレータを信頼する必要があるからである。
【0007】
それゆえ、最初の前提は変化している。マイナーのコンピューティングパワーに対する管理権を有するマイナーの大きいセットが、信頼されるために必要である場合ではもはやない。代わりに、今や、マイニングプールプロバイダの小さいセットが、信頼されるために必要である。なぜならば、彼らが、マイニングパワーの大部分を管理するからである。
【0008】
P2Pool(ビットコインウイキ- P2Pool、https://en.bitcoin.it/wiki/P2Pool、2019年を参照)およびSmartPool (Loi Luu、Yaron Velner、Jason TeutschおよびPrateek Saxena、SmartPool:実際に分散されプールされたマイニング、第26回{USENIX}セキュリティシンポジウム({USENIX}セキュリティ17)、1409~1426ページ、2017年を参照)などの既存の提案は、この問題を解決するための分散化に重点を置いている。しかしながら、集中型解決策は、より効率的でより有利であることが証明されており、使用が容易であり、したがって、個々のマイナーからの努力をあまり必要とせず、それにより、利益重視のマイナーがそのような分散型プールに切り替えることが防止された。
【0009】
マイニングプールを完全に分散化しようとせず、彼ら自身でブロックヘッダをアセンブルするためのオプションをマイナーに与えるgetblocktemplate(たとえば、ビットコインウイキ- getblocktemplate、https://en.bitcoin.it/wiki/Getblocktemplate、2019年を参照)などの提案でさえ、実際にはあまり使用されない。なぜならば、それは、マイナーが、プールオペレータからヘッダを受信してプルーフオブワークを解くだけのStratumなどのプロトコルを単に実行する方がより容易であるからである。
【先行技術文献】
【非特許文献】
【0010】
【文献】Satoshi Nakamoto、ビットコイン:ピアツーピア電子キャッシュシステム、2008年
【文献】Gavin Wood、イーサリアム:セキュアな分散型の一般化されたトランザクション元帳、イーサリアムプロジェクトイエローペーパー、2014年
【文献】Arthur Gervais、Ghassan O Karame、Vedran CapkunおよびSrdjan Capkun、ビットコインは分散型通貨であるか、IEEE security& privacy、12(3):54-60、2014年
【文献】Ittay EyalおよびEmin Gun Sirer、大多数は十分ではない:ビットコインマイニングは脆弱である、金融暗号化とデータセキュリティに関する国際会議、436~454ページ、Springer、2014年
【文献】Arthur Gervais、Ghassan O Karame、Karl Wust、Vasileios Glykantzis、Hubert RitzdorfおよびSrdjan Capkun、プルーフオブワークブロックチェーンの決定的証拠のセキュリティおよび実績について、コンピュータおよび通信セキュリティに関する2016年のACM SIGSAC会議の会議記録、3~16ページ、ACM、2016年
【文献】ビットコインウイキ- P2Pool、https://en.bitcoin.it/wiki/P2Pool、2019年
【文献】Loi Luu、Yaron Velner、Jason TeutschおよびPrateek Saxena、SmartPool:実際に分散されプールされたマイニング、第26回{USENIX}セキュリティシンポジウム({USENIX}セキュリティ17)、1409~1426ページ、2017年
【文献】- getblocktemplate、https://en.bitcoin.it/wiki/Getblocktemplate、2019年
【文献】Meni Rosenfeld、ビットコインをプールされたマイニング報酬システムの分析、arXiv preprint arXiv: 1112.4980、2011年
【文献】getblocktemplate(Luke Dashjr、getblocktemplate - Fundamentals、2012年
【文献】Matt Corallo、BetterHash マイニングプロトコル、2018年
【文献】Pavel Moravec、Jan Capek、およびMatt Corallo、Stratum V2仕様、2019年
【発明の概要】
【発明が解決しようとする課題】
【0011】
本発明の目的は、プールオペレータがマイニングプールを攻撃のために使用せず、マイニング報酬に信頼性を与えることを確保する方法で、マイニングプールおよびマイニングプール運用システムを運用するための方法を改善し、さらに発展させることである。
【課題を解決するための手段】
【0012】
本発明によれば、上述の目的は、マイニングプールを運用するための方法によって達成され、本方法は、マイニングプールオペレータによって、ブロックチェーンノードおよび少なくとも1つのエンクレーブを実行するステップであって、ブロックチェーンノードは、エンクレーブならびにブロックチェーンP2Pおよび公表されているサイトに接続される、ステップと、ブロックチェーンノードによって、ブロックチェーンP2Pネットワークから受信される、到来するブロックおよびトランザクションの正当性を検査し、受信されたブロックおよびトランザクションについての情報を少なくとも1つのエンクレーブに転送するステップと、少なくとも1つのエンクレーブによって、状態透明性ログを生成し、ブロックチェーンノードから受信されたブロックおよびトランザクションの情報を状態透明性ログに挿入するステップと、少なくとも1つのエンクレーブによって、状態透明性ログに署名し、状態透明性ログを公表されているサイトにおいて公開するステップとを含む。
【0013】
さらに、上述の目的は、マイニングプールオペレータによって実行されるマイニングプール運用システムによって達成され、システムは、ブロックチェーンノードと少なくとも1つのエンクレーブとを含み、ブロックチェーンノードは、エンクレーブならびにブロックチェーンP2Pネットワークおよび公表されているサイトに接続され、ブロックチェーンノードは、到来するブロックおよびブロックチェーンP2Pネットワークから受信されたトランザクションの正当性を検査することと、受信されたブロックおよびトランザクションについての情報を少なくとも1つのエンクレーブに転送することとを行うように構成され、少なくとも1つのエンクレーブは、状態透明性ログを生成することと、ブロックチェーンノードから受信されたブロックおよびトランザクションの情報を状態透明性ログに挿入することと、状態透明性ログに署名することとを行うように構成され、ブロックチェーンノードは、署名された状態透明性ログを公表されているサイトにおいて公開するようにさらに構成される。
【0014】
本発明の実施形態は、自由参加型(permissionless)ブロックチェーンの運用を支配する少数の集中型マイニングプールを有することから生じる信頼の問題を軽減することを狙いとする。この文脈では、集中化は、それ自体は問題ではないが、それが、根本的な信頼の前提を実質的に変化させるならば、問題となり得ることが認識されてきた。さらに、分散化は、目的に対する単なる手段であり、実際の目標ではないことが認識されてきた。その結果として、本発明は、プールを分散化する代わりに、集中型プールから信頼性要件を除去することと、それにより、マイニングプールオペレータを信頼する必要なしに、集中型マイニングプールの利益を守ることとに重点を置いている。1つの解決策として、本発明は、プールオペレータが彼らのマイニングプール運用に対して正しいコードを実行していることを確実にするために、以後、トラステッド実行環境(TEE: trusted execution environment)と呼ばれることもあるエンクレーブを活用する。具体的には、本発明の実施形態は、悪用を防止するために各マイニングプールに対してエンクレーブ(たとえば、インテルSGXエンクレーブなど)によって署名される透明性ログの生成を提供する。それゆえ、本発明によるシステムは、集中型マイニングプールの利点と、支払い間隔に対する低い変動性と、高い運用効率とを維持しながら、プールオペレータが攻撃のためにマイニングプールを使用せず、マイニング報酬に対する公平性を提供することを確実にする。
【0015】
一実施形態によれば、状態透明性ログに挿入されたブロックおよびトランザクションの情報が、受信されたブロックのブロックヘッダと、受信されたブロック内に含まれるトランザクションのハッシュと、受信されたブロック内に含まれるトランザクションについての追加の情報とを含むことが提供されてもよい。状態透明性ログに挿入されたトランザクションについての追加の情報は、エンクレーブのエンクレーブコードの中で規定された規則、特にエンクレーブが適用すべき包含規則に依存する場合がある。
【0016】
一実施形態によれば、エンクレーブが、セキュアなチャネルを介してマイナーにワークパケットを送信し、応答として、マイナーが部分的PoWを発見したときにマイナーからシェアを受信することが提供されてもよい。エンクレーブは、受信されたシェアを検査し、報酬スキームに基づいてマイナー(7)に対する支払いトランザクションを生成するために、受信されたシェアを使用してもよい。使用される最も基本的な報酬支払いスキームは、マイナーによって解かれた各シェアに対して即時の保証された支払いを提示するペイパーシェアとすることができる。一方で、均等化された共有最大ペイパーシェア(Equalized Shared Maximum Pay Per Share)は、支払いが、プール内のすべてのマイナーの間で均等に分配されることを必要とする。他方で、最近の共有最大ペイパーシェア(Recent Shared Maximum Pay Per Share)は、直近のビットコインワーカーに優先度を与える。異なる手法が存在し、それは、ワーカーがそれぞれ発見したシェアの数に基づいて、ブロックが発見されたときのすべてのワーカーの間で報酬を比例配分することを提案する比例スキームによって提案される。使用され得るこの技法のよく知られている変形形態は、ペイパーラストNシェア(PPLNS: Pay Per Last N Shares、たとえば、Meni Rosenfeld、ビットコインをプールされたマイニング報酬システムの分析、arXiv preprint arXiv: 1112.4980、2011年において説明されている)であり、シェアの数を概括的にカウントするのではなく、最後に提出された正しいN個のシェアだけが考慮される。
【0017】
支払いトランザクションに関連するマイナーに対する強化された透明性に関して、ブロックチェーンノードが、エンクレーブによって生成された支払いトランザクションを周期的に受信し、受信された支払いトランザクションをブロックチェーンP2Pネットワークにブロードキャストすることが提供されてもよい。
【0018】
一実施形態によれば、エンクレーブは、マイナーから有効なブロックを受信すると、そのハッシュを状態透明性ログ内に含め、有効なブロックと状態透明性ログとをブロックチェーンノードに転送することが提供されてもよい。次いで、ブロックチェーンノードは、有効なブロックをブロックチェーンP2Pネットワークにブロードキャストし、状態透明性ログを公表されているサイトにおいて更新してもよい。
【0019】
一実施形態によれば、マイニングプールオペレータは、エンクレーブを用いて認証を実行しているとき、認証声明を公表されているサイト上で公開してもよい。
【0020】
一実施形態によれば、状態透明性ログに署名するためにエンクレーブによって使用される秘密鍵が、エンクレーブの再始動ごとに新しく生成されることが提供されてもよい。言い換えれば、鍵は、エンクレーブの寿命の間だけ存在し、すなわち、エンクレーブの再始動を超えて永続することはなく、それにより、ロールバックおよびフォーキングの攻撃に対する保護が提供される。
【0021】
一実施形態によれば、単一のエンクレーブだけを実行する代わりに、マイニングプールオペレータは、2つのエンクレーブを実行してもよく、2つのエンクレーブは運用の異なる部分を担当し、それにより、異なるシステム構成要素の並列化の利点を提供する。エンクレーブは、互いに相互認証を実行し、その間にエンクレーブは鍵を交換し、互いの間にセキュアなチャネルを確立することが提供されてもよい。具体的には、2つのエンクレーブのうちの、以後ロギングエンクレーブと表されることがある第1のエンクレーブは、ブロックチェーンノードと相互作用してもよく、一方で、2つのエンクレーブのうちの、以後分配エンクレーブと表されることがある第2のエンクレーブは、マイニングプールに接続されたマイナーと相互作用してもよい。
【0022】
本発明の実施形態によれば、マイニングオペレータが彼の機械を起動するとき、2つのエンクレーブが起動し、エンクレーブの寿命の間だけ存在する鍵ペアを生成することが提供されてもよい。上記ですでに述べたように、エンクレーブは、次いで、互いに相互認証を実行し、その間にそれらは鍵を交換し、セキュアなチャネルを確立してもよい。マイナーがマイニングプールに接続するとき、彼らは、最初にそれらのエンクレーブの認証を実行する。随意に、マイニングプールサーバは、ロギングエンクレーブを用いて認証を実行し、認証声明を状態透明性ログウェブサイト上で公開してもよい。マイニングプールオペレータのブロックチェーンノードは、到来するトランザクションとブロックの正当性を検査してもよい。これらの正当性検査の後、マイニングプールサーバは、ブロックヘッダを、ブロックの中に含まれるトランザクションのハッシュおよび新しいトランザクションについての情報(本開示では「トランザクション要旨」と表されることがある)と共に、ロギングエンクレーブに転送する。ロギングエンクレーブは、状態透明性ログ内のすべての受信されたブロックおよびトランザクションの情報を含み、それに署名し、それを公開してもよい。
【0023】
本発明の教示をいかにして有利に設計してさらに発展させるかについて、いくつかの方法がある。この目的に向けて、一方で、従属請求項が参照され、他方で、図で示される例としての本発明の好ましい実施形態の以下の説明が参照される。図の助けによる本発明の好ましい実施形態の説明に関連して、全体的に好ましい実施形態および教示のさらなる発展が説明される。
【図面の簡単な説明】
【0024】
【
図1】本発明の一実施形態による、TEEベースマイニングプールのシステムモデルを概略的に示す図である。
【
図2】本発明の一実施形態による、
図1のシステム内のメッセージのフローの概観を概略的に示すシーケンス図である。
【発明を実施するための形態】
【0025】
本発明の実施形態は、任意のブロックチェーンシステムにおいて、特にブロックマイニングを用いる任意の暗号通貨に対して適用され得るが、提案されるスキームは、プルーフオブワーク(PoW)マイニングを用いる最も有名な暗号通貨としてビットコインに関して以下で説明される。さらに、本発明の実施形態の展開において使用されてもよい最も前途有望なトラステッド実行環境であるインテルSGXが参照される。しかしながら、当業者には諒解されるように、同様の能力を有する他のトラステッド実行環境が、同様に展開されてもよい。
【0026】
一般に、ビットコインは、そのユーザが、特定のアドレスに接続されるトランザクションを発行することによって相互支払い(mutual payment)を実行することを可能にする。正規のビットコイントランザクションでは、ビットコイン(BTC)は、1つまたは複数の入力アドレスから1つまたは複数の出力アドレスに転送される。これらのアドレスは、実際には、公開鍵を示す。その公開-秘密鍵ペアの対応する秘密鍵を知るユーザだけが、特定の公開アドレスに接続されたビットコインを費やしてもよい。
【0027】
ユーザが支払いを実行することを望むとき、ユーザは、転送されるべきビットコインの量と共に、入力および出力アドレスなど、すべての必要なパラメータを有するトランザクションを生成する。その後、トランザクションは署名され、P2Pネットワークを使用してすべてのノードに送信される。ネットワークにわたるノードは、トランザクションを収集してブロックを形成する。これらのブロックは、ハッシュベースのプルーフオブワークタスクを解かなければならないマイナーと呼ばれる特別なタイプのノード(クライアント)によって生成される。ブロックを採掘するための第1のノードは、ブロックの正当性とブロックチェーンへの包含を検証するために、ブロックをすべての他のノードにブロードキャストする。ビットコインは、システム内のすべてのノードが、ネットワークから受信されたトランザクションとブロックとを検証しなければならないように設計される。
【0028】
有効なブロックを採掘する現在の難易度レベルはとてつもなく高いので、そのレベルは、マイナーが単独で運用するインセンティブを減じる。マイニングプールに参加することは、常にビットコインブロック報酬の一部を受け取るための魅力のあるオプションである。すなわち、マイニングプールは、マイナーが、ブロックを生成し、一定の報酬支払いスキームに従ってすべてのプールメンバーの間で報酬を分割するために、彼らのリソースを提供するための方法を提示する。報酬の共有は、有効なプルーフオブワークを提示するそのメンバー(マイナーまたはワーカーと呼ばれる)に、マイニングプールによって割り当てられる。より詳細には、マイニングプールは、1とブロックチェーンの目標の難易度(後でプール目標レベルとして示される)との間の目標を設定する。その後、シェアは、プールの難易度レベルと通貨の難易度レベルとの間の難易度レベルを採点するブロックヘッダを提供するそれらのワーカーに割り当てられる。これらのブロックヘッダの主たる目的は、ワーカーが、一定量の処理パワーを用いて貢献していることを示すことである。
【0029】
マイニングプール内で彼らのマイニングパワーを集約することは、(プール内の彼らのマイニングパワーに比例して報酬を共有し、正規の支払いを受け取るという意味で)マイナーの利益になるが、マイニングプールは、現在、4つのマイニングプールが共に、多数のハッシングパワーを管理する程度まで、非常に大きくなった。これは、信頼できるサードパーティーなしに働くように設計されたビットコインが、より一層集中化されたものになり、少数の半信頼できる当事者によって管理されることを意味する。集中化は、それ自体は問題ではないが、それが、根本的な信頼の前提を実質的に変化させるならば問題となることがあり、それがこの場合である。
【0030】
大部分のプールは、どのトランザクションが含まれるか、どのブランチがフォークの場合に選択されるか、および誰が個々のマイナーに対する報酬を彼らが提出したシェアに基づいて正しく支払う役割を担うかを決定する集中型プールオペレータによって運用される。それゆえ、プールオペレータは、巨大なパワーを保有する半信頼のエンティティであり、そのパワーは、利己的なマイニングおよび二重支払いを含む大量の攻撃のために悪用される可能性がある。それは、同じく、プールに参画する個々のマイナーに対して信頼の前提を変化させる。なぜならば、彼らは、報酬の正しい支払いに対してオペレータを信頼する必要があるからである。
【0031】
いくつかの可能性のある解決策は存在するが、それらのすべては、分散化を進めることによって問題を解決しようとしている。これらの解決策のすべての主たる欠点は、それらが、マイナーから追加の努力を必要とすることであり、それはコストを増大させる。その結果、これらのスキームのすべては、実際にはほとんど使用されない。
【0032】
本発明の実施形態は、分散化は目的に対する単なる手段であって実際の目標ではないという理解に基づく。その代わりに、目標は、マイニングプールではなく多数のマイナー自身が誠実であるという、最初の信頼の前提に戻ることである。それゆえ、本発明の実施形態は、マイニングプールオペレータを信頼する必要なしに、集中型マイニングプールの利益を守ることを狙いとする。
【0033】
集中型マイニングプールの不都合な点を除去しながらそれらの利益を守る上首尾の解決策は、理想的には、以下の特性を有するべきである。
【0034】
ブランチ選択。システムは、正しいブランチ選択を確実にする必要があり、すなわち、システムは、オペレータがマイナーに最長チェーンの上を採掘させることと、マイニングプールによって発見されたブロックが秘密にされないこととを確実にする必要がある。
【0035】
検閲抵抗。システムは、恣意的なトランザクションの検閲が防止または検出され得ることを確実にしなければならない。
【0036】
報酬分配。システムは、マイニング報酬の公平な分配を確実にしなければならない。すなわち、各マイナーは、プール内のマイニングパワーの彼の分担率にほぼ比例してプールのマイニング報酬のシェアを受け取るべきである。
【0037】
性能。システムは、効率的に働かなければならない。すなわち、システムは、マイナーに対する収益性を確保するために、既存の集中型マイニングプールよりも著しくコストがかかるべきではない。
【0038】
最小努力。システムは、参画するマイナーから可能な最小量の努力を要求する必要がある。
【0039】
本発明の実施形態は、プールオペレータが、彼らのマイニングプール運用に対する正しいコード、すなわち、プロトコルに従って行動し、ブロックチェーンに対して攻撃をしかけることのないコードを実行していることを確実にするために、トラステッド実行環境(TEE)を活用する。特に、報酬がすべての参画するマイナーに公平に分配されることを確実にするために、報酬共有構成要素が、トラステッド実行環境の中に含められてもよい。この手法は、集中型マイニングプールを攻撃に対してよりロバストにしながら、集中型マイニングプールの利点、すなわち、支払い間隔に対する低い変動性および高い運用効率を維持することを企図している。たとえば、プールオペレータは、ブロック天引き攻撃(block withholding attack)の開始を阻止されるべきであり、マイニング報酬に対する公平性が保証されるべきである。
【0040】
本発明の実施形態によるシステムでは、以下の3つのタイプのエンティティが実施されてもよい。
【0041】
マイニングプールオペレータ: マイニングプールオペレータは、マイニングプールを実行する。すなわち、彼らは、ブロック候補を生成し、個々のマイナーにワークを分配し、マイナーに料金を分配する。マイニングプールオペレータは、信頼できないが理性的であることが仮定される。マイニングプールオペレータは、完全性に対して信頼できるインテルSGXなどのトラステッド実行環境(TEE)の中のコードを実行することができることも仮定される。
【0042】
マイナー: マイナーは、マイニングハードウェアを実行するエンティティである。彼らは、マイニングプールオペレータからワークを受信し、プルーフオブワークパズルを解こうとする。多数のマイナーは、誠実であるが、彼らの努力をできるだけ低減しようとすると仮定される。すなわち、彼らは、不誠実な行動を積極的に防止するための特別な予防措置を取ることはない。彼らの誠実な行動に関して、多数のマイナーは、彼らが不正行為に気づいた場合に措置を講じる、たとえば、彼らが彼らのマイニングプールオペレータの不正行為に気づいた場合、彼らは、異なるマイニングプールに切り替えることが仮定される。多数のマイナーは誠実であるという仮定は、プルーフオブワークブロックチェーンの基本的な仮定のうちの1つであり、したがって、彼らのセキュリティに対する最小要件である。
【0043】
他のブロックチェーン参加者: たとえば、ブロックチェーンクライアントを実行しているブロックチェーンエコシステム内の他の参加者は、マイナーの正しい行動に関心があり、マイニングプールは、たとえば、攻撃および検閲を防止したいと思う。このため、彼らが不正行為に気づく場合、彼らは、他の当事者(たとえば、マイナー)に警報するインセンティブを有する。マイニングプールオペレータおよび他のマイナーは、彼らの他の役割に加えて、この範疇にも入ることができることに留意されたい。たとえば、マイニングプールオペレータは、彼ら自身の行動とは無関係に、他のマイニングプールが誠実に行動することを確認することに関心がある場合があり、または、マイナーは、彼らが、簡単にするために彼らのマイニングプール基盤をネットワークに接続したいと思わない場合でさえ、離れたノードからブロックチェーンをモニタしたいと思う場合がある。
【0044】
上記で概説した問題に対する単純な筋違いの解決策は、すべてのマイニングプールオペレータコードをトラステッド実行環境(TEE)に単に移動して、個々のマイナーにそのTEEを保証させることであろう。しかしながら、これは、複数の問題を提示する。第1に、フル動作中のノード(full operating node)をTEEに移動することは、大きいトラステッドコンピューティングベース(TCB)を生成することになり、それは望ましくない。なぜならば、それは大きい攻撃面を提示するからである。第2に、インテルSGXなどの現在のTEEは、少量のメモリに限定されており、それは、大量の動作ノードに対して十分ではない。最後に、ソフトウェアをトラステッド実行環境に単に移動することでは、攻撃を防止するのに十分ではない。なぜならば、多くは(たとえば、ブロック天引き攻撃)、ネットワーク接続を制御して通信を選択的にブロックすることによって、簡単に開始され得るからである。
【0045】
上記で概説された要件に基づいて、この解決策は、以下の課題を提示する。
【0046】
ブランチ選択。解決策は、正しいブランチ選択を確実にすべきである。すなわち、解決策は、オペレータが、実際にマイナーに最長チェーンの上を採掘させることを確実にするべきである。オペレータはエンクレーブのネットワーク接続を十分に制御するので、彼は、メッセージを恣意的にブロックし、それゆえ、エンクレーブをだまして代替のフォークが現在の最長チェーンであると信じこませることができる。それゆえ、正しいブランチ選択を確実にするために、付加的な通信を追加するメカニズムが提供されることが必要である。
【0047】
検閲抵抗。理想的には、悪意のあるマイニングプールオペレータがトランザクションを恣意的に検閲することができないことが確保されるべきである。ブランチ選択問題と同様に、これは、マイニングプールエンクレーブが完全な情報を受信することを必要とする。これは、getblocktemplate(Luke Dashjr、getblocktemplate - Fundamentals、2012年を参照)、BetterHash (Matt Corallo、BetterHash マイニングプロトコル、2018年を参照)、またはStratum (Pavel Moravec、Jan Capek、およびMatt Corallo、Stratum V2仕様、2019年を参照)と同様に、マイナーが彼ら自身のブロック候補を生成することを可能にすることによって容易に解決できる。しかしながら、これは、マイナーは誠実ではあるが怠惰であるという仮定と適合せず、このオプションは、実際に使用される可能性はほとんどないであろう。
【0048】
報酬分配。マイナーに対するマイニング報酬の分配は、公平であるべきである。すなわち、各マイナーは、彼らが提供したワークに比例した量を受け取るべきである。エンクレーブ内部のオペレータソフトウェアが、受信されたPoWシェアに基づいて公平に報酬を分配する場合、オペレータは、エンクレーブがシェアを受信するのをブロックすることしかできない。しかしながら、これは、署名された受領書を提供することによって緩和され得る。マイナーが、各提出したシェアに対してエンクレーブから受領書を受信する場合、オペレータは、マイナーが攻撃に気づいて別のマイニングプールに切り替えることができる前に、1つのシェアが正常に提出され、そのように報酬分配がカウントされるのをブロックすることができるだけである。要求されるパズルの難易度が十分に低い場合、これは、各マイナーが、提供したワークに比例する報酬を受け取ることを確実にする。
【0049】
性能。システムは、効率的に働かなければならない。すなわち、システムは、マイナーに対する収益性を確保するために、既存の集中型マイニングプールよりも著しくコストがかかるべきではない。インテルSGXなどの現在のTEEは少量のメモリに限定されるので、エンクレーブの内部で実行する必要があるソフトウェアの重要な部分と、エンクレーブの外部で実行することができる部分とを注意深く識別して、この部分が、著しい性能オーバーヘッドを追加することなく境界内で行われ得ることを確実にすることが重要である。
【0050】
最小努力。システムは、参画するマイナーから追加の努力を要求することができない。ここでの主たる課題は、努力の最小の増加もマイナーから必要とすることなしに、他の要件を確実にすることである。たとえば、システムは、マイナーが彼ら自身のブロックをアセンブルすることを要求すべきではない。
【0051】
本発明の実施形態は、上記の課題を効率的かつ実用的に解決するマイニングプールならびにマイニングプール運用システムを運用するための方法を提供する。詳細には、実施形態は、個々の課題に以下のように取り組む。
【0052】
報酬分配。解決するのに最も容易な課題は、報酬の公平な分配である。マイニングプールがマイナーをだますことに対する主たる可能性は、シェアをミスカウントすることによる。マイニングプールオペレータは、マイナーからのいくつかのシェアをカウントしないことができ、またはマイニングプールオペレータは、彼自身のマイニングパワーに帰する追加の架空のシェアを追加して、彼自身のシェアを増加させ、他のマイナーのシェアを減少させることができる。最初のケースは、影響を受けたマイナーによって容易に検出可能であるが、そのマイナーが支払いを受け取ることになっているときだけであり、そのときまでに、彼はかなりの量のマイニングパワーをすでに消耗している可能性がある。第2のケースは、オペレータのマイニングパワーのシェアが、プール内の個々のマイナーの収入に大きい影響を与えないが、マイニングプールオペレータを著しく利する少量(たとえば、10%~11%)だけ水増しされるにすぎない場合、検出することは困難である。
【0053】
これらの両方の可能性のある問題は、シェアをカウントする役割を担うマイニングプールの構成要素がTEEの中に存在し、すべての受信された有効なシェアに対して署名された受領書を発行する場合、マイナーに対する努力に影響を与えることなく容易に解決され得る。この問題は、(マイナーは受領書を受け取らないので)エンクレーブが彼のシェアを受け取るのをオペレータがブロックしたことにマイナーはすぐに気づくので、第1の問題を、たかだか1つのシェアを生成するのに必要な持続時間の間にマイナーのリソースを消耗することにまで小さくする。各マイナーに対して、(マイニング運用の全持続時間の間に)たかだか1つのシェアがカウントされないことになり、それは、シェアが、マイナーのマイニングパワーの割合にほぼ等しい割合だけカウントされることを保証する。同様に、エンクレーブは有効なシェアだけを受け取ることになり、マイニングプールオペレータは、もはや無効なシェアを捏造して彼の数を水増しすることができないので、第2の問題が解決される。
【0054】
これは、シェアが正しくカウントされ、それゆえ、すべてのマイナーは公平に支払われること、またはマイニングプールオペレータがエンクレーブをオフラインにする場合、(マイニングプールを含めて)誰も支払いを受けないことを確実にする。それゆえ、マイニングプールオペレータが理性的であるとの仮定のもとで、これは、公平な支払いを確実にするのに十分である。この手法は、報酬スキームとは無関係にシェアの正しいカウントを保証するので、この手法はそれらの報酬スキームうちのいずれかと共に使用され得る。
【0055】
ブランチ選択および検閲抵抗。主たる課題は、プールを、プールオペレータからの攻撃および検閲に抵抗させることである。すでに存在する解決策は、正しいブランチ選択および検閲抵抗を確実にするためのオプション、たとえば、マイナーが彼ら自身のブロック候補を生成するオプションを提供する。加えて、マイナーは、プールオペレータがブロックを秘密にすることができないことを確実にするために、フルプルーフオブワークを有する採掘されたブロックをP2Pネットワークに直接転送することができる。理論的には、ブロックテンプレートが主チェーンのヘッドを正しく指していることをマイナーは確認することができ、彼らは、どのトランザクションを彼らが含めるかを決定することができるので、これらのオプションは、前述の問題を解決する。しかしながら、実際には、これらのオプションは努力を必要とするので、ほとんど使用されない。
【0056】
これらのオプションは、本発明のシステム内に保持され得るが、(それらはマイナーから追加の努力を必要とするので)それらが実際に使用されることはほとんどなく、したがって、最小努力の要件が遂行されなければならない場合、それぞれのシステムは、これらのオプションに依存することができない。それゆえ、本発明の実施形態は、マイナーがマイニングプールオペレータからワークのインスタンスを単に受信した場合、要望通りに働くように構成されるシステムを提供する。
【0057】
本発明の実施形態によれば、マイニングプールオペレータは、状態透明性ログと呼ばれるログを、たとえば公表されているウェブサイト上で公的に利用可能にすることを要求される。この状態透明性ログは、マイニングプールオペレータにおいて実装されたエンクレーブによって受信されたブロックおよびトランザクションのリスト、ならびにエンクレーブによって署名されたこれらのエントリのハッシュチェーンで構成されてもよい。
【0058】
一実施形態によれば、エンクレーブが、オペレータからトランザクションまたはブロック(マイニングプールによって採掘されたブロックを含む)を受信すると、エンクレーブは、前のハッシュチェーン値の連結のハッシュ、タイムスタンプ、および受信されたアイテムのハッシュ、ならびにこのハッシュチェーン値への署名で反応してもよい。次いで、オペレータは、含まれているトランザクションおよびブロックのリストを、エンクレーブがそれらを受信したことの決定的証拠(proof)(すなわち、ハッシュチェーンおよび署名)と共に公開してもよい。
【0059】
次いで、ブロックチェーンネットワーク内の任意の当事者は、このリストをモニタし、たとえば、ブロックがネットワークを介して伝搬されたが、このリスト上に現れない場合、トランザクションが定期的にリストから失われる場合、またはリストがかなりの時間(たとえば、数分)の間更新されないように思われる場合に、不正行為の可能性をマイナーまたは他の当事者に警報することができる。
【0060】
これは、検閲または代替ブランチ上のマイニングの可能性を完全に除去するものではないが、これは、悪意のある行動を速やかに検出することを可能にし、その行動に対する有力な兆候(evidence)を提供する。その結果、誠実であるとみなされる多数のマイナーは、そのような行動に気づくと、他のプールに切り替えることになる。マイニングプールの正しい行動を確実にすることは、ブロックチェーンシステム(たとえば、正規のノードまたは競合するマイニングプール)内の大部分の当事者の一般的関心事であり、そのような不正行為が発覚した場合、マイナーが不正行為に対して警報を受ける可能性は極めて高い。
【0061】
原則として、状態透明性ログはブロックチェーンに非常に類似しており、実際に、このログ内で可視の情報のほとんどは、マイニングプールによって採掘されたブロック内でも可視である。しかしながら、データの粒度およびそれが可視に成る速さにおいて、決定的な相違がある。たとえば、マイニングプールによって発表されたブロック(およびネットワーク内の他のブロックについての知識)から、マイニングプールが、内密に採掘されたチェーンを発表すると、二重支払い攻撃が検出可能になる。本発明の実施形態による状態透明性ログを用いると、マイニングプールオペレータが、たとえ短時間の間でもエンクレーブからブロックを天引きすると、ブロックはログ内に現れないので、そのような攻撃が明白になる。これは、状態透明性ログを用いると、そのような攻撃は、そのような攻撃が開始した直後に検出可能になり、防止され得るが、採掘されたブロック内の情報だけを考慮することによって、そのような攻撃は、事後にのみ検出可能になる。
【0062】
同様に、マイニングプールのメムプール(mempool)の内容物は、任意の時点において決定され得るので、検閲ははるかに速やかに検出され得る。たとえば、クライアントがトランザクションをマイニングプールに送信する場合、そのトランザクションはログ内に現れないので、彼(および、トランザクションがネットワークを介して伝搬された場合はその他の人々)は、トランザクションがエンクレーブに転送されなかったかどうかを直ちに知ることができる。対照的に、採掘されたブロック内の情報だけが考慮される場合、これは、いくつかのブロックがマイニングプールによって採掘された後にのみ気づかれる可能性があり、そのときでさえ、トランザクションは検閲されたのか、またはメムプール内の他のトランザクションがマイニングプールにより早く到達して優先権を得たので含まれないのかを判断することが困難である場合がある。
【0063】
図1および
図2に示す実施形態によれば、マイニングプールオペレータ1(以後、単に「オペレータ」と示す)が、ブロックチェーンノードを修正されかつブロックチェーンP2Pネットワーク3ならびに公表されているサイト4、たとえばウェブサーバ5のウェブサイトに接続されたノード2(
図1および
図2に"N"で示す)を実行する。このサイト4は、以下でより詳細に説明するように、状態透明性ログを公開するために使用される。
【0064】
オペレータ1は、1つまたは2つのいずれかのエンクレーブ6を実行することができる。以下において、ならびに
図1および
図2の実施形態に示すように、システムが2つのエンクレーブ6.1、6.2を用いて説明されることを我々は説明する。なぜならば、これは、異なるシステム構成要素の並列化を介して利点がもたらされると思われるからである。しかしながら、両エンクレーブ6.1、6.2の運用は、単一のエンクレーブに組み合わされ得る。一般に、エンクレーブは、特権OS(privileged OS)を含む、システム上で実行しているすべてのソフトウェアから切り離されている。エンクレーブデータは、CPU内(すなわち、キャッシュおよびレジスタ内)でプレーンテキストのみで処理され、CPUの外、たとえばメモリ(DRAM)の中に移されるとき、暗号化され、整合性保護される。
【0065】
たとえば、エンクレーブの特定の実装形態は、インテルのソフトウェア保護拡張機能(SGX: Software Guard Extension)であり、それは、切り離されたソフトウェア構成要素を生成して管理するためのCPU命令のセット(参考として、インテルのインテルソフトウェア保護拡張機能、https://software.intel.com/en-us/sgxを参照)である。OSは、信頼はできないが、エンクレーブを生成して管理する役割を担う。しかしながら、OSのすべての初期化行為は、CPU内部のSGXによってセキュアに記録される。初期化プロセスは、エンクレーブのコード構成を捕捉する測定を生成し、リモート認証を使用する外部当事者によって後で検証するために使用され得る。SGXの能力を封印することで、エンクレーブデータの永続的にセキュアな記憶が可能になり、それにより、データは、最初にデータをセーブしたものと同じエンクレーブの正しく生成されたインスタンスに対してのみ利用可能である。
【0066】
図1および
図2を再び参照すると、2つのエンクレーブ6は、ロギングエンクレーブ6.1(
図1および
図2において"E1"で示す)および分配エンクレーブ6.2("E2"で示す)であり、それらは、セキュアなチャネルを介して互いに接続される。2つのエンクレーブ6.1、6.2は、運用の異なる部分の役割を担う。
【0067】
上記ですでに説明したように、ブロックチェーンのピアツーピアネットワーク3および状態透明性ログをホストするウェブサーバ5に接続されたノード2は、同じく、ロギングエンクレーブ6.1に接続される。一見するだけで、ノード2は、受信されたブロックのヘッダならびに(たとえば、バイト当たりの料金などの追加の情報を有する)トランザクションハッシュを第1のエンクレーブ6.1に転送するように構成され、第1のエンクレーブ6.1は、ヘッダテンプレートをアセンブルしてログを維持する。ログエントリは、ログをウェブサイト4上で公開するブロックチェーンノード2に転送される。ヘッダテンプレートは、ワークパケットを生成し、それらをマイナー7に分配し、報酬分配のためにマイナー7から受信されたシェアをカウントする第2のエンクレーブ6.2に転送される。フルPoW(プルーフオブワーク)が発見された場合、第2のエンクレーブ6.2は、それを第1のエンクレーブ6.1に転送し、第1のエンクレーブ6.1は、それをNに転送し、それをログ内に含める。
【0068】
より詳細には、オペレータ1がシステムを起動するとき、2つのエンクレーブE1、E2の各々が鍵ペアを生成し、鍵ペアは、エンクレーブの寿命の間だけ存在し、すなわち、(ロールバックおよびフォーキングの攻撃に対して保護するために)エンクレーブの再始動を超えて永続することはない。その結果、エンクレーブE1、E2は、相互認証を実行し(
図2の#1に示す)、その間にそれらは、鍵を交換してセキュアなチャネルを確立する。
【0069】
マイナー7がマイニングプールに接続するとき、彼らは、最初に分配エンクレーブE2を用いて認証を実行する(#2に示す)。認証データの一部として、E2は、E1とE2の両方の公開鍵を送信する。E1の公開鍵は、状態透明性ログを検査することを要求され、E2の公開鍵は、マイナー7とE2との間でセキュアなチャネルを確立するために使用される。
【0070】
ブロックチェーンノードNは、たとえば、(サードパーティーに鮮度を検査させるために)課題の中の最近のブロックハッシュを使用してロギングエンクレーブE1を用いて認証を実行し(#3に示す)、認証声明を状態透明性ログウェブサイト4上で公開する(#4に示す)。
【0071】
ブロックチェーンノードNは、到来するトランザクションおよびブロックを受信する(#5に示す)ことと、これらの到来するトランザクションおよびブロックの正当性を検査することとを行う役割を担っており、すなわち、ブロックチェーンノードNは、正規ノードが実行する検査を実行する。これをエンクレーブ6の外で行うことは安全である。なぜならば、オペレータ1が無効なトランザクションまたはブロックを転送した場合、それらはログの中に現れ、それにより、そのような攻撃は直ちに検出可能になるからである。加えて、これは減少する収入につながり、それはマイニングプールオペレータ1の利益にかなわず、すなわち、そうすることに対して、負のインセンティブが存在する。
【0072】
これらの正当性検査の後、Nは、受信されたブロックのブロックヘッダを、ブロック内に含まれるトランザクションのハッシュおよび新しいトランザクションについての情報(以後、トランザクション要約と簡潔に示す)と共に、ロギングエンクレーブE1に転送する(#6に示す)。要求されるトランザクション情報は、エンクレーブ6が固執しなければならない包含規則に依存するが、大抵の場合、大部分のトランザクションデータは転送される必要はない。たとえば、トランザクションが、それらのバイト当たりの料金によって優先順位をつけられなければならないと包含規則が指示する場合、ノードNは、トランザクションハッシュと、サイズと、料金とをエンクレーブ6に転送する必要がある。これは、エンクレーブ6のメモリ実装面積を大幅に低減することを可能にする。なぜならば、トランザクション当たり記憶される必要があるのは数バイトのデータだけであり、エンクレーブ6は、UTXOセットを維持することを必要としないからである。以後、エンクレーブ6に知られているトランザクション要約のセットは、エンクレーブのメムプールと呼ばれる。
【0073】
トランザクション要約だけを与えられるならば、エンクレーブ6は、受信されたブロックが、エンクレーブ6のメムプール内のトランザクションのうちの1つと衝突するトランザクションを含有するかどうかを決定することはできない。これは、まれにしか発生しないが、この問題を解決するために、トランザクション要約をE1のメムプールから除去するためのオプションが必要になる。一実施形態によれば、これは、ノードNに、衝突しているトランザクションの両方をロギングエンクレーブE1に転送させることによって実現されてもよく、それは、それらが実際に衝突していることと、他のトランザクションが受信されたブロック内に含まれていることとをE1が検査することを可能にする。
【0074】
ロギングエンクレーブE1は、状態透明性ログ内のすべての受信されたブロックおよびトランザクション情報(ならびに衝突しているトランザクションについてのメッセージ)を含む。そうするために、ブロックチェーンノードNから受信されたそのようなメッセージのすべて(i番目のメッセージはmiとして示される)は、状態透明性ログの以前のハッシュチェーン値hi-1と共にハッシュされてもよい。次いで、新しい値hi=H(hi-1//mi)が署名され、ノードNに送信されてもよい(#7に示す)。次いで、Nは、この署名された値を、実際のブロックおよびトランザクションと共に、公表されているサイト4、たとえばウェブサーバ5のウェブサイト上で公開し、状態透明性ログを形成する(#8に示す)。
【0075】
E1のメムプールが与えられれば、それは、エンクレーブコード内で規定された規則、たとえばバイト当たりの料金による包含優先度に基づいてブロックテンプレートを生成する。次いで、ロギングエンクレーブE1は、このテンプレートを分配エンクレーブE2に転送し(#9に示す)、分配エンクレーブE2は、そのテンプレートに基づいて各マイナー7に対するワークパケットを生成する。次いで、E2は、マイニングプールに接続するとき、分配エンクレーブE2を用いる認証の間に確立されたセキュアなチャネルを介してこれらのワークパケットをマイナー7に送信する(#10に示す)。マイナー7が部分的PoWを発見すると(#11に示す)、分配エンクレーブE2は、マイナー7からシェアを受信し、それらを署名された受領書と共に送信する(#12に示す)。
【0076】
次いで、受信されたシェアは、検査され、E2によってカウントされて、使用される報酬スキーム、たとえばPPLNSに基づいて支払いトランザクションを生成するために使用される。支払いトランザクションは、ブロックチェーンノードNに周期的に転送されてもよく、P2Pネットワーク3にブロードキャストされてもよい(#18に示す)。マイナー7は、シェアに対して署名された受領書を受信するので、彼らは、提出されたシェアがカウントされることと、それゆえ、彼らのマイニングパワーに比例する報酬の一部を彼らが受け取ることとを確信することができる。エンクレーブ6.2内の提出されたシェアをカウントすることで、同じく、虚偽のシェアが提出され得ないことが確実になることに留意されたい。たとえば、マイニングプールオペレータ1は、個々のマイナー7に対する支払いを減少させるために、シェアの総数を人為的に水増しすることはできない。
【0077】
フルPoW、すなわち有効なブロックがマイナー7によって発見されて分配エンクレーブE2に送信されると(#13に示す)、E2は、それをロギングエンクレーブE1に転送し(#14に示す)、E1は、そのハッシュを状態透明性ログ内に含めて、それをブロックチェーンノードNに送信する(#15に示す)。ブロックチェーンノードNは、そのブロックをP2Pネットワーク3にブロードキャストし(#16に示す)、状態透明性ログをウェブサイト5上で更新する(#17に示す)。
【0078】
マイナー7ならびにサードパーティーは、状態透明性ログを定期的に検査して、ピアツーピアネットワーク3の中でブロードキャストされたトランザクションおよびブロックとの相違、たとえばいくつかのブロックがネットワーク内でブロードキャストされたがログの中に現れないこと、がないことを確認することができる。マイナー7がそのような問題に気づいた場合(たとえば、彼らが他の当事者によって警報された場合)、多数のマイナーは、不誠実な行動を示さない他のマイニングプールに切り替えることになる。
【0079】
クライアントがトランザクションをネットワーク内でブロードキャストした後、彼らのトランザクションが、公的に利用可能な透明性ログの中に現れないことに気づいたクライアントは、これらのトランザクションをノードNに直接送信することができる。トランザクションが、その後依然として状態透明性ログの中に現れない場合、彼らは、検閲があったことを確信することができる。ブロードキャストされたトランザクションが、しばしば、ログの中に現れない場合、そのログは、マイナー7などの他の当事者を納得させることができる確からしい検閲の兆候を提供する(その結果、マイナー7は他のマイニングプールに切り替えることができる)。
【0080】
ロギングエンクレーブE1に転送されたすべての有効なブロックは、状態透明性ログの中に現れるので、本発明の実施形態は、マイニングプールが内密のブランチ上で採掘されているかどうかを、ブロックチェーン参画者が直ちに検出することができることを確実にする。すなわち、有効なブロックがネットワークを介して伝搬されたが、その後しばらくしても状態透明性ログの中に現れない場合、参画者は、マイナー7に警報することができる。多数のマイナー7は誠実であると仮定すると、大抵のマイナー7は、成功するとは考えにくい、そのような不誠実な行動を示すマイニングプールを去ることになる。そのため、本発明の実施形態によるシステムは、正しいブランチ選択、すなわち、オペレータ1がマイナー7に最長チェーンの上を採掘させることと、マイニングプールによって発見されたブロックが秘密にされないこととを確実にする。
【0081】
さらに、本発明の実施形態は、検閲抵抗、すなわち、ロギングエンクレーブE1によって受信されたすべてのトランザクションが状態透明性ログの中に現れること、または逆の視点から見ると、恣意的なトランザクションの任意の検閲が防止もしくは検出され得ることを確実にする。透明性ログは、検閲の(数学的な意味における)決定的証拠を提供しないが、兆候を提供する。なぜならば、ブロックチェーン参画者は、彼らがトランザクションをネットワークを介して伝搬した後、いくつかのトランザクションがログの中に現れない場合に気づくからである。マイナー7が体系的な検閲に気づいた場合、彼らのうちの多数は、そのような行動を示さない他のマイニングプールに切り替えることになる。
【0082】
本発明によるシステムの実施形態は、同じく、マイナー7が、たかだか1つを除いたすべてのシェアに対する支払いを受け取ることを確実にする。マイナー7が分配エンクレーブE2から署名された受領書を受信すると、彼は、シェアが、報酬分配のためにカウントされることを確信することができる。彼が、1つのシェアに対する受領書を受信しなかった場合、このシェアはブロックされた可能性がある(すなわち、彼は、そのシェアに対する報酬を受け取ることはない)が、彼は、さらなるマイニングパワーが消耗されることがないことを確実にするために、マイニングプールを直ちに切り替えることができる。これは、各マイナー7が、かなりの時間の間、マイニングプールを用いて採掘する場合、各マイナー7は、彼のマイニングパワーに比例する報酬のシェアを受け取ることと、最悪の場合でも、1つのシェアに値する報酬を逸するだけであることを保証する。
【0083】
上記で説明した本発明によるシステムは、非常に低いオーバーヘッドを有し、大抵は、現在のシステムと同じコンピュータの使用(computation)を必要とする。主たるオーバーヘッドは、マイナー7とのリンクをセキュアにすることと、状態透明性ログを提供することとであり、それらの両方は、近代の暗号プリミティブを用いて高速である。現在のシステム(たとえば、Stratum)から本発明によるシステムへの変更は、マイナーの努力に関して最小である。主たる相違は、マイナー7が、認証を実行することと、セキュアなチャネルを介して分配エンクレーブE2に伝達することとを必要とすることであり、それらは、マイニングソフトウェアによってすべて自動で行われ得る。しかしながら、彼らは、P2Pネットワーク3に十分に接続されることを必要とせず、彼ら自身でトランザクション選択などを決定するために追加の構成を必要としない。
【0084】
本明細書で説明された本発明の多くの修正形態および他の実施形態が、本発明が関係し、前述の説明および関連する図面の中で提示された教示の恩恵を有する当業者には想到するであろう。それゆえ、本発明は、開示された特定の実施形態に限定されないこと、ならびに修正形態および他の実施形態は、添付の特許請求の範囲に含まれることが意図されていることが理解されるべきである。特定の用語が本明細書で使用されているが、それらは、包括的で記述的な意味で使用されているにすぎず、限定を目的としない。
【符号の説明】
【0085】
1 マイニングプールオペレータ
2 ブロックチェーンノード
3 ブロックチェーンピアツーピア(P2P)ネットワーク
4 公表されているサイト
5 ウェブサーバ
6 エンクレーブ
6.1 ロギングエンクレーブ
6.2 分配エンクレーブ
7 マイナー