(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-16
(45)【発行日】2024-07-24
(54)【発明の名称】分散型台帳システム及び方法
(51)【国際特許分類】
G06F 9/50 20060101AFI20240717BHJP
【FI】
G06F9/50 150A
(21)【出願番号】P 2023509229
(86)(22)【出願日】2022-03-23
(86)【国際出願番号】 JP2022013368
(87)【国際公開番号】W WO2022202865
(87)【国際公開日】2022-09-29
【審査請求日】2023-08-30
(32)【優先日】2021-03-24
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】000004260
【氏名又は名称】株式会社デンソー
(74)【代理人】
【氏名又は名称】矢作 和行
(74)【代理人】
【識別番号】100121991
【氏名又は名称】野々部 泰平
(74)【代理人】
【識別番号】100145595
【氏名又は名称】久保 貴則
(72)【発明者】
【氏名】ファン ヤウェン
(72)【発明者】
【氏名】黄 浩倫
(72)【発明者】
【氏名】徐 ▲シン▼
【審査官】坂庭 剛史
(56)【参考文献】
【文献】特開2021-039588(JP,A)
【文献】特開2020-178338(JP,A)
【文献】米国特許出願公開第2020/0250655(US,A1)
【文献】特開2007-028400(JP,A)
【文献】国際公開第2020/022599(WO,A1)
【文献】特表2011-523513(JP,A)
【文献】特開2009-044371(JP,A)
【文献】米国特許出願公開第2018/0121909(US,A1)
【文献】国際公開第2019/202393(WO,A1)
【文献】特開2020-197873(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/50
(57)【特許請求の範囲】
【請求項1】
プロセッサ(21)及びメモリ(22)を備え、トランザクションが記録される台帳(23)を前記メモリにそれぞれ保存する複数の参加ノード(ND)と、
前記複数の参加ノードから、前記トランザクションを検証するための複数の検証ノードを選択する検証ノード選択処理を行う、検証ノード選択装置(4)と、を備え、
前記検証ノード選択装置は、前記検証ノード選択処理として、
前記複数の参加ノードのそれぞれについて、少なくとも前記トランザクションの処理速度または信頼性に関するスコアを算出し、
前記複数の参加ノードから、高い前記スコアを有する参加ノードを所定数以上選択することで、前記複数の検証ノードを決定し、
前記選択された複数の検証ノードのそれぞれが前記トランザクションを検証することで合意形成を行
い、
前記各参加ノードは、複数の事業体(BE)のいずれか一つによって管理されており、
前記検証ノード選択装置は、前記各参加ノードを管理する前記事業体の従業員数に基づいて前記信頼性に関するスコアを信頼性スコアとして算出する、
分散型台帳システム。
【請求項2】
前記検証ノード選択装置は、前記各参加ノードのプロセッサ使用率に基づいて前記トランザクションの処理速度に関するスコアを効率性スコアとして算出する、
請求項1に記載の分散型台帳システム。
【請求項3】
前記検証ノード選択装置は、前記各参加ノードのメモリ使用率に基づいて前記トランザクションの処理速度に関するスコアを効率性スコアとして算出する、
請求項1又は2に記載の分散型台帳システム。
【請求項4】
前記検証ノード選択装置は、前記各参加ノードの物理的な位置に基づいて前記トランザクションの処理速度に関するスコアを効率性スコアとして算出する、
請求項1ないし3のいずれか一項に記載の分散型台帳システム。
【請求項5】
前記検証ノード選択装置は、
前記複数の参加ノードの各参加ノードについて、前記トランザクションの処理速度に関する効率性スコアと、前記信頼性に関する信頼性スコアとを合算することで、前記スコアを算出する
、
請求項1ないし
4のいずれか一項に記載の分散型台帳システム。
【請求項6】
前記検証ノード選択装置は、
前記効率性スコアに重み付けした値と、前記信頼性スコアに重み付けした値とを合算することで、前記スコアを算出する、
請求項
2ないし
5のいずれか一項に記載の分散型台帳システム。
【請求項7】
前記検証ノード選択装置は、新たなノードが前記分散型台帳システムに参加ノードとして参加する際に、前記検証ノード選択処理を行う、
請求項1ないし
6のいずれか一項に記載の分散型台帳システム。
【請求項8】
前記検証ノード選択装置は前記検証ノード選択処理を予めされた所定のタイミングで周期的に行う、
請求項1ないし
7のいずれか一項に記載の分散型台帳システム。
【請求項9】
前記検証ノード選択装置は、前記複数の参加ノードのうちいずれかひとつが前記分散
型台帳システムから離脱する際に、前記検証ノード選択処理を行う、
請求項1ないし
8のいずれか一項に記載の分散型台帳システム。
【請求項10】
分散型台帳システム(1)において、トランザクションを検証することで合意形成を行う方法であって、
前記トランザクションが記録される台帳(23)をメモリ(22)に保存する複数の参加ノード(ND)のそれぞれについて、少なくとも前記トランザクションの処理速度または信頼性に関するスコアを算出し、
前記複数の参加ノードから、高い前記スコアを有する参加ノードを所定数以上選択することで
、複数の検証ノードを決定し、
前記選択された複数の検証ノードのそれぞれが前記トランザクションを検証することで合意形成を行い、
前記各参加ノードは、複数の事業体(BE)のいずれか一つによって管理されており、前記検証ノードを決定における前記参加ノードの選択のために、前記各参加ノードを管理する前記事業体の従業員数に基づいて前記信頼性に関するスコアを信頼性スコアとして算出する、
方法。
【発明の詳細な説明】
【関連出願の相互参照】
【0001】
本出願は、2021年3月24日に出願された米国仮出願番号63/165,520に基づくもので、ここにその記載内容を援用する。
【技術分野】
【0002】
本開示は、分散型台帳システムに関する。
【背景技術】
【0003】
ブロックチェーンシステムに代表される分散型台帳データベースは、P2Pネットワークにより複数のノードにまたがって存在し、各ノードが同一の台帳を複製・保存する。例えば、このような分散型台帳システムの一例として、Quorumが知られている。Quorumは、許可されたノードのみによって構成されるコンソーシアム型のブロックチェーンシステムを構成する(非特許文献1参照)。Quorumでは、ビザンチン障害耐性を有する合意形成アルゴリズムとして、特定の検証ノードによってトランザクションの検証を行うRaft又はIBFT(Istanbul Byzantine Fault Tolerance)等を選択可能となっている。しかしながら、これら合意形成アルゴリズムを達成する検証ノードは常に同じであるため、例えば、検証ノードのプロセッサ使用率が高く検証に割けるリソースが少ない場合であっても、当該検証ノードによる合意形成が行われてしまう。したがって、トランザクションの合意形成に時間がかかる問題があった。
【先行技術文献】
【非特許文献】
【0004】
【発明の概要】
【0005】
本開示の一態様による分散型台帳システムは、プロセッサ及びメモリを備え、トランザクションが記録される台帳をメモリにそれぞれ保存する複数の参加ノードと、複数の参加ノードから、トランザクションを検証するための複数の検証ノードを選択する検証ノード選択処理を行う、検証ノード選択装置と、を備える。検証ノード選択装置は、検証ノード選択処理として、複数の参加ノードのそれぞれについて、少なくともトランザクションの処理速度または信頼性に関するスコアを算出し、複数の参加ノードから、高いスコアを有する参加ノードを所定数以上選択することで、複数の検証ノードを決定する。選択された複数の検証ノードのそれぞれはトランザクションを検証することで合意形成を行い、各参加ノードは、複数の事業体(BE)のいずれか一つによって管理されており、検証ノード選択装置は、各参加ノードを管理する事業体の従業員数に基づいて信頼性に関するスコアを信頼性スコアとして算出する。
【0006】
本開示の一態様による方法は、分散型台帳システムにおいて、トランザクションを検証することで合意形成を行う方法である。方法は、トランザクションが記録される台帳をメモリに保存する複数の参加ノードのそれぞれについて、少なくともトランザクションの処理速度または信頼性に関するスコアを算出することと、複数の参加ノードから、高いスコアを有する参加ノードを所定数以上選択することで、複数の検証ノードを決定することと、選択された複数の検証ノードのそれぞれがトランザクションを検証することで合意形成を行うことと、を含む。ここで、各参加ノードは、複数の事業体(BE)のいずれか一つによって管理されている。方法は、検証ノードを決定における参加ノードの選択のために、各参加ノードを管理する事業体の従業員数に基づいて信頼性に関するスコアを信頼性スコアとして算出することと、を含む。
【図面の簡単な説明】
【0007】
【
図1】本開示の一実施形態による分散型台帳システムの全体を示す概念図である。
【
図2】本開示の一実施形態による事業体を示すブロック図である。
【
図3】本開示の一実施形態による検証ノード選択装置及びサーバーを示すブロック図である。
【
図4】本開示の一実施形態による検証ノード選択処理を示すフローチャートである。
【
図5】本開示の一実施形態によるノード数評価テーブルを示す図である。
【
図6】本開示の一実施形態によるプロセッサ使用率評価テーブルを示す図である。
【
図7】本開示の一実施形態によるメモリ使用率評価テーブルを示す図である。
【
図8】本開示の一実施形態による物理的位置評価テーブルを示す図である。
【
図9】本開示の一実施形態による事業体規模評価テーブルを示す図である。
【
図10】本開示の一実施形態による経過年数評価テーブルを示す図である。
【
図11】本開示の一実施形態によるノード情報及び検証ノード選択処理結果の一例を示す図である。
【
図12】本開示の一実施形態による合意形成処理及び台帳更新処理を示すフローチャートである。
【
図13】本開示の一実施形態による合意形成処理を示す図である。
【
図14】本開示の変形例による分散型台帳システムの全体を示す概念図である。
【発明を実施するための形態】
【0008】
以下、本開示の実施形態を図面に基づき説明する。
【0009】
図1に示す本開示の分散型台帳システム(以下、システムと呼ぶ)1は、事業体BEによってそれぞれ管理される複数のノードNDと、当該システム1を構築するサーバー3と、検証ノード選択装置(マネージャー)4とを備えている。各事業体BEは、1または2以上のノードNDを管理するようなっている。同一の事業体BEに管理される複数のノードNDは、例えば、当該事業体BEの事業所や関連会社によって管理されるノードNDである。複数のノードNDは、互いに通信可能に接続されてネットワークNWを形成している。なお、システム1は、ブロックチェーン、Hashgraph、Corda等、種々の分散型台帳技術を用いて構成可能である。
【0010】
図1に示すように、本実施形態のシステム1は、4つの事業体BE1~BE4と、7つのノードND1~ND7とから構成されている。事業体BE1は、3つのノードND1~ND3を管理している。すなわち、ノードND1~ND3は、事業体BE1に所属している。また、事業体BE2は、1つのノードND4を管理している。すなわち、ノードND4は、事業体BE2に所属している。事業体BE3は、1つのノードND5を管理している。すなわち、ノードND5は、事業体BE3に所属している。さらに事業体BE4は、2つのノードND6,ND7を管理している。すなわち、ノードND6,ND7は、事業体BE4に所属している。
【0011】
図2に示すように各ノードNDは、少なくとも一つのプロセッサ(ノードプロセッサ21)と、少なくとも一つのメモリ(ノードメモリ22)とを備えている。ノードメモリ22は、コンピュータにより読み取り可能なプログラム及びデータ等を非一時的に記憶する、例えば半導体メモリ、磁気媒体、及び光学媒体等のうち、少なくとも一種類の非遷移的実体的記憶媒体である。ノードプロセッサ21は、例えばCPU(Central Processing Unit)、GPU(Graphics Processing Unit)、及びRISC(Reduced Instruction Set Computer)-CPU等のうち、少なくとも一種類をコアとして含む。ノードプロセッサ21は、ノードメモリ22に記憶されたプログラムに含まれる複数の命令を実行する。ノードメモリ22に記憶されるプログラムには、後述する合意形成処理を行うためのプログラムが含まれる。
【0012】
各ノードNDは、例えばシステム1に参加する複数の事業体BE間での取引(トランザクション)を記録した台帳23を保存している。トランザクションの内容としては、システム1の目的や参加する事業体BEの事業態様などに応じて、多様な取引情報が含まれる。例えば、本システム1が、自動車部品のサプライチェーンを構成している場合には、トランザクションとして、自動車部品の原材料の購入記録や自動車部品の出荷時における出荷品目録などが取引情報として含まれる。
【0013】
また、各ノードNDは、ユーザー端末からの台帳更新要求を受信可能に構成されている。ユーザー端末は、各事業体BEにおいてそれぞれ管理される、例えばスマートフォン、タブレット、コンピュータ等であって、各事業体BEの従業員によって操作される。例えば、自動車部品を出荷する際に、その事業体BEの従業員がユーザー端末を操作することで、出荷目録などのトランザクションを本システム1の分散台帳に記録するよう台帳更新要求を送信する。台帳更新要求が送信され合意形成処理を経て認証されたトランザクションが、各ノードNDに保存された台帳23に追加されることで、台帳23は更新および同期される。これにより、各ノードNDは共通の台帳23を保存している。
【0014】
図3に示すサーバー3は、ノードNDと同様に、少なくとも一つのプロセッサ(サーバープロセッサ31)及び少なくとも一つのメモリ(サーバーメモリ32)を備えた、例えばクラウドサーバーである。サーバーメモリ32は、コンピュータにより読み取り可能なプログラム及びデータ等を非一時的に記憶する、例えば半導体メモリ、磁気媒体、及び光学媒体等のうち、少なくとも一種類の非遷移的実体的記憶媒体である。サーバープロセッサ31は、例えばCPU(Central Processing Unit)、GPU(Graphics Processing Unit)、及びRISC(Reduced Instruction Set Computer)-CPU等のうち、少なくとも一種類をコアとして含む。
【0015】
サーバープロセッサ31は、サーバーメモリ32に記憶されたプログラムに含まれる複数の命令を実行する。サーバーメモリ32に記憶されるプログラムには、システム1に参加しているノード(参加ノード)NDの情報を取得する監視プログラムが含まれる。
【0016】
図1に示すように、サーバープロセッサ31は、システム1に参加している全ノードNDの情報を定期的に取得し、取得したノードNDの情報をノード情報データベース33に保存する。サーバープロセッサ31によって取得されるノードNDの情報は、例えば、各ノードNDを管理する事業体BE(以下、対応事業体)、対応事業体の従業員数、各ノードNDがシステム1に参加した時からの経過年数、各ノードNDの物理的位置等の情報が含まれる。これらの情報は、比較的長い期間ごと(例えば、数日または数か月ごと)に取得される。また、ノードNDの情報として、各ノードNDのプロセッサ使用率、各ノードNDのメモリ使用率等が取得される。これらの情報については、比較的短い期間ごと(例えば、毎秒または毎分)に取得される。サーバープロセッサ31は、取得したノードNDの情報によって、ノード情報データベース33を更新する。
【0017】
サーバーメモリ32には、トランザクションの検証を行う検証ノードを指定した検証ノードリスト34が保存されている。後述するように、この検証ノードリスト34は、検証ノード選択装置4で検証ノードが選択されると当該選択結果に基づいて随時更新されるようになっている。サーバープロセッサ31は、検証ノードリスト34にて指定されたノードNDを、検証ノードとして機能させる。
【0018】
サーバー3は、システム1の参加事業体BEと利害関係の無い第三者によって管理されるか、全参加事業体BEの共同によって管理される。これにより、参加事業体BEによる検証ノードリスト34の改ざん等の不正が抑止されている。
【0019】
検証ノード選択装置4は、ノードND及びサーバー3と同様に、少なくとも一つのプロセッサ(選択装置プロセッサ41)及び少なくとも一つのメモリ(選択装置メモリ42)を備えている。選択装置メモリ42は、コンピュータにより読み取り可能なプログラム及びデータ等を非一時的に記憶する、例えば半導体メモリ、磁気媒体、及び光学媒体等のうち、少なくとも一種類の非遷移的実体的記憶媒体である。選択装置プロセッサ41は、例えばCPU(Central Processing Unit)、GPU(Graphics Processing Unit)、及びRISC(Reduced Instruction Set Computer)-CPU等のうち、少なくとも一種類をコアとして含む。
【0020】
選択装置プロセッサ41は、選択装置メモリ42に記憶されたプログラムに含まれる複数の命令を実行する。選択装置メモリ42に記憶されるプログラムには、後述する検証ノード選択処理を行うための検証ノード選択プログラムが含まれる。さらに選択装置メモリ42には、
図5~
図10に示す複数の評価テーブル(後述)が保存されている。各評価テーブルの内容は必要に応じて変更可能であるが、当該変更には全参加事業体BEの承認が必要である。
【0021】
図3に示すように検証ノード選択装置4は、例えばインターネットを介してサーバー3と通信可能に接続されている。選択装置プロセッサ41は、サーバー3へデータ提供要求を送信することで、サーバー3のノード情報データベース33に保存されたノード情報を取得する。さらに検証ノード選択装置4は、取得したノード情報に基づいて検証ノード選択処理を実行し、検証ノードを選択する。検証ノード選択処理の結果がサーバー3へ送信されることで、サーバー3の検証ノードリスト34が更新される。
【0022】
以下、検証ノードを選択するための検証ノード選択処理と、検証されたトランザクションを用いて台帳23を更新するための合意形成処理と、について説明する。
【0023】
(検証ノード選択処理)
図4に示す検証ノード選択処理は、検証ノード選択装置4により所定のタイミングで実行される。検証ノード選択処理は、例えば、システム1を構築して始動させるタイミングや、新たなノードNDがシステム1に参加したり、ノードNDがシステム1から離脱したタイミングで実施される。これらのタイミングに加え、検証ノード選択処理は、予め設定された所定時間毎に定期的に実行される。当該所定時間は、例えば、サーバープロセッサ31がノード情報データベース33を更新する時間間隔(例えば、毎秒または毎分ごと)に合わせて設定される。検証ノード選択処理では、合意形成処理においてトランザクションの検証及び合意形成を行う検証ノードを、複数のノードNDから選択する。
【0024】
S101において選択装置プロセッサ41は、サーバー3へデータ提供要求を行うことで、ノード情報データベース33に保存されたノード情報(
図11参照)を取得する。S102において選択装置プロセッサ41は、取得したノード情報と、
図5~10に示す各評価テーブルと、に基づいて、各ノードNDのスコアを算出する。尚、
図5~10に示す評価テーブルの評価値は一例であり、適宜変更可能である。ここで評価値とは、合意形成の処理速度や、本システム1に対する信頼性に応じて付与される値である。各ノードNDは、複数項目(ノード情報ごと)について評価値が算出され、当該評価値の合計値がスコアとして求められる。そして、高いスコアを持つノードNDが優先的に検証ノードとして選択されることになる。
【0025】
ここで、S102におけるスコアの算出例を、
図5~11を参照しつつ説明する。
図11は、システム1を構成するノードND1~ND7のノード情報を示す表であって、所定のタイミングにおけるノード情報の内容が示されている。ノード情報としては、前述したように、各ノードNDが所属する所属事業体BE、所定のタイミングでの各ノードNDのプロセッサ使用率およびメモリ使用率、各ノードの物理的位置、所属事業体BEの従業員数、およびノードNDの参加後経過年数が一例として挙げられている。
【0026】
図5は、ノード数評価値を算出するためのノード数評価テーブルを示している。システム1に参加しているノードNDを多数管理しているような事業体BEは、トランザクションの改ざん等の不正を行ってシステム1自体の信頼性や価値を棄損する動機付けが低い。そして、そのような事業体BEに属しているノードNDも、不正を働くメリットは少なくなる。そこで本実施形態では、ノードNDを多数管理している事業体BEに所属するノードNDが優先的に検証ノードとして選出されるように、当該ノードNDに対して高いノード数評価値が与えられている。したがって、ノード数評価値は、システム1におけるノードNDの信頼性に関する信頼性スコアと見なすことができる。
【0027】
図6、7はそれぞれ、プロセッサ使用率評価値及びメモリ使用率評価値を算出するためのプロセッサ使用率評価テーブル及びメモリ使用率評価テーブルを示している。一般的に、ノードNDによるトランザクションの処理速度は、プロセッサ使用率及びメモリ使用率に依存する。つまり、プロセッサ使用率及びメモリ使用率が低いノードNDは、トランザクションの処理に割けるリソースを多く有しているため、それらの使用率が高い場合に比べ、トランザクションを早く処理することができる。そこで本実施形態では、プロセッサ使用率及びメモリ使用率が低いノードNDが優先的に検証ノードとして選出されるように、プロセッサ使用率及びメモリ使用率が低いノードNDに対して高いプロセッサ使用率評価値及びメモリ使用率評価値が与えられている。尚、プロセッサ使用率評価値及びメモリ使用率評価値は、ノードNDにおけるトランザクションの処理速度に関する効率性スコアと見なすことができる。
【0028】
図8は、物理的位置評価値を算出するための物理的位置評価テーブルを示している。ノードND間の通信速度は、ノードND間の物理的な位置関係に依存する。具体的に、ノードND同士の物理的位置が近い場合、これらのノードND間における通信速度は速くなる(レイテンシが低くなる)傾向にある。さらに、トランザクションの検証処理においては、全ての検証ノード間で通信が行われるため、同一の地域に集まった互いに物理的位置の近いノードNDを検証ノードとして選択することで、全体的なトランザクションの処理速度を高めることができる。そこで本実施形態では、互いに物理的位置の近いノードNDが優先的に検証ノードとして選出されるように、多くのノードNDが集まる地域(以下、ノード数最多地域と呼ぶ)に位置したノードND群に対して高い物理的位置評価値が与えられている。また、ノード数最多地域に近い地域に位置するノードNDも、ノード数最多地域のノードND群との通信速度が速くなる傾向にある。そこで本実施形態では、ノード数最多地域と同一国内の別地域に位置したノードND群に対して、最高の物理的位置評価値に次いで高い物理的位置評価値が与えられている。尚、物理的位置評価値も、トランザクションの処理速度に関する効率性スコアと見なすことができる。
【0029】
図9は、事業体規模評価値を算出するための事業体規模評価テーブルを示している。一般的に、規模が大きい事業体BEは、認知度が高く、社会的信用も得られている場合が多い。このような事業体BEが、トランザクションの改ざん等の不正を行って、自身の社会的地位を損ねるような行動をとる可能性は低い。また、事業規模の大きい事業体BEは、ソフトウェア障害やハードウェア障害を起こさないように管理するための十分な資本を有していると考えられる。つまり、規模が大きい事業体BE及び該事業体BEに所属するノードNDは信頼性が高いと考えられる。そこで本実施形態では、規模が大きい事業体BE、具体的には従業員数が多い事業体BEに所属するノードNDが優先的に検証ノードとして選出されるように、当該ノードNDに対して高い事業体規模評価値が与えられている。
【0030】
図10は、経過年数評価値を算出するための経過年数評価テーブルを示している。一般的に、システム1に参加した時点からの経過年数が長いノードNDは、トランザクションの改ざん等の不正を行って、システム1自体の価値を棄損する動機付けは低いと考えられる。つまり、システム1に参加した時点からの経過年数が長いノードNDは、信頼性が高いと考えられる。そこで本実施形態では、システム1に参加した時点からの経過年数が長いノードNDが優先的に検証ノードとして選出されるように、当該ノードNDに対して高い経過年数評価値与えられている。事業体規模評価値及び経過年数評価値は、ノード数評価値と同様に、ノードNDの信頼性に関する信頼性スコアと見なすことができる。
【0031】
以下、S102のスコア算出例を、ノードND1を例に具体的に説明する。ノードND1は、ノードNDを合計3つ有する事業体BE1に属している。この場合、ノードND1には、
図5に示すノード数評価テーブルに基づいて、ノード数評価値として「2」が付与される。また、
図11に示すノードND1のこのタイミングでのプロセッサ使用率は70%である。この場合、ノードND1には、
図6に示すプロセッサ使用率評価テーブルに基づいて、プロセッサ使用率評価値として「1」が付与される。
図11に示すノードND1のメモリ使用率は50%である。この場合、ノードND1には、
図7に示すメモリ使用率評価テーブルに基づいて、メモリ使用率評価値として「2」が付与される。
図11に示すように、ノードND1は東京(Tokyo)に位置している。
図11の例では、東京に位置するノードNDの数は、他の地域に位置するノードNDの数よりも大きくなっている。この場合、ノードND1には、
図8に示す物理的位置評価テーブルに基づいて、物理的位置評価値として「3」が付与される。
図11に示すように、ノードND1が属する事業体BE1の従業員数は1000人である。この場合、ノードND1には、
図9に示す事業体規模評価テーブルに基づいて、事業体規模評価値として「3」が付与される。
図11に示すように、ノードND1は、システム1に参加してからの経過年数が2年である。この場合、ノードND1には、
図10に示す経過年数評価テーブルに基づいて、経過年数評価値として「2」が付与される。さらに選択装置プロセッサ41は、以上の各評価値を合計して、ノードND1のスコアを算出する。こうして算出されたノードND1のスコアは「13」である(
図11参照)。選択装置プロセッサ41は、他ノードND2~ND7についても、同様にスコアを算出する。
【0032】
S103において選択装置プロセッサ41は、算出したスコアの高い所定数(以下、検証ノード数という)のノードNDを、検証ノードとして選出する。ここで、システム1における障害許容ノード数をfとした時、検証ノード数は3f+1以上に設定される。本実施形態では、f=1として、検証ノード数が4に設定されている。したがって、スコアの高い順に4つ以上のノードが、検証ノードとして選択装置プロセッサ41により選出される。本実施形態では、
図11に示すように、7つのノードNDのうち4つのノードND1,ND2,ND5,ND7が検証ノードとして選出される。また、本実施形態のシステム1では、最も高いスコアを有するノードND2が、合意形成処理におけるリーダーノードとして設定される。
【0033】
S104において選択装置プロセッサ41は、検証ノードとして選択されたノードNDを特定した検証ノード選択結果をサーバー3へ送信する。検証ノード選択結果を受信したサーバー3は、S105において、サーバーメモリ32に保存されている検証ノードリスト34を更新する。
【0034】
以上の検証ノード選択処理によれば、ノードNDの処理速度に基づいて検証ノードが選択され得る。したがって、処理速度の速いノードNDを優先的に検証ノードとして選択することができる。したがって、処理速度の速い検証ノードによる効率的な合意形成処理を行うことができる。
【0035】
上記した検証ノード選択処理によれば、ノードND同士の通信速度に基づいて検証ノードが選択され得る。したがって、通信速度の速いノードND群を優先的に検証ノードとして選択することができる。したがって、通信速度の速い検証ノード群による効率的な合意形成処理を行うことができる。
【0036】
上記した検証ノード選択処理によれば、ノードNDの属する事業体BE及びノードND自体の信頼性に基づいて検証ノードが選択され得る。したがって、信頼性の高いノードNDを優先的に検証ノードとして選択することができる。したがって、不正や障害を起こす可能性の低い検証ノードによる効率的な合意形成処理を行うことができる。
【0037】
(合意形成処理及び台帳更新処理)
次に、
図12、13を用いて、台帳23を更新するための合意形成処理及び台帳更新処理について説明する。
図12,13において、S201~S212が合意形成処理に対応し、S213~S215が台帳更新処理に対応する。本実施形態の合意形成処理は、ユーザー端末からいずれかのノードNDへ送信される台帳更新要求に応じて実行される。合意形成処理は、台帳更新要求を受信したノードND(以下、受付ノードと呼ぶ)、リーダーノード、及び上述した選択処理で選択された検証ノードによって実行される。以下、検証ノードとして選択されなかったノード(以下、非検証ノードと呼ぶ)ND3が台帳更新要求を受信した場合の合意形成処理及び台帳更新処理について説明する。
【0038】
以下の説明では、ノードND3を管理する事業所において、自動車部品を出荷する場合を例に説明を行う。この場合、ノードND3は、当該事業所にて管理されるユーザー端末からの台帳更新要求を受信する受付ノードとなる。S201において受付ノードND3は、台帳更新要求に基づいて、出荷する自動車部品数、出荷先の事業所等を含むトランザクションを生成する。
【0039】
次に、S202において受付ノードND3は、サーバー3に対して、いずれのノードNDがリーダーノードであるか問い合わせる。サーバー3は、受付ノードND3から問い合わせを受けると、サーバーメモリ32に保存された検証ノードリスト34を参照して、現時点で選択されたリーダーノード(
図11の例では、最も高いスコアを付与されたノードND2)を受付ノードND3へ通知する。
【0040】
S203において受付ノードND3は、サーバー3からの通知を受けると、生成したトランザクションをリーダーノードND2へ送信する。
【0041】
S204においてリーダーノードND2は、サーバー3にいずれのノードNDが検証ノードであるかを問い合わせる。リーダーノードND2から問い合わせを受けたサーバー3は、サーバーメモリ32に保存された検証ノードリスト34を参照して、現時点で選択された検証ノード(
図11の例では、ノードND1,ND2,ND5,ND7)をリーダーノードND2に通知する。
【0042】
S204に続くS205においてリーダーノードND2は、サーバー3から通知を受けると、検証ノードND1,ND2,ND5,ND7のうち、自身を除く検証ノードND1,ND5,ND7に対してトランザクションを転送する。
【0043】
S206において各検証ノードND1,ND5,ND7は、サーバー3にいずれのノードNDが検証ノードであるかを問い合わせる。各検証ノードND1,ND5,ND7から問い合わせを受けたサーバー3は、サーバーメモリ32に保存された検証ノードリスト34を参照して、現時点で選択された検証ノードを各検証ノードND1,ND5,ND7に通知する。
【0044】
S206に続くS207において各検証ノードND1,ND5,ND7は、サーバー3から通知を受けると、検証ノードND1,ND2,ND5,ND7のうち、自身を除く検証ノードに対してトランザクションを転送する。
【0045】
S208において、リーダーノードND2を含む各検証ノードND1,ND2,ND5,ND7は、受信したトランザクションを検証する。トランザクションの検証においては、少なくとも、受信した全てのトランザクションが一致しているか否かが確認される。S209において各検証ノードND1,ND5,ND7は、検証の結果、トランザクションが一致するか否かを判断する。トランザクションが一致する場合、合意形成処理はS210へ進む。一方、トランザクションの内容が正しくない場合、合意形成処理はS211へ進む。
【0046】
S210において各検証ノードND1,ND2,ND5,ND7は、トランザクションの検証が完了した旨の通知(検証完了通知)を、他の検証ノード全てに送信する。
【0047】
S209又はS210に続くS211において各検証ノードND1,ND2,ND5,ND7は、一定数以上の検証ノードから検証完了通知を受信したか否かを判断する。本実施形態の検証ノードは、検証ノード数(4つ)の2/3+1以上の検証ノード、つまり、3以上の検証ノードから検証完了通知を受信したか否かを判断する。これにより本実施形態のシステム1は、検証ノードのうちいずれか1つによる不正又は障害に対する耐性(ビザンチン障害耐性)を有する。一定数以上の検証ノードからの検証完了通知を受信した場合、合意形成が完了し、台帳更新処理のS213に進む。一方、一定数以上の検証ノードからの検証完了通知を受信していない場合、合意形成は失敗し、合意形成処理はS212に進む。
【0048】
S212においてリーダーノードND2は、合意形成に失敗した旨の通知を受付ノードND3へ送信する。
【0049】
合意形成処理に続く台帳更新処理のS213において各検証ノードは、合意形成されたトランザクションに基づいて自身の台帳23をそれぞれ更新する。S214においてリーダーノードND2は、非検証ノードND3,ND4,ND6へトランザクションを転送(ブロードキャスト)し、それぞれの台帳23を更新させる。
【0050】
S212又はS214に続くS215において受付ノードND3は、台帳更新の要求元であるユーザー端末に、合意形成処理及び台帳更新処理の結果、つまり、台帳23が更新されたか否かを送信する。
【0051】
以上の合意形成処理及び台帳更新処理によれば、台帳23を更新するトランザクションの合意形成は、検証ノード選択処理によって選択された検証ノードによって行われる。また、検証ノード選択処理では、処理速度の速いノードNDが優先的に、検証ノードとして選択される。したがって、処理速度の速いノードNDによって、効率的な合意形成を行うことができる。
【0052】
検証ノード選択処理では、通信速度の速いノードND群が優先的に、検証ノードとして選択される。したがって、通信速度の速いノードND群によって、効率的に合意形成を行うことができる。
【0053】
検証ノード選択処理では、信頼性の高いノードNDが優先的に、検証ノードとして選択される。したがって、信頼性の高いノードNDによって、効率的に合意形成を行うことができる。
【0054】
さらに、上記した検証ノード選択処理は定期的に実行される。つまり、検証ノードが定期的に変更され得る。したがって、常に適した検証ノードによって合意形成処理を実行することができる。
【0055】
以上、本開示の実施形態について説明したが、本開示は、上記実施形態に限定して解釈されるものではなく、本開示の要旨を逸脱しない範囲内において種々の実施形態及び組み合わせに適用することができる。
【0056】
本開示の合意形成処理は、上記実施形態に記載したものに限定されず、検証ノード選択処理において選択された検証ノードによってトランザクションの検証・合意形成を行うものであればよい。
【0057】
検証ノード選択処理では、プロセッサの処理能力(性能)を示すプロセッサ性能評価値に基づいて、スコアを算出してもよい。この場合、処理能力の高いノードに対して高いプロセッサ性能評価値を付与することによって、処理能力の高いノードが検証ノードとして選択されやすくなるため、合意形成処理をより効率的に実行することができる。
【0058】
検証ノード選択装置4の選択装置プロセッサ41は、システム1の目的や、参加する事業体BEの事業態様などによって、各評価値に対する係数の値を設定(重み付け)し、各評価値にそれぞれ重み付けしたものの合計を、各ノードNDのスコアとして算出してもよい。例えば、合意形成速度を重視したシステム1を構築する場合、プロセッサ使用率評価値、メモリ使用率評価値、及び物理的位置評価値に対する係数として「1」を設定すると共に、それら以外の評価値に対する係数として「0.5」を設定してもよい。この場合、トランザクションの処理速度の速いノードND、及び、通信速度が速いノードND群が、検証ノードとして選出されやすくなる。したがって、係数を設定しない場合に比べて、システム1における合意形成速度が向上し得る。さらに例えば、安全性を重視したシステム1を構築する場合、所属事業体評価値、事業体規模評価値、及び経過年数評価値に対する係数として「1」を設定すると共に、それら以外の評価値に対する係数として「0.5」を設定してもよい。この場合、信頼性の高いノードNDが検証ノードとして選出されやすくなる。したがって、係数を設定しない場合に比べて不正や障害が発生する可能性を低減し、システム1の安全性が向上し得る。
【0059】
上記実施形態では、最も高いスコアを有するノードNDがリーダーノードとして設定される。しかし、リーダーノードは、特定のノードNDであってもよい。また、リーダーノードは、一定時間毎に順番に変更されてもよい。
【0060】
検証ノード選択処理は、ユーザー端末からの台帳更新要求に応じて、合意形成処理に先立って実行されてもよい。
【0061】
サーバー3は、検証ノードリスト34の更新に伴って、各ノードNDに検証ノードリスト34を配布してもよい。この場合、合意形成処理において受付ノード、リーダーノード、及び各検証ノードは、リーダーノード及び検証ノードについてサーバー3へ問い合わせることなく、配布された検証ノードリスト34に従ってトランザクションを送信してもよい。
【0062】
サーバー3のハードウェア又はソフトウェア障害等により上記検証ノード選択処理及び合意形成処理を実行できない場合、全参加ノードNDが検証ノードとしてトランザクションを検証することで合意形成を行ってもよい。
【0063】
ハードウェア又はソフトウェア障害がサーバー3に発生した際にも、検証ノード選択処理及び合意形成処理が行われるように、サーバー3と同様の構成を有するバックアップサーバーによってサーバー3を冗長化してもよい。
【0064】
上述した実施形態では、第三者によって管理された単一のサーバー及び単一の検証ノード選択装置4によって、ノード情報の収集および検証ノードの選択が実施されていた。一方、
図14に示す変形例に係るシステム1aでは、各事業体BEがそれぞれサーバー3a及び検証ノード選択装置4を有していてもよい。全参加ノードNDのノード情報を直接各ノードNDから取得する上記実施形態のサーバー3に対して、サーバー3aは、自身の所属する事業体BEのノードNDのノード情報をノードNDから直接取得する。さらにサーバー3aは、他事業体BEに所属するサーバー3aから、当該他事業体BEのノードNDのノード情報を取得する。こうして各サーバー3aにおけるサーバーメモリのノード情報データベース33には、全ノードNDのノード情報が保存される。以上により、各サーバー3aのノード情報データベース33は互いに同期され、全ノードNDについて共通のノード情報が保存される。また、各サーバー3aのサーバーメモリには、上記実施形態のサーバー3と同様に検証ノードリストが保存されている。各事業体BEに管理される検証ノード選択装置4は、同一の事業体BEによって管理されるサーバー3a(以下、対応サーバーと呼び)と通信可能に接続されている。さらに検証ノード選択装置4は、対応サーバー3aにデータ提供要求を送信することで上記実施形態と同様の検証ノード選択処理を実行し、対応サーバー3aの検証ノードリストを更新可能である。尚、本変形例では、各事業体BEによって管理される検証ノード選択装置4のうち、いずれかの検証ノード選択装置4が検証ノード選択処理を実行する。本変形例のシステム1aによれば、いずれかの検証ノード選択装置4にハードウェア又はソフトウェア障害が起こった場合でも、他の検証ノード選択装置4によって検証ノード選択処理を継続することができる。