(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-22
(45)【発行日】2024-10-30
(54)【発明の名称】ブロックチェーンネットワークの構成方法及びその方法を実施するためのコンピュータソフトウエアプログラム
(51)【国際特許分類】
H04L 9/32 20060101AFI20241023BHJP
【FI】
H04L9/32 200Z
(21)【出願番号】P 2024521231
(86)(22)【出願日】2023-05-29
(86)【国際出願番号】 JP2023019955
(87)【国際公開番号】W WO2024004485
(87)【国際公開日】2024-01-04
【審査請求日】2024-04-08
(31)【優先権主張番号】P 2022105620
(32)【優先日】2022-06-30
(33)【優先権主張国・地域又は機関】JP
【早期審査対象出願】
(73)【特許権者】
【識別番号】522263426
【氏名又は名称】株式会社CountUp
(74)【代理人】
【識別番号】100104411
【氏名又は名称】矢口 太郎
(72)【発明者】
【氏名】パイェク ヤクブ
(72)【発明者】
【氏名】石田 宏樹
(72)【発明者】
【氏名】大泉 洋
【審査官】行田 悦資
(56)【参考文献】
【文献】特表2022-518960(JP,A)
【文献】国際公開第2020/263308(WO,A1)
【文献】国際公開第2021/233048(WO,A1)
【文献】赤羽 喜治,ブロックチェーン 仕組みと理論,日本,株式会社リックテレコム,2019年07月31日,pp.134-136
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/32
(57)【特許請求の範囲】
【請求項1】
ブロックチェーンネットワークの構成方法であり、
コンピュータが、P2Pネットワーク経由で受け取ったデータをブロックチェーンに追加するための合意形成に関わるノードの情報を保持し、コンセンサスアルゴリズムに基づき、署名するべきノードを決定するノード管理工程を有し、
このノード管理工程は、
コンピュータが、合意形成に参加するノードを、より安定した環境で動作するVoterノードと、それ以外のSignerノードに定義・区別して管理し、これらのノードを互いに接続し、環状の仮想ネットワークを構築するものであり、
コンピュータが、上記仮想ネットワークを構成するノードのうち一定数のノードが仮想ネットワークから切断されたかを検出し、そのことが検出された場合には、前記仮想ネットワークを、Voterノードだけで構成されるVoter Ring仮想ネットワークを移行させる工程
を有するものである方法、
【請求項2】
請求項1記載のブロックチェーンネットワークの構成方法において、
コンピュータが、P2Pネットワーク経由で受け取ったデータをブロックチェーンに追加するための合意形成を実行す
るコンセンサスアルゴリズム実行工程を有し、
このコンセンサスアルゴリズム実行工程は、前記仮想ネットワークが、Voterノードだけで構成されるVoter Ring仮想ネットワークに移行した場合、前記Voterノードだけで合意形成を実行するものである、
ことを特徴とする方法。
【請求項3】
請求項1記載の方法において、
前記
ノード管理工程は、
コンピュータが、ブロックの署名タイミングごとに、新規のブロックの追加が発生しなくなることを検出することで一定数のノードがネットワークから切断されたかを検出するブロック追加監視工程を有し、
前記ブロック追加監視工程で上記のことが検出されると、一定の期間ブロックが署名されないかどうかを確認するモードに入り
、その期間を過ぎても新規ブロックがブロックチェーンに追加されない場合、Voterだけで構成される、Voter Ringにネットワークを移行する移行工程と
を有することを特徴とする方法。
【請求項4】
請求項1記載の方法において、
コンピュータが、ブロックに記録されるdifficulty値を変更することでVoter Ringモードによるブロック追加か、通常のブロック追加かを区別する工程を有する
ことを特徴とする方法。
【請求項5】
請求項4記載の方法において、
上記difficulty値を変更は、Voter Ringモードによるブロック追加の場合の値のレンジを、通常のブロック追加の場合よりも高く設定するものである
ことを特徴とする方法。
【請求項6】
請求項4記載の方法にいて、
ネットワークに復帰したSignerノードは、自分の署名順になった場合に、直前のブロックがVoter Ringで書き込まれたと判断した場合、それまでのVoter Ringにおけるdifficultyより高いレンジのdifficultyを指定して新規のブロックを署名することで、Voter Ringから通常Ringへの復帰を促するものである
ことを特徴とする方法。
【請求項7】
請求項6記載の方法において、
すべてのSignerノードは、Voter Ringのdifficultyを超えるdifficultyを確認したことに基づき、difficulty値を元の値に戻しVoter Ringの状態を解消し、全ノードの参加する通常状態に復帰させるものである
ことを特徴とする方法。
【請求項8】
ブロックチェーンネットワークを構築及び維持するためのコンピュータソフトウエアプログラムであり、
コンピュータに、P2Pネットワーク経由で受け取ったデータをブロックチェーンに追加するための合意形成に関わるノードの情報を保持し、コンセンサスアルゴリズムに基づき、署名するべきノードを決定させるノード管理工程を実行させるものであり、
このノード管理工程は、
コンピュータが、合意形成に参加するノードを、より安定した環境で動作するVoterノードと、それ以外のSignerノードに定義・区別して管理し、これらのノードを互いに接続し、環状の仮想ネットワークを構築するものであり、
コンピュータが、上記仮想ネットワークを構成するノードのうち一定数のノードが仮想ネットワークから切断されたかを検出し、そのことが検出された場合には、前記仮想ネットワークを、Voterノードだけで構成されるVoter Ring仮想ネットワークを移行させる工程
を有するものである
コンピュータソフトウエアプログラム。
【請求項9】
請求項8記載のコンピュータソフトウエアプログラムにおいて、
コンピュータに、P2Pネットワーク経由で受け取ったデータをブロックチェーンに追加するための合意形成を実行させるコンセンサスアルゴリズム実行工程を有し、
このコンセンサスアルゴリズム実行工程は、前記仮想ネットワークが、Voterノードだけで構成されるVoter Ring仮想ネットワークに移行した場合、前記Voterノードだけで合意形成を実行するものである、
ことを特徴とするコンピュータソフトウエアプログラム。
【請求項10】
請求項8記載の方法において、
前記
ノード管理工程は、
コンピュータが、ブロックの署名タイミングごとに、新規のブロックの追加が発生しなくなることを検出することで一定数のノードがネットワークから切断されたかを検出するブロック追加監視工程を有し、
前記ブロック追加監視工程で上記のことが検出されると、一定の期間ブロックが署名されないかどうかを確認するモードに入り
、その期間を過ぎても新規ブロックがブロックチェーンに追加されない場合、Voterだけで構成される、Voter Ringにネットワークを移行する移行工程と
を有することを特徴とするコンピュータソフトウエアプログラム。
【請求項11】
請求項8記載の方法において、
コンピュータが、ブロックに記録されるdifficulty値を変更することでVoter Ringモードによるブロック追加か、通常のブロック追加かを区別する工程を有する
ことを特徴とするコンピュータソフトウエアプログラム。
【請求項12】
請求項11記載の方法において、
上記difficulty値を変更は、Voter Ringモードによるブロック追加の場合の値のレンジを、通常のブロック追加の場合よりも高く設定するものである
ことを特徴とする方法。
【請求項13】
請求項11記載のコンピュータソフトウエアプログラムにおいて、
ネットワークに復帰したSignerノードは、自分の署名順になった場合に、直前のブロックがVoter Ringで書き込まれたと判断した場合、それまでのVoter Ringにおけるdifficultyより高いレンジのdifficultyを指定して新規のブロックを署名することで、Voter Ringから通常Ringへの復帰を促するものである
ことを特徴とするコンピュータソフトウエアプログラム。
【請求項14】
請求項13記載のコンピュータソフトウエアプログラムにおいて、
すべてのSignerノードは、Voter Ringのdifficultyを超えるdifficultyを確認したら、difficulty値を元の値に戻しVoter Ringの状態を解消し、全ノードの参加する通常状態に復帰させるものである
ことを特徴とするコンピュータソフトウエアプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ブロックチェーンネットワークの構成方法に関するものである。
【背景技術】
【0002】
ブロックチェーンネットワークは、多くのコンピュータやスマートフォンがノードとして参加することで、ネットワーク全体の安全性や信頼性が高まる、自立分散システムであり、データの改ざんや不正を許さないシステムといえる。
【0003】
ここで、ブロックチェーンネットワークを健全に保つためには、ネットワークに参加しているノードが常にネットワークに接続し、適切に稼働している状態が望ましいが、それが難しいのが現状といえる。
【0004】
すなわち、例えば、スマートフォンなどの小型携帯端末が接続可能なネットワークは、一般的にWiFiやモバイルネットワークとなり、データセンターにホスティングされるような高性能サーバが利用するネットワーク回線とは接続安定性やトラフィック性能などで大きく劣る場合が多い。このため、頻繁に端末がネットワークから切断されたり、再度接続されなおしたりということが発生することが考えられる。
【0005】
また、このような小型携帯端末において、ゲームや動画閲覧など、プロセッサの処理能力やメモリーを著しく消費するアプリケーションを実行した場合、ブロックチェーンアプリケーションに割り当てられるリソースが枯渇し、動作を阻害することも考えられる。
【0006】
このような状況の下、仮に、半分以上のノードがネットワークから切断されるような状況が発生すると、そのブロックチェーンネットワークは新しいブロックを追加するこができなくなり、事実上機能を停止してしまう。
【発明の概要】
【発明が解決しようとする課題】
【0007】
この発明は、上記したような事情に鑑みてなされたものであり、多くのノードが停止または切断されるような状況においても、ブロックチェーンを停止することなく、合意形成(コンセンサス)を実行し続けることができるシステム及びその方法を提供することを目的とする。
【課題を解決するための手段】
【0008】
上記課題を解決するために、本発明の主要な観点によれば、以下の発明が提供される。
(1) ブロックチェーンネットワークの構成方法であり、
コンピュータが、P2Pネットワーク経由で受け取ったデータをブロックチェーンに追加するための合意形成に関わるノードの情報を保持し、コンセンサスアルゴリズムに基づき、署名するべきノードを決定するノード管理工程を有し、
このノード管理工程は、
コンピュータが、合意形成に参加するノードを、より安定した環境で動作するVoterノードと、それ以外のSignerノードに定義・区別して管理し、これらのノードを互いに接続し、環状の仮想ネットワークを構築するものであり、
コンピュータが、上記仮想ネットワークを構成するノードのうち一定数のノードが仮想ネットワークから切断されたかを検出し、そのことが検出された場合には、前記仮想ネットワークを、Voterノードだけで構成されるVoter Ring仮想ネットワークを移行させる工程
を有するものである方法。
【0009】
(2) 前記(1)記載のブロックチェーンネットワークの構成方法において、
コンピュータが、P2Pネットワーク経由で受け取ったデータをブロックチェーンに追加するための合意形成を実行するこのコンセンサスアルゴリズム実行工程を有し、
このコンセンサスアルゴリズム実行工程は、前記仮想ネットワークが、Voterノードだけで構成されるVoter Ring仮想ネットワークに移行した場合、前記Voterノードだけで合意形成を実行するものである、
ことを特徴とする方法。
【0010】
(3) 前記(1)記載の方法において、
前記管理機能工程は、
コンピュータが、ブロックの署名タイミングごとに、新規のブロックの追加が発生しなくなることを検出することで一定数のノードがネットワークから切断されたかを検出するブロック追加監視工程を有し、
前記ブロック追加監視工程で上記のことが検出されると、一定の期間ブロックが署名されないかどうかを確認するモードに入り。その期間を過ぎても新規ブロックがブロックチェーンに追加されない場合、Voterだけで構成される、Voter Ringにネットワークを移行する移行工程と
を有することを特徴とする方法。
(4) 前記(1)記載の方法において、
コンピュータが、ブロックに記録されるdifficulty値を変更することでVoter Ringモードによるブロック追加か、通常のブロック追加かを区別する工程を有する
ことを特徴とする方法。
【0011】
(5) 前記(4)記載の方法において、
上記difficulty値を変更は、Voter Ringモードによるブロック追加の場合の値のレンジを、通常のブロック追加の場合よりも高く設定するものである
ことを特徴とする方法。
【0012】
(6) 前記(4)記載の方法にいて、
ネットワークに復帰したSignerノードは、自分の署名順になった場合に、直前のブロックがVoter Ringで書き込まれたと判断した場合、それまでのVoter Ringにおけるdifficultyより高いレンジのdifficultyを指定して新規のブロックを署名することで、Voter Ringから通常Ringへの復帰を促するものである
ことを特徴とする方法。
【0013】
(7) 前記(6)記載の方法において、
すべてのSignerノードは、Voter Ringのdifficultyを超えるdifficultyを確認したことに基づき、difficulty値を元の値に戻しVoter Ringの状態を解消し、全ノードの参加する通常状態に復帰させるものである
ことを特徴とする方法。
【0014】
(8) ブロックチェーンネットワークを構築及び維持するためのコンピュータソフトウエアプログラムであり、
コンピュータに、P2Pネットワーク経由で受け取ったデータをブロックチェーンに追加するための合意形成に関わるノードの情報を保持し、コンセンサスアルゴリズムに基づき、署名するべきノードを決定させるノード管理工程を実行させるものであり、
このノード管理工程は、
コンピュータが、合意形成に参加するノードを、より安定した環境で動作するVoterノードと、それ以外のSignerノードに定義・区別して管理し、これらのノードを互いに接続し、環状の仮想ネットワークを構築するものであり、
コンピュータが、上記仮想ネットワークを構成するノードのうち一定数のノードが仮想ネットワークから切断されたかを検出し、そのことが検出された場合には、前記仮想ネットワークを、Voterノードだけで構成されるVoter Ring仮想ネットワークを移行させる工程
を有するものである
コンピュータソフトウエアプログラム。
【0015】
(9) 前記(8)記載のコンピュータソフトウエアプログラムにおいて、
コンピュータに、P2Pネットワーク経由で受け取ったデータをブロックチェーンに追加するための合意形成を実行させるコンセンサスアルゴリズム実行工程を有し、
このコンセンサスアルゴリズム実行工程は、前記仮想ネットワークが、Voterノードだけで構成されるVoter Ring仮想ネットワークに移行した場合、前記Voterノードだけで合意形成を実行するものである、
ことを特徴とするコンピュータソフトウエアプログラム。
【0016】
(10) 前記(8)記載の方法において、
前記管理機能工程は、
コンピュータが、ブロックの署名タイミングごとに、新規のブロックの追加が発生しなくなることを検出することで一定数のノードがネットワークから切断されたかを検出するブロック追加監視工程を有し、
前記ブロック追加監視工程で上記のことが検出されると、一定の期間ブロックが署名されないかどうかを確認するモードに入り。その期間を過ぎても新規ブロックがブロックチェーンに追加されない場合、Voterだけで構成される、Voter Ringにネットワークを移行する移行工程と
を有することを特徴とするコンピュータソフトウエアプログラム。
【0017】
(11) 前記(8)記載の方法において、
コンピュータが、ブロックに記録されるdifficulty値を変更することでVoter Ringモードによるブロック追加か、通常のブロック追加かを区別する工程を有する
ことを特徴とするコンピュータソフトウエアプログラム。
【0018】
(12) 前記(11)記載の方法において、
上記difficulty値を変更は、Voter Ringモードによるブロック追加の場合の値のレンジを、通常のブロック追加の場合よりも高く設定するものである
ことを特徴とする方法。
【0019】
(13) 前記(11)記載のコンピュータソフトウエアプログラムにおいて、
ネットワークに復帰したSignerノードは、自分の署名順になった場合に、直前のブロックがVoter Ringで書き込まれたと判断した場合、それまでのVoter Ringにおけるdifficultyより高いレンジのdifficultyを指定して新規のブロックを署名することで、Voter Ringから通常Ringへの復帰を促するものである
ことを特徴とするコンピュータソフトウエアプログラム。
【0020】
(14) 前記(13)記載のコンピュータソフトウエアプログラムにおいて、
すべてのSignerノードは、Voter Ringのdifficultyを超えるdifficultyを確認したら、difficulty値を元の値に戻しVoter Ringの状態を解消し、全ノードの参加する通常状態に復帰させるものである
ことを特徴とするコンピュータソフトウエアプログラム。
【0021】
なお、上記した以外の本発明の特徴は、以下に説明する本発明の実施形態の説明及びその図面に開示されている。
【図面の簡単な説明】
【0022】
【
図1】
図1は、本発明の一実施形態を示すシステム概略構成図である。
【0023】
【
図2】
図2は、同じく、Sealer Ringを示す模式図である。
【0024】
【
図3】
図3は、同じく、いくつかのSealerが停止した状態を示す模式図である。
【0025】
【
図4】
図4は、同じく、Voter Ringを示す模式図である。
【0026】
【
図5】
図5は、同じく、新規ブロック生成時の処理ロジックを示すフローチャートである。
【0027】
【
図6】
図6は、同じく、新規ブロック受信時の処理ロジックを示すフローチャートである。
【0028】
【
図7】
図7は、同じく、Sealer Ringでのチェック処理を示すフローチャートである。
【0029】
【
図8】
図8は、同じく、Voter Ringでのチェック処理を示すフローチャートである。
【発明を実施するための形態】
【0030】
以下、添付した図面を参照して本発明の一実施形態を説明する。
【0031】
(一実施形態)
図1は、本発明の一実施形態であるブロックチェーン実行サーバモジュール1(コンピュータソフトウエアプログラム)の構成を示すものである。
【0032】
この実行サーバモジュール1は、ブロックチェーンネットワークを構築するためのサービスプログラムであり、Linux(登録商標)などのサーバマシンで動作しても良いし、アプリケーションプログラムに組み込んで携帯端末で動作しても良い。その場合、このモジュール1は、それぞれのデバイス上に実装された記憶媒体上に記憶され、デバイスのCPU(図示せず)によってメモリ(図示せず)上に適宜呼び出されて実行されることで、本発明の各構成として動作することになる。
【0033】
この実行サーバモジュール1は、
図1に示すように、スマートコントラクト実行部2と、コンセンサスアルゴリズム実行部3と、ブロックチェーンデータ保持機能部4と、データ同期機能部5と、P2Pネットワーク構築機能部6とを有する。ここで、スマートコントラクト実行部2は、ブロックチェーンに対するインタフェースも提供するものである。コンセンサスアルゴリズム実行部3は、ノード管理機能部7も提供する。
【0034】
これらの各構成要素2~7は、スマートコントラクト10、コンセンサスアルゴリズム11、ブロックチェーンデータ12、ノード情報13、difficultyレンジ14を格納する共有データ9にアクセス可能になっている。
【0035】
以下、これらの各構成要素の詳しい構成及び機能をその動作を通じて詳細に説明する。
【0036】
(スマートコントラクト実行部、ブロックチェーンデータ保持機能部、データ同期機能部、P2Pネットワーク構築機能部の機能)
スマートコントラクト実行部2は、ブロックチェーンネットワークに対する外部からの呼び出しや転送データに応じて、共有データ9に格納されたスマートコントラクト10の特定のメソッド(更新メソッド、)を実行し、その結果を返す仮想マシンである。
【0037】
P2Pネットワーク構築機能部6は、新しいノードをブロックチェーンのP2Pネットワークの構成員として構築し、ブロックチェーン実行サーバ同士を接続する機能を奏するものである。すなわち、スマートコントラクト10のメソッドを呼び出して実行するには、ブロックチェーンネットワークにアクセスするためのノードが必要である。あるノードを新たにブロックチェーンネットワークに参加させるには、既存ノードの一つがそのノードをブロックチェーンのP2Pネットワークの構成員にする必要がある。
【0038】
データ同期機能部5は、各ノードにおいて、最新のブロックチェーンデータ12の同期を行い、この同期の際、P2Pで接続している他のノードからデータ11を取り寄せ、正しさの検証を行った上で共有データ9として保存するものである。ブロックチェーンデータ保持機能部4は、サーバや携帯端末のストレージエリアに上記ブロックチェーンの共有データ(ブロックチェーンデータ12)を保持するものである。
【0039】
上記スマートコントラクト10の更新メソッドの呼び出しにおいては、トランザクションを組み立て、それを各ノードからブロックチェーンネットワークに送信する。当該トランザクションはブロックチェーンネットワークを構成するすべてのノードに伝搬する。このとき、各ノードでは、ブロックへの格納待ちのトランザクションとしてひとまずキューイングする。トランザクションがブロックに格納されるまでには一定の時間がかかるため、更新メソッドは原則的に非同期処理である。
【0040】
スマートコントラクト10の更新メソッドの実行は、当該メソッドの呼び出しトランザクションが新しいブロックに格納されることに相当する。更新メソッドの実行タイミングは、ブロック作成ノードで新たなブロックが作られるとき、および、ブロック作成ノードではない他のノードが新たなブロックを受信し、その正しさを検証するときである。
【0041】
スマートコントラクト10はブロックチェーンネットワーク上のすべてのノードで全く同じように実行され、処理に伴う状態更新も同じ結果に到達する。
【0042】
スマートコントラクト10の参照メソッドの呼び出しと実行では、ノード自身が持っている検証済みのスマートコントラクトコードと内部状態を使って即座に結果を返す。スマートコントラクト10が以上のように実行できるのは、上記のように、ブロックチェーンネットワーク上のすべてのノードがデータ11を共有しているためである。
【0043】
なお、共有対象にはブロックとトランザクションはもちろんのこと、スマートコントラクトのコードと内部状態も含まれる。これにより、どのノードでもブロックに格納されたトランザクションからスマートコントラクトの実行を再生することができ、実行にともなう内部状態更新の正しさを独自検証することができる。このような仕組みにより、ブロックチェーンの耐改ざん性などの特徴がスマートコントラクトの実行プラットフォームとして実現される。
【0044】
(コンセンサスアルゴリズム実行部)
次に、この実施形態のコンセンサスアルゴリズム実行部3について説明する。
【0045】
本実施形態におけるコンセンサスアルゴリズム11は、Proof of Authority(PoA)をベースとして採用するものである。このPoAは、信頼できるノードのみがブロックを署名できるという考えに基づくコンセンサスアルゴリズムで、Sealerと呼ばれるノードが、リング状の仮想的ネットワークを形成し、指定された時間ごとに、ブロックの署名を順番に行っていくコンセンサスアルゴリズムである。
【0046】
この実施形態において、このアルゴリズムを採用するネットワークに参加するには、eKYCなどを経由して承認され信頼される必要があり(Aurhority)、その意味において、中央集権的ではあるが、悪意の参加者を現実的なレベルで排除できるものである。
【0047】
以下、このようなコンセプトを有するコンセンサスアルゴリズム11をこの実施形態のコンセンサスアルゴリズム実行部3及びノード管理機能部7に実装した例で説明する。
【0048】
このコンセンサスアルゴリズム実行部3は、上記P2Pネットワーク経由で受け取ったデータをブロックチェーンに追加するための合意形成を実行するものである。このため、合意形成に関わるノードの情報13を保持する。そして、このコンセンサスアルゴリズム実行部3に設けられたノード管理機能部7が、コンセンサスアルゴリズム11に基づき、署名するべきノードを管理し決定する。
【0049】
以下、このコンセンサスアルゴリズム実行部3及びノード管理機能部7による動作について説明する。
【0050】
(サイナーとボーター)
上記ノード管理機能部7は、合意形成に参加するノードを、Signer(サイナー)とVoter(ボーター)に分けて管理する。Signerは携帯端末で動作することを想定したノードで、Voterはネットワークや電源やその他の計算資源が潤沢に付与できる、データセンター上にホスティングされるような、サーバコンピュータで動作するものである。
【0051】
【0052】
ノード管理機能部は、VoterとSignerとで、
図2のようなリング状の仮想ネットワークを構築し、順番にトランザクションの含まれたブロックを署名し続けることで、ネットワークを動かしていくように構成する。ここで、VoterとSignerはSealer(ブロックを署名「Sealing」しブロックチェーンに追加できるノード:シーラー)と呼ばれる。この図では、S1->V1->S2->V2のように順番にブロックを署名し、ブロックチェーンに追加していくことになる。
【0053】
(Sealer Ringにおけるノード管理)
この健全な状態をSealer Ringと呼ぶ。このSealer Ringから、仮にすべてのSignerがモバイルネットワークの全体的障害などにより、ブロックチェーンネットワークから切断されたとする。この場合、
図3のように、Voterだけが安定的なインフラ上に構築されているため、ネットワークを実行しつづけることができる(
図3)。
【0054】
しかしながら、過半数を超えるノードがネットワークから切断されると、有効な合意形成が不可能となり、新規ブロックのブロックチェーンへの追加ができなくなるため、ブロックチェーンネットワークは停止する恐れがある。
【0055】
オンラインに残っているVoterのノード管理機能部7は、この状態を検出できるように構成されている。すなわち、ノード管理機能部7は、ブロック追加監視部16を有し、ブロックの署名タイミングごとに、新規のブロックの追加が発生しなくなることを検出することで、このことを検出する(通常、新規ブロックの追加は全ノードが検知し、自身のブロックチェーンを更新する)。
【0056】
ブロック追加監視部16でこのことが検出されると、Voterのノード管理機能部7は、一定の期間ブロックが署名されないかどうかを確認するモードに入り、その期間を過ぎても新規ブロックがブロックチェーンに追加されない場合、Voterだけで構成される、Voter Ringにネットワークを移行する。
【0057】
(Voter Ringの形成ロジック)
Voter Ringは、その時に有効なすべてのSignerを排除した形で、Voterノードのみの合意形成リング(Voter Ring)を形成し(
図4)、この状態で、Voterは通常の新規ブロックの署名と追加のロジックを実行するように構成するものである。
【0058】
この、Voterノードのみの合意形成リング、すなわち、Voter Ringを形成するには、
図1に17で示すdifficultyレンジ変更部が、ブロックに記録される、difficultyレンジを表2のように変更し、Voter Ringによるブロック追加か、通常のブロック追加かを区別できるようにする。difficultyとはあるレンジの範囲にある値のことである。この実施形態はノードの数によって決まるが、別の基準によって決定しても良い。
【0059】
【0060】
(Sealer Ringへの復帰ロジック)
次に、ネットワークから切断されていた携帯端末(Signer)がオンラインに復帰した場合、復帰したノードは、まず最新のブロックチェーンの状態に合わせるため、データの同期を実行する。
【0061】
同期が完了すると、Signerのノード管理機能部7は現在のブロックチェーンが、通常の状態で動作していたのか、Voter Ringで動作していたのかを、ブロックに含まれるdifficultyを参照して検出する。
【0062】
復帰したSignerは、自分の署名順になった場合に、直前のブロックがVoter Ringで書き込まれたと判断した場合、それまでのVoter Ringにおけるdifficultyレンジより大きいレンジのdifficultyを指定して新規のブロックを署名することで、Voter Ringから通常Ringへの復帰を促す。
【0063】
【0064】
すべてのVoterのノード管理機能部7は、このVoter Ringのdifficultyを超えるdifficulty値を確認したら、Voter Ringの状態を解消し、全ノードの参加する通常状態に復帰させる。
【0065】
これにより、すべてのVoterはVoter Ringの状態を解除し、有効なSealerがすべて参加する。通常のモードであるSealer Ringへ移行する。そして、前記difficultyレンジ変更部17は、difficultyレンジを通常の状態のレンジに復帰させる。
【0066】
(新規ブロック生成時の処理フロー)
図5~
図8は、上記Sealer RingとVoter Ring間の遷移ロジックの具体例を示すフローチャートを示すものである。
【0067】
図5は、新規ブロックの生成時、すなわち、Seler自らがブロックを署名する場合のDiffucultyの決定ロジックを示すものである。
【0068】
すなわち、新規ブロックの生成時には、過去のブロックチェーンの状態を読み込み、difficultyを検証することでネットワークがVoter Ringで実行されていたかをチェックする(ステップS1-1、S1-2)。ここで、Voter Ringでない場合には(ステップS1-3)、前回のブロック生成からの経過時間をチェックし(ステップS1-4)、一定時間が経過している場合にはVoter Ringに切り替える判断をし(S1-5)、一定時間経過していない場合には、Voter Ringに切り替えずに通常のdifficultyレンジに設定する(ステップS1-6)。
【0069】
一方、すでにVoter Ringの場合、若しくはVoter Ringに切り替えると判断した場合には、自己ノードがVoterか否かを判定し(ステップS1-7)、Voterの場合には、Voter Ringのdifficultyレンジに設定し(ステップS1-8)、逆に、Voterではない場合(自己ノードがSignerの場合)にはVoter Ringを解除するためのdifficultyレンジに設定する(ステップS1-9)。
【0070】
そしてこのノードは、上記で決定されたdifficultyレンジで新規ブロックの追加処理を続行する(ステップS1-10)。
【0071】
(新規ブロック受信・追加時の処理フロー)
図6は、Sealerで新規ブロックを受信した場合の新規ブロック追加ロジックを示すものである。
【0072】
すなわち、このロジックでは、受信したブロックの正当性をチェックする工程(ステップS2-1)の一部として、若しくはその後に、ステップS2-2以下を実行する。
【0073】
まず、ステップS2-2で過去のブロックチェーンの状態を読み込んだ後、ブロックに含まれるdifficulty値に基づいてネットワークがVoter Ringで実行されているかをチェックする(ステップS2-3)。
【0074】
そして、ステップS2-4でVoter Ringであると判定された場合には、Veter Ringでのチェックを実行し(ステップS2-5)、ステップS2-4でVoter Ringではないと判定された場合には、Sealer Ringでのチェックを実行する(ステップS2-6)。ステップS-7でチェック結果が正しい場合にはブロックを承認して保存し(ステップS-8)、チェック結果が正しくない場合にはエラーを返す(ステップS2-9)。
【0075】
(Sealer Ringでのチェック実行の処理フロー)
図7は、上記新規ブロックの追加承認処理(
図6)におけるステップS2-6で実行されるSealer Ringでのチェック実行の処理フローを示すものである。
【0076】
すなわち、この処理においては、ステップS3-1~3-3でそれぞれ、difficultyの範囲が、Sealer Ring、Voter Ring,Voter Ring解除用のものであるかを判定し、Voter Ringの範囲内にある場合には、自己ノードがVoterノードであるかを判断し(S3-4)、Voterノードでない場合にはチェック結果としてエラーを返し(S3-5)、Voterノードの場合には、前回ブロック生成タイミングか一定時間が経過している場合のみ、肯定的なチェック結果を返す(ステップS3-6)。
【0077】
一方、ステップS3-3でVoter Ring解除用のdifficulty範囲内であると判断された場合には、自己ノードがSignerノードでない場合(ステップS3-6で判断)にはチェック結果としてエラーを返し(ステップS3-7)、Signerノードの場合(ステップS3-6で判断)には、前回ブロック生成タイミングか一定時間が経過していると判断された場合(S3-8、3-9)のみ、肯定的なチェック結果を返す(ステップS3-10)。
【0078】
(Voter Ringでのチェック実行の処理フロー)
図8は、上記新規ブロックの追加承認処理(
図6)におけるステップS2-5で実行されるVoter Ringでのチェック実行の処理フローを示すものである。
【0079】
すなわち、この処理においては、ステップS4-1~4-3でそれぞれ、difficultyの範囲が、Sealer Ring、Voter Ring,Voter Ring解除用のものであるかを判定し、Voter Ringの範囲内にある場合(ステップS4-2)には、自己ノードがVoterノードであるかを判定し(ステップS4-4)、Voterでない場合にはチェック結果としてエラーを返し(ステップS4-5)、Voterノードの場合には、肯定的なチェック結果を返す(ステップS4-6)。
【0080】
一方、Voter Ring解除用のdifficulty範囲内である場合(ステップS4-3)には、自己ノードがSignerノードでない場合(S4-7)にはチェック結果としてエラーを返し(ステップS4-8)、Signerノードの場合には、肯定的なチェック結果を返す(ステップS4-6)。
【0081】
以上のようなノード管理機能部の処理を実装することにより、携帯端末のような比較的安定度の低いネットワークインフラを利用するノードを参加させても、ブロックチェーンネットワークを停止させることなく、安定的にブロックチェーンネットワークの動作を継続できるようになる。
【0082】
なお、本発明は上記一実施形態に限定されるものではなく、発明の要旨を変更しない範囲で種々変形可能である。
【符号の説明】
【0083】
1…ブロックチェーン実行サーバモジュール
3…コンセンサスアルゴリズム実行部
4…ブロックチェーンデータ保持機能部
5…データ同期機能部
6…Pネットワーク構築機能部
7…ノード管理機能部
9…共有データ
10…スマートコントラクト
11…コンセンサスアルゴリズム
12…ブロックチェーンデータ
13…ノード情報
14…difficultyレンジ
16…ブロック追加監視部
17…difficultyレンジ変更部