(57)【特許請求の範囲】
【請求項１】
ブロックチェーン上の複数のノードからコンセンサスノードを選択するための方法であって、
少なくとも1つの期待ノードへの割当保有ノードの持分投票結果を取得するステップであり、前記割当保有ノードが、少なくとも1つの割当を所有するノードを含み、かつ期待ノードが、前記割当保有ノードが投票するノードを含む、ステップと、
前記持分投票結果に基づいて、持分投票後に各割当保有ノードによって所有される割当数を決定するステップと、
持分投票後に各割当保有ノードによって所有される前記割当数に基づいて、所定数のコンセンサスノードを決定するステップであって、持分投票後に同数の割当を所有する複数のノードの優先順位が、前記複数の割当保有ノードの生成されたルート証明書の時系列に基づいて決定される、ステップと
を含む方法。
【請求項２】
割当保有ノードの各々に関して、前記割当保有ノードに対するルート証明書が、前記割当保有ノードが特定の証明書サーバに前記ルート証明書を申請することに応じて生成される、請求項1に記載の方法。
【請求項３】
前記持分投票結果を取得するステップが、
前記持分投票に参加した割当保有ノードの秘密鍵を使用して、前記期待ノードへの前記持分投票後に生成される投票結果に署名を付すステップを含み、
前記持分投票結果を取得する前記ステップ後に、前記方法が、
前記割当保有ノードの対応する公開鍵を使用することによって前記持分投票結果を検証するステップ
をさらに含む、請求項1または2に記載の方法。
【請求項４】
前記少なくとも1つの期待ノードが、前記持分投票の間に、所定のコンセンサスノード選択条件に基づいて、前記割当保有ノードによって選択される、請求項1から3のいずれか一項に記載の方法。
【請求項５】
前記所定のコンセンサスノード選択条件が、ノードサービス性能安定性、ノードサービス容量および選択ポリシーの少なくとも1つを含む、請求項4に記載の方法。
【請求項６】
前記割当が持分投票を通じて前記ブロックチェーン上のノード間で有効に移動される回数が、単一のコンセンサスノード選択プロセスにおいて1に設定される、
請求項1から5のいずれか一項に記載の方法。
【請求項７】
前記所定数のコンセンサスノードを決定するステップが、
持分投票後に同数の割当を保有する前記複数の割当保有ノードから、前記コンセンサスノードとしてより早く生成されたルート証明書を持つノードを選択するステップ
を含む、請求項1に記載の方法。
【請求項８】
前記複数の割当保有ノードの各割当保有ノードに対するルート証明書は、前記割当保有ノードが有効であることを証明するための、前記割当保有ノードに対するデータ情報を含む、請求項1に記載の方法。
【請求項９】
コンセンサスノードの選択のための装置であって、請求項1から8のいずれか一項に記載の方法を行うように構成される複数のモジュールを備える装置。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、2017年8月24日に出願の中国特許出願第201710736740.5号に対する優先権を主張するものであり、その全体が引用により本明細書に援用される。
【０００２】
本明細書は、コンピュータデータ処理技術の分野に属し、特に、コンセンサスノード選択方法および装置、ならびにサーバに属する。
【背景技術】
【０００３】
ブロックチェーン技術は、概して、非集中化、透明性、耐タンパ性、信用等といった特性を持つ非集中型分散データベース技術である。それは、パブリックまたはプライベートピアツーピアネットワークにデータ情報を記録するために使用できる。ブロックチェーンのデータ整合性を保証するために、データは、コンセンサスアルゴリズムを使用することによってブロックチェーン上で生成および更新される。実用的ビザンチン障害耐性(PBFT)アルゴリズムが、業界において一般的に使用される分散整合性コンセンサスアルゴリズムである。
【０００４】
PBFTは状態機械複製アルゴリズムである。通常、一部のノードが、コンセンサス処理のためのコンセンサスノードとしてブロックチェーン上の複数のノードから選択される。通常、コンセンサスに参加できるコンセンサスノードは4から11である。現在、PBFTでは、コンセンサスノード選択のためのアルゴリズムが、主にランダム選択および固定選択を含む。ランダムコンセンサスノード選択では、新たに選択されたコンセンサスノードを全てのノードに承認させるようにアルゴリズムを設計することは困難であり、ノード選択自体が複雑なコンセンサス到達プロセスである。固定コンセンサスノード選択は実装の点でランダム選択より単純であり、例えば、全てのノードにソースコードが分配される必要があるだけである。しかしながら、この方法は、障害が発生すると、またはコンセンサスノードが何らかの理由で更新されると困難になる。
【０００５】
現在、実装および維持するのが簡単で、非常に効率的で、かつ信頼できるPBFTコンセンサスノード選択解決策の必要性が業界にある。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本明細書の1つまたは複数の実装例は、PBFTでより簡単に、より効率的にかつより信頼できるようにコンセンサスノードを選択する、コンセンサスノード選択方法および装置、ならびにサーバを提供するように意図される。
【課題を解決するための手段】
【０００７】
本明細書の1つまたは複数の実装例に提供されるコンセンサスノード選択方法および装置ならびにサーバは、以下の方法を使用することによって実装される。
【０００８】
コンセンサスノード選択方法は、少なくとも1つの選択される期待ノードへの割当保有ノード(shareholder node)の持分投票結果を取得するステップであって、割当保有ノードが、所定の総持分権の少なくとも1つを所有するノードを含む、ステップと、持分投票結果に基づいて、持分投票後に各割当保有ノードによって所有される割当数を決定するステップと、持分投票後に各割当保有ノードによって所有される割当数に基づいてコンセンサスノード選択結果を決定するステップとを含む。
【０００９】
コンセンサスノード選択装置は、少なくとも1つの選択される期待ノードへの割当保有ノードの持分投票結果を取得するように構成され、少なくとも1つの割当保有ノードが、所定の総割当の少なくとも1つを所有するノードを含む、投票結果取得モジュールと、持分投票結果に基づいて、持分投票後に各割当保有ノードによって所有される割当数を決定するように構成される、投票結果決定モジュールと、持分投票後に各割当保有ノードによって所有される割当数に基づいてコンセンサスノード選択結果を決定するように構成される、コンセンサスノード決定モジュールとを含む。
【００１０】
コンセンサスノード選択装置は、プロセッサおよびプロセッサ実行可能命令を記憶するように構成されるメモリを含む。プロセッサは、命令を実行して、少なくとも1つの期待ノードへの割当保有ノードの持分投票結果を取得する。ここで割当保有ノードは、所定の総割当の少なくとも1つを所有するノードを含んでおり、持分投票結果に基づいて、持分投票後に各割当保有ノードによって所有される割当数を決定し、そして持分投票後に各割当保有ノードによって所有される割当数に基づいてコンセンサスノード選択結果を決定する。
【００１１】
サーバは、少なくとも1つのプロセッサおよびプロセッサ実行可能命令を記憶するように構成されるメモリを含む。プロセッサは、命令を実行して、少なくとも1つの期待ノードへの割当保有ノードの持分投票結果を取得する。ここで割当保有ノードは、所定の総割当の少なくとも1つを所有するノードを含んでおり、持分投票結果に基づいて、持分投票後に各割当保有ノードによって所有される割当数を決定し、そして持分投票後に各割当保有ノードによって所有される割当数に基づいてコンセンサスノード選択結果を決定する。
【発明の効果】
【００１２】
本明細書の1つまたは複数の実装例に提供されるコンセンサスノード選択方法および装置、ならびにサーバにおいて、割当保有ノードが持分投票を行い、そして投票結果において割当保有ノードによって所有される割当数に基づいてコンセンサスに参加するようにノードを選択できる。本方法は実装するのが簡単である。選択結果は実在して有効であり、そして投票結果はネットワーク全体に開示されて他のノードによって承認できる。本明細書における実装解決策に基づき、持分投票後の割当比率に基づいてコンセンサスノードが迅速に選択できる。そのため、コンセンサスプロセスでの消費が低減され、コンセンサス処理ステップが単純化され、コンセンサスノード選択効率が改善され、そして選択結果はより信頼できる。
【００１３】
本明細書の実装例における、または既存技術における技術的解決策をより明確に説明するために、以下、実装例または既存技術を説明するための添付図面を簡単に説明する。明らかに、以下の説明における添付図面は単に本明細書の一部の実装例を図示するだけであり、当業者は創造的努力なしでこれらの添付図面から他の図面をさらに導き出せる。
【図面の簡単な説明】
【００１４】
【図１】本明細書の一実装例に係る、証明書サーバによって応対されるノードおよびブロックチェーンノードへの所定の総割当の配分を例示する概要構造図である。
【図２】明細書に係る、実装シナリオにおける方法の処理プロセスを例示する概要図である。
【図３】本明細書に係る、同方法の別の実装例を例示する概要フローチャートである。
【図４】本明細書の一実装例に係る、ブロックチェーンネットワークにおいてコンセンサスノードを選択するシナリオを例示する概要図である。
【図５】本明細書の一実装例に係る、コンセンサスノード選択装置におけるモジュールを例示する概要構造図である。
【図６】本明細書の別の実装例に係る、コンセンサスノード選択装置におけるモジュールを例示する概要構造図である。
【図７】本明細書の一実装例に係る、サーバを例示する概要構造図である。
【図８】本開示の一実装例に係る、ブロックチェーンにおいてコンセンサスノードを選択するためのコンピュータ実装方法の一例を例示するフローチャートである。
【発明を実施するための形態】
【００１５】
当業者に本明細書における技術的解決策をより良く理解させるために、以下、本明細書の実装例における添付図面を参照しつつ本明細書の実装例における技術的解決策を明確かつ包括的に説明する。明らかに、記載される実装例は、本明細書の実装例の全部よりむしろ単に一部である。創造的努力なしで本明細書の実装例に基づいて当業者によって得られる他の実装例は本明細書の保護範囲内に納まるものとする。
【００１６】
本明細書が以下の実装例または添付図面に本方法の動作ステップまたは本装置の構造を提供するが、本方法または本装置は、従来のまたは非創造的な努力に基づいて、より多くの動作ステップもしくはモジュールユニット、または一部の動作ステップもしくはモジュールユニットの組み合わせ後により少ない動作ステップもしくはモジュールユニットを含み得る。必要な論理的因果関係のないステップまたは構造では、ステップの実行順序または本装置のモジュール構造は、本明細書における実装例または添付図面に図示される実行順序またはモジュール構造に限定されない。本方法またはモジュール構造が実際の装置、サーバまたは最終製品に適用されるとき、本方法またはモジュール構造は、実装例または添付図面に図示される方法またはモジュール構造に基づく順序で実行できる、または(例えば、並列処理の環境で、マルチスレッド処理環境で、ならびに分散処理環境およびサーバクラスタ環境でさえ)並列に実行できる。
【００１７】
PBFTは、状態機械複製アルゴリズム、すなわち、モデル化のための状態機械として使用されるサービスである。サービスは、通常、サーバによって提供される特定応用サービスである。例えば、移動を完了するために、サービス「移動」は状態機械としてモデル化できる。状態機械は分散システムにおける異なるノードに複製される。一般に、状態機械の各コピーがサービス状況を記憶し、そしてサービス動作を実装する。ブロックチェーン上のノード数が一定数を超えると、コンセンサスに参加するノードがコンセンサス効率を低下させ得る。したがって、一部のノードが、コンセンサスに参加するように、或る方法を使用することによってコンセンサスノードとしてブロックチェーン上のノードから選択される必要がある。例えば、モデル化を通じてコピーが生成され、そして他のノードはコンセンサス結果が同期される(例えば、複製される)だけであり、コンセンサスプロセスには参加しない。
【００１８】
PBFTコンセンサスアルゴリズムでは、通常、コンセンサスに参加するノードは4から11である。コンセンサスに参加するノードが4つ未満であれば、PBFTアルゴリズムは無効になる。コンセンサスに参加するノードが11を超えれば、ノードの増加と共にコンセンサス性能が低下する。ビザンチン障害耐性およびコンセンサス性能のバランスをとるために、一部のノードが、コンセンサスに参加するように多数のノードからコンセンサスノードとして選択される必要がある。コンセンサスは、通常、ブロックチェーン上の分散ノードが同じアルゴリズムおよび同じデータ形式(または同じ処理プロトコル)を使用して、異なる言語を使用することによってデータを生成および更新できることを示す。本明細書の実装例は、持分投票に基づく効果的なPBFTコンセンサスノード選択方法を提供する。本方法は実装するのが簡単である。選択されるノードは実在して有効であり、かつ他のノードによって承認できる。具体的な実装例において、証明書サーバが導入でき、そして証明書サーバの公開鍵がブロックチェーン上の作成ブロック(ブロックチェーン上のデータ記憶ブロック)へ書き込める。ブロックチェーン上の各ノードはルート証明書サーバにルート証明書を申請する必要がある。ルート証明書は、ノード識別情報の有効性を証明するために使用できる。
【００１９】
本実装例において、総割当数はあらかじめ決定できる。例えば、ブロックチェーン上の全てのノードの総割当数は100に設定できる。本明細書の本実装例において、割当は等しい権限(または重み)を有することができ、そして割当はブロックチェーン上の1つのノードから別のノードに移動できる。割当は資産と考えることができ、そしてブロックチェーン上で取引できる。割当の有効性は、作成ブロックに記録される情報に基づいてトランザクション確認プロセスで証明できる。総割当数は、実ノード数、実装環境等に基づいて決定できる。一般に、決定した総割当数は一意であり、不変のままである。もちろん、本明細書の他の実装例において、総割当数はサービス処理要件に基づいて増減でき、例えば、新たにアクセスされた重要なノードはそれ自身で10割当を所有する。総割当は、サービス規則に基づいて対応するノードに配分できる。具体的な配分規則は、ノードサイズ、トラフィック量、重要性等に基づいて決定できる。本明細書の1つまたは複数の実装例において、所定の総割当のうちの割当が配分されたノードが割当保有ノードと称することができる、または所定の総割当の少なくとも1つを所有するノードとして理解できる。図1は、本明細書に係る、証明書サーバによって応対されるノードおよびブロックチェーンノードへの所定の総割当の配分を例示する概要構造図である。
【００２０】
したがって、PBFTでコンセンサスノードが選択される必要があるとき、割当を所有するノードは期待ノードに投票することを選べ、そして投票結果はブロックチェーンネットワーク全体にブロードキャストできる。投票後に、各ノードは、同じ持分投票結果を受信し、次いで各ノードによって所有される割当数に基づいてコンセンサスノード選択結果を決定できる。具体的な実装例が図2に図示される。本明細書はコンセンサスノード選択方法の一実装例を提供する。本方法は以下のステップを含むことができる。
【００２１】
S2.少なくとも1つの期待ノードへの割当保有ノードの持分投票結果を取得し、ここで割当保有ノードは、所定の総割当の少なくとも1つを所有するノードを含む。
【００２２】
割当保有ノードが投票するノードは期待ノードと称することができる。期待ノードは、割当を所有する割当保有ノードを含むことができる、または投票前に割当を所有しないノードを含むことができる。一実装例において、割当を所有するノードは、どのノードに投票することでも独立して選べる。期待ノードを選択するための根拠は、ノードサービス性能安定性、ノードサービス容量、オペレータによって決定される選択ポリシー等を含むことができるが、これらに限定されない。本明細書の一実装例において、選択される期待ノードは、割当を投票するための所定のコンセンサスノード選択条件に基づいて割当保有ノードによって選択される少なくとも1つのノードを含むことができる。
【００２３】
所定のコンセンサスノード選択条件は、ノードサービス性能安定性、ノードサービス容量、オペレータによって決定される選択ポリシー等の少なくとも1つを含むことができる。割当保有ノードは、それ自身に投票できる、または別のノードに投票できる。
【００２４】
本明細書の本実装例において、割当を所有するノード(割当保有ノード)が投票でき、割当のない一般ノードは投票できない。
【００２５】
一実装例において、割当保有ノードの総票数は、割当保有ノードによって所有される投票割当数だけである。投票割当は、コンセンサスノード選択中に他の割当保有ノードが投票する割当を含まない。したがって、本明細書に提供される本方法の別の実装例において、割当が投票を通じてブロックチェーン上のノード間で有効に移動される回数は、単一のコンセンサスノード選択プロセスにおいて1に設定される。
【００２６】
本実装例において、割当保有ノードは、それ自身に投票できる、または別のノードに投票できる。割当保有ノードは、他の割当保有ノードから得られた票を移動できない。コンセンサスノード選択のための単一の投票プロセスでは、各割当は、割当保有ノードによって一度だけ投票するために使用できる。
【００２７】
具体例では、ノード1が10割当を有し、そして10割当が投票割当である。ノード1がノード2に6割当を投票し、そしてノード3がノード1に3割当を投票する。この時点でノード1が7割当を有するが、それらのうちの3つは別のノードによってノード1に投票されて、投票割当でないので、ノード1は持分投票のために使用できる4割当を有する。ノード1は、それ自身に投票できる、または別の期待ノードに投票できる。
【００２８】
本明細書の別の実装例において、割当保有ノードの持分投票の投票結果にデジタル署名を付けることができる。そのため、別のノードが割当保有ノードの投票結果を偽造するのを防止できる。デジタル署名は、割当保有ノードがそれ自身の投票結果を否定するのを防止するために、投票結果の検証データとしても使用できる。そのため、持分投票結果の信頼性および安全性が大いに改善される。本明細書に提供される一実装例において、持分投票結果は、割当保有ノードによってその秘密鍵を使用して期待ノードの持分投票結果にデジタル署名して生成できる。
【００２９】
それに応じて、持分投票結果を取得した後に、本方法はさらに以下を含む。
【００３０】
S20.割当保有ノードの対応する公開鍵を使用することによって持分投票結果を検証する。
【００３１】
図3は、本明細書に係る、本方法の別の実装例を例示する概要フローチャートである。本実装例において、投票結果上の署名に署名するために非対称暗号化における秘密鍵が使用でき、そして対応する公開鍵が他のノードにブロードキャストできる。それに応じて、持分投票結果および持分投票結果の送信側が有効(正当)であるかどうかを確認するために、秘密鍵を使用することによって署名が署名された結果は、対応するノードの公開鍵を使用することによって検証できる。持分投票結果が無効であれば、警報を発することができる、または別の所定の処理動作を行うことができる。
【００３２】
S4.持分投票結果に基づいて、持分投票後に各割当保有ノードによって所有される割当数を決定する。
【００３３】
割当保有ノードが投票した後に、割当保有ノードの持分投票結果はブロックチェーン上の全てのノードにブロードキャストできる。そのため、ブロックチェーン上の各ノードが割当保有ノードの持分投票結果を受信でき、そしてノードは同じ持分投票結果を受信できる。本実装例において、全ての割当保有ノードが投票した後に、ノードへの割当配分構造が通常変化する。例えば、元々割当を所有するノードが別のノードに全ての割当を投票した一方で、他のノードから票を受けていなければ、そのノードは目下割当を有しない。すなわち、持分投票前に、ノードは割当保有ノードであった。しかし、持分投票後に、ノードは割当のない一般ノードに変わった。持分投票前に割当のない一般ノードが持分投票後に割当を所有すれば、それは新たな割当保有ノードになる。
【００３４】
したがって、持分投票後に、割当保有ノードまたは一般ノードが、受信した持分投票結果またはそれ自身の持分投票結果に基づいて、各割当保有ノードによって所有される割当数を決定できる。本実装例の実装シナリオでは、持分投票後、全ての割当保有ノードの割当の和は持分投票前後で不変のままである。
【００３５】
具体例では、持分投票前に、割当保有ノード10が20割当を所有し、割当保有ノード11が25割当を所有し、割当保有ノード15が30割当を所有し、割当保有ノード8が10割当を所有し、そして割当保有ノード6が15割当を所有する。持分投票後に、全てのノードが同じ持分投票結果を受信する。割当保有ノード10によって受信される持分投票結果は次の通りであり得る：割当保有ノード10が9割当を所有し、割当保有ノード11が20割当を所有し、割当保有ノード15が35割当を所有し、割当保有ノード8が3割当を所有し、割当保有ノード6が20割当を所有し、そして割当保有ノード7が13割当を所有する。持分投票後に、当初の割当保有ノードによって所有される割当数が変化しただけでなく、新たな割当保有ノード7も現れて13割当を所有する。
【００３６】
S6.持分投票後に各割当保有ノードによって所有される割当数に基づいてコンセンサスノード選択結果を決定する。
【００３７】
持分投票結果が得られた後、各現在の割当保有ノードによって所有される割当数に基づいてコンセンサスノード選択結果が決定できる。選択されるコンセンサスノードの具体数および選択方法は実際の応用シナリオまたは処理要件に基づいて設定できる。例えば、最多割当を所有する5つの割当保有ノードがコンセンサスノードとして選択される。
【００３８】
本明細書に提供される本方法の別の実装シナリオでは、持分投票後に同数の割当を所有するノードがあり得る。例えば、ノード10およびノード11が各々20割当を所有する。しかしながら、コンセンサスノード数の制限のため(例えば、5つのコンセンサスノードが選択される必要があり、4つのコンセンサスノードが決定されており、各決定したコンセンサスノードが20を超える割当を所有する)、ノード10およびノード11の一方がコンセンサスノードとして選択される必要がある。本明細書に提供される一実装例において、同数の割当を所有するノードがある場合、ノードルート証明書を生成する時系列に基づいてコンセンサスノードが選択できる。別の実装例において、持分投票後に各割当保有ノードによって所有される割当数に基づいてコンセンサスノード選択結果を決定することは、以下のステップを含むことができる。
【００３９】
S601.割当保有ノードに、持分投票後に同数の割当を所有するノードを含む場合、ノードルート証明書を生成する時系列に基づいて同数の割当を所有するノードからコンセンサスノードを選択し、ここでノードルート証明書は、ノード識別情報を証明するために使用され、かつブロックチェーン上のノードによって特定の証明書サーバに申請される、データ情報を含む。
【００４０】
上記したように、一実装方法において、ブロックチェーンに追加される前に、ブロックチェーン上のノードは、ノードが有効であることを証明するために使用されるルート証明書を指定の証明書サーバに申請する必要がある。ノードがブロックチェーンに早く追加されるほど、ノードのルート証明書は早く生成される。一般に、ノードがブロックチェーンに早く追加されるほど、その実行パラメータ、サーバ性能、データ処理ポリシー等は安定し、最適でかつ信頼できる。したがって、本実装例において、同数の割当を所有するノードがある場合、より早く生成されたルート証明書を持つノードがコンセンサスノードとして優先的に選択できる。具体例では、ルート証明書を生成する時間を含む情報を使用することによってルート証明書が番号付けされる場合、コンセンサスノードはルート証明書の番号の昇順に選択できる。
【００４１】
図4は、本明細書の一実装例に係る、ブロックチェーンネットワークにおいてコンセンサスノードを選択するシナリオを例示する概要図である。本明細書の1つまたは複数の実装例は、コンセンサスノード選択方法を提供する。割当保有ノードが持分投票を行い、そして投票結果において割当保有ノードによって所有される割当数に基づいてコンセンサスに参加するようにノードを選択できる。本方法は実装するのが簡単である。選択結果は実在して有効であり、そして投票結果はネットワーク全体に開示されて他のノードによって承認できる。本明細書における実装解決策に基づき、持分投票後の割当比率に基づいてコンセンサスノードが迅速に選択できる。そのため、コンセンサスプロセスでの消費が低減され、コンセンサス処理ステップが単純化され、コンセンサスノード選択効率が改善され、そして選択結果はより信頼できる。
【００４２】
前述のコンセンサスノード選択方法に基づいて、本明細書は、コンセンサスノード選択装置をさらに提供する。本装置は、本明細書の1つまたは複数の実装例における方法においてシステム(分散システムを含む)、ソフトウェア(アプリケーション)、モジュール、コンポーネント、サーバ、クライアント、量子コンピュータ等を使用し、かつ必要な実装ハードウェアを含む装置を含むことができる。同じ発明概念に基づいて、本明細書の1つまたは複数の実装例に提供される装置が以下の実装例に記載される。問題を解決するための本装置の実装解決策は本方法の実装解決策と類似している。したがって、本明細書における本装置の1つまたは複数の具体的な実装例については、前述の方法の実装例を参照されたい。詳細は再度ここで記載されることはない。以下、用語「ユニット」または「モジュール」は、所定の機能のソフトウェアおよび/またはハードウェアの組合せを実装できる。以下の実装例に記載される装置が好ましくはソフトウェアを使用することによって実装されるが、本装置はハードウェアまたはソフトウェアおよびハードウェアの組合せを使用することによっても実装できる。
【００４３】
図5は、本明細書の一実装例に係る、コンセンサスノード選択装置におけるモジュールを例示する概要構造図である。図5に図示されるように、本装置は、少なくとも1つの期待ノードへの割当保有ノードの持分投票結果を取得するように構成され、割当保有ノードが、所定の総割当の少なくとも1つを所有するノードを含む、投票結果取得モジュール101と、持分投票結果に基づいて、持分投票後に各割当保有ノードによって所有される割当数を決定するように構成される、投票結果決定モジュール102と、持分投票後に各割当保有ノードによって所有される割当数に基づいてコンセンサスノード選択結果を決定するように構成される、コンセンサスノード決定モジュール103とを含むことができる。
【００４４】
総割当数は、実ノード数、実装環境等に基づいて決定できる。一般に、決定した総割当数は一意であり、不変のままである。総割当は、サービス規則に基づいて対応するノードに配分できる。具体的な配分規則は、ノードサイズ、トラフィック量、重要性等に基づいて決定できる。
【００４５】
PBFTでコンセンサスノードが選択される必要があるとき、割当を所有するノードは期待ノードに投票することを選べ、そして投票結果はブロックチェーンネットワーク全体にブロードキャストできる。投票後に、ノードは、同じ持分投票結果を受信し、次いで各ノードによって所有される割当数に基づいてコンセンサスノード選択結果を決定できる。本明細書における本装置の実装解決策に基づき、持分投票後の割当比率に基づいてコンセンサスノードが迅速に選択できる。そのため、コンセンサスプロセスでの消費が低減され、コンセンサス処理ステップが単純化され、コンセンサスノード選択効率が改善され、そして選択結果はより信頼できる。
【００４６】
本明細書に提供される本装置の別の実装例において、割当保有ノードに、持分投票後に同数の割当を所有するノードを含む場合、コンセンサスノード決定モジュール103は、ノードルート証明書を生成する時系列に基づいて同数の割当を所有するノードからコンセンサスノードを選択する。ノードルート証明書は、ノード識別情報を証明するために使用され、かつ特定の証明書サーバにブロックチェーン上のノードによって申請される、データ情報を含む。
【００４７】
図6は、本明細書の別の実装例に係る、コンセンサスノード選択装置におけるモジュールを例示する概要構造図である。図6に図示されるように、本明細書によって提供される本装置の一実装例において、持分投票結果は、割当保有ノードが、割当保有ノードの秘密鍵を使用することによって、期待ノードへの持分投票後に生成される投票結果上の署名に署名した後に生成される持分投票結果を含むことができる。
【００４８】
それに応じて、本装置は、持分投票結果が得られた後に割当保有ノードの対応する公開鍵を使用することによって持分投票結果を検証するように構成される、検証モジュール104をさらに含むことができる。
【００４９】
一実装例において、割当を所有するノードは、どのノードに投票するかを独立して選べる。期待ノードを選択するための根拠は、ノードサービス性能安定性、ノードサービス容量、オペレータによって決定される選択ポリシー等を含むことができるが、これらに限定されない。本明細書に提供される本装置の別の実装例において、選択される期待ノードは、割当を投票するための所定のコンセンサスノード選択条件に基づいて割当保有ノードによって選択される少なくとも1つのノードを含むことができる。
【００５０】
一実装例において、割当保有ノードの総票数は、割当保有ノードによって所有される投票割当数だけと設定できる。投票割当は、コンセンサスノード選択中に割当保有ノードに他の割当保有ノードが投票する割当を含まない。したがって、本装置の別の実装例において、割当が投票を通じてブロックチェーン上のノード間で有効に移動される回数は、単一のコンセンサスノード選択プロセスにおいて1に設定される。
【００５１】
この実装例において、コンセンサスノード選択のための単一の投票プロセスでは、各割当は、割当保有ノードによって一度だけ投票するために使用でき、そして割当保有ノードは、他の割当保有ノードから得られた票を移動できない。
【００５２】
前述の実装例における装置は単一のノードに実装でき、そして一般ノードまたは割当保有ノードを含むことができる。投票結果がブロックチェーンネットワークにおける全てのノードにブロードキャストされ、そして全てのノードが同じ持分投票結果を受信するので、各ノードが持分投票結果に基づいてコンセンサスノード選択結果を確認できる。
【００５３】
本明細書における前述の装置の説明が関連方法実装例の説明に基づく別の実装例をさらに含むことができることに留意する価値がある。本明細書における実装例は全て漸進的に記載される。実装例における同じまたは類似の部分については相互参照が行える。各実装例は他の実装例との差異に重点を置いている。モジュール装置実装例は方法実装例と類似しており、したがって簡潔に記載される。関連部分については、方法実装例における部分説明を参照されたい。
【００５４】
本明細書の具体的な実装例が上記されている。他の実装例は添付の請求項の範囲内に納まる。一部の状況では、請求項に記録される動作またはステップは実装例における順と異なる順に行うことができ、それでも所望の結果を達成できる。加えて、添付図面に記載されるプロセスは、所望の結果を達成するために、必ずしも図示された順または順序を必要とするわけではない。一部の実装例において、マルチタスク処理および並列処理も実行可能または場合により有利である。
【００５５】
本明細書は、コンセンサスノード選択装置を提供する。割当保有ノードが持分投票を行い、そして投票結果において割当保有ノードによって所有される割当数に基づいてコンセンサスに参加するようにノードを選択できる。本方法は実装するのが簡単である。選択結果は実在して有効であり、そして投票結果はネットワーク全体に開示されて他のノードによって承認できる。本明細書における実装解決策に基づき、持分投票後の割当比率に基づいてコンセンサスノードが迅速に選択できる。そのため、コンセンサスプロセスでの消費が低減され、コンセンサス処理ステップが単純化され、コンセンサスノード選択効率が改善され、そして選択結果はより信頼できる。
【００５６】
本明細書に提供されるコンセンサスノード選択方法は、コンピュータにおいて対応するプログラム命令を実行するプロセッサによって実装できる。例えば、それは、WindowsオペレーティングシステムにおいてC++言語を使用することによってPC端において実装でき、またはLinux(登録商標)、Android、iOSなどの別のシステムにおいて対応するプログラム設計言語を使用することによって実装でき、または量子コンピュータの処理論理に基づいて実装できる。本明細書におけるコンセンサスノード選択のための装置の一実装例において、本装置は、プロセッサおよびプロセッサ実行可能命令を記憶するように構成されるメモリを含むことができる。プロセッサは、命令を実行して、少なくとも1つの期待ノードへの割当保有ノードの持分投票結果を取得し、ここで割当保有ノードは、所定の総割当の少なくとも1つを所有するノードを含んでおり、持分投票結果に基づいて、持分投票後に各割当保有ノードによって所有される割当数を決定し、そして持分投票後に各割当保有ノードによって所有される割当数に基づいてコンセンサスノード選択結果を決定する。
【００５７】
本明細書における前述の装置の説明が関連方法実装例の説明に基づく別の実装例をさらに含むことができることに留意する価値がある。本明細書における実装例は全て漸進的に記載される。実装例における同じまたは類似の部分については相互参照が行える。各実装例は他の実装例との差異に重点を置いている。ハードウェア+プログラム実装例は方法実装例と類似しており、したがって簡潔に記載される。関連部分については、方法実装例における部分説明を参照されたい。
【００５８】
前述の装置または方法は、ブロックチェーンサービスシステムのサーバがブロックチェーンネットワークにおいてコンセンサスノードを選択または確認するために使用できる。コンセンサスノード選択のための処理サーバは、持分投票後の割当比率に基づいてコンセンサスノードを迅速に選択できる。そのため、コンセンサスプロセスでの消費が低減され、コンセンサス処理ステップが単純化され、コンセンサスノード選択効率が改善され、そして選択結果はより信頼できる。サーバは、本明細書における1つまたは複数の方法実装例または装置実装例においてシステム(分散システムを含む)、ソフトウェア(アプリケーション)、モジュール、コンポーネント、サーバ、クライアント、量子コンピュータ等を使用し、かつ必要な実装ハードウェアを含む最終装置を含むことができる。
【００５９】
図7は、本明細書の一実装例に係る、サーバを例示する概要構造図である。サーバは、少なくとも1つのプロセッサおよびプロセッサ実行可能命令を記憶するように構成されるメモリを含むことができる。プロセッサは、命令を実行して、少なくとも1つの期待ノードへの割当保有ノードの持分投票結果を取得し、ここで割当保有ノードは、所定の総割当の少なくとも1つを所有するノードを含んでおり、持分投票結果に基づいて、持分投票後に各割当保有ノードによって所有される割当数を決定し、そして持分投票後に各割当保有ノードによって所有される割当数に基づいてコンセンサスノード選択結果を決定する。
【００６０】
ハードウェア+プログラム装置またはサーバが方法実装例における説明に基づく別の実装例をさらに含むことができることに留意する価値がある。具体的な実装例については、方法実装例における対応する説明を参照できる。詳細は再度ここで記載されることはない。
【００６１】
本明細書の1つまたは複数の実装例に提供されるコンセンサスノード選択方法および装置ならびにサーバにおいて、割当保有ノードが持分投票を行い、そして投票結果において割当保有ノードによって所有される割当数に基づいてコンセンサスに参加するようにノードを選択できる。本方法は実装するのが簡単である。選択結果は実在して有効であり、そして投票結果はネットワーク全体に開示されて他のノードによって承認できる。本明細書における実装解決策に基づき、持分投票後の割当比率に基づいてコンセンサスノードが迅速に選択できる。そのため、コンセンサスプロセスでの消費が低減され、コンセンサス処理ステップが単純化され、コンセンサスノード選択効率が改善され、そして選択結果はより信頼できる。
【００６２】
本明細書の内容が、割当保有ノードによって期待ノードを選択するための根拠のためのデータ設定、取得、対話、計算、決定等についての説明、割当が投票中に有効に移動される回数の制限、秘密鍵を使用して投票結果を暗号化し、そして公開鍵を使用してそれを復号すること、投票後にノードによって所有される割当数に基づいてコンセンサスノードを決定すること等を提供するが、本明細書は必ずしも、業界通信規格、標準ブロックチェーンデータ記憶、ならびにコンピュータ処理および記憶規則に準拠する事例、または本明細書の1つまたは複数の実装例に記載される事例に限定されるわけではない。一部の業界標準に基づいて、または自己定義の方法を使用することによって、または実装例に記載される実装に基づいて僅かな変更を行った後に得られる実装解決策も、前述の実装例と同じ、同等もしくは類似である、または変形後に予測できる実装効果を達成できる。そのような変更または変形後に得られるデータ取得、記憶、決定および処理方法を使用する一実装例は、それでも本明細書の1つまたは複数の任意の実装解決策の範囲内である。
【００６３】
1990年代、技術の改良はハードウェア改良(例えばダイオード、トランジスタおよびスイッチなどの回路構造の改良)とソフトウェア改良(方法手順の改良)との間で明確に区分できる。しかしながら、技術の発展につれて、多くの方法手順の改良がハードウェア回路構造の直接的な改良と考えることができる。設計者はほぼ全員、改良された方法手順をハードウェア回路にプログラムして、対応するハードウェア回路構造を得る。したがって、方法手順の改良がハードウェアエンティティモジュールを使用することによって実現できないとは言えない。例えば、プログラマブル論理デバイス(PLD)(例えば、フィールドプログラマブルゲートアレイ(FPGA))は一種の集積回路である。プログラマブル論理デバイスの論理機能は、ユーザによって実行されるコンポーネントプログラミングによって決定される。設計者は、チップメーカーに専用集積回路チップを設計および生産するよう依頼することなく、プログラミングを行ってデジタルシステムを単一のPLDへ「集積」する。加えて、集積回路チップを手動で生産する代わりに、プログラミングは大部分は「論理コンパイラ」ソフトウェアによって実装され、これはプログラム開発中に使用されるソフトウェアコンパイラに類似している。コンパイル前の原コードは特定のプログラミング言語でも書かれ、これはハードウェア記述言語(HDL)と称される。高級ブール式言語(ABEL)、Alteraハードウェア記述言語(AHDL)、Confluence、コーネル大学プログラミング言語(CUPL)、HDCal、Java(登録商標)ハードウェア記述言語(JHDL)、Lava、Lola、MyHDL、PALASMおよびRubyハードウェア記述言語(RHDL)など、2種類以上のHDLがある。現在、超高速集積回路ハードウェア記述言語(VHDL)およびVerilogが最も一般的に使用される。当業者は、方法手順が論理的にプログラムされ、そして前述のハードウェア記述言語を使用することによって集積回路にプログラムされる必要があるだけで、その結果、論理的方法手順を実装するハードウェア回路を簡単に得ることができることも理解するべきである。
【００６４】
コントローラは任意の適切な方式で実装できる。例えば、コントローラは、マイクロプロセッサ、プロセッサ、コンピュータ可読媒体、論理ゲート、スイッチ、特定用途向け集積回路(ASIC)、プログラマブル論理コントローラ、またはマイクロプロセッサもしくはプロセッサによって実行できるコンピュータ可読プログラムコード(ソフトウェアもしくはファームウェアなど)を記憶した組込みマイクロプロセッサであることができる。コントローラの例は、以下のマイクロコントローラを含むが、これらに限定されない：ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20、およびSilicon Labs C8051F320。メモリコントローラはメモリの制御論理の一部としても実装できる。当業者は、コントローラがコンピュータ可読プログラムコードのみの方式で実装でき、そして方法におけるステップが論理的にプログラムされて、コントローラが論理ゲート、スイッチ、特定用途向け集積回路、プログラマブル論理コントローラ、組込みマイクロコントローラ等の形態で同じ機能をさらに実装することを可能にできることも知っている。したがって、コントローラはハードウェア部品と考えることができ、そしてコントローラに含まれて様々な機能を実装するように構成される装置もハードウェア部品内部の構造と考えることができる。代替的に、様々な機能を実装するように構成される装置は、本方法を実装するためのソフトウェアモジュールともハードウェア部品内部の構造とも考えることができる。
【００６５】
上記の実装例に記載されるシステム、装置、モジュールまたはユニットは、コンピュータチップもしくはエンティティによって実装できる、または特定の機能を持つ製品によって実装できる。典型的な実装デバイスがコンピュータである。コンピュータは、例えば、パーソナルコンピュータ、ラップトップコンピュータ、車内ヒューマンマシン対話デバイス、携帯電話、カメラ付き電話、スマートフォン、携帯情報端末、メディアプレーヤ、ナビゲーションデバイス、電子メールデバイス、ゲーム機、タブレットコンピュータ、ウェアラブルデバイス、またはこれらのデバイスの任意の組合せであることができる。
【００６６】
本明細書が実装例またはフローチャートに本方法の動作ステップを提供するが、従来のまたは非創造的な手段に基づいて、より多くのまたはより少ない動作ステップが含まれ得る。実装例に挙げられるステップの順序は単に複数のステップ実行順序の1つであり、一意の実行順序を表すものではない。実際には、装置または最終製品がステップを実行するとき、実行は、添付図面に図示される実装例もしくは方法に図示される順序で行う、または(例えば、並列処理の環境で、マルチスレッド処理環境で、および分散データ処理環境でさえ)並列に行うことができる。用語「備える」、「含む」またはそれらの任意の他の変形は非排他的包含に及ぶと意図され、その結果、一覧の要素を含むプロセス、方法、商品またはデバイスがそれらの要素を含むだけでなく、明記されない他の要素も含む、またはそのようなプロセス、方法、商品もしくはデバイスに固有の要素をさらに含む。更なる制約がない場合、要素を含むプロセス、方法、製品またはデバイスに別の同じまたは同等の要素があることも可能である。
【００６７】
説明を容易にするために、上記の装置は、機能を様々なモジュールへ分割することによって記載される。もちろん、本明細書を実装するとき、各モジュールの機能は1つもしくは複数のソフトウェアおよび/もしくはハードウェアで実装できる、または同じ機能を実装するモジュールが複数のサブモジュールもしくはサブユニットの組合せとして実装できる。記載される装置実装例は単に一例である。例えば、ユニット分割は単に論理機能分割であり、実際の実装例においては他の分割であることができる。例えば、複数のユニットもしくはコンポーネントが別のシステムへ合併もしくは統合できる、または一部の特徴が無視できるもしくは実行できない。加えて、表示または検討された相互結合または直接結合または通信接続は、いくつかのインタフェースを使用することによって実装できる。装置またはユニット間の間接結合または通信接続は、電子、機械または他の形態で実装できる。
【００６８】
当業者は、コントローラがコンピュータ可読プログラムコードのみの方式で実装でき、そして方法におけるステップが論理的にプログラムされて、コントローラが論理ゲート、スイッチ、特定用途向け集積回路、プログラマブル論理コントローラ、組込みマイクロコントローラ等の形態で同じ機能をさらに実装することを可能にできることも知っている。したがって、コントローラはハードウェア部品と考えることができ、そしてコントローラに含まれて様々な機能を実装するように構成される装置もハードウェア部品内部の構造と考えることができる。代替的に、様々な機能を実装するように構成される装置は、本方法を実装するためのソフトウェアモジュールともハードウェア部品内部の構造とも考えることができる。
【００６９】
本開示は、本開示の実装例に係る方法、デバイス(システム)およびコンピュータプログラム製品のフローチャートおよび/またはブロック図を参照しつつ記載される。フローチャートおよび/またはブロック図における各プロセスおよび/またはブロックならびにフローチャートおよび/またはブロック図におけるプロセスおよび/またはブロックの組合せを実装するためにコンピュータプログラム命令が使用できることが理解されるべきである。これらのコンピュータプログラム命令は、汎用コンピュータ、専用コンピュータ、組込みプロセッサ、または任意の他のプログラム可能なデータ処理デバイスのプロセッサに提供されてマシンを生成でき、その結果、コンピュータまたは任意の他のプログラム可能なデータ処理デバイスのプロセッサによって実行される命令は、フローチャートにおける1つもしくは複数の手順におけるおよび/またはブロック図における1つもしくは複数のブロックにおける特定の機能を実装するための装置を生成する。
【００７０】
これらのコンピュータプログラム命令は、コンピュータまたは任意の他のプログラム可能なデータ処理デバイスに特定の方式で動くように命令できるコンピュータ可読メモリに記憶でき、その結果、コンピュータ可読メモリに記憶された命令は、命令装置を含むアーチファクトを生成できる。命令装置は、フローチャートにおける1つもしくは複数の手順におけるおよび/またはブロック図における1つもしくは複数のブロックにおける特定の機能を実装する。
【００７１】
これらのコンピュータプログラム命令は、コンピュータまたは別のプログラム可能なデータ処理デバイスへロードでき、その結果、コンピュータまたは別のプログラム可能なデバイス上で一連の動作およびステップが行われて、それによってコンピュータ実装処理を生成する。したがって、コンピュータまたは別のプログラム可能なデバイス上で実行される命令は、フローチャートにおける1つもしくは複数の手順におけるおよび/またはブロック図における1つもしくは複数のブロックにおける特定の機能を実装するためのステップを提供する。
【００７２】
典型的な構成では、コンピューティングデバイスは、1つまたは複数のプロセッサ(CPU)、入出力インタフェース、ネットワークインタフェースおよびメモリを含む。
【００７３】
メモリは、非持続性メモリ、ランダムアクセスメモリ(RAM)、不揮発性メモリ、および/またはコンピュータ可読媒体である別の形態、例えば、リードオンリメモリ(ROM)もしくはフラッシュメモリ(フラッシュメモリ)を含むことができる。メモリはコンピュータ可読媒体の一例である。
【００７４】
コンピュータ可読媒体は、任意の方法または技術を使用することによって情報記憶を実装できる持続性、非持続性、可動および不動媒体を含む。情報は、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータであることができる。コンピュータ記憶媒体の例は、相変化メモリ(PRAM)、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)、別の種類のランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、電気的消去可能プログラマブルリードオンリメモリ(EEPROM)、フラッシュメモリもしくは別のメモリ技術、コンパクトディスクリードオンリメモリ(CD-ROM)、デジタル多用途ディスク(DVD)もしくは他の光記憶装置、カセット磁気テープ、テープおよびディスク記憶装置もしくは別の磁気記憶デバイス、またはコンピューティングデバイスがアクセスできる情報を記憶するように構成できる任意の他の非伝送媒体を含むが、これらに限定されない。本明細書に定義されるように、コンピュータ可読媒体は、変調データ信号および搬送波などの一過性コンピュータ可読媒体(一過性媒体)を含まない。
【００７５】
当業者は、本明細書の実装例が方法、システムまたはコンピュータプログラム製品として提供できることを理解するべきである。したがって、本明細書は、ハードウェアのみの実装、ソフトウェアのみの実装、またはソフトウェアおよびハードウェアの組合せでの実装の形態を使用できる。加えて、本明細書は、コンピュータ使用可能プログラムコードを含む1つまたは複数のコンピュータ使用可能記憶媒体(ディスクメモリ、CD-ROM、光メモリ等を含むがこれらに限定されない)に実装されるコンピュータプログラム製品の形態を使用できる。
【００７６】
本明細書は、プログラムユニットなどのコンピュータによって実行されるコンピュータ実行可能命令の一般的文脈で記載できる。一般に、プログラムモジュールは、特定のタスクを実行する、または特定の抽象データ型を実装するためのルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含む。本明細書は、通信ネットワークを使用することによって接続されるリモート処理デバイスによってタスクが実行される分散コンピューティング環境でも実践できる。分散コンピューティング環境では、プログラムモジュールは、記憶デバイスを含む両ローカルおよびリモートコンピュータ記憶媒体に設けることができる。
【００７７】
本明細書における実装例は全て漸進的に記載される。実装例における同じまたは類似の部分については相互参照が行える。各実装例は他の実装例との差異に重点を置いている。システム実装例は方法実装例と類似しており、したがって簡単に記載され、関連部分については、方法実装例の部分説明を参照できる。本明細書の説明では、「一実装例」、「一部の実装例」、「例」、「具体例」および「一部の例」などの参照用語は、実装例または例を参照しつつ記載される具体的な特徴、構造、材料または特徴が本明細書における少なくとも1つの実装例または例に含まれることを意味する。本明細書において、上記の用語は必ずしも同じ実装例または例に対して記載されるわけではない。加えて、記載される具体的な特徴、構造、材料または特性は、いかなる1つまたは複数の実装例または例においても適当な方式で組み合わせることができる。さらに、当業者は、本明細書に記載される異なる実施形態または例および相互に矛盾しない異なる実装例または例の特徴を組み合わせることができる。
【００７８】
上記の説明は単に本明細書の1つまたは複数の実装例であり、本明細書を限定するとは意図されない。当業者にとっては、本明細書は様々な変化および変形を有することができる。本明細書の趣旨および原則内でなされるいかなる変更、等価な置換および改善も、本明細書における請求項の範囲内に納まるものとする。
【００７９】
図8は、本開示の一実装例に係る、ブロックチェーンにおいてコンセンサスノードを選択するためのコンピュータ実装方法800の一例を例示するフローチャートである。提示を明確にするために、以降の説明は、本説明におけるその他の図との関連で方法800について全体的に記載する。しかしながら、方法800が、例えば、任意のシステム、環境、ソフトウェア、ならびにハードウェア、または適宜、システム、環境、ソフトウェアおよびハードウェアの組合せによって行うことができることが理解されるであろう。一部の実装例では、方法800の様々なステップが並列に、組み合わせて、ループして、または任意の順に実行できる。
【００８０】
802で、複数の割当保有ノードによって投票プロセスが行われて、各割当保有ノードに対する投票結果を生成する。投票プロセスは、割当保有ノードが複数の選択された期待ノードに投票することを含む。期待ノードおよび割当保有ノードは、ブロックチェーンと関連する一群のノードに属する。割当保有ノードは、少なくとも1つの割当を所有するノードである。一部の実装例において、所定の総割当のうちの割当が配分されたノードが割当保有ノードと称することができる。割当保有ノードが投票するノードは期待ノードと称することができる。期待ノードは、投票前に割当を所有する割当保有ノードであることができる、または投票前に割当を所有しないノードであることができる。一部の実装例において、割当保有ノードは、どの期待ノードに投票するかを独立して選べる。一部の実装例において、期待ノードを選択するための根拠は、ノードサービス性能安定性、ノードサービス容量、またはオペレータによって決定される選択ポリシーを含むことができるが、これらに限定されない。
【００８１】
一部の実装例において、割当所有ノードだけが投票でき、割当を所有しない一般ノードは投票できない。割当保有ノードは、それら自身にまたは他のノードに投票できる。しかしながら、割当保有ノードは、それらが別のノードから受信する割当を移動できない。すなわち、各投票プロセスの間、割当は、一回投票するために使用できるだけである。例えば、投票プロセス前に、割当保有ノード1が10割当を有し、そしてノード1がノード2に10割当のうちの6を投票する一方、別の割当保有ノード3がノード1に3割当を投票する。ノード1が現在7割当(10-6+3=7)を有するが、その他の3割当が別のノードから移動されたものであるので、投票するのに4割当を使用できるだけである。802から、方法800は804に進む。
【００８２】
804で、各割当保有ノードに対する投票結果(例えば、持分投票結果)が検証される。一部の実装例において、各割当保有ノードに対する投票結果はデジタル署名によって検証できて、投票結果が偽造されるのを防止し、かつ割当保有ノードがそれらの投票結果を否定するのを防止する。一部の実装例において、割当保有ノードは、割当保有ノードと関連する秘密鍵を使用することによって期待ノードへのその投票結果にデジタル署名できる。一部の実装例において、投票結果上の署名に署名するために非対称暗号化を使用する秘密鍵が使用できる。対応する公開鍵がブロックチェーンにおけるノードにブロードキャストできる。
【００８３】
署名付きの投票結果は、ブロードキャストされた公開鍵を使用してブロックチェーンにおける別のノードによって検証できる。検証は、投票結果および投票結果の送信側が有効(正当)であるかどうかを確認するために使用できる。持分投票結果が無効であれば、警報を発することができる、または別の所定の処理動作を行うことができる。804から、方法800は806に進む。
【００８４】
806で、投票プロセス後に一群のノードの各ノードによって所有される割当数(すなわち、持分)が投票結果に基づいて決定される。一部の実装例において、割当保有ノードが投票した後に、その割当保有ノードの投票結果はブロックチェーンにおける全てのノードにブロードキャストできる。そのため、ブロックチェーンにおける各ノードが割当保有ノードの投票結果を受信できる。
【００８５】
一部の実装例において、投票プロセス後に、割当保有ノードまたは一般ノードが、受信したブロードキャストされた投票結果に基づいて、またはそれ自身のノード上の投票結果に基づいて、各割当保有ノードによって所有される割当数を決定できる。投票プロセス後に、当初の割当保有ノードによって所有される割当数が変化しただけでなく、新規な割当保有ノードも現れた。806から、方法800は808に進む。
【００８６】
808で、割当保有ノードの各々によって所有される割当数に基づいて、割当保有ノードから複数のコンセンサスノードが選択される。割当保有ノードは、投票プロセス後に少なくとも1つの割当を所有するノードである。一部の実装例において、ブロックチェーン上のノード数が一定数を超えると、コンセンサスに参加するノードがコンセンサス効率を低下させ得る。したがって、一部のノードが、コンセンサスに参加するように、或る方法を使用することによってコンセンサスノードとしてブロックチェーン上のノードから選択される必要がある。例えば、PBFTコンセンサスアルゴリズムでは、通常、ビザンチン障害耐性およびコンセンサス性能のバランスをとるために、一部のノードが、コンセンサスに参加するように多数のノードからコンセンサスノードとして選択される必要がある。コンセンサスは、通常、ブロックチェーン上の分散ノードが同じアルゴリズムおよび同じデータ形式(または同じ処理プロトコル)を使用してデータを生成および更新できることを示し、そしてこのプロセスは異なる言語を使用して実装できる。
【００８７】
本実装例において、全ての割当保有ノードが投票した後に、ノードへの割当配分構造が通常変化する。例えば、元々割当を所有するノードが別のノードに全ての割当を投票した一方で、他のノードから票を受けていなければ、そのノードは目下割当を有しない。すなわち、持分投票前に、ノードは割当保有ノードであった。しかし、持分投票後に、ノードは割当のない一般ノードに変わった。投票前に割当のない一般ノードが持分投票後に割当を所有すれば、それは新たな割当保有ノードになる。
【００８８】
持分投票結果が得られた後、各割当保有ノードによって所有される割当数に基づいてコンセンサスノード選択結果が決定できる。選択されるコンセンサスノードの具体数および選択方法は実際の応用シナリオまたは処理要件に基づいて設定できる。例えば、最多割当を所有する5つの割当保有ノードがコンセンサスノードとして選択される。
【００８９】
一部の実装例において、ブロックチェーンに追加される前に、ブロックチェーン上のノード(両割当保有および一般ノード)は、ノードが有効であることを証明するために使用されるルート証明書を指定の証明書サーバに申請する必要がある。ノードがブロックチェーンに早く追加されるほど、ノードのルート証明書は早く生成される。
【００９０】
一部の実装例において、割当保有ノードに、投票プロセス後に同数の割当を所有するノードを含み、かつコンセンサスノード数の制限がある場合、同数の割当を所有する割当保有ノードからのコンセンサスノードの選択は、ノードルート証明書を生成する時系列に基づくことができる。ノードがブロックチェーンに早く追加されるほど、ノードの実行パラメータ、サーバ性能またはデータ処理ポリシーは安定し、最適でかつ信頼できると考えられる。したがって、本実装例において、同数の割当を所有するノードがある場合、より早く生成されたルート証明書を持つノードがコンセンサスノードとして優先的に選択できる。具体例では、ルート証明書を生成する時間を含む情報を使用することによってルート証明書が番号付けされる場合、コンセンサスノードはルート証明書の番号の昇順に選択できる。808の後、方法800は停止する。
【００９１】
本出願の実装例は、ブロックチェーンコンセンサスノード選択の技術的問題を解決できる。ブロックチェーン技術は、概して、非集中化、透明性、耐タンパ性および信用といった特性を持つ非集中型分散データベース技術である。それは、パブリックまたはプライベートピアツーピアネットワークにデータ情報を記録するために使用できる。ブロックチェーンのデータ整合性を保証するために、データは、コンセンサスアルゴリズムを使用することによってブロックチェーン上で生成および更新される。PBFTアルゴリズムは、業界において一般的に使用される分散整合性コンセンサスアルゴリズムである。PBFTでは、コンセンサスノード選択のための従来のアルゴリズムは、主にランダム選択および固定選択を含む。しかしながら、従来の手法下では、複雑なコンセンサスノード選択プロセス後に新たに選択されたコンセンサスノードを全てのノードに承認させるようにアルゴリズムを設計することは困難である。その上、固定コンセンサスノード選択は実装の点でランダム選択より単純であるが、この方法は、障害が発生すると、またはコンセンサスノードが何らかの理由で更新されると困難になる。必要とされるのは、従来の方法のこれらの問題を回避する技術であり、実装および維持するのが簡単で、非常に効率的で、かつ信頼できるPBFTコンセンサスノード選択解決策を提供することである。
【００９２】
本出願の実装例は、ブロックチェーンにおけるコンセンサスノード選択を改善するための方法および装置を説明する。コンセンサスノード選択プロセス中に、割当保有ノードが期待ノードに投票して投票結果を生成できる。投票結果は、秘密鍵を使用して結果にデジタル署名することによって割当保有ノードによって検証でき、そして対応する公開鍵はブロックチェーンにおける全てのノードにブロードキャストされることになる。このように、全てのノードが投票結果を受信して、同時に結果を承認でき、結果として、ブロックチェーン内のノードが新たに選択されたコンセンサスノードを承認する、より単純かつ迅速な方法となる。その上、署名入デジタル署名のため、投票結果は偽造できず、または割当保有ノードによって否定できず、データ安全性を改善する。コンセンサスノードは、各ノードによって所有される割当数に基づいて選択でき、そして同数の割当を有するノードがある場合、選択は時系列に基づくことができる。一般に、ノードがブロックチェーンに早く追加されるほど、ノードの実行パラメータ、サーバ性能またはデータ処理ポリシーは安定し、最適でかつ信頼できる。したがって、ブロックチェーン内でより早い時系列に設けられるコンセンサスノードを選択することが、結果として、ブロックチェーン意思決定プロセスに参加するより安定しかつ信頼できるノードとなることができる。
【００９３】
本方法は実装するのも簡単である。投票結果はネットワーク全体に開示されて他のノードによって承認できる。記載される解決策に基づき、投票後の割当比率に基づいてコンセンサスノードが迅速に選択できる。そのため、コンセンサスプロセスでの消費が低減され、コンセンサス処理ステップが単純化され、コンセンサスノード選択効率が改善され、そして選択結果はより信頼できる。
【００９４】
本明細書に記載される実施形態および動作は、デジタル電子回路網で、または本明細書に開示される構造を含め、コンピュータソフトウェア、ファームウェアもしくはハードウェアで、またはそれらの1つもしくは複数の組合せで実装できる。同動作は、1つまたは複数のコンピュータ可読記憶デバイスに記憶されたまたは他の供給源から受信されたデータに対してデータ処理装置によって行われる動作として実装できる。データ処理装置、コンピュータまたはコンピューティングデバイスは、例としてプログラマブルプロセッサ、コンピュータ、システムオンチップもしくはその複数、または上記の組合せを含め、データを処理するための装置、デバイスおよび機械を包含してよい。装置は、専用論理回路網、例えば、中央処理装置(CPU)、フィールドプログラマブルゲートアレイ(FPGA)または特定用途向け集積回路(ASIC)を含むことができる。装置は、当該コンピュータプログラムのための実行環境を作成するコード、例えば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム(例えば、一オペレーティングシステムもしくはオペレーティングシステムの組合せ)、クロスプラットフォーム実行時環境、仮想マシン、またはそれらの1つもしくは複数の組合せを構成するコードも含むことができる。装置および実行環境は、ウェブサービス、分散コンピューティングおよびグリッドコンピューティングインフラストラクチャなどの様々な異なるコンピューティングモデルインフラストラクチャを実現できる。
【００９５】
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、ソフトウェアモジュール、ソフトウェアユニット、スクリプトまたはコードとしても知られている)は、コンパイラ型またはインタープリタ型言語、宣言型または手続き型言語を含め、任意の形式のプログラミング言語で書くことができ、そしてそれは、スタンドアロンプログラムとして、またはモジュール、コンポーネント、サブルーチン、オブジェクトもしくはコンピューティング環境での使用に適する他のユニットとしてを含め、任意の形式に展開できる。プログラムは、他のプログラムもしくはデータ(例えば、マークアップ言語文書に記憶される1つもしくは複数のスクリプト)を保持するファイルの一部分に、当該プログラムに専用の単一のファイルに、または複数の連係ファイル(例えば、1つもしくは複数のモジュール、サブプログラムもしくはコードの一部分を記憶するファイル)に記憶できる。コンピュータプログラムは、1つのコンピュータ上で、または1つのサイトに設けられるもしくは複数のサイトにわたって分散されて通信ネットワークによって相互接続される複数のコンピュータ上で実行できる。
【００９６】
コンピュータプログラムの実行のためのプロセッサは、例として、汎用および専用の両マイクロプロセッサ、ならびに任意の種類のデジタルコンピュータの任意の1つまたは複数のプロセッサを含む。一般に、プロセッサは、リードオンリメモリまたはランダムアクセスメモリまたは両方から命令およびデータを受けることになる。コンピュータの必須要素は、命令に従って動作を行うためのプロセッサ、ならびに命令およびデータを記憶するための1つまたは複数のメモリデバイスである。一般に、コンピュータはさらに、データを記憶するための1つまたは複数の大容量記憶デバイスを含む、または作動的に結合されて、それからデータを受けるもしくはそれにデータを転送するもしくは両方行うことになる。コンピュータは、別のデバイス、例えば、移動デバイス、携帯情報端末(PDA)、ゲーム機、全地球測位システム(GPS)受信器、またはポータブル記憶デバイスに埋め込みできる。コンピュータプログラム命令およびデータを記憶するのに適するデバイスは、例として、半導体メモリデバイス、磁気ディスクおよび光磁気ディスクを含め、不揮発性メモリ媒体およびメモリデバイスを含む。プロセッサおよびメモリは、専用論理回路網によって補足、またはそれに組み込みできる。
【００９７】
移動デバイスは、ハンドセット、ユーザ機器(UE)、移動電話(例えば、スマートフォン)、タブレット、ウェアラブルデバイス(例えば、スマートウォッチおよびスマートグラス)、人体内の埋込みデバイス(例えば、バイオセンサ、人工内耳)、または他の種類の移動デバイスを含むことができる。移動デバイスは、様々な通信ネットワーク(下記される)にワイヤレスで(例えば、無線周波数(RF)信号を使用して)通信できる。移動デバイスは、移動デバイスの現在の環境の特性を決定するためのセンサを含むことができる。センサは、カメラ、マイクロホン、近接センサ、GPSセンサ、運動センサ、加速度計、周辺光センサ、水分センサ、ジャイロスコープ、コンパス、気圧計、指紋センサ、顔認識システム、RFセンサ(例えば、Wi-Fiおよびセル無線)、温度センサ、または他の種類のセンサを含むことができる。例えば、カメラは、可動または固定レンズ、フラッシュ、イメージセンサおよび画像プロセッサを持つ前方または後方カメラを含むことができる。カメラは、顔および/または虹彩認識のための詳細を取り込むことが可能なメガピクセルカメラであることができる。カメラは、データプロセッサおよびメモリに記憶されるまたは遠隔でアクセスされる認証情報と共に、顔認識システムを形成できる。顔認識システムまたは1つもしくは複数のセンサ、例えば、マイクロホン、運動センサ、加速度計、GPSセンサもしくはRFセンサはユーザ認証のために使用可能できる。
【００９８】
ユーザとの対話を提供するために、実施形態は、ディスプレイデバイスおよび入力デバイス、例えば、ユーザに情報を表示するための液晶ディスプレイ(LCD)または有機発光ダイオード(OLED)/仮想現実(VR)/拡張現実(AR)ディスプレイ、ならびにユーザがコンピュータに入力を提供できるタッチスクリーン、キーボードおよびポインティングデバイスを有するコンピュータに実装できる。ユーザとの対話を提供するために他の種類のデバイスも使用でき、例えば、ユーザに提供されるフィードバックは任意の形態の感覚フィードバック、例えば、視覚フィードバック、聴覚フィードバックまたは触覚フィードバックであることができ、そしてユーザからの入力は、音響、音声または触覚入力を含め、任意の形態で受け取れる。加えて、コンピュータは、ユーザによって使用されるデバイスに文書を送信し、それから文書を受信することによって、例えば、ユーザのクライアントデバイス上のウェブブラウザから受信される要求に応じてウェブブラウザにウェブページを送信することによって、ユーザと対話できる。
【００９９】
実施形態は、ワイヤラインまたはワイヤレスデジタルデータ通信の任意の形態または媒体(またはその組合せ)、例えば、通信ネットワークによって相互接続されるコンピューティングデバイスを使用して実装できる。相互接続されるデバイスの例は、典型的に通信ネットワークを通じて対話する、一般に互いから離れたクライアントおよびサーバである。クライアント、例えば、移動デバイスは、サーバと、またはサーバを通じて取引自体を実施、例えば、購入、売却、支払、譲渡、送付もしくは貸付取引を行う、またはそれを許可できる。そのような取引は、動作および応答が時間的に近いように、例えば、動作および応答が実質的に同時に発生していると個人が認める、個人の動作に続く応答に対する時間差が1ミリ秒(ms)未満もしくは1秒(s)未満である、またはシステムの処理限界を考慮に入れて応答は意図的な遅延がないように、リアルタイムであってよい。
【０１００】
通信ネットワークの例は、ローカルエリアネットワーク(LAN)、無線アクセスネットワーク(RAN)、メトロポリタンエリアネットワーク(MAN)およびワイドエリアネットワーク(WAN)を含む。通信ネットワークは、インターネットの全てもしくは一部分、別の通信ネットワーク、または通信ネットワークの組合せを含むことができる。情報は、ロングタームエボリューション(LTE)、5G、IEEE802、インターネットプロトコル(IP)、または他のプロトコルもしくはプロトコルの組合せを含め、様々なプロトコルおよび標準に従って通信ネットワーク上で伝送できる。通信ネットワークは、接続されたコンピューティングデバイス間で音声、ビデオ、生体もしくは認証データ、または他の情報を伝送できる。
【０１０１】
別々の実装例として記載される特徴が、組み合せて単一の実装例で実装されてよい一方、単一の実装例として記載される特徴が、別々に複数の実装例で、または任意の適切な部分組合せで実装されてよい。特定の順に記載および特許請求される動作が、その特定の順も、全ての例示される動作が行われなければならない(一部の動作は任意選択であり得る)ことも必要とすると理解されるべきでない。適宜、マルチタスキングまたは並列処理(またはマルチタスキングおよび並列処理の組合せ)を行うことができる。
【符号の説明】
【０１０２】
101  投票結果取得モジュール
102  投票結果決定モジュール
103  コンセンサスノード決定モジュール
104  検証モジュール
【図１】
0006889275.tif 000002
【図２】
0006889275.tif 000003
【図３】
0006889275.tif 000004
【図４】
0006889275.tif 000005
【図５】
0006889275.tif 000006
【図６】
0006889275.tif 000007
【図７】
0006889275.tif 000008
【図８】
0006889275.tif 000009