(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-10-08
(54)【発明の名称】ブロックチェーンのコンセンサス方法
(51)【国際特許分類】
H04L 9/32 20060101AFI20241001BHJP
【FI】
H04L9/32 200Z
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024513320
(86)(22)【出願日】2021-08-26
(85)【翻訳文提出日】2024-02-22
(86)【国際出願番号】 EP2021073692
(87)【国際公開番号】W WO2023025394
(87)【国際公開日】2023-03-02
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】524069938
【氏名又は名称】テラドクサ ソシエテ パ アクシオンス シンプリフィエ
(74)【代理人】
【識別番号】110002848
【氏名又は名称】弁理士法人NIP&SBPJ国際特許事務所
(72)【発明者】
【氏名】ペセンティ,エマニュエル
(72)【発明者】
【氏名】ジャクジュド,アブデスラム
(57)【要約】
複数のノードを有する分散ネットワークを含むブロックチェーンにおけるコンセンサスのための方法であって、複数のノードは、1つの管理ノード「AN」と、1つの選出ノード「EN」と、複数のレギュラーノード「RN」とを含み、AN、EN、及びRNの各々は、仮想マシン「VM」と、VM上で実行されるチェッカサービスと、チェッカサービス上で読み取り及び/又は実行権を有する他のノードに利用可能なチェッカアカウントとを有し、ブロックチェーンにトランザクションを提供するプロバイダノード「PN」を更に含み、本方法は、(i)ANによって、複数のRNの中からENを選出する工程と、(ii)ENによって、PNからトランザクションを受信する工程と、(iii)各受信されたトランザクションについて、ENのチェッカアカウントを通じてENのチェッカサービスの実行する工程と、(iv)ENによって、チェックされたトランザクションを含むブロックを生成する工程と、(v)ENによって、生成されたブロックを複数のRNに送信する工程と、(vi)生成されたブロックを認証するために、生成されたブロックのチェッカアカウントを通じてENのチェッカサービスの実行する工程とを含む。
【特許請求の範囲】
【請求項1】
複数のノードを有する分散ネットワークを含むブロックチェーンにおけるコンセンサスのための方法であって、
前記複数のノードは、1つの管理ノード「AN」と、1つの選出ノード「EN」と、複数のレギュラーノード「RN」とを含み、前記AN、前記EN、前記RNの各々が、仮想マシン「VM」、前記VM上で実行されるチェッカサービスと、前記チェッカサービス上で読み取り及び/又は実行権を有する他のノードに利用可能なチェッカアカウントとを有し、
前記ブロックチェーンにトランザクションを提供するプロバイダノード「PN」を更に含み、
前記方法が、
前記ANによって、前記複数のRNの中から前記ENを選出する工程と、
前記ENによって、PNからトランザクションを受信する工程と、
各受信されたトランザクションについて、前記ENの前記チェッカサービスを前記ENのチェッカアカウントを通じて実行する工程と、
前記ENによって、前記チェックされたトランザクションを含むブロックを生成する工程と、
前記ENによって、前記生成されたブロックを前記複数のRNに送信する工程と、
前記生成されたブロックを認証するために、前記ENの前記チェッカサービスを、前記生成されたブロックについて、前記ENのチェッカアカウントを通じて実行する工程とを含む、コンセンサスのための方法。
【請求項2】
各受信されたトランザクションに対する前記チェッカサービスの前記実行する工程は、前記複数のRNのうちの少なくとも1つのRN又は任意の外部ノード「ExN」によって実行され、前記生成されたブロックに対する前記チェッカサービスの前記実行する工程は、前記複数のRNによって実行される、請求項1に記載のブロックチェーンにおけるコンセンサスのための方法。
【請求項3】
方法であって、各前記ANノード、前記ENノード、前記RNノードは、前記チェッカサービス及び少なくとも1つの工程チェックサービスを含む所定のサービスを更に有し、すべての所定のサービスは前記VM上で実行され、前記チェッカサービスを実行する工程は、
前記ENの前記工程チェッカサービスを実行して、前記ENのVM上で実行中のサービスのリストを取り出す工程と、
前記実行中のサービスのリストと前記所定のサービスのリストとが一致したときに、前記実行中のサービスを検証する工程とを含む、請求項1又は2に記載のコンセンサスのための方法。
【請求項4】
方法であって、各前記ANノード、前記ENノード、前記RNノードは、ハッシュサービスを更に含む前記所定のサービスの1つ以上のローカル実行可能ファイルを有し、前記チェッカサービスを実行する工程は、
信頼できるブロックチェーンリポジトリに記憶された前記所定のサービスの信頼できるソースコードをダウンロードする工程と、
信頼できるソースコードをコンパイルして、1つ以上の信頼できる実行可能ファイルを取得する工程と、
前記ハッシュサービスによって、前記1つ以上の信頼できる実行可能ファイルをハッシュして、少なくとも1つの信頼できるハッシュ値を取得する工程と、
前記ハッシュサービスによって、前記1つ以上のローカル実行可能ファイルをハッシュして、少なくとも1つのローカルハッシュ値を取得する工程と、
前記1つ以上のローカルハッシュ値と前記1つ以上の信頼できるハッシュ値とが一致するとき、前記1つ以上のローカル実行可能ファイルを検証する工程と、又は
前記1つ以上のローカルハッシュ値と前記1つ以上の信頼できるハッシュ値とが一致しないとき、前記ANに、危険にさらされたEN(「ENC」)信号を送信する工程とを更に含む、請求項3に記載のコンセンサスのための方法。
【請求項5】
方法であって、前記所定のサービスは、エクストラクタサービスを更に含み、前記ANがENC信号を受信するとき、前記実行する工程は、
前記ANによって、前記ENC信号を確認するために前記ENの前記チェッカサービスを使用する工程と、確認されたENC信号の場合、
前記ANによって、前記危険にさらされたENの前記エクストラクタサービスを使用して、チェックされたトランザクションを取り出す工程と、
危険にさらされたENを分散ネットワークから切断する工程と、
新しい選出する工程を開始する工程とを更に含む、請求項4に記載のコンセンサスのための方法。
【請求項6】
方法であって、前記ブロックを生成する工程は、所定の条件の検出時に実行され、前記所定の条件は、
所定数のトランザクションがチェックされたとき、又は
前記選出する工程から所定の時間間隔が経過したときである、請求項1から5のいずれか一項に記載のコンセンサスのための方法。
【請求項7】
前記生成されたブロックの認証の後に、前記方法は、
新しい選出する工程にループする前に、前記ENを前記新しいANとして指定する工程を更に含む、請求項1から6のいずれか一項に記載のコンセンサスのための方法。
【請求項8】
前記チェッカサービスを実行する工程は、規則的な時間間隔で更に実行される、請求項1から7のいずれか一項に記載のブロックチェーンにおけるコンセンサスのための方法。
【請求項9】
前記ENが破損していないことをチェックするために、前記チェッカサービスを実行する工程が、前記ANによる前記選出する工程の直後に更に実行される、請求項1から8のいずれか一項に記載のブロックチェーンにおけるコンセンサスのための方法。
【請求項10】
前記ENが前記分散ネットワークにおいてもはや利用可能でないときはいつでも、前記ANが新しい選出する工程を処理する、請求項1から9のいずれか一項に記載のブロックチェーンにおけるコンセンサスのための方法。
【請求項11】
方法であって、前記選出する工程は、
前記ANによって、前記複数のRNから選出情報を要求する工程と、
前記ANによって、前記要求された選出情報に基づいて、前記複数のRNの中から前記ENを選出する工程とを含む、請求項1から10のいずれか一項に記載のコンセンサスのための方法。
【請求項12】
前記選出情報は、RNが既に選出された回数に対応する選出発生回数「EON」を少なくとも含む、請求項11に記載のブロックチェーンにおけるコンセンサスのための方法。
【請求項13】
前記選出する工程は、前記ENを決定するために少なくとも1つの乱数を使用する非決定論的選出アルゴリズムに基づく、請求項12に記載のブロックチェーンにおけるコンセンサスのための方法。
【請求項14】
方法であって、各前記ANノード、前記ENノード、前記RNノードは、一意の識別番号「UIN」、そのEON、及び公開/秘密鍵のセットによって識別され、前記選出する工程は、
各前記RNによって、そのUIN、そのEON、及びその公開鍵を前記ANに提供する工程と、
前記ANによって、前記RNをそれらのEONによってランク付けし、各前記RNを前記EONに応じた間隔に関連付ける工程と、
前記ANによって、前記前のANから乱数を受信する工程と、
前記ANによって、前記UIN及び前記EONの関数を計算し、前記計算された関数結果をハッシュし、前記AN秘密鍵を用いて前記ハッシュされた関数結果を暗号化し、前記暗号化された関数結果及び前記提供された乱数の関数を計算して最終的な数を得る工程と、
前記最終的な数で前記RN間隔をトラバースし、前記ENになる1つのRNだけが残るまで、遭遇する前記対応するRNを漸進的に削除する工程からなる工程とを少なくとも含む、請求項13に記載のコンセンサスのための方法。
【請求項15】
前記ブロックチェーンコンセンサスは、トランザクションと呼ばれる共有データを含む分散型台帳技術「DLT」であり、共有データは特定のIDタイプのデータであり、前記方法は、
要求に応じて、信頼できる第三者によってスマートコントラクトを介して前記特定のIDタイプデータを認証する工程を更に含む、請求項1から14のいずれか一項に記載のコンセンサスのための方法。
【請求項16】
複数のノードを有するブロックチェーン分散ネットワークであって、前記複数のノードが、
1つの管理ノード「AN」と、1つの選出ノード「EN」と、複数のレギュラーノード「RN」とを含み、前記AN、前記EN、前記RNの各々が、仮想マシン「VM」と、前記VM上で実行されるチェッカサービスと、前記チェッカサービス上で読み取り及び/又は実行権を有する他のノードに利用可能なチェッカアカウントとを有し、前記ブロックチェーン分散ネットワークにトランザクションを提供するプロバイダノード「PN」を更に含み、
請求項1から15のいずれか一項に記載のブロックチェーンコンセンサス方法が前記ブロックチェーン分散ネットワークに適用される、ブロックチェーン分散ネットワーク。
【請求項17】
プロセッサ及びメモリを備える電子デバイスであって、前記メモリは、前記所定のサービスの前記ソースコードを記憶するために使用され、前記プロセッサは、請求項1から15のいずれか一項に記載の方法を実行するために、前記メモリに記憶された前記ソースコードを呼び出す前記仮想マシンをホストするように構成される、電子デバイス。
【請求項18】
コンピュータ可読記憶媒体であって、命令が前記コンピュータ可読記憶媒体に記憶され、前記命令がコンピュータ上で実行されるときに、前記コンピュータが請求項1から15に記載の方法を実行する、コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ブロックチェーン技術の分野に関し、特にブロックチェーンコンセンサス方法に関する。
【0002】
本発明は、より詳細には、分散型台帳技術を介したアイデンティティ管理へのそのようなブロックチェーンコンセンサス方法の適用に関する。
【背景技術】
【0003】
分散型台帳技術とも呼ばれるブロックチェーン技術は、いくつかのコンピューティングデバイスが、完全な分散データベースを共同で維持するために「台帳」を保持することに参加する新興技術である。ブロックチェーン技術は、分散化、開放性、及び透明性によって特徴付けられ、また、ブロックチェーン技術では、各コンピューティングデバイスがデータベース記録に参加することができ、コンピューティングデバイス間でデータを迅速に同期させることができる。したがって、ブロックチェーン技術は、多くの分野に広く適用されている。
【0004】
「Analysis of the main consensus protocols of blockchain」は、2019年8月12日にオンラインで入手可能なShijie Zhangらの論文に示されている。この論文では、計算能力に基づくPoW(Proof of Work)及び持ち込まれた保有されたステークに基づくPoS(Proof of Stake)などの最も一般的なコンセンサスが提示されている。
【0005】
既存の各コンセンサスは、いくつかの制限を提示する。PoWは、最も多くの計算能力と、1秒当たりのトランザクションスループットとを消費し、これは、PoWのアプリケーション見込みを大きく制限する。PoSは、計算能力の消費を大幅に低減することができるが、その一方で、その検証と引き換えに計算作業を必要としないので、PoWと同じレベルのセキュリティを構造的に提供することができないという同様の欠点を有する。
【0006】
更に、PoSプロトコルは、nothing-at-stake問題に悩まされる可能性があり、この場合、検証者ノードは、そうするためのコストが最小限であり、謝ったチェーン上のブロックを検証することによって報酬を失う機会の可能性が低いので、ブロックチェーンの競合するコピーを検証する。
【0007】
本開示は、従来技術に対して状況を改善する。特に、本開示の目的は、分散ブロックに記録されたトランザクションの高いセキュリティ及び認証を保証する一方で、通常のブロックチェーンシステムが行うように、システムによって消費される高いエネルギーを有することなく、かつnothing-at-stake問題を回避して、すべてのノードが同じコンテンツを保有することを保証することである。
【発明の概要】
【0008】
本開示の第1の態様は、複数のノードを有する分散ネットワークを含むブロックチェーンにおけるコンセンサスのための方法であって、複数のノードは、1つの管理ノード「AN」と、1つの選出ノード「EN」と、複数のレギュラーノード「RN」とを含み、AN、EN、及びRNの各々は、仮想マシン「VM」と、VM上で実行されるチェッカサービスと、チェッカサービスに対する権限を読み出し及び/又は実行する他のノードに利用可能なチェッカアカウントとを有し、ブロックチェーンにトランザクションを提供するプロバイダノード「PN」を更に含み、本方法は、
ANによって、複数のRNの中からENを選出する工程と、
ENによって、PNからトランザクションを受信する工程と、
各受信されたトランザクションについて、ENのチェッカサービスをENのチェッカアカウントを通じて実行する工程と、
ENによって、チェックされたトランザクションを含むブロックを生成する工程と、
ENによって、生成されたブロックを複数のRNに送信する工程と、
生成されたブロックを認証するために、ENのチェッカサービスを、生成されたブロックについて、ENのチェッカアカウントを通じて実行する工程とを含む、方法に関する。
【0009】
そのようなコンセンサス方法は、一度に新しいブロックを構築する1つのノード、すなわちENのみが存在するので、非常に少ない電力消費を要求し、一方で、チェッカサービス及びチェッカアカウントのおかげで高レベルのセキュリティを保証し、任意の他のノードによって構築しながらENの直接的かつ永続的な可用性を可能にする。各トランザクションは、生成されたときにブロックと同様にチェックされる。
【0010】
有利には、各受信されたトランザクションについてチェッカサービスを実行する工程は、複数のRNのうちの少なくとも1つのRN又は任意の外部ノードのいずれかによって実行され、生成されたブロックに対するチェッカサービスを実行する工程は、複数のRNによって実行される。
【0011】
任意のノードによって各新しいトランザクションをチェックすることは、柔軟性を与え、同時に、複数のRNによって生成されたブロックをチェックする間のセキュリティは、ブロックチェーン内の新しいブロックを解放する前に、より高いセキュリティレベルを提供する。
【0012】
有利には、各ANノード、ENノード、RNノードは、チェッカサービス及び少なくとも1つの工程チェックサービスを含む所定のサービスを更に有し、すべての所定のサービスはVM上で実行され、チェッカサービスを実行する工程は、
工程チェッカサービスを実行して、VM上で実行中のサービスのリストを取り出す工程と、
実行中のサービスのリストと所定のサービスのリストとが一致したときに、実行中のサービスを検証する工程とを含む。
【0013】
そのような工程チェッカサービスは、VM上のすべての実行中のサービスが所定のサービスのみであることを保証し、したがって未知のサービスがVM上で実行されることを防止することによって、実行する工程を強化する。
【0014】
有利には、各ANノード、ENノード、RNノードは、ハッシュサービスを更に含む所定のサービスの1つ以上のローカル実行可能ファイルを有し、チェッカサービスを実行する工程は、
信頼できるブロックチェーンリポジトリに記憶された所定のサービスの信頼できるソースコードをダウンロードする工程、
信頼できるソースコードをコンパイルして、1つ以上の信頼できる実行可能ファイルを取得する工程、
ハッシュサービスによって、1つ以上の信頼できる実行可能ファイルをハッシュして、少なくとも1つの信頼できるハッシュ値を取得する工程、
ハッシュサービスによって、1つ以上のローカル実行可能ファイルをハッシュして、少なくとも1つのローカルハッシュ値を取得する工程、
1つ以上のローカルハッシュ値と1つ以上の信頼できるハッシュ値とが一致するとき、1つ以上のローカル実行可能ファイルを検証する工程、又は
1つ以上のローカルハッシュ値と1つ以上の信頼できるハッシュ値とが一致しないとき、ANに、危険にさらされたEN(「ENC」)信号を送信する工程を更に含む。
【0015】
そのようなハッシュサービスは、VM上のすべての実行中のサービスが各所定のサービスのためのソースコードの最新の利用可能なバージョンを使用することを保証することによって、実行する工程のセキュリティを更に強化し、その結果、それは破損したコードを含まない。
【0016】
有利には、所定のサービスは、エクストラクタサービスを更に含み、ANがENC信号を受信するとき、実行する工程は、
ANによって、ENC信号を確認するためにENのチェッカサービスを使用する工程と、確認されたENC信号の場合、
ANによって、危険にさらされたENのエクストラクタサービスを使用して、チェックされたトランザクションを取り出す工程と、
危険にさらされたENを分散ネットワークから切断する工程と、
新しい選出する工程を開始する工程とを更に含む。
【0017】
このようなエクストラクタサービスは、危険にさらされたノードを分離し、危険にさらされる前にトランザクションを取り出すことによって、実行する工程のセキュリティを更に強化する。
【0018】
有利には、生成する工程の所定の条件の検出は、
所定数のトランザクションがチェックされたとき、又は
選出する工程から所定の時間間隔が経過したときに行われる。
【0019】
そのような所定の条件は、生成されたブロックに含まれるトランザクションの数、又は2つの連続するブロックの生成間の時間のいずれかに関して、生成する工程が長く続くことを防止し、したがって、ENを攻撃するためのフレームを低減する。
【0020】
有利には、生成されたブロックの認証の後、本方法は、新しい選出する工程にループする前に、ENを新しいANとして指定する工程を更に含む。
【0021】
ENを次のブロック生成のための新しいANとして指定することは、ENが連続して2回選出されることを防止し、したがって、ENの外部制御のリスクを更に低減する。
【0022】
有利には、チェッカサービスを実行する工程は、規則的な時間間隔で更に実行される。
【0023】
チェッカサービスの定期的なチェックを導入することは、ENに対する攻撃のためのフレームを更に狭める。
【0024】
有利なことに、チェッカサービスを実行する工程は、ENが破損していないことをチェックするために、ANによる選出する工程の直後に更に実行される。
【0025】
選出直後のチェッカサービスのそのような初期チェックは、ENが実行する工程の開始から安全であることを保証する。
【0026】
有利なことに、ANは、ENが分散ネットワークにおいてもはや利用可能でないときはいつでも、新しい選出する工程を処理する。
【0027】
ENが分散ネットワークから消失した場合(例えば、接続の欠如)、ANは、新しい選出を処理して、切断されたENが突然再び現れてブロック生成を実行することを防止する。
【0028】
有利には、選出する工程は、ANによって、複数のRNから選出情報を要求する工程と、ANによって、要求された選出情報に基づいて複数のRNの中からENを選出する工程とを含む。より好ましくは、選出情報は、RNが既に選出された回数に対応する選出発生回数「EON」を少なくとも含む。
【0029】
選出工程における基準を有するEONを使用することは、しばしば選出されたRNが、より低いEONを有する別のRNに対して、次のENになる可能性が低くなることを保証する。過去のブロック生成を考慮したRNの信頼性、その位置、ノードのより大きなグループへの依存性、実行されるトランザクションの量など、他の基準を使用することができる。
【0030】
有利には、選出する工程は、ENを決定するために少なくとも1つの乱数を使用する非決定論的選出アルゴリズムに基づく。より好ましくは、各ANノード、ENノード、RNノードは、一意の識別番号「UIN」、そのEON、及び公開/秘密鍵のセットによって識別され、選出する工程は、
各RNによって、そのUIN、そのEON、及びその公開鍵をANに提供する工程、
ANによって、RNをそれらのEONによってランク付けし、各RNをEONに応じた間隔に関連付ける工程、
ANによって、前のANから乱数を受信する工程、
ANによって、UIN及びEONの関数を計算し、計算された関数結果をハッシュし、AN秘密鍵を用いてハッシュされた関数結果を暗号化し、暗号化された関数結果及び提供された乱数の関数を計算して最終的な数を得る工程、
この最終的な数でRN間隔をトラバースし、ENになる1つのRNだけが残るまで、遭遇する対応するRNを漸進的に削除する工程からなる工程を少なくとも含む。
【0031】
そのような選出工程は、アカウントのステークが公開されており、各ノードが、どのアカウントがブロックチェーン内の追加のブロックを構築する権限を獲得するかを合理的な精度で予測することができる公式を使用するいくつかの暗号通貨とは異なり、次のENを事前に知ることができないことを保証するために使用される。
【0032】
有利には、ブロックチェーンコンセンサスは、トランザクションと呼ばれる共有データを含む分散型台帳技術「DLT」である。より好ましくは、共有データは特定のIDタイプのデータである。
【0033】
このようなDLTは、多くの異なる分野に適用することができる。1つの興味深いアプリケーションは、IDタイプデータがDLTに安全に記憶され、許可されると容易にアクセスされ得るアイデンティティ管理である。
【0034】
有利なことに、特定のIDタイプデータは、スマートコントラクトを介して信頼できる第三者による要求に応じて認証される。
【0035】
本開示の別の態様は、複数のノードを有するブロックチェーン分散ネットワークであって、複数のノードは、1つの管理ノード「AN」と、1つの選出ノード「EN」と、複数のレギュラーノード「RN」とを含み、AN、EN、RNの各々は、仮想マシン「VM」と、VM上で実行されるチェッカサービスと、チェッカサービス上で読み取り及び/又は実行権を有する他のノードに利用可能なチェッカアカウントとを有し、分散ネットワークのブロックチェーンにトランザクションを提供するプロバイダノード「PN」を更に含み、第1の態様によるブロックチェーンコンセンサス方法は、ブロックチェーン分散ネットワークに適用される、ブロックチェーン分散ネットワークに関する。
【0036】
本開示の別の態様は、プロセッサとメモリとを備える電子デバイスに関し、メモリは、所定のサービスのソースコードを記憶するために使用され、プロセッサは、第1の態様による方法を実行するために、メモリに記憶されたソースコードを呼び出す仮想マシンをホストするように構成される。
【0037】
コンピュータ可読記憶媒体であって、命令がコンピュータ可読記憶媒体に記憶され、命令がコンピュータ上で実行されるとき、コンピュータが第1の態様による方法を実行する、コンピュータ可読記憶媒体。
【図面の簡単な説明】
【0038】
本開示の他の特徴、目的、及び利点は、添付の図面を参照してなされた非限定的な実施形態の詳細な記述を読むことによってより明確になるであろう。
【0039】
【
図1】本開示によるノードのピアツーピアネットワークのネットワークの一例を示す。
【0040】
【
図2A】本開示によるブロックチェーンノードのアーキテクチャの一例を示す。
【0041】
【
図2B】本開示によるブロックチェーンノードのチェッカアカウントの一例を示す。
【0042】
【
図3】本開示の一実施形態によるコンセンサス方法の図を示す。
【0043】
【
図4】本開示の別の実施形態によるコンセンサス方法の図を示す。
【0044】
【
図5】コンセンサス方法中に発信される破損通知の場合の図を示す。
【0045】
【発明を実施するための形態】
【0046】
分散型台帳技術、「DLT」又はデータベースは、ピアツーピアネットワーク上のいくつかのノード(デバイス)にわたって分散され、各々は、台帳の同一のコピーを複製及び保存し、それ自体を独立して更新する。主な利点は、中央権限が欠如していることである。
【0047】
コンセンサスメカニズムは、そのような分散コンピュータ、すなわち、ピアツーピアネットワークにわたって合意、信頼、及びセキュリティを達成するために使用される任意の数の方法論を指す。
【0048】
本開示は、ブロックを構築するときのエネルギー消費を制限するためのブロックチェーンのノードへの役割帰属工程と、分散データの認証及びセキュリティを保証するための特定のソフトウェア工程とを有する、「アイデンティティ」タイプのトランザクションを扱うブロックチェーンアイデンティティ管理システムを説明する。当然ながら、このブロックチェーン管理システム及び特定のソフトウェア工程では、他のタイプのトランザクションも可能である。
【0049】
図1は、本開示によるノードのピアツーピアネットワークの一例を示す。アイデンティティ管理システムを構成するネットワークは、3種類のノード、すなわち、1つの管理ノード「AN」と、1つの選出ノード「EN」と、複数のレギュラーノード「RN」とを含む。各種類のノードは、以下に簡単に要約されるそれ自体の役割を有する。
【0050】
AN(ネットワーク内の唯一のノード)は、特定の選出工程を介して、それらのうちの1つが(唯一の)ENであるように選出するために、RNからの情報を必要とする。
【0051】
ENは、選出されると、プロバイダ又はプロバイダノード「PN」から新しいトランザクションを受信する。各受信されたトランザクションを検証するために、EN上でチェッカ工程が行われる。次に、ENは、受信されたトランザクションを構築中の新しいブロックに追加する。そうすることによって、ENは、例えば、受信されたトランザクションの数によって定義される新しいブロックの完了まで、又はその選出から所定の時間が経過するまで、着信トランザクションを収集する。例えば、可変時間間隔は、ネットワーク上のトラフィック量に応じて15分から60分の間に設定される。15分は、より高いトラフィックに対して選択され、60分は、より低いトラフィックに対して選択される。新しいブロックが完了すると、ENは、認証の目的で、生成されたブロックを他のすべてのRNに送信する。ENは、新しいブロックを生成した後にANになり、新しいANとして次の選出を編成し始める。
【0052】
RNは、ANでもENでもないピアツーピアネットワークのすべてのノード部分である。それらのすべては、それらが選出された場合にENになり、次いで、それらがブロック生成を完了した後にANになることができる。ネットワーク内に存在する各RNは、潜在的に選出されるように、選出工程の前に選出情報をANに提供する。これらのRNはまた、新たに生成されたブロックを認証するためだけでなく、各新しいトランザクションをチェックするためにも使用される。
【0053】
PNは、ピアツーピアネットワークの直接の一部ではない。それらは、ENに新しいトランザクションを提供するだけである。(1つ又は複数の)外部ノード「ExN」は、レギュラーノードではないが、ENのチェッカサービスを実行する工程をいつでも、特に各新たに受信されたトランザクションについて実行するために使用することができるノードである。
【0054】
図2Aは、本開示によるブロックチェーンノード(AN、EN、又はRNのいずれか)のアーキテクチャの一例を示す。ネットワークの各ノード、AN、EN又はRNは、専用ソフトウェアインストール工程を有する。
【0055】
この工程は、仮想マシン「VM」と、VM上で実行される制限された数のサービスとのインストールを必要とする。これらのサービスは、少なくとも、許可されたサービスのみがVM上で実行されていることを保証する「チェッカサービス」と、AN及びRN並びに外部ノード及びPNに利用可能な「チェッカアカウント」とを含み、インストールされたサービスのパックに対する読み取り/実行権を与えるチェッカ工程を含む。このようにして、任意の外部ノードは、ノードが破損していないことを自由にチェックすることができる。各受信されたトランザクションについて、少なくとも1つのRNは、ENのチェッカアカウントを通じてENのチェッカサービスを実行して、トランザクションの有効性をチェックする。当然ながら、いくつかのRNがENのチェッカサービスを実行してもよい。新しい生成されたブロックに対して、複数のRNは、ブロックを認証するためにそのチェッカアカウントを通じてENのチェッカサービスを実行する。
【0056】
サブレイヤアーキテクチャの場合、一例として、各ノードは、ブロックチェーンノードのJavaアプリケーションが実行可能なjarモードで展開され、アプリケーションのjarが、好ましくはチェッカサービス、工程チェックサービス、ハッシュサービス、及びエクストラクタサービスを含む4つの、決定されたシェルスクリプトの所定のパックとともにディレクトリに記憶されるように、Java VMを含む。ノードは更にソフトウェアユーティリティCRONを含み、これは時間ベースのジョブスケジューラであり、チェッカ工程を実行するために使用される。Linux(登録商標)などのUNIX(登録商標)のようなオペレーティングシステム「OS」、及びOS上で実行される工程管理が、サブレイヤアーキテクチャを完成させる。
【0057】
図2Bは、チェッカ工程を実行するときの、
図2Aに提示されたブロックチェーンノードのチェッカアカウントの好ましい実施形態を示す。各ノード(AN、EN、RN)は、4つのサービス、すなわち、チェッカサービス(すなわち、checker.shスクリプト)、工程チェックサービス(すなわち、process_check.shスクリプト)、ハッシュサービス(すなわち、hash.shスクリプト)、エクストラクタサービス(すなわち、extractor.shスクリプト)を含む実行可能ファイルの形式で所定のサービスのパックを有する。チェッカアカウントは、デフォルトで、(1つ又は複数の)実行可能ファイル(例えば、(1つ又は複数の)jarファイル)及びスクリプトが配置されているフォルダに作成される。
チェッカアカウントは、すべてのファイルに対して「読み取り」権限を有し、抽出スクリプトを除くすべてのスクリプトに対して「実行」権限を有し、「書き込み」権限を有さない。チェッカアカウントはパスワードを有さず、インターネットアクセスを有する任意の人又はノード(例えば、RN、PN、又はExN)は、ENのチェッカアカウントを介してブロックチェーンにアクセスし、その準拠性をテストすることができ、したがって、ブロック生成を引き継ぐノードの真正性を自動的に保証する。スクリプトはルートユーザに属し、どのユーザも、VMにおいて管理モード(sudoers)で実行する権限を有さない。スクリプトの作成者はルートであるので、誰もそれらを修正することはできないが、チェッカユーザはそれらを読み取って実行する権限を有する。更に、それらは管理者レベルのクリアランスへのアクセスを与えるsudo特権を有していない。
【0058】
工程チェッカサービスは、VM上で実行中のサービスのリストを取り出し、実行中のサービスのリストが所定のサービスのパックのリストに対応することを検証することによって、所定のパックのサービスのみが実行中であることを保証するために使用される。
【0059】
ハッシュサービスは、jarアプリケーションの内容をハッシュし、結果を表示する命令を含む。
【0060】
チェッカサービスは、周期的に、又はノード(CRONタスク)からの要求に応じて実行され、(i)ENの工程チェッカサービスを実行して、ENのVM上で実行中のサービスのリストを取り出す工程と、(ii)実行中のサービスのリストと所定のサービスのリストとが一致したときに実行中のサービスを検証する工程とを保証する。より具体的には、チェッカサービスは、(i)信頼できるブロックチェーンリポジトリに記憶された所定のサービスの信頼できるソースコードをダウンロードする工程と、(ii)信頼できるソースコードをコンパイルして、1つ以上の信頼できる実行可能ファイルを取得する工程と、(iii)ハッシュサービスによって、1つ以上の信頼できる実行可能ファイルをハッシュして、少なくとも1つの信頼できるハッシュ値を取得し、1つ以上のローカル実行可能ファイルをハッシュして、少なくとも1つのローカルハッシュ値を取得する工程と、(iv)1つ以上のローカルハッシュ値と1つ以上の信頼できるハッシュ値とが一致するとき、1つ以上のローカル実行可能ファイルを検証するか、又は1つ以上のローカルハッシュ値と1つ以上の信頼できるハッシュ値とが一致しないとき、危険にさらされたEN「ENC」信号をANに送信する工程とを実行する。
【0061】
チェッカサービスが周期的に実行されるという事実に加えて、チェッカサービスは、ブロックに到着する選出及びすべてのトランザクションの後にも実行される。これは、偽のノードにハンドが与えられないことを保証する。
【0062】
好ましくは、チェッカサービスは、現在のサービスのソースのハッシュがそのようなサービスの最新の利用可能なバージョンのハッシュと同一であることをチェックするために、数行のコードの非常に単純なプログラムとしてコーディングされる。
【0063】
チェッカサービスコードの例
#!/bin/bash
export signature=`md5sum tdxbc/knight.jar`
export LOCAL_SIG=${signature%% *}
mkdir temp_src
cd temp_src
git clone<repository_url_here>
cd<repository_name>
mvn clean install
export signature=`md5sum
<repository_name>/target/knight_1.0.0.jar`
export DIST_SIG=${signature%% *}
if[“$DIST_SIG”=“$LOCAL_SIG”];then
echo“0”# All is good
else
echo“1”# Signatures are not equal
end
【0064】
エクストラクタサービスは、(1つ又は複数の)実行可能ファイルをバイパスすることによって、このブロックチェーンのすべてのレコードを復元することを可能にする。それは、ノードの埋め込まれたデータベースに接続するために必要なコマンドからなる。その目的は、ノードが危険にさらされていると宣言される前後に、記録が外部から分離され得ることを保証することである。ノードが危険にさらされていることが検出された場合、エクストラクタサービスを使用してブロックの有効部分を取り出し、一方、管理ノードは新しい選出工程を編成し、これらのトランザクションを開始ノードとして送信する。
【0065】
ブロックチェーンにおけるコンセンサスのための方法
【0066】
図3は、ENの観点からの本開示の一実施形態によるコンセンサス方法の図を示す。ブロックチェーンは、複数のノードを有する分散ネットワークを含み、複数のノードは、1つの管理ノード「AN」と、1つの選出ノード「EN」と、複数のレギュラーノード「RN」とを含み、AN、EN、RNの各々は、仮想マシン「VM」と、VM上で実行されるチェッカサービスと、チェッカサービス上で読み取り及び/又は実行権を有する他のノードに利用可能なチェッカアカウントとを有し、ブロックチェーンにトランザクションを提供するプロバイダノード「PN」を更に含む。
【0067】
コンセンサス方法は、以下の工程を含む。複数のRNの中からENを指定するためにANによって実行される選出する工程(S1)。ENが異なるPNからトランザクションを受信することによって実行される受信工程(S2)。各受信されたトランザクションについて、チェッカアカウントを通じてENのチェッカサービスを実行する工程(S3)。チェックされたトランザクションを含むブロックの、ENによって実行される生成する工程(S4)。この生成する工程は、例えば、すべての受信されチェックされたトランザクションを生成中のブロックに順次追加するなど、いくつかの方法で実行してもよい。ENによって実行される、生成されたブロックを複数のRNへ送信する工程(S5)。生成されたブロックを認証するために、チェッカアカウントを介してENのチェッカサービスを実行する別の工程(S6)。ブロック生成における連続性を保証するために、本方法は、ENが新しいANとして指定され、次いでS1にループする、指定する工程(S7)を更に含むことが好ましい。
【0068】
各受信されたトランザクションについてチェッカサービスを実行する工程は、複数のRNのうちの少なくとも1つのRNによって、又はENのチェッカアカウントへのアクセスを有する任意の外部ノードによって実行され得る。生成されたブロックに対するチェッカサービスを実行する工程は、生成されたブロック認証に対する高レベルのセキュリティを保証するために、複数のRNによって実行される。
【0069】
図4は、ネットワーク全体から見た、本開示の別の実施形態によるコンセンサス方法の図を示す。コンセンサス方法は以下の工程を含む。ANがRNから受信された選出情報に基づいて選出工程を実行するEN(
図4には図示せず)を選出して、RNのうちの1つをENとして選出する工程(S10)と、ENに送信されるPNのような任意の外部サービスから来るトランザクションを作成する工程(S20)と、外部サービス(ExN、PN又はRN)がENのチェッカサービスを実行して、受信されたトランザクションがOK(すなわち、信頼できる)であるか否かをチェックする工程(S30)と、チェッカの結果が「偽」である場合、すなわちトランザクションが破損している場合、コンセンサスはブロックチェーン完全性違反を宣言する工程(S31)と、チェッカの結果が「真」である場合、すなわちトランザクションが破損していない場合、ENのハッシュサービスを実行して、ハッシュされたトランザクション、いわゆるエントリを構築中のブロックに追加する工程(S32)と、ブロックに新しいエントリを追加した後、構築中のブロックが満杯であるか否か、すなわち、生成されたブロックが完了しているか否かをチェックする工程(S40)と、ブロックが満杯でなければ、S20に戻る工程(S41)と、ブロックが満杯である場合、新しく生成されたブロックがすべてのRNに送信される工程(S50)と、新しいブロックを受信された各RNは、ENのチェッカサービスを再び実行し、(S61)チェッカが「偽」である場合、コンセンサスはブロックチェーン完全性違反を宣言する工程(S60)と、チェッカが「真」である場合、ブロックは、すべてのRNがチェッカを検証するまで、各RNによって保存される工程(S62)と、ENは新しいANになり、工程はS10に戻る工程(S70)とを含む。
【0070】
図5は、コンセンサス方法中に発信される破損通知の場合の図を示す。ブロックチェーン完全性違反(S100)は、ANに送信される。ANは、ENのチェッカサービスを実行して(S101)、ENが危険にさらされていることを確認する。ENが危険にさらされていない場合、ANによって何も行われない(S102)。ENが危険にさらされている場合、ANは、ENのエクストラクタサービスを実行し、有効なトランザクションを取り出すためにデータベースを抽出する(S103)。次いで、ANは、危険にさらされたENをネットワークから除去し(S104)、除去されたノードなしで新しい選出工程を編成する(S105)。新しいRNが新しいENとして選択されると、ANは、取り出された不完全なトランザクションを新しく選出されたENに提供する(S106)。そして、工程S2又は工程S20に戻る。
【0071】
このようなコンセンサス方法は、発生すると思われる「Quis custodiet ipsos custodes」問題、すなわち、チェッカサービスは他のサービスをチェックし、どのサービスが「チェッカ」をチェックするかを解決するいくつかの利点を提供する。これは、実際には、すべてのノードが「チェッカ」アカウントを介してアクセスすることができるチェッカサービスの完全な透明性及び最大限の単純さによって解決され、チェッカサービスのいかなる変更も防止する。
【0072】
永続的な「中央ノード」は存在しない。管理ノード又は選出ノードの中心位置は、レギュラーノードによって時間とともに共有される役割を変更している。
【0073】
認証は、システムのノードのうちのいずれか1つによって随意にアクティブ化され得るサービスによって保証され、サービスは、ブロックチェーン漸進的構築の重要な工程中に、特に、新しいトランザクションをブロックに追加するとき、及び新しいブロックをブロックチェーンに追加するときにアクティブ化される。
【0074】
1つのノードのみが、現在のブロック(選出ノード)を構築するために動作しており、したがって、いくつかのノードが同時に「マイニング」することによる、並びに高い難易度レベルによるエネルギーの過剰消費はない。
【0075】
選出工程
【0076】
上記の説明では、選出工程について数回言及してきた。
【0077】
一実施形態によれば、選出工程は、ANによって、複数のRNから選出情報を要求する工程と、ANによって、要求された選出情報に基づいて複数のRNの中からENを選出する工程とを含む。このような選出情報は、少なくとも、RNが既に選出された回数に対応する選出発生回数「EON」を含む。
【0078】
ブロックチェーンのセキュリティを更に強化するために、選出工程は、好ましくは、少なくとも1つの乱数を使用してENを決定する非決定論的選出アルゴリズムに基づき、他のノード又は外部デバイスが、どのノードがうまく選出されるかを予想することを防止する。
【0079】
図6は、本開示による選出工程の例示的な図を示す。この例では、各ANノード、ENノード、RNノードは、一意の識別番号「UIN」、そのEON、及び公開/秘密鍵のセットによって識別される。ANの観点からの選出工程は、各RNによって、そのUIN、そのEON、及びその公開鍵をANに提供する工程(S1001)と、ANは、EONによってRNをランク付けし、各RNをEONに応じた間隔に関連付ける工程(S1002)と、ANによって、前のANから乱数を受信する工程(S1003)と、ANは、UINとEONとの関数を計算し、計算された関数結果をハッシュし、AN秘密鍵でハッシュされた関数結果を暗号化し、暗号化された関数結果と提供された乱数との関数を計算して最終的な数を得る工程(S1004)と、この最終的な数を有するRN間隔をトラバースし、ENになる1つのRNだけが残るまで、遭遇する対応するRNを漸進的に削除する工程(S1005)とを含む。
【0080】
当然ながら、当業者には、明らかな改善及び/又は修正が実施され得、それでも添付の特許請求の範囲によって定義される本発明の範囲内であることが理解される。
【国際調査報告】