図1に示す本開示の一実施形態による履歴管理システム10は、複数の車載ユニット100、及び少なくとも一つ以上のサーバ20等によって構成されている。履歴管理システム10は、ブロックチェーンBC(図5参照)を用いて、車載ユニット100を搭載した複数の車両Vの履歴情報を管理する。各車載ユニット100及び各サーバ20は、相互に通信可能に接続されており、ネットワークNWにおける一つのノードNDとしてそれぞれ機能する。
車載ユニット100は、通信器40と共に車両Vに搭載されている。車載ユニット100は、通信器40を介して、他のノードNDと通信可能である。通信器40は、V2X通信のための複数種類のアンテナを備えた通信モジュールを主体に構成されている。通信器40にて実施されるV2X通信には、V2N通信、V2I(路車間)通信、及びV2V(車車間)通信等が含まれている。V2N通信又はV2I通信にて交信するネットワークNWの範囲は、車載ユニット100から見たネットワーククラウドNWCとなる。
通信器40は、LTE(Long Term Evolution)及び5G等の通信規格に沿ったV2N(Vehicle to cellular Network)通信により、基地局BSとの間で情報を送受信する。通信器40は、V2I(Vehicle to roadside Infrastructure)通信により、道路に設置された路側機RSUとの間で情報を送受信する。通信器40は、V2V(Vehicle to Vehicle)通信により、自車両(V1)周囲の特定範囲(以下、「通信範囲Rc」)に存在する他の車両(V2,V3)の通信器40との間で、直接的に情報を送受信する。
各車載ユニット100は、図2に示すように、通信器40を介した他の車載ユニット100との相互接続により、Peer to Peer(P2P)通信可能なP2Pネットワークを形成する。車載ユニット100は、P2P通信により、各車両V(V1〜V5)にて収集された履歴情報を相互に持ち合い、各車両Vの履歴情報を分散保存した状態を構築する。
詳記すると、各車載ユニット100は、搭載された各車両Vにて収集された履歴情報をトランザクションとして扱ったブロックチェーンBCを生成する。ブロックチェーンBCは、車両V毎に生成され、履歴情報を含んだ多数のブロックBLを有している。車載ユニット100には、ブロックBLを保管するための記憶領域として、ブロック保存部69が確保されている。車載ユニット100は、自ら生成した個々のブロックBLを、自らのブロック保存部69に保存すると共に、他の車載ユニット100のブロック保存部69にも保存させる。その結果、各車両Vのブロック保存部69には、少なくとも自車両を含む複数の車両Vにて生成されたブロックBLが保存されている。
ここで、ブロック保存部69に保存される多数のブロックBLのうちで、そのブロック保存部69を有する車両V(自車両)にて収集された履歴情報を含むブロックBLが、「マスタブロックBLm」である。マスタブロックBLmは、自車ブロックであり、時系列に沿った鎖状連結により、ブロックチェーンBCを形成している。一方、マスタブロックBLmを除く他のブロックBLが「バックアップブロックBLc」である。バックアップブロックBLcは、履歴情報の収集元である車両VがマスタブロックBLmとは異なる他車ブロックであり、他の車両Vにて生成されたマスタブロックBLmの複製データである。
図1〜図3に示す車載ユニット100は、プロセッサ61、RAM62、メモリ装置63及び入出力インターフェースを有する制御回路を主体に構成された車載コンピュータである。プロセッサ61は、RAM62と結合された演算処理のためのハードウェアであって、種々のプログラムを実行可能である。
メモリ装置63は、不揮発性の記憶媒体を含む構成である。メモリ装置63には、上述のブロック保存部69となる記憶領域が確保されている。加えてメモリ装置63には、プロセッサ61によって実行される種々のプログラムが格納されている。メモリ装置63に格納されたプログラムには、多数の履歴情報をブロックチェーンBC化して分散管理するための管理プログラムPcが少なくとも含まれている。管理プログラムPcは、後述するチェーン追加処理(図6参照)をプロセッサ61に実施させる。プロセッサ61による管理プログラムPcの実行により、情報収集部70、ブロック生成部71、承認依頼部72、承認演算部73、異常判定部74、保存先設定部75、ブロック管理部76及びブロック送信部77等の機能部が車載ユニット100に実装される。
情報収集部70は、車内LANのネットワークバス45に出力された種々の情報を収集可能である。情報収集部70は、車両Vの履歴情報に加えて、ブロック生成の開始のトリガとなる情報を、ネットワークバス45から取得する。履歴情報には、特定時点における車両Vの走行距離、走行用バッテリへの充電記録、及び部品交換の内容記録等が含まれる。これらの履歴情報は、各ブロックBLのトランザクション(図5「TX1〜TX3」参照)として用いられる。トリガ情報には、車両電源の切り替え情報、充電開始を示す情報、車両Vの位置情報、部品交換の実施を示す情報等が含まれる。
ブロック生成部71は、情報収集部70によって収集された履歴情報から、自車両ViのブロックチェーンBCに連結される最新のブロックBL(マスタブロックBLm)を生成する。ブロック生成部71は、過去(n−1番目まで)のブロックBLのいずれにも含まれていない履歴情報を、新規に生成する(n番目の)ブロックBLに記録していく。
ブロック生成部71は、複数の開始条件の成立に基づき、ブロックBLの生成を開始する。開始条件には、前回のブロックBLの生成から一定の時間が経過した、車両電源及びエンジン(イグニッション)がオン状態及びオフ状態に切り替えられた、充電が開始された、ディーラ等の特定地点に移動した、並びに部品交換を実施した等が含まれる。
ブロック生成部71は、ブロックBL(マスタブロックBLm)を生成したノードND(車載ユニット100)を示すノード識別情報IDn(図5「ID_NODE」参照)を、マスタブロックBLmに記録する。ノード識別情報IDnは、ブロックBLに保存された履歴情報の収集元となる車両Vを示す車両識別情報としても機能する。尚、図2及び図3等では、同一の背景意匠(白抜きも含む)とされたブロックBLが、同一のノード識別情報IDnを有するブロックBLである。
加えてブロック生成部71は、新たなマスタブロックBLmを生成するとき、ブロック特定情報InB(図5「Info_BUP」参照)を、マスタブロックBLmに記録する。ブロック特定情報InBは、マスタブロックBLmが生成された時点において、ブロック保存部69に保存されていたバックアップブロックBLcを特定可能にする情報である。ブロック特定情報InBには、各バックアップブロックBLcのノード識別情報IDnと、各ブロックチェーンBCにおいて何番目に連結されたブロックBLであるかを示す情報(図5「B/H」参照)とが、互いに紐付けられた状態でリスト状に記録されている。尚、ブロックチェーンBCにおける何番目のブロックBLであるかを示す情報を、以下、「ブロックハイト」という。また、ブロックチェーンの復元時にブロックハイトに替えて使用可能な情報として、ブロックBL間の前後の関係を示す情報が、各ブロックBLに保持されていてもよい。
承認依頼部72は、後述するブロック承認処理(図8参照)により、新たに生成されたブロックBL(マスタブロックBLm)の承認を、自車両Viと通信可能な状態にある複数の他ノードNDに依頼する。承認の依頼先となるノード(以下、「承認ノードND2」)は、主に他車両Vaに搭載された車載ユニット100である。承認依頼部72によって承認を依頼される承認ノードND2の数Nは、奇数とされ、より望ましくは三以上のとされる。
承認依頼部72は、承認ノード数N以上の他車両VaがV2V通信の通信範囲Rcにいる場合、通信範囲Rc内にある各他車両Vaの車載ユニット100に、V2V通信によってブロックBLの承認を依頼する。一方で、承認ノード数N未満の他車両VaしかV2V通信の通信範囲Rcにいない場合、通信範囲Rc外にある他車両Vaの車載ユニット100に、V2N通信又はV2I通信により、ネットワーククラウドNWCを通じてブロックBLの承認を依頼する。
承認演算部73は、他の車載ユニット100(他ノードND)の承認依頼部72から受信した承認依頼に基づき、他ノードNDにて生成されたブロックBLの正当性を検証する。承認演算部73の演算により、自ノードNDは、承認ノードND2として機能する。承認演算部73は、正当性の検証に必要な情報を他ノードNDから受信し、他ノードNDにて新規に生成されたマスタブロックBLmの内容が正しいか否かを検証する。承認演算部73は、検証結果に基づく承認可否の回答を、承認者である自ノードNDを示す固有のハッシュ値(図5「Aut_A〜C」参照)と共に、承認の依頼元である他ノードNDへ向けて送信する。
異常判定部74は、他ノードNDの承認演算部73から返信された承認可否の結果に基づき、新しいマスタブロックBLmをブロックチェーンBCに連結するか否かを決定する。具体的には、承認ノード数Nのうちの過半数(N=3の場合、三分の二以上)から、連結を肯定する内容の返信を受け取っている場合、異常判定部74は、新しいマスタブロックBLmのブロックチェーンBCへの連結を決定する。一方で、連結を肯定する内容の返信が承認ノード数Nの過半数未満(N=3の場合、三分の二未満)である場合、異常判定部74は、新しいマスタブロックBLmの連結を回避すると共に、ブロック保存部69に保存されているデータに異常があると判定する。尚、連結の可否の決定は、過半数を超えるか否かに限定されない。具体的には、承認ノード数Nに対応した閾値が設定され、当該閾値に基づき、連結の可否が決定されてもよい。
保存先設定部75は、後述する保存先設定処理(図9参照)により、ブロックチェーンBCへの連結を許可された新規のマスタブロックBLmのバックアップの保存先を、ブロック単位で設定する。保存先設定部75は、一般的なブロックチェーン技術のように、ネットワーク上の全ノードにブロックのバックアップを送信させるのではなく、ごく一部且つ複数の他ノードNDへ向けて、限定的にバックアップを送信させる。
保存先設定部75は、新規にブロックBLを生成するタイミングで、新規のマスタブロックBLmの複製であるバックアップブロックBLcについて、その保存先を、自車両Viと通信可能な状態にある他ノードNDの中から選択する。こうしたブロック単位での保存先の設定によれば、ブロックBLを共有するノードNDは、ブロックBL毎に異なってくる。そして、バックアップブロックBLcの保存先となるバックアップノードの数Kは、承認ノード数Nよりも少ない数に設定される。
保存先設定部75は、通信可能な状態にある他ノードNDに保存先としての優先順位を付与し、優先順位の高い他ノードNDから順に、バックアップブロックBLcの保存の可否を問い合わせる。保存先設定部75は、複数の承認ノードND2の中から、バックアップブロックBLcを共有する保存先を選択する。加えて保存先設定部75は、ブロック追加の承認を後で実施した承認ノードND2ほど、高い優先順位を付与する。また保存先設定部75は、ブロック保存部69の記憶容量の残量が少ない他ノードNDよりも、当該残量の多い他ノードNDを、バックアップブロックBLcの保存先として優先的に選択する。
さらに保存先設定部75は、バックアップブロックBLcの保存先となる他ノードNDを選択するルールを、ブロック生成の開始条件に応じて変更する。一例として、車両電源のオフ状態への切り替えが開始条件であった場合、保存先設定部75は、自車両Viの近傍にて停車状態にある他車両Vaの車載ユニット100を、保存先として優先的に選択する。また別の一例として、充電開始が開始条件であった場合、保存先設定部75は、自車両Viの近傍にて充電状態にある他車両Vaの車載ユニット100を、保存先として優先的に選択する。さらに別の一例として、部品交換の実施が開始条件であった場合、保存先設定部75は、部品交換を行うディーラ等のサーバ20を、保存先のノードNDとして優先的に選択できる。
ブロック管理部76は、ブロック保存部69へのブロックBLの保存を管理する。ブロック管理部76は、新しいマスタブロックBLmの連結が承認された場合に、当該マスタブロックBLmを、バックアップブロックBLcと共にブロック保存部69に保存する。加えてブロック管理部76は、他ノードNDからバックアップブロックBLcを受信した場合、当該バックアップブロックBLcを、マスタブロックBLmと共にブロック保存部69に保存する。
ブロック管理部76は、マスタブロックBLmの保存領域がブロック保存部69に常に確保されるよう、バックアップブロックBLcの受信を制御する。ブロック管理部76は、ブロック保存部69にバックアップブロックBLcを保存可能な他車両Vaの数に、上限を設定している。加えてブロック管理部76は、ブロック保存部69に保存可能な一台の他車両VaあたりのバックアップブロックBLcの数にも、上限を設定している。これらの上限を超える場合、ブロック管理部76は、他ノードNDからのバックアップブロックBLcの受け取りを拒否する。その結果、バックアップブロックBLcは、多くの車載ユニット100に分散された状態で、ネットワークNWに保存される。
ブロック送信部77は、他ノードNDへ向けたブロックBLの送信を制御する。ブロック送信部77は、新たに生成されたマスタブロックBLmが承認された場合に、保存先設定部75にて設定された保存先となるノードNDへ向けて、バックアップブロックBLcを送信する。ブロック送信部77は、保存先となる他ノードNDがV2V通信の通信範囲Rc内にいる場合、V2V通信によりバックアップブロックBLcを保存先の他ノードNDへ向けて送信する。一方、保存先となる他ノードNDが通信範囲Rcの外にいる場合、ブロック送信部77は、V2N通信又はV2I通信により、ネットワーククラウドNWCを通じて、バックアップブロックBLcを保存先の他ノードNDへ向けて送信する。
加えてブロック送信部77は、後述する復元要求及び提供要求を、ネットワーククラウドNWCから取得する。復元要求及び提供要求には、要求元にて必要とされているブロックBLのノード識別情報IDn(図5参照)等が付属している。ブロック送信部77は、ブロック保存部69に保存されているブロックBLの中から、取得したノード識別情報IDn等に該当するブロックBL、即ち、復元要求及び提供要求にて送信を要求されているブロックBLを探索する。要求にあるブロックBLがブロック保存部69に保管されている場合、ブロック送信部77は、該当するブロックBLを、要求元のノードND(サーバ20等)へ向けて送信する。
図4,図1及び図3に示すサーバ20は、各車両Vの修繕等を行うディーラ等に設置されたコンピュータである。一つのサーバ20の演算処理能力は、一つの車載ユニット100の演算処理能力よりも高い。サーバ20は、ネットワークNWを構成する回線に実質的に常時接続されている。
ここで、履歴管理システム10において、各車載ユニット100にて生成したブロックBLを互いに持ち合うまでの処理は、実質全て、エッジ側となる各車両Vの各車載ユニット100にて実施される。そのためサーバ20は、ブロックBLを分散保存させる通常の処理に実質的に関与しないノードNDとなる。サーバ20は、各車載ユニット100間でのP2P通信の欠点を補完するノードNDとして機能し、各車載ユニット100にて生じた異常に対処する。サーバ20は、各車載ユニット100に記憶された管理プログラムPcをチェックする機能と、異常と判定されたブロックBL群を復元する機能とを備えている。
サーバ20は、プロセッサ21、RAM22、メモリ装置23及び入出力インターフェースを有する制御回路を主体に構成されている。プロセッサ21は、RAM22と結合された演算処理のためのハードウェアであって、種々のプログラムを実行可能である。メモリ装置23は、不揮発性の記憶媒体を含む構成であって、プロセッサ21によって実行される種々のプログラムを格納している。メモリ装置23に格納されたプログラムには、履歴管理システム10を保全する保全プログラムが少なくとも含まれている。保全プログラムは、後述する各復元処理(図10及び図11参照)をプロセッサ21に実施させる。プロセッサ21による保全プログラムの実行により、プログラム確認部31、復元要求部32及びデータ復元部33等の機能部がサーバ20に実装される。
プログラム確認部31は、各車載ユニット100からの問い合わせに応じて、各車載ユニット100の管理プログラムPcが最新のバージョンであるか否かを確認する。プログラム確認部31は、問い合わせ元となる車載ユニット100へ向けて、確認結果を送信する。加えてプログラム確認部31は、旧バージョンの管理プログラムPcを使用している車載ユニット100へ向けて、最新バージョンの管理プログラムPcを送信する。
復元要求部32は、ネットワークNWへの接続状態にある各ノードND、主に車載ユニット100へ向けて、ブロックBLの提供を呼びかける要求をブロードキャスト配信する。ここで、ブロック保存部69のデータに異常の虞がある車両Vを、特定車両Vrとする。特定車両Vrは、ユーザによってディーラ等に持ち込まれる。復元要求では、特定車両VrのマスタブロックBLmのバックアップを保管している車両V(車載ユニット100)に対し、そのバックアップブロックBLcの送信が要求される。復元要求部32は、特定車両Vrに搭載された車載ユニット100のノード識別情報IDn(図5参照)を、復元要求と共に各ノードNDへ向けて配信する。
復元要求部32は、復元要求の送信後、さらに提供要求をネットワークNWにブロードキャスト配信する。提供要求では、特定車両Vrのブロック保存部69にバックアップされていたバックアップブロックBLcの送信が要求される。復元要求部32は、ノード識別情報IDn(図5参照)にブロックハイトを組み合わせたデータを、提供要求と共に配信する。こうしたデータの配信により、復元要求部32は、どのノードNDにて生成された何番目のブロックBLの送信が必要とされているのかを、各ノードNDに通知する。
データ復元部33は、復元要求に応じて各ノードNDから送信されたバックアップブロックBLcを受信する。データ復元部33は、収集したバックアップブロックBLcをマスタブロックBLmとし、ブロックハイトの情報に基づき時系列で連結させて、特定車両VrのブロックチェーンBCを復元する。データ復元部33は、提供要求に応じて各ノードNDから送信されたブロックBLを受信し、バックアップブロックBLcとして復元する。こうしてデータ復元部33により復元されたブロックチェーンBC及び各バックアップブロックBLcの復元データは、特定車両Vrのブロック保存部69に複製される。
次に、各車載ユニット100にて生成される各ブロックBL及びブロックチェーンBCの詳細を、図5に基づき、図3を参照しつつ、さらに説明する。
各ブロックBLは、ブロックハイト、ノード識別情報IDn及びブロック特定情報InBに加えて、トランザクションとしての履歴情報、承認者情報、及びブロックヘッダを含むデータ構造である。トランザクション(TX1〜TX3)は、情報収集部70によって収集され、一つのブロックBLに少なくとも一つ以上含まれている。一つのブロックBLに含まれるトランザクションの数は、適宜変更されてよい。各トランザクションは、当該トランザクションの発生時を示すタイムスタンプ(TS1〜TS3)と紐付けられた状態で記録されている。
承認者情報(Aut_A〜Aut_C)は、そのブロックBLを承認した承認ノードND2(図3参照)を示す情報である。承認者情報は、承認ノードND2から受信する情報であり、個々の承認ノードND2を示す固有のハッシュ値である。各ブロックBLには、承認ノード数Nに対応した数の承認者情報が記録されている。
ブロックヘッダ(BLOCK Header)には、ブロック生成時を示すタイムスタンプ(Time Stamp)、トランザクションのマークルルート、承認者情報のマークルルート、及び前ブロックBLのヘッダハッシュ値が含まれている。これらの情報は、ブロック生成部71によって記録される。
トランザクションのマークルルート(TX-M_Root)は、ブロックBLに含まれる一つ以上のトランザクションのデータの要約であり、個々のトランザクションを末端とするマークルツリーのルートハッシュ値である。承認者のマークルルート(Aut-M_Root)は、複数の承認ノードND2から取得したハッシュ値の要約であり、各承認ノードND2の固有のハッシュ値を末端とするマークルツリーのルートハッシュ値である。
前ブロックBLのヘッダハッシュ値(Prev.Hash)は、前ブロックBLのブロックヘッダのデータをハッシュ関数に入力して得られる値である。ブロックチェーンBCは、各ブロックBLのブロックヘッダをハッシュ化し、次のブロックヘッダに組み込む入れ子構造を形成している。そのため、一つのブロックBLのトランザクション等を変更した場合、以降のブロックBLのヘッダハッシュ値も連鎖的に異なる値となる。故に、ヘッダハッシュ値の確認により、トランザクション等の破損及び改ざん等が検証可能となる。
以上のヘッダハッシュ値及び各マークルルートの演算には、SHA−256等のハッシュ関数が使用される。このようなハッシュ関数の種類及びハッシュ値のビット数等の仕様は、適宜変更されてよい。例えば、MD−5、SHA−1、SHA−512及びSHA−3等のハッシュ関数が、ハッシュ値の生成に使用されてよい。また、ヘッダハッシュ値を算出するハッシュ関数と、各マークルルートを算出するハッシュ関数とは、互いに同一であってもよく、互いに異なっていてもよい。
次に、管理プログラムPcによる管理のもと、新たに収集された履歴情報からブロックBLを生成し、ブロックチェーンBCへの連結とバックアップの実施とを行うチェーン追加処理の詳細を、図6〜図9に基づき、図1,図3及び図5を参照しつつ説明する。図6に示すメイン処理は、上述の開始条件の成立に基づき、車載ユニット100によって開始される。
メイン処理のS10では、ブロック生成処理(図7参照)により、車両Vにて収集された履歴情報から、ブロックチェーンBCに新たに追加するブロックBL(マスタブロックBLm)を生成し、S20に進む。S20では、ブロック承認処理(図8参照)により、S10にて新たに生成したブロックBLの承認を、車両Vと通信可能な複数の他ノードNDに依頼し、S30に進む。
S30では、保存先設定処理(図9参照)により、S20にて承認されたブロックBLのバックアップの保存先を、車両Vと通信可能な他ノードNDの中から設定し、S40に進む。一つのブロックBLが新規に生成される度にS30が実施されるため、個々のブロックBLのバックアップの保存先は、ブロック単位で設定されることとなる。
S40以降の処理では、S30の保存先設定処理の設定結果に基づき、優先順位の高い他ノードNDへ向けて、バックアップブロックBLcの保存依頼を順に送信する。具体的に、S40では、高優先度の他ノードND(例えば、最後の承認ノード)へ向けて、バックアップブロックBLcの保存依頼を送信し、S50に進む。S40による保存依頼の送信先となる他ノードND(バックアップノード)は、保存依頼を受信し(S91)、保存依頼の承認可否を送信する(S92)。ノード数及びブロック数のいずれかの上限に達している場合には、受け取りを拒否する旨の通知が返信される。
S50では、バックアップノードからの承認可否の結果を受信し、S60に進む。S60では、保存を承認する返信があったか否かを判定する。保存を拒否する返信を受け取った場合、又は返信がないままタイムアウトした場合、S60からS40に戻り、別の他ノードNDへ向けて保存依頼を送信する。一方、S60にて、保存を承認する返信を取得したと判定した場合、S70に進む。
S70では、保存先となるバックアップノードへ向けて、バックアップブロックBLcを送信し、S80に進む。S70にて送信されたバックアップブロックBLcは、バックアップノードにて受信され、バックアップノードのブロック保存部69に保存される(S93)。
S80では、バックアップブロックBLcの送信先の数が、予め規定されたバックアップノード数Kに達したか否かを判定する。S80にて、送信先の数がバックアップノード数Kよりも少ない場合、S40に戻り、別の他ノードNDへ向けて保存依頼を送信する。一方、S80にて、送信先の数がバックアップノード数Kに達したと判定した場合、チェーン追加処理を終了する。
次に、S10にてサブ処理として実施されるブロック生成処理、S20にてサブ処理として実施されるブロック承認処理、S30にてサブ処理として実施される保存先設定処理、の各詳細を、順に説明する。
図7に示すブロック生成処理のS101では、トランザクション(TX1〜TX3)となる履歴情報、及び履歴情報を取得した時刻を示すタイムスタンプ(TS1〜TS3)を収集し、S102に進む。S102では、S101にて、トランザクションを収集できたか否かを判定する。S102にて、トランザクションが無いと判定した場合、ブロックBLの新規生成を行わず、チェーン追加処理を終了する。一方、S102にて、少なくとも一つのトランザクションを収集したと判定した場合、S103に進む。
S103では、ブロック保存部69に現在保存されているバックアップブロックBLcのリストをブロック特定情報InB(Info_BUP)として作成し、S104に進む。S104では、S101にて収集したトランザクションのマークルルート(TX-M_Root)を算出し、S105に進む。S105では、新たに追加するブロックBLを生成し、メイン処理のS20に進む。S105では、例えば履歴情報が収集された車両Vを示すノード識別情報IDn等が、ブロックBLに記録される。一方で、S105にて生成されるブロックBLは、承認前であるため、承認者情報及び承認者のマークルルートを有していない状態である。
図8に示すブロック承認処理では、一つのノードND(依頼ノードND1)の承認依頼部72による承認依頼に基づき、他の複数のノードND(承認ノードND2)が、依頼ノードND1にて新しく生成された新規ブロックBLの正当性を検証する。ブロック承認処理のS111では、管理プログラムPcのバージョンを示すデータと、管理プログラムPcの本体(全体)のデータとを、それぞれハッシュ関数に入力し、二つのハッシュ値(X1,Y1)を生成して、S112に進む。S112では、承認の依頼先となる承認ノードND2を設定し、承認ノードND2へ向けて、承認依頼及びハッシュ値(X1,Y1)を送信する。
S113では、承認ノードND2が、承認依頼及びハッシュ値(X1,Y1)を受信する。S114では、承認ノードND2に保存されている管理プログラムPcを、ブロック保存部69から読み出す。そして、依頼ノードND1と同一のハッシュ関数を用いて、自ノードの管理プログラムPcのデータを入力とした二つのハッシュ値(Xa,Ya)を生成する。
S115では、S112にて受信した依頼ノードND1のハッシ値(X1,Y1)と、S114にて生成した承認ノードND2のハッシュ値(Xa,Ya)とを比較し、共に同一であるか否かを判定する。即ち、S115では、依頼ノードND1及び承認ノードND2の使用する管理プログラムPcが互いに実質的に同一であるか否かを判定する。S115にて、二つのハッシュ値が共に同一である(X1=Xa,Y1=Ya)と判定した場合、S116に進む。S116では、ブロックBLの正当性を検証するための検証用データの提供を、依頼ノードND1に要求する。
一方、S115にて、少なくとも一方のハッシュ値が相違していると判定した場合、承認ノードND2は、一連の処理を終了し、サーバ20のプログラム確認部31(図4参照)へ向けて、管理プログラムPcのバージョン等を問い合わせる。プログラム確認部31は、依頼ノードND1及び承認ノードND2の各管理プログラムPcについて、正しい(最新)であるか否かを判断する。承認ノードND2は、管理プログラムPcに問題が無い旨の通知をプログラム確認部31から取得した場合、依頼ノードND1の管理プログラムPcに問題がある旨の通知を、依頼ノードND1へ向けて送信してもよい。また、各管理プログラムPcのプログラムバージョンのハッシュ値は、エッジ側である各ノードNDではなく、クラウド側となるサーバ20にて生成され、各ノードNDに通知されてもよい。こうした処理によれば、管理プログラムPcのプログラムバージョンの不整合が、事前にサーバ20側にて確認可能となる。
S116にて送信された検証用データの要求は、S117にて、依頼ノードND1に取得される。そしてS118にて、依頼ノードND1は、検証用データを承認ノードND2へ向けて送信する。検証用データには、前ブロックBLのブロックヘッダに含まれる前々ブロックBLのヘッダハッシュ値(第一データ)、前ブロックBLのブロックヘッダの生成に必要な他のデータ(第二データ)が含まれる。加えて検証データには、追加されるブロックBLに含まれる前ブロックBLのブロックヘッダをハッシュ化したヘッダハッシュ値が含まれる。
S118にて送信された検証用データは、S119にて、承認ノードND2に取得される。そして承認ノードND2は、S120にて、検証演算を実施する。具体的に、検証演算では、S119にて取得した第一データ及び第二データから、承認ノードND2の管理プログラムPcに基づき、前ブロックBLのヘッダハッシュ値を算出する。そして、S119にて受信した依頼ノードND1にて算出のヘッダハッシュ値が、承認ノードND2にて算出されたヘッダハッシュ値と一致しているか否かを判定する。これら二つのハッシュ値が一致している場合、承認ノードND2は、新しいブロックBLの追加を承認する。一方、二つのハッシュ値が異なっている場合、承認ノードND2は、新しいブロックBLの追加を承認しない。
以上のように、ブロック承認処理では、マスタブロックBLmを生成した依頼ノードND1とは異なる少なくとも一つの承認ノードND2にて、新規のマスタブロックBLmに含まれるヘッダハッシュ値が計算される。そして、正しい(最新)の管理プログラムPcを用いてブロックBLを生成しており、且つ、その結果として得られたヘッダハッシュ値が正しいことを持って、新たに生成されたブロックBLの正当性が確認される。
S121では、S120による検証結果を依頼ノードND1へ向けて送信する。S120にて、ブロックBLの追加を承認した場合、追加を承認する旨の通知と、承認ノードND2の固有のハッシュ値を依頼ノードND1へ向けて送信する。一方、S120にて、ブロックBLの追加を承認しなかった場合、追加を承認しない旨の通知を依頼ノードND1へ向けて送信する。
S121にて送信された承認可否の結果等は、S122にて、依頼ノードND1に取得される。そして、承認する旨の通知を取得していた場合、S123にて、承認ノードND2のハッシュ値を承認者情報として、ブロックBLに記録し、S124に進む。S124では、承認を肯定する通知を、承認ノード数Nの三分の二(過半数)以上から取得できたか否かを判定する。S124にて、承認を肯定する通知が承認ノード数Nの三分の二未満であると判定した場合、S112に戻り、別の承認ノードND2へ向けて、承認依頼等を送信する。
一方、承認ノードND2にて算出されたヘッダハッシュ値が、依頼ノードND1にて生成されたヘッダハッシュ値と異なる旨の通知を取得していた場合、S125に進む。S125では、依頼ノードND1の保管データに改ざん等の異常があると判定し、チェーン追加処理を終了する。異常判定の結果は、車両Vに搭載された表示装置等を通じてユーザに通知される。
一方、S124にて、承認を肯定する通知が承認ノード数Nの三分の二以上から取得した場合、承認完了と判定し、S126に進む。S126では、承認者情報であるハッシュ値のマークルルートを算出し、当該マークルルートをブロックBLに記録して、S127に進む。S127では、新しいブロックBLをブロックチェーンBCに連結させて、メイン処理のS30に進む。
図9に示すブロック承認処理のS131では、チェーン追加処理の開始条件を把握し、S132に進む。S132では、自車両Viの通信範囲Rc内にいる他ノードND(他車両Va)を把握し、S133に進む。S133では、通信可能な状態にある他ノードNDについて、ブロック保存部69の記憶容量の残量を把握し、S134に進む。S134では、S131〜S133にて把握した情報に基づき、他ノードNDの中から、バックアップブロックBLcの保存先とするノードを選択し、且つ、保存先とする優先順位を設定して、メイン処理のS40に進む。
次に、S125での異常判定に基づき、ブロック保存部69の保管データを復元する一連の復元処理の詳細を、図10及び図11に基づき、図12及び図5を参照しつつ説明する。保管データの復元は、上述したように、特定車両Vrが搬入されたディーラのサーバ20によって実施される。サーバ20は、ブロックチェーンBCを復元するチェーン復元処理と、バックアップブロックBLcを復元するバックアップ復元処理とを順に実施する。尚、図12では、ユーザ1の車両V1が特定車両Vrとされる。また、ユーザ2の車両V2は、ネットワークNWに接続されていない状態である。
図10に示すチェーン復元処理のS161では、特定車両Vrのノード識別情報IDnと共に、復元要求をネットワークNWに一斉配信する。S161の復元要求は、S162にて、他ノードNDに受信される。復元要求を受信した他ノードNDは、S163にて、提供ノードとして、ノード識別情報IDnの一致するバックアップブロックBLcが自らのブロック保存部69にあるか否かを照合する。例えば、ユーザ4の車両V4のように、該当するバックアップブロックBLcが無い提供ノードは、処理を終了する。
一方で、ユーザ3の車両V3のように、該当するバックアップブロックBLcがあると判定した提供ノードは、S164を実施する。S164では、バックアップブロックBLc(BL1,BL2)を所持している旨の通知を、要求元であるサーバ20へ向けて送信する。S164にて送信された所持通知は、S165にてサーバ20に受信される。そして、S166にて、サーバ20は、バックアップブロックBLcの送信依頼を、提供ノードへ向けて送信する。
S166にて送信された送信依頼がS167にて提供ノードに受信されると、提供ノードは、S168にて、必要とされているバックアップブロックBLcの送信を開始する。送信されるバックアップブロックBLcは、特定車両Vrのノード識別情報IDnが記録されたブロックBL(BL1,BL2)である。こうして送信されたバックアップブロックBLcは、S169にて、サーバ20に受信される。サーバ20は、受信したバックアップブロックBLcから、マスタブロックBLmを復元し、S170に進む。S170では、ブロックハイト、タイムスタンプ又はブロックBC間の前後関係を示す情報に基づき、回収された各マスタブロックBLmを時系列に連結させて、ブロックチェーンBCを復元し、S171に進む。
S171では、マスタブロックBLmの不足を判定する。S171にて、マスタブロックBLmに抜けがあると判定した場合、S165に戻り、不足しているブロックBLを他の提供ノードから受信する。一方、S171にて、全てのマスタブロックBLmを回収し、ブロックチェーンBCを復元できたと判定した場合、チェーン復元処理を終了する。
図11に示すバックアップ復元処理のS181では、サーバ20が、チェーン復元処理にて復元されたブロックチェーンBCから、ブロック特定情報InBを読み出し、S182に進む。ブロック特定情報InBは、最後のブロックBL(BL2)から読み出される。S182では、ブロック特定情報InBに記録のあるバックアップブロックBLcと同一のブロックBLの提供要求を、ネットワークNWに一斉配信する。提供要求の対象となる各ブロックBLは、ノード識別情報IDn及びブロックハイトの組み合わせによって特定される。
S182による復元要求は、S183にて、各提供ノードに受信される。提供要求を受信した提供ノードは、S184にて、該当するブロックBLが自らのブロック保存部69に保管されているか否かを照合する。S184にて、ブロックBLがあると判定した場合、S185に進む。
S185では、要求のあったブロックBLを所持している旨の通知を、要求元であるサーバ20へ向けて送信する。S185にて送信された所持通知は、S186にてサーバ20に受信される。そして、S187にて、サーバ20は、ブロックBLの送信依頼を、提供ノードへ向けて送信する。
S187にて送信された送信依頼がS188にて提供ノードに受信されると、提供ノードは、S189にて、必要とされているブロックBLの送信を開始する。S189にて送信されたブロックBLは、S190にて、サーバ20に受信される。そしてサーバ20は、受信したブロックBLから、バックアップブロックBLcを復元し、S191に進む。
S191では、S181にて取得したブロック特定情報InBを参照し、復元されたバックアップブロックBLcの不足を判定する。S191にて、バックアップブロックBLcが不足していると判定した場合、S186に戻り、別の提供ノードからブロックBLをさらに取得する。例えば、ユーザ4の車両V4から二つのブロックBL4,BL2を受信しても、バックアップブロックBLcは不足した状態である。この場合、さらにユーザ3の車両V3から二つのブロックBL1,BL3を受信する。そしてさらに、ユーザ5の車両V5から一つのブロックBL1を受信する。こうした処理を継続し、S191にて、全てのバックアップブロックBLcを復元できた判定した場合、バックアップ復元処理を終了する。
ここまで説明した本実施形態では、ブロックBLが生成されると、生成されたブロックBLのバックアップの保存先は、自車両Viと通信可能な他ノードNDの中から、ブロック単位で設定される。故に、ブロックチェーンBCを形成する全ブロックBLが全ノードNDによって共有されることが回避され得る。換言すれば、各車載ユニット100にて生成されたブロックBLは、全てのノードNDに複製されず、ごく一部の複数のノードNDとの間で共有されるに留められる。以上によれば、ブロックBLの共有に起因する通信量の増加及び各ノードNDの保存データ量の増加は、抑制され得る。したがって、ブロックチェーンBCの技術を用いて車両Vの履歴情報を保管するのに適した履歴管理が実現される。
加えて本実施形態では、新たに生成されたブロックBLの承認が複数の承認ノードND2に依頼される。そして、バックアップの保存先となるバックアップノード数Kは、ブロックBLの承認の依頼先となる承認ノード数Nよりも少ない設定である。こうした設定により、バックアップノード数Kが抑制されれば、通信量及び保存データ量の増加は、いっそう抑制可能となる。
また本実施形態での承認ノード数Nは、奇数とされており、より望ましくは三以上の奇数とされる。こうした設定であれば、承認ノードND2の多数決に基づき、新規に作成されたブロックBLの連結の可否が判断可能となる。以上によれば、新規のブロックBLを追加するか否かの判断ロジックが単純化され得る。
さらに本実施形態におけるバックアップノードの少なくとも一つは、ヘッダハッシュ値の計算を行った複数の承認ノードND2の中から選択される。多くの場合、バックアップを送信しようとするタイミングでも、ヘッダハッシュ値の計算を依頼した承認ノードND2と自ノードNDとの通信可能な状態は、維持されていると想定される。故に、承認ノードND2からバックアップノードを選択すれば、ブロック追加の承認後、バックアップブロックBLcを送信する処理への円滑な遷移が可能になる。
そして、ブロック追加の承認を後で実施した承認ノードND2ほど、バックアップノードとして選択される優先順位が高められる。こうした設定であれば、自ノードNDは、通信可能な状態を継続中の承認ノードND2を速やかにバックアップノードとして選択し、バックアップブロックBLcの送信を実行できる。以上のことから、承認を最後に実施した承認ノードND2は、最初のバックアップノードに設定されるのが望ましい。
加えて本実施形態では、自ノードNDと通信可能な複数の他ノードNDのうちで、ブロック保存部69の残容量の少ないノードよりも、ブロック保存部69の残容量の多いノードが、バックアップノードとして優先的に選択される。このように、ブロック保存部69の残容量が多いノードNDにバックアップブロックBLcが優先的に移譲されれば、一つのノードNDへのバックアップブロックBLcの集中が回避され得る。その結果、バックアップブロックBLcがネットワークNWにおいて多くのノードNDに分散保存され易くなるため、バックアップの作成を制限していても、纏まったデータの損失が発生し難くなる。
また本実施形態では、バックアップノードを選択するルールが、新規ブロックBLの生成を開始する開始条件に応じて変更される。こうした制御によれば、自ノードNDは、ブロック生成を開始したタイミングにて自車両Viが置かれている状況に合わせて、通信可能な状態を維持し易い他ノードNDを優先的にバックアップノードに設定し得る。以上によれば、車両Vに搭載された車載ユニット100をノードNDとして機能させる履歴管理システム10であっても、バックアップブロックBLcの送信は、安定的に実施可能となる。
加えて本実施形態では、自車両Viの履歴情報からマスタブロックBLmを生成する車載ユニット100が、他車両Vaの履歴情報のバックアップブロックBLcを保管するノードNDとして機能する。故に、バックアップブロックBLcを保管するための専用サーバ又は専用車載器等の設置の必要性が低減可能となる。
また本実施形態では、一つのブロック保存部69にバックアップブロックBLcを保存可能な他車両Vaの数には、上限が設定されている。こうした設定であれば、車載ユニット100のブロック保存部69に、マスタブロックBLm及びバックアップブロックBLcの両方が保存可能であっても、マスタブロックBLmを保存するための記憶領域が確保され得る。加えて、一つの車載ユニット100へのバックアップの集中が回避され得るため、纏まったデータの損失が防止可能となる。
さらに本実施形態では、ブロック保存部69に保存可能な一つの他車両Va(他ノードND)あたりのバックアップブロックBLcの数には、上限が設定されている。こうした設定であれば、一つの車両VのバックアップブロックBLcは、一つの車載ユニット100に集中的に保管されることなく、多数の車載ユニット100に分散保存され易くなる。以上によれば、一つの車載ユニット100の保管データに異常が生じた場合に、別の車載ユニット100のバックアップの大半が一斉に失われてしまう事態は、回避される。
加えて本実施形態では、V2V通信の通信範囲Rcにいる他ノードNDがバックアップノードとして優先的に選択される。そして、通信範囲Rcにバックアップノードがいる場合、V2V通信によってバックアップブロックBLcが送信される。以上のように、V2V通信を積極的に活用すれば、バックアップに起因するネットワーククラウドNWC側のトラフィック増加が抑制され得る。
一方で、V2V通信の通信範囲Rcに他ノードNDがいない場合、保存先設定部75は、V2V通信以外の通信手段を用いて、V2V通信の通信範囲外のバックアップノードへ向けて、バックアップブロックBLcを送信できる。故に、周囲に他車両VaがいないようなシーンでブロックBLが生成された場合でも、車載ユニット100は、バックアップノードへ向けたバックアップの送信を実施できる。
また本実施形態では、マスタブロックBLmが生成されるとき、ブロック保存部69に保存されているバックアップブロックBLcを特定可能にするブロック特定情報InBが、マスタブロックBLmに記録される。故に、保存データに異常が生じた特定車両Vrについて、そのブロックチェーンBCを提供ノードから送信されたブロックBLで復元できれば、ブロック保存部69にバックアップされていた他車両VaのバックアップブロックBLcが特定できる。
以上によれば、特定車両Vrのブロック保存部69は、自車両ViのマスタブロックBLmだけでなく、他車両VaのバックアップブロックBLcも復元された状態まで戻り得る。故に、バックアップブロックBLcが完全に失われて、ブロックチェーンBCの復元に必要なブロックBLの回収が不可能となる事態は、回避され得る。したがって、履歴情報を含んだブロックBLを限定的にバックアップする形態であっても、ブロックチェーンBCの復元が可能となる。
さらに本実施形態では、履歴情報を収集した車両Vを示す車両識別情報として、ノード識別情報IDnがマスタブロックBLmに記録されている。故に、バックアップブロックBLcを保存している各ノードNDは、特定車両Vrのノード識別情報IDnを復元要求と共に取得することで、特定車両VrについてのバックアップブロックBLcが自らのブロック保存部69にあるか否かを正しく判断し得る。
以上によれば、バックアップブロックBLcの保存先がブロック単位で設定されても、特定車両VrのブロックチェーンBCの復元に必要なバックアップブロックBLcは、保存先とされた他ノードNDから適切に回収可能となる。したがって、履歴情報を含んだブロックBLを限定的にバックアップする形態であっても、ブロックチェーンBCの復元が可能となる。
加えて本実施形態では、復元要求に基づき送信されたバックアップブロックBLcからブロックチェーンBCを復元したうえで、復元されたブロックチェーンBCの最新のブロックBLに記録されたブロック特定情報InBが読み出される。そして、読み出されたブロック特定情報InBに記録されていたバックアップブロックBLcの提供が呼びかけられる。以上によれば、サーバ20は、データ異常の生じる直前にブロック保存部69に保管されていたバックアップブロックBLcを正確に把握したうえで、各提供ノードにブロックBLの送信を呼びかけることができる。
また本実施形態では、承認ノードND2でのヘッダハッシュ値の検算に基づき、新規ブロックBLの追加が承認される。このように、新規ブロックBLを追加するタイミングで、直前のブロックヘッダのヘッダハッシュ値を確認すれば、トランザクションのデータ又は管理プログラムPcの異常が、適切に検出可能となる。故に、正当性を検証されたブロックBLの鎖状連結を繰り返して、ブロックチェーンBCを生成していくことが可能になる。
さらに本実施形態では、新規に生成されたブロックBLの正当性を確認するためのヘッダハッシュ値を承認ノードND2にて算出するステップの前に、依頼ノードND1及び承認ノードND2の保有する管理プログラムPcの同一性が確認される。故に、算出されたヘッダハッシュ値が互いに異なっていた場合、車載ユニット100は、管理プログラムPcの異常ではなく、トランザクション等のデータに異常があると、高精度に推定可能となる。
尚、上記実施形態では、マスタブロックBLmが「自車ブロック」に相当し、バックアップブロックBLcが「他車ブロック」に相当し、通信範囲Rcが「特定範囲」に相当する。また、バックアップノード数Kが「バックアップの保存先となるノードの数」に相当し、承認ノード数Nが「ブロックの承認の依頼先となるノードの数」に相当する。さらに、サーバ20が「コンピュータ」に相当し、車載ユニット100が「履歴管理装置」及び「コンピュータ」に相当する。
(他の実施形態)
以上、本開示の一実施形態について説明したが、本開示は、上記実施形態に限定して解釈されるものではなく、本開示の要旨を逸脱しない範囲内において種々の実施形態及び組み合わせに適用することができる。
上記実施形態において、バックアップを分散保存する一つのネットワークの全ノード数は、適宜変更されてよい。例えば、特定の規格を遵守した車載ユニットであれば、実質的な上限無く、ネットワークへの参加が許容されてもよい。この場合、車両を製造したメーカーに関係なく、各車載ユニットは、バックアップブロックを相互に持ち合うことができる。
一方、一つのネットワークに参加するノードには、一定の制限が設定されていてもよい。例えば、特定メーカーの車両に搭載された車載ユニットのみで、バックアップを分散保存する一つのネットワークが形成されてもよい。さらに、特定地域又は特定期間にて登録された車両の車載ユニットが、一つのネットワークを形成していてもよい。
そして、バックアップノード数K及び承認ノード数Nは、一つのネットワークに含まれる全ノード数よりも少ない値であれば、クラウド側のトラフィックを顕著に増加させない範囲で、適否設定されてよい。加えて、バックアップノード数Kは、承認ノード数Nと同じ値に設定されてもよく、又は承認ノード数Nよりも大きい値に設定されてもよい。さらに、承認ノード数Nは、偶数であってもよい。
バックアップノードを選択するルールは、適宜変更可能である。例えば保存先設定部は、バックアップを保存する車両が地理的に分散するように、GNSS信号等に基づいて、バックアップノードを選択してもよい。また保存先設定部は、承認ノードとは異なるノードを、バックアップノードとして優先的に選択してもよい。また保存先設定部は、過去にバックアップノードとして選択したことのある他ノードを優先的に今回のバックアップノードに選択してもよく、又は今回のバックアップノードとする対象から除外するようにしてもよい。加えて、保存先設定部は、開始条件に基づく優先順位の付与ルールの変更、及びメモリ残量に基づく優先順位の設定等を実施しなくてもよい。
上記実施形態にて、ブロック保存部に保存されるバックアップブロックについて、他ノード数及び一つのノードあたりのブロック数には、共に上限が設けられていた。これらの上限の具体的な値は、例えばブロック保存部の記憶容量等に応じて適宜変更されてよい。加えて、これらの上限は、設定されなくてもよい。
ブロックチェーンを構成する個々のブロックの内容及びデータサイズ等の仕様は、適宜変更されてよい。例えば、ブロックにトランザクションとして記録される履歴情報は、上記実施形態で例示した情報に限定されない。また、各トランザクションの取得時を示すタイムスタンプは、トランザクションと共にハッシュ値化されて、トランザクションのマークルルートに組み入れられてもよい。
さらに、ブロック特定情報及びノード識別情報等は、ブロックヘッダに組み入れられていてもよい。加えて、上記実施形態のノード識別情報は、車両識別情報としても機能する情報であった。しかし、各ブロックには、ノード識別情報と車両識別情報とが、別々の情報として記述されていてもよい。
上記実施形態のブロック生成部は、保管している各バックアップブロックのノード識別情報及びブロックハイトを収集し、新たに生成するマスタブロックに、ブロック特定情報として記録していた。こうしたブロック特定情報の内容は、バックアップブロックの保管情報を復元可能であれば、適宜変更されてよい。例えばブロックハイトに替えて、ブロックヘッダに記述されたタイムスタンプが、ブロック特定情報として残されてもよい。
上記実施形態では、一つの車両の履歴情報を保管するブロックチェーンが、車載ユニット毎に生成されていた。即ち、各車載ユニットのブロックチェーンは、互いに独立した存在であった。しかし、ヘッダハッシュ値を車載ユニット間で送信する処理により、複数の車載ユニットにて生成されるブロックが、ハッシュ値によってデータ的に連結されてもよい。以上によれば、一つのネットワークで収集された複数車両の履歴情報が、一つのブロックチェーンに集約される。その結果、トライザクション等の改ざんは、いっそう困難となる。
以上のように、一つのネットワーク全体で一つのブロックチェーンを生成する形態では、ノード識別情報及び車両識別情報は、ブロックに記録されなくてもよい。こうした形態では、ブロックハイト又はタイムスタンプが、ブロック保存部のデータ復元時において、提供ノードから収集すべきブロックを特定する情報として機能する。
上記実施形態では、ブロックチェーンの復元が完了した後に、バックアップブロックの復元が開始されていた。しかし、ブロックチェーンの復元と併行して、バックアップブロックの復元が実施されてもよい。例えば、収集された中で最新となるマスタブロックから読み出したブロック特定情報を用いれば、ブロックチェーンの復元完了前に、回収すべきバックアップブロックの少なくとも一部が把握可能となる。
上記実施形態では、車載ユニットに設けられたメモリ装置のブロック保存部に、マスタブロック及びバックアップブロックの両方が保存されていた。しかし、バックアップブロックを保存する記憶領域は、マスタブロックを保存する記憶領域と物理的に分けられていてもよい。さらに、サーバのメモリ装置にも、ブロック保存部が設けられていてもよい。加えて、バックアップブロックを保存しないノード、又はバックアップブロックの保存を主目的とするノードがネットワーク内に存在していてもよい。さらに、ネットワーク内にサーバを設けない完全なP2Pネットワークが、実質的に車載ユニットのみで形成されていてもよい。
上記実施形態では、依頼ノード及び承認ノード間にて、管理プログラム及びヘッダハッシュ値の同一性を順に確認し合う処理により、新規に生成されたブロックが承認されていた。しかし、新規に生成されたブロックを承認する具体的な処理の方法は、適宜変更されてよい。例えば、新規に生成されたブロックを承認する権限が、各車載ユニットではなく、管理者の管理下にある特定のサーバに与えられていてもよい。
本開示の履歴管理方法によって履歴情報が保管される車両は、ユーザによって個人所有された自家用車であってもよく、バス及び貨物車両のような業務用車両であってもよい。又は、モビリティサービスを提供する無人運転車両の履歴情報の保管に、本開示による履歴管理方法が用いられてもよい。モビリティサービス用の車両の履歴情報を管理する履歴管理システムが構築される場合、サーバは、例えば各車両の運行管理を行う管理センタ等に設置されてもよい。
上記実施形態では、LTE及び5G通信や車車間通信等により、複数の車載ユニットが互いに通信可能な状態とされていた。しかし、各ノード同士の通信方法は、適宜変更されてよい。例えば、車車間通信を使用せず、V2N通信のみで、承認依頼及びバックアップ等の全データが送受信されてもよい。或いは車車間通信のみで、承認依頼及びバックアップ等の全データの送受信が完結してもよい。
さらに、通信器による通信が不可能な状況では、承認依頼及びバックアップ等の送信は、一時的に中断される。承認依頼及びバックアップ等の送信は、通信可能な状態に復帰した後、実施されてよい。加えて、ブロック生成部は、通信状況が不安定な環境下において、ブロックの新規の生成を開始しないように設定されていてもよい。
本開示の履歴管理方法を実施するコンピュータとして、上記実施形態では、サーバ及び車載ユニットが例示されていた。しかし、履歴管理方法を実施するコンピュータは、これらに限定されず、適宜変更されてよい。また、車載ユニットと、ネットワーククラウド上のサーバとが、ブロックチェーンの生成に関連する演算を分散処理してもよい。
加えて、ブロックチェーンを生成する機能は、専用の車載ユニットではなく、例えば自動運転用の車載ユニット又はHMI制御用の車載ユニット等に組み込まれていてもよい。さらに、複数の車載ユニットによって、ブロックチェーンの生成に関連する演算が分散処理されてもよい。また、ブロックチェーン及びバックアップブロックを復元する処理は、上記のようなサーバ側ではなく、車載ユニット等のエッジ側で実行されてもよい。
以上のように、上記実施形態にて車載ユニット及びサーバの各制御回路によって提供されていた各機能は、ソフトウェア及びそれを実行するハードウェア、ソフトウェアのみ、ハードウェアのみ、あるいはそれらの複合的な組合せによっても提供可能である。さらに、こうした機能がハードウェアである電子回路によって提供される場合、各機能は、多数の論理回路を含むデジタル回路、又はアナログ回路によっても提供可能である。
加えて、管理プログラム及び保全プログラム等に関連したデータ処理、並びに命令及びコードを実行するプロセッサの具体的な構成は、適宜変更可能である。プロセッサは、CPU(Central Processing Unit)に加えて、GPU(Graphics Processing Unit)を含む構成であってもよい。またプロセッサは、FPGA(Field-Programmable Gate Array)及びAIの学習及び推論に特化したアクセラレータ(例えばDSP(Digital Signal Processor)等)を含んでいてもよい。さらにプロセッサは、ASIC(Application Specific Integrated Circuit)及びFPGA等に実装された構成であってもよい。
各プログラム等を格納する構成として、フラッシュメモリ及びハードディスク等の種々の非遷移的実体的記憶媒体(non-transitory tangible storage medium)が、各メモリ装置に採用可能である。こうした記憶媒体の形態も、適宜変更されてよい。例えば記憶媒体は、メモリカード等の形態であって、スロット部に挿入されて、制御回路に電気的に接続される構成であってよい。さらに記憶媒体は、上述のような車載装置又はサーバ等のメモリ装置に限定されず、当該メモリ装置へのプログラムのコピー基となる光学ディスク及び汎用コンピュータのハードディスクドライブ等であってもよい。