IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカの特許一覧

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-27
(45)【発行日】2024-12-05
(54)【発明の名称】制御方法、制御装置、及び、プログラム
(51)【国際特許分類】
   G06Q 50/10 20120101AFI20241128BHJP
【FI】
G06Q50/10
【請求項の数】 10
(21)【出願番号】P 2022501916
(86)(22)【出願日】2021-02-17
(86)【国際出願番号】 JP2021005823
(87)【国際公開番号】W WO2021166926
(87)【国際公開日】2021-08-26
【審査請求日】2023-11-30
(31)【優先権主張番号】62/979,654
(32)【優先日】2020-02-21
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】514136668
【氏名又は名称】パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ
【氏名又は名称原語表記】Panasonic Intellectual Property Corporation of America
(74)【代理人】
【識別番号】100109210
【弁理士】
【氏名又は名称】新居 広守
(74)【代理人】
【識別番号】100137235
【弁理士】
【氏名又は名称】寺谷 英作
(74)【代理人】
【識別番号】100131417
【弁理士】
【氏名又は名称】道坂 伸一
(72)【発明者】
【氏名】西田 直央
(72)【発明者】
【氏名】海上 勇二
【審査官】加内 慎也
(56)【参考文献】
【文献】特開2019-153130(JP,A)
【文献】米国特許出願公開第2018/0276663(US,A1)
【文献】米国特許出願公開第2020/0005388(US,A1)
【文献】米国特許出願公開第2019/0280871(US,A1)
【文献】特開2019-028525(JP,A)
【文献】特開2018-196097(JP,A)
【文献】特許第6469920(JP,B1)
【文献】国際公開第2018/175058(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06Q 10/00-99/00
(57)【特許請求の範囲】
【請求項1】
それぞれが分散台帳を保有している複数のノードを備える情報処理システムにおいて、前記複数のノードのうちの、第1ブロックチェーンが管理されている第1分散台帳を保有する第1ノードが実行する制御方法であって、
前記第1ノードが前記複数のノードのうちの第2ノードと通信できない状態から通信可能になった後に、前記第2ノードと通信することで前記第2ノードから前記第2ノードが保有する第2分散台帳で管理されている第2ブロックチェーンを取得し、
前記第1ブロックチェーンと取得した前記第2ブロックチェーンとを比較し、
前記比較の結果、前記第1ブロックチェーンに含まれ、かつ、前記第2ブロックチェーンに含まれていない1以上の第1差異ブロックと、前記第2ブロックチェーンに含まれ、かつ、前記第1ブロックチェーンに含まれていない1以上の第2差異ブロックとのうちで多い方を、前記第1ブロックチェーン及び前記第2ブロックチェーンで互いに共通する1以上の共通ブロックの後に追加し、かつ、前記多い方の後に前記1以上の第1差異ブロックと前記1以上の第2差異ブロックとのうちで少ない方に含まれる1以上のトランザクションデータを含む1以上の追加ブロックを追加することで前記第1ブロックチェーンを更新し、
互いに両立しない2以上の契約情報をそれぞれ含む2以上のトランザクションデータが更新後の前記第1ブロックチェーンに含まれるか否かを判定する
制御方法。
【請求項2】
前記1以上の第1差異ブロックは、前記第1ノードが前記複数のノードのうちの第2ノードと通信できない状態で前記第1ブロックチェーンに追加されたブロックであり、第1契約に関する情報を含む第1トランザクションデータを含む第1ブロックを有する
請求項1に記載の制御方法。
【請求項3】
前記更新は、前記比較の結果、前記第1ブロックチェーンが前記1以上の第1差異ブロックを有し、かつ、前記第2ブロックチェーンが前記1以上の第2差異ブロックを有する場合に行われる
請求項1または2に記載の制御方法。
【請求項4】
さらに、
前記判定において、前記更新後の第1ブロックチェーンに前記2以上のトランザクションデータが含まれると判定された場合、前記2以上のトランザクションデータにそれぞれ含まれる前記2以上の契約情報のいずれかが不正であることを示す不正情報を含む不正トランザクションデータを生成し、
前記不正トランザクションデータを含む第2ブロックを前記更新後の第1ブロックチェーンに追加する
請求項1から3のいずれか1項に記載の制御方法。
【請求項5】
前記2以上のトランザクションデータのうちの1つは、前記追加ブロックに含まれる
請求項1から4のいずれか1項に記載の制御方法。
【請求項6】
前記第1ブロックチェーンに前記2以上のトランザクションデータが含まれる場合、前記2以上のトランザクションデータのうち、前記第1ブロックチェーンに最初に追加された1つのトランザクションデータに含まれる契約情報が対応する契約を履行する
請求項1から5のいずれか1項に記載の制御方法。
【請求項7】
前記情報処理システムは、複数のユーザが複数の移動体をシェアリングするサービスに用いられ、
前記2以上のトランザクションデータのそれぞれは、前記複数のユーザのうちの予約者が第1移動体の利用を予約したことを示す予約情報を含み、
前記予約情報は、前記第1移動体を識別する移動体IDと、予約時間帯とを含み、
前記2以上のトランザクションデータにそれぞれ含まれる2以上の予約情報は、互いに同じ移動体IDと、互いに一部の時間帯が重複している2以上の予約時間帯とを含む
請求項1から6のいずれか1項に記載の制御方法。
【請求項8】
さらに、
前記予約者に前記第1移動体を貸し出したことを示す貸出トランザクションデータを生成し、前記貸出トランザクションデータを含む第3ブロックを前記更新後の第1ブロックチェーンに追加し、
前記予約者が前記第1移動体を返却したことを示す返却トランザクションデータを生成し、前記返却トランザクションデータを含む第4ブロックを前記第3ブロックが追加された後の前記第1ブロックチェーンに追加し、
前記第4ブロックが追加された後の前記第1ブロックチェーンに前記2以上のトランザクションデータが含まれるか否かを判定し、前記2以上のトランザクションデータのうち、前記第1ブロックチェーンに最初に追加された1つのトランザクションデータに含まれる予約情報に対してのみ、前記サービスの利用料の算出を実行する
請求項7に記載の制御方法。
【請求項9】
それぞれが分散台帳を保有している複数の制御装置を備える情報処理システムにおいて、前記複数の制御装置のうちの、第1ブロックチェーンが管理されている第1分散台帳を保有する制御装置であって、
プロセッサと、
メモリと、を備え、
前記プロセッサは、前記制御装置が他の制御装置と通信できない状態から通信可能になった後に、前記他の制御装置と通信することで前記他の制御装置から前記他の制御装置が保有する第2分散台帳で管理されている第2ブロックチェーンを取得し、
前記プロセッサは、前記第1ブロックチェーンと取得した前記第2ブロックチェーンとを比較し、
前記プロセッサは、前記比較の結果、前記第1ブロックチェーンが前記第2ブロックチェーンに含まれていない1以上の第1差異ブロックと、前記第2ブロックチェーンが前記第1ブロックチェーンに含まれていない1以上の第2差異ブロックとのうちで多い方を、前記第1ブロックチェーン及び前記第2ブロックチェーンで互いに共通する1以上の共通ブロックの後に追加し、かつ、前記多い方の後に前記1以上の第1差異ブロックと前記1以上の第2差異ブロックとのうちで少ない方に含まれる1以上のトランザクションデータを含む1以上の追加ブロックを追加することで前記第1ブロックチェーンを更新し、
前記プロセッサは、互いに両立しない2以上の契約情報をそれぞれ含む2以上のトランザクションデータが更新後の前記第1ブロックチェーンに含まれるか否かを判定する
制御装置。
【請求項10】
それぞれが分散台帳を保有している複数のノードを備える情報処理システムにおいて、前記複数のノードのうちの、第1ブロックチェーンが管理されている第1分散台帳を保有する第1ノードが実行する制御方法をコンピュータに実行させるためのプログラムであって、
前記第1ノードが前記複数のノードのうちの第2ノードと通信できない状態から通信可能になった後に、前記第2ノードと通信することで前記第2ノードから前記第2ノードが保有する第2分散台帳で管理されている第2ブロックチェーンを取得し、
前記第1ブロックチェーンと取得した前記第2ブロックチェーンとを比較し、
前記比較の結果、前記第1ブロックチェーンが前記第2ブロックチェーンに含まれていない1以上の第1差異ブロックと、前記第2ブロックチェーンが前記第1ブロックチェーンに含まれていない1以上の第2差異ブロックとのうちで多い方を、前記第1ブロックチェーン及び前記第2ブロックチェーンで互いに共通する1以上の共通ブロックの後に追加し、かつ、前記多い方の後に前記1以上の第1差異ブロックと前記1以上の第2差異ブロックとのうちで少ない方に含まれる1以上のトランザクションデータを含む1以上の追加ブロックを追加することで前記第1ブロックチェーンを更新し、
互いに両立しない2以上の契約情報をそれぞれ含む2以上のトランザクションデータが更新後の前記第1ブロックチェーンに含まれるか否かを判定することを
コンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、制御方法、制御装置、及び、プログラムに関する。
【背景技術】
【0002】
例えば特許文献1には、車両端末とユーザ端末との間で送受信される利用予約に関する情報をブロックチェーンで適切に管理する技術が開示されている。
【先行技術文献】
【特許文献】
【0003】
【文献】特開2019-153130号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、物体の利用予約などの契約または取引の管理にブロックチェーンを用いる場合、特許文献1に開示されている技術では、フォークが発生したときのブロックチェーンの振る舞いを悪用して、物体を不正に利用することができてしまうという問題がある。
【0005】
本開示は、上述の事情を鑑みてなされたもので、ブロックチェーンを悪用したサービス対象の不正利用を抑制できる制御方法、制御装置、及び、プログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
本開示の一態様に係る制御方法は、それぞれが分散台帳を保有している複数のノードを備える情報処理システムにおいて、前記複数のノードのうちの、第1ブロックチェーンが管理されている第1分散台帳を保有する第1ノードが実行する制御方法であって、前記第1ノードが前記複数のノードのうちの第2ノードと通信できない状態から通信可能になった後に、前記第2ノードと通信することで前記第2ノードから前記第2ノードが保有する第2分散台帳で管理されている第2ブロックチェーンを取得し、前記第1ブロックチェーンと取得した前記第2ブロックチェーンとを比較し、前記比較の結果、前記第1ブロックチェーンに含まれ、かつ、前記第2ブロックチェーンに含まれていない1以上の第1差異ブロックと、前記第2ブロックチェーンに含まれ、かつ、前記第1ブロックチェーンに含まれていない1以上の第2差異ブロックとのうちで多い方を、前記第1ブロックチェーン及び前記第2ブロックチェーンで互いに共通する1以上の共通ブロックの後に追加し、かつ、前記多い方の後に前記1以上の第1差異ブロックと前記1以上の第2差異ブロックとのうちで少ない方に含まれる1以上のトランザクションデータを含む1以上の追加ブロックを追加することで前記第1ブロックチェーンを更新し、互いに両立しない2以上の契約情報をそれぞれ含む2以上のトランザクションデータが更新後の前記第1ブロックチェーンに含まれるか否かを判定する。
【0007】
なお、これらの包括的または具体的な態様は、システム、方法、集積回路、コンピュータプログラムまたはコンピュータで読み取り可能なCD-ROMなどの記録媒体で実現されてもよく、システム、方法、集積回路、コンピュータプログラム及び記録媒体の任意な組み合わせで実現されてもよい。
【発明の効果】
【0008】
本開示によれば、ブロックチェーンを悪用したサービス対象の不正利用を抑制できる。
【図面の簡単な説明】
【0009】
図1図1は、不正利用を行う方法の手順を説明するための図である。
図2A図2Aは、図1に示すステップ1が行われる場面の一例を示す図である。
図2B図2Bは、図1に示すステップ2、3が行われる場面の一例を示す図である。
図2C図2Cは、図1に示すステップ4が行われる場面の一例を示す図である。
図2D図2Dは、図1に示すステップ5が行われる場面の一例を示す図である。
図2E図2Eは、図1に示すステップ6が行われる場面の一例を示す図である。
図2F図2Fは、図1に示すステップ6の後に行われる場面の一例を示す図である。
図3A図3Aは、フォークが発生したときのブロックチェーンの振る舞いを説明するための図である。
図3B図3Bは、フォークが発生したときのブロックチェーンの振る舞いを説明するための図である。
図3C図3Cは、フォークが発生したときのブロックチェーンの振る舞いを説明するための図である。
図4図4は、実施の形態に係るシステムの構成の一例を示す図である。
図5A図5Aは、実施の形態に係るシステムの構成の他の一例を示す図である。
図5B図5Bは、実施の形態に係るシステムの構成の他の一例を示す図である。
図5C図5Cは、実施の形態に係るシステムの構成の他の一例を示す図である。
図6図6は、実施の形態に係る移動体装置の構成の一例を示す図である。
図7図7は、実施の形態に係る端末の構成の一例を示す図である。
図8図8は、比較例の第1例に係るシステムの正常処理の動作概要を示すフローチャートである。
図9A図9Aは、図8のステップS1の動作により台帳A及び台帳Bに格納されるブロックチェーンのブロックを概念的に示す図である。
図9B図9Bは、図8のステップS3の動作により台帳A及び台帳Bに格納されるブロックチェーンのブロックを概念的に示す図である。
図9C図9Cは、図8のステップS5の動作により台帳A及び台帳Bに格納されるブロックチェーンのブロックを概念的に説明するための図である。
図10図10は、比較例の第1例に係るシステムの予約処理を示すシーケンス図である。
図11図11は、比較例の第1例に係るシステムの貸出処理を示すシーケンス図である。
図12図12は、比較例の第1例に係るシステムの返却処理を示すシーケンス図である。
図13図13は、比較例に係るシステムの料金算定処理の詳細を説明するためのフローチャートである。
図14図14は、比較例の第2例に係るシステムの正常処理の動作概要を示すフローチャートである。
図15A図15Aは、図14のステップS1Aの動作により台帳Aに格納されるブロックチェーンのブロックを概念的に示す図である。
図15B図15Bは、図14のステップS3Aの動作により台帳Aに格納されるブロックチェーンのブロックを概念的に示す図である。
図15C図15Cは、図14のステップS5Aの動作により台帳Aに格納されるブロックチェーンのブロックを概念的に示す図である。
図16図16は、図14のステップS6Aの動作により台帳A及び台帳Bに格納されるブロックチェーンのブロックを概念的に説明するための図である。
図17図17は、図14のステップS6Aの動作により台帳A及び台帳Bに格納されるブロックチェーンのブロックを概念的に説明するための図である。
図18図18は、比較例の第2例に係るシステムの予約処理を示すシーケンス図である。
図19図19は、比較例の第2例に係るシステムの貸出処理を示すシーケンス図である。
図20図20は、比較例の第2例に係るシステムの返却処理を示すシーケンス図である。
図21図21は、比較例の第2例に係る移動体装置Aの通信復帰時に行われるシステムの処理を示すシーケンス図である。
図22図22は、比較例に係るシステムのブロック連結処理を説明するためのフローチャートである。
図23図23は、比較例の第3例に係るシステムの不正処理の動作概要を示すフローチャートである。
図24A図24Aは、図23のステップS10の動作により台帳Aに格納されるブロックチェーンのブロックを概念的に示す図である。
図24B図24Bは、図23のステップS11の動作により台帳Aに格納されるブロックチェーンのブロックを概念的に示す図である。
図24C図24Cは、図23のステップS12の動作により台帳Aに格納されるブロックチェーンのブロックを概念的に示す図である。
図25図25は、図23のステップS13の動作により台帳A及び台帳Bに格納されるブロックチェーンのブロックを概念的に説明するための図である。
図26図26は、図23のステップS13の動作により台帳A及び台帳Bに格納されるブロックチェーンのブロックを概念的に説明するための図である。
図27図27は、図23のステップS14の動作により台帳A及び台帳Bに格納されるブロックチェーンのブロックを概念的に示す図である。
図28図28は、比較例の第3例に係るシステムのローカル予約を行う場合の処理を示すシーケンス図である。
図29図29は、比較例の第3例に係るシステムの競合予約を行う場合の処理を示すシーケンス図である。
図30図30は、比較例の第3例に係るシステムのローカル貸出の処理を示すシーケンス図である。
図31図31は、比較例の第3例に係る移動体装置Aの通信復帰時に行われるシステムの処理を示すシーケンス図である。
図32図32は、比較例の第3例に係るシステムの返却処理を示すシーケンス図である。
図33図33は、比較例の第4例に係るシステムの不正処理の動作概要を示すフローチャートである。
図34A図34Aは、図33のステップS10の動作により台帳Aに格納されるブロックチェーンのブロックを概念的に示す図である。
図34B図34Bは、図33のステップS11の動作により台帳Aに格納されるブロックチェーンのブロックを概念的に示す図である。
図34C図34Cは、図33のステップS12の動作により台帳Aに格納されるブロックチェーンのブロックを概念的に示す図である。
図34D図34Dは、図33のステップS13Aの動作により台帳Aに格納されるブロックチェーンのブロックを概念的に示す図である。
図35図35は、図33のステップS14Aの動作により台帳A及び台帳Bに格納されるブロックチェーンのブロックを概念的に説明するための図である。
図36図36は、図33のステップS14Aの動作により台帳A及び台帳Bに格納されるブロックチェーンのブロックを概念的に説明するための図である。
図37図37は、比較例の第4例に係るシステムのローカル返却の処理を示すシーケンス図である。
図38図38は、比較例の第4例に係る移動体装置Aの通信復帰時に行われるシステムの処理を示すシーケンス図である。
図39図39は、実施の形態に係る移動体装置Aの通信復帰時に行われるシステムの処理を示すシーケンス図である。
図40図40は、実施の形態に係る不正予約検知処理を説明するためのフローチャートである。
図41図41は、実施の形態に係る不正予約検知処理を実行してインシデントレポートを作成したときに行われるシステムの処理を示すシーケンス図である。
図42図42は、実施の形態に係る不正リスト生成処理を実行するときに行われるシステムの処理を示すシーケンス図である。
【発明を実施するための形態】
【0010】
(本開示の一態様を得るに至った経緯)
上述したように特許文献1には、車両端末とユーザ端末との間で送受信される利用予約に関する情報をブロックチェーンで適切に管理する技術が開示されている。
【0011】
しかしながら、特許文献1に開示されている技術では、ブロックチェーンの仕組みを悪用して不正利用できる。以下、例を挙げて説明する。
【0012】
図1は、不正利用を行う方法の手順を説明するための図である。図2A図2Fは、図1に示す手順が行われる場面の一例を示す図である。図1には、複数のバイクをシェアリングするサービスにおけるバイクAに対する利用予約を行い、バイクAを不正利用する場合の手順が示されている。なお、矢印は現在時刻を示す。また、複数のバイクはそれぞれ、ブロックチェーンで予約が管理された台帳を持っているとしている。図2A図1に示すステップ1が行われる場面の一例を示す図であり、図2B図1に示すステップ2、3が行われる場面の一例を示す図である。図2C図1に示すステップ4が行われる場面の一例を示す図であり、図2D図1に示すステップ5が行われる場面の一例を示す図である。図2E図1に示すステップ6が行われる場面の一例を示す図であり、図2F図1に示すステップ6の後に行われるステップ7の場面の一例を示す図である。
【0013】
不正利用を企てるユーザは、図2Aに示すように、ステップ1において例えば12:00~12:15の間の15分だけ、バイクAを利用する第1予約を行う。すると、バイクAの台帳Aは他のバイクの台帳B、Cと通信可能(オンライン)な状態であるので、図1のステップ1に示すように、黒色で示される第1予約Txが、すべての台帳(台帳A、B及びC)に格納される。この結果、バイクAを解錠して、ユーザは、12:00~12:15の間の15分だけ利用できる。
【0014】
次に、不正利用を企てるユーザは、図2Bに示すように、ステップ2及び3において、バイクAの台帳Aを他のバイクの台帳B、Cと通信不可な(オフライン)状態にする。続いて、不正利用を企てるユーザは、例えば16:00~16:15の間の15分だけ、バイクAを利用する第2予約を、他のバイクの台帳B、Cに対して行う。すると、バイクAの台帳Aはオフライン状態であるので、図1のステップ3に示すように黒色で示される第2予約Txが、オンライン状態の台帳B及びCのみに格納される。
【0015】
次に、不正利用を企てるユーザは、図2Cに示すように、ステップ4において、例えば12:15~16:15の間、バイクAを利用する不正予約をバイクAの台帳Aに対して行う。すると、バイクAの台帳Aは他のバイクの台帳B、Cと通信不可な(オフライン)状態であるので、図1のステップ4に示すように、ハッチングで示される不正予約Txが、バイクAの台帳Aのみに格納される。この結果、12:15にはバイクAが解錠されるので、図2Dに示すステップ5に示すように、そのユーザは、12:15~16:15の間、オフライン状態のままバイクAを不正利用することができる。この場合、図1のステップ5に示すように、黒色で示される第2予約Txが、オンライン状態の台帳B及びCのみに格納される。
【0016】
次に、そのユーザは、図2Eに示すように、ステップ6において、16:00~16:15の間に、バイクAの台帳Aを他のバイクの台帳B、Cと通信可能な(オンライン)状態に復帰させる。すると、詳細は後述するが、台帳A、B、Cのブロックチェーンでフォークが発生し、図1のステップ6に示すように台帳Aのブロックチェーンでは、台帳B、Cのブロックチェーンと同じように、第2予約Txが格納されることになる。そして、不正予約Txが第2予約Txの後に格納されることになる。
【0017】
ここで、ステップ6においてバイクAの台帳Aがオンライン状態に復帰すると、不正予約Txは、第2予約Txより後に台帳A、B、Cに格納されるというように、フォークが発生したときのブロックチェーンの振る舞いについて説明する。
【0018】
図3A図3Cは、フォークが発生したときのブロックチェーンの振る舞いを説明するための図である。図3A図3Cには、移動体Aの台帳Aと移動体Bの台帳Bとに格納されるトランザクションデータが概念的に示されている。Txは、トランザクションデータを示す。移動体Aは、例えばバイクAであってもよい。
【0019】
まず、図3Aの左側に示すように、移動体Aの台帳Aと移動体Bの台帳Bとが他の移動体(不図示)と通信可能な(オンライン)状態である場合、台帳A及び台帳Bには、同じTx1を含むブロック1と、当該ブロック1に連結されてTx2を含むブロック2が格納される。Tx2は、例えば、上記の第1予約Txに該当させてもよい。
【0020】
このように、台帳A及び台帳Bでは、Tx2を含むブロック2が生成されると、前回生成されたブロック1に連結される。台帳A及び台帳Bでは、同一のブロックチェーンが構成されている。
【0021】
次に、図3Aの右側に示すように、移動体Aの台帳Aが他の移動体と通信断絶の(オフライン)状態になっている場合、台帳A及び台帳Bには、異なるTxを含むブロックが格納される。図3Aの右側に示す例では、台帳Aには、当該ブロック2に連結されるTxαを含むブロックαが格納されている一方で、台帳Bには、当該ブロック2に連結されるTx3を含むブロック3と当該ブロック3に連結されるTx4を含むブロック4とが格納されている。Tx3は、例えば、上記の第2予約Txに該当させ、Txαは、例えば、上記の不正予約Txに該当させてもよい。
【0022】
このように、台帳Aがオフライン状態になると、台帳A及び台帳Bの通信が断絶されるので、台帳A及び台帳Bは独自にブロックチェーンを更新することになる。
【0023】
次に、図3Bの左側に示すように、移動体Aの台帳Aが他の移動体との通信可能な状態に復帰(オフライン復帰)させると、台帳A及び台帳Bは、異なるブロックチェーンを共有し合う。図3Bの左側に示す例における台帳A及び台帳Bでは、当該ブロック2に連結されるブロックが分岐し、当該ブロック2にTxαを含むブロックαが連結され、かつ、当該ブロック2にTx3を含むブロック3とTx4を含むブロック4とが連結される。以下、ブロックに分岐して連結されるブロックチェーンのうち最も長いブロックチェーンを主鎖と称し、それ以外のブロックチェーンを側鎖と称する。図3Bの左側に示す例では、Tx3を含むブロック3とTx4を含むブロック4とがブロック2の主鎖に該当し、Txαを含むブロックαがブロック2の側鎖に該当する。
【0024】
このように、台帳Aが再びオンライン状態になると、ブロック2に連結されるブロックチェーンが分岐し、フォークが発生する。
【0025】
次に、図3Bの右側に示すように、ブロック2の側鎖であるTxαを含むブロックαが削除され、フォークが解消されている。このとき、ブロックαに含まれていたTxαは削除されず、各移動体に搭載されている移動体装置のトランザクションプールに保存される。図3Bの右側に示す例では、移動体装置Aと移動体装置BのトランザクションプールにTxαが保存される。
【0026】
次に、図3Cに示すように、台帳A及び台帳Bでは、新たなブロックを生成するタイミングで、Txαが含まれて格納される。図3Cに示す例では、台帳A及び台帳Bには、同じTxαを含むブロック5が、当該ブロック4に連結されて格納される。
【0027】
このようにして、台帳A及び台帳Bでは、フォークが解消されて、同じブロックチェーンを持つようになる。以下、図2Fに戻って説明を続ける。
【0028】
最後に、不正利用を企てたユーザは、図2Fに示すように、ステップ7において、バイクAを返却する。その後、料金徴収アルゴリズムが実行されて、バイクAの利用料金が徴収される。しかし、第1予約分と第2予約分のみの料金が徴収され、12:15~16:15の間の利用分すなわち不正利用分の料金については徴収されない。
【0029】
これは、ステップ6においてバイクAの台帳Aがオンライン状態に復帰すると、不正予約Txは、第2予約Txより後に台帳A、B、Cに格納され、さらに第2予約Txの予約時間帯と不正予約Txの予約時間帯とはブッキングしているからである。また、料金徴収アルゴリズムは、ブッキングしている予約(つまり、競合予約)であり後の予約である不正予約に対する料金徴収はされない。このようにして、そのユーザは、料金を支払わずにバイクAを4時間利用できることになる。
【0030】
以上のように、物体の利用予約などの管理にブロックチェーンを用いる場合、フォークが発生したときのブロックチェーンの振る舞いを悪用して、物体を不正に利用することができてしまうという問題がある。
【0031】
それに対して、本開示の一態様に係る制御方法は、それぞれが分散台帳を保有している複数のノードを備える情報処理システムにおいて、前記複数のノードのうちの、第1ブロックチェーンが管理されている第1分散台帳を保有する第1ノードが実行する制御方法であって、前記第1ノードが前記複数のノードのうちの第2ノードと通信できない状態から通信可能になった後に、前記第2ノードと通信することで前記第2ノードから前記第2ノードが保有する第2分散台帳で管理されている第2ブロックチェーンを取得し、前記第1ブロックチェーンと取得した前記第2ブロックチェーンとを比較し、前記比較の結果、前記第1ブロックチェーンに含まれ、かつ、前記第2ブロックチェーンに含まれていない1以上の第1差異ブロックと、前記第2ブロックチェーンに含まれ、かつ、前記第1ブロックチェーンに含まれていない1以上の第2差異ブロックとのうちで多い方を、前記第1ブロックチェーン及び前記第2ブロックチェーンで互いに共通する1以上の共通ブロックの後に追加し、かつ、前記多い方の後に前記1以上の第1差異ブロックと前記1以上の第2差異ブロックとのうちで少ない方に含まれる1以上のトランザクションデータを含む1以上の追加ブロックを追加することで前記第1ブロックチェーンを更新し、互いに両立しない2以上の契約情報をそれぞれ含む2以上のトランザクションデータが更新後の前記第1ブロックチェーンに含まれるか否かを判定する。
【0032】
これによれば、1以上の第1差異ブロックと1以上の第2差異ブロックとのうちで少ない方に含まれる1以上のトランザクションデータを第1ブロックチェーンに格納することで第1ブロックチェーンを更新した上で、更新後の第1ブロックチェーンに不正な契約情報があるか否かを判定する。このため、不正な契約情報を検知することができ、ブロックチェーンを悪用したサービス対象の不正利用を抑制できる。
【0033】
また、例えば、前記1以上の差異ブロックは、前記第1ノードが前記複数のノードのうちの第2ノードと通信できない状態で前記第1ブロックチェーンに追加されたブロックであり、第1契約に関する情報を含む第1トランザクションデータを含む第1ブロックを有してもよい。
【0034】
このため、第1ノードが第2ノードと通信できない状態で生成された第1契約が不正か否かを判定することができる。
【0035】
また、例えば、前記更新は、前記比較の結果、前記第1ブロックチェーンが前記1以上の第1差異ブロックを有し、かつ、前記第2ブロックチェーンが前記1以上の第2差異ブロックを有する場合に行われてもよい。
【0036】
また、例えば、さらに、前記判定において、前記更新後の第1ブロックチェーンに前記2以上のトランザクションデータが含まれると判定された場合、前記2以上のトランザクションデータにそれぞれ含まれる前記2以上の契約情報のいずれかが不正であることを示す不正情報を含む不正トランザクションデータを生成し、前記不正トランザクションデータを含む第2ブロックを前記更新後の第1ブロックチェーンに追加してもよい。
【0037】
また、例えば、前記2以上のトランザクションデータのうちの1つは、前記追加ブロックに含まれてもよい。
【0038】
また、例えば、前記第1ブロックチェーンに前記2以上のトランザクションデータが含まれる場合、前記2以上のトランザクションデータのうち、前記第1ブロックチェーンに最初に追加された1つのトランザクションデータに含まれる契約情報が対応する契約を履行してもよい。
【0039】
また、例えば、前記情報処理システムは、複数のユーザが複数の移動体をシェアリングするサービスに用いられ、前記2以上のトランザクションデータのそれぞれは、前記複数のユーザのうちの予約者が第1移動体の利用を予約したことを示す予約情報を含み、前記予約情報は、前記第1移動体を識別する移動体IDと、予約時間帯とを含み、前記2以上のトランザクションデータにそれぞれ含まれる2以上の予約情報は、互いに同じ移動体IDと、互いに一部の時間帯が重複している2以上の予約時間帯とを含んでもよい。
【0040】
また、例えば、さらに、前記予約者に前記第1移動体を貸し出したことを示す貸出トランザクションデータを生成し、前記貸出トランザクションデータを含む第3ブロックを前記更新後の第1ブロックチェーンに追加し、前記予約者が前記第1移動体を返却したことを示す返却トランザクションデータを生成し、前記返却トランザクションデータを含む第4ブロックを前記第3ブロックが追加された後の前記第1ブロックチェーンに追加し、前記第4ブロックが追加された後の前記第1ブロックチェーンに前記2以上のトランザクションデータが含まれるか否かを判定し、前記2以上のトランザクションデータのうち、前記第1ブロックチェーンに最初に追加された1つのトランザクションデータに含まれる予約情報に対してのみ、前記サービスの利用料の算出を実行してもよい。
【0041】
本開示の一態様に係る制御装置は、それぞれが分散台帳を保有している複数の制御装置を備える情報処理システムにおいて、前記複数の制御装置のうちの、第1ブロックチェーンが管理されている第1分散台帳を保有する制御装置であって、プロセッサと、メモリと、を備え、前記プロセッサは、前記制御装置が他の制御装置と通信できない状態から通信可能になった後に、前記他の制御装置と通信することで前記他の制御装置から前記他の制御装置が保有する第2分散台帳で管理されている第2ブロックチェーンを取得し、前記プロセッサは、前記第1ブロックチェーンと取得した前記第2ブロックチェーンとを比較し、前記プロセッサは、前記比較の結果、前記第1ブロックチェーンが前記第2ブロックチェーンに含まれていない1以上の第1差異ブロックと、前記第2ブロックチェーンが前記第1ブロックチェーンに含まれていない1以上の第2差異ブロックとのうちで多い方を、前記第1ブロックチェーン及び前記第2ブロックチェーンで互いに共通する1以上の共通ブロックの後に追加し、かつ、前記多い方の後に前記1以上の第1差異ブロックと前記1以上の第2差異ブロックとのうちで少ない方に含まれる1以上のトランザクションデータを含む1以上の追加ブロックを追加することで前記第1ブロックチェーンを更新し、前記プロセッサは、互いに両立しない2以上の契約情報をそれぞれ含む2以上のトランザクションデータが更新後の前記第1ブロックチェーンに含まれるか否かを判定する。
【0042】
本開示の一態様に係るプログラムは、それぞれが分散台帳を保有している複数のノードを備える情報処理システムにおいて、前記複数のノードのうちの、第1ブロックチェーンが管理されている第1分散台帳を保有する第1ノードが実行する制御方法をコンピュータに実行させるためのプログラムであって、前記第1ノードが前記複数のノードのうちの第2ノードと通信できない状態から通信可能になった後に、前記第2ノードと通信することで前記第2ノードから前記第2ノードが保有する第2分散台帳で管理されている第2ブロックチェーンを取得し、前記第1ブロックチェーンと取得した前記第2ブロックチェーンとを比較し、前記比較の結果、前記第1ブロックチェーンが前記第2ブロックチェーンに含まれていない1以上の第1差異ブロックと、前記第2ブロックチェーンが前記第1ブロックチェーンに含まれていない1以上の第2差異ブロックとのうちで多い方を、前記第1ブロックチェーン及び前記第2ブロックチェーンで互いに共通する1以上の共通ブロックの後に追加し、かつ、前記多い方の後に前記1以上の第1差異ブロックと前記1以上の第2差異ブロックとのうちで少ない方に含まれる1以上のトランザクションデータを含む1以上の追加ブロックを追加することで前記第1ブロックチェーンを更新し、互いに両立しない2以上の契約情報をそれぞれ含む2以上のトランザクションデータが更新後の前記第1ブロックチェーンに含まれるか否かを判定することをコンピュータに実行させるためのプログラムである。
【0043】
以下、図面を参照しながら、実施の形態について説明する。なお、以下で説明する実施の形態は、いずれも本開示の一具体例を示すものである。つまり、以下の実施の形態で示される数値、形状、材料、構成要素、構成要素の配置及び接続形態、ステップ、ステップの順序などは、一例であり、本開示を限定する主旨ではない。また、以下の実施の形態における構成要素のうち、最上位概念を示す独立請求項に記載されていない構成要素は、本開示の課題を達成するために必ずしも必要ではないが、より好ましい形態を構成する構成要素として説明される。
【0044】
(実施の形態)
まず、本開示に係るシステム構成について説明する。システムは、第1分散台帳で第1ブロックチェーンを管理する第1ノードと、それぞれ第2分散台帳で第2ブロックチェーンを管理する複数の第2ノードとを含み、サービス対象の利用に用いられる。システムは、例えば、複数の移動体をシェアリングするサービスに用いられてもよく、この場合のサービス対象は、複数の移動体である。本実施の形態では、システムは、端末(または移動体)を介してユーザから特定の移動体の利用予約を受け付けて、受け付けた利用予約に応じて特定の移動体をユーザに貸し出す。システムは、受け付けた利用予約での予約時間帯において、端末(または移動体)を介してユーザから、予約されている特定の移動体に対する貸出要求を受け付けると、ユーザへの特定の移動体の貸出を許可する。具体的には、システムは、ユーザから特定の移動体の解錠要求を受け付けると、事前に為されている利用予約を確認し、確認結果に応じて予約時間帯に特定の移動体を解錠することをユーザに許可する。
【0045】
なお、シェアリングするサービスにおける移動体は、例えば、自転車、バイク、自動車、船舶、飛行体などを含む。
【0046】
図4は、実施の形態に係るシステムの構成の一例を示す図である。
【0047】
システム1は、図4に示すように、例えば、移動体10A~10Cと、端末11A~11Cとを備える。この例では、移動体10A~10Cのそれぞれは、同じ内容のデータを共有するための分散台帳を保有している。これらの分散台帳では、例えば、同じ構成のブロックチェーンが共有されている。
【0048】
移動体10A~10Cと、端末11A~11Cとは、ネットワークで接続されている。ネットワークは、例えば、インターネット、携帯電話のキャリアネットワークなどであるが、どのような通信回線またはネットワークから構成されてもよい。
【0049】
なお、以下では、移動体10A~10Cのそれぞれを移動体10とも称するが、移動体10A~10Cを移動体A~移動体Cと称する場合もある。また、端末11A~11Cのそれぞれを端末11とも称するが、端末11A~11Cを端末A~端末Cと称する場合もある。また、移動体10A~10Cがそれぞれ備える分散台帳を台帳A~台帳Cと称する場合もある。
【0050】
なお、ブロックチェーンを格納する分散台帳を管理するシステムは、パブリック型、プライベート型及びコンソーシアム型のいずれの形態であってもよい。
【0051】
図5Aは、実施の形態に係るシステムの構成の他の一例を示す図である。
【0052】
図5Aでは、例えば、移動体10A、10Bと、端末11A、11Bと、管理サーバ20とが示されている。この例では、移動体10A、10Bと、管理サーバ20とのそれぞれは、同じ内容のデータを共有するための分散台帳を保有している。これらの分散台帳では、例えば、同じ構成のブロックチェーンが共有されている。
【0053】
移動体10A、10Bと、端末11A、11Bと、管理サーバ20とは、ネットワークで接続されている。ネットワークは、例えば、インターネット、携帯電話のキャリアネットワークなどであるが、どのような通信回線またはネットワークから構成されてもよい。
【0054】
図5Bは、実施の形態に係るシステムの構成の他の一例を示す図である。
【0055】
図5Bでは、例えば、移動体10A~10Cと、端末11A~11Cとが示されている。この例では、端末11A~11Cのそれぞれは、同じ内容のデータを共有するための分散台帳を保有している。これらの分散台帳では、例えば、同じ構成のブロックチェーンが共有されている。
【0056】
移動体10A~10Cと、端末11A~11Cとは、ネットワークで接続されている。ネットワークは、例えば、インターネット、携帯電話のキャリアネットワークなどであるが、どのような通信回線またはネットワークから構成されてもよい。
【0057】
図5Cは、実施の形態に係るシステムの構成の他の一例を示す図である。
【0058】
図5Cでは、例えば、移動体10A~10Cと、端末11A~11Cとが示されている。この例では、移動体10A~10Cと、端末11A~11Cとのそれぞれは、同じ内容のデータを共有するための分散台帳を保有している。これらの分散台帳では、例えば、同じ構成のブロックチェーンが共有されている。
【0059】
移動体10A~10Cと、端末11A~11Cとは、ネットワークで接続されている。ネットワークは、例えば、インターネット、携帯電話のキャリアネットワークなどであるが、どのような通信回線またはネットワークから構成されてもよい。
【0060】
以下では、図4のシステムにおける各構成について説明する。なお、図5A図5Cのシステムの構成については、図4のシステムと比較して分散台帳を保有する装置または端末が異なるだけであり、同様に適用可能である。
【0061】
まず、移動体10A~10Cに設けられている移動体装置について説明する。なお、以下では、移動体10A~10Cに設けられている移動体装置を、それぞれ移動体装置A~移動体装置Cと称する場合もある。
【0062】
[移動体装置100]
移動体装置100は、分散台帳でブロックチェーンを管理するノードの一例である。なお、ノードは制御装置と言い換えることができる。
【0063】
移動体装置100は、移動体10に搭載されている情報処理装置であり、分散台帳を保有している。移動体装置100は、スマートフォン及びタブレットなどの携帯端末であってもよい。
【0064】
図6は、実施の形態に係る移動体装置100の構成の一例を示す図である。
【0065】
本実施の形態に係る移動体装置100は、入力部101と、トランザクションデータ生成部102と、トランザクションデータ検証部103と、ブロック生成部104と、同期部105と、スマートコントラクト実行部106と、ブロックチェーン管理部107と、分散台帳記憶部108と、状態記憶部109と、不正検知部110と、通信部111と、表示部112とを備える。
【0066】
<入力部101>
入力部101は、ユーザからの入力を受け付ける。入力部101は、受け付けた情報入力を、表示部112に表示したり、トランザクションデータ生成部102に送信したり、通信部111に送信したりする。例えば、入力部101は、返却を示す情報入力をユーザから受け付けてもよい。
【0067】
<トランザクションデータ生成部102>
トランザクションデータ生成部102は、トランザクションデータを生成する。
【0068】
本実施の形態では、トランザクションデータ生成部102は、ユーザに移動体10を貸し出したことを示す貸出トランザクションデータを生成する。具体的には、トランザクションデータ生成部102は、ユーザへの移動体10の貸出が行われた場合、ユーザに移動体10を貸し出したことを示す貸出トランザクションデータを生成する。トランザクションデータ生成部102は、例えば、ユーザからの解錠要求を受け付けて移動体10の解錠が行われた場合、貸出トランザクションデータを生成する。貸出トランザクションデータは、ユーザIDと、利用予約を識別するための予約番号(予約ID)と、ユーザに移動体10を貸し出した時刻のタイムスタンプとを含む。
【0069】
また、トランザクションデータ生成部102は、ユーザが移動体10を返却したことを示す返却トランザクションデータを生成する。具体的には、トランザクションデータ生成部102は、ユーザにより移動体10の返却が行われた場合、ユーザが移動体10を返却したことを示す返却トランザクションデータを生成する。ユーザにより移動体10の返却が行われたことは、入力部101が返却を示す情報入力をユーザから受け付けることで判断されてもよいし、端末11を介して返却を示す情報入力をユーザから受け付ける(つまり、端末11から情報入力を通信部111が受信する)ことで判断されてもよいし、ユーザにより移動体10に対して施錠が行われたことで判断されてもよいし、予め定められている移動体10の返却施設において移動体の返却が受け付けられたときに返却施設から送信される通知を通信部111が受信することで判断されてもよい。返却トランザクションデータは、ユーザIDと、予約番号(予約ID)と、ユーザが移動体10を返却した時刻のタイムスタンプとを含む。
【0070】
なお、予約トランザクションデータは、端末11Aによって生成されるが、移動体装置100がユーザから利用予約を受け付ける場合には、トランザクションデータ生成部102は、利用予約を行うための予約トランザクションデータを生成してもよい。具体的には、トランザクションデータ生成部102は、ユーザから利用予約のための入力が入力部101に行われた場合、利用予約を示す予約情報を含む予約トランザクションデータを生成する。予約情報は、ユーザIDと、利用予約を識別するための予約番号(予約ID)と、ユーザに貸し出す予定の移動体装置100を識別するための装置IDと、予約時間帯とを含む。
【0071】
また、トランザクションデータ生成部102は、不正検知部110により不正なトランザクションデータが検知された場合、不正なトランザクションデータが検知されたことを示すインシデントレポートを含むトランザクションデータを生成してもよい。
【0072】
<トランザクションデータ検証部103>
トランザクションデータ検証部103は、通信部111がトランザクションデータを受信したとき検証アルゴリズムを実行し、そのトランザクションデータの正当性を検証する。そして、トランザクションデータ検証部103は、正当性が検証されたトランザクションデータを状態記憶部109のトランザクションプールの領域に格納する。状態記憶部109に格納された正当性が検証されたトランザクションデータは、通信部111によって、次に生成するブロックに格納すべきトランザクションデータの情報として、他の移動体装置100に送信される。
【0073】
例えば、トランザクションデータ検証部103は、通信部111が受信したトランザクションデータに、正しい方法で生成された電子署名が付与されているかなどを検証する。ここで、通信部111が受信するトランザクションデータは、予約トランザクションデータ、貸出トランザクションデータ、及び、返却トランザクションデータのいずれかである。つまり、トランザクションデータ検証部103は、予約トランザクションデータ、貸出トランザクションデータ、及び、返却トランザクションデータの正当性を検証する。
【0074】
なお、トランザクションデータ検証部103は、トランザクションデータがトランザクションデータ生成部102により生成される場合には、トランザクションデータの正当性の検証を行わなくてもよい。
【0075】
<ブロック生成部104>
ブロック生成部104は、トランザクションデータ検証部103により正当性が検証されたトランザクションデータを含むブロックを生成する。ブロック生成部104は、状態記憶部109に記憶されている検証済みの複数のトランザクションデータの中から所定の数のトランザクションデータを含むブロックを生成する。ブロック生成部104は、複数のトランザクションデータのうちのまだブロック生成の対象となっていない複数のトランザクションデータの中から、ブロック生成の対象とする複数のブロックを選択する。ブロック生成部104は、既にブロック生成の対象となった複数のトランザクションデータを状態記憶部109から削除してもよい。
【0076】
なお、移動体装置100のブロック生成部104で生成されるブロックと、他の移動体装置100のブロック生成部104で生成されるブロックとは異なっていてもよい。これは、各移動体装置100の通信状態によって状態記憶部109に格納されている検証済みのトランザクションデータが移動体装置100毎に異なっていたり、ブロック生成部104におけるブロック生成の判断基準が異なっていたりするためである。
【0077】
なお、ブロック生成の判断基準(ブロックに格納すべきトランザクションデータに関するルール)は、各移動体装置100が保持していてもよい。ブロック生成部104は、ブロック生成部104を備える移動体装置100が保持しているブロック生成の判断基準に基づいて、状態記憶部109に格納されている検証済みの複数のトランザクションデータから、複数のトランザクションデータを選択し、選択した複数のトランザクションデータを含むブロックを生成する。
【0078】
<同期部105>
同期部105は、他の移動体装置100との間で、ブロック生成部104において生成されたブロックの同期を行う。
【0079】
本実施の形態では、同期部105は、他の移動体装置100に、通信部111を介してブロック生成部104において生成されたブロックを送信する。そして、同期部105は、送信したブロックについて、他の移動体装置100との間で共同でコンセンサスアルゴリズムを実行する。コンセンサスアルゴリズムには、PBFT(Practical Byzantine Fault Tolerance)とよばれるコンセンサスアルゴリズムを用いてもよいし、その他の公知のコンセンサスアルゴリズムを用いてもよい。公知のコンセンサスアルゴリズムとしては、例えばPOW(Proof Of Work)またはPOS(Proof Of Stake)などがある。なお、PBFTを用いる場合、同期部105は、まず、他の移動体装置100のそれぞれからトランザクションデータの検証が成功したか否かを示す報告を受け取り、当該報告の数が所定の数を超えたか否かを判定する。そして、同期部105は、当該報告の数が所定の数を超えたとき、コンセンサスアルゴリズムによってトランザクションデータの正当性が検証された場合であると判定してもよい。このように、同期部105は、他の移動体装置100のそれぞれから通知された報告に基づき、トランザクションデータが正当なトランザクションデータであること(つまり正当性)を合意し、ブロックの正当性を合意する。
【0080】
また、同期部105は、合意済みのブロックを分散台帳記憶部108に記憶されている分散台帳で管理されている第1ブロックチェーンに連結する。
【0081】
<スマートコントラクト実行部106>
スマートコントラクト実行部106は、分散台帳記憶部108の分散台帳に格納されたトランザクションデータに含まれるコントラクトコードなどを実行することで、スマートコントラクトを動作させる。
【0082】
《予約SC》
本実施の形態では、スマートコントラクト実行部106は、予約スマートコントラクトを動作させることで、サービス対象である移動体の利用予約を行う予約処理を行わせてもよい。スマートコントラクト実行部106は、分散台帳記憶部108に記憶される分散台帳内のブロックチェーンに予約トランザクションデータを含むブロックが追加された場合、予約処理を行わせてもよい。
【0083】
《料金徴収SC》
本実施の形態では、スマートコントラクト実行部106は、料金徴収スマートコントラクトを動作させることで、料金算定処理を行わせてもよい。スマートコントラクト実行部106は、分散台帳記憶部108に記憶される分散台帳内のブロックチェーンに返却トランザクションデータを含むブロックが追加された場合、料金算定処理を行わせる。なお、料金算定処理は、後述するブロックチェーン管理部107により行われる処理と同じである。
【0084】
《不正検知SC》
また、本実施の形態では、スマートコントラクト実行部106は、不正検知スマートコントラクトを動作させることで、不正検知処理を行わせてもよい。スマートコントラクト実行部106は、分散台帳記憶部108の第1ブロックチェーンに予約トランザクションデータを含むブロックが追加された場合、不正検知処理を行わせる。なお、不正検知処理は、後述する不正検知部110により行われる処理と同じである。
【0085】
《不正リスト生成SC》
また、本実施の形態では、スマートコントラクト実行部106は、不正リスト生成スマートコントラクトを動作させることで、不正リスト生成処理を行わせてもよい。スマートコントラクト実行部106は、分散台帳記憶部108に記憶される分散台帳内のブロックチェーンに不正トランザクションデータまたは不正検知トランザクションデータを含むブロックが追加された場合、不正検知処理において不正であると判定された不正なトランザクションデータ、又は、当該不正なトランザクションデータを識別するトランザクションデータIDを不正リストに追加する処理を行わせる。
【0086】
ここで、不正検知トランザクションデータは、不正検知処理によって不正なトランザクションデータが検知された場合に生成されるトランザクションデータであって、不正リスト生成処理を実行させるためのトランザクションデータである。不正リストは、不正であると判定された不正なトランザクションデータのトランザクションデータIDの他に、当該不正なトランザクションデータの契約(例えば利用予約)を行ったユーザのユーザID、不正なトランザクションデータが生成された時刻などを含んでいてもよい。不正リストは、状態情報記憶部109に記憶されてもよいし、外部の装置が備えるメモリに記憶されてもよい。これにより、ユーザは、例えば、端末11を操作することで、不正なトランザクションデータであると判定されたトランザクションデータを検索することができる。
【0087】
このように、スマートコントラクト実行部106は、スマートコントラクトを動作させることで、利用料金の徴収、不正な予約の検知、不正リストの生成などを分散台帳によって管理することができる。なお、料金徴収スマートコントラクト、不正検知スマートコントラクト、及び、不正リスト生成スマートコントラクトは、例えば、ユーザにより端末11のアプリケーションにより生成され、これらのスマートコントラクトを含むブロックが予めブロックチェーンに格納されているものとする。
【0088】
<ブロックチェーン管理部107>
ブロックチェーン管理部107は、分散台帳記憶部108に記憶される分散台帳(以下、第1分散台帳と称する)で管理されているブロックチェーン(以下、第1ブロックチェーンと称する)を管理する。
【0089】
《主鎖・側鎖》
本実施の形態では、ブロックチェーン管理部107は、通信部111を介して他の移動体装置100が保有する分散台帳(以下、第2分散台帳と称する)で管理されているブロックチェーン(以下、第2ブロックチェーンと称する)を取得し、分散台帳記憶部108の第1分散台帳で管理されている第1ブロックチェーンと、取得した第2ブロックチェーンとを比較する。ブロックチェーン管理部107は、比較によって、第1ブロックチェーンを構成している複数のブロックと、第2ブロックチェーンを構成している複数のブロックとが同じであるか否かを判定する。ブロックチェーン管理部107は、第1ブロックチェーンを構成している複数のブロックと、第2ブロックチェーンを構成している複数のブロックとが同じでない場合、第1ブロックチェーンに含まれ、かつ、第2ブロックチェーンに含まれていない1以上の第1差異ブロックの数と、第2ブロックチェーンに含まれ、かつ、第1ブロックチェーンに含まれていない1以上の第2差異ブロックの数とのどちらが多いか(長いか)を判定する。つまり、ブロックチェーン管理部107は、1以上の第1差異ブロックの数と、1以上の第2差異ブロックの数とを比較することで、どちらが主鎖ブロックであるか、及び、どちらが側鎖ブロックであるかを決定する。なお、この決定は、第1ブロックチェーン及び第2ブロックチェーンの比較の結果、第1ブロックチェーンが1以上の第1差異ブロックを有し、かつ、第2ブロックチェーンが1以上の第2差異ブロックを有する場合に行われる。
【0090】
ブロックチェーン管理部107は、1以上の第1差異ブロック及び1以上の第2差異ブロックのうち多い方(長い方)を、第1ブロックチェーン及び第2ブロックチェーンで互いに共通する1以上の共通ブロックの後に追加する。そして、ブロックチェーン管理部107は、さらに、追加した多い方の後に1以上の第1差異ブロック及び1以上の第2差異ブロックのうち少ない方(短い方)に含まれる1以上のトランザクションデータを含む1以上のブロックを追加する。つまり、ブロックチェーン管理部107は、1以上の第1差異ブロック及び1以上の第2差異ブロックのうち多い方を主鎖ブロックとして決定し、1以上の第1差異ブロック及び1以上の第2差異ブロックのうち少ない方を側鎖ブロックとして決定する。そして、ブロックチェーン管理部107は、1以上の共通ブロックの後に、主鎖ブロック、側鎖ブロックに含まれる1以上のトランザクションデータから生成される追加ブロックの順で、主鎖ブロック及び追加ブロックを追加する。
【0091】
このようにして、ブロックチェーン管理部107は、分散台帳記憶部108の第1分散台帳で管理されている第1ブロックチェーンを更新する。つまり、ブロックチェーン管理部107は、第1ブロックチェーンと、他の移動体装置100が保有する第2分散台帳で管理されている第2ブロックチェーンとを比較して、これらのブロックチェーンの構成が異なる場合には、構成が互いに同じになるように第1ブロックチェーンを更新する。
【0092】
なお、ブロックチェーン管理部107は、第1ブロックチェーン及び第2ブロックチェーンの比較の結果、第1ブロックチェーンが1以上の第1差異ブロックを有していない場合、第1ブロックチェーンに1以上の第2差異ブロックを追加することで第1ブロックチェーンを更新する。
【0093】
ここで、1以上の第1差異ブロックは、例えば、移動体装置100が他の移動体装置100と通信できない状態で第1ブロックチェーンに追加されることで生じた、第2ブロックチェーンには含まれていないブロックである。なお、1以上の第1差異ブロックの数は、複数の他の移動体装置100が互いに通信可能な状態である場合、1以上の第2差異ブロックの数よりも少ない可能性が高い。これは、第2ブロックチェーンは、第1ブロックチェーンを管理している移動体装置100よりも多い台数の複数の他の移動体装置100のそれぞれが保有する第2分散台帳で同期されて管理されているからであり、複数の他の移動体装置100において1台の移動体装置100よりもブロックを生成する機会が多く発生すると考えられるからである。このため、他の移動体装置100との間で通信できない1台の移動体装置100で生じた1以上の第1差異ブロックは、主鎖ブロックよりも側鎖ブロックとなる可能性が高い。
【0094】
1以上の第1差異ブロックは、契約に関する情報を含むトランザクションデータを含むブロックを有していてもよい。契約は、例えば移動体10の利用予約である。契約に関する情報を含むトランザクションデータは、例えば予約トランザクションデータ、返却完了トランザクションデータ、貸出トランザクションデータ、及び、返却トランザクションデータである。
【0095】
なお、ブロックチェーン管理部107は、第2ブロックチェーンの全てを取得しなくてもよく、一部を取得すればよい。例えば、ここでブロックチェーン管理部107に取得される第2ブロックチェーンの一部とは、前回の第1ブロックチェーンの更新が実行された後の最後のブロックより後のブロック以降の1以上のブロックである。
【0096】
《貸出処理》
また、ブロックチェーン管理部107は、移動体10をユーザに貸し出すための貸出処理を行ってもよい。この場合、ブロックチェーン管理部107は、通信部111が解錠要求を受信すると、分散台帳記憶部108に記憶されている第1分散台帳内の第1ブロックチェーンを参照することで、解錠要求に基づく予約が為されているか否かを確認する。具体的には、ブロックチェーン管理部107は、解錠要求に含まれる予約番号と同じ予約番号を含む予約トランザクションデータが第1ブロックチェーンに格納されているか否かを判定する。ブロックチェーン管理部107は、解錠要求に含まれる予約番号と同じ予約番号を含む予約トランザクションデータが第1ブロックチェーンに格納されている場合、解錠要求に基づく予約が為されていると判断し、移動体10に解錠指示する。移動体10は、解錠指示を取得すると、解錠指示に基づいて、施錠を行っているアクチュエータを動作させ、移動体10の施錠を解除(解錠)する。
【0097】
解錠要求は、ユーザが利用予約において利用を予約した移動体10のロックを解除するための情報である。解錠要求は、利用予約を特定するために少なくとも予約番号を含んでいればよい。解錠要求は、さらに、利用予約したユーザを示すユーザID、利用予約の対象の移動体10の移動体ID、移動体10を予約した移動体装置100の装置ID、予約時間帯などを含んでいてもよい。
【0098】
なお、ブロックチェーン管理部107は、解錠要求を受信する代わりに、第1ブロックチェーンに格納されている利用予約の予約時間帯の開始時刻になった場合に、移動体装置100が設けられている移動体に解錠指示してもよい。
【0099】
《料金算定処理》
また、ブロックチェーン管理部107は、スマートコントラクト実行部106に実行されるスマートコントラクトの代わりに、料金算定処理を行ってもよい。ブロックチェーン管理部107は、前回の処理の実行から一定間隔が経過したこと、または、分散台帳記憶部108に記憶されている第1分散台帳内の第1ブロックチェーンに新たに連結されたブロックに返却トランザクションデータが含まれていることをトリガとして、料金算定処理を行う。ブロックチェーン管理部107は、分散台帳記憶部108の第1ブロックチェーンを検索し、互いに両立しない2以上の契約情報をそれぞれ含む2以上のトランザクションデータが、第1分散台帳で管理されている第1ブロックチェーンに含まれるか否かを判定する。互いに両立しない2以上の契約情報とは、具体的には、互いに両立しない2以上の予約情報である。互いに両立しない2以上の予約情報は、例えば、互いに同じ装置IDと、互いに一部の時間帯が重複している2以上の予約時間帯とを含む重複予約である。なお、この判定は、後述する不正検知部110における第1の不正判定と同じであるため、不正検知部110における第1の不正判定の判定結果がある場合には、この判定結果を用いてもよい。ブロックチェーン管理部107は、第1ブロックチェーンに互いに両立しない予約情報が含まれる場合、これらの2以上の予約情報を含む2以上のトランザクションデータのうち、第1ブロックチェーンに最初に追加された1つのトランザクションデータに含まれる契約情報が対応する契約を履行する。つまり、ブロックチェーン管理部107は、重複予約があったときには、重複予約の中で最先の利用予約に対して料金を算定し、算定した料金をユーザから徴収する料金徴収処理を実行する。換言すると、ブロックチェーン管理部107は、重複予約の中で最先の利用予約以外の利用予約に対しては、同一ユーザからの二重徴収を防ぐために、料金算定を行わず料金徴収処理を実行しない。
【0100】
なお、料金算定の対象となる利用予約は、第1ブロックチェーンに格納されている返却トランザクションデータに含まれる予約番号の利用予約であって、まだ料金の算定が行われていない利用予約である。つまり、既に料金の算定が行われた利用予約は、料金算定の対象から除外される。また、仮に返却トランザクションデータに含まれる予約番号に対応する利用予約が第1ブロックチェーンに格納されていない場合、返却トランザクションデータに対する料金算定は行われない。
【0101】
<分散台帳記憶部108>
分散台帳記憶部108は、第1ブロックチェーンで管理されている第1分散台帳を記憶している。本実施の形態では、第1分散台帳は、予約トランザクションデータ、貸出トランザクションデータ、及び、返却トランザクションデータを含むブロックを第1ブロックチェーンに格納している。
【0102】
<状態記憶部109>
状態記憶部109は、分散台帳の最新版のデータを記憶している記憶部である。状態記憶部109に記憶されているデータは、コンピュータにより変更されたり、削除されたりすることが可能なデータである。状態記憶部109は、例えばスマートコントラクトを実行するための変数、関数などが格納されるオンメモリの領域とトランザクションデータを格納するトランザクションプールの領域とを含む。状態記憶部109は、トランザクションデータ検証部103により正当性が検証されたトランザクションデータを記憶してもよい。状態記憶部109は、通信部111を介して取得された第2ブロックチェーンを記憶してもよい。状態記憶部109は、第2ブロックチェーンのうちの1以上の第2差異ブロックを記憶してもよい。状態記憶部109は、分散台帳記憶部108に記憶されている第1ブロックチェーンを記憶してもよい。状態記憶部109は、分散台帳に格納される前のトランザクションデータを記憶してもよい。状態記憶部109は、トランザクションデータにより呼び出されたスマートコントラクトを記憶してもよい。また、状態記憶部109は、分散台帳に格納されているスマートコントラクトの変数を記憶していてもよい。状態記憶部109は、トランザクションデータ生成部102により生成されたトランザクションデータを記憶してもよい。状態記憶部109は、通信部111により受信されたトランザクションデータを記憶してもよい。
【0103】
状態記憶部109は、上述した各データを一時的に記憶してもよい。
【0104】
<不正検知部110>
不正検知部110は、スマートコントラクト実行部106に実行されるスマートコントラクトの代わりに、分散台帳記憶部108に記憶されている第1分散台帳で管理されている第1ブロックチェーンに、不正な契約を含む不正なトランザクションデータが格納されているか否かを検知する不正検知処理を行ってもよい。不正検知部110は、不正検知処理において、例えば、以下に示す3つの不正判定のいずれかを行うことで、第1ブロックチェーンに不正なトランザクションデータが格納されているか否かを判定する。
【0105】
《不正判定処理》
第1の不正判定では、不正検知部110は、互いに両立しない2以上の契約情報をそれぞれ含む2以上のトランザクションデータが、第1分散台帳で管理されている第1ブロックチェーンに含まれるか否かを判定する。互いに両立しない2以上の契約情報とは、具体的には、互いに両立しない2以上の予約情報(重複予約)である。互いに両立しない2以上の予約情報は、例えば、互いに同じ装置IDと、互いに一部の時間帯が重複している2以上の予約時間帯とを含む。重複予約は、分散台帳記憶部108の分散台帳で管理されている第1ブロックチェーンと、他の移動体装置100が保有する分散台帳で管理されている第2ブロックチェーンとが異なる場合に、つまり、主鎖ブロック及び側鎖ブロックが発生した場合に発生しうる。重複予約を含む2以上のトランザクションデータは、追加ブロックに含まれる。これは、上述したように、他の移動体装置100との間で通信できない1台の移動体装置100で生じた1以上の第1差異ブロックは、主鎖ブロックよりも側鎖ブロックとなる可能性が高いからであり、側鎖ブロックには、不正に生成された予約トランザクションデータが含まれうるからである。なお、第1の不正判定は、ブロックチェーン管理部107の料金算定処理で行われる重複予約の判定と同じであってもよい。
【0106】
第2の不正判定では、不正検知部110は、契約情報を含むトランザクションデータが生成された生成日時と、当該トランザクションデータが第1ブロックチェーンに格納された格納日時との時間差が、所定時間より大きいか否かを判定する。第2の不正判定では、不正検知部110は、時間差が所定時間より大きい場合に、第1ブロックチェーンに不正な契約を含むトランザクションデータが格納されていると判定する。つまり、不正検知部110は、時間差が所定時間より大きいトランザクションデータを不正なトランザクションデータであると判定する。第2の不正判定の判定基準となる所定時間は、複数の移動体装置100が共同でコンセンサスアルゴリズムを実行する最小の時間間隔であってもよいし、移動体装置100の予約時間帯の最小の時間間隔であってもよい。
【0107】
第3の不正判定では、不正検知部110は、第1ブロックチェーンに、同じ予約番号を含む予約トランザクションデータ、貸出トランザクションデータ及び返却トランザクションデータのうちのいずれかのトランザクションデータを含まない不正な組み合わせがあるか否かを判定する。第3の不正判定では、不正検知部110は、当該不正な組み合わせがある場合、第1ブロックチェーンに不正な契約を含むトランザクションデータが格納されていると判定する。つまり、不正検知部110は、第1ブロックチェーンに、同じ予約番号を含むトランザクションデータの組み合わせにおいて、予約トランザクションデータしか第1ブロックチェーンに格納されていない場合、当該予約トランザクションデータを不正なトランザクションデータであると判定する。なお、不正検知部110は、第3の不正判定を予約時間帯が終了した(つまり、予約時間帯の終了時刻が過ぎた)利用予約の予約番号を有するトランザクションデータを対象に行う。つまり、不正検知部110は、予約のみが行われて予約トランザクションデータが生成されているが、まだ、貸出及び返却が行われていない組み合わせについて、不正なトランザクションデータであるか否かの判定を行わない。
【0108】
《インシデントレポート》
また、不正検知部110は、第1ブロックチェーンに不正なトランザクションデータが格納されていると判定した場合、不正なトランザクションデータを検知したことを示すインシデントレポートをトランザクションデータ生成部102に通知する。インシデントレポートは、不正の理由と、不正なトランザクションデータ又は不正なトランザクションデータを含む不正なブロックとを含む。不正の理由は、第1の不正判定、第2の不正判定、及び、第3の不正判定のうちのいずれの不正判定で不正なトランザクションデータが検知されたかを示す情報である。不正なトランザクションデータ又は不正なブロックは、当該不正なトランザクションデータに関連する1以上のトランザクションデータを含んでいてもよい。関連するトランザクションデータとは、不正なトランザクションデータが含む予約IDを有する貸出トランザクションデータ、予約トランザクションデータなどである。
【0109】
インシデントレポートは、さらに、検知時間、対象ユーザのユーザID、及び、対象端末の端末IDのいずれかを含んでいてもよい。検知時間は、不正検知部110が第1ブロックチェーンに不正なトランザクションデータが格納されていると判定した時刻、または、インシデントレポートを生成した時刻を示す。対象ユーザは、不正なトランザクションデータの契約(例えば利用予約)を行ったユーザを示す。対象端末は、不正なトランザクションデータの契約(例えば利用予約)に関する入力がユーザによって行われた端末を示す。
【0110】
《不正フラグ》
また、不正検知部110は、検知した不正なトランザクションデータに、不正であることを示す不正フラグを付与してもよい。不正検知部110は、不正なトランザクションデータに、さらに、不正を検知した移動体装置100の装置ID(あるいは不正を検知した端末11の端末ID)と、不正を検知した時刻とを付与してもよい。不正検知部110は、不正フラグなどを付与したフラグ付きの不正なトランザクションデータを同期部105に通知する。これにより、フラグ付きの不正なトランザクションデータは、他の移動体装置100との間で、コンセンサスアルゴリズムが実行され、各移動体装置100のブロックチェーンに格納される。
【0111】
なお、不正検知部110は、検知した不正なトランザクションデータに不正フラグなどを付与する代わりに、不正なトランザクションデータを識別するトランザクションデータIDに不正フラグなどを付与した不正情報を生成してもよい。不正検知部110は、生成した不正情報をトランザクションデータ生成部102に通知してもよい。
【0112】
《その他》
また、不正検知部110は、通信部111が他の移動体装置100との間で通信できない状態から通信可能になった時のみに、不正検知処理を行ってもよい。また、不正検知部110は、通信部111が他の移動体装置100との間で通信できない状態から通信可能になった時であり、かつ、ブロックチェーン管理部107において第1ブロックチェーンと第2ブロックチェーンとの比較の結果、主鎖ブロックと側鎖ブロックが発生した時のみに、不正検知処理を行ってもよい。
【0113】
<通信部111>
通信部111は、ネットワークを介して情報を他の移動体装置100または端末11に送信したり、他の移動体装置100または端末11から情報を受信したりする。通信部111は、ネットワークを介して他の移動体装置100または端末11との間で通信を行う。なお、この通信は、TLS(Transport Layer Security)によりなされてもよく、TLS通信用の暗号鍵は通信部111で保持してもよい。
【0114】
本実施の形態では、通信部111は、端末11から予約トランザクションデータを受信する。また、通信部111は、端末11から解錠要求を受信する。また、通信部111は、他の移動体装置100から、他の移動体装置100において検証済みのトランザクションデータを受信する。通信部111は、他の移動体装置100との間で、共同でコンセンサスアルゴリズムを実行するために、ブロックの送受信を行う。
【0115】
<表示部112>
表示部112は、入力部101が受け付けた情報入力を表示する。表示部112は、端末11から送信された情報を表示してもよい。表示部112は、移動体装置100の返却をユーザから受け付けるための表示(UI:User Interface)を表示してもよい。
【0116】
続いて、端末11A~11Cについて説明する。なお、端末11A~端末11Cの構成は共通しているので、端末11と称して説明する。
【0117】
[端末11]
端末11は、ユーザにより使用される端末の一例である。端末11は、例えばパーソナルコンピュータであってもよいし、スマートフォン及びタブレットなどの携帯端末であってもよい。
【0118】
図7は、実施の形態1に係る端末11の構成の一例を示す図である。
【0119】
本実施の形態に係る端末11は、入力部1101と、表示部1102と、通信部1103とを備える。
【0120】
<入力部1101>
入力部1101は、ユーザの操作による情報入力を受け付ける。入力部1101は、受け付けた情報入力を、表示部1102に表示したり、通信部1103に送信したりする。
【0121】
例えば、入力部1101は、利用予約を行うためのアプリケーションが導入されており、利用予約を行うための表示(UI)への入力を受け付ける。この表示(UI)は、表示部1102に表示される。入力部1101は、端末11を保有しているユーザの電子署名を受け付けて、受け付けた利用予約のための入力と電子署名とを含む予約トランザクションデータを生成する。
【0122】
また、入力部1101は、予約した移動体装置100に対して解錠要求のための表示(UI:User Interface)への入力を受け付ける。この表示(UI)は、表示部1102に表示される。入力部1101は、解錠要求のための入力を受け付けて、解錠要求を生成する。
【0123】
<表示部1102>
表示部1102は、入力部1101が受け付けた情報入力を表示する。表示部1102は、利用予約を行うための表示(UI)を表示する。また、表示部1102は、解錠要求のための表示(UI)を表示する。
【0124】
<通信部1103>
通信部1103は、ネットワークを介して情報を移動体装置100に送信したり、移動体装置100から情報を受信したりまたは通知されたりする。また、通信部1103は、ネットワークを介して、他の端末11に情報を送信したり、他の端末11からの情報を受信したりしてもよい。
【0125】
このように、通信部1103は、ネットワークを介して移動体装置100または他の端末11との間で通信を行う。なお、この通信は、TLSによりなされてもよく、TLS通信用の暗号鍵は通信部1103で保持してもよい。
【0126】
例えば、通信部1103は、予約トランザクションデータを移動体装置100へ送信する。また、通信部1103は、解錠要求を予約した移動体装置100へ送信する。
【0127】
[システムの動作等]
次に、以上のように構成されたシステムの動作について説明する。
【0128】
まず、比較例として、複数の移動体をシェアリングするサービスにおける移動体Aに対する処理を正常に行う正常処理について説明し、ブロックチェーンの仕組みを悪用して移動体Aを不正利用する場合の当該処理すなわち不正処理について説明する。その後に、不正対策した本開示の当該処理について説明する。
【0129】
[比較例の第1例]
移動体Aが常にオンライン状態である場合の処理を比較例の第1例として説明する。
【0130】
図8は、比較例の第1例に係るシステムの正常処理の動作概要を示すフローチャートである。図8には、移動体装置A、B、Cがオンライン状態で移動体Aに対する処理を正常に行う正常処理の動作の概要が示されている。図9A図9Cは、移動体装置Aの台帳A及び移動体装置Bの台帳Bに格納されるブロックチェーンのブロックを概念的に説明するための図である。図9Aは、図8のステップS1の動作により台帳A及び台帳Bに格納されるブロックチェーンのブロックを概念的に示す図である。図9Bは、図8のステップS3の動作により台帳A及び台帳Bに格納されるブロックチェーンのブロックを概念的に示す図である。図9Cは、図8のステップS5の動作により台帳A及び台帳Bに格納されるブロックチェーンのブロックを概念的に示す図である。以下では、移動体Aを利用したいユーザが端末Aを用いて、移動体Aに搭載されている移動体装置Aに対して処理を行うとして説明する。
【0131】
図8に示すように、まず、例えば端末Aは、移動体装置Aと通信し、移動体装置Aが搭載されている移動体Aの予約処理を行う(S1)。より具体的には、端末Aは、移動体装置Aと通信し、移動体Aを利用予約するための予約トランザクションデータTrsvを生成して、移動体装置Aに送信する。この場合、例えば、図9Aに示すように、移動体装置Aと移動体装置Bとが他の移動体装置と通信可能な(オンライン)状態であるので、台帳A及び台帳Bには共に、移動体Aを利用予約するための予約トランザクションデータTrsvを含むブロックが格納される。
【0132】
次に、例えば端末Aは、移動体装置Aと通信し、移動体Aの貸出処理を行う(S3)。より具体的には、端末Aは、移動体装置Aと通信し、移動体Aを利用するため移動体Aの解錠要求を送信する。すると、移動体装置Aは、移動体Aを解錠させ、移動体Aが解錠されたことをトリガに移動体Aの貸出開始を示す貸出トランザクションデータTrntを生成する。この場合、例えば、図9Bに示すように、移動体装置Aと移動体装置Bとが他の移動体装置と通信可能な(オンライン)状態であるので、台帳A及び台帳Bには共に、移動体Aの貸出開始を示す貸出トランザクションデータTrntを含むブロックが格納される。
【0133】
次に、例えば端末Aは、移動体装置Aと通信し、移動体Aの返却処理を行う(S5)。より具体的には、端末Aを操作したユーザは、解錠された移動体Aを、利用予約した時間利用して、その後返却する。移動体装置Aは、移動体Aが返却されると、移動体Aの返却完了を示す返却トランザクションデータTrtnを生成する。この場合、例えば、図9Cに示すように、移動体装置Aと移動体装置Bとが他の移動体装置と通信可能な(オンライン)状態であるので、台帳A及び台帳Bには共に、移動体Aの返却完了を示す返却トランザクションデータTrtnを含むブロックが格納される。
【0134】
次に、移動体装置Aなどでは、料金算定処理を行う(S7)。より具体的には、移動体装置Aなどでは、料金算定アルゴリズムが実行されて、ユーザが行った移動体Aの利用予約に対して移動体Aを利用した料金が徴収される。
【0135】
続いて、図8に示すステップS1~S5の処理詳細すなわち予約処理、貸出処理及び返却処理の詳細についてシーケンス図を用いて説明する。以下でも、移動体Aを利用したいユーザが端末Aを用いて、移動体Aに搭載されている移動体装置Aに対して移動体Aの予約処理、貸出処理及び返却処理を行うとして説明する。
【0136】
[比較例の第1例に係る予約処理]
図10は、比較例の第1例に係るシステムの予約処理を示すシーケンス図である。
【0137】
まず、端末Aは、移動体Aを利用したいユーザの操作に基づいて、移動体Aを利用予約するための予約トランザクションデータTrsvを生成する(S101)。ここで、端末Aすなわち端末11Aには、入力部1101としてアプリケーションが導入されており、アプリケーションがユーザの操作に基づいて予約トランザクションデータTrsvを生成してよい。
【0138】
次に、端末Aは、移動体Aの移動体装置Aと通信し、ステップS101で生成した予約トランザクションデータTrsvを移動体装置Aに送信する(S102)。
【0139】
次に、移動体装置Aは、ステップS102で送信された予約トランザクションデータTrsvを受信すると、他の移動体装置である移動体装置B、Cに予約トランザクションデータTrsvを転送する(S103)。これにより、移動体装置B、Cは、予約トランザクションデータTrsvを取得する。
【0140】
次に、移動体装置A、B、Cはそれぞれ、取得した予約トランザクションデータTrsvの正当性を含む検証を行う検証アルゴリズムを実行する(S104)。なお、予約トランザクションデータTrsvの検証が成功しなかった場合、予約処理を終了することになる。
【0141】
次に、移動体装置A、B、Cはそれぞれ、ステップS104で実行された検証アルゴリズムにより検証済みの予約トランザクションデータTrsvをトランザクションプールに格納する(S105)。より具体的には、移動体装置Aは、検証済みの予約トランザクションデータTrsvをトランザクションプールaに格納し、移動体装置Bは、検証済みの予約トランザクションデータTrsvをトランザクションプールbに格納する。移動体装置Cは、検証済みの予約トランザクションデータTrsvをトランザクションプールcに格納する。
【0142】
次に、移動体装置A、B、Cは互いに、通信可能な状態であるので、次に生成するブロックに格納すべきトランザクションデータの情報をやりとりする(S106)。図10に示す例では、移動体装置A、B、Cは、次に生成するブロックに格納すべきトランザクションデータに、検証済みの予約トランザクションデータTrsvがあることを確認する。
【0143】
次に、移動体装置A、B、Cはそれぞれ、検証済みの予約トランザクションデータTrsvを含むブロックBlc(Trsv)を生成する(S107)。
【0144】
次に、移動体装置A、B、Cはそれぞれ、他の移動体装置に、ステップS107で生成したブロックBlc(Trsv)を送信する(S108)。これにより、移動体装置A、B、Cはそれぞれ、他の移動体装置に、ブロックBlc(Trsv)に含まれる予約トランザクションデータTrsvの正当性の検証が成功したことの報告を通知することができる。
【0145】
次に、移動体装置A、B、Cは、共同でコンセンサスアルゴリズムを実行する(S109)。具体的には、移動体装置A、B、Cはそれぞれ、ステップS108で通知された報告に基づき、予約トランザクションデータTrsvが正当なトランザクションデータであること(つまり正当性)を合意し、ブロックBlc(Trsv)の正当性を合意する。図10に示す例では、ブロックBlc(Trsv)に含まれる予約トランザクションデータTrsvが正当なトランザクションデータであること(つまり正当性)が合意され、ブロックBlc(Trsv)の正当性も合意される。なお、ステップS107及びステップS108の処理は、ステップS109でコンセンサスアルゴリズムを実行する際に行われてもよい。
【0146】
次に、移動体装置A、B、Cはそれぞれ、ステップS109で合意済みのブロックBlc(Trsv)を分散台帳内のブロックチェーンに連結する(S110)。より具体的には、移動体装置Aは、合意済みのブロックBlc(Trsv)を台帳A内のブロックチェーンに連結し、移動体装置Bは、合意済みのブロックBlc(Trsv)を台帳B内のブロックチェーンに連結する。移動体装置Cは、合意済みのブロックBlc(Trsv)を台帳C内のブロックチェーンに連結する。
【0147】
これにより、図9Aに示すように、台帳A、台帳B及び台帳Cには共に、移動体Aを利用予約するための予約トランザクションデータTrsvを含むブロックが格納される。
【0148】
[比較例の第1例に係る貸出処理]
図11は、比較例の第1例に係るシステムの貸出処理を示すシーケンス図である。
【0149】
まず、端末Aは、移動体Aを利用したいユーザの操作に基づいて、移動体Aの解錠要求を移動体装置Aに送信する(S301)。ここで、端末Aすなわち端末11Aには、入力部1101としてアプリケーションが導入されており、アプリケーションがユーザの操作に基づいて移動体Aの解錠要求を生成して送信してもよい。移動体Aの解錠要求には、ユーザの予約IDなど、対応する移動体Aへの予約を識別できる情報が含まれている。
【0150】
次に、移動体装置Aは、ステップS301で送信された解錠要求を受信すると、台帳Aのブロックチェーンに解錠要求に対応する予約があるかを確認する(S302)。ここで、移動体装置Aは、台帳Aのブロックチェーンに、予約トランザクションデータTrsvがあるか否かを確認することで、解錠要求に対応する予約があるかを確認してもよい。図10に示す例では、台帳Aのブロックチェーンに、予約トランザクションデータTrsvが含まれているため、移動体装置Aは台帳Aのブロックチェーンに解錠要求に対応する予約があることを確認できる。
【0151】
次に、移動体装置Aは、移動体Aのロックを解除する(S303)。ここで、移動体装置Aは、移動体Aのロックを管理する機器に対して、解除指示をすることで、移動体Aのロックを解除してもよいし、直接移動体Aのロックを解除してもよい。
【0152】
次に、移動体装置Aは、移動体Aのロックが解除されたことをトリガに、移動体Aの貸出開始を示す貸出トランザクションデータTrntを生成する(S304)。貸出トランザクションデータTrntには、移動体Aを利用するユーザIDとともに貸出開始時刻とが含まれる。貸出開始時刻は、例えばロックが解除された時刻である。
【0153】
次に、移動体装置Aは、他の移動体装置である移動体装置B、Cに貸出トランザクションデータTrntを転送する(S305)。これにより、移動体装置B、Cは、貸出トランザクションデータTrntを取得する。
【0154】
次に、移動体装置A、B、Cはそれぞれ、貸出トランザクションデータTrntの正当性を含む検証を行う検証アルゴリズムを実行する(S306)。
【0155】
次に、移動体装置A、B、Cはそれぞれ、ステップS306で実行された検証アルゴリズムにより検証済みの貸出トランザクションデータTrntをトランザクションプールに格納する(S307)。より具体的には、移動体装置Aは、検証済みの貸出トランザクションデータTrntをトランザクションプールaに格納し、移動体装置Bは、検証済みの貸出トランザクションデータTrntをトランザクションプールbに格納する。移動体装置Cは、検証済みの貸出トランザクションデータTrntをトランザクションプールcに格納する。
【0156】
次に、移動体装置A、B、Cは互いに、通信可能な状態であるので、次に生成するブロックに格納すべきトランザクションデータの情報をやりとりする(S308)。図11に示す例では、移動体装置A、B、Cは、次に生成するブロックに格納すべきトランザクションデータに、検証済みの貸出トランザクションデータTrntがあることを確認する。
【0157】
次に、移動体装置A、B、Cはそれぞれ、検証済みの貸出トランザクションデータTrntを含むブロックBlc(Trnt)を生成する(S309)。
【0158】
次に、移動体装置A、B、Cはそれぞれ、他の移動体装置に、ステップS309で生成したブロックBlc(Trnt)を送信する(S310)。これにより、移動体装置A、B、Cはそれぞれ、他の移動体装置に、ブロックBlc(Trnt)に含まれる貸出トランザクションデータTrntの正当性の検証が成功したことの報告を通知することができる。
【0159】
次に、移動体装置A、B、Cは、共同でコンセンサスアルゴリズムを実行する(S311)。具体的には、移動体装置A、B、Cはそれぞれ、ステップS310で通知された報告に基づき、貸出トランザクションデータTrntが正当なトランザクションデータであること(つまり正当性)を合意し、ブロックBlc(Trnt)の正当性を合意する。図11に示す例では、ブロックBlc(Trnt)に含まれる貸出トランザクションデータTrntが正当なトランザクションデータであること(つまり正当性)が合意され、ブロックBlc(Trnt)の正当性も合意される。なお、ステップS309及びステップS310の処理は、ステップS311でコンセンサスアルゴリズムを実行する際に行われてもよい。
【0160】
次に、移動体装置A、B、Cはそれぞれ、ステップS311で合意済みのブロックBlc(Trnt)を分散台帳内のブロックチェーンに連結する(S312)。より具体的には、移動体装置Aは、合意済みのブロックBlc(Trnt)を台帳A内のブロックチェーンに連結し、移動体装置Bは、合意済みのブロックBlc(Trnt)を台帳B内のブロックチェーンに連結する。移動体装置Cは、合意済みのブロックBlc(Trnt)を台帳C内のブロックチェーンに連結する。
【0161】
これにより、図9Bに示すように、台帳A、台帳B及び台帳Cには共に、貸出トランザクションデータTrntを含むブロックが格納され、移動体Aが貸出開始されたことが記録されることになる。
【0162】
[比較例の第1例に係る返却処理]
図12は、比較例の第1例に係るシステムの返却処理を示すシーケンス図である。
【0163】
まず、移動体Aを利用したユーザにより移動体Aが返却されると、移動体装置Aは、移動体Aが返却されたことを確認する(S501)。ここで、例えば、ユーザAは、移動体Aを所定の返却施設に置いたり、移動体Aを所定の位置に置いて移動体装置AのUIの返却ボタンを押したりすることで、移動体Aを返却できる。ユーザAは、端末Aに表示されるUIの返却ボタンを押して移動体Aを返却してもよい。移動体装置Aは、所定の返却施設または端末Aにより移動体Aが返却された旨のメッセージが入力されることで、移動体Aが返却されたことを確認してもよいし、移動体装置AのUIの返却ボタンが押されたことで、移動体Aが返却されたことを確認してもよい。
【0164】
次に、移動体装置Aは、移動体Aが返却されたことを確認したことをトリガに、移動体Aの返却完了を示す返却トランザクションデータTrtnを生成する(S502)。返却トランザクションデータTrtnには、移動体Aを利用するユーザIDと返却時刻と移動体Aを利用したときの予約IDとが含まれる。返却時刻は、例えば、移動体Aが返却されたことを移動体装置Aが確認した時刻である。なお、返却トランザクションデータTrtnに、予約IDに含める場合に限られず、ユーザの移動体Aの利用料金を算定できる情報を含んでいればよい。
【0165】
次に、移動体装置Aは、他の移動体装置である移動体装置B、Cに返却トランザクションデータTrtnを転送する(S503)。これにより、移動体装置B、Cは、返却トランザクションデータTrtnを取得する。
【0166】
次に、移動体装置A、B、Cはそれぞれ、取得した返却トランザクションデータTrtnの正当性を含む検証を行う検証アルゴリズムを実行する(S504)。
【0167】
次に、移動体装置A、B、Cはそれぞれ、ステップS504で実行された検証アルゴリズムにより検証済みの返却トランザクションデータTrtnをトランザクションプールに格納する(S505)。より具体的には、移動体装置Aは、検証済みの返却トランザクションデータTrtnをトランザクションプールaに格納し、移動体装置Bは、検証済みの返却トランザクションデータTrtnをトランザクションプールbに格納する。移動体装置Cは、検証済みの返却トランザクションデータTrtnをトランザクションプールcに格納する。なお、図示していないが、移動体装置A、B、Cは互いに、通信可能な状態であるので、次に生成するブロックに格納すべきトランザクションデータの情報をやりとりする。図12に示す例では、移動体装置A、B、Cは、次に生成するブロックに格納すべきトランザクションデータに、検証済みの返却トランザクションデータTrtnがあることを確認する。
【0168】
次に、移動体装置A、B、Cはそれぞれ、検証済みの返却トランザクションデータTrtnを含むブロックBlc(Trtn)を生成する(S506)。
【0169】
次に、移動体装置A、B、Cはそれぞれ、他の移動体装置に、ステップS506で生成したブロックBlc(Trtn)を送信する(S507)。これにより、移動体装置A、B、Cはそれぞれ、他の移動体装置に、ブロックBlc(Trtn)に含まれる返却トランザクションデータTrtnの正当性の検証が成功したことの報告を通知することができる。
【0170】
次に、移動体装置A、B、Cは、共同でコンセンサスアルゴリズムを実行する(S508)。具体的には、移動体装置A、B、Cはそれぞれ、ステップS507で通知された報告に基づき、返却トランザクションデータTrtnが正当なトランザクションデータであること(つまり正当性)を合意し、ブロックBlc(Trtn)の正当性を合意する。図12に示す例では、ブロックBlc(Trtn)に含まれる返却トランザクションデータTrtnが正当なトランザクションデータであること(つまり正当性)が合意され、ブロックBlc(Trtn)の正当性も合意される。なお、ステップS506及びステップS507の処理は、ステップS508でコンセンサスアルゴリズムを実行する際に行われてもよい。
【0171】
次に、移動体装置A、B、Cはそれぞれ、ステップS508で合意済みのブロックBlc(Trnt)を分散台帳内のブロックチェーンに連結する(S509)。より具体的には、移動体装置Aは、合意済みのブロックBlc(Trtn)を台帳A内のブロックチェーンに連結し、移動体装置Bは、合意済みのブロックBlc(Trtn)を台帳B内のブロックチェーンに連結する。移動体装置Cは、合意済みのブロックBlc(Trtn)を台帳C内のブロックチェーンに連結する。これにより、図9Cに示すように、台帳A、台帳B及び台帳Cには共に、返却トランザクションデータTrtnを含むブロックが格納され、移動体Aの返却完了が記録されることになる。
【0172】
次に、移動体装置A、B、Cはそれぞれ、ブロックチェーンに格納された予約情報をチェックする(S510)。より具体的には、移動体装置A、B、Cはそれぞれ、返却トランザクションデータTrtnを含むブロックが自身の台帳内のブロックチェーンに連結されることで、予約スマートコントラクトを実行させて、ブロックチェーンに格納された予約情報として予約トランザクションデータTrsvがあることを確認する。
【0173】
次に、移動体装置A、B、Cはそれぞれ、料金算定アルゴリズムを実行する(S511)。図12に示す例では、移動体Aを利用した料金の徴収が実行される。ここで、料金算定アルゴリズムは予約スマートコントラクトに含まれるとしてもよいし、料金徴収スマートコントラクトに含まれるとしてもよい。移動体装置A、B、Cはそれぞれ、料金徴収スマートコントラクトまたは予約スマートコントラクトを実行させて、予約トランザクションデータTrsvに含まれる移動体Aの利用予約に対して、料金を徴収する処理を行わせてもよい。なお、料金算定アルゴリズムの実行を、図12に示す例では返却処理の一部として説明したが、これに限らない。図8に示す料金算定処理で行われてもよい。
【0174】
[比較例に係る料金算定処理]
続いて、図8に示すステップS7の料金算定処理の詳細についてフローチャートを用いて説明する。
【0175】
図13は、比較例に係るシステムの料金算定処理の詳細を説明するためのフローチャートである。以下では、代表して移動体装置Aで当該処理が行われる場合について説明する。
【0176】
図8に示すステップS7において、まず、移動体装置Aは、料金徴収のトリガがあるかを確認する(S71)。このトリガは、一定間隔が経過したことでもよいし、台帳Aのブロックチェーンに新たに連結されたブロックに返却トランザクションデータTrtnが含まれていることであってもよい。
【0177】
ステップS71において、トリガがあったときには(S71でYes)、移動体装置Aは、台帳Aのブロックチェーン内を検索する(S72)。なお、ステップS71において、トリガがないときには(S71でNo)、移動体装置Aは、ステップS71に戻る。
【0178】
次に、移動体装置Aは、台帳Aのブロックチェーン内に他にも予約(つまり重複予約)があるかどうかを確認する(S73)。
【0179】
ステップS73において、重複予約があったときには(S73でYes)、予約すなわち返却トランザクションデータTrtnに含まれる予約IDが重複予約の中で最先かどうかを確認する(S74)。なお、ステップS73において、重複予約がないときには(S73でNo)、ステップS75に進む。
【0180】
ステップS74において、重複予約の中で最先であったときには(S74でYes)、移動体装置Aは、料金算定アルゴリズムを実行する(S75)。これにより、予約すなわち返却トランザクションデータTrtnに含まれる移動体Aの利用予約を示す予約IDに対する料金が算定される。なお、ステップS74において、重複予約の中で最先でないときには(S74でNo)、料金算定処理を終了する。
【0181】
次に、移動体装置Aは、料金徴収処理を実行する(S76)。これにより、ユーザが行った移動体Aの利用予約を示す予約IDに対して移動体Aを利用した料金が徴収される。予約トランザクションデータTrsvに含まれる移動体Aの利用予約に対して、料金を徴収する処理を行わせてもよい。
【0182】
[比較例の第2例]
比較例の第1例では、移動体Aがオンライン状態である場合に、複数の移動体をシェアリングするサービスにおける移動体Aに対する予約処理、貸出処理及び返却処理を正常に行う場合について説明した。続いて、比較例の第2例として、移動体装置Aがオフライン状態である場合に、移動体Aに対する予約処理、貸出処理及び返却処理を正常に行い、その後、移動体装置Aがオンライン状態に復帰する場合に行われる処理について説明する。
【0183】
図14は、比較例の第2例に係るシステムの正常処理の動作概要を示すフローチャートである。図14には、移動体装置Aがオフライン状態である一方で、移動体装置B、Cとがオンライン状態である場合の移動体Aに対する予約処理、貸出処理及び返却処理を正常に行う正常処理の動作の概要が示されている。図15A図17は、移動体装置Aの台帳A及び移動体装置Bの台帳Bに格納されるブロックチェーンを概念的に説明するための図である。図15Aは、図14のステップS1Aの動作により台帳Aに格納されるブロックチェーンのブロックを概念的に示す図である。図15Bは、図14のステップS3Aの動作により台帳Aに格納されるブロックチェーンのブロックを概念的に示す図である。図15Cは、図14のステップS5Aの動作により台帳Aに格納されるブロックチェーンのブロックを概念的に示す図である。図16及び図17は、図14のステップS6Aの動作により台帳A及び台帳Bに格納されるブロックチェーンのブロックを概念的に説明するための図である。以下では、移動体Aを利用したいユーザが端末Aを用いて、移動体Aに搭載されている移動体装置Aに対して処理を行うとして説明する。
【0184】
図14に示すように、まず、例えば端末Aは、他の移動体装置B、Cと通信可能でない(オフライン)状態の移動体装置Aと通信し、オフライン状態の移動体装置Aが搭載されている移動体Aの予約処理を行う(S1A)。つまり、端末Aは、オフライン状態の移動体装置Aに対して移動体Aをローカル予約する予約処理を行う。より具体的には、端末Aは、移動体装置Aと通信し、移動体Aを利用予約するための予約トランザクションデータTrsvを生成して、移動体装置Aに送信する。この場合、例えば、図15Aに示すように、移動体装置Aは移動体装置Bと通信可能でない(オフライン)状態であるので、台帳Aのみに、移動体Aを利用予約するための予約トランザクションデータTrsvを含むブロックが格納される。
【0185】
次に、例えば端末Aは、オフライン状態の移動体装置Aと通信し、移動体Aの貸出処理を行う(S3A)。つまり、端末Aは、オフライン状態の移動体装置Aに対して移動体Aをローカル貸出する貸出処理を行う。より具体的には、端末Aは、移動体装置Aと通信し、移動体Aを利用するため移動体Aの解錠要求を送信することができる。すると、移動体装置Aは、移動体Aを解錠させ、移動体Aが解錠されて移動体Aの貸出開始を示す貸出トランザクションデータTrntを生成する。この場合、例えば、図15Bに示すように、移動体装置Aはオフライン状態であるので、台帳Aのみに、移動体Aの貸出開始を示す貸出トランザクションデータTrntを含むブロックが格納される。
【0186】
次に、例えば端末Aは、オフライン状態の移動体装置Aと通信し、移動体Aの返却処理を行う(S5A)。つまり、端末Aは、オフライン状態の移動体装置Aに対して移動体Aをローカル返却する返却処理を行う。より具体的には、端末Aを操作したユーザは、解錠された移動体Aを、利用予約した時間利用して、その後返却する。移動体装置Aは、移動体Aが返却されると、移動体Aの返却完了を示す返却トランザクションデータTrtnを生成する。この場合、例えば、図15Cに示すように、移動体装置Aはオフライン状態であるので、台帳Aのみに、移動体Aの返却完了を示す返却トランザクションデータTrtnを含むブロックが格納される。
【0187】
その後、移動体装置Aがオンライン状態に復帰するとする。すると、移動体装置Aがオンライン状態に復帰した時に、システムにおいて復帰時処理が行われる(S6A)。より具体的には、ステップS1A~ステップS5Aでは、上述したように、移動体装置Aが移動体装置Bと通信不可の(オフライン)状態になっている。このため、図16の(a)に示すように、移動体装置Aがオンライン状態に復帰した時点では、台帳A及び台帳Bのブロックチェーンには、異なるブロックが連結されている。次いで、移動体装置Aがオンライン状態に復帰すると、図16の(b)に示すように、移動体装置Aの台帳A及び移動体装置Bの台帳Bには、異なるブロックチェーンを共有し合うことになりフォークが発生する。ここで、オフライン状態の移動体装置Aの台帳Aのブロックチェーンに連結されたブロックが側鎖ブロックに該当し、オンライン状態の移動体装置Bの台帳Bのブロックチェーンに連結されたブロックが主鎖ブロックに該当する。このため、図17の(a)及び(b)に示すように、移動体装置Aの台帳A及び移動体装置Bの台帳Bでは、側鎖ブロックが削除され、側鎖ブロックに含まれるトランザクションデータがトランザクションプールに保存されることで、フォークが解消される。なお、図17の(b)では、予約トランザクションデータTrsvと貸出トランザクションデータTrntと返却トランザクションデータTrtnとがトランザクションプールに保存されている。その後、図17の(c)に示すように、移動体装置Aの台帳A及び移動体装置Bの台帳Bのブロックチェーンでは、新たなブロックを生成するタイミングで、トランザクションプールに保存されたトランザクションデータを含むブロックが生成されて連結される。
【0188】
次に、移動体装置Aなどでは、料金算定処理を行う(S7)。ステップS7の料金算定処理は、上述した通りであるので説明を省略する。
【0189】
続いて、図14に示すステップS1Aの予約処理、ステップS3Aの貸出処理及びS5Aの返却処理の詳細すなわちローカル予約、ローカル貸出及びローカル返却の詳細処理についてシーケンス図を用いて説明する。また、図14に示すステップS6Aの移動体装置Aの通信復帰時の処理の詳細についてもシーケンス図を用いて説明する。以下、移動体Aを利用したいユーザが端末Aを用いて、移動体Aに搭載されている移動体装置Aに対して移動体Aの予約処理、貸出処理及び返却処理を行うとして説明する。
【0190】
[比較例の第2例に係る予約処理]
図18は、比較例の第2例に係るシステムの予約処理すなわちローカル予約の処理を示すシーケンス図である。図10と同様の要素には同一の符号を付しており、詳細な説明は省略する。
【0191】
まず、端末Aは、移動体Aを利用したいユーザの操作に基づいて、移動体Aを利用予約するための予約トランザクションデータTrsvを生成し(S101)、生成した予約トランザクションデータTrsvを移動体装置Aに送信する(S102)。
【0192】
次に、移動体装置Aは、ステップS102で送信された予約トランザクションデータTrsvを受信すると、他の移動体装置である移動体装置B、Cに予約トランザクションデータTrsvを転送することを試みるが、失敗する(S103A)。移動体装置Aはオフライン状態であるため、移動体装置B、Cに予約トランザクションデータTrsvを転送できないからである。このため、移動体装置B、Cは、予約トランザクションデータTrsvを取得しない。
【0193】
次に、移動体装置Aは、取得した予約トランザクションデータTrsvの正当性を含む検証を行う検証アルゴリズムを実行する(S104)。なお、予約トランザクションデータTrsvの検証が成功しなかった場合、予約処理を終了することになる。
【0194】
次に、移動体装置Aは、ステップS104で実行された検証アルゴリズムにより検証済みの予約トランザクションデータTrsvをトランザクションプールaに格納する(S105)。
【0195】
次に、移動体装置Aは、検証済みの予約トランザクションデータTrsvを含むブロックBlc(Trsv)を生成する(S107)。なお、移動体装置Aは、オフライン状態であるので移動体装置B、Cとは、次に生成するブロックに格納すべきトランザクションデータの情報をやりとりしないで、ブロックBlc(Trsv)を生成する。
【0196】
次に、移動体装置Aは、他の移動体装置である移動体装置B、Cに、ステップS107で生成したブロックBlc(Trsv)を送信することを試みるが、失敗する(S108A)。移動体装置Aはオフライン状態であるため、移動体装置B、CにブロックBlc(Trsv)を送信できないからである。
【0197】
次に、移動体装置Aは、単独でコンセンサスアルゴリズムを実行する(S109A)。具体的には、移動体装置Aは、予約トランザクションデータTrsvが正当なトランザクションデータであること(つまり正当性)を単独で合意し、ブロックBlc(Trsv)の正当性を単独で合意する。図18に示す例では、移動体装置Aは、ブロックBlc(Trsv)に含まれる予約トランザクションデータTrsvが正当なトランザクションデータであること(つまり正当性)を合意することで、ブロックBlc(Trsv)の正当性も合意する。なお、ステップS107の処理は、ステップS109Aで単独でコンセンサスアルゴリズムを実行する際に行われてもよい。
【0198】
次に、移動体装置Aは、ステップS109Aで合意済みのブロックBlc(Trsv)を台帳A内のブロックチェーンに連結する(S110)。
【0199】
これにより、図15Aに示すように、台帳Aのみに、移動体Aを利用予約するための予約トランザクションデータTrsvを含むブロックが格納され、予約が確定されることになる。このように、オフライン状態の台帳Aのみで自己完結して予約が確定されることを以下ではローカル予約と称する。
【0200】
[比較例の第2例に係る貸出処理]
図19は、比較例の第2例に係るシステムの貸出処理すなわちローカル貸出の処理を示すシーケンス図である。図11と同様の要素には同一の符号を付しており、詳細な説明は省略する。
【0201】
まず、端末Aは、移動体Aを利用したいユーザの操作に基づいて、移動体Aの解錠要求を移動体装置Aに送信する(S301)。
【0202】
次に、移動体装置Aは、ステップS301で送信された解錠要求を受信すると、台帳Aのブロックチェーンに解錠要求に対応する予約があるかを確認し(S302)、移動体Aのロックを解除する(S303)。
【0203】
次に、移動体装置Aは、移動体Aのロックが解除されたことをトリガに、移動体Aの貸出開始を示す貸出トランザクションデータTrntを生成する(S304)。
【0204】
次に、移動体装置Aは、他の移動体装置である移動体装置B、Cに貸出トランザクションデータTrntを転送することを試みるが、失敗する(S305A)。移動体装置Aはオフライン状態であるため、移動体装置B、Cに貸出トランザクションデータTrntを転送できないからである。このため、移動体装置B、Cは、貸出トランザクションデータTrntを取得しない。
【0205】
次に、移動体装置Aは、貸出トランザクションデータTrntの正当性を含む検証を行う検証アルゴリズムを実行する(S306)。
【0206】
次に、移動体装置Aは、ステップS306で実行された検証アルゴリズムにより検証済みの貸出トランザクションデータTrntをトランザクションプールaに格納する(S307)。
【0207】
次に、移動体装置Aはそれぞれ、検証済みの貸出トランザクションデータTrntを含むブロックBlc(Trnt)を生成する(S309)。なお、移動体装置Aは、オフライン状態であるので移動体装置B、Cとは、次に生成するブロックに格納すべきトランザクションデータの情報をやりとりしないで、ブロックBlc(Trnt)を生成する。
【0208】
次に、移動体装置Aは、他の移動体装置である移動体装置B、Cに、ステップS309で生成したブロックBlc(Trnt)を送信することを試みるが、失敗する(S310A)。移動体装置Aはオフライン状態であるため、移動体装置B、CにブロックBlc(Trnt)を送信できないからである。
【0209】
次に、移動体装置Aは、単独でコンセンサスアルゴリズムを実行する(S311A)。具体的には、移動体装置Aは、貸出トランザクションデータTrntが正当なトランザクションデータであること(つまり正当性)を単独で合意し、ブロックBlc(Trnt)の正当性を単独で合意する。図19に示す例では、移動体装置Aは、ブロックBlc(Trnt)に含まれる貸出トランザクションデータTrntが正当なトランザクションデータであること(つまり正当性)を合意することで、ブロックBlc(Trnt)の正当性も合意する。なお、ステップS309の処理は、ステップS311でコンセンサスアルゴリズムを実行する際に行われてもよい。
【0210】
次に、移動体装置Aは、ステップS311Aで合意済みのブロックBlc(Trnt)を台帳A内のブロックチェーンに連結する(S312)。
【0211】
これにより、図15Bに示すように、台帳Aのみに、貸出トランザクションデータTrntを含むブロックが格納され、移動体Aが貸出開始されたことが記録されることになる。このように、オフライン状態の台帳Aのみで自己完結して移動体Aが貸出開始されたことが記録されることを以下ではローカル貸出と称する。
【0212】
[比較例の第2例に係る返却処理]
図20は、比較例の第2例に係るシステムの返却処理を示すシーケンス図である。図12と同様の要素には同一の符号を付しており、詳細な説明は省略する。
【0213】
まず、移動体Aを利用したユーザにより移動体Aが返却されると、移動体装置Aは、移動体Aが返却されたことを確認する(S501)。
【0214】
次に、移動体装置Aは、移動体Aが返却されたことを確認したことをトリガに、移動体Aの返却完了を示す返却トランザクションデータTrtnを生成する(S502)。
【0215】
次に、移動体装置Aは、他の移動体装置である移動体装置B、Cに返却トランザクションデータTrtnを転送することを試みるが、失敗する(S503A)。移動体装置Aはオフライン状態であるため、移動体装置B、Cに返却トランザクションデータTrtnを転送できないからである。このため、移動体装置B、Cは、返却トランザクションデータTrtnを取得しない。
【0216】
次に、移動体装置Aは、取得した返却トランザクションデータTrtnの正当性を含む検証を行う検証アルゴリズムを実行する(S504)。
【0217】
次に、移動体装置Aは、ステップS504で実行された検証アルゴリズムにより検証済みの返却トランザクションデータTrtnをトランザクションプールaに格納する(S505)。
【0218】
次に、移動体装置Aは、検証済みの返却トランザクションデータTrtnを含むブロックBlc(Trtn)を生成する(S506)。なお、移動体装置Aは、オフライン状態であるので移動体装置B、Cとは、次に生成するブロックに格納すべきトランザクションデータの情報をやりとりしないで、ブロックBlc(Trtn)を生成する。
【0219】
次に、移動体装置Aは、他の移動体装置である移動体装置B、Cに、ステップS506で生成したブロックBlc(Trtn)を送信することを試みるが、失敗する(S507A)。移動体装置Aはオフライン状態であるため、移動体装置B、CにブロックBlc(Trtn)を送信できないからである。
【0220】
次に、移動体装置Aは、単独でコンセンサスアルゴリズムを実行する(S508A)。具体的には、移動体装置Aは、返却トランザクションデータTrtnが正当なトランザクションデータであること(つまり正当性)を単独で合意し、ブロックBlc(Trtn)の正当性を単独で合意する。図20に示す例では、移動体装置Aは、ブロックBlc(Trtn)に含まれる返却トランザクションデータTrtnが正当なトランザクションデータであること(つまり正当性)を合意することで、ブロックBlc(Trtn)の正当性も合意する。なお、ステップS506の処理は、ステップS508Aでコンセンサスアルゴリズムを実行する際に行われてもよい。
【0221】
次に、移動体装置Aは、ステップS508Aで合意済みのブロックBlc(Trtn)を台帳A内のブロックチェーンに連結する(S509)。これにより、図15Cに示すように、台帳Aのみに、返却トランザクションデータTrtnを含むブロックが格納され、移動体Aの返却完了が記録されることになる。このように、オフライン状態の台帳Aのみで自己完結して移動体Aの返却完了が記録されることを以下ではローカル返却と称する。
【0222】
次に、移動体装置Aは、ブロックチェーンに格納された予約情報をチェックする(S510)。より具体的には、移動体装置A、B、Cはそれぞれ、返却トランザクションデータTrtnが自身の台帳内のブロックチェーンに連結されることで、予約スマートコントラクトを実行させて、ブロックチェーンに格納された予約情報として予約トランザクションデータTrsvがあることを確認する。
【0223】
そして、移動体装置Aは、料金算定アルゴリズムを実行する(S511)。
【0224】
[比較例の第2例に係る移動体装置Aの通信復帰時の処理]
続いて、図14に示すステップS6Aの移動体装置Aの通信復帰時の処理の詳細について説明する。
【0225】
図21は、比較例の第2例に係る移動体装置Aの通信復帰時に行われるシステムの処理を示すシーケンス図である。
【0226】
まず、移動体装置Aは、他の移動体装置である移動体装置B、Cと通信可能(オンライン状態)に復帰したとする(S601)。移動体装置Aは、移動体Aに搭載されているので、移動体Aの所在位置によってはオフライン状態となったり、オンライン状態になったりし得る。
【0227】
すると、移動体装置Aは、他の移動体装置である移動体装置B、Cに、信号を送信する(S602)。信号は、移動体装置Aがオンライン状態になったことを通知できるなんらかの信号であればよい。
【0228】
次に、移動体装置A、B、Cは、各台帳内のブロックチェーンの異同判定を行う(S603)。より具体的には、移動体装置Aは、台帳A内のブロックチェーンと他の移動体装置である移動体装置B、Cの台帳B、C内のブロックチェーンとの異同を判定する。移動体装置B、Cは、台帳B、C内のブロックチェーンと他の移動体装置である移動体装置Aの台帳A内のブロックチェーンとの異同を判定する。ここでは、図16の(a)に示す例のように、台帳Aと、台帳B、Cとのブロックチェーンには異なるブロックが連結されており、台帳A内のブロックチェーンと台帳B、C内のブロックチェーンとは異なる。このため、図16の(b)に示す例のように、移動体装置A、B、Cでは、台帳A、B、Cにおいて、異なるブロックチェーンを共有し合うのでフォークが発生する。
【0229】
次に、移動体装置A、B、Cは、側鎖ブロックと主鎖ブロックとに該当するブロックについての情報を送信しあう(S604、S605)。本比較例では、一定時間オフライン状態であった移動体装置Aの台帳Aのブロックチェーンに連結されたブロックが側鎖ブロックに該当する。移動体装置B、Cの台帳B、Cのブロックチェーンに連結されたブロックは主鎖ブロックに該当することになる。
【0230】
次に、移動体装置A、B、Cはそれぞれ、ステップS604で得た側鎖ブロックのトランザクションデータTpolをトランザクションプールに格納する(S606)。より具体的には、移動体装置Aは、台帳Aのブロックチェーンに連結された側鎖ブロックのトランザクションデータTpolのコピーをトランザクションプールaに格納する。移動体装置Bは、側鎖ブロックのトランザクションデータTpolをトランザクションプールbに格納し、移動体装置Cは、側鎖ブロックのトランザクションデータTpolをトランザクションプールcに格納する。
【0231】
次に、移動体装置A、B、Cはそれぞれ、台帳A、B、Cのブロックチェーンと同一となるように更新する(S607)。より具体的には、移動体装置Aは、台帳Aのブロックチェーンに連結されていた側鎖ブロックを削除し、主鎖ブロックを残すことで、台帳B、Cのブロックチェーンと同一となるように台帳Aのブロックチェーンを更新する。移動体装置Bは、台帳Bのブロックチェーンに連結されていた側鎖ブロックを削除し、主鎖ブロックを残すことで、台帳A、Cのブロックチェーンと同一となるように台帳Bのブロックチェーンを更新する。移動体装置Cは、台帳Cのブロックチェーンに連結されていた側鎖ブロックを削除し、主鎖ブロックを残すことで、台帳A、Bのブロックチェーンと同一となるように台帳Cのブロックチェーンを更新する。
【0232】
次に、所定時間後のブロック生成タイミングにおいて、移動体装置A、B、Cはそれぞれ、トランザクションプールに格納しているトランザクションデータTpolを含むブロックBlc(Tpol)を生成する(S614)。
【0233】
次に、移動体装置A、B、Cはそれぞれ、他の移動体装置に、ステップS614で生成したブロックBlc(Tpol)を送信する(S615)。
【0234】
次に、移動体装置A、B、Cは、共同でコンセンサスアルゴリズムを実行する(S616)。具体的には、移動体装置A、B、Cはそれぞれ、トランザクションデータTpolが正当なトランザクションデータであること(つまり正当性)を合意し、ブロックBlc(Tpol)の正当性を合意する。図21に示す例では、ブロックBlc(Tpol)に含まれるトランザクションデータTpolが正当なトランザクションデータであること(つまり正当性)が合意され、ブロックBlc(Tpol)の正当性も合意される。なお、ステップS614及びステップS615の処理は、ステップS616でコンセンサスアルゴリズムを実行する際に行われてもよい。
【0235】
次に、移動体装置A、B、Cはそれぞれ、ステップS616で合意済みのブロックBlc(Tpol)を分散台帳内のブロックチェーンに連結する(S617)。より具体的には、移動体装置Aは、合意済みのブロックBlc(Tpol)を台帳A内のブロックチェーンに連結し、移動体装置Bは、合意済みのブロックBlc(Tpol)を台帳B内のブロックチェーンに連結する。移動体装置Cは、合意済みのブロックBlc(Tpol)を台帳C内のブロックチェーンに連結する。これにより、図17の(c)に示すように、予約トランザクションデータTrsvと貸出トランザクションデータTrntと返却トランザクションデータTrtnとを含むブロックが格納され、移動体Aのローカル予約、ローカル貸出及びローカル返却が記録されることになる。
【0236】
次に、移動体装置Aは、ブロックチェーンに格納された予約情報をチェックする(S620)。より具体的には、移動体装置A、B、Cはそれぞれ、返却トランザクションデータTrtnを含むブロックが自身の台帳内のブロックチェーンに連結されることで、予約スマートコントラクトを実行させて、ブロックチェーンに格納された予約情報として予約トランザクションデータTrsvがあることを確認する。
【0237】
そして、移動体装置A、B、Cはそれぞれ、料金算定アルゴリズムを実行する(S621)。なお、ステップS621の処理は、上述したステップS511の処理と同じであるので説明を省略する。
【0238】
[比較例に係るブロック連結処理]
続いて、ブロックチェーンに生成したブロックを連結するブロック連結処理の比較例について説明する。
【0239】
図22は、比較例に係るシステムのブロック連結処理を説明するためのフローチャートである。以下では、代表して移動体装置Aでブロック連結処理が行われる場合について説明する。
【0240】
まず、移動体装置Aは、トランザクションデータを取得または生成した場合(S1001)、取得または生成したトランザクションデータの検証を行う検証アルゴリズムを実行する(S1002)。
【0241】
次に、移動体装置Aは、ステップS1002で実行された検証アルゴリズムにより検証済みのトランザクションデータをトランザクションプールに格納する(S1003)。
【0242】
次に、移動体装置Aは、台帳Aのブロックチェーンにブロックを連結するトリガが有るかを確認する(S1004)。ここでのトリガは、例えば数分間などの一定間隔が経過したことである。
【0243】
ステップS1004において、トリガが有ったときには(S1004でYes)、移動体装置Aは、他の移動体と通信可能かを確認する(S1005)。なお、ステップS1004において、トリガがないときには(S1004でNo)、ステップS1001から処理を繰り返す。
【0244】
ステップS1005において、移動体装置Aは、他の移動体と通信可能でない場合すなわちオフライン状態である場合(S1005でNo)、移動体装置Aは、単独でコンセンサスアルゴリズムを実行する(S1006)。移動体装置Aは、取得または生成したトランザクションデータを含むブロックチェーンのブロックを生成し、コンセンサスアルゴリズムを実行することで合意形成を行う。なお、移動体装置Aは、取得または生成したトランザクションデータの正当性を検証し、当該トランザクションデータを含むブロックを生成してもよい。
【0245】
次に、移動体装置Aは、生成したブロックを、台帳Aのブロックチェーンに連結する(S1007)。
【0246】
一方、ステップS1005において、移動体装置Aは、他の移動体と通信可能である場合(S1005でYes)、移動体装置Aは、他の移動体と共同でコンセンサスアルゴリズムを実行する(S1008)。移動体装置A及び他の移動体のそれぞれは、当該トランザクションデータを含むブロックチェーンのブロックを生成し、コンセンサスアルゴリズムを実行することで生成したブロックに対する合意形成を行う。
【0247】
次に、移動体装置Aは、台帳Aのブロックチェーンと他の移動体の台帳内のブロックチェーンとが同じか否かを判定する(S1009)。
【0248】
ステップS1009において、同じ場合には(S1009でYes)、移動体装置Aは、台帳Aのブロックチェーンに合意済のブロックを連結する(S1010)。
【0249】
一方、ステップS1009において、同じでない場合には(S1009でNo)、側鎖となる方のブロックすなわち側鎖ブロックの当該トランザクションデータをトランザクションプールに格納する(S1011)。
【0250】
次に、移動体装置Aは、他の移動体の台帳内のブロックチェーンと同じになるように台帳Aのブロックチェーンを更新する(S1012)。
【0251】
次に、移動体装置Aは、ステップS1009で合意済のブロックを台帳Aのブロックチェーンに連結する(S1013)。
【0252】
[比較例の第3例]
続いて、ブロックチェーンの仕組みを悪用して移動体Aを不正利用する不正処理について説明する。比較例の第3例では、移動体装置Aがオフライン状態である場合に、移動体Aに対して不正な予約処理と正常な貸出処理を行い、その後、移動体装置Aをオンライン状態に復帰させて返却処理を行う場合について説明する。
【0253】
図23は、比較例の第3例に係るシステムの不正処理の動作概要を示すフローチャートである。図24A図27は、移動体装置Aの台帳A及び移動体装置Bの台帳Bに格納されるブロックチェーンを概念的に説明するための図である。図24Aは、図23のステップS10の動作により台帳Aに格納されるブロックチェーンのブロックを概念的に示す図である。図24Bは、図23のステップS11の動作により台帳Aに格納されるブロックチェーンのブロックを概念的に示す図である。図24Cは、図23のステップS12の動作により台帳Aに格納されるブロックチェーンのブロックを概念的に示す図である。図25及び図26は、図23のステップS13の動作により台帳A及び台帳Bに格納されるブロックチェーンのブロックを概念的に説明するための図である。図27は、図23のステップS14の動作により台帳A及び台帳Bに格納されるブロックチェーンのブロックを概念的に示す図である。以下では、移動体Aを利用したいユーザが端末Aを用いて、移動体Aに搭載されている移動体装置Aに対して不正処理を行うとして説明する。
【0254】
図23に示すように、まず、例えば端末Aは、オフライン状態の移動体装置Aに対して、当該移動体装置Aが搭載されている移動体Aの予約処理を行う(S10)。ここでは、上述したように、端末Aは、オフライン状態の移動体装置Aに対して移動体Aをローカル予約する予約処理を行う。より具体的には、端末Aは、移動体装置Aと通信し、移動体Aを利用予約するための予約トランザクションデータTrsvAを生成して、移動体装置Aに送信することができる。この場合、例えば、図24Aに示すように、移動体装置Aはオフライン状態であるので、台帳Aのみに、移動体Aを利用予約するための予約トランザクションデータTrsvAを含むブロックが格納される。
【0255】
次に、端末Aを用いたりユーザ個人のスマートフォンを用いたりなどなんらかの手段により、オンライン状態の移動体装置Bに対して、ステップS10で行った移動体Aのローカル予約の時間帯が被るように移動体Aの予約処理を行う(S11)。つまり、オンライン状態の移動体装置Bに対して移動体Aのローカル予約と競合するように移動体Aの競合予約処理を行う。本比較例では、ユーザは、端末Aを用いて、移動体Aを競合予約するための予約トランザクションデータTrsvBを生成して、オンライン状態の移動体装置Bに対して送信する。この場合、例えば、図24Bに示すように、移動体装置B等は、オフラインである移動体装置Aの台帳Aを除く台帳B等に、移動体Aを競合予約するための予約トランザクションデータTrsvBを含むブロックが格納される。
【0256】
次に、例えば端末Aは、オフライン状態の移動体装置Aと通信し、移動体Aの貸出処理を行う(S12)。つまり、上述したが、端末Aは、オフライン状態の移動体装置Aに対して移動体Aをローカル貸出する貸出処理を行う。より具体的には、端末Aは、移動体装置Aと通信し、移動体Aを利用するため移動体Aの解錠要求を送信することで、移動体装置Aに、移動体Aを解錠させ、移動体Aが解錠されたことをトリガに移動体Aの貸出開始を示す貸出トランザクションデータTrntAを生成させる。この場合、例えば、図24Cに示すように、移動体装置Aはオフライン状態であるので、台帳Aのみに、移動体Aの貸出開始を示す貸出トランザクションデータTrntAを含むブロックが格納される。
【0257】
次に、ユーザは移動体装置Aをオンライン状態に復帰させるとする。すると、移動体装置Aがオンライン状態に復帰した時に、システムにおいて復帰時処理が行われる(S13)。
【0258】
より具体的には、ステップS10~ステップS12では、上述したように、移動体装置Aがオフライン状態であるため、図25の(a)に示すように、移動体装置Aがオンライン状態に復帰した時点では、台帳A及び台帳Bのブロックチェーンには、異なるブロックが連結されている。次いで、移動体装置Aがオンライン状態に復帰すると、図25の(b)に示すように、移動体装置Aの台帳A及び移動体装置Bの台帳Bには、異なるブロックチェーンを共有し合うことになりフォークが発生する。ここで、オフライン状態の移動体装置Aの台帳Aのブロックチェーンに連結されたブロックが側鎖ブロックに該当し、オンライン状態の移動体装置Bの台帳Bのブロックチェーンに連結されたブロックが主鎖ブロックに該当する。このため、図26の(a)及び(b)に示すように、移動体装置Aの台帳A及び移動体装置Bの台帳Bでは、側鎖ブロックが削除され、側鎖ブロックに含まれるトランザクションデータがトランザクションプールに保存されることで、フォークが解消される。なお、図26の(b)では、予約トランザクションデータTrsvAと貸出トランザクションデータTrntAとがトランザクションプールに保存されている。その後、図26の(c)に示すように、移動体装置Aの台帳A及び移動体装置Bの台帳Bのブロックチェーンでは、新たなブロックを生成するタイミングで、トランザクションプールに保存されたトランザクションデータを含むブロックが生成されて連結される。
【0259】
次に、例えば端末Aは、オンライン状態の移動体装置Aと通信し、移動体Aの返却処理を行う(S14)。より具体的には、端末Aを操作したユーザは、解錠された移動体Aを、利用予約した時間利用して、その後返却する。移動体装置Aは、移動体Aが返却されると、移動体Aの返却完了を示す返却トランザクションデータTrtnAを生成する。この場合、例えば、図27に示すように、移動体装置Aはオンライン状態であるので、台帳A、B等のすべてに、移動体Aの返却完了を示す返却トランザクションデータTrtnAを含むブロックが格納される。
【0260】
次に、移動体装置Aなどでは、料金算定処理を行う(S15)。ステップS15の料金算定処理は、ステップS7の料金算定処理と同じ処理であるので説明を省略する。予約トランザクションデータTrsvAと予約トランザクションデータTrsvBとが競合しており、予約トランザクションデータTrsvAを含むブロックの方が、予約トランザクションデータTrsvBを含むブロックよりも時間的に後となる後ろに連結される。この結果、予約トランザクションデータTrsvAに対応する予約に対しての料金は徴収されないので、予約トランザクションデータTrsvAに対応する予約において移動体Aを利用した料金を払わないという不正が成立してしまう。
【0261】
続いて、図23に示すステップS10のローカル予約の処理、ステップS11の競合予約の処理、及びステップS12のローカル貸出の処理の詳細についてシーケンス図を用いて説明する。
【0262】
[比較例の第3例に係る予約処理]
図28は、比較例の第3例に係るシステムのローカル予約を行う場合の処理を示すシーケンス図である。図18と同様の要素には同様の符号を付しており、詳細な説明は省略する。
【0263】
まず、端末Aは、移動体Aを利用したいユーザの操作に基づいて、移動体Aを利用予約するための予約トランザクションデータTrsvAを生成し(S101B)、生成した予約トランザクションデータTrsvAを移動体装置Aに送信する(S102B)。
【0264】
次に、移動体装置Aは、ステップS102Bで送信された予約トランザクションデータTrsvAを受信すると、他の移動体装置である移動体装置B、Cに予約トランザクションデータTrsvAを転送することを試みるが、失敗する(S103B)。移動体装置Aはオフライン状態であるため、移動体装置B、Cに予約トランザクションデータTrsvAを転送できないからである。
【0265】
次に、移動体装置Aは、取得した予約トランザクションデータTrsvAの正当性を含む検証を行う検証アルゴリズムを実行する(S104B)。
【0266】
次に、移動体装置Aは、ステップS104Bで実行された検証アルゴリズムにより検証済みの予約トランザクションデータTrsvAをトランザクションプールaに格納する(S105B)。
【0267】
次に、移動体装置Aは、検証済みの予約トランザクションデータTrsvAを含むブロックBlc(TrsvA)を生成する(S107B)。
【0268】
次に、移動体装置Aは、他の移動体装置である移動体装置B、Cに、ステップS107Bで生成したブロックBlc(TrsvA)を送信することを試みるが、失敗する(S108B)。移動体装置Aはオフライン状態であるため、移動体装置B、CにブロックBlc(TrsvA)を送信できないからである。
【0269】
次に、移動体装置Aは、単独でコンセンサスアルゴリズムを実行する(S109B)。なお、ステップS107Bの処理は、ステップS109Bで単独でコンセンサスアルゴリズムを実行する際に行われてもよい。
【0270】
次に、移動体装置Aは、ステップS109Bで合意済みのブロックBlc(TrsvA)を台帳A内のブロックチェーンに連結する(S110B)。
【0271】
これにより、図24Aに示すように、台帳Aのみに、移動体Aを利用予約するための予約トランザクションデータTrsvAを含むブロックが格納され、ローカル予約が確定されることになる。
【0272】
図29は、比較例の第3例に係るシステムの競合予約を行う場合の処理を示すシーケンス図である。
【0273】
まず、ユーザは例えば端末Aを用いて、移動体Aを競合予約するための予約トランザクションデータTrsvBを生成する(S101C)。
【0274】
次に、ユーザは例えば端末Aを用いて、移動体装置Bに対して、ステップS101Cで生成した予約トランザクションデータTrsvBを送信する(S102C)。
【0275】
次に、移動体装置Bは、オンライン状態であるので、ステップS102Cで送信された予約トランザクションデータTrsvBを受信すると、他の移動体装置である移動体装置Cに予約トランザクションデータTrsvBを転送する(S103C)。これにより、移動体装置Aを除く移動体装置Cは、予約トランザクションデータTrsvBを取得する。
【0276】
次に、移動体装置B、Cはそれぞれ、取得した予約トランザクションデータTrsvBの正当性を含む検証を行う検証アルゴリズムを実行する(S104C)。
【0277】
次に、移動体装置B、Cはそれぞれ、ステップS104Cで実行された検証アルゴリズムにより検証済みの予約トランザクションデータTrsvBをトランザクションプールに格納する(S105C)。より具体的には、移動体装置Bは、検証済みの予約トランザクションデータTrsvBをトランザクションプールbに格納し、移動体装置Cは、検証済みの予約トランザクションデータTrsvBをトランザクションプールcに格納する。
【0278】
次に、移動体装置B、Cは互いに、通信可能な状態であるので、次に生成するブロックに格納すべきトランザクションデータの情報をやりとりする(S106C)。図29に示す例では、移動体装置B、Cは、次に生成するブロックに格納すべきトランザクションデータに、検証済みの予約トランザクションデータTrsvBがあることを確認する。
【0279】
次に、移動体装置B、Cはそれぞれ、検証済みの予約トランザクションデータTrsvBを含むブロックBlc(TrsvB)を生成する(S107C)。
【0280】
次に、移動体装置B、Cはそれぞれ、移動体装置Aを除く他の移動体装置に、ステップS107Cで生成したブロックBlc(TrsvB)を送信する(S108C)。これにより、移動体装置B、Cはそれぞれ、移動体装置Aを除く他の移動体装置に、ブロックBlc(TrsvB)に含まれる予約トランザクションデータTrsvBの正当性の検証が成功したことの報告を通知することができる。
【0281】
次に、移動体装置B、Cは、共同でコンセンサスアルゴリズムを実行する(S109C)。具体的には、移動体装置B、Cはそれぞれ、ステップS108Cで通知された報告に基づき、予約トランザクションデータTrsvBが正当なトランザクションデータであること(つまり正当性)を合意し、ブロックBlc(TrsvB)の正当性を合意する。なお、ステップS107C及びステップS108Cの処理は、ステップS109Cでコンセンサスアルゴリズムを実行する際に行われてもよい。
【0282】
次に、移動体装置B、Cはそれぞれ、ステップS109Cで合意済みのブロックBlc(TrsvB)を分散台帳内のブロックチェーンに連結する(S110C)。より具体的には、移動体装置Bは、合意済みのブロックBlc(TrsvB)を台帳B内のブロックチェーンに連結し、移動体装置Cは、合意済みのブロックBlc(TrsvB)を台帳C内のブロックチェーンに連結する。
【0283】
これにより、図24Bに示すように、台帳B及び台帳Cには共に、予約トランザクションデータTrsvBを含むブロックが格納される。
【0284】
[比較例の第3例に係る貸出処理]
図30は、比較例の第3例に係るシステムのローカル貸出の処理を示すシーケンス図である。図19と同様の要素には同様の符号を付しており、詳細な説明は省略する。
【0285】
まず、端末Aは、移動体Aを利用するユーザの操作に基づいて、移動体Aの解錠要求を移動体装置Aに送信する(S301B)。
【0286】
次に、移動体装置Aは、ステップS301Bで送信された解錠要求を受信すると、台帳Aのブロックチェーンに解錠要求に対応する予約があるかを確認し(S302B)、移動体Aのロックを解除する(S303B)。
【0287】
次に、移動体装置Aは、移動体Aのロックが解除されたことをトリガに、移動体Aの貸出開始を示す貸出トランザクションデータTrntAを生成する(S304B)。
【0288】
次に、移動体装置Aは、他の移動体装置である移動体装置B、Cに貸出トランザクションデータTrntAを転送することを試みるが、失敗する(S305B)。移動体装置Aはオフライン状態であるため、移動体装置B、Cに貸出トランザクションデータTrntAを転送できないからである。
【0289】
次に、移動体装置Aは、貸出トランザクションデータTrntAの正当性を含む検証を行う検証アルゴリズムを実行する(S306B)。
【0290】
次に、移動体装置Aは、ステップS306Bで実行された検証アルゴリズムにより検証済みの貸出トランザクションデータTrntAをトランザクションプールaに格納する(S307B)。
【0291】
次に、移動体装置Aはそれぞれ、検証済みの貸出トランザクションデータTrntAを含むブロックBlc(TrntA)を生成する(S309B)。
【0292】
次に、移動体装置Aは、他の移動体装置である移動体装置B、Cに、ステップS309Bで生成したブロックBlc(TrntA)を送信することを試みるが、失敗する(S310B)。移動体装置Aはオフライン状態であるため、移動体装置B、CにブロックBlc(TrntA)を送信できないからである。
【0293】
次に、移動体装置Aは、単独でコンセンサスアルゴリズムを実行する(S311B)。具体的には、移動体装置Aは、貸出トランザクションデータTrntAが正当なトランザクションデータであること(つまり正当性)を単独で合意し、ブロックBlc(TrntA)の正当性を単独で合意する。なお、ステップS309Bの処理は、ステップS311Bでコンセンサスアルゴリズムを実行する際に行われてもよい。
【0294】
次に、移動体装置Aは、ステップS311Bで合意済みのブロックBlc(TrntA)を台帳A内のブロックチェーンに連結する(S312B)。
【0295】
これにより、図24Cに示すように、台帳Aのみに、貸出トランザクションデータTrntAを含むブロックが格納され、移動体Aのローカル貸出が行われたことが記録される。
【0296】
[比較例の第3例に係る移動体装置Aの通信復帰時の処理]
続いて、図23に示すステップS13の移動体装置Aの通信復帰時の処理の詳細について説明する。
【0297】
図31は、比較例の第3例に係る移動体装置Aの通信復帰時に行われるシステムの処理を示すシーケンス図である。図21と同様の要素には同様の符号を付しており、詳細な説明は省略する。
【0298】
まず、移動体装置Aは、他の移動体装置である移動体装置B、Cと通信可能(オンライン状態)に復帰したとする(S601B)。
【0299】
すると、移動体装置Aは、他の移動体装置である移動体装置B、Cに、移動体装置Aがオンライン状態になったことを示す信号を送信する(S602B)。
【0300】
次に、移動体装置A、B、Cは、各台帳内のブロックチェーンの異同判定を行う(S603B)。より具体的には、移動体装置Aは、台帳A内のブロックチェーンと他の移動体装置である移動体装置B、Cの台帳B、C内のブロックチェーンとの異同を判定する。移動体装置B、Cは、台帳B、C内のブロックチェーンと他の移動体装置である移動体装置Aの台帳A内のブロックチェーンとの異同を判定する。ここでは、図25の(a)に示す例のように、台帳Aと、台帳B、Cとのブロックチェーンには異なるブロックが連結されており、台帳A内のブロックチェーンと台帳B、C内のブロックチェーンとは異なる。このため、図25の(b)に示す例のように、移動体装置A、B、Cでは、台帳A、B、Cにおいて、異なるブロックチェーンを共有し合うのでフォークが発生する。
【0301】
次に、移動体装置A、B、Cは、側鎖ブロックと主鎖ブロックとに該当するブロックについての情報を送信しあう(S604B、S605B)。本比較例では、一定時間オフライン状態であった移動体装置Aの台帳Aのブロックチェーンに連結されたブロックが側鎖ブロックBlc(TrsvA、TrntA)に該当する。移動体装置B、Cの台帳B、Cのブロックチェーンに連結されてたブロックは主鎖ブロックBlc(TrsvB)に該当する。
【0302】
次に、移動体装置A、B、Cはそれぞれ、ステップS604Bで得た側鎖ブロックに含まれる予約トランザクションデータTrsvA、貸出トランザクションデータTrntAを、トランザクションプールに格納する(S606B)。より具体的には、移動体装置Aは、台帳Aのブロックチェーンに連結された側鎖ブロックのトランザクションデータTrsvA、TrntAのコピーをトランザクションプールaに格納する。移動体装置Bは、側鎖ブロックのトランザクションデータTrsvA、TrntAをトランザクションプールbに格納し、移動体装置Cは、側鎖ブロックのトランザクションデータTrsvA、TrntAをトランザクションプールcに格納する。
【0303】
次に、移動体装置A、B、Cはそれぞれ、台帳A、B、Cのブロックチェーンと同一となるように更新する(S607B)。より具体的には、移動体装置Aは、台帳Aのブロックチェーンに連結されていた側鎖ブロックを削除し、主鎖ブロックを残すことで、台帳B、Cのブロックチェーンと同一となるように台帳Aのブロックチェーンを更新する。移動体装置Bは、台帳Bのブロックチェーンに連結されていた側鎖ブロックを削除し、主鎖ブロックを残すことで、台帳A、Cのブロックチェーンと同一となるように台帳Bのブロックチェーンを更新する。移動体装置Cは、台帳Cのブロックチェーンに連結されていた側鎖ブロックを削除し、主鎖ブロックを残すことで、台帳A、Bのブロックチェーンと同一となるように台帳Cのブロックチェーンを更新する。
【0304】
次に、所定時間後のブロック生成タイミングにおいて、移動体装置A、B、Cはそれぞれ、トランザクションプールに格納しているトランザクションデータTrsvA、TrntAを含むブロックBlc(TrsvA、TrntA)を生成する(S614B)。
【0305】
次に、移動体装置A、B、Cはそれぞれ、他の移動体装置に、ステップS614Bで生成したブロックBlc(TrsvA、TrntA)を送信する(S615B)。これにより、移動体装置A、B、Cはそれぞれ、他の移動体装置に、ブロックBlc(TrsvA、TrntA)に含まれるトランザクションデータTrsvA、TrntAの正当性の検証が成功したことの報告を通知することができる。
【0306】
次に、移動体装置A、B、Cは、共同でコンセンサスアルゴリズムを実行する(S616B)。具体的には、移動体装置A、B、Cはそれぞれ、ステップS615Bで通知された報告に基づき、トランザクションデータTrsvA、TrntAが正当なトランザクションデータであること(つまり正当性)を合意し、ブロックBlc(TrsvA、TrntA)の正当性を合意する。なお、ステップS614B及びステップS615Bの処理は、ステップS616Bでコンセンサスアルゴリズムを実行する際に行われてもよい。
【0307】
次に、移動体装置A、B、Cはそれぞれ、ステップS616Bで合意済みのブロックBlc(TrsvA、TrntA)を分散台帳内のブロックチェーンに連結する(S617B)。より具体的には、移動体装置Aは、合意済みのブロックBlc(TrsvA、TrntA)を台帳A内のブロックチェーンに連結し、移動体装置Bは、合意済みのブロックBlc(TrsvA、TrntA)を台帳B内のブロックチェーンに連結する。移動体装置Cは、合意済みのブロックBlc(TrsvA、TrntA)を台帳C内のブロックチェーンに連結する。これにより、図26の(c)に示すように、予約トランザクションデータTrsvAと予約トランザクションデータTrsvBと貸出トランザクションデータTrntAとを含むブロックが格納され、移動体Aのローカル予約、競合予約及びローカル貸出が記録されることになる。
【0308】
[比較例の第3例に係る返却処理]
続いて、図23に示すステップS14の移動体装置Aの返却処理の詳細について説明する。
【0309】
図32は、比較例の第3例に係るシステムの返却処理を示すシーケンス図である。図12と同様の要素には同様の符号を付しており、詳細な説明は省略する。
【0310】
まず、移動体Aを利用したユーザにより移動体Aが返却されると、移動体装置Aは、移動体Aが返却されたことを確認する(S501B)。
【0311】
次に、移動体装置Aは、移動体Aが返却されたことを確認したことをトリガに、移動体Aの返却完了を示す返却トランザクションデータTrtnAを生成する(S502B)。
【0312】
次に、移動体装置Aは、他の移動体装置である移動体装置B、Cに返却トランザクションデータTrtnAを転送する(S503B)。これにより、移動体装置B、Cは、返却トランザクションデータTrtnAを取得する。
【0313】
次に、移動体装置A、B、Cはそれぞれ、取得した返却トランザクションデータTrtnAの正当性を含む検証を行う検証アルゴリズムを実行する(S504B)。
【0314】
次に、移動体装置A、B、Cはそれぞれ、ステップS504Bで実行された検証アルゴリズムにより検証済みの返却トランザクションデータTrtnAをトランザクションプールに格納する(S505B)。より具体的には、移動体装置Aは、検証済みの返却トランザクションデータTrtnAをトランザクションプールaに格納し、移動体装置Bは、検証済みの返却トランザクションデータTrtnAをトランザクションプールbに格納する。移動体装置Cは、検証済みの返却トランザクションデータTrtnAをトランザクションプールcに格納する。なお、図示していないが、移動体装置A、B、Cは互いに、通信可能な状態であるので、次に生成するブロックに格納すべきトランザクションデータの情報をやりとりする。図32に示す例では、移動体装置A、B、Cは、次に生成するブロックに格納すべきトランザクションデータに、検証済みの返却トランザクションデータTrtnAがあることを確認する。
【0315】
次に、移動体装置A、B、Cはそれぞれ、検証済みの返却トランザクションデータTrtnAを含むブロックBlc(TrtnA)を生成する(S506B)。
【0316】
次に、移動体装置A、B、Cはそれぞれ、他の移動体装置に、ステップS506Bで生成したブロックBlc(TrtnA)を送信する(S507B)。これにより、移動体装置A、B、Cはそれぞれ、他の移動体装置に、ブロックBlc(TrtnA)に含まれる返却トランザクションデータTrtnAの正当性の検証が成功したことの報告を通知することができる。
【0317】
次に、移動体装置A、B、Cは、共同でコンセンサスアルゴリズムを実行する(S508B)。具体的には、移動体装置A、B、Cはそれぞれ、ステップS507Bで通知された報告に基づき、返却トランザクションデータTrtnAが正当なトランザクションデータであること(つまり正当性)を合意し、ブロックBlc(TrtnA)の正当性を合意する。なお、ステップS506B及びステップS507Bの処理は、ステップS508Bでコンセンサスアルゴリズムを実行する際に行われてもよい。
【0318】
次に、移動体装置A、B、Cはそれぞれ、ステップS508Bで合意済みのブロックBlc(TrntA)を分散台帳内のブロックチェーンに連結する(S509B)。より具体的には、移動体装置Aは、合意済みのブロックBlc(TrtnA)を台帳A内のブロックチェーンに連結し、移動体装置Bは、合意済みのブロックBlc(TrtnA)を台帳B内のブロックチェーンに連結する。移動体装置Cは、合意済みのブロックBlc(TrtnA)を台帳C内のブロックチェーンに連結する。これにより、図27に示すように、台帳A、台帳B及び台帳Cには共に、返却トランザクションデータTrtnAを含むブロックが格納され、移動体Aの返却完了が記録されることになる。
【0319】
次に、移動体装置A、B、Cはそれぞれ、ブロックチェーンに格納された予約情報をチェックする(S510B)。より具体的には、移動体装置A、B、Cはそれぞれ、返却トランザクションデータTrtnAを含むブロックを含むブロックが自身の台帳内のブロックチェーンに連結されることで、予約スマートコントラクトを実行させて、ブロックチェーンに格納された予約情報として予約トランザクションデータTrsvがあることを確認する。
【0320】
次に、移動体装置A、B、Cはそれぞれ、料金算定アルゴリズムを実行する(S511B)。ここでは、例えば図27に示すように、予約トランザクションデータTrsvAと予約トランザクションデータTrsvBとが競合しており、予約トランザクションデータTrsvAを含むブロックの方が、予約トランザクションデータTrsvBを含むブロックよりも時間的に後となる後ろに連結されている。このため、料金算定アルゴリズムを実行されても、予約トランザクションデータTrsvAに対応する予約に対しての料金は徴収されず、予約トランザクションデータTrsvBに対応する予約に対しての料金のみが徴収されることになる。
【0321】
このように、予約トランザクションデータTrsvAに対応する予約に対しての料金は徴収されないので、予約トランザクションデータTrsvAに対応する予約において移動体Aを利用した料金を払わないという不正が成立する。
【0322】
[比較例の第4例]
比較例の第3例では、移動体装置Aをオンライン状態に復帰させてから返却処理を行う場合の不正処理について説明したが、これに限らない。移動体装置Aがオフライン状態である場合に、返却処理を行った後に移動体装置Aをオンライン状態に復帰させてもよい。この場合の不正処理を比較例の第4例として以下説明する。
【0323】
図33は、比較例の第4例に係るシステムの不正処理の動作概要を示すフローチャートである。図34A図36は、移動体装置Aの台帳A及び移動体装置Bの台帳Bに格納されるブロックチェーンを概念的に説明するための図である。図34Aは、図33のステップS10の動作により台帳Aに格納されるブロックチェーンのブロックを概念的に示す図である。図34Bは、図33のステップS11の動作により台帳Aに格納されるブロックチェーンのブロックを概念的に示す図である。図34Cは、図33のステップS12の動作により台帳Aに格納されるブロックチェーンのブロックを概念的に示す図である。図34Dは、図33のステップS13Aの動作により台帳Aに格納されるブロックチェーンのブロックを概念的に示す図である。図35及び図36は、図33のステップS14Aの動作により台帳A及び台帳Bに格納されるブロックチェーンのブロックを概念的に説明するための図である。以下でも、移動体Aを利用したいユーザが端末Aを用いて、移動体Aに搭載されている移動体装置Aに対して不正処理を行うとして説明する。
【0324】
図33に示すステップS10~ステップS12は、図23で説明したステップS10~ステップS12と同じ処理であるので説明を省略する。また、図34A図34Cは、図24A図24Cと同一の図であるので説明を省略する。
【0325】
次に、ステップS13Aにおいて、例えば端末Aは、オフライン状態の移動体装置Aと通信し、移動体Aの返却処理を行う。つまり、端末Aは、オフライン状態の移動体装置Aに対して移動体Aをローカル返却する返却処理を行う。より具体的には、端末Aを操作したユーザは、解錠された移動体Aを、利用予約した時間利用して、その後返却する。移動体装置Aは、移動体Aが返却されると、移動体Aの返却完了を示す返却トランザクションデータTrtnAを生成する。この場合、例えば、図34Dに示すように、移動体装置Aはオフライン状態であるので、台帳Aのみに、移動体Aの返却完了を示す返却トランザクションデータTrtnAを含むブロックが格納される。
【0326】
次に、ユーザは移動体装置Aをオンライン状態に復帰させるとする。すると、移動体装置Aがオンライン状態に復帰した時に、システムにおいて復帰時処理が行われる(S14A)。より具体的には、ステップS10~ステップS13Aでは、移動体装置Aがオフライン状態であるため、移動体装置Aがオンライン状態に復帰した時点では、例えば図34Dに示すように、台帳A及び台帳Bのブロックチェーンには、異なるブロックが連結されている。次いで、移動体装置Aがオンライン状態に復帰すると、図35に示すように、移動体装置Aの台帳A及び移動体装置Bの台帳Bには、異なるブロックチェーンを共有し合うことになりフォークが発生する。ここで、オフライン状態の移動体装置Aの台帳Aのブロックチェーンに連結されたブロックの方が短いため側鎖ブロックに該当し、オンライン状態の移動体装置Bの台帳Bのブロックチェーンに連結されたブロックが長いので主鎖ブロックに該当する。このため、図36の(a)及び(b)に示すように、移動体装置Aの台帳A及び移動体装置Bの台帳Bでは、側鎖ブロックが削除され、側鎖ブロックに含まれるトランザクションデータがトランザクションプールに保存されることで、フォークが解消される。なお、図36の(b)では、予約トランザクションデータTrsvAと貸出トランザクションデータTrntAと返却トランザクションデータTrtnAとがトランザクションプールに保存されている。その後、図36の(c)に示すように、移動体装置Aの台帳A及び移動体装置Bの台帳Bのブロックチェーンでは、新たなブロックを生成するタイミングで、トランザクションプールに保存されたトランザクションデータを含むブロックが生成されて連結される。
【0327】
次に、移動体装置Aなどでは、料金算定処理を行う(S15)。比較例の第3例と同様、予約トランザクションデータTrsvAと予約トランザクションデータTrsvBとが競合しており、予約トランザクションデータTrsvAを含むブロックの方が、予約トランザクションデータTrsvBを含むブロックよりも後ろに連結される。この結果、予約トランザクションデータTrsvAに対応する予約に対しての料金は徴収されないので、予約トランザクションデータTrsvAに対応する予約において移動体Aを利用した料金を払わないという不正が成立する。
【0328】
続いて、図33に示すステップS13Aのローカル返却の処理、ステップS14Aの移動体装置Aの通信復帰時の処理の詳細についてシーケンス図を用いて説明する。
【0329】
[比較例の第4例に係る返却処理]
図37は、比較例の第4例に係るシステムのローカル返却の処理を示すシーケンス図である。図20と同様の要素には同様の符号を付しており、詳細な説明は省略する。
【0330】
まず、移動体Aを利用したユーザにより移動体Aが返却されると、移動体装置Aは、移動体Aが返却されたことを確認する(S501C)。
【0331】
次に、移動体装置Aは、移動体Aが返却されたことを確認したことをトリガに、移動体Aの返却完了を示す返却トランザクションデータTrtnAを生成する(S502C)。
【0332】
次に、移動体装置Aは、他の移動体装置である移動体装置B、Cに返却トランザクションデータTrtnAを転送することを試みるが、失敗する(S503C)。移動体装置Aはオフライン状態であるため、移動体装置B、Cに返却トランザクションデータTrtnAを転送できないからである。
【0333】
次に、移動体装置Aは、取得した返却トランザクションデータTrtnAの正当性を含む検証を行う検証アルゴリズムを実行する(S504C)。
【0334】
次に、移動体装置Aは、ステップS504Cで実行された検証アルゴリズムにより検証済みの返却トランザクションデータTrtnAをトランザクションプールaに格納する(S505C)。
【0335】
次に、移動体装置Aは、検証済みの返却トランザクションデータTrtnAを含むブロックBlc(TrtnA)を生成する(S506C)。
【0336】
次に、移動体装置Aは、他の移動体装置である移動体装置B、Cに、ステップS506Cで生成したブロックBlc(TrtnA)を送信することを試みるが、失敗する(S507C)。移動体装置Aはオフライン状態であるため、移動体装置B、CにブロックBlc(TrtnA)を送信できないからである。
【0337】
次に、移動体装置Aは、単独でコンセンサスアルゴリズムを実行する(S508C)。具体的には、移動体装置Aは、返却トランザクションデータTrtnAが正当なトランザクションデータであること(つまり正当性)を単独で合意し、ブロックBlc(TrtnA)の正当性を単独で合意する。なお、ステップS506Cの処理は、ステップS508Cでコンセンサスアルゴリズムを実行する際に行われてもよい。
【0338】
次に、移動体装置Aは、ステップS508Cで合意済みのブロックBlc(TrtnA)を台帳A内のブロックチェーンに連結する(S509C)。これにより、図34Dに示すように、台帳Aのみに、返却トランザクションデータTrtnAを含むブロックが格納され、移動体Aのローカル返却が記録されることになる。
【0339】
次に、移動体装置Aは、ブロックチェーンに格納された予約情報をチェックする(S510C)。より具体的には、移動体装置A、B、Cはそれぞれ、返却トランザクションデータTrtnAが自身の台帳内のブロックチェーンに連結されることで、予約スマートコントラクトを実行させて、ブロックチェーンに格納された予約情報として予約トランザクションデータTrsvAがあることを確認する。
【0340】
そして、移動体装置Aはそれぞれ、料金算定アルゴリズムを実行する(S511C)。移動体装置Aはオフライン状態であるので、料金算定アルゴリズムにより、予約トランザクションデータTrsvAに対応する予約に対しての料金が算定されることになる。
【0341】
[比較例の第4例に係る移動体装置Aの通信復帰時の処理]
続いて、図33に示すステップS14Aの移動体装置Aの通信復帰時の処理の詳細について説明する。
【0342】
図38は、比較例の第4例に係る移動体装置Aの通信復帰時に行われるシステムの処理を示すシーケンス図である。図21と同様の要素には同様の符号を付しており、詳細な説明は省略する。
【0343】
まず、移動体装置Aは、他の移動体装置である移動体装置B、Cと通信可能(オンライン状態)に復帰したとする(S601C)。
【0344】
すると、移動体装置Aは、他の移動体装置である移動体装置B、Cに、移動体装置Aがオンライン状態になったことを示す信号を送信する(S602C)。
【0345】
次に、移動体装置A、B、Cは、各台帳内のブロックチェーンの異同判定を行う(S603C)。移動体装置Aの通信復帰の前では、例えば図34Dに示す例のように、台帳Aと、台帳B、Cとのブロックチェーンには異なるブロックが連結されているので、台帳A内のブロックチェーンと台帳B、C内のブロックチェーンとは異なる。このため、移動体装置Aの通信復帰時には、例えば図35に示す例のように、移動体装置A、B、Cの台帳A、B、Cでは、異なるブロックチェーンを共有し合うのでフォークが発生する。
【0346】
次に、移動体装置A、B、Cは、側鎖ブロックと主鎖ブロックとに該当するブロックについての情報を送信しあう(S604C、S605C)。本比較例では、一定時間オフライン状態であった移動体装置Aの台帳Aのブロックチェーンに連結されたブロックは側鎖ブロックBlc(TrsvA、TrntA、TrtnA)に該当する。一方、移動体装置B、Cの台帳B、Cのブロックチェーンに連結されたブロックは主鎖ブロックBlc(TrsvB)に該当することになる。
【0347】
次に、移動体装置A、B、Cはそれぞれ、ステップS604Cで得た側鎖ブロックのトランザクションデータTrsvA、TrntA、TrtnAをトランザクションプールに格納する(S606C)。
【0348】
次に、移動体装置A、B、Cはそれぞれ、台帳A、B、Cのブロックチェーンと同一となるように更新する(S607C)。より具体的には、移動体装置A、B、Cはそれぞれ、ブロックチェーンに連結されていた側鎖ブロックを削除し、主鎖ブロックを残すことで、台帳A、B、Cのブロックチェーンが同一となるように台帳Aのブロックチェーンを更新する。
【0349】
次に、所定時間後のブロック生成タイミングにおいて、移動体装置A、B、Cはそれぞれ、トランザクションプールに格納しているトランザクションデータTrsvA、TrntA、TrtnAを含むブロックBlc(TrsvA、TrntA、TrtnA)を生成する(S614C)。
【0350】
次に、移動体装置A、B、Cはそれぞれ、他の移動体装置に、ステップS614Cで生成したブロックBlc(TrsvA、TrntA、TrtnA)を送信する(S615C)。これにより、移動体装置A、B、Cはそれぞれ、他の移動体装置に、ブロックBlc(TrsvA、TrntA、TrtnA)に含まれるトランザクションデータTrsvA、TrntA、TrtnAの正当性の検証が成功したことの報告を通知することができる。
【0351】
次に、移動体装置A、B、Cは、共同でコンセンサスアルゴリズムを実行する(S616C)。具体的には、移動体装置A、B、Cはそれぞれ、ステップS615Cで通知された報告に基づき、トランザクションデータTrsvA、TrntA、TrtnAが正当なトランザクションデータであること(つまり正当性)を合意する。そして、ブロックBlc(TrsvA、TrntA、TrtnA)の正当性を合意する。なお、ステップS614C及びステップS615Cの処理は、ステップS616Cでコンセンサスアルゴリズムを実行する際に行われてもよい。
【0352】
次に、移動体装置A、B、Cはそれぞれ、ステップS616で合意済みのブロックBlc(TrsvA、TrntA、TrtnA)を分散台帳内のブロックチェーンに連結する(S617C)。より具体的には、移動体装置Aは、合意済みのブロックBlc(TrsvA、TrntA、TrtnA)を台帳A内のブロックチェーンに連結し、移動体装置Bは、合意済みのブロックBlc(TrsvA、TrntA、TrtnA)を台帳B内のブロックチェーンに連結する。移動体装置Cは、合意済みのブロックBlc(TrsvA、TrntA、TrtnA)を台帳C内のブロックチェーンに連結する。これにより、図36の(c)に示すように、予約トランザクションデータTrsvAと貸出トランザクションデータTrntAと返却トランザクションデータTrtnAとを含むブロックが格納され、移動体Aのローカル予約、ローカル貸出及びローカル返却が記録されることになる。
【0353】
次に、移動体装置Aは、ブロックチェーンに格納された予約情報をチェックする(S620C)。より具体的には、移動体装置A、B、Cはそれぞれ、返却トランザクションデータTrtnAを含むブロックが自身の台帳内のブロックチェーンに連結されることで、予約スマートコントラクトを実行させて、ブロックチェーンに格納された予約情報として予約トランザクションデータTrsvAと予約トランザクションデータTrsvBとがあることを確認する。
【0354】
そして、移動体装置A、B、Cはそれぞれ、料金算定アルゴリズムを実行しない(S621C)。より具体的には、移動体装置A、B、Cはそれぞれ、料金算定アルゴリズムを実行するが、予約トランザクションデータTrsvAに対応する予約に対しての料金は徴収されない。なお、ステップS621Cの処理は、上述したステップS511Bの処理と同じであるので説明を省略する。
【0355】
ここでは、例えば図36の(c)に示すように、予約トランザクションデータTrsvAに対応する予約と予約トランザクションデータTrsvBとに対応する予約とが競合している。また、予約トランザクションデータTrsvAを含むブロックの方が、予約トランザクションデータTrsvBを含むブロックよりも後ろに連結されている。このため、料金算定アルゴリズムを実行されても、予約トランザクションデータTrsvAに対応する予約に対しての料金は徴収されず、予約トランザクションデータTrsvBに対応する予約に対しての料金のみが徴収されることになる。
【0356】
このように、予約トランザクションデータTrsvAに対応する予約に対しての料金は徴収されないので、予約トランザクションデータTrsvAに対応する予約において移動体Aを利用した料金を払わないという不正が成立する。
【0357】
[本実施の形態に係る不正対策後の処理]
続いて、不正処理の対策を行った本実施の形態に係る不正対策処理について説明する。
【0358】
図23及び図33に示される不正処理では、ステップS11で競合予約が行われることにより、ステップS10で予約処理されたローカル予約に対する料金が徴収されなかった。このため、本実施の形態では、ステップS11で行われた競合予約を破棄せずに、競合予約を含む追加ブロックを生成し、ブロックチェーンに格納することでブロックチェーンを更新した上で、更新後の第1ブロックチェーンに競合予約があるか否かを判定することで、競合予約を検知することができる。
【0359】
本実施の形態では、不正対策処理として、移動体装置Aの通信復帰時の処理において、不正予約検知処理を実行させる。以下では、移動体装置Aの通信復帰時の処理におけるコンセンサスアルゴリズムの実行の際に、不正予約検知処理を実行する場合について説明する。
【0360】
図39は、実施の形態に係る移動体装置Aの通信復帰時に行われるシステムの処理を示すシーケンス図である。図21と同様の要素には同様の符号を付しており、詳細な説明は省略する。図39に示すシーケンス図は、図21に示すシーケンス図と比較すると、コンセンサスアルゴリズムの実行の際に、不正予約検知処理を実行している点が異なる。
【0361】
すなわち、図39に示すステップ601E~ステップS615Eの処理は、図21に示すステップ601~ステップS615の処理と同様のため、ここでの説明を省略する。
【0362】
ステップS615Eにおいて、移動体装置A、B、Cは、共同でコンセンサスアルゴリズムを実行する(S616E)。本実施の形態では、動体装置A、B、Cはそれぞれ、ステップS615で通知された報告に基づき、トランザクションデータTpolが正当なトランザクションデータであること(つまり正当性)を合意するコンセンサスアルゴリズムの実行の際に、不正予約検知処理を実行する。
【0363】
不正予約検知処理では、移動体装置A、B、Cはそれぞれ、自身の台帳のブロックチェーン内を検索し、不正な契約を含む不正なトランザクションデータが格納されているか否かを検知する。具体的には、不正予約検知処理は、不正検知部110の機能として説明した不正検知処理と同じである。
【0364】
次に、コンセンサスアルゴリズムの実行の際に、不正予約が検知されなかった場合、移動体装置A、B、Cはそれぞれ、ステップS615Eで合意済みのブロックBlc(Tpolv)を分散台帳内のブロックチェーンに連結する(S617E)。
【0365】
また、不正予約があったことを検知した場合には、不正なトランザクションデータが検知されたことを示すインシデントレポートを作成して保存してもよい。
【0366】
図40は、実施の形態に係る不正予約検知処理を説明するためのフローチャートである。図40に示す本実施の形態に係る不正予約検知処理は、図39のステップS616Eにおいて実行される。以下では、代表して移動体装置Aで不正予約検知処理が行われる場合について説明する。
【0367】
本実施の形態では、図39のステップS616Eにおいて、まず、移動体装置Aは、不正チェックのトリガがあるかを確認する(S6161)。このトリガは、一定間隔が経過したことでもよいし、台帳Aのブロックチェーンに新たにブロックが連結されたことであってもよい。
【0368】
ステップS6161において、トリガがあったときには(S6161でYes)、移動体装置Aは、台帳Aのブロックチェーン内を検索する(S6162)。なお、ステップS6162において、トリガがないときには(S6162でNo)、移動体装置Aは、ステップS6162に戻る。
【0369】
次に、移動体装置Aは、台帳Aのブロックチェーン内に、不正な契約を含む不正なトランザクションデータが格納されているか否かを判定する(S6163)。この判定は、例えば、不正検知部110により行われる、第1の不正判定、第2の不正判定、及び、第3の不正判定の少なくともいずれか1つである。
【0370】
ステップS6163において、不正なトランザクションデータがあったときには(S6163でYes)、移動体装置Aは、インシデントレポートを作成して保存する(S6164)。
【0371】
図41は、実施の形態に係る不正予約検知処理を実行してインシデントレポートを作成したときに行われるシステムの処理を示すシーケンス図である。図39と同じ動作には同一の符号を付しており、詳細な説明は省略する。図41では、ステップS616Eにおいて、移動体装置A、B、Cは、共同でコンセンサスアルゴリズムを実行した際に行われた不正予約検知処理においてインシデントレポートを作成した後の処理が示されている。
【0372】
すなわち、図41に示すように、ステップS615Eにおいて、移動体装置A、B、Cは、共同でコンセンサスアルゴリズムを実行する(S616E)。本変形例では、動体装置A、B、Cはそれぞれ、コンセンサスアルゴリズムの実行の際に、不正予約検知処理を実行する。図41に示す例では、不正予約検知処理を実行すると、予約のない時間に発行された解錠完了トランザクションデータが検知され、不正予約があったことを検知したとしている。このため、移動体装置A、B、Cは、解錠完了トランザクションデータが検知されたことを示すインシデントレポートを作成する。
【0373】
次に、例えば移動体装置Bは、代表して、作成したインシデントレポートを記録するためのトランザクションデータTincを生成する(S622E)。なお、移動体装置BがトランザクションデータTincを生成する場合に限らず、移動体装置Aまたは移動体装置CがトランザクションデータTincを生成してもよい。
【0374】
次に、移動体装置Bは、他の移動体装置である移動体装置A、CにトランザクションデータTincを転送する(S623E)。これにより、移動体装置A、Cは、トランザクションデータTincを取得する。
【0375】
次に、移動体装置A、B、Cはそれぞれ、トランザクションデータTincの検証を行う検証アルゴリズムを実行する(S624E)。
【0376】
次に、移動体装置A、B、Cはそれぞれ、ステップS624Eで検証済みのトランザクションデータTincを台帳に格納する(S625E)。より具体的には、移動体装置Aは、検証済みのトランザクションデータTincを台帳Aに格納し、移動体装置Bは、検証済みのトランザクションデータTincを台帳Bに格納する。移動体装置Cは、検証済みのトランザクションデータTincを台帳C内に格納する。
【0377】
これにより、台帳A、台帳B及び台帳Cには共に、トランザクションデータTincが格納され、インシデントレポートが記録されることになる。
【0378】
図42は、実施の形態に係る不正リスト生成処理を実行するときに行われるシステムの処理を示すシーケンス図である。
【0379】
まず、端末Aは、不正リスト生成処理を実行させるための不正リスト生成スマートコントラクトを含む不正リストトランザクションデータを生成する(S701)。ここで、端末Aすなわち端末11Aには、入力部1101としてアプリケーションが導入されており、アプリケーションがユーザの操作に基づいて不正リストトランザクションデータを生成してよい。
【0380】
次に、端末Aは、移動体Aの移動体装置Aと通信し、ステップS701で生成した不正リストトランザクションデータを移動体装置Aに送信する(S702)。
【0381】
次に、移動体装置Aは、ステップS702で送信された不正リストトランザクションデータを受信すると、他の移動体装置である移動体装置B、Cに不正リストトランザクションデータを転送する(S703)。これにより、移動体装置B、Cは、不正リストトランザクションデータを取得する。
【0382】
次に、移動体装置A、B、Cはそれぞれ、不正リストトランザクションデータの正当性の検証した後に正当性が検証された不正リストトランザクションデータを含むブロックを生成し、生成したブロックについて共同でコンセンサスアルゴリズムを実行する(S704)。ステップS704の具体的な処理は、ステップS104~S109と同様の処理である。これにより、不正リスト生成スマートコントラクトを含む不正リストトランザクションデータは、分散台帳記憶部108に記憶されている分散台帳で管理されているブロックチェーンに格納される。
【0383】
その後、移動体装置A、B、Cは、それぞれ、それぞれの台帳A、B、Cのブロックチェーン内に、不正な契約を含む不正なトランザクションデータが格納されているか否かを判定する(S705)。この判定は、例えば、不正検知部110により行われる、第1の不正判定、第2の不正判定、及び、第3の不正判定の少なくともいずれか1つである。
【0384】
それぞれの台帳A、B、Cのブロックチェーン内に、不正な契約を含む不正なトランザクションデータが格納されていると判定した場合(S705でYes)、移動体装置A、B、Cは、それぞれ、不正リスト生成スマートコントラクトに不正予約を追加する関数を実行する不正リスト生成実行トランザクションデータを生成する(S706)。つまり、移動体装置A、B、Cは、それぞれ、不正リスト生成スマートコントラクトを動作させるための不正リスト生成実行トランザクションデータを生成する。なお、それぞれの台帳A、B、Cのブロックチェーン内に、不正な契約を含む不正なトランザクションデータが格納されていないと判定した場合(S705でNo)、この処理を終了する。
【0385】
なお、ステップS705の判定は、図40で説明した不正予約検知処理が実行されるタイミングと同じタイミングで行われてもよい。
【0386】
次に、移動体装置A、B、Cは、ステップS706で生成された不正リスト生成実行トランザクションデータを他の移動体装置へ送信する(S707)。これにより、移動体装置A、B、Cのそれぞれは、他の移動体装置で生成された不正リスト生成実行トランザクションデータを取得する。
【0387】
次に、移動体装置A、B、Cはそれぞれ、不正リスト生成実行トランザクションデータの正当性の検証した後に正当性が検証された不正リスト生成実行トランザクションデータを含むブロックを生成し、生成したブロックについて共同でコンセンサスアルゴリズムを実行する(S708)。ステップS708の具体的な処理は、ステップS104~S109と同様の処理である。これにより、不正リスト生成実行トランザクションデータは、分散台帳記憶部108に記憶されている分散台帳で管理されているブロックチェーンに格納される。
【0388】
次に、移動体装置A、B、Cはそれぞれ、不正リスト生成処理を実行する(S709)。より具体的には、移動体装置A、B、Cはそれぞれ、不正リスト生成実行トランザクションデータを含むブロックが自身の台帳内のブロックチェーンに連結されることで、不正リスト生成スマートコントラクトを実行させて、不正と判定されたトランザクションデータのトランザクションデータID、ユーザID、不正なトランザクションデータが生成された時刻等を不正リストに追加する。
【0389】
[効果等]
以上のように、本実施の形態によれば、1以上の第1差異ブロックと1以上の第2差異ブロックとのうちで少ない方に含まれる1以上のトランザクションデータを第1ブロックチェーンに格納することで第1ブロックチェーンを更新した上で、更新後の第1ブロックチェーンに不正な契約情報があるか否かを判定する。このため、不正な契約情報を検知することができ、ブロックチェーンを悪用したサービス対象の不正利用を抑制できる。
【0390】
また、本実施の形態において、不正なトランザクションデータがブロックチェーンに格納されていると判定した場合、不正なトランザクションデータを検知したことを示すインシデントレポートを生成する。インシデントレポートには、不正なトランザクションデータに関する情報、不正の理由などを含む。インシデントレポートを生成することで、どのような不正が行われたかを記録しておくことができる。
【0391】
また、本実施の形態において、不正なトランザクションデータ、又は、不正なトランザクションデータを識別するトランザクションデータIDを含む不正リストを生成する。このため、ユーザは、例えば、端末を操作することで、不正なトランザクションデータであると判定されたトランザクションデータを検索することができる。また、不正リストを用いてどのような不正が行われたかを分析し、有効な対策を立てることに活用することができる。
【0392】
[その他の実施の形態等]
以上のように、本開示について上記の実施の形態に基づいて説明してきたが、本開示は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本開示に含まれる。
【0393】
(1)上記の実施の形態では、サービス対象として、移動体を例に挙げて説明したがこれに限らない。サービス対象は、サービスが利用されないときには他のユーザが利用できないようにロックされていて、サービスを利用する際にロックが解除されるものであればよく、例えばホテルの部屋、電子ロッカーでもよい。また、契約は、例えば移動体10の利用予約に限らず、例えばホテルの部屋の利用予約、電子ロッカーの利用予約でもよい。
【0394】
(2)上記の実施の形態における各装置は、具体的には、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記RAMまたはハードディスクユニットには、コンピュータプログラムが記録されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
【0395】
(3)上記の実施の形態における各装置は、構成する構成要素の一部または全部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されているとしてもよい。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM、RAMなどを含んで構成されるコンピュータシステムである。前記RAMには、コンピュータプログラムが記録されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、システムLSIは、その機能を達成する。
【0396】
また、上記の各装置を構成する構成要素の各部は、個別に1チップ化されていても良いし、一部またはすべてを含むように1チップ化されてもよい。
【0397】
また、ここでは、システムLSIとしたが、集積度の違いにより、IC、LSI、スーパーLSI、ウルトラLSIと呼称されることもある。また、集積回路化の手法はLSIに限るものではなく、専用回路または汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。
【0398】
さらには、半導体技術の進歩または派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてありえる。
【0399】
(4)上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なICカードまたは単体のモジュールから構成されているとしてもよい。前記ICカードまたは前記モジュールは、マイクロプロセッサ、ROM、RAMなどから構成されるコンピュータシステムである。前記ICカードまたは前記モジュールは、上記の超多機能LSIを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ICカードまたは前記モジュールは、その機能を達成する。このICカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
【0400】
(5)本開示は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
【0401】
また、本開示は、前記コンピュータプログラムまたは前記デジタル信号をコンピュータで読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD-ROM、MO、DVD、DVD-ROM、DVD-RAM、BD(Blu-ray(登録商標) Disc)、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記デジタル信号であるとしてもよい。
【0402】
また、本開示は、前記コンピュータプログラムまたは前記デジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
【0403】
また、本開示は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記録しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。
【0404】
また、前記プログラムまたは前記デジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記デジタル信号を、前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
【0405】
(6)上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
【産業上の利用可能性】
【0406】
本開示は、制御方法、制御装置、及び、プログラムに利用でき、例えば自転車、自動二輪車などの移動体のシェアリングサービスなどでユーザが移動体利用のための契約を行う場合に、料金を払わない不正利用を抑制することができる制御方法、御方法、制御装置、及び、プログラムなどに利用可能である。
【符号の説明】
【0407】
1 システム
10、10A、10B、10C 移動体
11、11A、11B、11C 端末
20 管理サーバ
100 移動体装置
101、1101 入力部
102 トランザクションデータ生成部
103 トランザクションデータ検証部
104 ブロック生成部
105 同期部
106 スマートコントラクト実行部
107 ブロックチェーン管理部
108 分散台帳記憶部
109 状態記憶部
110 不正検知部
111、1103 通信部
112、1102 表示部
図1
図2A
図2B
図2C
図2D
図2E
図2F
図3A
図3B
図3C
図4
図5A
図5B
図5C
図6
図7
図8
図9A
図9B
図9C
図10
図11
図12
図13
図14
図15A
図15B
図15C
図16
図17
図18
図19
図20
図21
図22
図23
図24A
図24B
図24C
図25
図26
図27
図28
図29
図30
図31
図32
図33
図34A
図34B
図34C
図34D
図35
図36
図37
図38
図39
図40
図41
図42