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

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

▶ エヌチェーン ホールディングス リミテッドの特許一覧

特許7592620ブロックチェーンネットワークにおけるブロックを伝搬する方法及び装置
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-22
(45)【発行日】2024-12-02
(54)【発明の名称】ブロックチェーンネットワークにおけるブロックを伝搬する方法及び装置
(51)【国際特許分類】
   H04L 9/32 20060101AFI20241125BHJP
   H04L 12/22 20060101ALI20241125BHJP
【FI】
H04L9/32 200Z
H04L12/22
【請求項の数】 15
(21)【出願番号】P 2021560040
(86)(22)【出願日】2020-04-09
(65)【公表番号】
(43)【公表日】2022-06-02
(86)【国際出願番号】 IB2020053416
(87)【国際公開番号】W WO2020208580
(87)【国際公開日】2020-10-15
【審査請求日】2023-04-06
(31)【優先権主張番号】1905221.6
(32)【優先日】2019-04-12
(33)【優先権主張国・地域又は機関】GB
(73)【特許権者】
【識別番号】318001991
【氏名又は名称】エヌチェーン ライセンシング アーゲー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】マッケイ,アレックス
(72)【発明者】
【氏名】ジャーン,ウエイ
(72)【発明者】
【氏名】ライト,クレイグ スティーヴン
(72)【発明者】
【氏名】コグラン,スティーヴン パトリック
【審査官】青木 重徳
(56)【参考文献】
【文献】国際公開第2018/224955(WO,A1)
【文献】国際公開第2019/003083(WO,A1)
【文献】国際公開第2018/229633(WO,A1)
【文献】国際公開第2019/021107(WO,A1)
【文献】 アンドレアス・M・アントノプロス (今井 崇也 ほか),ビットコインとブロックチェーン,初版第1刷,日本,NTT出版株式会社,2018年04月18日,p.044-051
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/32
H04L 12/22
(57)【特許請求の範囲】
【請求項1】
ブロックチェーンネットワークにおけるブロック伝搬の、コンピュータにより実施される方法であって、
第1マイニングノードにおいて第1候補ブロックの第1ブロックヘッダをハッシングしている間に、
他のマイニングノードへ、第1メッセージを送信するステップであって、前記第1メッセージは、第1の複数のトランザクションと前記第1候補ブロックに含まれる第1順序付きセットの中の該第1の複数のトランザクションの順序とを指定するステップと、
前記ブロックチェーンネットワークを介して第2マイニングノードから、第2メッセージを受信するステップであって、前記第2メッセージは、第2の複数のトランザクションと、前記第2マイニングノードによりマイニングされている第2候補ブロックに含まれる第2順序付きセットの中の該第2の複数のトランザクションの順序と、を識別するステップと、
を含む方法。
【請求項2】
前記第2メッセージを受信するステップは、前記第1マイニングノードにあるメモリに、第2マイニングノード識別子に関連付けて、トランザクションの前記第2順序付きセットを格納するステップを含む、請求項1に記載の方法。
【請求項3】
前記第2マイニングノードから、コインベーストランザクションと前記第2候補ブロックに関してproof-of-workの達成に成功したことを示す第2ブロックヘッダ情報を受信するステップであって、前記第2ブロックヘッダ情報は、少なくともタイムスタンプとノンスとを含む、ステップと、
トランザクションの前記第2順序付きセット、前記コインベーストランザクション、及び前記第2ブロックヘッダ情報に基づき、第2ブロックヘッダを構成するステップと、
前記proof-of-workを検証するために、前記第2ブロックヘッダをハッシングすることにより、前記第2候補ブロックを検証するステップと、
を更に含む請求項1又は2に記載の方法。
【請求項4】
構成するステップは、トランザクションの前記第2順序付きセット及び前記コインベーストランザクションから、マークルルートを決定するステップを含む、請求項3に記載の方法。
【請求項5】
メモリプールから前記第1の複数のトランザクションを選択し順序付けて、前記第1候補ブロックを構築し、トランザクションの前記第1順序付きセットを生成し、コインベーストランザクションを追加する、第1構築ステップ、を更に含む請求項1に記載の方法。
【請求項6】
前記第1ブロックヘッダをハッシングして採掘難易度閾値より下のハッシュ値を生成することにより、前記第1候補ブロックの前記第1ブロックヘッダにノンスに関連付けられたproof-of-workを発見するステップであって、結果として、
前記他のマイニングノードへ、前記第1候補ブロックからのコインベーストランザクション及び第1ブロックヘッダ情報を送信し、前記第1ブロックヘッダ情報は少なくともタイムスタンプ及び前記ノンスを含み、
前記第1候補ブロックをブロックチェーンのローカルコピーに追加する、
ステップを更に含む請求項1に記載の方法。
【請求項7】
前記第1ブロックヘッダ情報は、少なくとも幾つかのヘッダフィールドを排除する、請求項6に記載の方法。
【請求項8】
前記第1マイニングノードは、前記proof-of-workを発見した後に、前記他のマイニングノードへ、トランザクションの前記第1順序付きセットを再送しない、請求項6又は7に記載の方法。
【請求項9】
前記第1メッセージは、第1マイニングノード識別子及びブロックレベル指示子に基づく第1テンプレート識別子を含む、請求項1~8のいずれか一項に記載の方法。
【請求項10】
前記第1テンプレート識別子は、(a)前記第1マイニングノード識別子、及び(b)ブロックチェーン内の前のブロックに関連付けられたハッシュ値、の連結のハッシュから取得される、請求項9に記載の方法。
【請求項11】
前記第1メッセージ及び前記第2メッセージは、トランザクションの前記第1順序付きリストの中の前記第1の複数のトランザクション及びトランザクションの前記第2順序付きセットの中の前記第2の複数のトランザクションを指定する圧縮されたトランザクション識別子を含む、請求項1に記載の方法。
【請求項12】
前記圧縮されたトランザクション識別子は、トランケートされたトランザクション識別子である、請求項11に記載の方法。
【請求項13】
前記第1メッセージの中のトランザクションの前記第1順序付きセットは暗号化され、トランザクションの前記第1順序付きセットを復号するための復号鍵は、前記第1マイニングノードが前記第1候補ブロックについてproof-of-workを発見した場合にのみ、前記他のマイニングノードに提供される、請求項1~12のいずれか一項に記載の方法。
【請求項14】
ブロックチェーンネットワーク上のブロックをマイニングする第1マイニングノードを実装するコンピューティング装置であって、前記コンピューティング装置は、
1つ以上のプロセッサと、
メモリと、
前記メモリに格納されたコンピュータ実行可能命令であって、前記1つ以上のプロセッサにより実行されると、前記プロセッサに請求項1~13のいずれか一項に記載の方法を実行させる、コンピュータ実行可能命令と、
を含むコンピューティング装置。
【請求項15】
ブロックチェーンネットワーク上のブロックをマイニングする第1マイニングノードを実装するためのプロセッサ実行可能命令を格納しているコンピュータ可読媒体であって、前記プロセッサ実行可能命令は、1つ以上のプロセッサにより実行されると、前記プロセッサに請求項1~13のいずれか一項に記載の方法を実行させる、コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ブロックチェーンネットワークに関し、特にマイナーノードの間のブロックの伝搬に関する。
【背景技術】
【0002】
proof-of-workブロックチェーンシステムでは、マイナーは、有効なブロックを見付けると、自身の成功を全ての他のマイナーに素早く通信しようとする。これは、ブロックチェーンネットワークを通じて全てのマイニングノードへブロックに関する情報を伝搬することを含む。幾つかの場合には、これは、フルブロックデータを送信することを含み得る。幾つかの場合には、これは、ブロックヘッダ及びトランザクションリスト情報を送信することを含み得る。受信側のマイナーは、ヘッダをハッシングし、それが成功したマイナーにより提供されたハッシュ値と一致することを確認することにより、新しいブロックを検証する。
【0003】
ブロックのサイズ及びトランザクション数が増大するにつれ、ブロック伝搬の遅延は一時的な分岐(fork)及び親のない(orphan)ブロックの問題を悪化させ得る。これらの状況は、マイナーにとって及びシステム全体にとって高コストである。
【図面の簡単な説明】
【0004】
例として、本願の例示的な実施形態を示す以下の添付の図面を参照する。
【0005】
図1】ブロックチェーンネットワークの例示的なブロック構造を示す。
【0006】
図2】ブロック伝搬の例示的な方法のフローチャートを示す。
【0007】
図3A】本願によるブロック伝搬の例示的な実装におけるメッセージ及び動作のシーケンスを示す。
図3B】本願によるブロック伝搬の例示的な実装におけるメッセージ及び動作のシーケンスを示す。
図3C】本願によるブロック伝搬の例示的な実装におけるメッセージ及び動作のシーケンスを示す。
図3D】本願によるブロック伝搬の例示的な実装におけるメッセージ及び動作のシーケンスを示す。
図3E】本願によるブロック伝搬の例示的な実装におけるメッセージ及び動作のシーケンスを示す。
図3F】本願によるブロック伝搬の例示的な実装におけるメッセージ及び動作のシーケンスを示す。
図3G】本願によるブロック伝搬の例示的な実装におけるメッセージ及び動作のシーケンスを示す。
図3H】本願によるブロック伝搬の例示的な実装におけるメッセージ及び動作のシーケンスを示す。
図3I】本願によるブロック伝搬の例示的な実装におけるメッセージ及び動作のシーケンスを示す。
【0008】
図4】マイニングノードの簡易な例をブロック図形式で示す。
【0009】
図中の同様の参照符号は同様の要素及び特徴を示すために使用される。
【発明を実施するための形態】
【0010】
一態様では、ブロックチェーンネットワークにおけるブロック伝搬の、コンピュータにより実施される方法が提供され得る。前記方法は、
第1マイニングノードにおいて第1候補ブロックの第1ブロックヘッダをハッシングしている間に、
他のマイニングノードへ、トランザクションと前記第1候補ブロックに含まれる第1順序付きセットの中の該トランザクションの順序とを指定する第1メッセージを送信するステップと、
トランザクションと第2マイニングノードによりマイニングされている第2候補ブロックに含まれる第2順序付きリストの中の該トランザクションの順序を識別する第2メッセージを受信するステップと、
を含んでよい。
【0011】
幾つかの実装では、前記第2メッセージを受信するステップは、幾つかの実装では、マイニングノードにあるメモリに、第2マイニングノード識別子に関連付けて、トランザクションの前記第2順序付きセットを格納するステップを含む。
【0012】
幾つかの実装では、前記方法は、前記第2マイニングノードから、コインベーストランザクションと前記第2候補ブロックに関してproof-of-workの達成に成功したことを示す第2ブロックヘッダ情報を受信するステップであって、前記第2ブロックヘッダ情報は、少なくともタイムスタンプとノンスとを含む、ステップと、
トランザクションの前記第2順序付きセット、前記コインベーストランザクション、及び前記第2ブロックヘッダ情報に基づき、第2ブロックヘッダを構成するステップと、
前記proof-of-workを検証するために、前記第2ブロックヘッダをハッシングすることにより、前記第2候補ブロックを検証するステップと、
を更に含んでよい。幾つかの場合には、構成するステップは、トランザクションの前記第2順序付きセット及び前記コインベーストランザクションから、マークルルートを決定するステップを含む。
【0013】
幾つかの実装では、前記方法は、前記第1ブロックヘッダをハッシングして採掘難易度閾値より下のハッシュ値を生成することにより、前記第1候補ブロックの前記第1ブロックヘッダにノンスに関連付けられたproof-of-workを発見するステップであって、結果として、
前記他のマイニングノードへ、前記第1候補ブロックからのコインベーストランザクション及び第1ブロックヘッダ情報を送信し、前記第1ブロックヘッダ情報は少なくともタイムスタンプ及び前記ノンスを含み、
前記第1候補ブロックを前記ブロックチェーンのローカルコピーに追加する、
ステップを更に含んでよい。幾つかの場合には、前記第1ブロックヘッダ情報は、少なくとも幾つかのヘッダフィールドを排除する。幾つかの場合には、前記第1マイニングノードは、前記proof-of-workを発見した後に、前記他のマイニングノードへ、トランザクションの前記第1順序付きセットを再送しない。
【0014】
幾つかの実装では、前記方法は、メモリプールからトランザクションを選択し順序付けて、前記幾つかの実装では、前記方法は候補ブロックを構築し、トランザクションの前記第1順序付きセットを生成し、コインベーストランザクションを追加する、第1構築ステップ、を含んでよい。
【0015】
幾つかの実装では、前記第1メッセージは、第1マイニングノード識別子及びブロックレベル指示子に基づく第1テンプレート識別子を含む。幾つかの例では、前記第1テンプレート識別子は、(a)前記第1マイニングノード識別子、及び(b)前記ブロックチェーン内の前のブロックに関連付けられたハッシュ値、の連結のハッシュから取得される。
【0016】
幾つかの実装では、前記第1メッセージ及び前記第2メッセージは、トランザクションの前記第1順序付きリストの中のトランザクション及びトランザクションの前記第2順序付きセットの中のトランザクションを指定圧縮されたトランザクション識別子を含む。幾つかの例では、圧縮されたトランザクション識別子は、トランケートされたトランザクション識別子である。
【0017】
幾つかの実装では、前記第1メッセージの中のトランザクションの前記第1順序付きリストは暗号化され、トランザクションの前記第1順序付きリストを復号するための復号鍵は、前記第1マイニングノードが前記第1候補ブロックについてproof-of-workを発見した場合にのみ、前記他のマイナーに提供される。
【0018】
別の態様では、ブロックチェーン上のブロックをマイニングする第1マイニングノードを実装するコンピューティング装置が提供されてよい。前記コンピューティング装置は、メモリと、1つ以上のプロセッサと、実行されると前記プロセッサに本願明細書に記載の方法のうちの1つ以上を実行させるコンピュータ実行可能命令と、を含んでよい。
【0019】
更に別の態様では、ブロックチェーンネットワークにおけるブロックをマイニングする第1マイニングノードを実装するためのプロセッサ実行可能命令を格納しているコンピュータ可読媒体であって、前記プロセッサ実行可能命令は、1つ以上のプロセッサにより実行されると、前記プロセッサに本願明細書に記載の方法のうちの少なくとも1つを実行させる、コンピュータ可読媒体が提供され得る。
【0020】
本開示の他の例示的な実施形態は、図面と関連して以下の詳細な説明を読むことから当業者に明らかになるだろう。
【0021】
本願では、用語「及び/又は」は、列挙された要素単独、任意の一部の組合せ、又は要素の全部、を含む列挙された要素の全部の可能な組合せ及び一部の組合せをカバーすることを意図しており、必ずしも追加要素を排除しない。
【0022】
本願では、用語「...又は...のうちの少なくとも1つ」は、列挙された要素単独、任意の一部の組合せ、又は要素の全部、を含む列挙された要素の全部の可能な組合せ及び一部の組合せをカバーすることを意図しており、必ずしも追加要素を排除せず、必ずしも全部の要素を必要としない。
【0023】
本願は、任意のデータセット又は「メッセージ」に適用されるとユニークな固定長英数字文字列を決定論的に(deterministically)生成する多数の暗号ハッシュ関数のうちの任意の1つを含むことを意図している、ハッシング(hashing)又はハッシュ(hash)関数を参照する。ハッシュ関数の結果は、ハッシュ値、フィンガープリント、ハッシュ結果、又はそれらの均等物と呼ばれてよい。例は、限定ではないが、SHA-2、SHA-3、及びBLAKE2を含む。以下で、ブロック又は候補ブロックをハッシングするマイナーへの言及は、暗号ハッシュ関数を候補ブロックのヘッダ部分に適用することを意味すると理解される。
【0024】
本願明細書では、用語「ブロックチェーン」は、全ての形式の電子的な、コンピュータに基づく、分散型台帳を包含すると理解される。これらは、総意に基づくブロックチェーン及びトランザクションチェーン技術、許可及び未許可台帳、共有台帳、並びにこれらの変形を含む。他のブロックチェーン実装が提案され開発されているが、ブロックチェーン技術の最も広く知られているアプリケーションは、Bitcoin台帳である。Bitcoin SVプロトコルにより例示されるBitcoinは、ここでは、便宜上及び説明の目的で参照されることがあるが、本発明はBitcoinブロックチェーンと共に使用することに限定されず、代替のブロックチェーン実装及びプロトコルが本発明の範囲に包含されることに留意すべきである。
【0025】
ブロックチェーンは、コンピュータに基づく非集中型の分散型システムとして実装されるピアツーピアの電子台帳であり、ブロックにより構成され、ブロックはまたトランザクションにより構成される。各トランザクションは、ブロックチェーンシステムの中の参加者間でデジタルアセットの制御の移転を符号化するデータ構造であり、少なくとも1つのインプット及び少なくとも1つのアウトプットを含む。各ブロックは前のブロックのハッシュを含み、これらのブロックは一緒に繋げられて、起源以来ブロックチェーンに書き込まれている全てのトランザクションの永久的な変更不可能な記録を生成する。トランザクションは、スクリプトとして知られている小さなプログラムを含む。スクリプトは、それらのインプット及びアウトプットを埋め込まれ、トランザクションのアウトプットがどのように及び誰によりアクセス可能であるかを指定する。Bitcoinプラットフォームでは、これらのスクリプトはスタックに基づくスクリプト言語を用いて記述される。
【0026】
ブロックチェーンは、ノードのネットワークにより実装される。各ノードは、ネットワーク接続と適用可能なブロックチェーンプトロコルを実行する実行ソフトウェアとを有するコンピューティング装置である。ノードは、トランザクションを検証し、それらをネットワーク内の他のノードへ伝搬する。「マイニングノード」又は「マイナー」と呼ばれる専用ネットワークノードは、未確定のトランザクション、つまり保留中のトランザクションのセットを集めて、ブロックにし、該ブロックを「マイニング」しようとする。マイニングは、これらの例では、ネットワーク内の他のマイナーが彼らのそれぞれのブロックのproof-of-workを解くことに成功する前に、proof-of-work(POW)を解くことを表す。Bitcoinの例では、POWは、結果が採掘難易度(difficultly)パラメータにより設定された閾値より下になるまで、ノンス(nonce)を含むブロックヘッダをハッシングすることを含む。ノンスは、繰り返されインクリメントされ、結果が閾値より下になるまで、又は別のマイナーが成功したノンスをマイナーが受信するまで、ハッシングが繰り返される。マイニング処理における変形は、当業者によく知られている。
【0027】
標準的なブロックは2つのデータ構造:ブロックヘッダ及びトランザクションを含む。図1は、Bitcoinプロトコルからの例示的なブロック構造100を概略的に示す。ブロック構造100は、ブロックヘッダ102と、ペイロード104と、を含む。ブロックヘッダ102は、本例では、バージョン番号106、前のブロックのハッシュ値108、マークルルート110、タイムスタンプ112、目標採掘難易度パラメータ114、及びノンス116のためのフィールドを含む。前のブロックのハッシュ値108は、このブロックを前のブロックに繋げてチェーンにし、それにより、暗号ハッシュを通じて連続するブロックを一緒にリンクする「ブロックチェーン」構造を生じる。マークルルート110は、ブロックに含まれる全部のトランザクションに基づくマークルツリー構造を表す。ノンス116は、マイニングするときに異なるハッシュ結果を生成するためにブロックヘッダ102の内容を変更するためにマイニングノードがインクリメント又はデクリメントを繰り返すことができる任意の値である。
【0028】
ペイロード104は、トランザクションカウント値118、及びトランザクションのリスト120を含む。トランザクションのリスト120は、幾つかの実装では、トランザクションID番号のリストであってよい。
【0029】
マイニングノードは、閾値より下であるハッシュ結果を生成するブロックヘッダの発見に成功すると、成功したハッシュ結果値を含む更新したインベントリ(inventory)メッセージを用いて他のノードに通知することに進む。他のノードは、次に、新しいブロックのコピーを要求し、その妥当性を独立に検証する。
【0030】
ブロックチェーンエコシステムは、トランザクション量が、その結果ブロックサイズが大幅に増大することによる使いやすさを向上することに成熟している。ブロックが大きくなるにつれ、幾つかの場合には128MBを超え、マイニングの成功した新しいブロックをネットワーク全体の他のノードに伝搬することは、多くの時間を要する。伝搬の遅延はコストがかかる。第1に、マイニングに成功したブロックに気付かないマイナーは、彼ら自身の候補ブロックをマイニングしようとし続けるが、新しいブロックが有効であると証明されたならば無駄な努力になる。第2に、伝搬及び検証の遅延は、(一時的な)分岐及び親のないブロックの可能性を増大させ得る。
【0031】
多くのブロックチェーンプロトコルでは、マイナーはブロックのフルコピーを送信しないが、代わりにインベントリメッセージ内でハッシュ結果を送信することが理解される。受信側のマイニングノードは、彼らがこの疑わしい新しいブロックを知らないと判断し、GETBLOCK又はGETDATAメッセージを成功したマイナーへ送信する。ブロックのフルコピーを送信するのではなく、成功したマイナーは、ブロックヘッダ、ペイロードからのトランザクションコンテンツフィールド、及びブロックに含まれるトランザクションの順序付きリストを送信する。順序付きリストは、トランザクションのフルトランザクションID番号(TXID)のセットを含んでよい。TXIDは、幾つかの実施形態では、トランザクションの固定長ハッシュであってよい。TXIDは、例えばSHA-256を用いてトランザクションをハッシングすることにより取得される256ビット(32バイト)の数値であってよい。受信側ノードは、識別されたトランザクションのTXIDによりメモリプール(mempool)から該トランザクションを読み出すことにより、フルブロックを再構成してよい。
【0032】
しかしながら、最新のブロックサイズは128MBを超えるまでに増大しているので、送信されるべきデータのサイズは、トランザクションのカウントが大きい場合には依然として相当量であり得る。例えば、50万個のトランザクションを含むブロックは、16MBであるTXIDの順序付きリストを有し得る。
【0033】
従って、一態様では、本願は、マイニングノードが彼らの候補ブロックをハッシングしながら他のマイナーに彼らのそれぞれの候補ブロックに関する情報を提供するブロックチェーンネットワークのための方法及びシステムを記載する。この方法では、各マイナーは、成功したブロックの発見の間の時間遅延、Bitcoinの例では約10分、を利用し、他のマイナーに候補ブロックの構造及び内容に関する詳細事項を提供する。この情報を予め提供することにより、成功したブロックが見付かったとき、成功したマイナーは、全部の他のノードが完全な新しいブロックを再構成し検証できることを保証するために、ブロックヘッダからの情報、及び幾つかの場合にはコインベース(coinbase)トランザクションを送信するだけでよい。このデータは、数百バイトほどの少なさであってよい。これは、成功した新しいブロックが全ネットワークを通じて伝搬する速度を向上する。
【0034】
未確定トランザクションが伝搬し、それらが有効なブロックに含まれることにより確定する前に、ノードのネットワークを通じて検証されることが理解される。この未確定状態では、未確定トランザクションがメモリ内に保持される。このメモリは「メモリプール(mempool)」と呼ばれてよい。各マイナーは、幾つかの実装では、自身のメモリプールのコピーを維持してよく、メモリプールから候補ブロックを再構成するためにトランザクションのセットを選択できる。幾つかの代替のアーキテクチャでは、メモリプールは、多数のノードに渡る分散型メモリプールとして実装されてよい。幾つかのアーキテクチャでは、メモリプールを管理しマイニングノードに候補ブロックに包含するためのトランザクションを提供するために、専用ノードがブロックチェーンネットワークにより利用されてよい。本願は、ブロックチェーンネットワークにおける任意のそのような変形と共に記載の方法及び装置を使用することを想定する。説明を簡単にする目的で、ここでは、各マイニングノードが未確定トランザクションの自身のメモリプールを維持すると仮定される。
【0035】
マイニングノードは、メモリプールを、候補ブロックを構築するための新しいトランザクションのソースとして使用する。マイニングノードは、更に、各ブロックがトランザクションの順序付きリストを含むので、別のマイナーからの新しいブロックを検証するとき、メモリプールを使用してよい。順序付きリストは、TXIDのようなユニークなトランザクション識別子によりトランザクションを識別してよい。従って、受信側のマイニングノードは、順序付きリストからトランザクションを読み出し、ブロックレベルの基準に対してブロックを検証し、トランザクションレベルの基準に対してトランザクションを検証する。この方法では、マイナーは、二重支払い及び他の攻撃に対して防御する。
【0036】
本願の態様を説明するために、ここで図2を参照する。図2は、ブロックチェーンマイニングの1つの例示的な方法200をフローチャート形式で示す。方法200は、マイニングノードにより実施される。マイニングノードは、1つ以上の処理ユニットを含んでよいコンピューティング装置に実装されてよい。当業者により理解されるように、処理ユニットは、有意な速度及び効率を有するブロックチェーンマイニングに関連付けられた計算演算を実行するよう設計された専用ハードウェアを有する専用処理ユニットを含んでよい。しかしながら、それは、更に又は代替として、汎用コンピューティング装置を含んでよい。コンピューティング装置は、実行されると1つ以上の処理ユニットに記載の動作を実行させるプロセッサ可読命令を含むプロセッサ実行可能ソフトウェアを含む。コンピューティング装置は、メモリと、ネットワーク接続を得るための並びに適用可能なネットワークプロトコルに従いメッセージを送信及び受信するための関連ハードウェア及びソフトウェアとのネットワーク接続と、を含む。
【0037】
方法200は、動作202で、候補ブロックを構築するために、未確定トランザクションのメモリプールからトランザクションのセットを選択するステップを含む。選択は、トランザクションの年代、トランザクションをマイニングするために支払可能な料金、又は任意の他の因子に基づいてよい。トランザクションは、トランザクションの順序付きリストを形成する。マイニングノードは、更に、トランザクションの順序付きリストに基づきマークルルート(Merkle root)を決定し、ブロックヘッダを形成し、これはヘッダ内のノンスの初期値を設定することを含む。
【0038】
動作204で、マイニングノードは、ブロックヘッダの反復ハッシング、及び採掘難易度設定の条件を満たすPOWについて検索の部分としてノンスのインクリメントを開始する。動作206により示すように、自身の候補ブロックに関してPOWを検索することに従事している間、マイニングノードは、トランザクションの自身の順序付きリストに関する情報を、他のマイニングノードへ送信する。動作208により示されるように、マイニングノードは、また、動作204が進行している間、他のマイニングノードからメッセージを受信する。該メッセージは、それらの他のマイニングノードにより作業中の候補ブロック内のトランザクションのそれぞれの順序付きリストに関する情報を含む。動作204、206、及び208は直列に示されるが、それらは一般的に並列に生じることが理解される。トランザクションのそれぞれの順序付きリストに関する他のマイナーから受信された情報は、マイニングノードによりローカルに格納される。マイニングノードは、該情報をテーブル又は他のデータ構造で格納してよい。
【0039】
動作210により示されるように、POWの検索は、マイニングノードがPOWの発見に成功するまで、又は動作212により示されるように、別のマイニングノードからPOWを発見したことの通知を受信するまで、継続する。マイニングノードは、POWを発見した場合、動作214で、ブロックの詳細事項を伝搬するために、他のマイニングノードへ何らかのヘッダ情報を送信する。特に、それは、ペイロードを送信する必要がない。それは、しかしながら、コインベーストランザクションを送信する。
【0040】
マイニングノードは、別のマイニングノードからヘッダ情報を受信した場合、動作216で、それは、マイニングノードのためのトランザクションの格納された順序付きリストに基づき新しいブロックを構成する。コインベーストランザクションが受信された場合、該トランザクションはブロックに追加され、マイニングノードは、マークルルートが有効であることを確認するためにマークルツリーを構成できる。マイニングノードは、次に、動作218における新しいブロックを検証し、有効ならば、新しいブロックを破棄して、自身のPOWのための検索を続けてよい。特定の有効性チェックがあってよく、失敗した場合には、後述のように、成功したマイニングノードから追加データを要求するような、他のアクションを講じるよう促してよい。ブロックが検証された場合、それは、動作220でブロックチェーンに追加され、更なるマイニングノードへ伝搬される。マイニングノードは、動作202に戻り、新しい候補ブロックを構築し、新たに検索を開始する。
【0041】
候補ブロック情報を予め配信し、その結果、各マイナーが各々の他のマイナーのトランザクションの順序付きリストを知るようにする、記載の方法は、POWが発見された後に最小量の情報しか伝搬される必要がないことを保証する。これは、マイニングノードが、彼らが新しいブロックをできる限り早く検証するために必要な情報を有することを保証する。それにより、別のマイナーが既に成功しているとき、POWの検索に浪費する時間を低減する。マイニングノードは、新しいブロックをできる限り早く伝搬し及び検証するためのあらゆる動機を有する。その結果、彼らは次のブロックの検索へと移行できる。連続するブロックの間の約10分の期間の間にトランザクションの順序付きリストを予め配信するとき、ネットワーク遅延に起因する起こり得る遅延は、非常に関心が少ない。
【0042】
1つの例示的な実装では、候補ブロックからのトランザクションの順序付きリストは、トランザクションデータパケットに順序情報を追加することにより、別のマイナーに通信されてよい。各マイナーは、各々の他のマイナーをユニークに識別することができる。1つの例示的な実装では、マイナー及びマイナーが取り組んでいるブロックレベルをユニークに識別する及びマイナーの候補ブロックのTXIDを順にリストするメッセージが、送信されてよい。
【0043】
別の例示的な実装では、メッセージングプロトコルは、マイナーのために順序付きリストにトランザクションを添付し、順序付きリストからトランザクションを除去又は削除し、トランザクションを別のトランザクションで置き換え、又はトランザクションを並べ替えることを提供してよい。通常の過程で、マイナーは、トランザクションの順序付きリストを指定する「追加(add)」メッセージのみを使用する可能性がある。しかしながら、マイナーがトランザクションを除去し又は置き換え得る幾つかの場合がある。例えば、後に受信される情報は、トランザクションのうちの1つに関する起こり得る二重支払い、又はその有効性に伴う何らかの他の起こり得る問題、を示してよい。別の例では、マイナーは、ノンスの全部のインクリメントを通じて循環してよく、マークルルートを変更しそれによりブロックをマイニングし続けるためにヘッダを変更するためにトランザクションを並べ替え又は調整することを望み得る。メッセージ構造の詳細なフォーマットは実装により変化してよい。
【0044】
ブロック伝搬メッセージの更なる圧縮波、TXID文字列を短縮することにより達成できる。TXIDは、幾つかの例では32バイト文字列である。しかしながら、幾つかの場合には、圧縮TXIDが使用されてよく、これはTXIDの一部のみを送信することに依存する。一例では、最初の8バイトのみが送信される。
【0045】
TXIDの最初の8バイトは、トランザクションをユニークに識別することを保証しないが、両者が単一のメッセージ内にある又は一般的に、2つのTXIDが衝突する可能性は小さい。SHA256出力が疑似ランダム256ビット文字列であるならば、2つのランダムなTXIDの衝突の正確な可能性、つまり、任意の2つのTXIDが同じ最初の4バイトを有する可能性は、
【数1】
【0046】
ここで、TXIDi[0:n]は、「TXIDiの最初のnバイト」を意味する。さらに、N個の圧縮TXIDを含むメッセージが1つ以上の衝突を含む可能性は、次式により表される:
【数2】
【0047】
例として、ブロックが百万個のトランザクションを含み、メッセージが百万個の圧縮TXID(N=1,000,000)を含むとすると、衝突の可能性は、
【数3】
【0048】
この確率は非常に小さく、衝突が生じたとしても、メッセージの受信側は、非圧縮形式の同じメッセージを要求するだけでよい。代替として、送信側のマイニングノードは、先ず、送信する前に、圧縮TXIDの順序付きリストが衝突を含まないことを確認するためにチェックを行い、検出された場合には、非圧縮TXIDを有するメッセージを送信してよい。メッセージ内のフラグ又は他の信号は、ペイロード内のTXIDが圧縮又は非圧縮形式であるかを示してよい。
【0049】
ここに説明される処理に従い、ブロックチェーンネットワークに含まれる各マイナーは、各々の他のマイナーから、他のマイナーの候補ブロックに含まれるトランザクションの順序付きリストを指定するメッセージを受信してよい。この情報を追跡するために、各マイナーは、それぞれのマイナーアイデンティティに関連付けて順序付きリストを格納してよい。マイナーアイデンティティは、IPアドレス又は何らかの他のユニークな識別子により決定されてよい。1つの例示的な実装では、各マイナーは、各行がメモリプール内のトランザクションのうちの1つに関連付けられ、各列がネットワーク内のマイナーに関連付けられる、テーブル又は同様のデータ構造を維持する。順序情報は、次に、各マイナーに、マイナーが自身の候補ブロック内にトランザクションを配置した順序を示すテーブルのセル内に格納されてよい。必ずしも全部のトランザクションが順序値を有さず、必ずしも全部のトランザクションが全ての候補ブロックに含まれないことが理解される。以下の表は、マイナーの順序付きデータテーブルの1つの簡易な例を示す。
【表1】
【0050】
この簡易な例示的な表では、マイナーID(miner ID)A、B、C、及びDを有する4人のマイナーがいる。各マイナーは、トランザクションTX、TX、TX、TX、TXを受信し検証している。表は、マイナーの順序付きリストにトランザクションを追加するために、順序ないのトランザクションを別のトランザクションで置き換えるために、又は順序付きリストからトランザクションを削除するために、更新され得る。これは、結果として、該順序付きリスト内の残りのトランザクションの順序を調整する。
【0051】
マイナーAのようなマイナーが、例えばマイナーCから、ブロックが発見されたことを示すブロックヘッダメッセージを受信すると、マイナーAは、TXID及びマイナーCのために指定された順序に基づき、マークルツリーを構築する。マイナーAは、ハッシュ値を検証するために、ブロックヘッダをハッシングする。ブロックが検証された場合、マイナーAは、指定された順序でトランザクションデータを有するフルブロックを構成し、それをブロックチェーンに追加し、そして新しい候補ブロックを構築してマイニングを続ける。
【0052】
幾つかの例示的な実装では、成功したマイナーにより送信されたブロックヘッダは、全部のフィールドを含まない。例えば、それは、フルブロックヘッダをハッシングするときマイナーCにより取得されたハッシュ値と一緒に、ノンス及びタイムスタンプのみを含んでよい。受信側のマイナーは、バージョン、prev_blockハッシュ、マイナーが計算したマークルルート、及び採掘難易度設定のような失われたフィールドを追加してよい。次に、それをハッシングし、それを受信したハッシュ値と比較することにより、再構成されたヘッダを検証できる。
【0053】
幾つかの例示的な実装では、マイナーのそれぞれの候補ブロックのトランザクションの該マイナーの順序付きリストを示す該マイナーからのメッセージは、候補ブロックが構築されると1回、自動的に送信される。幾つかの他の例示的な実装では、順序付きリスト情報は、別のマイナーからの要求に応答して提供される。
【0054】
幾つかの実装では、テンプレート識別子TmIDが定義されてよい。テンプレート識別子は、マイナーに及びブロックレベルに固有であり、その結果、それは、特定の候補ブロック、つまり、トランザクションの特定の順序付きリストを効率的に参照する。トランザクションのマイナーの順序付きリストに関連する該マイナーからの任意のメッセージは、受信側のマイナーがトランザクションの正しい特定の順序付きリストに変更を関連付けることを保証するために、テンプレート識別子を含んでよい。1つの実装では、テンプレート識別子は、ブロックヘッダ内のマイナー識別子(miner ID)及びprev_blockフィールドのハッシュ、つまり前のブロックのハッシュであってよい:
【数4】
【0055】
これは、テンプレート識別子をブロックレベル及び特定のマイナーに結びつける。
【0056】
トランザクションの順序付きリストに関連する各メッセージは、テンプレート識別子を含んでよく、シーケンス番号を更に含んでよい。シーケンス番号は、別のマイナーに対するあるマイナーからのメッセージの順序を示すために使用される符号無し整数値であってよい。シーケンスは、幾つかのメッセージが受信されない又は順序が狂って受信された場合に、メッセージ受信者が、特定のマイナーについてTXID順序をユニークに決定するのに役立つ。
【0057】
上述のように、マイナーIDは、マイニングノードのIPアドレス又はマイニングノードの何らかの他のユニークな識別子であってよい。幾つかの実施形態では、マイナーがネットワークにアタッチするとき、初期認証動作が生じてよく、それは、ユニークなマイナーIDを該マイニングノードに関連付ける。認証動作は、各マイナーが公開鍵及びデジタル署名を提供するハンドシェーク動作を含んでよい。認証は、デジタル署名の検証に接続される。幾つかの場合には、マイナーIDは、公開鍵、デジタル署名、又はそれらの何らかの組合せに基づいてよい。
【0058】
幾つかの例では、認証段階の間のハンドシェーク動作は、マイナーの間の共有シークレットの確率を含んでよい。共有シークレットを確立する多くの技術が存在する。トランザクションの順序付きリストに関連するメッセージのような後のメッセージは、機密性のために、及びマイニング処理に対する中間者攻撃の可能性を低減するために、暗号化されてよい。
【0059】
幾つかの実施形態では、マイニングノードは、ネットワークにアタッチし、互いにピアツーピア接続を開設した後に、認証手順を実行する。認証手順は、認証チャレンジメッセージを送信すること、及び認証応答を受信することを含んでよい。有効な認証応答の受信の失敗は、結果として、マイニングノードを閉じる、又は該他のマイニングノードへの接続をドロップする。幾つかの場合には、マイニングノードは、認証接続のために、通常の公衆ネットワーク接続とは異なるエンドポイントを有してよい。
【0060】
1つの例示的な実装では、認証チャレンジメッセージは、要求側のマイニングノードが、応答側のマイニングノードへメッセージを送信することを含む。メッセージは、応答側のマイニングノードが以前に見たことのないメッセージである。幾つかの場合には、メッセージはランダムコード又は文字列であってよい。メッセージの内容は重要ではないが、応答側のマイニングノードは、以前にその内容を見たことがあってはならない。従って、それは、前に生成された素材を再利用できない。
【0061】
認証チャレンジメッセージを受信すると、応答側のマイニングノードは、受信したメッセージをノンス値と連結する。ノンス値は、任意の疑似ランダム処理を用いて応答側のマイニングノードにより生成されてよい。応答側のマイニングノードは、次に、連結されたノンス及びメッセージに、予め発行された公開-秘密鍵ペアの秘密鍵を用いて署名する。これらの例では、公開-秘密鍵ペアは、マイナーアイデンティティに関連する。幾つかの場合には、公開鍵は、ブロックチェーンネットワーク上の通信で使用されるマイナーIDであってよい。要求側のマイニングノードは、ブロックチェーンネットワークにアタッチしたマイニングノードのマイナーID(公開鍵)のホワイトリスト又は他のレコードを有してよい。
【0062】
応答側のマイニングノードは、連結されたノンス及びメッセージに自身の秘密鍵を用いて署名すると、次に、認証応答メッセージを生成し送信する。認証応答メッセージは、公開鍵、例えば、マイナーID、使用されるノンス値、及び生成されたデジタル署名を含んでよい。要求側のマイニングノードは、認証応答メッセージを受信し、公開鍵を用いて、マイニングノードが公開鍵のオーナであること、及び公開鍵が特定のマイニングノードに対応するホワイトリスト上の鍵と一致すること、を検証してよい。
【0063】
認証応答メッセージは、対応する認証チャレンジメッセージと共に送信されてよい。その結果、応答側のマイニングノードは、要求側のマイニングノードのアイデンティティを相互に認証してよい。
【0064】
一例では、認証チャレンジメッセージのフォーマットは以下の形式であってよい。
【数5】
一例では、認証応答メッセージのフォーマットは、以下の形式を取り得る。
【数6】
幾つかの実装では、公開鍵はsecp256k1楕円曲線上のECDSA鍵である。署名は、ノンス値と認証チャレンジメッセージからのメッセージフィールドのコンテンツとの連結に対する署名であってよい。連結は、実装に依存して、(ノンス|メッセージ)又は(メッセージ|ノンス)であってよい。
【0065】
図3A~3Iを参照すると、それらは、本願の実装に従う2つのマイナー間の例示的な動作状態及びメッセージフローを図式的に示す。
【0066】
図3Aでは、第1マイナー302、マイナーA、及び第2マイナー304、マイナーBが、ブロックチェーンネットワークの部分であること、及び既存のブロックチェーン306が存在することが分かる。第1マイナー302及び第2マイナー304は、両方とも、本例ではブロックチェーン306のローカルに格納されたコピーを有する。ブロックチェーン306は、特定の「高さ」又はブロックレベルである。
【0067】
図3Bに示すように、マイナー302、304の各々は、それらの個々のメモリプールからトランザクションのセットを選択して、候補ブロックを構築する。具体的に、第1マイナー302は、トランザクションの第1順序付きセットを含む第1候補ブロック308を構築し、第2マイナー304は、トランザクションの第2順序付きセットを含む第2候補ブロック310を構築する。マイナー302、304は、自由に、それらが望むメモリプールからどのトランザクションを選択し、それらが望むどんな順序で該トランザクションをグループ化するので、第1順序付きセット及び第2順序付きセットは、同じトランザクションを含んでよく又はそうでなくてよく、それらを同じ又は部分的に同じ順序で有してよく又はそうでなくてよい。
【0068】
図3Cに示すように、マイナー302、304は、採掘難易度により設定された閾値より小さいブロックヘッダのハッシュをもたらすノンスを発見しようとするために、それぞれの候補ブロック308、310をマイニングし始める。
【0069】
成功するproof-of-workを探している間、マイナー302、304は、彼らのそれぞれの候補ブロック308、310の中のトランザクションの順序付きセットに関する情報を交換する。図3Dが示すように、第1マイナー302は、「追加(add)」メッセージ312を第2マイナー304へ送信して、第1候補ブロック308からのトランザクションの第1順序付きリストを提供してよい。その情報から、第2マイナー304は、第1候補ブロック308のテンプレート314を構築してよい。幾つかの例示的な実装では、テンプレート314は、TXID形式のトランザクションの第1順序付きリストであってよい。幾つかの例示的な実装では、テンプレート314は表であってよく、その例は以上に提供された。更に他の例示的な実装では、テンプレート314は、特定の利用不可能なヘッダフィールドを除き、完全なトランザクションデータを含む、完全な候補ブロックのコピーであってよい。
【0070】
同様の方法で、第2マイナー304は、図3Eに示すように、第1マイナー302に、第2候補ブロック310からのトランザクションの第2順序付きリストを含む「追加」メッセージ316を送信してよい。その情報から、第1マイナー302は、第2候補ブロック310のテンプレート318を構築する。ここで、各マイナーは、彼らそれぞれがマイニングし続ける彼ら自身の候補ブロック、及び他のマイナーが取り組んでいる候補ブロックのテンプレート、を有する。
【0071】
図3Fは、第1マイナー302が、proof-of-work要件を満たすブロックヘッダハッシュの発見に成功したことを示す。従って、ヘッダ内に最近テストしたノンスを有する第1候補ブロック308は、有効なブロックを生じる。図3G及び3Hは、第1マイナー302が新しいブロック322をブロックチェーン306に追加し、コインベーストランザクション320を含むメッセージ及びブロックヘッダ情報324を含むメッセージを送信することを示す。ブロックヘッダ情報324は、少なくとも、ノンス及びタイムスタンプを含む。それは、merkle_rootフィールドのような他のブロックヘッダフィールドを更に含んでよく又は含まなくてよい。幾つかの場合には、これは、ブロックヘッダ情報324の部分として送信されてよく、それが第2マイナー304により計算できる場合でも、第2マイナー304がそのマークルルート計算を二重チェックすることを可能にする。幾つかの場合には、第1マイナー302は、第2マイナー304に、新しいブロック322のフルブロックヘッダを送信する。第1マイナー302は、第2マイナー304へ、ブロックヘッダをハッシングすることで取得したハッシュ値を送信してもよい。その結果、第2マイナー304は、ハッシュが採掘難易度閾値より下であるだけでなく、それが第1マイナー302が発見したと主張するハッシュと一致することも検証できる。ハッシュ値は、コインベーストランザクション320内で、ブロックヘッダ情報メッセージ324内で、又は別個のメッセージ内で送信されてよい。
【0072】
第2マイナー304がコインベーストランザクションを有すると、それは、第1候補ブロックのテンプレート314のトランザクション部分を完成でき、従って、マークルルートを計算できる。その計算から、それは、merkle_rootフィールドがブロックヘッダ情報メッセージ324に含まれていた場合に、該フィールドが正確であることを検証できる。含まれていない場合、それは、新しいブロック322のブロックヘッダ326を構成するために、merkle_rootフィールド、及びバージョン、prev_block値、及びビットフィールドのような他の失われているフィールドを完成できる。ノンス及びタイムスタンプのようなブロックヘッダ326の他のフィールドは、ブロックヘッダ情報メッセージ324により提供される。第2マイナー304は、次に、構成されたブロックヘッダ326をハッシングすることにより、新しいブロックを検証してよい。
【0073】
第2マイナー304において構成されたブロックが検証されるとすると、図3Iに示すように、第2マイナー304は、次に、その新しいブロック322をブロックチェーン306の自身のコピーに追加する。
【0074】
上述のシーケンスは、コインベーストランザクションメッセージ320がブロックヘッダ情報メッセージ324の前に送信されることを示すが、幾つかの実装では、ブロックヘッダ情報メッセージ324が最初に送信されてよいこと、又は両方のメッセージが単一のメッセージに結合されてよいことが理解される。特定のインスタンスの動作又は実装の詳細の順序における他の変形は、記載のシステム及び方法の全体的な機能的動作を変更せずに行うことができる。
【0075】
幾つかの場合には、ブロックは予想より早くマイニングされ得ることが、ブロックチェーンネットワークの当業者により理解され得る。Bitcoinでは、例えば、採掘難易度設定は、約10分毎の有効なブロックの発見を提供するが、タイミングは確定しない。有効なブロックはもっと早く発見されることが可能である。更に、トランザクション又はトランザクション順序情報を伝搬する幾つかのメッセージは、ネットワークを通じて伝搬するときに、ネットワーク遅延に遭遇し得る。
【0076】
従って、低いながらも、有効なブロックがマイナーにより発見され、ヘッダ情報が他のマイナーに送信されるが、それらのマイナーのうちの少なくとも1人が、ブロックに含まれる全部のトランザクションを有しない又は成功したマイナーのトランザクションの不完全な若しくは正しくない順序付きリストを有する可能性がある。マイナーが新しいブロックヘッダのマークルルートフィールドを検証しようとするとき、不一致が見付かり、ブロックが無効であると考えられる。1つのオプションは、ブロックを無効であると判断し、それを破棄することである。しかしながら、別の実施形態では、マイナーは、マークルリーフのセット、つまりTXIDの順序付きリストについて、成功したマイナーに要求メッセージを送信してよい。リーフのセットを受信すると、マイナーは、次に、マークルルート計算に誤りが生じた場所を決定してよい。原因がトランザクションの不正な又は不完全な順序である場合、マイナーは、順序を更新し、新しいブロックを検証してよい。原因が失われたトランザクションである場合、マイナーは、新しいトランザクションを要求し、検証処理を継続してよい。幾つかの実施形態では、別のマイナーの候補ブロックのトランザクションの順序付きリストを受信するマイナーが、自身のメモリプール内のTXIDのうちの1つを有しないことが分かった場合、失われたトランザクションは、ブロックの発見に成功する前に検出されてよい。その場合、受信側のマイナーは、そのトランザクションのコピーを要求し、自身のメモリプールを更新できる。
【0077】
幾つかの実装では、1人以上のマイナーが、自身のトランザクション選択及び順序に対する何らかの機密性を維持したいと望む場合がある。そのような実装では、マイナーが、マイニング段階の間に配信するとき、トランザクションの自身の順序付きリストを暗号化することが可能であってよい。有効なブロックが見付かった場合、マイナーは、ヘッダ情報及び/又はコインベーストランザクションと一緒に、復号鍵を配信し、次に受信側のマイナーがトランザクションの順序付きリストを復号し、新しいブロックを検証することを可能にする。
【0078】
以下の表は、マイナーの間の順序付きトランザクションの伝搬のためのメッセージの1つの説明のための実装の例示的なメッセージの1つのセットを示す。
【表2-1】
【表2-2】
【0079】
受信側のマイナーは、メッセージ内のテンプレート識別子に対応する候補ブロックテンプレートを変更する。シーケンス番号に従い、特定のテンプレート識別子についてシーケンスが乱れて受信されたメッセージは、間のメッセージが受信されるまで、キューに入れられてよい。
【0080】
おそらく、受信側のマイナーは、自身のメモリプール内にTXIDに対応する適切なトランザクションを有するが、トランザクションが失われている場合、それは任意の失われたトランザクションのコピーを要求できる。
【0081】
上述の説明のためのメッセージプロトコルは1つの例示的な実装であることが理解される。
【0082】
種々の上述の例示的な方法の上述の動作のうちの一部又は全部は示されたものと異なる順序で実行されてよいこと、及び/又はそれらの方法の全体的な動作を変更することなく同時に実行されてよいことが理解される。
【0083】
図4を参照すると、本願の例に従う、簡易マイニングノード400をブロック図の形式で示す。マイニングノード400は、1つ以上のマイクロプロセッサ、特定用途向け集積回路(ASIC)、マイクロコントローラ、又は同様のコンピュータ処理装置を含んでよいプロセッサ402を含む。マイニングノード400は、値、変数、及び幾つかの例ではプロセッサ実行可能プログラム命令を格納するための永久及び非永久メモリと、ネットワークインタフェース606と、を含んでよいメモリ404を更に含んでよい。
【0084】
マイニングノード800は、実行されるとプロセッサ402に本願明細書に記載の機能又は動作のうちの1つ以上を実行させるプロセッサ実行可能命令を含むプロセッサ実行可能ブロックチェーンアプリケーション408を含んでよい。
【0085】
上述の種々の実施形態は、単なる例であり、本願の範囲を限定することを意味しない。本願の意図された範囲内にある変形のように、ここに記載された種々の技術革新は、当業者に明らかである。特に、上述の例示的な実施形態のうちの1つ以上からの特徴は、以上に明示的に示されない特徴の部分結合を含む代替の例示的な実施形態を生成するために選択されてよい。更に、上述の例示的な実施形態のうちの1つ以上からの特徴は、以上に明示的に示されない特徴の結合を含む代替の例示的な実施形態を生成するために選択され結合されてよい。このような結合及び部分結合に適する特徴は、本願の全体的に吟味することにより当業者に直ちに明らかになるだろう。本願明細書及び請求項に記載された主題は、あらゆる適切な技術的変更をカバーし包含する。
図1
図2
図3A
図3B
図3C
図3D
図3E
図3F
図3G
図3H
図3I
図4