(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-22
(45)【発行日】2024-12-02
(54)【発明の名称】ブロックチェーンネットワークにおいて作業履歴を記録し及び評判を証明する方法及び装置
(51)【国際特許分類】
H04L 9/32 20060101AFI20241125BHJP
G06F 16/903 20190101ALI20241125BHJP
【FI】
H04L9/32 200Z
G06F16/903
(21)【出願番号】P 2021566554
(86)(22)【出願日】2020-05-05
(86)【国際出願番号】 IB2020054262
(87)【国際公開番号】W WO2020229950
(87)【国際公開日】2020-11-19
【審査請求日】2023-04-06
(32)【優先日】2019-05-10
(33)【優先権主張国・地域又は機関】GB
(73)【特許権者】
【識別番号】318001991
【氏名又は名称】エヌチェーン ライセンシング アーゲー
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ジャーン,ウエイ
(72)【発明者】
【氏名】ミー,アンドリュー ジェイムズ
(72)【発明者】
【氏名】コグラン,スティーヴン パトリック
(72)【発明者】
【氏名】ライト,クレイグ スティーヴン
(72)【発明者】
【氏名】マッケイ,アレグザンダー
【審査官】青木 重徳
(56)【参考文献】
【文献】国際公開第2019/021105(WO,A1)
【文献】国際公開第2019/021107(WO,A1)
【文献】中国特許出願公開第109064124(CN,A)
【文献】佐古 和恵 ほか,ブロックチェーン技術の社会実装に向けた観点,電子情報通信学会論文誌B,日本,電子情報通信学会,2017年11月01日,Vol.J100-B No.11,pp.893-900
【文献】東角 芳樹 ほか,コンソーシアムチェーンにおける証明書管理に関する一考察,2017年 暗号と情報セキュリティシンポジウム(SCIS2017) [USB],日本,2017年 暗号と情報セキュリティシンポジウム実行,2017年01月24日,1F2-3,pp. 1-4
【文献】Richard Dennis et al.,A Temporal Blockchain: A formal Analysis,2016 International Conference on Collaboration Technologies and Systems (CTS),米国,IEEE,2016年10月31日,pp. 430-437
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/32
G06F 16/903
JSTPlus/JMEDPlus/JST7580(JDreamIII)
IEEE Xplore
THE ACM DIGITAL LIBRARY
(57)【特許請求の範囲】
【請求項1】
ブロックチェーンネットワーク内のブロックチェーンにマイニングノードの作業履歴を記録する、コンピュータにより実施される方法であって、
前記コンピュータはマイニングノードであり、前記方法は、前記マイニングノードにより、
登録生成トランザクションを含む第1ブロックをマイニングするステップであって、前記登録生成トランザクションは、登録情報フィールドに前記マイニングノードのマイナー識別子を含む、ステップと、
2つ以上の追加ブロックを順番にマイニングするステップであって、各追加ブロックは、前記マイナー識別子と前記順番の中で先行する追加ブロックの生成トランザクションへの参照と
を含む情報フィールドを含む生成トランザクションを含み、前記登録生成トランザクションは前記順番の中の第1ブロックである、ステップと、
を含む方法。
【請求項2】
前記マイナー識別子は公開鍵を含み、該公開鍵について前記マイニングノードは秘密鍵を保持する、請求項1に記載の方法。
【請求項3】
前記追加ブロックの各々の中の前記生成トランザクションは、前記登録生成トランザクションを指す登録参照とデジタル署名とを含む、請求項1又は2に記載の方法。
【請求項4】
前記順番の中で先行する追加ブロックの前記生成トランザクションへの前記参照は、トランザクション識別子、ブロック番号、又はアウトポイントのうちの1つを含む、請求項1~3のいずれか一項に記載の方法。
【請求項5】
前記マイニングノードにより、前記ブロックチェーンに記録された前記作業履歴を検証するステップを更に含み、前記検証するステップは、
前記順番の中の最後のブロックを識別するステップと、
前記ブロックチェーンから、前記生成トランザクションの各々に含まれる前記先行する追加ブロックの前記生成トランザクションへの前記参照に基づき、逆順に、前記追加ブロックから前記生成トランザクションを検索するステップと、
前記登録生成トランザクションを検索するステップと、
前記登録生成トランザクション内の前記マイナー識別子
を検証するステップと、
を含み、それにより、前記登録生成トランザクション及び前記生成トランザクションは、前記マイニングノードの前記作業履歴を提供する、請求項1~4のいずれか一項に記載の方法。
【請求項6】
前記マイニングノードにより、前記マイニングノードの記録された作業履歴に基づき、前記マイニングノードの評判スコアを決定するステップを更に含み、決定するステップは、前記順番の中のブロックの数のカウントに基づき、前記評判スコアを計算するステップを含む、請求項1~5のいずれか一項に記載の方法。
【請求項7】
前記マイニングノードにより、前記マイニングノードの記録された作業履歴に基づき、前記マイニングノードの評判スコアを決定するステップを更に含み、決定するステップは、
前記順番の中の各ブロックにそれぞれの重みを割り当て、
前記それぞれの重みの和を計算する、
ことに基づき、前記評判スコアを計算するステップを含む、請求項1~5のいずれか一項に記載の方法。
【請求項8】
各ブロックにそれぞれの重みを割り当てるステップは、ブロック毎に、
該ブロックをマイニングする際に適用される採掘難易度閾値に基づき、該ブロックの採掘難易度スコアを決定するステップと、
前記採掘難易度スコアに基づき、前記それぞれの重みを設定するステップと、
を含む、請求項7に記載の方法。
【請求項9】
前記評判スコアは、次式のように計算され:
【数10】
Rep
IDは前記評判スコアであり、iはi番目のブロックを参照するインデックスであり、Bは前記順番の中のブロックの数であり、Tiはブロックiをマイニングする際に適用される目標採掘難易度である、請求項7又は8に記載の方法。
【請求項10】
前記マイニングノードにより、投票ブロックをマイニングすることにより、セキュアなブロックチェーンに基づく投票システムに重み付けされた投票を記録するステップを更に含み、前記投票ブロックは、そのマイナー識別子と、
該マイナー識別子を含む最後の生成トランザクションへの参照と、投票信号と、を含む生成トランザクションを含む、請求項6~9のいずれか一項に記載の方法。
【請求項11】
前記投票ブロックの生成トランザクションは、前記マイニングノードについて計算された評判スコアを更に含む、請求項10に記載の方法。
【請求項12】
ブロックチェーンネットワークを用いて公開鍵基盤を管理するコンピューティング装置であって、前記コンピューティング装置は、
マイニングノードであり、
1つ以上のプロセッサと、
メモリと、
前記メモリに格納されたコンピュータ実行可能命令であって、前記1つ以上のプロセッサにより実行されると、前記プロセッサに請求項1~
11のいずれか一項に記載の方法を実行させる、コンピュータ実行可能命令と、
を含むコンピューティング装置。
【請求項13】
ブロックチェーンネットワークを用いて公開鍵基盤を管理するためのプロセッサ実行可能命令を格納しているコンピュータ可読媒体であって、前記プロセッサ実行可能命令は、1つ以上のプロセッサにより実行されると、前記プロセッサに請求項1~
11のいずれか一項に記載の方法を実行させる、コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ブロックチェーンネットワークに関し、特に、ブロックチェーンネットワークにおいて作業履歴を記録すること及び評判を証明することに関する。
【背景技術】
【0002】
マイニングノード(又は「マイナー」)は、ブロックチェーンネットワークの主要な要素である。「proof-of-work」ブロックチェーンネットワークでは、マイニングノードは、ブロックをマイニングする競争に「勝つ」ためにproof-of-workを達成するために争い、それにより、トランザクション手数料、及び新しいブロック内のコインベーストランザクションに反映される新たに鋳造(mint)されたトークンを集める。この方法では、マイナーは、ネットワークをセキュアにし、トランザクションが有効であること、及び全部の参加ノードが一般的ブロックチェーンプロトコルに従うことを保証している。しかしながら、大部分のブロックチェーンは許可不要のプロトコルとして動作するので、任意のノードはネットワークに参加し退出してよく、任意のノードは任意の他のノードから事前承認を確保することなくマイニングノードとして動作することができる。ブロックチェーンは使用量及びトランザクション量において増大しているので、マイニングノードのアイデンティティ(又はマイニングノードのプール)を正しく登録し及び検証することも、重要性を増している。
【0003】
例えば、ブロックチェーンプロトコルに変更が生じるとき、任意の又は「トップダウンの」コードの変更は、システムの安定性及び確実性に対する信頼を損ない、ブロックチェーンネットワークを攻撃又は潜在的な詐欺若しくは盗難に晒す可能性がある。合意に基づくシステムのように、ブロックチェーンネットワークの基礎にあるコードに対する変更は、システムを構成するエンティティにより合意される必要がある。実際に、これは、マイニングノードがトランザクションを検証し、候補ブロックを組み立て、新しいブロックのコストのかかるマイニング作業を実行するエンティティであるので、マイニングノードが変更に合意しなければならないことを意味する。マイニングノードのアイデンティティ(又はマイニングプール)を追跡及び検証することが可能であることは有利であり得る。
【0004】
コンピュータネットワークにアイデンティティを登録し及び検証する1つのメカニズムは、公開鍵暗号基盤の使用を通じることである。鍵ペアの公開鍵は、ノード識別子を表してよい。そのようなシステムでは、ノードは、公開鍵ペアを取得し、次に、第三者証明機関によるその公開鍵の登録を要求する。証明機関は、何らかのレベルのノードのオンライン又はオフライン認証を実行し、公開鍵のためのデジタル証明を発行して、公開鍵がノードに関連付けられていることを検証する。デジタル証明は、証明機関により署名されてよい。ノードのアイデンティティを検証したいと望む異なるノードは、証明機関への信頼に依存して、デジタル証明により表されるノードのアイデンティティの証明を補強する。
【0005】
ブロックチェーンシステムは、通常、許可不要であり、任意のノードがネットワークに参加し又は退出してよく、ノードがネットワークに参加するかどうかを他のノードが制御できないことを意味する。この柔軟性は、リソースが効率的に割り当てられ、必要に応じて経済的に正当な理由でコンピューティングリソースを追加できるようにすることを保証するために重要である。しかしながら、幾つかの例では、及び幾つかの状況では、信頼、信頼性、及び安定性の目的のために、マイニングノードのようなノードがブロックチェーンネットワーク内で「評判の良いノードであるかどうかを検証できることは有利である。
【発明の概要】
【0006】
一態様では、ブロックチェーンネットワーク内のブロックチェーンにマイニングノードの作業履歴を記録する、コンピュータにより実施される方法が提供されてよい。前記方法は、前記マイニングノードにより、登録生成トランザクションを含む第1ブロックをマイニングするステップであって、前記登録生成トランザクションは、登録情報フィールドにマイニングノードのマイナー識別子を含む、ステップと、前記マイニングノードにより、2つ以上の追加ブロックを順番にマイニングするステップであって、各追加ブロックは、前記マイナー識別子と前記順番の中で先行する追加ブロックの生成トランザクションへの参照と、を含む生成トランザクションを含み、前記登録生成トランザクションは前記順番の中の第1ブロックである、ステップと、を含んでよい。
【0007】
幾つかの実装では、前記マイナー識別子は公開鍵であってよく、該公開鍵について前記マイニングノードは秘密鍵を保持する。
【0008】
幾つかの実装では、前記追加ブロックの各々の中の前記生成トランザクションは、前記登録生成トランザクションを指す登録参照とデジタル署名とを含んでよい。
【0009】
幾つかの実装では、前記順番の中で先行する追加ブロックの前記生成トランザクションへの前記参照は、トランザクション識別子、ブロック番号、又はアウトポイントのうちの1つを含んでよい。
【0010】
幾つかの実装では、前記方法は、コンピューティングノードにより、前記ブロックチェーンに記録された前記作業履歴を検証するステップを更に含んでよい。幾つかの例では、前記検証するステップは、前記順番の中の最後のブロックを識別するステップと、前記ブロックチェーンから、逆順に、前記生成トランザクションの各々に含まれる先行する追加ブロックの前記生成トランザクションへの前記参照に基づき、前記追加ブロックから前記生成トランザクションを検索するステップと、前記登録生成トランザクションを検索するステップと、前記登録生成トランザクション内の前記マイナー識別子の前記登録を検証するステップと、を含んでよい。前記登録生成トランザクション及び前記生成トランザクションは、前記マイニングノードの前記作業履歴を提供する。
【0011】
幾つかの実装では、前記方法は、前記マイニングノードの評判スコアを、該マイニングノードの作業履歴に基づき決定するステップを更に含んでよい。幾つかの例では、決定するステップは、前記順番の中のブロックの数のカウントに基づき、前記評判スコアを計算するステップを含む。幾つかの例では、決定するステップは、前記順番の中の各ブロックにそれぞれの重みを割り当てること、及び前記それぞれの重みの和を計算すること、に基づき前記評判スコアを計算するステップを含む。幾つかのそのような例では、各ブロックにそれぞれの重みを割り当てるステップは、ブロック毎に、
該ブロックをマイニングする際に適用される採掘難易度閾値に基づき、該ブロックの採掘難易度スコアを決定するステップと、
前記採掘難易度スコアに基づき、前記それぞれの重みを設定するステップと、
を含む。幾つかの例では、前記評判スコアは、以下のように計算されてよい:
【数1】
【0012】
上式において、RepIDは前記評判スコアであり、iはi番目のブロックを参照するインデックスであり、Bは前記順番の中のブロックの数であり、Tiはブロックiをマイニングする際に適用される目標採掘難易度である。
【0013】
幾つかの実装では、前記方法は、前記マイニングノードにより、投票ブロックをマイニングすることにより、セキュアなブロックチェーンに基づく投票システムに重み付けられた投票を記録するステップを更に含んでよく、前記投票ブロックは、そのマイナー識別子と、その最近の生成トランザクションへの参照と、投票信号と、を含む生成トランザクションを含む。幾つかの例では、前記投票ブロック生成トランザクションは、前記マイニングノードについて計算された評判スコアを更に含む。
【0014】
別の態様では、本願は、ブロックチェーンネットワーク内のブロックチェーンにマイニングノードの作業履歴を検証する、コンピュータにより実施される方法を記載し得る。前記方法は、
前記マイニングノードによりマイニングされた、生成トランザクションを有するブロックを識別するステップであって、前記生成トランザクションは、マイナー識別子と前の生成トランザクションへの参照とを情報フィールド内に含む、ステップと、
前記ブロックチェーンから、逆の順番で、複数の前の生成トランザクションを検索するステップであって、該前の生成トランザクションの各々は、前記マイナー識別子と、前記マイナー識別子に関する登録を含む最後の生成トランザクションまで、前記逆の順番の中の前記前の生成トランザクションのそれぞれの先行する生成トランザクションへの参照と、を含む、ステップと、
前記最後の生成トランザクション内の前記マイナー識別子の前記登録を検証するステップと、
を含んでよい。前記生成トランザクション及び前記複数の前の生成トランザクションは、前記マイニングノードの前記作業履歴を提供する。
【0015】
更に別の態様では、本願は、ブロックチェーンに基づくブロックチェーンネットワークにおいてマイニングノードの評判スコアを決定する、コンピュータにより実施される方法を提供し得る。前記方法は、
リンクされた生成トランザクションのチェーンをトレースするステップであって、前記生成トランザクションは、それぞれ、前記マイニングノードのマイナー識別子を情報フィールド内に含み、第1生成トランザクションを除く前記生成トランザクションの各々は、前記チェーン内のリンクされた生成トランザクションのうちの前の生成トランザクションへの参照を前記情報フィールド内に含み、各生成トランザクションは、前記マイニングノードによりマイニングされたそれぞれのブロック内にある、ステップと、
前記生成トランザクションの各々について、そのそれぞれのブロックの採掘難易度スコアを決定するステップと、
前記チェーン内の前記生成トランザクションに関連付けられたそれぞれのブロックの前記採掘難易度スコアに基づき、前記マイニングノードの前記評判スコアを決定するステップと、
を含んでよい。
【0016】
別の態様では、ネットワーク内のノードを実装するコンピューティング装置が提供されてよい。前記コンピューティング装置は、メモリと、1つ以上のプロセッサと、実行されると前記プロセッサに本願明細書に記載の方法のうちの1つ以上を実行させるコンピュータ実行可能命令と、を含んでよい。
【0017】
更に別の態様では、ネットワーク内のノードを差動させるためのプロセッサ実行可能命令を格納しているコンピュータ可読媒体であって、前記プロセッサ実行可能命令は、1つ以上のプロセッサにより実行されると、前記プロセッサに本願明細書に記載の方法のうちの少なくとも1つを実行させる、コンピュータ可読媒体が提供され得る。
【0018】
本開示の他の例示的な実施形態は、図面と関連して以下の詳細な説明を読むことから当業者に明らかになるだろう。
【図面の簡単な説明】
【0019】
例として、本願の例示的な実施形態を示す以下の添付の図面を参照する。
【0020】
【
図1】ブロックチェーンにマイナーアイデンティティを登録する1つの簡単な例示的な方法を、フローチャートの形式で示す。
【0021】
【
図2】マイナーアイデンティティを登録するために高速取消オプションを設定する例示的な方法を、フローチャートの形式で示す。
【0022】
【
図3】ブロックチェーンにマイナーアイデンティティを記録する1つの例示的な方法を、フローチャートの形式で示す。
【0023】
【
図4】マイナーアイデンティティを検証する例示的な方法を、フローチャートの形式で示す。
【0024】
【
図5】ブロックチェーンに作業履歴を記録する1つの例示的な方法を示す。
【0025】
【
図6】ブロックチェーンを用いて作業履歴を検証する例示的な方法を示す。
【0026】
【
図7】記録された作業履歴に基づきマイニングノードの評判スコアを決定する例示的な方法を示す。
【0027】
【
図8】マイニングノードのようなコンピューティングノードの簡易な例をブロック図形式で示す。 図中の同様の参照符号は同様の要素及び特徴を示すために使用される。
【発明を実施するための形態】
【0028】
本願では、用語「及び/又は」は、列挙された要素単独、任意の一部の組合せ、又は要素の全部、を含む列挙された要素の全部の可能な組合せ及び一部の組合せをカバーすることを意図しており、必ずしも追加要素を排除しない。
【0029】
本願では、用語「...又は...のうちの少なくとも1つ」は、列挙された要素単独、任意の一部の組合せ、又は要素の全部、を含む列挙された要素の全部の可能な組合せ及び一部の組合せをカバーすることを意図しており、必ずしも追加要素を排除せず、必ずしも全部の要素を必要としない。
【0030】
本願は、任意のデータセット又は「メッセージ」に適用されるとユニークな固定長英数字文字列を決定論的に(deterministically)生成する多数の暗号ハッシュ関数のうちの任意の1つを含むことを意図している、ハッシング(hashing)又はハッシュ(hash)関数を参照する。ハッシュ関数の結果は、ハッシュ値、フィンガープリント、ハッシュ結果、又はそれらの均等物と呼ばれてよい。例は、限定ではないが、SHA-2、SHA-3、及びBLAKE2を含む。
【0031】
本願明細書では、用語「ブロックチェーン」は、全ての形式の電子的な、コンピュータに基づく、分散型台帳を包含すると理解される。これらは、総意に基づくブロックチェーン及びトランザクションチェーン技術、許可及び未許可台帳、共有台帳、並びにこれらの変形を含む。他のブロックチェーン実装が提案され開発されているが、ブロックチェーン技術の最も広く知られているアプリケーションは、Bitcoin台帳である。Bitcoin SVプロトコルにより例示されるBitcoinは、ここでは、便宜上及び説明の目的で参照されることがあるが、本発明はBitcoinブロックチェーンと共に使用することに限定されず、代替のブロックチェーン実装及びプロトコルが本発明の範囲に包含されることに留意すべきである。
【0032】
ブロックチェーンは、コンピュータに基づく非集中型の分散型システムを用いて実装されるピアツーピアの電子台帳である。ブロックチェーンはブロックで構成され、ブロックはまた、トランザクションで構成される。各トランザクションは、特に、ブロックチェーンシステムの中の参加者間でデジタルアセットの制御の移転を符号化するデータ構造であり、少なくとも1つのインプット及び少なくとも1つのアウトプットを含む。各ブロックヘッダは、マークル(Merkle)ルートの形式のようなブロックのコンテンツの要約を含み、各ブロックヘッダは前のブロックヘッダのハッシュを含む。その結果、ブロックは一緒に繋がれるようになり、永久の変更不可能な、開始以来ブロックチェーンに書き込まれた全部のトランザクションのレコードを生成する。トランザクションは、スクリプトとして知られている小さなプログラムを含む。スクリプトは、それらのインプット及びアウトプットを埋め込まれ、トランザクションのアウトプットがどのように及び誰によりアクセス可能であるかを指定する。Bitcoinプラットフォームでは、これらのスクリプトはスタックに基づくスクリプト言語を用いて記述される。
【0033】
ブロックチェーンは、ノードのネットワークにより実装される。各ノードは、ネットワーク接続と適用可能なブロックチェーンプロトコルを実行する実行ソフトウェアとを有するコンピューティング装置である。ノードは、トランザクションを検証し、それらをネットワーク内の他のノードへ伝播させる。「マイニングノード」又は「マイナー」と呼ばれる専用ネットワークノードは、未確定のトランザクション、つまり保留中のトランザクションのセットを集めて、ブロックにし、該ブロックを「マイニング」しようとする。マイニングは、これらの例では、ネットワーク内の他のマイナーが彼らのそれぞれのブロックのproof-of-workを解くことに成功する前に、proof-of-work(POW)を解くことを表す。Bitcoinの例では、POWは、結果が採掘難易度(difficultly)パラメータにより設定された閾値より下になるまで、ノンス(nonce)を含むブロックヘッダをハッシングすることを含む。ノンスは、繰り返されインクリメントされ、結果が閾値より下になるまで、又は別のマイナーが成功したノンスをマイナーが受信するまで、ハッシングが繰り返される。マイニング処理における変形は、当業者によく知られている。
【0034】
チェックされる事柄の中でも特に、トランザクションを検証するとき、ノードは、トランザクションへのインプットが有効であるかどうかを決定する。特に、ノードは、アンロックスクリプトが真と評価するかどうかを評価し、インプットが前のトランザクションからの「未使用トランザクションアウトプット」(unspent transaction output (UTXO))を参照するかどうかを決定する。幾つかのノードは、参照されるトランザクションアウトプットがUTXOセットの中にあるか否かの高速な決定を可能にするために、UTXOの実行中リスト又はセットを維持してよい。トランザクションは、幾つかの実装ではトランザクションのハッシュである自身のユニークなトランザクション識別子TxIDにより識別されてよい。幾つかのトランザクションは、1つより多くのアウトプットを有してよく、従って、ユニークなトランザクション「アウトポイント」は、TxID及びインデックスにより識別されてよい。ここで、インデックスは、トランザクションからのアウトプットの順序付きセットの中のアウトプットのうちの1つを指す。トランザクションアウトプット(例えば、アウトポイント)がUTXOセットの中に存在する場合、該トランザクションのアウトプットは「未使用(unspent)」であり、インプットとして機能することが可能である。
【0035】
トランザクションアウトポイントのアンロックスクリプトは、実行されるためにアウトプットに対する「制御」をどのように証明するかを定める。多くの場合に、トランザクションアウトプットに関連付けられたアドレスは、公開鍵のハッシュである。アウトプットに対する制御を証明するために、アンロックスクリプトは、公開鍵と、対応する秘密鍵を用いて生成されたデジタル署名と、を必要とする場合が多い。この方法では、秘密鍵を制御するノードは、トランザクションアウトプットが任意の後続のインプットでいつ及びどのように使用されるかを制御できる。以下に更に議論されるように、これは、特定の公開鍵に対応するトランザクションインプットがデジタル署名を含み、従って、該特定の公開鍵に関連付けられたエンティティがトランザクションの内容に事実上署名している又は証明しているという推論を有する。
【0036】
公開鍵暗号法は、オンライン通信において至る所に現れている。多くの例では、公開鍵が特定のエンティティとの関連付けにより所有されているという確実性を提供するために、処理及びポリシが必要とされる。公開鍵が真正であり信用を落としていないことを保証するための最も一般的なアプローチは、公開鍵基盤(public key infrastructure (PKI))である。PKIは、公開鍵を有効であると「認証する」信頼できる第三者に依存する。これらのエンティティは「証明機関」(certificate authority (CA))である。CAは、公開鍵と特定の所有者との間の結び付きを確認するデジタル証明の登録及び発行を提供する。公開鍵の保持者は、自身の公開鍵及び自身のデジタル証明を、別のエンティティに提供する。他のエンティティは、次に、信頼できるCAが証明にデジタル署名していることを確認することにより、公開鍵の真正さを検証してよい。
【0037】
上述のように、マイニングノードは、ブロックチェーンネットワークをセキュアにするための鍵である。マイニングノードは、彼らが有効な新しいブロックを見付ける競争に勝つと、それらの作業を補償される。補償は、個々のトランザクションからの、及び新しいブロックに含まれる「コインベース」トランザクションからの、トランザクション手数料を通じて生じる。コインベーストランザクションは、インプットを持たず、所定量のトークン(例えば、コイン)をマイナーに出力し、事実上新しいトークンを生成する。コインベーストランザクションは、「生成トランザクション」とも呼ばれてよく、それらの用語は本願明細書において同義的に使用され得る。コインベース又は生成トランザクションは、通常のトランザクションと区別される特定の特性を有する。例えば、各有効ブロックは、1つの生成トランザクションのみを含む。各生成トランザクションは、インプットを持たず、統治しているブロックチェーンプロトコルに従い成功したマイナーに起因する次に優勢な(then-prevailing)ブロック報酬により設定された量のトークンのアウトプットを生成する。生成トランザクションは、ブロックをマイニングするのに成功した、つまりproof-of-workを達成したマイニングノードによってのみ生成できるので、「proof-of-workトランザクション」である。
【0038】
多くのブロックチェーンシステムでは、単一のエンティティが、マイニングノードとして動作する膨大な数の個々のコンピュータを所有し、制御し、又は指示してよい。幾つかの例では、複数のマイニングノードのリソースは、膨大な数の個々のプロセッサの計算能力を利用するマイニングプールに一緒にプーリングされてよい。以下の例のうちの多くは、「マイナー」、「マイニングノード」、又はマイナー/マイニングノードにより保持される又は制御される公開-秘密鍵ペアを参照し得る。文脈から理解されるように、これらの参照は、マイニングノードを実装する個々のコンピュータ、及び/又はマイニングエンティティにより所有される若しくは制御されるマイニングプールを実施するコンピュータ/プロセッサの集合若しくはプールを含んでよい。
【0039】
マイニングノードの重要性を考えると、マイニングノード及び/又はマイニングノードの称する公開鍵の真正さ及びアイデンティティを検証できることは有利であり得る。特に、第三者認証機関への信頼に頼ることなく検証を行うことができることは有利であり得る。
【0040】
検証可能なマイナーアイデンティティの確立
本願の一態様によると、マイナーは、コインベーストランザクションの中にマイナーアイデンティティの宣言を含むブロックをマイニングすることにより、マイナーアイデンティティを確立してよい。新たにマイニングされたブロックの有効性及びその中の全部のトランザクションの有効性は、ブロックチェーンネットワークにより確認される。コインベーストランザクションの中のマイニングノードの自身のマイナーアイデンティティの包含は、proof-of-workにより裏打ちされたアイデンティティの宣言である。以下の例におけるマイナーアイデンティティは、公開鍵である。第三者CAは、マイニングノードとその宣言された公開鍵との間の関連付けを検証する必要がない。なぜなら、関連付けはブロックチェーンネットワーク及びproof-of-workにより裏打ちされるからである。
【0041】
マイナーアイデンティティの可能な取消を実現するために、例えば、対応する秘密鍵が損なわれた場合、マイナーは先ず有効性チェックトランザクションを生成し、その中でマイナーアイデンティティが宣言され、それについてマイナーにより制御されるアウトプットがある。コインベーストランザクションは、この有効性チェックトランザクションへの参照を含んでよい。別のノードにより実行されるアイデンティティ検証動作の部分は、有効性チェックトランザクションがマイナーにより制御されるアウトプットの移転を通じて「取り消され」ていないことを確認することであってよい。つまり、マイナーは、有効性チェックトランザクションのアウトプットを「使用する」ことにより、それにより、それを未使用トランザクション(unspent transaction (UXTO))セットから除去することにより、自身のマイナーアイデンティティを無効にしてよい。これは、マイナーアイデンティティを取り消すために新しいブロックをマイニングすることに依存しない高速取消メカニズムを提供する。
【0042】
図1を参照すると、ブロックチェーンネットワークにおいてマイナーアイデンティティを確立する1つの例示的な方法100をフローチャートの形式で図示する。方法100は、設定動作102と、登録動作104と、を含む。設定動作102は、有効性チェックトランザクション(validity-check transaction (VCT))を生成し伝播させることを含む。VCTは、任意のインプットと2つのアウトプットとを含む。1つのアウトプットは、マイナーにより制御されるアウトプットであり、任意のトークンをマイナーにより制御されるアドレスに割り当てる。VCTの第2アウトプットは、本例ではマイナーにより選択された公開鍵PK
IDであるマイナーアイデンティティを含む情報フィールドを含む。マイナーは、対応する秘密鍵sk
IDを保持する。情報フィールドは、Bitcoinに基づく実装のOP_RETURNフィールドであってよい。マイナーアイデンティティ(例えば、マイナーID)は、本例では、公開鍵PK
IDである。
【0043】
VCTは、ブロックチェーンネットワーク上を伝播し、最終的にはマイニング済みブロックへの包含により確定される。その結果、VCTはオンチェーンになる。
【0044】
登録動作104は、マイニングノードが新しいブロックをマイニングすることに成功することを含む。ブロックをマイニングすることは、未確定トランザクションのメモリプールから選択された複数のトランザクションを含む候補ブロックを組み立てることを含む。マイニングノードは、更に、コインベーストランザクションを自身の候補ブロックに挿入する。マイニングノードは、次に、採掘難易度設定より低いハッシュを見付けるために、ヘッダ内のノンスを繰り返し増大し、ブロックヘッダをハッシングすることにより、ブロックをマイニングしようとする。別のマイニングノードが成功した場合、マイナーは、他のマイニングノードの新しいブロックが有効であることを検証し、次に、新しい候補ブロックを生成し、再び試行する。
【0045】
動作104で、マイニングノードは新しいブロックをマイニングすることに成功し、新しいブロックはコインベーストランザクションを含む。コインベーストランザクションは、それ自体が、マイナーアイデンティティ、例えばPKIDを含み及びVCTへの参照を含む。参照は、VCTのトランザクション識別子、例えばTxIDVCTであってよい。
【0046】
マイニングノードがマイナーアイデンティティを宣言するコインベーストランザクションを含むブロックをマイニングすることに成功すると、それは、自身のマイナーアイデンティティを確立することに成功している。アイデンティティは、検証可能であり、マイニングノードにより、必要に応じて、証明可能且つ追跡可能な方法で、取り消され又は更新できる。更に、アイデンティティ及びマイニングノードとのその関連付けは、proof-of-workにより裏打ちされ、ネットワークによりセキュアにされ、第三者が証明機関における信頼を要求することなく、マイナーアイデンティティ(例えば、その公開鍵PKID)に依存することを可能にする。マイナーアイデンティティは、次に、特に、マイナーアクティビティを追跡すること、マイナーアイデンティティ又は状態を証明すること、マイナーとのセキュアな暗号化通信を確立する又は従事すること、及び様々な目的のためにマイナーをランク付けすること、を含む多数の目的のために使用されてよい。
【0047】
図2も参照すると、マイナーアイデンティティを確立する方法100で使用されてよい1つの例示的な設定方法200を示す。方法は、本例では、マイニングノードにより実行される。
【0048】
動作202及び304で、マイニングノードは、秘密鍵sskIDを選択し、対応する公開鍵PKIDを見付ける。公開鍵PKIDはマイナー識別子である。
【0049】
動作206で、マイニングノードは、次に、任意のインプットと、2個のアウトプットと、を含む有効性チェックトランザクションを生成する。インプットは、任意のUTXOであってよく、該UTXOについて、マイニングノードは対応する秘密鍵を保持する。つまり、任意のUTXOはマイナーにより制御される。多くの実装では、インプットは、VCTがブロックに含まれることを保証するためにVCTに関連付けられたトランザクションコストを相殺するのに十分なコイン又はトークン量であってよい。幾つかの実装では、最小トークン量はポリシにより確立されてよい。
【0050】
アウトプットのうちの1つは、マイニングノードにより制御されるアドレスへのアウトプットである。つまり、アウトプットは、マイニングノードが関連するロックスクリプトをアンロックできるようにする、マイニングノードが対応する秘密鍵を保持するアドレスへのものである。幾つかの例では、アウトプットアドレスは、PKVCTとラベル付けされてよく、PKVCTはマイニングノードにより選択された任意の公開鍵であり、PKVCTについて、マイニングノードが対応する秘密鍵を保持する。アウトプットは、例えば、マイニングノードにより選択され制御される公開鍵ハッシュ(例えば、Bitcoinアドレス)への移転を指定するP2PKH(pay to public key hash)演算であってよい。
【0051】
他のアウトプットは、情報が挿入されてよい非運用情報フィールドを含む。特に、フィールドは、マイナー識別子を含む。Bitcoinに基づく実装では、アウトプットは、OP_RETURNオペコードを使用して、情報フィールドを提供してよい。
【0052】
非運用情報フィールドが、その用語が理解されるように、必ずしもトランザクションの「アウトプット」として実装されないトランザクション内の情報を公開する目的で、トランザクションに含まれてよいブロックチェーンプロトコルがあってよい。しかしながら、情報フィールドを参照するこれらの例における用語「アウトプット」は、代替ブロックチェーンプロトコルにそのような可能な実装を含むことを意図している。
【0053】
動作206でVCTが生成されると、動作208で、マイニングノードは、次にVCTをブロックチェーンネットワーク上で伝播させる。当業者は、VCTの伝播が、トランザクションを検証し及び次にそれをVCTが接続された全部の他のノードへ送信するネットワークの各ノードに関与してよく、その結果、トランザクションが全ブロックチェーンネットワークを通じて迅速に伝播されることを理解する。未確定トランザクションとして、それはメモリプールに挿入される。該メモリプールから、個々のマイニングノードは、候補ブロックに包含するためにトランザクションを選択する。従って、それは、マイニング済みブロックへの包含により、最終的に「確定」される。動作210で、マイニングノードは、VCTがマイニング済みブロックに含まれることにより、確定されるかどうかを評価する。確定されると、動作212で、マイニングノードは、トランザクション識別子TxIDVCTを記録する。マイニングノードは、幾つかの実装では、VCTがマイニングされる前に、トランザクション識別子を記録してよいことが理解される。
【0054】
ブロックチェーンのVCT部分により、PKVCTへのその第1アウトプットは、マイニングノードが該アウトプットに関連付けられたトークンを移動する/移転することを選択するまで、「未使用」アウトプットのUXTOセットの部分を形成する。このUXTOは、有効性チェックトランザクションとして機能する。それがUTXOセットの部分である限り、VCT内のマイナー識別子は有効のままであり取り消されない。それがUTXOセットの中に存在しなくなると直ぐに、VCT内のマイナー識別子はもはや有効ではない。
【0055】
図3も参照すると、マイナーアイデンティティを確立する方法100で使用されてよい1つの例示的な登録方法300を示す。方法は、本例では、マイニングノードにより実行される。方法300は、マイナー識別子に関連付けられた有効性チェックトランザクションを生成する設定動作が既に生じていると仮定する。
【0056】
動作302で、マイニングノードは候補ブロックを生成する。候補ブロックは、未確定トランザクションのメモリプールから選択された多数のトランザクションを含む。動作304により反映されるように、マイニングノードは、次に、候補ブロックにコインベーストランザクションを挿入する。コインベーストランザクションは、マイニングノードのために所定数の新しいトークン又はコインをマイニングすることに加えて、マイナー識別子PKID及びVCTへの参照.を含む情報フィールドを含む。参照は、トランザクション識別子TxIDVCTであってよい。情報フィールドは、例えばOP_RETURNコード又は式を用いて提供されてよい。
【0057】
マイナー識別子及びVCTへの参照に加えて情報フィールドは、追加情報を含んでよい。例えば、それは、どんなアクションがコインベーストランザクションにより実装されているかを示すアクション識別子又はコードを含んでよい。この例では、アクションは、「登録」であってよく、マイニングノードがそのマイナー識別子を公に登録していることを示す。それは、代替として、署名を含んでもよい。例として、署名は、前記情報フィールドの残りの部分の署名であってよく、例えば、
【数2】
【0058】
このコインベーストランザクションを有する候補ブロックが生成されると、動作306により示されるように、マイニングノードは、ブロックをマイニングしようとする。それは、また、動作308により示されるように、競争しているノードが別のブロックをマイニングするのに成功するかどうかを評価する。競争しているノードがブロックをマイニングする競争に勝つと、マイニングノードは、他のブロックを評価し、それをブロックチェーンに追加し、動作302に戻って新しい候補ブロックを構築し再び挑戦する。
【0059】
マイニングノードが候補ブロックのマイニングに成功した場合、それは、コインベーストランザクションのトランザクション識別子TxIDREGを記録する。代替として、それが1つのコインベーストランザクションのみを含むので、ブロック数にだけ注意すればよく、他のノードはブロック数に基づき識別できることに留意する。
【0060】
登録コインベーストランザクションを有するブロックをマイニングすることに成功すると、マイニングノードは、自身のマイナー識別子を登録することに成功し、それをブロックチェーン上に発行する。マイナー識別子、例えば公開鍵PKIDを受信した別のノードは、公開鍵が有効であり、マイニングノードに関連付けられていることを、別個の証明機関への信頼に依存することなく、検証してよい。
【0061】
図4は、本願の態様に従い、ノードがマイナー識別子を検証するために実行し得る1つの例示的な方法400をフローチャートの形式で示す。ノードは、マイナー識別子PK
IDを検証すべき、ブロックチェーン内の又は外の任意のノードである。検証は、例えば、マイナーからの要求を検証する又は認可すること、マイナーとの通信セッションを確立すること、又は公開鍵PK
IDの有効性及びそのマイニングノードとの関連付けを証明すること、の部分として生じてよい。
【0062】
動作402で、ノードは、マイナーID(PKID)及び登録トランザクション識別子(TxIDREG、又は幾つかの例では、登録コインベーストランザクションが現れるブロック数)を受信し又は検索する。動作402は、マイニングノードが署名したと主張するメッセージを検索し又は受信することを更に含んでよい。メッセージm及び署名σmは、マイニングノードにより提供されてよい。幾つかの例では、メッセージ及びその署名は、マイニングノードにより、そのアイデンティティの証明として提供される又は発行されるデジタル証明の部分であってよい。
【0063】
動作404で、ノードは、登録トランザクション識別子TxIDREG.に基づき、ブロックチェーンから登録コインベーストランザクションを検索する。動作406で、それは、次に、登録コインベーストランザクション内の特定のデータを検証し又は確認する。例えば、ノードは、OP_RETURNフィールドをパースして、コインベーストランザクションからの該フィールド内の情報を抽出してよい。パースした情報から、それは、VCTトランザクション識別子TxIDVCTを取得する。それは、OP_RETURNフィールドがマイニングノードにより提供された同じ公開鍵PKIDを含むこと、及び「アクション」が「登録」であることを確認してよい。
【0064】
動作408で、登録コインベーストランザクション内で発行されたVCTトランザクション識別子から、ノードは、VCTを検索してよい。動作410により示されるように、ノードは、VCT内のOP_RETURNフィールドが同じ公開鍵PKIDを有することを確認してよい。それは、次に、VCTの他のアウトプットが「未使用」のままであるかどうか、つまり、利用可能なアウトプットポイントのうちのUTXOセットの部分を残していることを評価してよい。これは、直接に又は中間ノードを通じて、UXTOセットデータベースをクエリすることを含んでよい。クエリは、トランザクション識別子TxIDVCTを含んでよいアウトポイント識別子、及びどのアウトプットかを示すインデックスに基づいてよい。アウトプットがUXTOセット内に現れない場合、マイナー識別子は、取り消された又は置き換えられているので、無効である。従って、検証は失敗する。
【0065】
しかしながら、アウトポイントがUXTOセット内にある場合、動作414で、ノードは、PKIDを、マイニングノードの検証済み公開鍵として取り扱ってよく、PKIDを用いてマイニングノードの署名を検証して、マイニングノードの署名を確認してよい。動作414は、ノードがコインベーストランザクションのOP_RETURNフィールド内にある署名を確認すること、又は存在する場合には、メッセージmに対する署名σmを確認すること、又はその両方を含んでよいことに留意する。明らかに、署名チェックが失敗した場合、意図されたマイニングノードは、対応する秘密鍵の保持者として検証できず、検証は失敗する。署名チェックが成功した場合、マイニングノードは、マイニング識別子、つまり検証された登録された公開鍵PKIDに関連付けられたマイニングノードとして検証される。
【0066】
上述のように、登録されたマイナーIDは、UXTOセットからVCTの第1アウトプットを除去することにより取り消すことができる。これは、そのアウトプットを、任意の他のトランザクションへのインプットとして用いることにより、「使用する」ことを通じて行われる。これは、該第1アウトプットに割り当てられた任意のトークンを、取消トランザクション内の新しいアドレスへと移転することを含んでよい。取消トランザクションの生成及び伝播は、検証ノードがUXTOセット内のアウトプットを特定することができなくなるので、マイナーIDの任意の検証を失敗させるのに十分である。しかしながら、マイナーは、更に、自身の次のマイニングされるブロックのためのコインベーストランザクションにOP_RETURNフィールドを含めることにより、取消を登録してよい。一例では、OP_RETURNは、アクション「取消」、及びマイナーIDを含んでよい。幾つかの実装では、それは、登録トランザクション及び取消トランザクションの両方のトランザクション識別子、及び署名を更に含んでよい。
【0067】
多くの場合には、マイナーIDをその秘密鍵を損なうことにより単に取り消すのではなく、マイニングノードは、自身のマイナーIDを「更新」又は置き換えたいと望むことがある。これは、秘密鍵の開示又は窃盗に起因してよく、又は鍵マテリアルの定期的な更新を保証するために、リスク管理の部分として定期的に行われてよい。
【0068】
古いマイナーID PK
ID-OLDを更新するために、マイニングノードは、先ず、新しい公開鍵PK
ID-NEWのために新しいVCTを生成する。その処理から、マイニングノードは、VCTトランザクション識別子TxID
VCT-NEWを取得する。マイニングノードは、次に、新しいコインベーストランザクションを有する新しいブロックをマイニングして、新しいマイナーIDを登録する。しかしながら、それを古いID及び古いIDの任意の作業履歴にリンクするために、マイナーはアクション「更新(Update ID)」又は「ID更新(Update ID)」を使用して、コインベーストランザクションがマイナーIDの最初の登録ではなく、前のマイナーIDを置き換えることであることをシグナリングしてよい。更新コインベーストランザクション内のOP_RETURNフィールドの内容は、以下を含んでよい:
【数3】
【0069】
本例では、更新動作は、マイニングノードが最大3個の署名を供給することを含み、1つは古いIDに関連し、1つは古いVCTに関連し、1つは新しいマイナーIDに関連する、ことが理解される。幾つかの例では、古いVCT署名は含まれなくてよい。
【0070】
また、マイニングノードは、何らかの他のトランザクションへのインプットとしての、古いVCTからのアウトプットの使用を通じて、前のマイナーIDを無効にしてよいことが理解される。一例では、アウトプットは、新しいVCTへのインプットであってよい。別の例では、マイニングノードは、ブロックをマイニングすることに成功して更新マイナーIDを登録するまで、別個の取消トランザクションを伝播させて自身の古いマイナーIDを無効にするのを、待ってよい。
【0071】
上述のシステムを用いると、マイナーは、自身の証明可能な識別子をブロックチェーン上で確立し登録することができる。それをマイニング済みブロックのコインベーストランザクション内に含めることにより、マイナーは、自身が善意のマイニングノードであることを証明し、識別子及び関連するマテリアルの有効性はproof-of-workにより裏打ちされる。VCTは、必要な場合には、高速取消のためのメカニズムを提供する。幾つかの例示的な実装では、VCTは、ポリシにより、少なくとも所定のトークン又はコイン値がアウトプットに割り当てられ、それによりproof-of-workをproof-of-stakeにより補強する必要があってよい。有利なことに、上述のシステムは、信頼機関への信頼の必要を回避し、マイニングノードの追加作業を含まず、ブロックに僅かな追加データしか含まない。
【0072】
上述の登録システム及び方法は、マイナーがアイデンティティを証明することを可能にし、別のノードが信頼機関に依存することなく検証可能なデジタル証明をマイニングノードに提供する。更に、後述するように、マイナー識別子は、マイナーによりマイニングされるブロックからのコインベーストランザクションを一緒に証明可能に繋げるために使用されてよい。これは、マイナーに、彼らのマイナーIDに関連付けられた検証可能な作業履歴を提供する。この作業履歴は、マイナー状態、特定のリソースにアクセスするための資格付与、何らかの目的のためのマイナーの階層構造内のランク付け、等を含む多数の事柄を確立するときに有用であってよい。以下の説明では、この作業履歴は、「評判証明(proof of reputation)」システムと呼ばれてよい。
【0073】
評判証明(proof of reputation)
一態様では、本願は、ブロックチェーン上にマイナー作業履歴を記録する及びマイナー作業履歴を検証する方法及びシステムを提供する。説明されるように、以下の例では、作業履歴は、マイニングノードによりマイニングされるブロック内のリンクされたコインベーストランザクションのチェーンにより記録される。作業履歴は、幾つかの実装では、マイニングノードの評判スコアを決定するために使用されてよい。評判スコアは、例としてマイナー投票動作を含む多数の用途で使用されてよい。
【0074】
後述する実装のうちの幾つかでは、コインベースドキュメントは、それぞれ、情報フィールド内にマイナー識別子を含む。マイナー識別子は、幾つかの実装では、上述の方法及びシステムを用いて確立され検証可能であってよい。しかしながら、幾つかの実装では、他の技術またはシステムが、マイナー識別子を確立するために、及び検証目的で使用されてよい。従って、以下に説明される作業履歴及びproof-of-reputationの例は、必ずしも、全部の実装において上述のマイナー識別子登録処理の使用を必要としない。
【0075】
上述のように、マイナー識別子を登録する1つのメカニズムは、マイナー識別子を、関連するマイニングノードによりマイニングされたブロックのコインベーストランザクションに入れることである。マイナー識別子は、コインベーストランザクション内のOP_RETURNフィールドのような情報フィールドに現れてよい。情報フィールドは、署名又は他のデータを更に含んでよい。上述のように、幾つかの実装では、情報フィールドは、有効性チェックトランザクションへの参照を含んでよい。これは、マイナー識別子が取り消されていない他者による、マイナー識別子の高速取消及び簡易検証を可能にする。
【0076】
コインベーストランザクションは、更に、マイニングノードの作業履歴を記録するために、登録されたマイナー識別子と関連して利用されてよい。
図5は、ブロックチェーンにマイナー作業履歴を記録する1つの例示的な方法500を、フローチャートの形式で示す。方法500は、マイナー識別子に関連付けられたマイニングノードにより実行される。マイナー識別子は公開鍵であってよく、マイニングノードは該公開鍵の対応する秘密鍵を保持しており、つまりマイナー識別子はPK
IDであってよい。
【0077】
方法500は、動作502で、マイナー識別子を登録するステップを含む。上述のように、登録動作は、マイニングノードによりマイニングされるブロック内の登録コインベーストランザクション内でマイナー識別子を発行することを含む。
【0078】
動作504で、マイニングノードは、新しいブロックをマイニングしようとし続ける。特に、マイニングノードは、新しい候補ブロックを構築し、マイナー識別子を含む情報フィールドを含むコインベーストランザクションを挿入する。コインベーストランザクションの情報フィールドは、同じマイナーによりマイニングされるブロック内の前のコインベーストランザクションへの参照を更に含む。該前のコインベーストランザクションは、最近にマイニングされたブロックであり、コインベーストランザクションはマイナー識別子を含む。第2ブロックがマイニングされる場合、参照は登録コインベーストランザクションへのものである。該マイニングノードからの後にマイニングされるブロックは、最近にマイニングされたブロックのコインベーストランザクションへの参照によりリンクされたコインベーストランザクションを、それらがマイニングされた順序に含む。参照は、例えば、コインベーストランザクションのトランザクション識別子、例えばTxIDであってよい。幾つかの例では、参照は、ノードがブロック内のコインベーストランザクションを識別し得ることに基づき、コインベーストランザクションを含むブロック番号へのものであってよい。幾つかの例では、参照は、TxID及びコインベーストランザクションのアウトプットのうちの1つ、特にOP_RETURNアウトプットを指すインデックスを含む「アウトポイント」であってよい。
【0079】
幾つかの実装では、情報フィールドは追加情報を含む。例えば、情報フィールドは、マイニングノードからの最近マイニングされたブロックからのコインベーストランザクションへの参照に加えて、マイニングノードによりマイニングされた全ての後続のブロックの中の登録コインベーストランザクションへの参照を含んでよい。別の例として、情報フィールドは、マイナー識別子に基づき、つまりマイナー識別子に関連付けられた秘密鍵を用いて生成されたデジタル署名を含んでよい。デジタル署名は、例えば情報フィールドに含まれる参照のものであってよい。
【0080】
動作504で、コインベーストランザクションを有する候補ブロックが生成されると、動作506で、マイニングノードは、該ブロックをマイニングしようとする。動作508で、マイニングノードは、更に、別のマイニングノードからの新しいブロックの通知の受信をモニタする。別のノードが新しいブロックを見付けるのに成功した場合、マイニングノードは、動作510で適用可能なブロックチェーンプロトコルに従い新しいブロックが有効であることを検証し、ブロックチェーンに該新しいブロックを追加する。マイニングノードが、別のノードから新しいブロックの通知を受信する前に、候補ブロックをマイニングすることに成功した場合、動作512で、マイニングノードは、ブロックチェーンネットワーク上の候補ブロックのマイニングの成功を迅速に伝播させ、該新しいブロックをブロックチェーンに追加する。ブロックチェーン上の新しいブロックがマイニングノード又は別のノードに由来するかに拘わらず、新しいブロックが見付かると、マイニングノードは、動作504へ戻り、新しい候補ブロックを構築して再び挑戦する。
【0081】
明らかに、上述のサイクルは、マイニングノードが新しいブロックをマイニングするのに時に成功するならば、最近のブロックから元の登録コインベーストランザクションへと戻る、マイニングノードによりマイニングされたブロックをリンクするリンクされたコインベーストランザクションのチェーンをもたらす。OP_RETURNデータはブロックチェーン上で見えるので、それぞれがマイナー識別子を含むコインベーストランザクションのリンクされたセットは、マイニングノードの作業履歴の公開記録として直ちに識別可能である。
【0082】
図6を参照すると、ブロックチェーンからのマイナー作業履歴を検証する1つの例示的な方法600示す。方法600は、ノードのブロックチェーンネットワークの一部であるか否かに拘わらず、任意のコンピューティングノードにより実行されてよい。
【0083】
動作602で、コンピューティングノードは、コインベーストランザクションを識別する。この識別は、多数の可能な方法で生じてよい。例えば、マイニングノードは、自身の意図されたアイデンティティ及びコインベーストランザクションのトランザクション識別子を有するコンピューティングノードを提供してよい。トランザクション識別子は、マイニングノードにより生成された最近マイニングされたコインベーストランザクションを指してよい。幾つかの状況では、マイニングノードは、参加、投票、通信する要求と関連して、又はマイニングノードが特にアイデンティティ及び作業履歴の関連する評判を有することの表明(assertion)の部分として、この情報をコンピューティングノードに提供してよい。この表明は、同じ方法により、マイニングノードにより発行されてよく、コンピューティングノードは、評判からの情報にアクセスし及び検索してよい。コンテキスト又はメカニズムに無関係に、コンピューティングノードは、特定のコインベーストランザクションを特定のマイニングノードの意図された作業履歴の部分として識別する情報を取得する。
【0084】
動作604で、コンピューティングノードは、コインベーストランザクションが、情報フィールド内にマイナー識別子を含むかどうかを評価する。多くの状況では、コンピューティングノードは、マイニングノードの意図された識別子を取得しており、動作604は、同じ識別子がコインベーストランザクション内に現れることを確認することを含んでよい。否の場合、コインベーストランザクションは意図されたマイナーアイデンティティについて作業履歴を検証しないので、方法600は失敗する。
【0085】
動作606で、コンピューティングノードは、更に、コインベーストランザクションの情報フィールドが前のコインベーストランザクションへの参照を含むかどうかを決定する。参照は、例えば、TxID番号であってよい。幾つかの例では、参照は、コインベーストランザクションが発見されるべきブロックを識別するブロック数又は高であってよく、或いは前のコインベーストランザクションのアウトポイントであってよい。参照が存在し、前の(低いブロック高の)マイニングされたコインベーストランザクションへのものである場合、動作608で、コンピューティングノードは、該コインベーストランザクションのコピーをブロックチェーンから検索し、動作604に戻り、それがマイナー識別子及び前のコインベーストランザクションを指すことを確認する。この方法では、コンピューティング装置は、マイニングされた順序の中の前のものにリンクされるコインベーストランザクションの情報フィールドの中の参照を用いて、コインベーストランザクションのリンクされたセットを通じて逆にトレースする。
【0086】
動作606で、コインベーストランザクションのうちの1つが前のコインベーストランザクションへの参照を含まない場合、コンピューティングノードは、それが登録コインベーストランザクション、つまりチェーン内の最初であるかどうかを評価する。それらは、登録コインベーストランザクションであるという指示を含み得る、例えば「アクション:登録(Action:Registration)」又は等価コード又は指示子を含み得る情報フィールドから検証可能であってよい。幾つかの例では、代替又は追加で、それは、チェーン内の全部の他のコインベーストランザクションがそれを登録コインベーストランザクションとして識別することに基づき、検証されてよい。それが登録コインベーストランザクションではない場合、チェーンは壊され、方法600は作業履歴を検証することに失敗する。是である場合、作業履歴は識別され、動作612で、コンピューティングノードは、マイナー識別子を検証することに進んでよい。上述のように、幾つかの実施形態では、これは、有効性チェックトランザクション及び関連する検証処理を利用することを含んでよい。
【0087】
上述の処理は、一例として、第三者コンピューティングノードが、特定のマイニングノードが特定の作業履歴を有することを検証できるようにする。つまり、コンピューティングノードは、マイニングノードの作業履歴を直ちにトレースでき、これは、マイニングノードに検証可能な評判証明を提供する。有効なブロックを生成する長い履歴を有するマイニングノードは、作業履歴が僅かしか又は全く有しないマイニングノードよりも、信頼でき、重要であり、信頼する価値があり、委任され、又は投資されると考えられる。これに基づき、「proof-of-work」は、どのブロックが有効であるか及びどのマイナーが計算能力へのその投資に対して現在報酬を受けているかを決定するために機能するだけでなく、計算能力に投資するためのマイナー評判及び特定のブロックチェーンを構築するための委任の土台を補強するよう機能する。
【0088】
マイニング処理は、目標採掘難易度閾値より低いブロックヘッダハッシュを探求することを含む。探求は、ヘッダ内のノンス値をインクリメントし、ブロックヘッダをハッシングし、ハッシュ結果が採掘難易度閾値より低い数値をもたらすかどうかを評価し、そうでない場合には、ノンス値をインクリメントして再び挑戦することを含む。採掘難易度閾値は、プロトコルにより設定され、約10分毎にブロックを生じるよう、ブロックチェーンプロトコルに基づき周期的に調整される。調整は、ブロックチェーンネットワークがネットワーク内のハッシュパワー全体の中の変化を考慮するように生じる。ハッシュパワーが追加されると、採掘難易度は、高速過ぎる及び簡単過ぎる生成にならないことを保証するよう変更される。Bitcoin Coreプロトコルでは、例えば、採掘難易度は2016ブロック(約14日間)に調整される。Bitcoin Cash又はBitcoin SVプロトコルでは、採掘難易度は例えば144ブロックに調整される。
【0089】
ブロックヘッダは、フィールド、そのブロックのために使用される現在採掘難易度閾値を指定するnBitsフィールドを含む。採掘難易度閾値は、基数256の科学的表記(base 256 scientific notation)で表現される。従って、次式が4バイトである場合:
【数4】
目標Tは次のように定義される:
【数5】
【0090】
a
1の値は、目標が常に2
256より小さく維持されることを保証するために、次の範囲内になければならない:
【数6】
従って、32バイト文字列として表現できる。SHA256関数がランダムオラクルのように振る舞うとすると(つまり、SHA256出力がランダムな256ビット文字列であり、各ビットが他のビットと独立して等しく1又は0である可能性がある)、ブロックヘッダハッシュがトライアルnNonce値について目標を下回る可能性は次の通りである:
【数7】
【0091】
本願の別の態様では、評判スコアは、マイニングノードについて、その検証された作業履歴に基づき決定されてよい。上述のように、作業履歴は、マイニングノードとそのマイナー識別子と該マイニングノードによりマイニングされたブロックのセットとの間の関連付けを証明するリンクされたコインベースドキュメントのチェーンにより表現されてよい。
【0092】
1つの例示的な実装では、マイニングノードの評判スコアは、マイニングしたブロックの数、つまりリンクされたコインベースドキュメントの数に基づき決定される。この例は、ブロックチェーン履歴の中の任意のポイントにある任意のブロックに、それがリンクされたコインベーストランザクションを介してマイニングされたブロックのチェーンの一部を形成するならば、等しく重み付けを提供する。
【0093】
別の例示的な実装では、評判スコアは、マイニングされたブロックの重み付けされた数に基づき決定されてよい。つまり、各ブロックは、それに関連付けられた重みを有してよい。1つの例示的な実装では、重みはブロック高に基づいてよい。例えば、1つの実装は、古いブロックよりも大きな重みを与えることであってよい。別の例では、実装は、より最近のブロックに、より大きな重みを与えることであってよい。
【0094】
別の実装は、ブロックに割り当てられた重みは、ブロック採掘難易度に基づいてよい。つまり、低い採掘難易度閾値を有する、つまり平均でマイニングするためのより大きなハッシュパワーを必要とするブロックは、評判スコアの決定において、より大きな重みを与えられてよい。そのような実装の一例では、評判スコアは、リンクされたコインベースドキュメントのチェーンの中のコインベースドキュメントのうちの1つを含む各ブロックの目標採掘難易度の関数として決定されてよい。
【0095】
例として、マイナー評判スコアがRep
IDであり、ブロックiの目標採掘難易度がT
iであり、作業履歴の中のブロック数がBである場合、マイナー評判スコアは、以下のように計算されてよい:
【数8】
【0096】
幾つかの例では、評判スコアは、作業履歴全体に基づいてよく、又は最近のブロックの最大数までのウインドウに基づいてよい、つまり「ローリング」評判スコアである。幾つかの例では、ウインドウは、ブロックチェーン高、例えば、現在ブロックチェーン高のブロック数Xの範囲内に含まれる作業履歴からの任意のブロックに基づいてよい。
【0097】
幾つかの例示的な実装では現在評判スコアは、マイニングノードにより計算され、各コインベーストランザクションの情報フィールドに含まれてよい。
【0098】
幾つかの例では、評判スコアは、正規化され、例えば、評判スコアを最大評判スコア、例えばブロックチェーン又はウインドウ内の全部のブロックから生じる評判スコアにより除算してよい。これは、全部の評判スコアが0と1の間であることを保証する。
【0099】
図7を参照すると、マイニングノードの評判スコアを決定する例示的な方法700を示す。例示的な方法700は、マイニングノードにより、別のブロックチェーンノードにより、又はブロックチェーンネットワークの外部のコンピューティングノードにより実行されてよい。
【0100】
動作702で、特定のマイニングノードにういてリンクされたコインベーストランザクションのチェーンは、例えば
図6に関して上述したようにトレースされる。コインベーストランザクションをトレースすることから、マイニングノードの作業履歴が識別される。動作704で、コインベーストランザクションのうちの1つを含む各ブロックの採掘難易度閾値が決定される。次に、動作706で、マイニングノードの評判スコアは、採掘難易度閾値のセットに関数を適用することにより決定される。上述のように、これは、採掘難易度閾値(又はそれらの逆数)を加算することを含んでよい。追加又は代替として、重み付けた関数により適用されてよい。結果は、マイニングノードの評判スコアであり、動作708の出力である。
【0101】
評判スコアは、多数のシナリオで使用され得るブロックチェーンへのマイニングノードの貢献の定量化可能な指標である。有利なことに、マイナーアイデンティティ及びその関連付けられた評判スコアを決定し評価する全部のデータは、ブロックチェーンから公衆に利用可能であり、proof-of-workにより裏打ちされたブロックチェーンの不変特性のおかげで検証される。悪意ある振る舞いを防ぐために、マイニングノードの評判スコアは、マイニングブロックを通じてのみ、つまり、ブロックチェーンネットワークの安定性への肯定的貢献を通じて、向上できる。
【0102】
評判スコアは、マイニングノードが自身のマイナー識別子を含め、コインベースドキュメント内の前のブロックにリンクすることにより開発される。コインベースドキュメントの内容は、マイニングノードの制御にありマイニングノードが評判を構築するために第三者検証若しくは証明に依存する必要がないことを意味する。更に、マイニングノードは、評判を偽造又は改ざんできない。
【0103】
関連するマイナー識別子を有するマイニングノードの評判スコアを検証可能に決定する能力は、多数の用途で使用できる。例えば、特定のプロトコル又は活動に参加する資格は、特定の経歴を有するマイナーのみが関与することを許可するために、最小閾値評判スコアを有するマイニングノードに基づいてよい。別の可能な用途は、投票である。特に、基礎にあるブロックチェーンプロトコルに変更が提案されると、マイナーは、投票を提出することを任され、その投票は何らかの方法で重み付けされてよい。1つの選択肢は、評判スコアに基づき投票を重み付けすることである。それにより、マイナーが既存のブロックチェーンを構築するためにより多くの作業を行っていることに基づき、より高い評判スコアを有するマイナーにより大きな重みを与える。
【0104】
ブロックチェーンで使用された1つの例示的な投票方式は、マイナーが投票できる時間ウインドウを開き、次に該時間ウインドウの間にマイニングされたブロックに基づき投票を勘定することを含む。これは、時間ウインドウの間に最大ハッシュパワーを有するマイナーに最も多くの投票を提供し、貢献の履歴を考慮しない。これは、「ハッシュ戦争」を生じることがあり、「レンタルハッシュ(rented hash)」に対してシステムを脆弱にする。これは、投票結果を歪曲することに関心のあるマイナーが、ウインドウ中のブロックチェーンのハッシュパワーを支配するために、膨大な量の計算能力をブロックチェーンに一時的にコミットするが、長期に渡りブロックチェーンにそのような量の計算能力をコミットするリソース又は関心を有しないことである。幾つかの例では、「レンタルハッシュ」は、それがリソースの非経済的な割り当てであるという点で持続可能であるが、投票の結果を強制するために該マイナーにコストを生じる。マイナーは、従って、該マイナーのブロックチェーンへの実際の関与及び投資に比例しない投票への影響力を取得する。
【0105】
一例では、マイナーが投票する処理は、マイニングノードが、彼らがマイナー識別子、例えばPKID及び関連する評判スコアRepIDを登録したならば、参加することを可能にしてよい。投票は、開始時間から終了時間までの(又は開始ブロック高から終了ブロック高までの)合意した時間ウインドウに渡り生じる。任意の投票についてウインドウ及びタイミングについての合意を達成するメカニズムは、オンチェーン又はオフチェーンであってよい。
【0106】
投票を投じるために、マイニングノードは、投票ウインドウの間に投票ブロックをマイニングしなければならない。投票ブロックの中で、マイナーは、コインベーストランザクション内に、自身のマイナー識別子及び最近のコインベーストランザクションへの参照を挿入する。マイナーは、更に、幾つかの実装では、自身の計算した評判スコアを含めてよい。マイニングノードは、投票信号も含んでよい。投票に依存して、信号は、2進値「はい/いいえ」又は「賛成/反対」であってよく、又は3個以上の選択肢の間の選択のような複数値の信号、3個以上の選択肢のランク付け、等であってよい。幾つかの例では、コインベーストランザクションは、マイナー識別子に対応する秘密鍵に基づき、デジタル署名を更に含んでよい。デジタル署名は、コインベーストランザクション内の情報フィールドの他のコンテンツに渡ってよい。
【0107】
幾つかの実装では、単一のマイナーは、投票ウインドウの間に複数回投票する資格があってよい。幾つかの他の実装では、マイナーあたり、つまり関連するマイナー識別子PKIDあたり、1回のみの投票が許可される。後者の場合、マイナーが投票を投じることを意図する1個より多くのブロックをマイニングする場合、どれをカウントすべきかを決定するためにポリシが適用されてよい。例えば、ポリシは、最も早い(最も低いブロック高)の投票を取り入れるものであってよい。代替として、ポリシは、最後の(最も高いブロック高)の投票を取り入れるものであってよく、マイナーがウインドウ中に彼らの投票を変更することを許容する。
【0108】
任意の投票モニタは、上述のようにマイナー識別子を検証することにより、及び上述のように該マイナー識別子に関連付けられた評判スコアを検証することにより、投票が有効であると検証してよい。署名が投票コインベーストランザクションの部分として要求される場合、それは、別のマイナーが悪意を持ってブロックをマイニングすること及び彼らのPKIDを使用して別のマイナーの投票を投じると称することに対して保護する。投票ウインドウが終了した後に、全部の情報はブロックチェーンに記録され検証できるので、任意の観察者は、選択肢毎に評判スコアで加重された投票票を加算することにより、結果を決定してよい。
【0109】
現在及び将来のブロックデータではなく、履歴ブロックデータを使用して投票を集計することにより、投票は、比較的短い時間期間に渡り行うことができ、その間、チェーンワークを正確に反映するために、投票重みが十分なproof-of-workデータを用いて計算される。これは、投票重みが一時的なハッシュバーストにより乱されるリスクを有しないで、比較的短い投票期間を可能にする。
【0110】
しかしながら、投票は、新しいブロックをマイニングするためにPK
IDを要求するので、マイナーが投票を投じることができるために、十分な時間が与えられなければならない。10分間のブロック時間を想定すると、PK
IDを有するマイナーがx%のネットワークハッシュレートを有する場合、t時間のうちに少なくとも1つのブロックをマイニングする可能性は、以下の通りである:
【数9】
【0111】
以下の表1は、種々のx及びtについてPを与える。
【表1】
【0112】
上記の表から、PKIDが1%しかネットワークハッシュレートを有しない場合でも、72時間の投票期間が、彼らが投票ブロックをマイニング可能であることをほぼ保証する。
【0113】
可能なハッシュ戦争シナリオの少なくとも1つの例示的なモデルでは、上述の評判システムは、レンタルハッシュの有効性を低下させることを示すことができる。その結果、攻撃者が14日間にわたりネットワークの75%を支配した場合でも、攻撃者は投票権の23%しか蓄積できない。
【0114】
種々の上述の例示的な方法の上述の動作のうちの一部又は全部は示されたものと異なる順序で実行されてよいこと、及び/又はそれらの方法の全体的な動作を変更することなく同時に実行されてよいことが理解される。
【0115】
図8を参照すると、本願の例に従う、簡易コンピューティング装置800をブロック図の形式で示す。コンピューティング装置800は、上述の機能のうちの1つ以上を実行してよい。コンピューティング装置800は、例えばマイニングノードであってよい。幾つかの実装では、コンピューティング装置800は、例えばマイナー識別子、マイナー作業履歴、マイナー評判スコア、又はマイナー投票ブロック、のようなブロックチェーンに記録されるデータを検証するよう動作する非マイニングノードであってよい。
【0116】
コンピューティング装置800は、1つ以上のマイクロプロセッサ、特定用途向け集積回路(ASIC)、マイクロコントローラ、又は同様のコンピュータ処理装置を含んでよいプロセッサ802を含む。コンピューティング装置800は、値、変数、及び幾つかの例ではプロセッサ実行可能プログラム命令を格納するための永久及び非永久メモリを含んでよいメモリ804と、ネットワークインタフェース806と、を更に含んでよい。
【0117】
コンピューティング装置800は、実行されるとプロセッサ802に本願明細書に記載の機能又は動作のうちの1つ以上を実行させるプロセッサ実行可能命令を含むプロセッサ実行可能アプリケーション808を含んでよい。
【0118】
上述の種々の実施形態は、単なる例であり、本願の範囲を限定することを意味しない。本願の意図された範囲内にある変形のように、ここに記載された種々の技術革新は、当業者に明らかである。特に、上述の例示的な実施形態のうちの1つ以上からの特徴は、以上に明示的に示されない特徴の部分結合を含む代替の例示的な実施形態を生成するために選択されてよい。更に、上述の例示的な実施形態のうちの1つ以上からの特徴は、以上に明示的に示されない特徴の結合を含む代替の例示的な実施形態を生成するために選択され結合されてよい。このような結合及び部分結合に適する特徴は、本願の全体的に吟味することにより当業者に直ちに明らかになるだろう。本願明細書及び請求項に記載された主題は、あらゆる適切な技術的変更をカバーし包含する。