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

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

▶ 富士通株式会社の特許一覧

特許7568898通信プログラム、通信方法、及び通信装置
<>
  • 特許-通信プログラム、通信方法、及び通信装置 図1
  • 特許-通信プログラム、通信方法、及び通信装置 図2
  • 特許-通信プログラム、通信方法、及び通信装置 図3
  • 特許-通信プログラム、通信方法、及び通信装置 図4
  • 特許-通信プログラム、通信方法、及び通信装置 図5
  • 特許-通信プログラム、通信方法、及び通信装置 図6
  • 特許-通信プログラム、通信方法、及び通信装置 図7
  • 特許-通信プログラム、通信方法、及び通信装置 図8
  • 特許-通信プログラム、通信方法、及び通信装置 図9
  • 特許-通信プログラム、通信方法、及び通信装置 図10
  • 特許-通信プログラム、通信方法、及び通信装置 図11
  • 特許-通信プログラム、通信方法、及び通信装置 図12
  • 特許-通信プログラム、通信方法、及び通信装置 図13
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-08
(45)【発行日】2024-10-17
(54)【発明の名称】通信プログラム、通信方法、及び通信装置
(51)【国際特許分類】
   G06F 16/182 20190101AFI20241009BHJP
   G06Q 50/00 20240101ALI20241009BHJP
   G06F 21/64 20130101ALI20241009BHJP
【FI】
G06F16/182
G06Q50/00
G06F21/64
【請求項の数】 13
(21)【出願番号】P 2020139858
(22)【出願日】2020-08-21
(65)【公開番号】P2022035494
(43)【公開日】2022-03-04
【審査請求日】2023-05-11
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100094525
【弁理士】
【氏名又は名称】土井 健二
(74)【代理人】
【識別番号】100094514
【弁理士】
【氏名又は名称】林 恒徳
(72)【発明者】
【氏名】西間木 哲
【審査官】齊藤 貴孝
(56)【参考文献】
【文献】特開2020-035214(JP,A)
【文献】特開2004-213477(JP,A)
【文献】特開2020-046993(JP,A)
【文献】国際公開第2018/124297(WO,A1)
【文献】特開2020-067806(JP,A)
【文献】特開2020-112916(JP,A)
【文献】特開2020-123188(JP,A)
【文献】国際公開第2018/225428(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
G06Q 10/00-99/00
G06F 21/00-21/88
(57)【特許請求の範囲】
【請求項1】
データの流通に関する履歴を分散台帳で管理するデータ流通システムに参加する通信装置が有するプログラムであって、
第1データに関する第1処理を実行したとき、前記第1処理の実行前に行った前記第1データに関する処理の履歴の識別子である元識別子と、前記第1処理の履歴の識別子である次回識別子とを対応づけたポインタ情報を、ポインタテーブルに記憶する記憶処理と、
前記ポインタテーブルの内容を、他の通信装置と同期する同期処理とを、実行させるプログラムであって、
前記第1処理は、前記第1データの取得の要求及び承諾を行う取引処理、及び前記取引処理に応じて前記第1データを取得する取得処理を含み、前記取引処理及び前記取引処理に対応するポインタ情報も、前記ポインタテーブルに記憶する、
前記通信装置が有するコンピュータに実行させる通信プログラム。
【請求項2】
前記記憶処理において、さらに、前記次回識別子に対応する処理を実行した履歴の管理URL(Uniform Resource Locator)を、前記ポインタ情報に含め前記ポインタテーブルに記憶する
請求項1記載の通信プログラム。
【請求項3】
さらに、第2データに関する処理の履歴の識別子を前記元識別子として有する前記ポインタ情報を前記ポインタテーブルから検出し、前記検出したポインタ情報の次回識別子を取得し、前記第2データに関する処理の履歴を追跡する追跡処理とを、
前記通信装置が有するコンピュータに実行させる請求項1記載の通信プログラム。
【請求項4】
前記第1処理は、前記第1データの取得の要求及び承諾を行う取引処理、及び前記取引処理に応じて前記第1データを取得する取得処理を含む
請求項1記載の通信プログラム。
【請求項5】
前記第1処理は、前記第1データを加工する加工処理を含む
請求項4記載の通信プログラム。
【請求項6】
前記記憶処理において、前記取引処理又は前記取得処理の実行時に、前記取引処理及び前記取得処理に関する識別子を含むポインタ情報と、前記加工処理に関する識別子を含むポインタ情報を、前記ポインタテーブルに記憶する
請求項5記載の通信プログラム。
【請求項7】
前記記憶処理において、前記取得処理の実行後、前記加工処理が自装置内で複数回実行される場合、前記取得処理の履歴の識別子を元識別子とし、前記複数回のうち最後に実行された前記加工処理の履歴の識別子を次回識別子として対応づけた前記ポインタ情報を、前記ポインタテーブルに記憶し、前記複数回のうち前記最後に実行された前記加工処理以外の前記加工処理の履歴の識別子を、前記ポインタテーブルに記憶しない
請求項5記載の通信プログラム。
【請求項8】
前記ポインタテーブルは、前記分散台帳に含まれ、
前記同期処理は、前記分散台帳の同期に伴い実行される
請求項1記載の通信プログラム。
【請求項9】
前記記憶処理において、さらに、前記元識別子に対応する処理を実行した履歴の管理URLを、前記ポインタ情報として前記ポインタテーブルに記憶する
請求項2記載の通信プログラム。
【請求項10】
さらに、第1管理URLが複数のポインタ情報に存在する場合、前記複数のポインタ情報のうち最後に前記ポインタテーブルに記憶されたポインタ情報以外のポインタ情報を、前記ポインタテーブルから削除する削除処理を、
前記通信装置が有するコンピュータに実行させる請求項2記載の通信プログラム。
【請求項11】
さらに、第2管理URLが複数のポインタ情報に存在する場合、前記複数のポインタ情報のうち最初に前記ポインタテーブルに記憶されたポインタ情報以外のポインタ情報を、前記ポインタテーブルから削除する第2削除処理を、
前記通信装置が有するコンピュータに実行させる請求項2記載の通信プログラム。
【請求項12】
データの流通に関する履歴を分散台帳で管理するデータ流通システムに参加する通信装置であって、
第1データに関する第1処理を実行したとき、前記第1処理の実行前に行った前記第1データに関する処理の履歴の識別子である元識別子と、前記第1処理の履歴の識別子である次回識別子とを対応づけたポインタ情報を、ポインタテーブルに記憶する記憶部と、
前記ポインタテーブルの内容を、他の通信装置と同期する同期部と、を有し、
前記第1処理は、前記第1データの取得の要求及び承諾を行う取引処理、及び前記取引処理に応じて前記第1データを取得する取得処理を含み、
前記記憶部は、前記取引処理及び前記取引処理に対応するポインタ情報も、前記ポインタテーブルに記憶する、
通信装置。
【請求項13】
データの流通に関する履歴を分散台帳で管理するデータ流通システムに参加する通信装置の有するコンピュータに実行させる通信方法であって、
第1データに関する第1処理を実行したとき、前記第1処理の実行前に行った前記第1データに関する処理の履歴の識別子である元識別子と、前記第1処理の履歴の識別子である次回識別子とを対応づけたポインタ情報を、ポインタテーブルに記憶し、
前記ポインタテーブルの内容を、他の通信装置と同期し、
前記第1処理は、前記第1データの取得の要求及び承諾を行う取引処理、及び前記取引処理に応じて前記第1データを取得する取得処理を含み、前記取引処理及び前記取引処理に対応するポインタ情報も、前記ポインタテーブルに記憶する
通信方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、通信プログラム、通信方法、及び通信装置に関する。
【背景技術】
【0002】
近年、様々な業種の企業間で、データ連携をする仕組みが注目されている。例えば、これまで分断されていた製薬会社、医薬品卸会社、医療機関でやりとりされる医薬品の流通情報や投薬情報を連携させる仕組みがあり、業務の効率化や投薬実績に基づく適正な利益分配を実現する。
【0003】
一方、他組織とやり取りするデータは、不正な加工や改ざんを施されていないことを証明するため、データのトレーサビリティを保証する必要がある。
【0004】
データのトレーサビリティに関する技術は、以下のようなものがある。
【先行技術文献】
【特許文献】
【0005】
【文献】特開2004-213477号公報
【文献】特開2009-123050号公報
【文献】特開2018-160828号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかし、例えば、加工されたデータに加工元データに関する情報を添付することで履歴を示す方式の場合、データの生成元まで履歴をたどることは、全履歴を順番にさかのぼっていかなければならず、時間がかかり、処理負荷が大きい。
【0007】
また、このような方式の場合、例えば、データを生成した企業が、生成したデータがどのように使用、加工されているかを確認するとき、システム内の全企業に対してブロードキャスト通信で問い合わせを行うこととなり、時間がかかり、ネットワークへの負荷も大きい。
【0008】
そこで、一開示は、データトレーサビリティを効率的に行うことができる、通信プログラム、通信方法、及び通信装置を提供する。
【課題を解決するための手段】
【0009】
一開示は、データの流通に関する履歴を分散台帳で管理するデータ流通システムに参加する通信装置が有するプログラムであって、第1データに関する第1処理を実行したとき、前記第1処理の実行前に行った前記第1データに関する処理の履歴の識別子である元識別子と、前記第1処理の履歴の識別子である次回識別子とを対応づけたポインタ情報を、ポインタテーブルに記憶する記憶処理と、前記ポインタテーブルの内容を、他の通信装置と同期する同期処理とを、前記通信装置が有するコンピュータに実行させる。
【発明の効果】
【0010】
一開示は、データトレーサビリティを効率的に行うことができる。
【図面の簡単な説明】
【0011】
図1図1は、データ流通システム1の構成例を示す図である。
図2図2は、GWサーバ300の構成例を表す図である。
図3図3は、データ流通のシーケンスの例を示す図である。
図4図4は、データ取得処理S102完了後のポインタテーブル332の例を示す図である。
図5図5は、データ加工処理S104完了後のポインタテーブル332の例を示す図である。
図6図6は、データ取得処理S106完了後のポインタテーブル332の例を示す図である。
図7図7は、ポインタテーブルの更新タイミングの例を示す図である。
図8図8は、ポインタテーブル332の例を示す図である。
図9図9は、ポインタテーブル332の例を示す図である。
図10図10は、過去方向の履歴が追跡可能となる方式の例を示す図である。
図11図11は、元レコード管理URLを記憶するポインタテーブル332の例を示す図である。
図12図12は、削除更新したポインタテーブル332の例を示す図である。
図13図13は、削除更新したポインタテーブル332の例を示す図である。
【発明を実施するための形態】
【0012】
[第1の実施の形態]
第1の実施の形態について説明する。
【0013】
<データ流通システム1の構成例>
図1は、データ流通システム1の構成例を示す図である。データ流通システム1は、ユーザ100-1~3、ネットワーク200、及びGW(GateWay)サーバ300-1~3を有する。データ流通システム1は、ユーザ100-1~3が、GWサーバ300-1~3を使用し、データを流通(送受信)する通信システムである。データ流通システム1は、例えば、ブロックチェーンを使用した通信システムであり、GWサーバ300-1~3のそれぞれが分散台帳を有する。分散台帳は、例えば、取引履歴、公開データ情報などの情報を記憶する台帳であり、各GWサーバ300が同等の情報を共有する。データ流通システム1において、各GWサーバの分散台帳は同期しており、例えば、あるGWサーバ300の分散台帳が更新されると、他のGWサーバ300の分散台帳も更新される。
【0014】
ユーザ100-1~3(以降、ユーザ100と呼ぶ場合がある)は、GWサーバ300-1~3(以降、GWサーバ300と呼ぶ場合がある)のユーザであり、例えば、GWサーバ300を有する企業や企業内の管理者である。ユーザ100は、GWサーバ300を使用し、他のGWサーバ300と通信を行い、データの送受信を行う。
【0015】
GWサーバ300は、分散台帳を有する通信装置であり、例えば、コンピュータやサーバマシンである。GWサーバ300は、ネットワーク200を介して、他のGWサーバ300と通信を行う。また、GWサーバ300は、ネットワーク200を介して、分散台帳を同期させる。
【0016】
ネットワーク200は、例えば、IP(Internet Protocol)アドレスなどを使用し、GWサーバ300間にデータを含むパケットを送受信する、インターネットやローカルネットワークである。
【0017】
データ流通システム1において、GWサーバ300は、データを生成すると、生成したデータを分散台帳に登録し、他のGWサーバ300に公開する。GWサーバ300は、公開されたデータを認識すると、必要に応じてデータの生成元のGWサーバ300と取引を行い、当該データを取得する。
【0018】
<GWサーバ300の構成例>
図2は、GWサーバ300の構成例を表す図である。GWサーバ300は、CPU(Central Processing Unit)310、ストレージ320、メモリ330、及び通信回路340を有する。
【0019】
ストレージ320は、プログラムやデータを記憶する、フラッシュメモリ、HDD(Hard Disk Drive)、又はSSD(Solid State Drive)などの補助記憶装置である。ストレージ320は、分散台帳管理プログラム321及びデータ履歴管理プログラム322を記憶する。
【0020】
メモリ330は、ストレージ320に記憶されているプログラムをロードする領域である。また、メモリ330は、プログラムがデータを記憶する領域としても使用されてもよい。メモリ330は、分散台帳331及びポインタテーブル332を記憶する。
【0021】
分散台帳331は、データの取引履歴や公開されているデータに関する情報を記憶する台帳である。分散台帳331は、各GWサーバ300が有し、それぞれ同期し、同等の内容を記憶する。
【0022】
ポインタテーブル332は、データの取引履歴、加工履歴などを含むポインタ情報を記憶するテーブルであり、例えば、データの取引における送信元及び送信先や、データの加工における加工前及び加工後に関する情報を記憶する。詳細については、後述する。
【0023】
CPU310は、ストレージ320に記憶されているプログラムを、メモリ330にロードし、ロードしたプログラムを実行し、各部を構築し、各処理を実現するプロセッサである。
【0024】
通信回路340は、ネットワーク200を介して、他のGWサーバ300と通信を行う回路である。通信回路340は、例えば、NIC(Network Interface Card)である。また、通信回路340は、無線及び有線のいずれでネットワーク200と接続されてもよい。
【0025】
CPU310は、分散台帳管理プログラム321を実行することで、同期部を構築し、分散台帳管理処理を行う。分散台帳管理処理は、分散台帳を更新したり、分散台帳をGWサーバ300間で同期させたりする処理である。
【0026】
CPU310は、データ履歴管理プログラム322を実行することで、記憶部及び同期部を構築し、データ履歴管理処理を行う。データ履歴管理処理は、ポインタテーブル332を管理する処理である。GWサーバ300は、データ履歴管理処理において、ポインタテーブル332を更新したり、他のGWサーバ300が有するポインタテーブル332と同期したりする。なお、ポインタテーブル332の同期は、例えば、分散台帳の同期と同様の方法で実現される。また、ポインタテーブル332は、例えば、分散台帳の一部に含まれる場合、分散台帳が同期されることで、同時に同期される。
【0027】
<データ履歴管理処理について>
データ履歴管理処理について説明する。図3は、データ流通のシーケンスの例を示す図である。図3は、GWサーバ300-1が生成したデータD1が、GWサーバ300-2に引き渡され、更新(加工)され、さらに、GWサーバ300-3に引き渡されるまでのシーケンスの例である。なお、図3における「データD1-x(xは小文字アルファベット)」は、例えば、ある処理の前後のデータの状態を示す。また、「データD1-x」は、データD1に対してある処理を実行したことを示す履歴(レコード)の識別子と解してもよい。xは、時系列で、aからアルファベット順に割り振る。なお、以降、各実施の形態において、特にことわりがない限り、図3のシーケンスにおける処理を実行した場合を例として説明する。
【0028】
GWサーバ300-1は、データを生成し、登録するデータ生成登録を実行する(S100)。GWサーバ300-1は、データD1を生成し、登録する。この生成されたデータD1をデータD1-aとする。データD1-aは、登録されることで、他のGWサーバ300がGWサーバ300-1において生成されたこと認識され、他のGWサーバ300が取得可能となる。
【0029】
GWサーバ300-2は、データD1が生成されたことを認識し、データD1を取得しようとする。GWサーバ300-2は、例えば、GW300-1とデータを取得する取引を行う(S101)。例えば、取引において、GWサーバ300-2は、公開されたデータD1を取得することをGWサーバ300-1に要求する。そして、GWサーバ300-1は、GWサーバ300-2の要求を承諾する(あるいは拒否する)。GWサーバ300-2は、データD1を取引で取得し(S102)、データD1-bとして内部で管理する。
【0030】
図4は、データ取得処理S102完了後のポインタテーブル332の例を示す図である。図4を用いて、ポインタテーブル332の状態について説明する。ポインタテーブル332は、ある処理の前後の履歴(レコード)を対応づけたポインタ情報を記憶するテーブルである。ポインタテーブル332は、「No.」、「元レコードID」、「次回レコードID」、及び「次回レコード管理URL」を記憶する。
【0031】
「No.」は、ポインタ番号を示し、例えば、発生順に1から順に割り振られる。
【0032】
「元レコードID」は、ある処理(取引、加工、取得など)の前(直前、前回)に実行された処理のレコードの識別子(元識別子)である。「次回レコードID」は、ある処理(取引、加工、取得など)のレコードの識別子(次回識別子)である。レコードは、データの取引、データの取得、データの加工など、データが加工されたり、データが引き渡されたりしたことの履歴である。すなわち、「元レコードID」は、ある基準となる処理の前に実行された、取引、取得、加工のレコードの識別子であり、「次回レコードID」は、ある基準となる処理のレコードの識別子である。
【0033】
「次回レコード管理URL」は、次回レコードを管理しているURL(Uniform Resource Locator)を示し、当該URLを使用することで、次回レコードの履歴を確認することができる。
【0034】
ポインタ番号1は、「元レコードID」であるデータD1が生成されたレコードを示す「D1-a」と、「次回レコードID」であるデータD1が取引されたレコードを示す「D1-T1」とを対応づけている。すなわち、ポインタ番号1は、生成されたデータD1-aが、取引T1によって取引されたことを示す。そして、ポインタ番号1は、「次回レコード管理URL」として、取引履歴を管理するブロックチェーン(又はデータ流通システム1、分散台帳)の管理URLを記憶する。ポインタ番号1は、例えば、GWサーバ300-1とGWサーバ300-2との間で、データ取引S101が成立したとき、GWサーバ300-1によって、ポインタテーブル332に記憶される。
【0035】
ポインタ番号2は、「元レコードID」であるデータD1が取引されたレコードを示す「D1-T1」と、「次回レコードID」であるデータD1が取得されたレコードを示す「D1-b」とを対応づけている。すなわち、ポインタ番号2は、取引T1で取引されたデータD1が、データD1-bとして取得、保存されていることを示す。そして、ポインタ番号2は、「次回レコード管理URL」として、データD1-bを管理するGWサーバ300-2のURLを記憶する。ポインタ番号2は、例えば、GWサーバ300-2がデータ取引S101に付随するデータD1の取得処理S102の実行時に、GWサーバ300-2によって、ポインタテーブル332に記憶される。
【0036】
なお、データの取引は、データを取得するGWサーバ300のユーザ100と、データを引き渡すGWサーバ300のユーザ100との間で行われるデータ送受信の契約であり、例えば、公開されたあるデータを取得したいユーザ100が、あるデータの公開元のユーザに対して取得を要求し、公開元のユーザ100が取得を許可(あるいは不許可)するというやりとりを行う。
【0037】
図3のシーケンスに戻り、GWサーバ300-2は、データD1―bを加工し(S103)、データD1-cを生成する。そして、GWサーバ300-2は、さらに、データD1-cを加工し(S104)、データD1-dを生成する。
【0038】
図5は、データ加工処理S104完了後のポインタテーブル332の例を示す図である。ポインタ番号3は、「元レコードID」であるデータD1を取得したレコードを示す「D1-b」と、「次回レコードID」であるデータD1が加工されたレコードを示す「D1-c」とを対応づけている。すなわち、ポインタ番号3は、取得したデータD1-bが、加工されてD1-cとして管理されていることを示す。そして、ポインタ番号3は、「次回レコード管理URL」として、加工したデータD1を管理するGWサーバ300-2の管理URLを記憶する。ポインタ番号3は、例えば、GWサーバ300-2が加工処理S103によってデータD1を加工したときに、GWサーバ300-2によって、ポインタテーブル332に追加される。
【0039】
ポインタ番号4は、「元レコードID」であるデータD1を加工したレコードを示す「D1-c」と、「次回レコードID」であるデータD1が加工されたレコードを示す「D1-d」とを対応づけている。すなわち、ポインタ番号4は、加工されたデータD1-cが、さらに加工されてD1-dとして管理されていることを示す。そして、ポインタ番号4は、「次回レコード管理URL」として、加工したデータD1を管理するGWサーバ300-2の管理URLを記憶する。ポインタ番号4は、例えば、GWサーバ300-2が加工処理S104によってデータD1を加工したときに、GWサーバ300-2によって、ポインタテーブル332に追加される。
【0040】
図3のシーケンスに戻り、GWサーバ300-3は、GWサーバ300-2が管理するデータD1-dを取得しようとする。GWサーバ300-3は、例えば、GW300-2とデータを取得する取引を行う(S105)。GWサーバ300-3は、データD1を取引で取得し(S106)、データD1-eとして内部で管理する。
【0041】
図6は、データ取得処理S106完了後のポインタテーブル332の例を示す図である。ポインタ番号5は、「元レコードID」であるデータD1が加工されたレコードを示す「D1-d」と、「次回レコードID」であるデータD1が取引されたレコードを示す「D1-T2」とを対応づけている。すなわち、ポインタ番号5は、加工されたデータD1-dが、取引T2によって取引されたことを示す。そして、ポインタ番号5は、「次回レコード管理URL」として、取引履歴を管理するブロックチェーンの管理URLを記憶する。ポインタ番号5は、例えば、GWサーバ300-2とGWサーバ300-3との間で、データ取引S105が成立したとき、GWサーバ300-2によって、ポインタテーブル332に記憶される。
【0042】
ポインタ番号6は、「元レコードID」であるデータD1が取引されたレコードを示す「D1-T2」と、「次回レコードID」であるデータD1が取得されたレコードを示す「D1-e」とを対応づけている。すなわち、ポインタ番号6は、取引T2で取引されたデータD1が、データD1-eとして取得、保存されていることを示す。そして、ポインタ番号6は、「次回レコード管理URL」として、データD1-eを管理するGWサーバ300-3の管理URLを記憶する。ポインタ番号6は、例えば、GWサーバ300-3がデータ取引S105に付随するデータD1の取得処理S106の実行時に、GWサーバ300-3によって、ポインタテーブル332に記憶される。
【0043】
第1の実施の形態において、GWサーバ300は、ポインタテーブル332を有することで、データの履歴を時間方向に追跡することができる。例えば、GWサーバ300-1は、生成したデータD1がどうなったかを追跡するとき、ポインタ番号1の次回レコードIDであるD1-T1が元レコードIDとなるポインタ番号2を検出する。GWサーバ300-1は、ポインタ番号2のレコードから、データD1-aが取引T1により取引され、データD1-bとしてGWサーバ300-2に管理されている(管理されていた)ことを認識できる。GWサーバ300-1は、同様にしてポインタテーブル332のレコードをたどることで、最終的にポインタ番号6を検出し、データD1-eとしてGWサーバ300-3で管理されていることを認識できる。また、GWサーバ300-1は、データD1-eの詳細について確認したい場合、ポインタ番号6の次回レコード管理URLのGWサーバ300の管理URLに確認することができる。
【0044】
[第2の実施の形態]
次に、第2の実施の形態について説明する。第2の実施の形態におけるGWサーバ300は、更新タイミングが第1の実施の形態とは異なるタイミングでポインタテーブル332を更新する。
【0045】
図7は、ポインタテーブルの更新タイミングの例を示す図である。GWサーバ300は、データが他のGWサーバ300に移動したとき、ポインタテーブル332を更新する。GWサーバ300は、データを引き渡すとき、及びデータを取得したときに、ポインタテーブル332を更新する。
【0046】
ポインタ番号1及び2のポインタ情報は、データ取得処理S102の実行時に更新される(S201)。GWサーバ300-1は、データ取得処理S102におけるデータD1の引き渡し時に、ポインタ番号1のポインタ情報をポインタテーブル332に追加する。GWサーバ300-2は、データ取得処理S102におけるデータD1の取得時に、ポインタ番号2のポインタ情報をポインタテーブル332に追加する。
【0047】
ポインタ番号3~6のポインタ情報は、データ取得処理S106の実行時に更新される(S202)。GWサーバ300-2は、データ取得処理S106におけるデータD1の引き渡し時に、ポインタ番号3~5のポインタ情報をポインタテーブル332に追加する。GWサーバ300-3は、データ取得処理S106におけるデータD1の取得時に、ポインタ番号6のポインタ情報をポインタテーブル332に追加する。
【0048】
第2の実施の形態では、データの移動を契機としてポインタテーブル332を更新する。これにより、ポインタテーブルの更新回数を減らし、ポインタテーブル332の同期をとるための通信回数を抑制でき、ネットワークの負荷を減らすことができる。なお、第2の実施の形態においては、例えば、加工処理S103、S104の履歴をポインタテーブル332に登録するタイミングが、第1の実施の形態よりも遅延するが、当該加工処理を行ったGWサーバ300-2の管理URLから当該加工処理の履歴を取得可能であるため、他のGWサーバ300は、最新の履歴を追跡することができる。
【0049】
[第3の実施の形態]
次に、第3の実施の形態について説明する。第3の実施の形態におけるポインタテーブル332は、記憶されるポインタ情報が異なる。ポインタテーブル332は、GWサーバ300内部での加工処理の履歴を記憶しない。
【0050】
図8は、ポインタテーブル332の例を示す図である。第3の実施の形態において、GWサーバ300は、図8のポインタテーブル332の網掛け部分のポインタ情報を記憶しない。これにより、ポインタテーブル332の記憶量を減らすことができる。
【0051】
ポインタ番号2のポインタ情報の次回レコードIDが「D1-b」であり、ポインタ番号3のポインタ情報の元レコードIDが「D1-d」であり、ポインタ番号2とポインタ番号3のポインタ情報が繋がらない。しかし、例えば、GWサーバ300-1は、ポインタ番号2のポインタ情報から、GWサーバ300-2の管理URLを取得することが可能である。GWサーバ300-1は、GWサーバ300-2の管理URLを用いて、GWサーバ300-2での内部の履歴、すなわち、GWサーバ300-2が内部で加工を行ったこと及び加工後のデータがD1-dとして管理されていること(レコードD1-d)を取得することができる。GWサーバ300-1は、レコードD1-dからポインタ番号3のポインタ情報を取得できるため、以降のデータD1の追跡が可能となる。
【0052】
[第4の実施の形態]
次に、第4の実施の形態について説明する。第4の実施の形態におけるポインタテーブル332は、記憶されるポインタ情報が異なる。ポインタテーブル332は、GWサーバ300内部で複数回のデータ加工を行う場合、最終的な(取引前の最後の加工の)履歴のみを記憶する。
【0053】
図9は、ポインタテーブル332の例を示す図である。第3の実施の形態において、GWサーバ300は、最終的な加工の履歴をポインタ情報として記憶する。これにより、GWサーバ300内部で複数回の加工が行われる場合、ポインタテーブル332の記憶量を減らすことができる。
【0054】
GWサーバ300-2は、加工処理S103、S104を実施したとき、ポインタテーブル332にポインタ情報を記憶しない。そして、GWサーバ300-2は、例えば、データ取引S105を行ったとき、加工処理S103及びS104を1回のポインタ情報として、ポインタ番号3に記憶する。ポインタ番号3のポインタ情報は、元レコードIDとして、取得したデータのレコード「D1-b」と、次回レコードIDとして、2回の加工処理S103及びS104後のデータのレコード「D1-d」を記憶する。さらに、次回レコード管理URLとして、GWサーバ300-2の管理URLを記憶する。
【0055】
第4の実施の形態において、ポインタテーブル332は、加工履歴の一部を記憶する。第3の実施の形態においては、ポインタテーブル332のポインタ情報が繋がらないことがあり、GWサーバ300が管理URLを使用して他のGWサーバ300から内部履歴を取得する場合がある。
【0056】
しかし、第4の実施の形態において、GWサーバ300は、ポインタテーブル332に記憶する情報量を減少させつつ、ポインタ情報が繋がらないことがなく、管理URLを使用しなくても履歴を追跡することができる。
【0057】
[第5の実施の形態]
次に、第5の実施の形態について説明する。上述した実施の形態において、GWサーバ300は、データが時間経過に伴いどのようになったかを示す履歴(未来方向の履歴)を追跡する場合について説明を行った。しかし、GWサーバ300は、あるデータがどのような処理を経て当該データとなったかを示す履歴(過去方向の履歴)を、追跡する場合がある。
【0058】
図10は、過去方向の履歴が追跡可能となる方式の例を示す図である。GWサーバ300は、例えば、データD1に履歴情報を付与する。下部の網掛け四角形は履歴情報を示し、上部四角形は履歴情報の識別子(もしくは、データ、取引、処理など識別子)を示す。
【0059】
GWサーバ300-1は、データD1生成時に履歴情報を作成し、データD1に付与する。付与される履歴情報の識別子は「D1-a」(図10の(1))となる。
【0060】
GWサーバ300-1は、取引T1(取引処理S101)を行い、新たな履歴情報を作成する。履歴情報には、前回の履歴情報の識別子である「D1-a」を記憶する。そして、付与される履歴情報の識別子は「D1-T1」(図10の(2))となる。
【0061】
GWサーバ300-2は、取引T1でデータD1を取得する(取得処理S102)。このとき、GWサーバ300-2は、新たな履歴情報を作成する。履歴情報には、前回の履歴情報の識別子である「D1-T1」を記憶する。そして、付与される履歴情報の識別子は「D1-b」(図10の(3))となる。
【0062】
以降、各処理において、GWサーバ300は、履歴情報を作成し、履歴情報の識別子を添付する。履歴情報には、前回の履歴情報の識別子が記憶されているため、GWサーバ300は、この履歴情報の識別子をさかのぼることで、過去の履歴を追跡することができる。
【0063】
なお、図10の(6)の「shortcut:D1-T1」は、ショートカット情報である。ショートカット情報は、例えば、前回の取引における履歴情報の識別子を含む。GWサーバ300は、データの移動履歴だけを取得した場合、このショートカット情報を追跡することで、データがどのように移動したのかを取得することができる。
【0064】
図10に示す方式、及び第1~第4の実施の形態における処理を組み合わせることで、GWサーバ300は、過去方向及び未来方向の履歴を追跡することができる。
【0065】
しかし、図10に示す方式は、履歴情報をさかのぼるごとに、各GWサーバ300やブロックチェーンの管理URLを使った問い合わせが必要となる。そこで、未来方向の履歴の追跡と同様に、過去方向の履歴の追跡を行うことができるよう、元レコードIDの管理URLを、ポインタテーブル332に記憶する。
【0066】
図11は、元レコード管理URLを記憶するポインタテーブル332の例を示す図である。GWサーバ300は、ポインタ情報として、「元レコード管理URL」を記憶する。「元レコード管理URL」は、元レコードを管理しているURLを示し、当該URLを使用することで、元レコードの履歴を確認することができる。
【0067】
例えば、ポインタ番号2のポインタ情報の元レコード管理URLは、「D1-T1」を管理するブロックチェーンの管理URLとなる。他のポインタ番号のポインタ情報についても、同様に、ポインタ情報として元レコード管理URLを記憶する。
【0068】
第5の実施の形態では、GWサーバ300は、ポインタテーブル332を使用することで、過去方向にも履歴を追跡することができる。例えば、GWサーバ300-3は、データD1-eがどのような処理を行われてきたかを確認するため、ポインタテーブル332を確認する。GWサーバ300-3は、例えば、ポインタ番号5のポインタ情報から、取引T2が行われる前のデータD1-dが、元レコード管理URLのGWサーバ300-2で管理されていたことを認識できる。そして、GWサーバ300-3は、元レコード管理URLを使用し、GWサーバ300-2から、データD1-dに関する履歴を取得することができる。
【0069】
[第6の実施の形態]
次に、第6の実施の形態について説明する。第6の実施の形態において、GWサーバ300は、ポインタテーブル332から、所定のポインタ情報を削除する削除処理を行う。これにより、ポインタテーブル332のデータ量を抑制することができる。
【0070】
図12は、削除更新したポインタテーブル332の例を示す図である。図12の上図は、削除更新する前の状態であり、図12の下図は、削除更新した後の状態である。GWサーバ300は、ポインタテーブル332に、同一のGWサーバ300の管理URLが次回レコード管理URLとして複数存在する場合、最新(ポインタ番号が最大)のポインタ情報のみをポインタテーブル332に残し、それ以外の同一GWサーバ300の管理URLを有するポインタ情報を削除する。図12の上図において、GWサーバ300-2の管理URLは、ポインタ番号2、3、4、8に存在する。この場合、GWサーバ300は、ポインタ番号8のポインタ情報のみを残し、他のポインタ番号2,3,4のポインタ情報を削除する。ポインタテーブル332は、削除更新後、図12の下図の状態となる。
【0071】
なお、GWサーバ300は、ブロックチェーンの管理URLについては、複数存在しても削除しない。ブロックチェーンは、例えば、全てのGWサーバ300のデータ登録や取引を管理したり、台帳の同期等の処理を行ったりしているため、処理負荷が大きい。そのため、ブロックチェーンに対する問い合わせ回数をなるべく抑制するため、ブロックチェーンに関するポインタ情報は、ポインタテーブル332に残すようにする。
【0072】
GWサーバ300は、削除更新後のポインタテーブル332を使用し、未来方向の履歴を追跡することができる。なお、例えば、次回レコードIDが元レコードIDとつながらない(ある次回レコードIDが、他のポインタ情報の元レコードIDに存在しない)場合、次回レコード管理URLを使用することで、その先の履歴を追跡することができる。GWサーバ300は、削除更新しない場合は、全てのポインタ情報が残っているため、管理URLを使用せずに、最新の履歴まで追跡することができる。一方、GWサーバ300は、削除更新する場合、場合によっては管理URLを使用して問い合わせをしないと、最新の履歴まで追跡できない場合があるが、ポインタテーブル332のデータ量を減少させることができる。
【0073】
図13は、削除更新したポインタテーブル332の例を示す図である。図13の上図は、削除更新する前の状態であり、図13の下図は、削除更新した後の状態である。GWサーバ300は、ポインタテーブル332に、同一のGWサーバ300の管理URLが次回レコード管理URLとして複数存在する場合、最古(ポインタ番号が最小)のポインタ情報のみをポインタテーブル332に残し、それ以外の同一GWサーバ300の管理URLを有するポインタ情報を削除する。図12の上図において、GWサーバ300-2の管理URLは、ポインタ番号2、3、4、8に存在する。この場合、GWサーバ300は、ポインタ番号2のポインタ情報のみを残し、他のポインタ番号3、4、8のポインタ情報を削除する。ポインタテーブル332は、削除更新後、図13の下図の状態となる。
【0074】
<変形例>
ポインタテーブル332を更新すると、同期処理を行うため、ブロックチェーン内で通信が発生する。同期処理は、GWサーバ300の数が多いほど、通信量が多くなり、ネットワークの通信負荷が高くなる。すなわち、上述した削除更新処理を実行すると、通信負荷が高くなる場合がある。
【0075】
そこで、変形例において、GWサーバ300は、ポインタテーブル332の削除更新の実施に代替し、ポインタ情報を抽出する抽出処理を行う。GWサーバ300は、抽出処理を行い、図12の下図、又は図13の下図のポインタ情報を抽出する。そして、GWサーバ300は、この抽出したポインタ情報を使用し、履歴を追跡する。これにより、GWサーバ300は、ポインタテーブル332を削除更新せず、選択したポインタ情報に基づいて、履歴を追跡することができる。なお、GWサーバ300は、例えば、抽出したポインタ情報を、一定期間、内部に保存しておいてもよい。また、GWサーバ300は、定期的に、関連するデータに関するポインタ情報を、ポインタテーブル332から抽出してもよい。
【0076】
以下、まとめると付記のようになる。
【0077】
(付記1)
データの流通に関する履歴を分散台帳で管理するデータ流通システムに参加する通信装置が有するプログラムであって、
第1データに関する第1処理を実行したとき、前記第1処理の実行前に行った前記第1データに関する処理の履歴の識別子である元識別子と、前記第1処理の履歴の識別子である次回識別子とを対応づけたポインタ情報を、ポインタテーブルに記憶する記憶処理と、
前記ポインタテーブルの内容を、他の通信装置と同期する同期処理とを、
前記通信装置が有するコンピュータに実行させる通信プログラム。
【0078】
(付記2)
前記記憶処理において、さらに、前記次回識別子に対応する処理を実行した履歴の管理URL(Uniform Resource Locator)を、前記ポインタ情報に含め前記ポインタテーブルに記憶する
付記1記載の通信プログラム。
【0079】
(付記3)
さらに、第2データに関する処理の履歴の識別子を前記元識別子として有する前記ポインタ情報を前記ポインタテーブルから検出し、前記検出したポインタ情報の次回識別子を取得し、前記第2データに関する処理の履歴を追跡する追跡処理とを、
前記通信装置が有するコンピュータに実行させる付記1記載の通信プログラム。
【0080】
(付記4)
前記第1処理は、前記第1データの取得の要求及び承諾を行う取引処理、及び前記取引処理に応じて前記第1データを取得する取得処理を含む
付記1記載の通信プログラム。
【0081】
(付記5)
前記第1処理は、前記第1データを加工する加工処理を含む
付記4記載の通信プログラム。
【0082】
(付記6)
前記記憶処理において、前記取引処理又は前記取得処理の実行時に、前記取引処理及び前記取得処理に関する識別子を含むポインタ情報と、前記加工処理に関する識別子を含むポインタ情報を、前記ポインタテーブルに記憶する
付記5記載の通信プログラム。
【0083】
(付記7)
前記記憶処理において、前記取得処理の実行後、前記加工処理が自装置内で複数回実行される場合、前記取得処理の履歴の識別子を元識別子とし、前記複数回のうち最後に実行された前記加工処理の履歴の識別子を次回識別子として対応づけた前記ポインタ情報を、前記ポインタテーブルに記憶し、前記複数回のうち前記最後に実行された前記加工処理以外の前記加工処理の履歴の識別子を、前記ポインタテーブルに記憶しない
付記5記載の通信プログラム。
【0084】
(付記8)
前記ポインタテーブルは、前記分散台帳に含まれ、
前記同期処理は、前記分散台帳の同期に伴い実行される
付記1記載の通信プログラム。
【0085】
(付記9)
前記記憶処理において、さらに、前記元識別子に対応する処理を実行した履歴の管理URLを、前記ポインタ情報として前記ポインタテーブルに記憶する
付記2記載の通信プログラム。
【0086】
(付記10)
さらに、同じ管理URLが複数のポインタ情報に存在する場合、前記複数のポインタ情報のうち最後に前記ポインタテーブルに記憶されたポインタ情報以外のポインタ情報を、前記ポインタテーブルから削除する削除処理を、
前記通信装置が有するコンピュータに実行させる付記2記載の通信プログラム。
【0087】
(付記11)
さらに、同じ管理URLが複数のポインタ情報に存在する場合、前記複数のポインタ情報のうち最初に前記ポインタテーブルに記憶されたポインタ情報以外のポインタ情報を、前記ポインタテーブルから削除する第2削除処理を、
前記通信装置が有するコンピュータに実行させる付記2記載の通信プログラム。
【0088】
(付記12)
さらに、同じ管理URLが複数のポインタ情報に存在する場合、前記複数のポインタ情報のうち1つにポインタ情報を前記ポインタテーブルから抽出し、前記抽出したポインタ情報を用いて、第3データに関する処理の履歴を追跡する第2第2追跡処理とを、
前記通信装置が有するコンピュータに実行させる付記2記載の通信プログラム。
【0089】
(付記13)
データの流通に関する履歴を分散台帳で管理するデータ流通システムに参加する通信装置であって、
第1データに関する第1処理を実行したとき、前記第1処理の実行前に行った前記第1データに関する処理の履歴の識別子である元識別子と、前記第1処理の履歴の識別子である次回識別子とを対応づけたポインタ情報を、ポインタテーブルに記憶する記憶部と、
前記ポインタテーブルの内容を、他の通信装置と同期する同期部と、
を有する通信装置。
【0090】
(付記14)
データの流通に関する履歴を分散台帳で管理するデータ流通システムに参加する通信装置における通信方法であって、
第1データに関する第1処理を実行したとき、前記第1処理の実行前に行った前記第1データに関する処理の履歴の識別子である元識別子と、前記第1処理の履歴の識別子である次回識別子とを対応づけたポインタ情報を、ポインタテーブルに記憶し、
前記ポインタテーブルの内容を、他の通信装置と同期する、
通信方法。
【符号の説明】
【0091】
1 :データ流通システム
100 :ユーザ
200 :ネットワーク
300 :GWサーバ
310 :CPU
320 :ストレージ
321 :分散台帳管理プログラム
322 :データ履歴管理プログラム
330 :メモリ
331 :分散台帳
332 :ポインタテーブル
340 :通信回路
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13