(57)【要約】  ブロックチェーントランザクションを処理するためのバリデータノード及びバリデータノードの動作方法である。バリデータノードは、典型的には、マイニングノードのそれぞれからのトークンと引き換えに、トランザクションのハッシュを提供することにより、一式の未確認のトランザクションへのアクセスを複数のマイニングノードに提供する。複数のマイニングノードのうち1つが一式の未確認のトランザクションを含むブロックのマイニングに成功した場合、バリデータノードはトークンをそのマイニングノードに払い戻し、残りのトークンを保持する。複数のマイニングノードのうちいずれかが一式の未確認のトランザクションを含むブロックをマイニングできる前に、複数のマイニングノードのうち1つ以外のマイナーがブロックのマイニングに成功した場合、バリデータノードは、変更トークンを複数のマイニングノードのそれぞれに移転する。
2020523677.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ実施方法であって、
マイニングノードのそれぞれからのトークンと引き換えに、一式の未確認のトランザクションを複数のブロックチェーンマイニングノードに提供するステップと、
前記複数のマイニングノードのうち1つが前記一式の未確認のトランザクションを含むブロックのマイニングに成功した場合、前記トークンを前記複数のマイニングノードのうち前記1つに返却し、残りのトークンを保持するステップと、
前記複数のマイニングノードのうちいずれかが前記一式の未確認のトランザクションを含むブロックをマイニングできる前に、前記複数のマイニングノードのうち1つ以外のマイナーがブロックのマイニングに成功した場合、変更トークンを前記複数のマイニングノードのそれぞれに移転するステップと
を含む方法。
【請求項２】
前記提供するステップは、プールされるトークンとしての前記マイニングノードのそれぞれからのトークンのプールのためのトランザクションと、トークンを返却して変更トークンを移転するためのトランザクションとを生成するステップを含み、プールのための前記トランザクションは、少なくともバリデータノード及び前記マイニングノードのうち少なくとも1つからの署名を必要とするように、前記プールされるトークンに対する制御をロックする、請求項１に記載の方法。
【請求項３】
変更トークンを移転するための前記トランザクションは、前記バリデータノード及び前記マイニングノードのそれぞれからの署名と、ブロックチェーンのブロックの高さが増加したという決定とを必要とするように、前記プールされるトークンに対する制御をロックする、請求項２に記載の方法。
【請求項４】
前記一式の未確認のトランザクションを前記複数のブロックチェーンマイニングノードに提供するステップは、
前記マイニングノードのそれぞれがそれぞれのトークンに対する制御を移転し且つ集合のトークンがプールされるアウトプットアドレスにプールされるデポジットトランザクションを生成するステップと、
前記マイニングノードのそれぞれについて、前記プールされるアウトプットアドレスから、前記トークンのうち1つに対する制御を当該マイニングノードに移転し、残りのトークンを前記バリデータノードに移転するそれぞれの請求トランザクションを生成するステップと、
前記プールされるアウトプットアドレスから、前記変更トークンを各マイニングノードに移転し且つ修正トークンを前記バリデータノードに移転する払い戻しトランザクションを生成するステップと、
前記マイニングノードのそれぞれから、各マイニングノードの前記デポジットトランザクション、前記払い戻しトランザクション及び前記それぞれの請求トランザクションに対して署名を取得するステップと
を更に含む、請求項１乃至３のうちいずれか１項に記載の方法。
【請求項５】
前記マイニングノードのそれぞれからのトークンと引き換えに、一式の未確認のトランザクションを前記複数のマイニングノードに提供するステップは、前記マイニングノードのそれぞれからの署名を取得することを条件とする、請求項４に記載の方法。
【請求項６】
前記それぞれの請求トランザクションのそれぞれの前記プールされるアウトプットアドレスについてのロック解除スクリプトは、前記それぞれの請求トランザクションが前記それぞれのトークンを移転すべきマイニングノードに関連する秘密値を必要とする、請求項４又は５に記載の方法。
【請求項７】
前記複数のマイニングノードのうち前記1つが前記一式の未確認のトランザクションを含むブロックのマイニングに成功した場合、当該方法は、前記ブロックから前記秘密値を抽出し、前記複数のマイニングノードのうち前記1つに関連する前記それぞれの請求トランザクションをロック解除するために前記秘密値を使用するステップを更に含む、請求項６に記載の方法。
【請求項８】
トークンと引き換えに、一式の未確認のトランザクションを前記複数のマイニングノードに提供するステップは、前記署名を取得した後に、ブロックチェーンネットワーク上で前記デポジットトランザクションをブロードキャストするステップを含む、請求項４乃至７のうちいずれか１項に記載の方法。
【請求項９】
前記複数のマイニングノードのうち前記1つが前記一式の未確認のトランザクションを含むブロックのマイニングに成功した場合、前記トークンを前記複数のマイニングノードのうち前記1つに返却し、前記残りのトークンを保持するステップは、前記複数のマイニングノードのうち前記1つに関連する前記それぞれの請求トランザクションをブロードキャストするステップを含む、請求項４乃至８のうちいずれか１項に記載の方法。
【請求項１０】
前記変更トークンを前記マイニングノードのそれぞれに移転するステップは、ブロックチェーンネットワーク上で前記払い戻しトランザクションをブロードキャストするステップを含む、請求項４乃至９のうちいずれか１項に記載の方法。
【請求項１１】
前記修正トークンは、前記プールされるトークンから前記変更トークンを引いたものにより決定される、請求項４乃至９のうちいずれか１項に記載の方法。
【請求項１２】
一式の未確認のトランザクションを前記複数のマイニングノードに提供するステップは、前記マイニングノードがプルーフオブワークを解決することを試み得る前記一式のトランザクションのハッシュを前記マイニングノードに提供するステップを含む、請求項１乃至１１のうちいずれか１項に記載の方法。
【請求項１３】
前記一式のトランザクションの前記ハッシュは、マークルルートを含む、請求項１２に記載の方法。
【請求項１４】
ブロックチェーントランザクションの承認を促進するように構成されたバリデータノードであって、
プロセッサと、
未確認のトランザクションのプールの少なくとも一部を記憶するメモリと、
ネットワークインタフェースと、
前記プロセッサにより実行されたとき、請求項１乃至１３のうちいずれか１項に記載の方法を前記プロセッサに実行させるプロセッサ実行可能命令を含むブロックチェーンアプリケーションと
を含むバリデータノード。
【請求項１５】
ブロックチェーントランザクションを処理するためのプロセッサ実行可能命令を記憶する非一時的なプロセッサ読み取り可能媒体であって、
前記プロセッサ実行可能命令は、プロセッサにより実行されたとき、請求項１乃至１３のうちいずれか１項に記載の方法を前記プロセッサに実行させる、非一時的なプロセッサ読み取り可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、処理能力及び時間のようなネットワークリソースの割り当ての問題に関し、特にブロックチェーントランザクションに関する。より具体的には、本発明は、ブロックチェーンマイニング速度及び容量を改善し、一式の承認済みのブロックチェーン転送のマイニングを促進するための方法及びデバイスに関する。
【背景技術】
【０００２】
この文献では、全ての形式の電子的なコンピュータに基づく分散型の台帳を含む「ブロックチェーン(blockchain)」という用語を使用する。これらは、コンセンサスに基づくブロックチェーン及びトランザクションチェーン技術、プライベート型(permissioned)及びパブリック型(un-permissioned)台帳、共有台帳、及びこれらの変形を含むが、これらに限定されない。ブロックチェーン技術の最も広く知られているアプリケーションはビットコイン台帳であるが、他のブロックチェーンの実装も提案されて開発されている。ここでは、便宜上及び説明上の目的でビットコインが参照されることがあるが、本発明は、ビットコインブロックチェーンでの使用に限定されず、代替のブロックチェーンの実装及びプロトコルも、本発明の範囲内に入る点に留意すべきである。
【０００３】
ブロックチェーンは、コンセンサスに基づく電子台帳であり、これは、結果としてトランザクションで構成される、ブロックで構成されるコンピュータに基づく非集中的な分散型システムとして実装される。各トランザクション(Tx)は、ブロックチェーンシステム内の参加者の間のデジタル資産の制御の移転を符号化するデータ構造であり、少なくとも1つのインプット及び少なくとも1つのアウトプットを含む。各ブロックは、前のブロックのハッシュを含み、それにより、ブロックチェーンの開始以降にブロックチェーンに書き込まれた全てのトランザクションの永続的で修正不可能なレコードを作成するように、ブロックが一緒につながれる。トランザクションは、トランザクションのインプット及びアウトプットに埋め込まれたスクリプトとして知られる小さいプログラムを含み、これは、トランザクションのアウトプットがどのように誰によってアクセスできるかを指定する。ビットコインプラットフォームでは、これらのスクリプトはスタックに基づくスクリプト言語を使用して記述される。
【０００４】
新たなトランザクションを受信したネットワークノードは、迅速にそのトランザクションをネットワーク内の他のノードにプッシュしようとする。新たなトランザクションを他のノードに送信する前に、それが「承認され(validated)」、これは、トランザクションが該当するブロックチェーンプロトコルに従って適切なトランザクションの基本的な要件を満たすことを確保するために、一式の基準に対してチェックされることを意味する。
【０００５】
トランザクションがブロックチェーンに書き込まれるために、トランザクションを収集してこれらをブロックに形成するように設計されたマイニングノード(「マイナー(miner)」)によりブロックに組み込まれる。次いで、マイナーはブロック(具体的には、ブロックヘッダ)に関して「プルーフオブワーク(proof  of  work)」を完成させることを試みる。ブロックチェーンネットワークを通じてマイナーは、トランザクションのブロック組み立てる最初の者になるために競争し、そのブロックの関連するプルーフオブワークを競争する。成功したマイナーは、その確認済みのブロックをブロックチェーンに追加し、ブロックがネットワークを通じて伝搬され、それにより、ブロックチェーンのコピーを維持する他のノードがレコードを更新できる。ブロックを受信したこれらのノードはまた、プロトコルの正式な要件に準拠することを確保するために、そのブロック及びその中の全てのトランザクションを「承認(validate)」する。
【０００６】
ブロックチェーンの実装に関連するボトルネックの1つは、トランザクションの承認に関連する遅延である。現在のビットコインプロトコルでは、新たなトランザクションを受信した各ノードは、これを他のノードに送信する前に、これを承認する。各フルノードもまた、トランザクションをメモリプール(mempool)にローカルに記憶する。マイニングノードもまた、未確認のトランザクションのメモリプールを維持し、そこからプルーフオブワークを完成させることを試みる次のブロックを組み立てることができる。ブロックチェーンに追加されるブロックを完成させることに成功した場合、マイニングノードは、トランザクション料を通じて(各ブロックで利用可能な造り出されるコインの量は時間の経過とともにゼロに減少しているが、各ブロックで新たなビットコインを「造り出す(minting)」ことを通じて)作業を補償される。
【０００７】
大量の高速転送のために、ビットコインのようなブロックチェーンに基づくネットワークの使用を可能にするか或いは促進にすることが有利になる。しかし、(書き込み時に1つのプロトコルに対して)毎秒約3のトランザクションスループットは、現在毎秒約50,000のトランザクション量で動作するこのような電子転送を処理するには不十分である。したがって、大量のトランザクションを処理するブロックチェーンの能力を現在制限している速度及びスケーラビリティの制約に対する解決策を見つけることが望ましい。スケーラビリティの制約の1つは、速度及びセキュリティを犠牲にすることなく、大量のトランザクションのためのメモリプールの保持である。これらの技術的な問題は解決が難しい。
【発明の概要】
【０００８】
このような解決策が現在考えられている。
【０００９】
したがって、本発明によれば、添付の特許請求の範囲に定義される方法及び装置が提供される。
【００１０】
この出願は、概して、処理能力及び時間のようなネットワークリソースの割り当てに関し得る。以下に提供される例及び実施形態は、リソースが制御されるか或いは割り当てられる必要のあるネットワークの例として、(ビットコイン)ブロックチェーンを使用し得る。特に、本発明は、効率的かつ安全な方式で、どのようにリソースに対する将来の要求を制御するかという問題に対処し得る。これは、長い間、ネットワーク環境内での技術的課題であり、ネットワークの全体性能及び許容可能な時間枠内で所望の結果を生成するためのその能力に対してかなりの悪影響を及ぼす可能性がある。ネットワーク環境に対する他の長年の技術的課題は、スケーラビリティの問題である。リソース割り当て及びスケーラビリティの問題は、ささいな問題ではない。
【００１１】
1つ以上の実施形態において、本発明は、少なくとも部分的に、これらの技術的問題に対処し得る。本発明は、ネットワーク内の異なる関係者又は参加者(ノード)に割り当てられるトークンの使用を含んでもよい。トークンの制御又は所有権は、ネットワーク関連タスクを実行するためのネットワークノードの能力及び/又は可用性を示すためのメカニズムとして使用されてもよい。さらに或いは代替として、これは、計算リソースが割り当てられたタスクに提供されることを確保するために、ノードの活動を制御、指示又はその他の影響を与えるために使用されてもよい。
【００１２】
本出願は、ブロックチェーンネットワークのような非集中的なネットワークに属するネットワークノードを記載及び開示し得る。好ましい実施形態では、ネットワークは、コンセンサスに基づくブロックチェーンネットワークである。ノードは「バリデータノード(validator  node)」と呼ばれてもよい。バリデータノードは、未確認のトランザクションの大きいメモリプールを維持してもよい。ネットワークはまた、メモリプールからの未確認のトランザクションへのアクセスをマイニングノードに提供するメカニズムを含んでもよい。いくつかの場合にメモリプールの分散型ストレージを使用してもよいバリデータノードのグループにメモリプールを集中化させることは、大量トランザクション処理を処理するためのスケーラビリティを改善する。しかし、メモリプールを集中化させることは、新たなブロックを構築するための未確認のトランザクションへのマイニングノードのアクセスを損なう問題を引き起こす可能性がある。したがって、トランザクション処理を迅速化するために、マイニングノードは、マイニングのみに焦点を当て、バリデータノードにより作業されるトランザクションのセットを提供される。トランザクションへのアクセスを可能にするために、バリデータノードは、一式のマイナー内の各マイニングノードから1つ以上のトークン(便宜上「デポジット(deposit)」と呼ばれてもよい)を取得してもよい。トークン(デポジット)又はその所有権/制御は、マイニングノードがブロックのマイニングに成功した場合、バリデータノードからマイニングノードに返却されてもよい。この移転は、ソース、すなわち、トークンをバリデータに提供したノードに戻されることでもよい。成功しなかったマイニングノードは、バリデータノードへのそのトークンの制御を失ってもよく、次いで、バリデータノードは、トークンに対する制御を他のノードに渡してもよい。マイナーのトークンは、ネットワーク内の他のマイナーのうち1つが成功した場合に保持されるか或いは失われてもよい。いくつかの場合、一式のマイナー内のどのマイナーもブロックのマイニングに成功しない場合、バリデータノードはトークンに対する制御をマイナーに返却してもよい。いくつかの場合、バリデータノードは、制御をマイナーに返却する前にトークンを変更してもよい。トークンはデジタル資産でもよい。いくつかの場合、例えば、これはビットコイン又は代替の暗号通貨のような暗号通貨の一部でもよい。これは、ブロックチェーントランザクション(Tx)の一部を形成してもよく、或いは、ブロックチェーントランザクション(Tx)内で参照されてもよい。
【００１３】
実際のブロックチェーンネットワークにおいて上記のバリデータノードが開始するマイニングプロセスの実装における課題の1つは、損失又は盗難を防止するためにトークンに対する制御のセキュリティを維持することである。これに関して、本出願は、バリデータノードが開始するマイニングプロセスにおけるトークン配布及び制御を制御するための方法及びシステムを記載する。上述の方法及びシステムは、セキュリティ及び損失の防止を確保するための特定のロックスクリプト(locking  script)を有する、トークン配布のためのブロックチェーントランザクションを構築することを含んでもよい。
【００１４】
更なる態様又は代替の態様では、本出願は、コンピュータ実施方法を記載し得る。これは、ノードのネットワーク内でブロックチェーントランザクションを処理する方法でもよい。ノードは、未確認のトランザクションを承認し、未確認のトランザクションのプールを維持するように構成されたバリデータノードと、ブロックを完成させることを競争するように構成された複数のマイニングノードとを含んでもよい。当該方法は、バリデータノードにより実施されてもよい。当該方法は、マイニングノードのそれぞれからのトークンと引き換えに、一式の未確認のトランザクションを複数のマイニングノードに提供するステップと、複数のマイニングノードのうち1つが一式の未確認のトランザクションを含むブロックのマイニングに成功した場合、トークンを複数のマイニングノードのうち1つに返却し、残りのトークンを保持するステップと、複数のマイニングノードのうちいずれかが一式の未確認のトランザクションを含むブロックをマイニングできる前に、複数のマイニングノードのうち1つ以外のマイナーがブロックのマイニングに成功した場合、変更トークンを複数のマイニングノードのそれぞれに移転するステップとを含んでもよい。いくつかの実装では、提供するステップは、プールされるトークンとしてのマイニングノードのそれぞれからのトークンのプールのためのトランザクションと、トークンを返却して変更トークンを移転するためのトランザクションとを生成するステップを含み、プールのためのトランザクションは、少なくともバリデータノード及びマイニングノードのうち少なくとも1つからの署名を必要とするように、プールされるトークンに対する制御をロックする。いくつかの実装では、変更トークンを移転するためのトランザクションは、バリデータノード及びマイニングノードのそれぞれからの署名と、ブロックチェーンのブロックの高さが増加したという決定とを必要とするように、プールされるトークンに対する制御をロックする。
【００１５】
いくつかの実装では、マイナーが一式のトランザクションへのアクセスを提供される前に、バリデータノードは、マイニングノードのそれぞれがそれぞれのトークンに対する制御を移転し且つ集合のトークンがプールされるアウトプットアドレスにプールされるデポジットトランザクションを生成し、マイニングノードのそれぞれについて、プールされるアウトプットアドレスから、トークンのうち1つに対する制御をそのマイニングノードに移転し、残りのトークンをバリデータノードに移転するそれぞれの請求トランザクションを生成し、プールされるアウトプットアドレスから、変更トークンを各マイニングノードに移転し且つ修正トークンをバリデータノードに移転する払い戻しトランザクションを生成し、マイニングノードのそれぞれから、各マイニングノードのデポジットトランザクション、払い戻しトランザクション及びそれぞれの請求トランザクションに対して署名を取得する。これらの実装のいくつかでは、それぞれの請求トランザクションのそれぞれのプールされるアウトプットアドレスについてのロック解除スクリプトは、それぞれの請求トランザクションがトークンを移転すべきマイニングノードに関連する秘密値を必要とする。これらの実装のいくつかにおいて、マイニングノードが一式の未確認のトランザクションを含むブロックのマイニングに成功した場合、当該方法は、ブロックから秘密値を抽出し、複数のマイニングノードのうち1つに関連するそれぞれの請求トランザクションをロック解除するために秘密値を使用するステップを更に含む。
【００１６】
いくつかの実装では、トークンと引き換えに、一式の未確認のトランザクションを複数のマイニングノードに提供するステップは、署名を取得した後に、ブロックチェーンネットワーク上でデポジットトランザクションをブロードキャストするステップを含む。
【００１７】
いくつかの実装では、マイニングノードが一式の未確認のトランザクションを含むブロックのマイニングに成功した場合、当該方法は、複数のマイニングノードのうち1つに関連するそれぞれの請求トランザクションをブロードキャストすることにより、トークンを複数のマイニングノードのうち1つに返却し、残りのトークンを保持するステップを更に含む。
【００１８】
いくつかの実装では、変更トークンをマイニングノードのそれぞれに移転するステップは、ブロックチェーンネットワーク上で払い戻しトランザクションをブロードキャストするステップを含む。いくつかの実装では、修正トークンは、プールされるトークンから変更トークンを引いたものとして決定される。
【００１９】
いくつかの実装では、一式の未確認のトランザクションを複数のマイニングノードに提供するステップは、マイニングノードがプルーフオブワークを解決することを試み得る一式のトランザクションのハッシュをマイニングノードに提供するステップを含む。例えば、ハッシュはマークルルート(merkle  root)でもよい。
【００２０】
代替の表現によれば、本発明は、ノードのネットワーク内でブロックチェーントランザクションを処理する方法を提供してもよく、ノードは、未確認のトランザクションを承認し、未確認のトランザクションのプールを維持するように構成されたバリデータノードと、ブロックを完成させることを競争するように構成された複数のマイニングノードとを含み、当該方法は、バリデータノードで実施され、
マイニングノードのそれぞれからのデポジットと引き換えに、一式の未確認のトランザクションを複数のマイニングノードに提供するステップと、
複数のマイニングノードのうち1つが一式の未確認のトランザクションを含むブロックのマイニングに成功した場合、デポジットを複数のマイニングノードのうち1つに払い戻し、残りのデポジットを保持するステップと、
複数のマイニングノードのうちいずれかが一式の未確認のトランザクションを含むブロックをマイニングできる前に、複数のマイニングノードのうち1つ以外のマイナーがブロックのマイニングに成功した場合、デポジットから承認料を引いたものを複数のマイニングノードのそれぞれに移転するステップと
を含む。
【００２１】
更なる態様又は代替の態様では、本出願は、ブロックチェーントランザクションの高速の承認を促進するように構成されたバリデータノードを記載する。バリデータノードは、プロセッサと、未確認のトランザクションのプールの少なくとも一部を記憶するメモリと、ネットワークインタフェースと、プロセッサにより実行されたとき、ここに記載の方法のいずれか1つ以上をプロセッサに実行させるプロセッサ実行可能命令を含むブロックチェーンアプリケーションとを含む。
【００２２】
更なる態様又は代替の態様では、本出願は、ブロックチェーントランザクションを処理するためのプロセッサ実行可能命令を記憶する非一時的なプロセッサ読み取り可能媒体を記載し、プロセッサ実行可能命令は、プロセッサにより実行されたとき、ここに記載の方法のいずれか1つ以上をプロセッサに実行させる。
【００２３】
本発明のこれらの態様及び他の態様は、ここに記載の実施形態から明らかであり、実施形態を参照して説明される。次に、本発明の実施形態について、添付の図面を参照して単なる例示として説明する。
【図面の簡単な説明】
【００２４】
【図１】ブロックチェーンネットワークを実装するためのノードの例示的なネットワークを示す。
【図２】バリデータノードを含む例示的なブロックチェーンネットワークの図を示す。
【図３】バリデータノードのオーバレイネットワークを有する例示的なブロックチェーンネットワークの図を示す。
【図４】分散型メモリプールを維持するバリデータノード及び複数のマイニングノードの例示的ネットワークの図を示す。
【図５】バリデータが開始するブロックのマイニングのための1つの例示的な方法をフローチャート形式で示す。
【図６】バリデータが開始するブロックのマイニングのための他の例示的な方法をフローチャート形式で示す。
【図７】バリデータノードが開始するマイニングの1つの実装のための例示的なデポジットトランザクション、例示的な請求トランザクション及び例示的な払い戻しトランザクションを模式的に示す。
【図８】バリデータノードの招待に応じてブロックをマイニングする方法をフローチャート形式で示す。
【図９】バリデータノードの簡略化された例をブロック図形式で示す。
【発明を実施するための形態】
【００２５】
本出願において、「及び/又は」という用語は、必ずしも更なる要素を除外することなく、列挙された要素のみ、いずれかのサブコンビネーション又は要素の全てのうちいずれか1つを含み、列挙された要素の全ての可能な組み合わせ及びサブコンビネーションをカバーすることを意図する。
【００２６】
本出願において、「…又は…の少なくとも1つ」という語句は、必ずしも更なる要素を除外することなく、また、必ずしも要素の全てを必要とすることなく、列挙された要素のみ、いずれかのサブコンビネーション又は要素の全てのうちいずれか1つを含み、列挙された要素のいずれか1つ以上をカバーすることを意図する。
【００２７】
まず、図１に参照が行われ、図１は、ここでブロックチェーンネットワーク100と呼ばれてもよいブロックチェーンに関連する例示的なネットワークをブロック図形式で示す。ブロックチェーンネットワーク100は、ピアツーピアのオープンメンバーシップネットワークであり、招待なしに或いは他のメンバーからの同意なしに誰でも参加してもよい。ブロックチェーンネットワーク100が動作するブロックチェーンプロトコルのインスタンスを実行する分散型電子デバイスは、ブロックチェーンネットワーク100に参加してもよい。このような分散型電子デバイスは、ノード102と呼ばれてもよい。ブロックチェーンプロトコルは、例えば、ビットコインプロトコル又は他の暗号通貨でもよい。
【００２８】
ブロックチェーンプロトコルを実行し且つブロックチェーンネットワーク100のノード102を形成する電子デバイスは、例えば、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、サーバのようなコンピュータ、スマートフォンのようなモバイルデバイス、スマートウォッチのようなウェアラブルコンピュータ、又は他の電子デバイスを含み、様々なタイプのものでもよい。
【００２９】
ブロックチェーンネットワーク100のノード102は、有線及び無線通信技術を含んでもよい適切な通信技術を使用して互いに結合される。多くの場合、ブロックチェーンネットワーク100は、インターネット上に少なくとも部分的に実装され、ノード102のいくつかは、地理的に分散した位置に位置してもよい。
【００３０】
ノード102は、それぞれがチェーン内の前のブロックのハッシュを含むブロックにグループ化された、ブロックチェーン上の全てのトランザクションのグローバル台帳を維持する。グローバル台帳は、分散型台帳であり、各ノード102は、グローバル台帳の完全なコピー又は部分的なコピーを記憶してもよい。グローバル台帳に影響を与えるノード102によるトランザクションは、グローバル台帳の有効性が維持されるように、他のノード102により検証される。ビットコインプロトコルを使用するもののようなブロックチェーンネットワークの実装及び動作の詳細は、当業者により認識される。
【００３１】
各トランザクションは、典型的には、1つ以上のインプット及び1つ以上のアウトプットを有する。インプット及びアウトプットに埋め込まれたスクリプトは、トランザクションのアウトプットがどのように誰によってアクセスできるかを指定する。トランザクションのアウトプットは、トランザクションの結果として値が転送されるアドレスでもよい。次いで、この値は、未使用トランザクションアウトプット(unspent  transaction  output,  UTXO)として、そのアウトプットアドレスに関連付けられる。次いで、後続のトランザクションは、その値を使用又は分散するために、インプットとしてそのアドレスを参照してもよい。
【００３２】
ノード102は、その機能に依存して、異なるタイプ又はカテゴリのものでもよい。ノード102に関連する4つの基本的な機能、すなわち、ウォレット、マイニング、フルブロックチェーン維持及びネットワークルーティングが存在することが示唆されている。これらの機能の変形が存在してもよい。ノード102は、1つより多くの機能を有してもよい。例えば、「フルノード(full  node)」は、全ての4つの機能を提供する。軽量ノードは、例えば、デジタルウォレットに実装されてもよく、ウォレット及びネットワークルーティング機能のみを特徴としてもよい。デジタルウォレットは、完全なブロックチェーンを記憶するのではなく、ブロックヘッダを追跡してもよく、ブロックヘッダは、ブロックを照会するときのインデックスとして機能する。
【００３３】
上記のように、マイニングノード(「マイナー(miner)」)は、ブロックチェーン内の次のブロックを作成することを競争する。ブロックを組み立てるために、マイナーは未確認のトランザクションのプール(「メモリプール(mempool)」)から一式のトランザクションとしてブロックを構築する。次いで、これは、組み立てたブロックに関するプルーフオブワークを完成させることを試みる。他のマイナーがブロックを生成してそのプルーフオブワークを完成させたという通知を受信する前にプルーフオブワークを完成させることができれば、マイナーは、これをネットワーク上でピアノードに送信することによりそのブロックを伝搬する。これらのノードは、ブロックを承認し、次いで、ネットワーク内でこれを他のノードに送信する。もし、マイナーが自分のプルーフオブワークを終了させる前に他のブロックが完成されたという通知を受信した場合、マイナーはその取り組みを放棄し、次のブロックを構築することを試み始める。ブロックの高速伝搬は、マイナー及び承認ノードのための無駄な労力を回避するのに役立つ。
【００３４】
ビットコインネットワークのようなブロックチェーンの現在の実装では、ブロックを受信した各ノードは、他のノードにブロックを送信する前に、まずブロックを承認する。ブロックを承認するのに要する時間は、ネットワークを通じたブロックの伝搬を遅くする。既存のプロトコルの進化を含むブロックチェーンのいくつかの実装は、ネットワーク内の各ノードではなく、ノードのサブセットのみによるブロック承認を提供し得るが、ほとんどのノードでのブロック承認は、依然として、無効なブロックがネットワークを通じて伝搬するのを防ぐためのいずれかのブロックチェーン実装の特徴になる可能性がある点に留意すべきである。
【００３５】
ブロックの承認は、ブロックが該当するブロックチェーンプロトコルによる所定の基準セットを満たすという確認を伴う。ビットコインプロトコルに適用可能な例示的な基準は、Bitcoin  Coreクライアント機能のCheckBlock及びCheckBlockHeaderに定義される。ブロック自体が所定の基準に適合することを確認することに加えて、ブロック内の各トランザクションは、トランザクションレベルの基準への準拠について評価されてもよい。例えば、ビットコインプロトコルで適用されるトランザクションレベルの基準は、AcceptToMemoryPool、CheckTransaction及びCheckInputsの機能に詳細に見られる。
【００３６】
ビットコインプロトコルに基づくブロックレベルの基準の具体的な例は、以下を含む。
・ブロックデータ構造体が構文的に有効である。
・ブロックヘッダハッシュがターゲット難易度(target  difficulty)(プルーフオブワークを制限する)よりも小さい。
・ブロックタイムスタンプが将来の2時間未満である(時間誤差を考慮する)。
・ブロックサイズが許容制限内である。
・最初のトランザクション(最初のトランザクションのみ)がコインベース生成トランザクションである。
・ブロック内の全てのトランザクションが有効である。
【００３７】
ビットコインプロトコルに基づくトランザクションレベルの基準の具体的な例は、以下を含む。
・トランザクションの構文及びデータ構造が正しくなければならない。
・インプットのリストもアウトプットのリストも空ではない。
・各アウトプット値x及び全てのアウトプットの合計は、0<x<21・106の範囲内でなければならない。
・インプットのどれもヌルハッシュを有さない。
・nLockTimeがINT_MAX以下である。
・バイト単位のトランザクションサイズが最小値以上且つ最大値未満である。
・署名操作の数が署名操作の制限よりも少ない。
・ロック解除スクリプトscriptSigがスタック上の数字しかプッシュできず、ロックスクリプトscriptPubkeyがisStandard形式に合致しなければならない。
・各インプットについて、参照されるアウトプットがプール内の他のトランザクションに存在する場合、トランザクションが拒否されなければならない。
・各インプットについて、参照されるアウトプットトランザクションがコインベースアウトプットである場合、これは少なくともCOINBASE_MATURITY(100)の確認を有さなければならない。
・各インプットについて、参照されるアウトプットが存在しなければならず、すでに使用されていてはならない。
・インプット値を得るために、参照されるアウトプットトランザクションを使用して、各インプット値及び合計が、値xの許容範囲、すなわち、0<x<21・106であることを検査する。
・プール内又はメイン分岐内のブロック内に合致するトランザクションが存在しなければならない。
・インプット値の合計は、アウトプット値の合計以上でなければならない。
・トランザクション料は、空のブロックへのエントリーを得るのに十分でなければならない。
・各インプットについてのロック解除スクリプトは、対応するアウトプットロックスクリプトに対して承認しなければならない。
【００３８】
これらの例示的な基準は、例示的なものであり、所定の基準が異なるプロトコルにおいて異なる可能性があり、プロトコルに変更が行われた場合には所与のプロトコルについて時間と共に変化する可能性があるため、全ての実施形態に十分又は必要であると解釈されるべきではない。一般的に、トランザクションレベルの承認基準は、トランザクションが該当するブロックチェーンプロトコルの下で有効であると考えられる必要がある所定の特性である。同様に、ブロックレベルの承認基準は、ブロックが該当するブロックチェーンプロトコルの下で有効であると考えられる必要がある所定の特性である。
【００３９】
ブロックチェーンのいくつかの進化は、更に特殊化されたノードを提供してもよい。例として、大量の高速アクセスメモリ及びかなりのネットワーク通信リソースを有する記憶ノードとして構成されたノードが存在してもよい。本出願は、ノードの更なるタイプ又はカテゴリ、すなわち、バリデータノードを提案して記載する。バリデータノードは、トランザクションの高速の承認及び伝搬に焦点を当てるように設計される。これらはマイニング機能を実行しないが、トランザクションの高速の承認及び伝搬を可能にする更なる機能を含む。したがって、これらは専用のネットワークリソースでもよい。バリデータノードは、トランザクションを迅速に承認して伝搬させるように設計された、ブロックチェーンネットワーク100内の高速トランザクションマーチャントネットワークを形成することにより、大規模な決済処理に関連するトランザクション量の増加を促進する。
【００４０】
ネットワーク100内の各ノード102は、典型的には、認識されており且つプルーフオブワークを完成させるマイナーによりブロックチェーンにまだ組み込まれていない未確認のトランザクションを含むメモリプールを維持する。支払処理における使用から生じるトランザクションの数のかなりの増加は、各メモリプールに記憶するトランザクションの量を増加させる。500バイトのトランザクション(transaction,  TX)の平均サイズ及び〜104TX/sのトランザクションレートを仮定すると、メモリプールは、〜400GBの毎日の入来データを受信する可能性がある。このデータの全ては、未確認のトランザクションのメモリプールに可変量の時間だけ記憶される必要がある。したがって、いくつかの実装では、バリデータノードのネットワークは、各バリデータノードにおいて完全なメモリプールを記憶するのではなく、未確認のトランザクションのプールを記憶するために分散型ハッシュテーブル(Distributed  Hash  Table,  DHT)により実装された共有メモリプールを使用してもよい。このような実装では、マイニングノード及び/又はいくつかの他のタイプのノードは、未確認のトランザクションの非常に大きいプールを記憶して更新する負担からそれらを解放するために、必ずしもローカルに完全なメモリプールを維持する必要はなくてもよい。その代わりに、マイニングノード及び/又は他のタイプの特殊化されたノードは、メモリプールの維持を管理するために、バリデータノードのネットワークに依存してもよい。
【００４１】
ここで、図２に参照が行われ、図２は、ノードのブロックチェーンネットワーク200の例示的な実装を示す。ブロックチェーンネットワーク200は、複数のバリデータノード202及び複数のマイニングノード204を含む。この例では、バリデータノード202は、ネットワーク200を通じて物理的且つ論理的に分散される。ブロックチェーンネットワーク200は、フルノード、簡易決済承認(simplified  payment  verification,  SPV)ノード(例えば、ウォレット)、及び焦点を当てた役割を有する他の特殊化されたノードを含む複数の他のタイプのノードを含んでもよいことが理解される。
【００４２】
ブロックチェーンネットワーク300の他の例示的な実装が図３に示されており、これは、バリデータノード202がブロックチェーンネットワーク300内で(論理的な)オーバレイネットワーク302を形成することを示す。オーバレイネットワーク302は、オーバレイネットワーク302内でのバリデータノード202の間の高速通信を確保し、共有メモリプールからの高速アクセス及び検索を確保するように構成されてもよい。
【００４３】
バリデータノード202は、ブロックチェーンネットワーク200、300を通じた大量の支払処理を促進するための構造の一部として、高速トランザクション承認及び伝搬を促進するように実装されてもよい。この点に関して、バリデータノード202は、トランザクションの承認及び伝搬に焦点を当て、マイニングノード204は、ブロックマイニングに焦点を当て、メモリプールを記憶する必要性又はトランザクションを承認する必要性から解放される。
【００４４】
これは、より効率的でより高速な(ブロックチェーン)ネットワークを生じる。トラフィックは、増加したレートでネットワークを通過でき、したがって、データ転送がかなり強化される。したがって、本発明は、改善したブロックチェーンネットワークを提供する。これはまた、ノードが将来の可用性及びサービスを通信して提供することを可能にする、強化されたネットワークリソース割り当てメカニズムも提供する。ネットワークにより処理される必要がある将来の要求は、時間及びリソース効率の良い方式で指示及び処理できる。
【００４５】
高速のトランザクション処理を促進するためのブロックチェーンネットワーク200、300のこの再構成と、個々のノードの役割とは、ブロックチェーンの成長と、様々なノードの悪意のない関与とを確保する際の課題を生み出す可能性がある。1つ以上の中央権限による制御を課すのを回避することにより、ブロックチェーンネットワーク200、300の非集中的な性質を維持することは非常に重要である。ネットワーク200、300が適切に機能するために、マイニングノード204、バリデータノード202及び他の特殊化されたノードは、各ノードが自分の機能又は役割を確実に実行し、他のノードがそれらの機能又は役割を確実に実行することを信頼できる方式で、相互作用するべきである。このため、バリデータノード202とマイニングノード204との間の相互作用は、ブロックの高速マイニング及び伝搬を追求する際の連携を促進する複数のトランザクションを使用してもよい。トランザクションは、マイニングノード204により寄与されるトークンに対するセキュリティを確保する連携ロックスクリプトを含み、トークンの損失を防止するように構成されてもよい。
【００４６】
ここで、図４に参照が行われ、図４は、複数のマイニングノード402(個々に402a、402b、402cとして示す)と、複数のバリデータノード202を含むオーバレイネットワーク302とを模式的に示す。この例では、バリデータノード202は、バリデータノード202の間の分散型方式で、未確認のトランザクションの大規模データベースを記憶するために、例えば、DHTを使用して、共有メモリプールとしてのメモリプールを実装する。しかし、これは1つの例示的な実装であり、いくつかの他の実装では、各バリデータノード202は、メモリプールの完全なコピーを記憶してもよい。
【００４７】
マイニングノード402は、参照番号402b及び402cで示されるような個々の単独マイナーを含んでもよく、参照番号402aで示されるような複数のマイナーを含むマイニングプールを含んでもよい。
【００４８】
この例におけるマイニングノード402は、メモリプールの完全なコピーを有さず、新たなブロックをマイニングするために必要な材料をそれらに提供するために、バリデータノード202に依存する。特に、バリデータノード202のうち1つは、バリデータノード202がメモリプール内でアクセスする一式の未確認のトランザクションを使用して、新たなブロックのマイニングに参加するように、マイニングノード402を招待してもよい。マイニングノード402は、一式の新たな未確認のトランザクションを受信することにより、マイニング活動に参加することに同意することを選択してもよい。各マイニングノード402からトークンを受け取るのと引き換えに、バリデータノード202は、一式のトランザクション(又は一式のトランザクションのハッシュ)をこれらのそれぞれに提供する。参加マイニングノード402の1つが一式のトランザクションから新たなブロックを作成することに成功した場合、そのマイニングノード402は、ブロックをマイニングするための通常の料金に加えて、バリデータノード202からそのトークンに対する制御を受け取る。他の失敗したマイニングノード402は、バリデータノード202へのそれらのトークンを失う。参加マイニングノード402のいずれも次のブロックを作成することに成功しない場合、バリデータノード202は、参加マイニングノード402のそれぞれにそれぞれの変更トークンを移転する。変更トークンは、より少ないリソース又はより少ない時間若しくは制御を表すように変更された寄与トークンを表してもよい。トークンがデジタル資産を表す場合、変更トークンは、そのデジタル資産のより少ない量を表してもよい。デジタル資産は、計算時間又はリソース、暗号通貨等でもよい。バリデータノード202は、トランザクションを承認して一式の承認済みのトランザクションをマイニングノードに提供する際の取り組みに対する補償として、修正トークンを取得する。修正トークンは、マイニングノード402により寄与されたプールされるトークンと、マイニングノード402に移転された変更トークンとの間の差を表してもよい。
【００４９】
説明を容易にするために、以下の例示的な実施形態は、トークンが或る量の暗号通貨を表すと仮定するが、本出願は、その状況での使用に限定されず、その方法及びシステムは、トークンがアイテム、リソース又はエンティティの範囲を表し得るブロックチェーンネットワークにより一般的に適用可能であることが認識される。より一般的には、トークン(又は変更トークン若しくは修正トークン)に対する制御は、トークンにより示される量又は時間の長さの計算又は他のリソースへのアクセスを意味してもよい。これらの計算又は他のリソースに対する制御は、トークンに伴うブロックチェーントランザクションにより移転されてもよい。ブロックチェーントランザクションへのロックスクリプトは、トークンに対する制御を有するノード及び/又はトークンに対する制御に課されるいずれかの条件を管理する。
【００５０】
バリデータノードの観点からのプロセス500の実装を示す例示的なフローチャートが図５に示される。バリデータノードは、動作502において、一式のマイニングノードの参加を勧誘することにより始まる。招待は、共有メモリプールからの一式のトランザクションをマイニングノードに提供することを与え、それにより、一式のマイニングノードがブロックチェーンの次のブロックを構築することに競争できる。
【００５１】
バリデータノードは、ブロックのマイニングに参加することに潜在的に関心があるとして、以前に登録されている一式のマイニングノードを有してもよい。一式のマイニングノードは、マイニングノードに連絡するためのリスト又は他の利用可能な情報に基づいて、バリデータノードにより選択されてもよい。いくつかの場合、マイニングノードの選択は、地理、すなわち、(ネットワークアーキテクチャの観点で)物理的又は論理的に近接したノードに基づいてもよい。一式内のマイニングノードの数は、実装に依存してもよいが、少なくとも2つのマイニングノードを含む。
【００５２】
一式のマイニングノードの勧誘は、マイニングノードの少なくともいくつかによりマイニングの取り組みに参加するという合意をもたらす。いくつかの場合、プロセス500は、少なくとも最小数のマイニングノードが参加に同意した場合にのみ進む。必要な参加マイニングノードの最小数は、いくつかの実装では2でもよく、いくつかの場合にはより多くの数でもよい。
【００５３】
動作504において、参加マイニングノードは、デポジットトランザクションを介してデポジットをバリデータノードにそれぞれ提供する。集合のデポジットは、バリデータノード及びマイニングノードにより、またいくつかのシナリオではバリデータノード及びマイニングノードの少なくとも1つにより、集合的に制御されるアドレスにプールされる。デポジット及び方法500の他の要素に関連するマイニングノードの連携と引き換えに、バリデータノードは、一式のトランザクションをマイナーに提供する。バリデータノードは、完全な一式のトランザクションをマイニングノードに提供しなくてもよく、いくつかの実装では、一式のトランザクションのハッシュをマイニングノードに提供してもよいことが認識される。例えば、マイニングノードは、マークルルートを提供されてもよい。これを使用して、マイニングノードは、マイニングノードが次にプルーフオブワークアルゴリズムを解決することを試みるために使用するブロックヘッダを構築できる。2段階の手順を使用して、マイニングノードはコインベーストランザクションを作成してもよく、これは、予め計算されたマークルツリーに追加されてもよい。
【００５４】
次いで、動作508により示すように、バリデータノードは、ブロックチェーン内の次のブロックの作成を待機する。マイナーがブロックを作成することに成功した場合、動作510において、バリデータノードは、成功したマイナーが参加マイナーの1つであるか否かを評価する。そうである場合、動作512において、これは、参加マイニングノードにより支払われたデポジットを払い戻し、バリデータノードは、失敗した参加マイニングノードにより支払われたデポジットを回収する。
【００５５】
参加マイニングノードのいずれも次のブロックを作成することに成功しない場合、動作514において、バリデータノードは、デポジットからデポジットよりもかなり小さい承認料を引いたものを、参加マイニングノードのそれぞれに払い戻す。承認料の合計は、バリデータにより保持される。ほとんどの実装において、潜在的に成功したマイニングノードを選択するようにバリデーションノードにインセンティブを与えるために、承認料の合計は、そうでなければバリデーションノードが動作512において収集したであろう保持されるデポジットの合計よりも小さくするべきである。
【００５６】
バリデータノードvが3つのマイニングノードm1、m2、m3の参加を勧誘して取得する例を検討する。各マイニングノードは、デポジットdを提供する。マイニングノードのうち1つが成功した場合、これはそのデポジットdを受け取り、バリデータノードは2dを受け取る。マイニングノードのどれも成功しない場合、それぞれがd-εを受け取り、εは承認料である。そのシナリオでは、バリデータノードは3εを受け取り、2d>3εである。
【００５７】
ブロックチェーントランザクションを使用する方法500を実装するためのメカニズムは、参加ノードのいずれか1つによる悪意のある行動又は窃盗を回避するように構成される必要がある。同時に、ネットワークのピアツーピアの性質は、ノードが中央権限なしに動作するように維持されるべきである。以下の例示的な実装は、このようなプロセスを示す。
【００５８】
ここで、図６に参照が行われ、図６は、ブロックチェーンプロセスにおいてブロックをマイニングするための例示的な方法600のフローチャートを示す。この例では、方法600は、バリデータノードvにより実施される。バリデータノードvは、ブロックチェーンネットワークにおける支払トランザクションの高速大量承認及び伝搬を可能にするように構成されたバリデータノードのオーバレイネットワークの一部でもよい。バリデータノードvは、未確認のブロックチェーントランザクションのメモリプールにアクセスする。メモリプールは、バリデータノードvにおいてローカルに記憶されてもよく、或いは、DHTの使用のように、バリデータノードのネットワークを通じて分散型方式で記憶されてもよい。
【００５９】
動作602において、バリデータノードvは、参加マイニングノードを識別する。これは、いくつかの実装では、一式のマイニングノードに招待を送信し、参加に関心のあるノードから応答を受信することにより、そのように行ってもよい。これは、いくつかの実装では、マイニングノードにアクセス可能なリスト又は他の公的掲示板への招待状を公表し、参加に関心のあるマイニングノードから関心の表明を受信することにより、そのように行ってもよい。どのように実装されていても、バリデータノードvは、参加マイニングノードを識別する。
【００６０】
参加に同意する際に、マイニングノードは、いくつかの情報をバリデータノードvに提供してもよい。例えば、マイニングノードmi(i=1,2,3)は、それぞれの公開鍵pubkiをバリデータノードvに提供してもよい。いくつかの例では、マイニングノードは、現在のマイニングの取り組みに参加する目的で生成した秘密値siをそれぞれ有してもよい。これらは、それぞれの秘密値のハッシュ(hash(si))をバリデータノードvにそれぞれ提供してもよい。
【００６１】
動作604において、バリデータノードは、参加マイニングノードがデポジット値dをそれぞれ提供するデポジットトランザクションを生成し、集合のデポジットは、プールされるアウトプットアドレスにプールされる。3つの参加マイニングノードの場合、値3dは、デポジットトランザクションが承認されてブロックに含まれるときに、プールされるアウトプットアドレスに割り当てられる。デポジットトランザクションは、プールされるアウトプットアドレスのためのロックスクリプトが、マイニングノードの少なくとも1つと連携して、その少なくとも1つのマイニングノードのための秘密値siに加えて、バリデータノードによりロック解除できるように構成される。その値はまた、払い戻しが処理されるべきである場合に、秘密値siなしで、マイニングノードの全てとバリデータノードとによる署名を通じてロック解除できる。このロック解除は、払い戻しが処理できる前にブロックがブロックチェーンに追加されることが成功しているという事実の条件付きのアクセスにさせるように、ブロックの高さに関するスクリプト条件を含んでもよい。スクリプト及び条件の詳細は、実装及び関与するブロックチェーンプロトコルに依存して変化してもよい。
【００６２】
動作606において、バリデータノードは、各参加マイニングノードについて請求トランザクションを生成し、請求トランザクションの1つは、その請求トランザクションに関連する参加マイニングノードのうち1つが、バリデータノードが提供する一式のトランザクションを使用してブロックをマイニングすることに成功した場合に、処理されることを意図する。各請求トランザクションは、デポジットトランザクションのアウトプット、すなわち、プールされるアウトプットアドレスをインプットとして受け取り、その請求トランザクションの参加マイニングノードにデポジット料dを割り当てる。プールされるアウトプットアドレスのプール値の残り(この例では2d)は、バリデータノードに割り当てられる。すなわち、各請求トランザクションは、ブロックのマイニングに成功したことに対する報酬としての、関連する参加マイニングノードへのデポジットの払い戻しであり、失敗したマイニングノードのデポジットの喪失である。
【００６３】
動作608において、バリデータノードは、参加マイニングノードのいずれも、提供された一式のトランザクションでブロックをマイニングすることに成功しない場合に、払い戻しトランザクションを生成する。払い戻しトランザクションは、プールされるアウトプットアドレスにおけるプール値をインプットとして受け取り、デポジット料dから承認料εを引いたものを参加マイニングノードのそれぞれに送信する。累計の承認料(この例では3ε)が払い戻しトランザクションによりバリデータノードに割り当てられる。
【００６４】
動作604、606及び608は、バリデータノードによりトランザクションを生成することにそれぞれ関与することが認識される。図示の便宜上、これらは順に示してあるが、図示の順序で実行される必要はなく、或いは全く順序が存在しなくてもよい。
【００６５】
動作610において、デポジットトランザクション、請求トランザクション及び払い戻しトランザクションを生成すると、バリデータノードは、これらのトランザクションを参加マイニングノードのそれぞれに送信する。各参加マイニングノードは、デポジットトランザクション、そのそれぞれの請求トランザクション及び払い戻しトランザクションに署名する。次いで、参加マイニングノードは、署名されたトランザクションをバリデータノードに返却する。動作612により示すように、バリデータノードは、参加マイニングノードから署名されたトランザクションを受信する。
【００６６】
動作614において、バリデータノードは、ブロックチェーンネットワークを通じて署名されたデポジットトランザクションをブロードキャスト(伝搬)する。デポジットがブロックチェーンに追加されるブロックに実際に組み込まれるには、或る程度の時間を要することが認識される。実際に、デポジットトランザクションは、参加マイニングノードがマイニングを試みる一式のトランザクションに含まれる承認済みのトランザクションの1つでもよい。それにもかかわらず、デポジットトランザクションをブロックチェーンネットワークに伝搬させると、それは、メモリプールに追加され、最終的には、所定のデポジットがプールされるアウトプットアドレスにプールされることを生じる。
【００６７】
バリデータノードは、予め署名された請求トランザクション又は払い戻しトランザクションを伝搬しない。実際には、プールされるアウトプットアドレスからのインプットのためのロック解除スクリプトを完成させるのに必要な秘密値siを有さないので、請求トランザクションの署名を完成できない。動作616により示すように、これは、請求トランザクション及び払い戻しトランザクションを記憶し、新たなブロックの完成の成功を待機する。
【００６８】
参加マイニングノードのうち1つがブロックの完成に成功した場合、すなわち、新たなブロックのプルーフオブワークを解決することに成功した場合、動作618において、バリデータノードは、新たなブロックから秘密値siを抽出する。成功したマイニングノードは、非トランザクションフィールドに配置することにより、秘密値siを新たなブロックに含めてもよい。ビットコインプロトコルでは、例えば、OP_RETURNコードがトランザクションアウトプットを無効としてマークするので、非トランザクションアウトプットを伝達するために使用されてもよい。これは、ブロックチェーン内の非トランザクションデータを伝達するために使用できる。
【００６９】
次いで、秘密値siを抽出したバリデータノードは、成功したマイニングノードに関連する請求トランザクションのインプットに対して署名を完成させることができ、次いで、動作620において、これは、その請求トランザクションをネットワーク上でブロードキャストする。これは、デポジットdを成功したマイニングノードに払い戻し、残りのデポジット2dをバリデータノードに割り当てることを生じる。
【００７０】
参加マイニングノードのうち1つが新たなブロックを作成するのを待機する間に、動作622により示すように、バリデータノードは、新たなブロックが他の非参加マイニングノードにより作成されるか否かを監視する。ブロックの高さが増加した場合、すなわち、新たなブロックがブロックチェーンに追加された場合、参加マイニングノードのうち1つがプルーフオブワークを解決するのに成功する前に、動作624において、バリデータノードは、払い戻しトランザクションに署名してブロードキャストする。少なくとも1つの実装では、払い戻しトランザクションに署名することは、バリデータノードにより保持されている秘密値s0と共に、バリデータノードの署名で署名することを含んでもよい。バリデータの秘密値s0の機能は、ロック/ロック解除スクリプト動作の実装における比較の目的で、マイニングノードの秘密値siのいずれにも等しくない値を有することでもよい。いくつかの実装では、バリデータノードは、払い戻しトランザクションのためのロック解除スクリプトの一部として、自分の秘密値s0の使用を予見(forego)してもよい。
【００７１】
ここで、図７に参照が行われ、図７は、デポジットトランザクション、請求トランザクション及び払い戻しトランザクションの間の関係を模式的に示す。この例は、3つの参加マイニングノードm1、m2及びm3が存在することに基づいていることが認識される。
【００７２】
上記の例により更に例示すために、ビットコインプロトコルを使用した実装を仮定して、以下の表は、デポジットトランザクション、請求トランザクション及び払い戻しトランザクションの簡略化された例の詳細を示す。
【００７３】
【表１】
2020523677.tif 000003
【００７４】
【表２】
2020523677.tif 000004
【００７５】
【表３】
2020523677.tif 000005
【００７６】
【表４】
2020523677.tif 000006
上記のトランザクションの詳細は例示であり、本出願は、これらの詳細を使用する実装に限定されず、或いは、ビットコインプロトコルの使用に限定されないことが認識される。他のブロックチェーンプロトコル及び他のトランザクション構造は、他の実装で使用されてもよい。
【００７７】
図８は、メモリプールを維持するバリデータノードを有する高速トランザクションブロックチェーンネットワークの状況においてブロックをマイニングするための一例のプロセス800をフローチャート形式で示す。プロセス800は、ネットワーク内のマイニングノードにより実施される。
【００７８】
プロセス800は、マイニングノードが、バリデータノードからの招待を受信又は取得したときに開始される。この招待は、マイニングノードが新たなブロックを構築することを試みる際に使用するための一式の承認済みのトランザクションをマイニングノードに提供する。招待はまた、参加マイニングノードのいずれも成功しない場合に要求されるデポジット及び/又は支払われるべき承認料を指定してもよい。
【００７９】
動作804において、マイニングノードは、参加すべきか否かを決定する。これは、他の要因の中でも、バリデータノードの識別情報、提供されるトランザクションの数、一式のトランザクションのマイニングに利用可能なトランザクション料、又はマイニングノードがバリデータノードの信憑性を確認できるか否かを含む、いずれかの数の要因に基づいて決定してもよい。マイニングノードが参加しないことを選択した場合、マイニングノードは招待を拒否してもよい。
【００８０】
マイニングノードがマイニングの取り組みに参加することを決定した場合、動作806にいて、マイニングノードは、その秘密値siを生成する。マイニングノードは、それが参加する全てのマイニングの取り組みに対して、新たな秘密値を作成する。動作808により示すように、マイニングノードはまた、バリデータノードからの招待に応答する。応答は、マイニングノードの公開鍵を含んでもよい。応答は、マイニングノードの秘密値siのハッシュを更に含んでもよい。
【００８１】
動作810において、マイニングノードは、バリデータノードにより生成されたデポジットトランザクション、請求トランザクション及び払い戻しトランザクションを受信する。マイニングノードは、その署名で全ての3つのトランザクションに署名する。特に、これは、dのそのデポジットの値を提供するデポジットトランザクションへのインプットに署名する。これはまた、デポジットトランザクションからのアウトプットを使用するために請求トランザクションへのインプットに署名し、デポジットトランザクションからのアウトプットを使用するために払い戻しトランザクションへのインプットに署名する。トランザクションが署名されると、マイニングノードは、これらをバリデータノードに返却する。
【００８２】
動作812において、マイニングノードは、バリデータノードから一式のトランザクションのセットを受信してもよい。多くの実装では、マイニングノードは一式のトランザクションのハッシュ、例えば、マークルルートの形式で一式のトランザクションを受信する。
【００８３】
次いで、マイニングノードは、一式のトランザクション(又は少なくとも一式のトランザクションのハッシュ)を使用して新たなブロックを成功してマイニングするために必要なプルーフオブワークを完成させることを試みる。これは、共有の秘密siがブロックに含まれることを確保する。いくつかの場合、関与するブロックチェーンプロトコルに依存して、これは、非トランザクションフィールドに埋め込まれてもよい。いくつかの場合、非トランザクションデータをブロックヘッダに入れることが可能になり得る。さらに他の場合、非トランザクションデータをブロック内のトランザクションに入れることが可能になり得る。上記のように、ビットコインプロトコルでは、トランザクション内のOP_RETURNオペコードを使用して、非トランザクションデータをブロックに含めることが可能になり得る。
【００８４】
動作816により示すように、マイニングがブロックのマイニングに成功した場合、すなわち、プルーフオブワークを完成させた場合、動作818において、マイニングノードは、ブロック(又は少なくともブロックヘッダ)を伝搬する。例えば、マイニングノードは、ブロックヘッダをバリデータノードの1つ以上に伝搬してもよく、そこで、ブロックが組み立てられ、承認され、記憶され、伝搬される。
【００８５】
ブロックのマイニングの作業中に、動作820により示すように、マイニングノードは、他のノードが新たなブロックのマイニングに成功したか否かを評価する。マイニングノードが自分の新たなブロックについてプルーフオブワークを完成できる前に、他のブロックがブロックチェーン上に現れた場合、これは、新たなブロックをマイニングする取り組みを放棄する。新たなブロックが他の参加マイニングノードのうち1つにより完成した場合、マイニングノードは払い戻しを受け取らず、そのデポジットを失う。しかし、新たなブロックが、参加マイニングノードのうち1つではない他のマイニングノードにより完成した場合、マイニングノードはそのデポジットの部分的な払い戻しを受ける。具体的には、マイニングノードは、デポジットから承認料を引いたものを受け取る。
【００８６】
ここで、図９に参照が行われ、図９は、ノードの簡略化された例をブロック図形式で示す。この例では、ノードはバリデータノード900である。この例におけるバリデータノード900は、プロセッサ902と、ネットワークインタフェース904と、メモリ906とを含む。バリデータノード400は、ここに記載の機能を実行するのに十分なネットワーク接続及び処理及びメモリリソースを有するいずれかの適切な計算ハードウェアを使用して実装されてもよい。バリデータノード900は、ここに記載の機能を実装するためのプロセッサ実行可能命令を含んでもよい。いくつかの場合、プロセッサ実行可能命令はブロックチェーンアプリケーション920と呼ばれてもよいが、命令は、ハードウェア及びオペレーティングシステムに依存して、1つ以上のモジュール、アプリケーション、スクリプト又は他のプログラミング構造で実装されてもよいことが認識される。プロセッサ902は、マルチコアプロセッサ及び/又は複数のプロセッサを含んでもよい。メモリ906は、この例では、DHTに基づくメモリプールの割り当てられた部分を含むデータを記憶する。
【００８７】
ここに記載のデバイス及びプロセス並びにビデオ特徴量抽出器を構成するための記載された方法/プロセスを実装するいずれかのモジュール、ルーチン、プロセス、スレッド、アプリケーション又は他のソフトウェアコンポーネントは、標準的なコンピュータプログラミング技術及び言語を使用して実現されてもよいことが理解される。本出願は、特定のプロセッサ、コンピュータ言語、コンピュータプログラミング規則、データ構造又は他のこのような実装の詳細に限定されない。
【００８８】
上記の実施形態は、本発明を限定するものではなく例示するものであり、当業者は、添付の特許請求の範囲により定義される本発明の範囲から逸脱することなく、多くの代替実施形態を設計できる点に留意すべきである。特許請求の範囲において、括弧内に付したいずれかの参照符号は、特許請求の範囲を限定するものと解釈されるべきではない。「含む(comprising)」及び「含む(comprises)」等の用語は、全体としていずれかの請求項又は明細書に列挙されたもの以外の要素又はステップの存在を除外しない。本明細書において、「含む(comprises)」とは、「含む(includes)又はからなる(consists  of)」を意味し、「含む(comprising)」とは、「含む(comprising)又はからなる(consisting  of)」を意味する。要素の単数形の参照は、このような要素の複数形の参照を除外するものではなく、逆も同様である。本発明は、いくつかの別個の要素を含むハードウェアにより、且つ、適切にプログラムされたコンピュータにより実装されてもよい。いくつかの手段を列挙するデバイスの請求項において、これらの手段のいくつかは、1つの同じハードウェアアイテムにより具体化されてもよい。特定の手段が相互に異なる従属項に記載されているという単なる事実は、これらの手段の組み合わせが有利に利用できないことを示すものではない。
【図１】
2020523677.tif 000007
【図２】
2020523677.tif 000008
【図３】
2020523677.tif 000009
【図４】
2020523677.tif 000010
【図５】
2020523677.tif 000011
【図６】
2020523677.tif 000012
【図７】
2020523677.tif 000013
【図８】
2020523677.tif 000014
【図９】
2020523677.tif 000015
【国際調査報告】
2020523677.tif 000016