(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-11
(45)【発行日】2024-09-20
(54)【発明の名称】ブロックチェーンに付加的なチェーンを追加する方法および装置、そのためのシャード生成方法および装置
(51)【国際特許分類】
H04L 9/32 20060101AFI20240912BHJP
【FI】
H04L9/32 200Z
(21)【出願番号】P 2023071534
(22)【出願日】2023-04-25
【審査請求日】2023-04-25
(31)【優先権主張番号】10-2022-0122614
(32)【優先日】2022-09-27
(33)【優先権主張国・地域又は機関】KR
(31)【優先権主張番号】10-2023-0017703
(32)【優先日】2023-02-10
(33)【優先権主張国・地域又は機関】KR
(73)【特許権者】
【識別番号】596099882
【氏名又は名称】エレクトロニクス アンド テレコミュニケーションズ リサーチ インスチチュート
【氏名又は名称原語表記】ELECTRONICS AND TELECOMMUNICATIONS RESEARCH INSTITUTE
(74)【代理人】
【識別番号】110002952
【氏名又は名称】弁理士法人鷲田国際特許事務所
(72)【発明者】
【氏名】オー ジン-テイ
(72)【発明者】
【氏名】キム ユン-チャン
(72)【発明者】
【氏名】リ チャン-ヒュン
(72)【発明者】
【氏名】イム ジョン-チュル
【審査官】上島 拓也
(56)【参考文献】
【文献】米国特許出願公開第2019/0260574(US,A1)
【文献】特表2020-522150(JP,A)
【文献】米国特許出願公開第2021/0097537(US,A1)
【文献】松永 赳尭,Proof-of-Stake型ブロック・チェーンの参加ノードへのインセンティブづけに関する一検討,電子情報通信学会技術研究報告,日本,一般社団法人電子情報通信学会,2020年11月19日,Vol.120 No.257 ,p.62-67
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/32
(57)【特許請求の範囲】
【請求項1】
ブロックチェーンに付加的なチェーンを追加する方法において、
前記ブロックチェーンのノードが前記付加的なチェーンに相応する資産(asset)を預ける(deposit)ステップと、
前記資産に相応する持分値(share value)に基づいて、前記ノードを、前記付加的なチェーンに追加ブロックを連結するための合意体ノードの1つとして選択するステップと、
前記ノードが前記追加ブロックを連結するための分散合意を行うステップと、
を含み、
前記付加的なチェーンに参加するノードは、トランザクション処理のためのメジャーシェアホルダー(major shareholder)ノード
と、前記メジャーシェアホルダーノードではないマイナーシェアホルダー(minor shareholder)ノードを含み、前記マイナーシェアホルダーノードにはトランザクションが伝達されず、
前記付加的なチェーンは、前記メジャーシェアホルダーノードに相応する第1合計持分値(first total share value)と、前記マイナーシェアホルダーノードに相応する第2合計持分値(second total share value)と、に基づいて、新規ノードの参加可能の有無を決定する、ブロックチェーンに付加的なチェーンを追加する方法。
【請求項2】
前記合意体ノードは、少なくとも1つのメジャーシェアホルダーノードと、少なくとも1つのマイナーシェアホルダーノードと、を含む、請求項
1に記載のブロックチェーンに付加的なチェーンを追加する方法。
【請求項3】
前記合意体ノードは、初期に前記メジャーシェアホルダーノードだけを含む、請求項
1に記載のブロックチェーンに付加的なチェーンを追加する方法。
【請求項4】
前記新規ノードの参加可能の有無は、前記第1合計持分値と前記第2合計持分値、および前記新規ノードの持分値の合計を比較した結果に基づいて決定される、請求項
1に記載のブロックチェーンに付加的なチェーンを追加する方法。
【請求項5】
前記第1合計持分値は、前記新規ノードが前記付加的なチェーンに参加可能にするための、拡張プロセスによって増加する、請求項
4に記載のブロックチェーンに付加的なチェーンを追加する方法。
【請求項6】
前記拡張プロセスは、
前記メジャーシェアホルダーノードのいずれか1つ以上に相応する持分値を増加させる第1プロセス、
新しいメジャーシェアホルダーノードを追加する第2プロセス、および
少なくとも1つの前記マイナーシェアホルダーノードをメジャーシェアホルダーノードに変更する第3プロセス、
のいずれか1つである、請求項
5に記載のブロックチェーンに付加的なチェーンを追加する方法。
【請求項7】
前記ブロックチェーンの1つのブロックに前記付加的なチェーンに関するデータを記録する、請求項
1に記載のブロックチェーンに付加的なチェーンを追加する方法。
【請求項8】
前記付加的なチェーンに関するデータは、前記付加的なチェーンに参加するノードの参加ノード情報と、前記付加的なチェーンに参加するノードの持分値と、を含む、請求項
7に記載のブロックチェーンに付加的なチェーンを追加する方法。
【請求項9】
前記付加的なチェーンに関するデータは、前記付加的なチェーンの開始情報を含み、前記付加的なチェーンの開始ブロックは、前記付加的なチェーンに関するデータを記録した前記ブロックチェーンの少なくとも1つのブロックに関する情報を記録する、請求項
8に記載のブロックチェーンに付加的なチェーンを追加する方法。
【請求項10】
前記マイナーシェアホルダーノードの少なくとも1つは、前記付加的なチェーン以外のチェーンにマイナーシェアホルダーノードとして参加する、請求項
1に記載のブロックチェーンに付加的なチェーンを追加する方法。
【請求項11】
前記メジャーシェアホルダーノードは、前記付加的なチェーン以外のチェーンにメジャーシェアホルダーノードとして参加できない、請求項
1に記載のブロックチェーンに付加的なチェーンを追加する方法。
【請求項12】
1つ以上のプロセッサと、
前記1つ以上のプロセッサによって実行される少なくとも1つのプログラムを格納する実行メモリと、
を含み、
前記少なくとも1つのプログラムは、
ブロックチェーンに追加される付加的なチェーンに相応する資産(asset)を預け(deposit)、
前記資産に相応する持分値(share value)に基づいて、前記付加的なチェーンに追加ブロックを連結するための合意体ノードの1つとして選択され、
前記追加ブロックを連結するための分散合意を行い、
前記付加的なチェーンに参加するノードは、トランザクション処理のためのメジャーシェアホルダー(major shareholder)ノード
と、前記メジャーシェアホルダーノードではないマイナーシェアホルダー(minor shareholder)ノードを含み、前記マイナーシェアホルダーノードにはトランザクションが伝達されず、
前記付加的なチェーンは、前記メジャーシェアホルダーノードに相応する第1合計持分値(first total share value)と、前記マイナーシェアホルダーノードに相応する第2合計持分値(second total share value)と、に基づいて、新規ノードの参加可能の有無を決定する、ブロックチェーンに付加的なチェーンを追加する装置。
【請求項13】
前記マイナーシェアホルダーノードの少なくとも1つは、前記付加的なチェーン以外のチェーンにマイナーシェアホルダーノードとして参加する、請求項
12に記載のブロックチェーンに付加的なチェーンを追加する装置。
【請求項14】
前記メジャーシェアホルダーノードは、前記付加的なチェーン以外のチェーンにメジャーシェアホルダーノードとして参加できない、請求項
12に記載のブロックチェーンに付加的なチェーンを追加する装置。
【請求項15】
ブロックチェーンのシャード生成方法において、
付加的なチェーンにメジャーシェアホルダー(major shareholder)ノードとして参加するステップと、
前記付加的なチェーンにマイナーシェアホルダー(minor shareholder)ノードとして参加するステップと、
前記メジャーシェアホルダーノードおよび前記マイナーシェアホルダーノードのいずれか1つ以上を含む合意体を構成するステップと、
を含
み、
前記メジャーシェアホルダーノードは、トランザクション処理のためのものであり、前記マイナーシェアホルダーノードにはトランザクションが伝達されず、
前記付加的なチェーンは、前記メジャーシェアホルダーノードに相応する第1合計持分値(first total share value)と、前記マイナーシェアホルダーノードに相応する第2合計持分値(second total share value)と、に基づいて、新規ノードの参加可能の有無を決定する、ブロックチェーンのシャード生成方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ブロックチェーンに付加的なチェーンを追加する技術に関し、とりわけ、運用中のブロックチェーンでシャードを生成する技術に関する。
【背景技術】
【0002】
ブロックチェーンは、互いに信頼できない当事者間で第3の信頼機関(trusted third party)の介入なしに取引(トランザクション)が処理され、その結果を元帳に記録できる技術である。脱中央化されたブロックチェーンは、参加ノードのうち任意のノードが新しいブロックを生成できるので、取引内容はすべてのノードに伝達されて処理できなければならない。しかし、複数のノードが取引内容を重複処理することによって、多くのノードが参加したブロックチェーンのオンチェーン(on-chain)処理性能は1ノードの取引処理性能以下になることが一般的である。
【0003】
ブロックチェーンの合意性能を高める方法のほか、オフチェーンで処理された取引結果だけをオンチェーンに記録する方法や、マルチプルチェーン(multiple chains)を適用してブロックチェーンの処理性能を向上させる方法が提案されている。特に、マルチプルチェーンを用いる場合、チェーンごとに処理する取引が分散して並列処理できるので、性能向上を得ることができる。
【0004】
既存のイーサリアムなどで提案されたマルチプルチェーンにはエポック(epoch)単位で各チェーンにノードが割当てられる。すなわち、エポック単位で各チェーンに割当てられるノードが再構成され、1つのブロックチェーンシステムが収容可能なマルチプルチェーンの最大個数が定められている。この場合、新しいチェーンの追加はエポック境界で行われるしかない。また、ブロックチェーンシステムに予め定められた最大個数を超えて新しいチェーンを追加することは不可能である。
【0005】
エポック単位でノードを再構成する理由は、特定チェーンに含まれるノードが処理する取引以外の取引を受信しても当該チェーンで処理が不可能なため、チェーンごとに処理可能な取引のみ伝達されるようにするためである。すなわち、当該チェーンに所属するノードにのみ処理される取引を伝達し、チェーンごとに並列処理を行って処理性能を高めることができる。したがって、特定エポックで1つのノードが同時に2つ以上のチェーンの合意に参加することは難しい。
【0006】
このような既存の技術は、エポック境界区間で取引処理が遅延したり不可能になり、このため、夜中など取引のない時間にノードの再構成が行われなければならない。また、1つのノードはマルチプルチェーンの1つのみに割当てられるので、ブロックチェーンに参加するノードの個数が多くない場合には、ビザンチン障害(Byzantine Fault)確率が増加する問題がある。
【0007】
2020年10月20日付で公開された論文「Algorithm based on Byzantine agreement among decentralized agents(BADA)」、米国特許出願公開第2019/0327084号明細書、米国特許出願公開第2019/0379538号明細書および米国特許出願公開第2020/0403776号明細書には、ナンス(nonce)チェーンベースの合意体選定方法およびこれを用いたブロックチェーン生成方法が詳しく開示されている。しかし、前記論文および明細書に開示された技術は、1つのノードが成功確率pおよび失敗確率1-pである1回のコイントスをし、その結果に応じて合意ノードを選定する方式で任意の合意体を構成することができるが、すべてのノードにトランザクションを伝達しなければならないので、トランザクション伝達コストがブロックチェーン全体の性能を低下させざるを得なかった。
【0008】
したがって、処理するトランザクションを一部のノードだけが受信しながらも、ブロックごとに参加ノードのうち任意のノードが合意体として選抜され、新規ブロックを生成してブロックチェーンに連結することができ、ブロックチェーン運用中にいつでも付加的なチェーンを追加できる新たな技術の必要性が切実に求められる。
【発明の概要】
【発明が解決しようとする課題】
【0009】
本発明の目的は、ブロックチェーン運用中にいつでもチェーン(シャード)を追加することができ、ノードが2つ以上のチェーンに同時に合意体として参加できるようにすることである。
【0010】
また、本発明の目的は、エポックごとにマルチプルチェーンにノードを再び割当てる必要なく、動的に一部のノードが新しいチェーンに参加できるようにすることである。
【0011】
また、本発明の目的は、ブロックチェーンに参加するノードに特定チェーンに対する合意投票権限を付与し、当該チェーンの合意体に参加して当該チェーンを運用できるようにすることである。
【0012】
さらに、本発明の目的は、運用中のブロックチェーンでノードをチェーンごとに再び割当てるノードの再構成なしにリアルタイムに新規チェーンを追加することができ、追加されたチェーンが並列処理により全体ブロックチェーンの処理性能を向上させるようにすることである。
【課題を解決するための手段】
【0013】
上記の目的を達成するための、本発明によるブロックチェーンに付加的なチェーンを追加する方法は、前記ブロックチェーンのノードが前記付加的なチェーンに相応する資産(asset)を預ける(deposit)ステップと、前記資産に相応する持分値(share value)に基づいて、前記ノードを、前記付加的なチェーンに追加ブロックを連結するための合意体ノードの1つとして選択するステップと、前記ノードが前記追加ブロックを連結するための分散合意を行うステップと、を含む。
【0014】
ここで、前記付加的なチェーンに参加するノードは、トランザクション処理のためのメジャーシェアホルダー(major shareholder)ノードを含むことができる。
【0015】
ここで、前記付加的なチェーンに参加するノードは、前記メジャーシェアホルダーノードではないマイナーシェアホルダー(minor shareholder)ノードを含み、前記マイナーシェアホルダーノードにはトランザクションが伝達されない。
【0016】
ここで、合意体ノードは、少なくとも1つのメジャーシェアホルダーノードと、少なくとも1つのマイナーシェアホルダーノードとを含むことができる。
【0017】
ここで、合意体ノードは、初期に前記メジャーシェアホルダーノードだけを含むことができる。
【0018】
ここで、前記付加的なチェーンは、前記メジャーシェアホルダーノードに相応する第1合計持分値(first total share value)と、前記マイナーシェアホルダーノードに相応する第2合計持分値(second total share value)と、に基づいて、新規ノードの参加可能の有無を決定できる。
【0019】
ここで、前記新規ノードの参加可能の有無は、前記第1合計持分値と前記第2合計持分値、および前記新規ノードの持分値の合計を比較した結果に基づいて決定される。
【0020】
ここで、前記第1合計持分値は、前記新規ノードが前記付加的なチェーンに参加可能にするための、拡張プロセスによって増加できる。
【0021】
ここで、拡張プロセスは、前記メジャーシェアホルダーノードのいずれか1つ以上に相応する持分値を増加させる第1プロセス、新しいメジャーシェアホルダーノードを追加する第2プロセス、および少なくとも1つの前記マイナーシェアホルダーノードをメジャーシェアホルダーノードに変更する第3プロセス、のいずれか1つであってもよい。
【0022】
ここで、ブロックチェーンの1つのブロックに前記付加的なチェーンに関するデータを記録することができる。
【0023】
ここで、前記付加的なチェーンに関するデータは、前記付加的なチェーンに参加するノードの参加ノード情報と、前記付加的なチェーンに参加するノードの持分値と、を含むことができる。
【0024】
ここで、前記付加的なチェーンに関するデータは、前記付加的なチェーンの開始情報を含み、前記付加的なチェーンの開始ブロックは、前記付加的なチェーンに関するデータを記録した前記ブロックチェーンの少なくとも1つのブロックに関する情報を記録することができる。
【0025】
ここで、前記マイナーシェアホルダーノードの少なくとも1つは、前記付加的なチェーン以外のチェーンにマイナーシェアホルダーノードとして参加できる。
【0026】
ここで、前記メジャーシェアホルダーノードは、前記付加的なチェーン以外のチェーンにメジャーシェアホルダーノードとして参加できない。
【0027】
また、本発明の一実施例によるブロックチェーンに付加的なチェーンを追加する装置は、1つ以上のプロセッサと、前記1つ以上のプロセッサによって実行される少なくとも1つのプログラムを格納する実行メモリと、を含む。
【0028】
ここで、前記少なくとも1つのプログラムは、ブロックチェーンに追加される付加的なチェーンに相応する資産(asset)を預け(deposit)、前記資産に相応する持分値(share value)に基づいて、前記付加的なチェーンに追加ブロックを連結するための合意体ノードの1つとして選択され、前記追加ブロックを連結するための分散合意を行う。ここで、前記付加的なチェーンに参加するノードは、トランザクション処理のためのメジャーシェアホルダー(major shareholder)ノードを含むことができる。
【0029】
ここで、前記付加的なチェーンに参加するノードは、前記メジャーシェアホルダーノードではないマイナーシェアホルダー(minor shareholder)ノードを含み、前記マイナーシェアホルダーノードにはトランザクションが伝達されない。
【0030】
ここで、前記付加的なチェーンは、前記メジャーシェアホルダーノードに相応する第1合計持分値(first total share value)と、前記マイナーシェアホルダーノードに相応する第2合計持分値(second total share value)と、に基づいて、新規ノードの参加可能の有無を決定できる。
【0031】
ここで、前記マイナーシェアホルダーノードの少なくとも1つは、前記付加的なチェーン以外のチェーンにマイナーシェアホルダーノードとして参加できる。
【0032】
ここで、前記メジャーシェアホルダーノードは、前記付加的なチェーン以外のチェーンにメジャーシェアホルダーノードとして参加できない。
【0033】
また、本発明の一実施例によるブロックチェーンのシャード生成方法は、付加的なチェーンにメジャーシェアホルダー(major shareholder)ノードとして参加するステップと、前記付加的なチェーンにマイナーシェアホルダー(minor shareholder)ノードとして参加するステップと、前記メジャーシェアホルダーノードおよび前記マイナーシェアホルダーノードのいずれか1つ以上を含む合意体を構成するステップと、を含む。
【0034】
ここで、前記メジャーシェアホルダーノードは、トランザクション処理のためのものであり、前記マイナーシェアホルダーノードにはトランザクションが伝達されない。
【発明の効果】
【0035】
本発明によれば、ブロックチェーン運用中にいつでも新しいチェーンを追加することができる。
【0036】
また、本発明は、メジャーシェアホルダーノードに相応する持分値によって参加ノード数を制御することができ、これは新しいビジネスを新規チェーンで開始しようとする場合に、初期に少数の参加ノードでビジネスを試し、次第に参加ノード数を増加させていく有用な手段となりうる。
【0037】
また、本発明は、1つのノードが2つ以上のチェーンのメジャーシェアホルダーノードにならないように制御すれば、トランザクションを受信し、これを処理するノードをチェーンごとに分離可能で、動的にチェーンを追加する場合にもトラフィック発生の重複を低減することができる。
【0038】
さらに、本発明は、マルチプルチェーンそれぞれのメジャーシェアホルダーノードはチェーン(シャード)ごとに分離されるが、残りのマイナーシェアホルダーノードは2つ以上のチェーンに重複参加可能でマルチプルチェーンの効率的な運用が可能である。
【図面の簡単な説明】
【0039】
【
図1】本発明の一実施例によるメジャーシェアホルダーノードを含むノードの持分保有状態およびトランザクション処理を示すテーブルである。
【
図2】本発明の一実施例による分散合意方法を示す動作フローチャートである。
【
図3】本発明の一実施例によるブロックチェーン生成方法により新規ブロックが合意されてブロックチェーンに追加される例を示すブロック図である。
【
図4】本発明の一実施例によるブロックチェーン生成方法を示すテーブルである。
【
図5】本発明の一実施例によるブロックチェーン生成方法を示す動作フローチャートである。
【
図6】本発明の一実施例によるブロックチェーンを構成するノードがそれぞれ持分値に相応する回数だけ成功確率に相応する演算を行う過程を示す動作フローチャートである。
【
図7】本発明の一実施例によるブロックチェーンを構成するノードが互いに異なる類型の持分値を有する場合の例を示すテーブルである。
【
図8】本発明の一実施例によるコンピュータシステムの構成を示すブロック図である。
【
図9】ブロックチェーン参加ノードの資産保有状況の一例を示す表である。
【
図10】
図9に示された例において10番目チェーンに参加したノードの参加ノード情報の一例を示す表である。
【
図11】
図9に示された例において15番目チェーンに参加したノードの参加ノード情報の一例を示す表である。
【
図12】ブロックチェーンに付加的なチェーンが適用された例を示すブロック図である。
【
図13】10番目チェーンと15番目チェーンがマイナーシェアホルダーノードを共有する例を示す図である。
【
図14】本発明の一実施例によるブロックチェーンに新しいチェーンを追加する方法を示す動作フローチャートである。
【
図15】本発明の一実施例によるブロックチェーンのシャード生成方法を示す動作フローチャートである。
【発明を実施するための形態】
【0040】
本発明の利点および特徴、そしてそれらを達成する方法は、添付した図面と共に詳細に後述する実施例を参照すれば明確になる。しかし、本発明は以下に開示される実施例に限定されるものではなく、互いに異なる多様な形態で実現され、単に本実施例は本発明の開示が完全となるようにし、本発明の属する技術分野における通常の知識を有する者に発明の範疇を完全に知らせるために提供されるものであり、本発明は請求項の範疇によってのみ定義される。明細書全体にわたって同一の参照符号は同一の構成要素を指す。
【0041】
「第1」または「第2」などが多様な構成要素を述べるために使われるが、このような構成要素は前記のような用語によって制限されない。前記のような用語は単に1つの構成要素を他の構成要素と区別するために使われる。したがって、以下に言及される第1構成要素は、本発明の技術的思想内で第2構成要素であってもよい。
【0042】
本明細書で使われる用語は実施例を説明するためのものであり、本発明を制限しようとするものではない。本明細書において、単数形は文言で特に言及しない限り、複数形も含む。明細書で使われる「含む(comprises)」または「含む(comprising)」は、言及された構成要素または段階が1つ以上の他の構成要素または段階の存在または追加を排除しないという意味を含む。
【0043】
他に定義がなければ、本明細書で使われるすべての用語は、本発明の属する技術分野における通常の知識を有する者に共通して理解できる意味で解釈される。また、一般的に使われる辞書に定義されている用語は、明らかに特別に定義されていない限り、理想的または過度に解釈されない。
【0044】
以下、添付した図面を参照して、本発明の実施例を詳細に説明し、図面を参照して説明するとき、同一または対応する構成要素は同一の図面符号を付し、これに関する重複した説明は省略する。
【0045】
一般的に、非競争合意を用いるブロックチェーンで参加ノードの数が増加する場合、合意メッセージ複雑度が上昇して性能が減少する。この場合、ノードの一部を合意体(consensus)として選抜して、直接合意に参加するノードの数を減らして性能を増加させることができる。しかし、固定された一部のノードだけを合意体として用いると、再び中央化の問題が発生するので、ブロックごとに合意体を任意に再構成する技術が必要である。
【0046】
また、任意に選抜された合意体ノードは、メッセージ複雑度O(N)である合意アルゴリズムを用いて性能を増加させることができる。ここで、すべてのノードは合意体ノードとして選抜される可能性があるので、処理されるトランザクションをすべての参加ノードに伝達するためのトラフィックコスト(cost)はノード数に比例して増加し、これは性能低下の原因になりうる。したがって、ネットワーク全体のデータ量を減少させる方法が必要になる。例えば、Gossipプロトコルなどを用いた最適化によりデータ量を減らす研究があったが、任意に合意体を選抜する場合には、どのノードが合意体として選抜されるか予測できないので、各ノードに伝達されるトランザクションを減らすことができない。
【0047】
前述した論文「Algorithm based on Byzantine agreement among decentralized agents(BADA)」および米国特許出願公開第2019/0379538号明細書などを通して、任意に選抜された合意体によってビザンチン障害耐性合意を行う方法が紹介された。
【0048】
この合意アルゴリズムによれば、下記式1および式2を同時に満足するp(pは成功確率)とf(fはビザンチンの大きさで1以上の定数)を見つけることができ、3f+1を合意体の大きさに決定することができる。ここで、nは全体参加ノードの数、bはビザンチンノードの数で、全体ノードに含まれるビザンチンノードの比率がbpの場合、bはn×bpになる。
【0049】
下記式1は、b個のビザンチンノードがそれぞれ成功確率(success probability)p、失敗確率1-pであるコイントス(coin toss)をする場合、成功したビザンチンノードがf個を超える確率がPmax_bzt以下になることを意味する。また、下記式2は、全体n個のノードがそれぞれ成功確率p、失敗確率1-pであるコイントスをする場合、成功したノードが3f個以下の確率がPmin_node以下になることを意味する。
【0050】
【0051】
【0052】
前述した論文などで紹介された合意アルゴリズムは、全体ノード数がnであり、前記2つの式の条件を満足する成功確率pであるコイントスを行った結果、成功したノードの数が3f+1個以上の場合に、3f+1個のノードを任意に選択して合意体を構成する。この場合、コイントスに成功したノードを予め知ることができず、したがって、すべてのノードが合意体として選択される可能性があるため、すべてのノードに処理するトランザクションが伝達されなければならない。これは単に前述した論文などで紹介された合意アルゴリズムだけでなく、任意にノードを選抜して合意体を構成し、構成された合意体に相当するノードのみが合意に参加する方式のすべての合意アルゴリズムで共通して発生する問題である。
【0053】
本発明の一実施例によれば、ブロックチェーン分散合意でノードの持分比率に基づいてビザンチン障害耐性分散合意が行われる。特に、本発明の一実施例によれば、選択された一部のノードのみトランザクションを処理し、ブロックごとにすべてのノードのうち任意に(randomly)選択された合意体が新規ブロックを生成してブロックチェーンに連結することができる。
【0054】
本発明の一実施例によれば、前記2つの式において、nを全体ノードの数ではない全体ノードに発行された持分(shares)の合計として用い、bはビザンチンノードの数(最大ビザンチンノード数)ではなくビザンチンノードが保有した持分(全体持分に含まれる最大ビザンチン持分)として用いることができる。
【0055】
ノードではない持分を前記式に適用することにより、一部のノード(後述するメジャーシェアホルダーノード)だけがトランザクション(transactions)を処理しながらも、全体ノードが合意に参加できるようになる。これによってランダム合意体を構成して分散合意を進行させ、合意されたブロックをブロックチェーンに連結することができる。
【0056】
ノード数に基づいて、前記式1および式2を用いて合意体を構成すれば、合意体を構成する可能性があるすべてのノードがトランザクションを受信しなければならないので、トランザクション処理のための負荷による性能低下が発生しうる。
【0057】
本発明の一実施例によれば、トランザクションを処理するノードが選定され、このノードを用いて合意ノードが選定され、合意ノードを用いて分散合意が行われて新規ブロックをブロックチェーンに連結することができる。
【0058】
まず、トランザクション処理のためのノードは、次のように選定できる。
【0059】
ブロックチェーンを構成する各ノードが所有した持分値(share value、share size)を降順に整列し、大きい持分値を有するノードからメジャーシェアホルダーノード(major shareholder nodes)として選定する。ここで、メジャーシェアホルダーノードは、それぞれ所有した持分の合計が、予め設定された値以上のノードであってもよい。ここで、メジャーシェアホルダーノードは、選定されたメジャーシェアホルダーノードの累積持分が全体持分の特定持分比率以上になるまで選定されてもよく、予め定義された個数だけ持分値が大きいノードから選定されてもよい。
【0060】
このように選定されたメジャーシェアホルダーノードのみ選択的にトランザクションを処理するために、処理されるトランザクションを受信することができる。ここで、メジャーシェアホルダーノードを除いた残りのノードは、トランザクション仲介役だけを行うことができる。
【0061】
このように、全体ノードの中から、トランザクション処理のためのメジャーシェアホルダーノードを別個に選定すれば、分散合意に参加するすべての合意ノードのうちメジャーシェアホルダーノードのみ、処理されるトランザクションを受ける。したがって、全体ネットワークのトラフィックコストを低減することができる。ここで、メジャーシェアホルダーノードは、合意体が構成されると、自ら有するトランザクションを分散合意に用いることができる。
【0062】
図1は、本発明の一実施例によるメジャーシェアホルダーノードを含むノードの持分保有状態およびトランザクション処理を示すテーブルである。
【0063】
図1を参照すれば、全体ノードの個数は100個であり、発行された総持分は180個であり、上位10個のノードが所有した累積持分が90個で全体持分の50%であることが分かる。
【0064】
ここで、全体持分の50%を所有したノード1、ノード2、ノード3、ノード4、ノード5、ノード6、ノード7、ノード8、ノード9およびノード10がメジャーシェアホルダーノードとして選定される。ここで、選定されたメジャーシェアホルダーノードであるノード1、ノード2、ノード3、ノード4、ノード5、ノード6、ノード7、ノード8、ノード9およびノード10のみ、処理されるトランザクションを受け、残りのノード11、ノード12、...、ノード99およびノード100は、トランザクション仲介役だけを行うことができる。
【0065】
以下、本発明の一実施例による分散合意のための合意ノード選定方法を説明する。
【0066】
基本的に、本発明の一実施例による合意ノードの選定は、前記式1および式2を持分ベースで用いて行われる。
【0067】
全体参加ノードが保有した持分の合計がn、ビザンチン比率がbpの場合、最大ビザンチン持分はb(=n×bp)になり、このとき、前記式1および式2を同時に満足するpとfを見つけることができる。
【0068】
すなわち、ブロックチェーンを構成するノードは、それぞれ自身の持分値だけ成功確率がpであるコイントス(coin toss)を繰り返し行い、すべてのノードの結果を収集した後、成功した持分の合計が3f+1以上の場合、3f+1の持分を所有した任意のノードを合意ノード(合意体)として選定する。ここで、特定ノードが過度に多い合意体持分(コイントスに成功した持分)を保有するのを防止するために、参加持分のうち上限までのみ有効な持分として認める方式を適用してもよい。
【0069】
許容可能なビザンチン比率b
pを20%、P
min_node=1.0e
-6、P
max_bzt=2.0e
-16であると想定すれば、
図1の例において、100個のノードが保有した総持分nは180であるので、式1および式2を同時に満足するfは36であり、pは0.7666666666666667である。
【0070】
下記表1は、ビザンチン比率bpを20%、Pmin_node=1.0e-6、Pmax_bzt=2.0e-16であると想定した場合、前述した論文「Algorithm based on Byzantine agreement among decentralized agents(BADA)」、米国特許出願公開第2019/0327084号明細書、米国特許出願公開第2019/0379538号明細書および米国特許出願公開第2020/0403776号明細書などに開示された分散合意アルゴリズムによって、ノードを基準として前記式1および式2を満足するfとpを見つけた場合と、本発明の一実施例により持分を基準として前記式1および式2を満足するfを見つけた場合の結果を比較した表である。
【0071】
【0072】
前記表1中、ノードベース(NODE BASED)方式の場合、nはすべてのノードの個数であり、3f+1は合意体(consensus congress)に相当する合意ノード(consensus nodes)の個数であり、2f+1は合意定足数(consensus quorum)に相当する定足数ノード(quorum nodes)の個数であり、fは確率Pmax_bztに相応するビザンチンノードの個数である。
【0073】
前記表1中、持分ベース(SHARE BASED)方式の場合、nはすべてのノードが保有した持分の総計であり、3f+1は合意体(consensus congress)に相当する合意持分(consensus shares)の個数であり、2f+1は合意定足数(consensus quorum)に相当する定足数持分(quorum shares)の個数であり、fは確率Pmax_bztに相応するビザンチン持分の個数である。
【0074】
すなわち、参加ノードが成功確率pであるコイントスを自ら所有した持分値(share value)だけ繰り返し行うとき、成功した総持分の数は二項分布に従い、1回以上成功したすべてのノードは合意体候補ノードになる。言い換えれば、成功した持分を保有したすべてのノードが合意体候補ノードになる。
【0075】
表1の例において、条件を満足する総持分nと成功確率pを考慮すれば、平均的に138(=n×p=180×0.767)個程度の持分がコイントスに成功する。したがって、約138個の成功した持分の中から、109個(3f+1)の成功した持分(合意体持分)を所有したノードを合意体(consensus congress)に相当する合意ノード(consensus nodes)として選択することができる。
【0076】
合意体持分109個を構成するとき、優先的にメジャーシェアホルダーノード(major shareholder nodes)から成功した持分を選択すれば、平均的に69(=90×0.767)個程度のメジャーシェアホルダーノードの成功した持分が合意体持分として選択されるはずである。このとき、残りの40個の合意体持分は、ノード11からノード100の間のノードの成功した持分から任意に(randomly)選択される。実際に選択される持分は確率分布によって決定されるが、ここでは、概念説明のために、簡単に平均値を例に挙げた。
【0077】
選択されたメジャーシェアホルダーノードの成功した持分69個が、
図1の10個のメジャーシェアホルダーノードに分散していれば、合意体持分(consensus shares)を保有した合意体ノード(consensus nodes)は、10個のメジャーシェアホルダーノードと残りの40個のノード(残りのノードは持分が1であるので)とをあわせて計50個になる。これは、前記表1から分かるように、ノードを基準として合意体を選抜すれば、100個のノードが参加した場合、61個の合意ノードが必要になるのに対し、より少ない数の合意ノードで分散合意が可能であることを意味する。
【0078】
また、既存のDPoSなどの委任方式の分散合意アルゴリズムでは、合意権限が委任されたノード(EOSの場合、bp node)だけが合意に参加し、残りのノードは合意に参加できない。これに対し、本発明の一実施例による合意アルゴリズムは、全体合意体ノード50個のうち10個のみメジャーシェアホルダーノードとして選抜されるので、所有した持分が1以上である他のノードが依然として合意に参加できる。したがって、本発明の一実施例による合意アルゴリズムは、トランザクション処理のための別のノードを備えながらも、合意にはすべてのノードが参加可能で脱中央化の維持が可能である。
【0079】
図2は、本発明の一実施例による分散合意方法を示す動作フローチャートである。
【0080】
図2を参照すれば、本発明の一実施例による分散合意方法によれば、ブロックチェーンを構成するノードが、それぞれ持分値(share value)に相応する回数だけ成功確率pに相応する演算(operation)を行う(S210)。
【0081】
ここで、ブロックチェーンを構成するノードは、トランザクション処理のためのメジャーシェアホルダー(major shareholder)ノードを含むことができる。
【0082】
ここで、演算は、前記演算を行うノードのナンスチェーン(nonce chain)を用いて生成されたランダム値を用いて、前記成功確率に相応する基準値(threshold)と比較することができる。
【0083】
また、本発明の一実施例による分散合意方法によれば、少なくとも1つの成功した前記演算に相応する持分(at least one share corresponding to the operation which is successful)を保有したノードが、合意体ノード(consensus nodes)として選定されるためのメッセージを送る(S220)。
【0084】
さらに、本発明の一実施例による分散合意方法によれば、成功した前記演算に相応する持分(shares corresponding to the operation which is successful)の中から選択された合意体持分(consensus shares)を保有したノードが、前記合意体ノードとして分散合意を行う(S230)。
【0085】
ここで、メジャーシェアホルダーノードが保有した持分のうち成功した前記演算に相応する持分は、合意体持分として選択されるための優先権(priority)を有することができる。
【0086】
ここで、メジャーシェアホルダーノードは、合意体持分の上限(upper limit)を有することができる。
【0087】
ここで、メジャーシェアホルダーノードは、持分保有順番に基づいて、持分を多く保有した順に前記ノードの中から選択される。
【0088】
ここで、メジャーシェアホルダーノードは、選択されたメジャーシェアホルダーノードの累積持分が全体持分の予め設定された比率以上になったり、選択されたメジャーシェアホルダーノードの個数が予め設定された個数以上になるまで選択される。
【0089】
ここで、メジャーシェアホルダーノードは、合意体ノードとして選定されれば、トランザクション(transactions)を含むデリゲートリクエスト(delegate request)メッセージを送り、合意体ノードのうちメジャーシェアホルダーノードではない他のノードは、トランザクションを含まないデリゲートリクエストメッセージを送ることができる。
【0090】
ここで、ブロックチェーンを構成するノードは、前記持分値(share value)のほか、少なくとも1つの他の持分値(at least one other share value)を有し、前記持分値と、前記他の持分値とに基づいて、他の種類のサービスを並列処理することができる。
【0091】
ここで、前記ナンスチェーンに相応するナンス値は、前記持分値と、前記他の持分値とを共有することができる。このようにナンス値を共有する場合、前ブロックの持分関連ハッシュを用いれば、2つ以上の持分値に対するコイントスが可能である。
【0092】
図3は、本発明の一実施例によるブロックチェーン生成方法により新規ブロックが合意されてブロックチェーンに追加される例を示すブロック図である。
【0093】
図3を参照すれば、現在ブロック100まで合意完了してブロックチェーンに連結されている状態でブロック101に対する分散合意が行われて合意に成功すれば、ブロック101がブロックチェーンに連結されることが分かる。
【0094】
ここで、ブロック100の合意過程でブロック101の合意体を決定するためのノード(ノードごとに持分値だけ)のコイントス結果が収集され、前述した例のように、109個の成功持分を所有した50個のノードが合意体(合意ノード)として選定される。
【0095】
図4は、本発明の一実施例によるブロックチェーン生成方法を示すテーブルである。
【0096】
図4を参照すれば、本発明の一実施例によるブロックチェーン生成方法は、合意ノードのうちノード5がブロック101のチェアノードであることが分かる。
【0097】
図4の例は、
図1~
図3により説明した本発明の一実施例に相応するもので、合意ノードは109個の成功持分を保有した50個のノードで、ノード1~ノード10のメジャーシェアホルダーノードを含む。
図4に明示的に示さないものの、合意ノードは、10個のメジャーシェアホルダーノードを除いてノード11~ノード100から選択された40個のノードを含む。
【0098】
図4の例において、合意体が構成されるとき、各ノードの成功持分も公開されたものと想定する。
【0099】
ブロック100の合意後、まだ処理されていないトランザクションt1、t2、t3、t4がそれぞれのメジャーシェアホルダーノードに伝達されて、ノード1~ノード10がトランザクションt1、t2、t3、t4を有している。
【0100】
ブロック101のデリゲートリクエスト(delegate request)ステップで合意ノードそれぞれが自ら受信したトランザクション入りのメッセージをチェアノード(chair node)に伝達する。ここで、メッセージ形態はDr(node、{txs})であってもよく、メッセージ完全性のために電子署名などの付加情報がメッセージに含まれてもよい。以下、説明の便宜のために、付加情報を除いた必須データについてのみ簡略に説明する。
【0101】
合意ノードのうちメジャーシェアホルダーノードであるノード1~ノード10は、
図3に示されるように、トランザクション{t1、t2、t3、t4}を含むDr(node、{t1、t2、t3、t4})メッセージをチェアノードに伝達する。ここで、ノード11~ノード100から選択された40個の合意ノードは持っているトランザクションがないので、Dr(node、{})のようなメッセージをチェアノードのノード5に送信する。
【0102】
デリゲートリクエスト(delegate request)ステップで、チェアノードのノード5は、Dr()メッセージ(delegate request messages)を送信したノードの成功した持分の合計が定足数(quorum)の大きさである73(2f+1)より大きく、同時にノード1~ノード10から受信したDr()メッセージの成功した持分の合計が37(f+1)個以上の場合に、プリペア(prepare)メッセージを生成して定足数ノード(quorum nodes)に伝達し、チェアノードの状態をプリペア(Prepare)に変更する。
図4の例において、定足数ノードは、チェアノードを含む計14個(ノード1、ノード2、ノード3、ノード4、ノード5、ノード6、ノード7、ノード8、ノード9、ノード10、ノード12、ノード35、ノード76、ノード100)である。
【0103】
チェアノードによって生成されたプリペアメッセージ(prepare message)は、受信されたデリゲートリクエストメッセージそれぞれに含まれるトランザクション{t1、t2、t3、t4}のうち37(f+1)個以上の成功した持分を所有したノードが処理要求したトランザクションと、付加情報とが含まれる。ここで、付加情報は、含まれたトランザクションに相応する証拠や多重署名のためのデータなどであってもよい。多重署名を用いた合意技術は、前述した論文および明細書に詳しく説明されている。
【0104】
前述のように、合意ノードのうちメジャーシェアホルダーノードが各自の持分だけコイントスを繰り返し行うとき、成功した総回数の平均は69である。前述のように、fが36であるので、このうち37個(53.62%)の成功した持分の同意を取得したトランザクションを含むプリペアメッセージがチェアノードによって生成されるはずである。
図4により説明された例において、トランザクション{t1、t2、t3、t4}を処理要求したノード1~ノード10の10個のノードが所有した成功した持分が69個で37(f+1)個以上であるので、トランザクションt1、t2、t3、t4と、各トランザクションの処理要求ノードの成功持分証拠を含むプリペア(prepare)メッセージが生成され、定足数(quorum)ノードに送信される。
【0105】
10,000TPS(Transactions Per Second)性能のために必要なトランザクションデータのノードあたりの負荷が20Mbits/sであり、ノード1~ノード10は、1秒あたり10,000個のトランザクションを受信して異常の有無を確認しなければならず、10,000個のトランザクションを含むDr(node、{10,000txs})メッセージを生成してチェアノードに送信しなければならない。この場合、チェアノードを除いた9個のノードからチェアノードに伝達されるロー(raw)トランザクション伝達のためのトラフィックは180Mbits/sが必要である。もちろん、トランザクションハッシュを用いれば、ネットワークコストを低減することができる。
【0106】
ノード11~ノード100の中から選択された40個の合意ノードは受信して格納したトランザクションがないため、空のトランザクション入りのDr(node、{})メッセージをチェアノードに伝達するので、トランザクション伝達のためのネットワークコストが0である。
【0107】
さらに、チェアノードの立場では、40個のノードから受信したDr(node、{})メッセージがトランザクションを含んでいないので、トランザクション処理のためのコンピューティング負荷が減少する。
【0108】
前述した論文および明細書に紹介された合意アルゴリズムの場合、前記表1に記載されたように、合意体ノード61個のうちチェアノードを除いた60個のノードがそれぞれ10,000個のトランザクションを含むDr(node、{10,000txs})メッセージをチェアノードに送らなければならず、この場合、チェアノードが受信すべきトラフィックは60×20Mbits/s=1,200Mbps/sにもなり、1Gbits性能のネットワーク帯域幅でも処理が不可能である。もし、ネットワーク帯域幅に制限がない場合にも、チェアノードは60個のメッセージがすべてトランザクションを含んでいるので、これを処理するためのコンピューティング資源を消耗するしかない。
【0109】
図4の例において、定足数ノードは、73(2f+1)個の成功持分を所有した14個のノード(ノード1、ノード2、ノード3、ノード4、ノード5、ノード6、ノード7、ノード8、ノード9、ノード10、ノード12、ノード35、ノード76、ノード100)である。表1に記載されたように、ノードベース方式の場合、41個のノードが定足数ノードにならなければならなかったため、本発明によれば、定足数ノードが41個から14個に減少して、合意処理過程のコンピューティング資源とネットワーク資源を低減する効果が発生する。下記表2は、ノードベース合意アルゴリズムと持分ベース合意アルゴリズムのノード個数の差を示す。
【0110】
【0111】
再び
図4を参照すれば、合意ノードのうちプリペア(prepare)メッセージを受信した定足数ノード(quorum nodes)は、ノード状態をプリペア(prepare)ステップに変更する。ノード状態がプリペアステップである定足数ノードのみコミット(commit)メッセージを生成することができる。ノード状態がプリペアステップである定足数ノードは、それぞれ受信したプリペアメッセージの異常の有無を確認し、異常がない場合、当該ノードの署名を含むコミットメッセージを生成してチェアに伝達し、ノード状態をコミット(commit)に変更する。
【0112】
プリペア状態のチェアノードは、自らを除いたすべての定足数ノードからコミットメッセージを受信した場合、最終的に合意されたトランザクションt1、t2、t3、t4とノードの署名を結合した多重署名を含むコミッテッド(committed)ブロックを作って、自身のブロックチェーンでブロック100の次にブロック101として追加する。これと同時に、チェアノードは、すべてのノードに合意されたブロック101を伝播し、ノード状態をコミッテッド(committed)状態に変更する。
【0113】
また、ブロック101に対してコミッテッド状態ではないすべてのノードは、コミッテッドブロックを受信してブロックの多重署名の異常の有無を確認して、異常がない場合にのみ、自分のブロックチェーンのブロック100の次にブロック101を追加し、自身の状態をコミッテッド状態に変更する。ブロック101に対してコミッテッド状態であるすべてのノードは、ブロック102を合意する準備状態になる。
【0114】
図5は、本発明の一実施例によるブロックチェーン生成方法を示す動作フローチャートである。
【0115】
図5を参照すれば、本発明の一実施例によるブロックチェーン生成方法によれば、ブロックチェーンに追加ブロックを連結するために決定された合意体ノードの1つであるチェア(chair)ノードが、前記合意体ノードのうちメジャーシェアホルダー(major shareholder)ノードから前記ブロックチェーンに連結された前ブロックの合意後に処理されなければならないトランザクションを含むデリゲートリクエスト(delegate request)メッセージを受信する(S510)。
【0116】
ここで、合意体ノードは、前記ブロックチェーンを構成するノードそれぞれの持分値(share value)に相応する回数だけ行われる、成功確率pに相応する演算(operation)に基づいて選定される。
【0117】
ここで、合意体ノードは、成功した前記演算に相応する持分(shares corresponding to the operation which is successful)の中から選択された合意体持分(consensus shares)を保有したノードであってもよい。
【0118】
ここで、メジャーシェアホルダーノードは、持分保有順番に基づいて、持分を多く保有した順に前記ノードの中から選択される。
【0119】
ここで、メジャーシェアホルダーノードは、前記合意体持分の上限(upper limit)を有することができる。
【0120】
また、本発明の一実施例によるブロックチェーン生成方法によれば、前記チェアノードが、前記合意体ノードのうち前記メジャーシェアホルダーノードを除いた残りのノードから前記トランザクションを含まないデリゲートリクエストメッセージを受信する(S520)。
【0121】
ここで、ステップS510およびステップS520は、
図1に示された順に順次に行われるのではなく、デリゲートリクエストメッセージを送信する合意ノードがデリゲートリクエストメッセージを送信する順序により行われる。すなわち、ステップS510およびステップS520は、
図5に示された順序、その逆順または同時に行われる。
【0122】
また、本発明の一実施例によるブロックチェーン生成方法によれば、前記チェアノードが、前記トランザクションを含むデリゲートリクエストメッセージと、前記トランザクションを含まないデリゲートリクエストメッセージとを用いて、持分ベース検証を行う(S530)。
【0123】
ここで、持分ベース検証は、前記トランザクションを含むデリゲートリクエストメッセージおよび前記トランザクションを含まないデリゲートリクエストメッセージに相応する成功した持分の合計が、定足数の大きさ(2f+1)より大きいか否かを含むことができる。ここで、前記プリペアメッセージは、成功した持分の合計が前記定足数の大きさに1を加えた数の半分(f+1)に相当する基準自然数(reference natural number)を用いて検証されたトランザクションを含むことができる。
【0124】
前記持分ベース検証が成功した場合、前記チェアノードは、定足数(quorum)ノードにプリペア(prepare)メッセージを送る(S540)。
【0125】
また、本発明の一実施例によるブロックチェーン生成方法によれば、前記チェアノードが、前記定足数ノードからコミット(commit)メッセージを受信する(S550)。
【0126】
さらに、本発明の一実施例によるブロックチェーン生成方法によれば、前記チェアノードが、前記コミットメッセージに基づいて、前記ブロックチェーンに前記追加ブロックを連結する(S560)。
【0127】
図6は、本発明の一実施例によるブロックチェーンを構成するノードがそれぞれ持分値に相応する回数だけ成功確率に相応する演算を行う過程を示す動作フローチャートである。
【0128】
図6は、各ノードがVRF(Verifiable Random Function)や前述した論文および明細書で説明されたナンスチェーン(nonce chain)を用いて1回のコイントスを行う技術に基づいて、各ノードが保有した持分値(share value)だけコイントスを繰り返す技術を説明する。
【0129】
図6を参照すれば、まず、ランダム値Rnが生成され、変数passとloopが初期化されることが分かる(S610)。
【0130】
図6に示された例において、Rn=Hash(Nonce(k)、HASH VALUE OF PREVIOUS BLOCK)は、前述した論文および明細書で詳しく説明されたように、ナンスチェーンを用いて任意のランダム値を1つ生成するプロセスである。ここで、「HASH VALUE OF PREVIOUS BLOCK」は、前ブロックのヘッドハッシュに相応するものであってもよい。「loop=SHARE VALUE」は、各ノードの持分値で、変数loopを初期化することを意味する。変数passは0に初期化される。
【0131】
変数loopが0より大きいか否かが判断される(S620)。
【0132】
ステップS620でloopが0より大きいと判断されれば、コイントスを行う持分があることを意味するので、ステップS630へ進んで、コイントスに相当する演算を行う(S630)。
【0133】
ここで、ステップS630は、ランダム値Rnが基準値(threshold)より小さいか否かを判断することができる。基準値(threshold)は、前記式1および式2により決定されたp値に相応する値で、p値から決定できる。例えば、演算を32bits単位とする場合、すべてのビットが1である32bitsとpとを乗じた値を基準値(threshold)として用いることができる。
【0134】
ステップS630でRnが基準値(threshold)より小さいと判断されれば、コイントスに成功したとみて、ステップS640へ進んで、変数passを1だけ増加させる。
【0135】
以後、変数loopは1だけ減少する(S650)。
【0136】
ステップS630でRnが基準値(threshold)より小さいと判断されなければ、コイントスに失敗したとみて、変数passを増加させずに、ステップS650へ進む。
【0137】
以後、現在Rnをハッシュしてランダム値Rnをアップデートする(S660)。
【0138】
ランダム値がアップデートされた後には、ステップS620が再び行われる。
【0139】
ステップS620でloopが0より大きくないと判断されれば、ステップS670が行われて、変数passが0より大きいか否かを確認する。
【0140】
ステップS670の判断の結果、変数passが0より大きいと判断されれば、Next Congressmanメッセージを出力して、自身が次ブロックの合意体候補になりうることを知らせる(S680)。
【0141】
ここで、Next Congressmanメッセージは、計算されたpass値を含むので、Next Congressメッセージを受信したノードは、Next Congressmanメッセージを送信したノードがコイントスに成功した回数が分かる。
【0142】
ステップS670の判断の結果、変数passが0より大きくないと判断されれば、動作を終了する。
【0143】
Next Congressmanメッセージを受信した他のノードは、再び
図6に示された段階を行って、異常の有無を確認することができる。
【0144】
図7は、本発明の一実施例によるブロックチェーンを構成するノードが互いに異なる類型の持分値を有する場合の例を示すテーブルである。
【0145】
図7を参照すれば、それぞれのノードが互いに異なる複数の持分値(SHARE VALUE1、SHARE VALUE2)を有することが分かる。
【0146】
このように、参加ノードそれぞれが互いに異なる複数の持分値を含むと、参加ノードが2つ以上の他の合意を並列処理することができる。
【0147】
持分値(SHARE VALUE1)に対してはノード1~ノード10がメジャーシェアホルダーノードになって合意が進み、持分値(SHARE VALUE2)に対してはノード11~20がメジャーシェアホルダーノードになって合意が進む。したがって、持分値(SHARE VALUE1、SHARE VALUE2)は、それぞれ異なるブロックチェーンに新規ブロックを連結するのに用いられる。
【0148】
このように複数の持分値を用いると、ノードが過度に多い場合にも、互いに異なる種類のサービスをシャード(shard)分離なしに処理可能である。
【0149】
複数の持分値を用いる場合、証明可能なランダム値を持分値ごとに別途に生成すれば、管理および運用に困難がありうる。この場合、持分値ごとに
図6のRnを生成するとき、各ノードは1つのnonce(k)のみを生成し、ノードが所有した持分値ごとに異なる「前ブロックの持分関連ハッシュ値」を用いれば、1つのnonce(k)のみをもって2つ以上の持分値に対するコイントスを行うことができる。
【0150】
図8は、本発明の一実施例によるコンピュータシステムの構成を示すブロック図である。
【0151】
実施例による分散合意装置、ブロックチェーン生成装置およびブロックチェーンを構成するノードは、コンピュータで読み込み可能な記録媒体のようなコンピュータシステム700で実現される。
【0152】
コンピュータシステム700は、バス720を介して互いに通信する1つ以上のプロセッサ710と、メモリ730と、ユーザインターフェース入力装置740と、ユーザインターフェース出力装置750と、ストレージ760とを含むことができる。また、コンピュータシステム700は、ネットワーク780に接続されるネットワークインターフェース770をさらに含むことができる。プロセッサ710は、中央処理装置またはメモリ730やストレージ760に格納されたプログラムまたは処理命令を実行する半導体装置であってもよい。メモリ730およびストレージ760は、揮発性媒体、不揮発性媒体、分離型媒体、非分離型媒体、通信媒体、または情報伝達媒体の少なくとも1つ以上を含む記憶媒体であってもよい。例えば、メモリ730は、ROM731やRAM732を含むことができる。
【0153】
ここで、メモリ730には少なくとも1つのプログラムが記録される。
【0154】
ここで、プロセッサ710は、前記プログラムを実行することができる。ここで、前記プログラムは、ブロックチェーンを構成するノードそれぞれの持分値(share value)に相応する回数だけ成功確率pに相応する演算(operation)を行い、少なくとも1つの成功した前記演算に相応する持分(at least one share corresponding to the operation which is successful)を保有したノードが合意体ノード(consensus nodes)として選定されるための、メッセージを送り、成功した前記演算に相応する持分(shares corresponding to the operation which is successful)の中から選択された合意体持分(consensus shares)を保有したノードを前記合意体ノードとして用いて分散合意を行うことができる。
【0155】
ここで、前記ブロックチェーンを構成するノードは、トランザクション処理のためのメジャーシェアホルダー(major shareholder)ノードを含むことができる。
【0156】
ここで、前記メジャーシェアホルダーノードは、前記合意体ノードとして選定されれば、トランザクション(transactions)を含むデリゲートリクエスト(delegate request)メッセージを送り、前記合意体ノードのうちメジャーシェアホルダーノードではない他のノードは、トランザクションを含まないデリゲートリクエストメッセージを送ることができる。
【0157】
ここで、前記メジャーシェアホルダーノードが保有した持分のうち成功した前記演算に相応する持分は、前記合意体持分として選択されるための優先権(priority)を有することができる。
【0158】
ここで、前記メジャーシェアホルダーノードは、前記合意体持分の上限(upper limit)を有することができる。
【0159】
ここで、前記メジャーシェアホルダーノードは、持分保有順番に基づいて、持分を多く保有した順に前記ノードの中から選択される。
【0160】
本発明の一実施例による持分ベース分散合意方法は、
図1の例により分かるように、トランザクションが伝達されるノードの数が1/10に減少する効果がある。また、表2により分かるように、合意体の大きさがノードをnとする場合に61個であるのに対し、持分をnとする場合は50個に減少する。さらに、定足数の大きさは、ノードをnとする場合に41個であるが、持分をnとする場合は14個に減少するので、合意のためのメッセージ複雑度およびトラフィック量が大きく減少する。
【0161】
それだけでなく、
図7の例のように、各ノードが互いに異なる持分値を2個以上有する場合、別々のサービスが1つのブロックチェーンで並列に処理できる。かつてこのような並列効果のためには物理的なシャード(shard)分割を必要としていたが、本発明によれば、グループを分けなくても並列処理が可能である。
【0162】
以下、エポック単位でシャード(shard)を分割せず、ブロックチェーンに付加的なチェーンを付加し、チェーンごとに並列処理を行う技術に関してより詳しく説明する。
【0163】
一般的なブロックチェーンシステムにおいてすべてのノードが新規ブロックを生成できるので、処理されるべきトランザクションはすべてのノードに伝達される必要がある。この場合、ブロックチェーンにあるすべてのノードがトランザクションを処理するために同一の処理を繰り返さなければならないので、ノードの増加による処理性能の増加を期待することが難しい。これを解決するために、シャードごとに別のトランザクションを処理するようにするシャーディングを適用すれば、シャードごとに処理されるトランザクションが分割されて並列処理されるので、全体ブロックチェーンの性能が向上する。
【0164】
シャードを運用するためには、エポック(epoch)単位で各シャードに適切にノードを割当てることを繰り返して中央化を防止する。ここで、シャードは、ブロックチェーンに参加する1つ以上のノードの集合に相応するものであってもよい。しかし、エポック単位でノードを再び割当てる場合、エポックの中間(the middle of the epoch)にシャードを追加したり、1つのノードが同時に2つ以上のシャードに参加することが許容できない。一般的に、合意に参加するノードの数が増加すれば、セキュリティ性などブロックチェーンの特性に肯定的な効果が発生するが、シャードごとにノードを分散させれば、合意に参加するノードの数が減少する。
【0165】
イーサリアムでは、PoS(Proof of Stake)を収容するために、32イーサを預けたアカウントがバリデータ(validator)になり、これらの投票により合意が行われる。2つ以上のシャードがある場合には、これらのバリデータが任意に割当てられる。
【0166】
図1~
図7により説明した分散合意方法、分散合意装置およびブロックチェーン生成方法によれば、ブロックチェーンに参加するノードが所有した資産(asset)を用いて投票権(持分値)を取得することができる。ここで、資産と持分値との交換比率は1:1であってもよく、1:K(Kは正の実数)であってもよい。
【0167】
例えば、ブロックチェーンに参加する特定ノードは、特定チェーンの持分(share)のために保有した残高(balance)から100の資産を預ける(deposit)ことができ、資産と持分値との交換比率が1:1の場合、100の持分値を得ることができる。ここで、前述のように、持分値は、結局、投票権に相当すると考えられる。
【0168】
図9は、ブロックチェーン参加ノードの資産保有状況の一例を示す表である。
【0169】
図9を参照すれば、ユーザA、B、C、D、E、F、G、H、I、J、Kは、各自のアカウントに資産(asset)を保有しており、追加的なブロックチェーン(10番目ブロックチェーンおよび15番目ブロックチェーン)のためにユーザの一部は資産を預ける(deposit)ことが分かる。以下、説明の便宜のために、資産と持分値との交換比率が1:1の場合を例に挙げて説明する。
【0170】
本発明の一実施例によれば、初期にメジャーシェアホルダー(major shareholder)ノードだけで構成された合意体によって新しい付加的なチェーンを開始することができる。また、新たに生成された1つの付加的なチェーンに参加可能なノードの最大数をコントロールするために、マイナーシェアホルダー(minor shareholder)ノードが所有したすべての持分値の合計が、メジャーシェアホルダー(major shareholder)ノードが所有した持分値の合計より小さいか、等しい場合にのみ、新しいノードが当該チェーンに追加されるようにする。
【0171】
ここで、マイナーシェアホルダーノードは、特定チェーンに対して、
図1~
図8の例により説明したメジャーシェアホルダーノードを除いた他のすべてのノードに相応するものであってもよい。
【0172】
図9に示された例において、付加的なチェーン(10番目チェーン)を追加するために、ノードC、F、Gがそれぞれ10ずつの資産(asset)を預け、10番目チェーンのメジャーシェアホルダー(major shareholder)ノードになり、10番目チェーンで合意が開始できるようにする。ここで、10番目チェーンのメジャーシェアホルダーノードが所有した持分値(share values)の合計が30であるので、10番目チェーンに追加できる残りのノードの持分値の合計が30以下の場合にのみ、ノード追加が可能である。
【0173】
このように、1つのチェーンで許容される最大個数のノードが当該チェーンに参加した場合、より多くのノードが当該チェーンに追加されるためには、メジャーシェアホルダーノードの持分値の合計(第1合計持分値)を増加させなければならず、メジャーシェアホルダーノードの持分値の合計は拡張プロセスによって増加できる。ここで、拡張プロセスは、第1プロセス、第2プロセス、および第3プロセスのいずれか1つであってもよく、これについては、後により詳しく説明する。
【0174】
図9に示された例において、10番目チェーンに参加するマイナーシェアホルダー(minor shareholder)ノードの個数が30個より少ない場合、投票の結果が常にメジャーシェアホルダーノードによって決定できるので、メジャーシェアホルダーノードの実際の適用投票数を制限してもよい。例えば、6個のマイナーシェアホルダーノードが10番目チェーンに参加する場合、メジャーシェアホルダーノードC、F、Gそれぞれの最大投票権(share values)は、10ではない2に制限されて、メジャーシェアホルダーノードの投票権(share value)の総計が、マイナーシェアホルダーノードの投票権の総計と一定比率維持されるようにする。この場合、メジャーシェアホルダーノードの投票が合意結果に過度の影響を及ぼさない。
【0175】
図9の例により説明された技術は、新しいサービスを提供するために新しいチェーンを生成するとき、試験的に少ない個数のノードだけが新しいチェーンに参加してサービスを運用し、サービスが活性化されれば、当該チェーンに参加するノードの個数を増加させるようにする。ここで、新しいチェーンのための初期メジャーシェアホルダーノードを構成する方法や条件などは、スマートコントラクトなどによって定められる。
【0176】
ここで、メジャーシェアホルダーノードだけでなく、マイナーシェアホルダーノードも、最小1の資産(asset)を預け(deposit)、合意体の構成に参加可能にして、無分別な参加や攻撃を予防することができる。ここで、メジャーシェアホルダーノードのための資産と持分値との交換比率と、マイナーシェアホルダーノードのための資産と持分値との交換比率が互いに異なっていてもよい。
【0177】
ここで、
図4および
図5により説明した合意アルゴリズムを用いる場合、メジャーシェアホルダーノードのみ処理する取引を受信しても合意が可能になる。ここで、
図9の例のように、ノードが同時に2つのチェーンでメジャーシェアホルダーノードにならないように制限すれば、チェーンごとにメジャーシェアホルダーノードが分けられて処理する取引を分離して処理することができる。例えば、
図9の例において、10番目チェーンのメジャーシェアホルダーノードC、F、Gと、15番目チェーンのメジャーシェアホルダーノードA、B、D、Eとは分離され、10番目チェーンのメジャーシェアホルダーノードC、F、Gが処理するトランザクションと、15番目チェーンのメジャーシェアホルダーノードA、B、D、Eが処理するトランザクションとは分離されて処理できる。ここで、マイナーシェアホルダーノードは、10番目チェーンと15番目チェーンの両方に参加できるが、トランザクションを受信しない。
【0178】
図9の例において、10番目チェーンを開始した後、新たに15番目チェーンが生成される。ここで、4個のノードA、B、D、Eがそれぞれ15番目チェーンのために資産(asset)を交換比率に相応するだけ預け、メジャーシェアホルダーノードになる。
図9の例において、4個のノードA、B、D、Eは、それぞれ300の資産を預け(deposit)、300の持分値(share value)を確保(交換比率1:1)してメジャーシェアホルダーノードになる。この場合、15番目チェーンには、最大1200個のノードがマイナーシェアホルダーノードとして参加可能になる。
【0179】
図10は、
図9に示された例において10番目チェーンに参加したノードの参加ノード情報の一例を示す表である。
【0180】
図10を参照すれば、10番目チェーンに参加したノードの参加ノード情報には、10番目チェーンに参加した参加ノードの識別子、参加ノードそれぞれが保有した持分値および当該ノードのメジャー/マイナーの如何が含まれる。
【0181】
図10により例示された参加ノード情報は、10番目チェーンに参加したノードの特性を示すデータ構造と考えられ、すべてのノードに公開される。
【0182】
図10の例に相当する状態で、新規ノードが10番目チェーンに参加しようとする場合、下記の条件を満足する場合にのみ、ノード追加が可能である。
<ノード追加の条件>
メジャーシェアホルダーノードの持分値の合計*適用比率>=マイナーシェアホルダーノードの持分値の合計+新規ノードの持分値
【0183】
ここで、適用比率は0より大きい実数値で、1より小さいか、等しく、例えば、1であってもよい。
【0184】
もし、特定チェーンに参加したノードの個数が許容最大値に達する場合、参加ノードの規模を増加させるための拡張プロセスが行われる。ここで、拡張プロセスは、前記メジャーシェアホルダーノードのいずれか1つ以上に相応する持分値を増加させる第1プロセス、新しいメジャーシェアホルダーノードを追加する第2プロセス、および少なくとも1つの前記マイナーシェアホルダーノードをメジャーシェアホルダーノードに変更する第3プロセス、のいずれか1つであってもよい。
【0185】
まず、第1プロセスは、メジャーシェアホルダーノードの個数は増加させず、既存のメジャーシェアホルダーノードの少なくとも1つ以上の持分値(share value)を増加させて参加ノード数を増加させることである。例えば、10番目チェーンに参加するマイナーシェアホルダーノードの持分値の合計(第2合計持分値)が31になる場合、ノードC、FおよびGがそれぞれ1以上の持分値を増加させてより多くのノードがチェーンに参加できるようにする。
【0186】
次に、第2プロセスは、既存のメジャーシェアホルダーノードと類似の持分値を有する他のノードをチェーンに新しいメジャーシェアホルダーノードとして追加して、チェーンが収容できるノードの個数を増加させることである。例えば、10番目チェーンに参加するマイナーシェアホルダーノードの持分値の合計(第2合計持分値)が31になる場合、任意の新しいノードXが持分値10をもって10番目チェーンの新しいメジャーシェアホルダーノードになる。
【0187】
最後に、第3プロセスは、参加ノードが最大値に達する場合、マイナーシェアホルダーノードのうち最も多い持分値を保有したノードがメジャーシェアホルダーノードに昇格されて、チェーンに参加可能なノードの個数を増加させることである。例えば、
図12に示された202番ブロックで10番目チェーンに参加したマイナーシェアホルダーノードの持分値の合計(第2合計持分値)が31になる場合、ユーザI(USER I)がマイナーシェアホルダーノードのうち最大持分値(2)を有しているので、メジャーシェアホルダーノードに昇格される。ここで、昇格結果は、
図12に示された103番ブロック(202番ブロックの生成タイミングに相応するメインブランチのブロック)に記録されてもよい。
【0188】
図11は、
図9に示された例において15番目チェーンに参加したノードの参加ノード情報の一例を示す表である。
【0189】
図11を参照すれば、15番目チェーンに参加したノードの参加ノード情報には、15番目チェーンに参加した参加ノードの識別子、参加ノードそれぞれが保有した持分値および当該ノードのメジャー/マイナーの如何が含まれる。
【0190】
図11により例示された参加ノード情報は、15番目チェーンに参加したノードの特性を示すデータ構造と考えられ、ブロックチェーンのすべてのノードに公開される。
【0191】
図10および
図11に明示的に示さないものの、参加ノード情報には参加ノードそれぞれが預けた資産に関する情報が含まれてもよい。
【0192】
図9~
図11により説明された例のように、1つのノードが同時に10番目チェーンおよび15番目チェーンのメジャーシェアホルダーノードになることが不可能である。しかし、1つのノードがマイナーシェアホルダーノードとして2つ以上のチェーンに参加することは可能である。
【0193】
図12は、ブロックチェーン(既存のチェーン)に付加的なチェーンが適用された例を示すブロック図である。
【0194】
図12を参照すれば、まず、100番~103番ブロックは、新規チェーンの生成に関する情報を記録するブロックチェーン(既存のチェーン)に相応し、100番~103番ブロックに相応する既存のチェーンは、参加するノードの合意によって正常にブロックが連結される状態であることが想定できる。
【0195】
ここで、10番目チェーン(付加的なチェーン)を新たに生成するために、ノードC、F、Gがそれぞれ10の持分値(share value)をもって10番目チェーンに参加できる。ここで、
図10の参加ノード情報が、
図12の101番ブロックに記録され、10番目チェーンはブロック番号200から始まる。ここで、200番ブロックのブロックヘッドに記録される前ブロックのヘッダーハッシュ値は、101番ブロックのヘッダーハッシュ値に設定できる。
【0196】
以後、15番目チェーン(付加的なチェーン)を新たに生成するために、付加的なチェーンを開始するメジャーシェアホルダーノードであるノードA、B、D、Eに関する参加ノード情報(
図11)が102番ブロックに記録される。前述のように、参加ノード情報は、15番目チェーンに参加するノードそれぞれの識別子、持分値およびメジャー/マイナーの如何を含むことができる。ここで、15番目チェーンは、
図12に示された300番ブロックから始まる。ここで、102番ブロックのヘッダーハッシュ値が300番ブロックのヘッダーに記録されて、既存のチェーンに枝(branch)が新たに生成されたかのようになる。このような構造は、付加的なチェーンの個数が増加するにつれて、木(tree)のような構造を有するようになる。
【0197】
ここで、既存のチェーンに相応するブロック100、101、...、103、付加的なチェーン(10番目チェーン)に相応するブロック200、201、...、202および付加的なチェーン(15番目チェーン)に相応するブロック300、101は、
図1~
図8により説明された合意アルゴリズムを用いて分散合意を行うことができる。ここで、既存のチェーンの合意体(consensus congress)、付加的なチェーン(10番目チェーン)の合意体および付加的なチェーン(15番目チェーン)の合意体は互いに異なり、それぞれの合意体の合意は互いに独立していてもよい。
【0198】
すなわち、
図12に示された例では、新規チェーンの生成情報を記録するチェーン(100番~103番ブロックを含む)を用いて、10番目チェーンおよび15番目チェーンが追加されてブロックが生成される。
【0199】
図9~
図12により説明された付加的なチェーンの追加は、
図1~
図8により説明された合意アルゴリズムと異なる他のアルゴリズムを用いた合意に基づいて行われてもよい。
【0200】
例えば、PBFT(Practical Byzantine Fault Tolerance)合意アルゴリズムを用いて付加的なチェーンの追加が行われてもよい。ここで、合意体のチェアノードが処理されるべきトランザクションを有している場合には、自ら持っているすべてのトランザクションをすべて入れたブロックを候補ブロックとして提案して合意を行ってもよく、合意体のチェアノードが処理されるべきトランザクションを持っていない場合には、トランザクションのない候補ブロックを提案して合意を進行させてもよい。トランザクションのない候補ブロックに基づいた合意は、合意メッセージの大きさが非常に小さくて、非常に早い合意の実行が可能である。
【0201】
さらに、合意体のチェアノードが処理されるべきトランザクションを持っていない場合、候補ブロックを提案する前に、他のノードからトランザクションを受信してもよい。ここで、合意体のチェアノードは、確保されたトランザクションを含む候補ブロックを用いて分散合意を行うことができる。
【0202】
図13は、10番目チェーンと15番目チェーンがマイナーシェアホルダーノードを共有する例を示す図である。
【0203】
図13を参照すれば、メジャーシェアホルダーノードは、チェーン(シャード)ごとに処理するトランザクションを受信し処理しなければならないので、同時に2つ以上のチェーン(シャード)に参加できないが、残りのマイナーシェアホルダーノードは、2つ以上のチェーンに同時に参加できることが分かる。
【0204】
図14は、本発明の一実施例によるブロックチェーンに新しいチェーンを追加する方法を示す動作フローチャートである。
【0205】
図14を参照すれば、本発明の一実施例によるブロックチェーンに新しいチェーンを追加する方法は、ブロックチェーンのノードが前記付加的なチェーン(additional chain)に相応する資産(asset)を預ける(deposit)(S1410)。
【0206】
また、本発明の一実施例によるブロックチェーンに新しいチェーンを追加する方法は、前記資産に相応する持分値(share value)に基づいて、前記ノードが前記付加的なチェーンに追加ブロックを連結するための合意体ノードの1つとして選択される(S1420)。
【0207】
ここで、合意体ノードは、少なくとも1つのメジャーシェアホルダーノードを含むことができ、少なくとも1つのマイナーシェアホルダーノードを含むこともできる。
【0208】
ここで、合意体ノードは、初期にメジャーシェアホルダーノードのみを含むことができる。
【0209】
ここで、ステップS1420のために、前記ノードは、
図2に示されたステップS210、S220を行うことができる。
【0210】
また、本発明の一実施例によるブロックチェーンに新しいチェーンを追加する方法は、前記ノードが前記追加ブロックを連結するための分散合意を行う(S1430)。
【0211】
ここで、前記付加的なチェーンに参加するノードは、トランザクション処理のためのメジャーシェアホルダー(major shareholder)ノードを含むことができる。
【0212】
ここで、付加的なチェーンに参加するノードは、前記メジャーシェアホルダーノードではないマイナーシェアホルダー(minor shareholder)ノードを含み、前記マイナーシェアホルダーノードにはトランザクションが伝達されない。
【0213】
ここで、付加的なチェーンは、前記メジャーシェアホルダーノードに相応する第1合計持分値(first total share value)と、前記マイナーシェアホルダーノードに相応する第2合計持分値(second total share value)とに基づいて、新規ノードの参加可能の有無を決定できる。
【0214】
ここで、新規ノードの参加可能の有無は、前記第1合計持分値と前記第2合計持分値、および前記新規ノードの持分値の合計を比較した結果に基づいて決定される。
【0215】
ここで、第1合計持分値は、前記新規ノードが前記付加的なチェーンに参加可能にするための、拡張プロセスによって増加できる。
【0216】
ここで、拡張プロセスは、前記メジャーシェアホルダーノードのいずれか1つ以上に相応する持分値を増加させる第1プロセス、新しいメジャーシェアホルダーノードを追加する第2プロセス、および少なくとも1つの前記マイナーシェアホルダーノードをメジャーシェアホルダーノードに変更する第3プロセス、のいずれか1つであってもよい。
【0217】
ここで、前記ブロックチェーンの1つのブロックに前記付加的なチェーンに関するデータを記録することができる。
【0218】
ここで、前記付加的なチェーンに関するデータは、前記付加的なチェーンに参加するノードの参加ノード情報と、前記付加的なチェーンに参加するノードの持分値とを含むことができる。
【0219】
ここで、前記付加的なチェーンに関するデータは、前記付加的なチェーンの開始情報を含み、前記付加的なチェーンの開始ブロックは、前記付加的なチェーンに関するデータを記録した前記ブロックチェーンの少なくとも1つのブロックに関する情報を記録することができる。ここで、付加的なチェーンの開始情報は、前記付加的なチェーンが始まる時点での参加ノード情報に相応するものであってもよい。
【0220】
ここで、前記マイナーシェアホルダーノードの少なくとも1つは、前記付加的なチェーン以外のチェーンにマイナーシェアホルダーノードとして参加できる。
【0221】
ここで、前記メジャーシェアホルダーノードは、前記付加的なチェーン以外のチェーンにメジャーシェアホルダーノードとして参加できない。
【0222】
図15は、本発明の一実施例によるブロックチェーンのシャード生成方法を示す動作フローチャートである。
【0223】
図15を参照すれば、本発明の一実施例によるブロックチェーンのシャード生成方法は、付加的なチェーンにメジャーシェアホルダー(major shareholder)ノードとして参加する(S1510)。
【0224】
ここで、ステップS1510は、ブロックチェーンの1つのノードによって行われるものであってもよい。
【0225】
ここで、メジャーシェアホルダーノードは、トランザクション処理のためのものであってもよい。
【0226】
また、本発明の一実施例によるブロックチェーンのシャード生成方法は、前記付加的なチェーンにマイナーシェアホルダー(minor shareholder)ノードとして参加する(S1520)。
【0227】
ここで、ステップS1520は、ブロックチェーンの1つのノードによって行われるものであってもよく、ステップS1520を行うノードは、ステップS1510を行うノードとは異なるノードであってもよい。
【0228】
ここで、マイナーシェアホルダーノードにはトランザクションが伝達されない。
【0229】
また、本発明の一実施例によるブロックチェーンのシャード生成方法は、前記メジャーシェアホルダーノードおよび前記マイナーシェアホルダーノードのいずれか1つ以上を含む合意体(consensus congress)を構成する(S1530)。
【0230】
ステップS1530で合意体を構成する方式は、
図1~
図8により説明された合意アルゴリズムに従ってもよく、
図1~
図8により説明された合意アルゴリズムと異なる他のPBFTなどの合意アルゴリズムに従ってもよい。
【0231】
以上に説明されたシャード(shard)は、ブロックチェーンを構成するノードの集合に相応するものであってもよく、それぞれのシャードは、それぞれのチェーンに対応するものであってもよい。
【0232】
また、本発明の一実施例によるブロックチェーンに付加的なチェーンを追加する装置およびブロックチェーンのシャード生成装置は、
図8に示されたハードウェアを用いて実現される。
【0233】
すなわち、メモリ730に記録され、プロセッサ710によって実行されるプログラムは、ブロックチェーンに追加される付加的なチェーンに相応する資産(asset)を預け(deposit)、前記資産に相応する持分値(share value)に基づいて、前記付加的なチェーンに追加ブロックを連結するための合意体ノードの1つとして選択されるようにし、前記追加ブロックを連結するための分散合意を行うことができる。
【0234】
ここで、前記付加的なチェーンに参加するノードは、トランザクション処理のためのメジャーシェアホルダー(major shareholder)ノードを含むことができる。
【0235】
ここで、前記付加的なチェーンに参加するノードは、前記メジャーシェアホルダーノードではないマイナーシェアホルダー(minor shareholder)ノードを含み、前記マイナーシェアホルダーノードにはトランザクションが伝達されない。
【0236】
ここで、前記付加的なチェーンは、前記メジャーシェアホルダーノードに相応する第1合計持分値(first total share value)と、前記マイナーシェアホルダーノードに相応する第2合計持分値(second total share value)とに基づいて、新規ノードの参加可能の有無を決定できる。
【0237】
ここで、前記マイナーシェアホルダーノードの少なくとも1つは、前記付加的なチェーン以外のチェーンにマイナーシェアホルダーノードとして参加できる。
【0238】
ここで、前記メジャーシェアホルダーノードは、前記付加的なチェーン以外のチェーンにメジャーシェアホルダーノードとして参加できない。
【0239】
また、メモリ730に記録され、プロセッサ710によって実行されるプログラムは、付加的なチェーンにメジャーシェアホルダー(major shareholder)ノードとして参加し、前記付加的なチェーンにマイナーシェアホルダー(minor shareholder)ノードとして参加し、前記メジャーシェアホルダーノードおよび前記マイナーシェアホルダーノードのいずれか1つ以上を含む合意体を構成することができる。
【0240】
本発明の一実施例によれば、運用中のブロックチェーンでノードが資産に連動した持分値を用いて付加的なチェーンのメジャーシェアホルダーノードになり、付加的なチェーンを直ちに追加することができる。
【0241】
ここで、付加的なチェーンは、メジャーシェアホルダーノードとしてのみ開始できる。
【0242】
以後、付加的なチェーンに新規ノードが参加する場合、新規ノードが有する持分値(share value)と付加的なチェーンのマイナーシェアホルダーノードが所有した持分値の合計(第2合計持分値)との合計が、付加的なチェーンのメジャーシェアホルダーノードが所有した持分値の合計(第1合計持分値)の一定比率より小さいか、等しい場合にのみ、新規ノードが付加的なチェーンに参加可能である。
【0243】
ここで、より多くのノードが付加的なチェーンに参加することを可能にするために、第1合計持分値は拡張プロセスによって増加でき、拡張プロセスは、前記メジャーシェアホルダーノードのいずれか1つ以上に相応する持分値を増加させる第1プロセス、新しいメジャーシェアホルダーノードを追加する第2プロセス、および少なくとも1つの前記マイナーシェアホルダーノードをメジャーシェアホルダーノードに変更する第3プロセス、のいずれか1つであってもよい。
【0244】
ここで、運用中のブロックチェーンで新たに付加的なチェーンを追加するために、既存のチェーンの特定ブロックに新しい付加的なチェーンのメジャーシェアホルダーノードに対するデータ(持分値、メジャー/マイナーの如何など)を記録することができる。
【0245】
以後、運用中の付加的なチェーンの変更事項(メジャーシェアホルダーノード、マイナーシェアホルダーノード、ノードの持分値など)を既存のチェーンにアップデートすることができる。ここで、付加的なチェーンの変更事項が記録される既存のチェーンのブロックは、付加的なチェーンの変更時点に相応するブロックであってもよい。
【0246】
前述のように、1つのノードが互いに異なるチェーンのメジャーシェアホルダーノードにならないようにすれば、各チェーンの取引処理ノードが互いに分離されるので、全体処理性能を向上させることができる。ここで、1つのノードが同時に互いに異なるチェーンのマイナーシェアホルダーノードになるので、複数のチェーンで行われる合意に参加できる。
【0247】
ここで、新しいチェーンの開始ブロックには、新しいチェーンの開始情報を記録した既存のチェーンのブロックに関する情報が記録される。これによって、既存のチェーンで新規チェーンが新しい枝(branch)のように生成可能で、ツリー構造で付加的なチェーンが生成できる。
【0248】
本発明の一実施例によるブロックチェーンに付加的なチェーンを追加する方法、装置、このためのブロックチェーンのシャード生成方法および装置によれば、ブロックチェーン運用中にリアルタイムに付加的なチェーンを追加することができる。既存のブロックチェーンシャーディング技術では、シャードごとに担当ノードを分けて指定しなければならず、これらが同時に他のチェーンの合意体に参加できないので、リアルタイムにチェーンを追加することが不可能であった。
【0249】
また、本発明の一実施例によれば、メジャーシェアホルダーノードが有する持分値の合計(第1合計持分値)によって参加ノードの個数を調節することができる。これは、新しいビジネスを新規チェーンで始める場合、初期には少ない個数の参加ノードでビジネスを試し、必要に応じて、最大参加ノード数を調節することを可能にする。
【0250】
さらに、本発明の一実施例によれば、1つのノードが同時に2つ以上のチェーンにメジャーシェアホルダーノードとして参加できないようにすることで、トランザクションを受信し処理するノードをチェーンごとに分離可能で、動的にブロックチェーンに付加的なチェーンを追加する場合にも、重複トラフィックの発生を最小化することができる。
【0251】
以上、本発明によるブロックチェーンに付加的なチェーンを追加する方法、装置、そのためのブロックチェーンのシャード生成方法および装置は、上記のように説明された実施例の構成と方法が限定されて適用できるのではなく、上記の実施例は多様な変形が行われるように各実施例の全部または一部が選択的に組み合わされて構成されてもよい。
【符号の説明】
【0252】
700:コンピュータシステム
710:プロセッサ
720:バス
730:メモリ
731:ROM
732:RAM
740:ユーザインターフェース入力装置
750:ユーザインターフェース出力装置
760:ストレージ
770:ネットワークインターフェース
780:ネットワーク