(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-12-05
(45)【発行日】2022-12-13
(54)【発明の名称】プログラム,情報処理システム及び情報処理方法
(51)【国際特許分類】
G06Q 20/38 20120101AFI20221206BHJP
【FI】
G06Q20/38 310
(21)【出願番号】P 2018161757
(22)【出願日】2018-08-30
【審査請求日】2021-05-13
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100092978
【氏名又は名称】真田 有
(72)【発明者】
【氏名】太田 郁子
(72)【発明者】
【氏名】李 航宇
(72)【発明者】
【氏名】米倉 裕貴
(72)【発明者】
【氏名】小林 雅史
【審査官】青柳 光代
(56)【参考文献】
【文献】特開2017-207979(JP,A)
【文献】特開2018-132931(JP,A)
【文献】特開2017-157926(JP,A)
【文献】淵田康之,ブロックチェーンと金融取引の革新,野村資本市場クォータリー 2015年秋号,2015年秋号 第19巻 第2号,日本,株式会社野村資本市場研究所,2015年11月01日,P.11-P.35
(58)【調査した分野】(Int.Cl.,DB名)
G06Q 10/00 - 99/00
G16H 10/00 - 80/00
(57)【特許請求の範囲】
【請求項1】
端末からの要求に応じてブロックチェーンを用いた取引を記録するコンピュータに、
一連の複数の取引のうちの一の取引を特定するキーと、当該キーに対応する取引識別情報と
に限って、前記ブロックチェーンを構成するブロック
が記憶される第1の記憶領域以外
の第2の記憶領域に登録し、
前記複数の取引の内容及び順序を示すトレース情報又は当該トレース情報のハッシュ値と、前記キーと、直前のトランザクションを示すキー及び/又は直前のトランザクションを示す取引識別情報とを、
前記第1の記憶領域における前記ブロック内に登録する、
処理を実行させる、プログラム。
【請求項2】
前記トレース情報を登録する際に、前記
第2の記憶領域に記憶されている最新のキーと、
前記第1の記憶領域において前記ブロック内に記憶されている前記複数の取引に含まれる最新のキーとを比較して、異なる場合に前記ブロック外のデータ集合が改ざんされていると判定する、
処理を前記コンピュータに実行させる、請求項1に記載のプログラム。
【請求項3】
前記
第2の記憶領域以外において、前記複数の取引の内容を登録
する、
処理を前記コンピュータに実行させる、請求項1又は2に記載のプログラム。
【請求項4】
情報処理装置と端末とを備え、前記端末からの要求に応じてブロックチェーンを用いた取引を記録する情報処理システムであって、
前記情報処理装置は、
一連の複数の取引のうちの一の取引を特定するキーと、当該キーに対応する取引識別情報と
に限って、前記ブロックチェーンを構成するブロック
が記憶される第1の記憶領域以外
の第2の記憶領域に登録する第1登録処理部と、
前記複数の取引の内容及び順序を示すトレース情報又は当該トレース情報のハッシュ値と、前記キーと、直前のトランザクションを示すキー及び/又は直前のトランザクションを示す取引識別情報とを、
前記第1の記憶領域における前記ブロック内に登録する第2登録処理部と、
を備える、情報処理システム。
【請求項5】
端末からの要求に応じてブロックチェーンを用いた取引を記録する
コンピュータが、
一連の複数の取引のうちの一の取引を特定するキーと、当該キーに対応する取引識別情報と
に限って、前記ブロックチェーンを構成するブロック
が記憶される第1の記憶領域以外
の第2の記憶領域に登録し、
前記複数の取引の内容及び順序を示すトレース情報又は当該トレース情報のハッシュ値と、前記キーと、直前のトランザクションを示すキー及び/又は直前のトランザクションを示す取引識別情報とを、
前記第1の記憶領域における前記ブロック内に登録する、
処理を実行する、情報処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラム,情報処理システム及び情報処理方法に関する。
【背景技術】
【0002】
ブロックチェーンでは、取引の情報が最初から最後まで連続して記録されており、記録されたデータの改ざんが発生しづらい。このようなブロックチェーンの特徴を活かして、製品品質に関する情報をトレース可能にすることが研究されている。
【0003】
ブロックチェーン上の取引をトレースすることができれば、例えば、生産者は提供した製品の品質に問題が無いことを証明でき、消費者は購入した製品の原材料・部品等が安全なものかを知ることができる。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2018-55203号公報
【文献】特許第6247737号公報
【文献】特開2017-224018号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
オープンソースのブロックチェーンを提供するHyperledger Fabricでは、トレーサビリティ機能が提供されていない。そこで、取引をトレースするためには、チェーンコード(別言すれば、「スマートコントラクト」)によるトレーサビリティ機能の実装が必要である。
【0006】
しかしながら、ブロックチェーン上の各情報を関連付けた再帰的なトレースを実現することは、容易でない。
【0007】
1つの側面では、ブロックチェーンに記録された取引の情報をトレース可能にすることを目的とする。
【課題を解決するための手段】
【0008】
プログラムは、端末からの要求に応じてブロックチェーンを用いた取引を記録するコンピュータに、一連の複数の取引のうちの一の取引を特定するキーと、当該キーに対応する取引識別情報とに限って、前記ブロックチェーンを構成するブロックが記憶される第1の記憶領域以外の第2の記憶領域に登録し、前記複数の取引の内容及び順序を示すトレース情報又は当該トレース情報のハッシュ値と、前記キーと、直前のトランザクションを示すキー及び/又は直前のトランザクションを示す取引識別情報とを、前記第1の記憶領域における前記ブロック内に登録する、処理を実行させる。
【発明の効果】
【0009】
1つの側面では、ブロックチェーンに記録された取引の情報をトレースすることができる。
【図面の簡単な説明】
【0010】
【
図1】関連例における取引情報の登録処理を説明するブロック図である。
【
図2】関連例における取引情報の登録処理を説明するブロック図である。
【
図3】関連例における取引情報の一例を示すテーブルである。
【
図4】
図3に示した取引情報の登録処理の詳細例を説明するブロック図である。
【
図5】
図3に示した取引情報の登録処理の詳細例を説明するブロック図である。
【
図6】
図3に示した取引情報の登録処理の詳細例を説明するブロック図である。
【
図7】実施形態の一例におけるブロックチェーンシステムを模式的に示すブロック図である。
【
図8】
図7に示したブロックチェーンシステムにおけるトレース処理の概要を説明するブロック図である。
【
図9】
図8に示したピアコマンド及びClient SDKを説明する図である。
【
図10】
図7及び
図8に示したピアのハードウェア構成を模式的に示すブロック図である。
【
図11】
図10に示したピアの機能構成を模式的に示すブロック図である。
【
図12】
図7に示したブロックチェーンシステムにおける取引情報の登録処理を説明する図である。
【
図13】
図7に示したブロックチェーンシステムにおける取引情報の登録処理を説明する図である。
【
図14】
図7に示したブロックチェーンシステムにおける取引情報の登録処理の詳細例を示すテーブルである。
【
図15】
図7に示したブロックチェーンシステムにおける取引情報の登録処理の詳細例を説明するブロック図である。
【
図16】
図7に示したブロックチェーンシステムにおける取引情報の登録処理の詳細例を説明するブロック図である。
【
図17】
図7に示したブロックチェーンシステムにおける取引情報の登録処理の詳細例を説明するブロック図である。
【
図18】
図7に示したブロックチェーンシステムにおける取引情報の登録処理の詳細例を説明するブロック図である。
【
図19】
図7に示したブロックチェーンシステムにおける取引情報の登録処理の詳細例を説明するブロック図である。
【
図20】
図7に示したブロックチェーンシステムにおける取引情報の登録処理を説明するフローチャートである。
【発明を実施するための形態】
【0011】
以下、図面を参照して一実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。
【0012】
また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【0013】
以下、図中において、同一の各符号は同様の部分を示しているので、その説明は省略する。
【0014】
〔A〕関連例
図1及び
図2は、関連例における取引情報の登録処理を説明するブロック図である。
【0015】
図1に示すように、取引#1はA社からB社への取引であり(符号A1参照)、取引#2はB社からC社への取引であり(符号A2参照)、取引#3はC社からD社への取引である(符号A3参照)。
【0016】
ブロックチェーン62において、取引情報(「トランザクション」と称してもよい。)は、複数個がまとめられて各ブロック621に登録される。
図1に示す例では、各ブロック621は、3つのトランザクションが登録されている。ブロックチェーン62では、各ブロック621が数珠繋ぎにされて(別言すれば、「一列に繋げられて」)管理される。
【0017】
符号A1及びA2で示したように、Tx1で示されるA社からB社へのトランザクションの後には、Tx4で示されるB社からC社へのトランザクションが発生する。また、符号A2及びA3で示したように、Tx4で示されるB社からC社へのトランザクションの後には、Tx7で示されるC社からD社へのトランザクションが発生する。
【0018】
しかしながら、ブロックチェーン62の各ブロック621には符号A1~A3に示したトランザクション以外の複数のトランザクションが記録されているため、隣り合うブロック621間においてもトランザクション同士の連続性が不明である(符号A4参照)。
【0019】
そこで、トランザクションの順序については、チェーンコード61によって、ワールドステート63と呼ばれるデータベースに格納される。
図1に示す例では、ワールドステート63において、A社からB社への取引#1,B社からC社への取引#2,C社からD社への取引#3の順に、トランザクションの順序を示す情報が記録されている(符号A5参照)。
【0020】
図2に示すように、ブロックチェーン62とワールドステート63とで、同一のトランザクションが二重に管理される。例えば、ブロックチェーン62においてはA社からB社への取引内容を示すTx1が管理されると共に、ワールドステート63においてはA社からB社への取引内容を示す取引#1が管理される(符号B1参照)。これにより、システムにおいて記録されるデータ容量が増加する。
【0021】
また、ワールドステート63において記録されている取引内容が書き換えられるおそれがある。
図2に示す例では、C社からD社への取引#3が、C社からE社への取引#4に変更(別言すれば、「改ざん」)されている(符号B2参照)。
【0022】
図3は、関連例における取引情報の一例を示すテーブルである。
【0023】
図3に示す登録情報には、イベント,UserID,UserName,Operation,SrcResourceID,ResourceID,ResourceGroup,ResourceName,Owner,Hash,CreatedDate,RegisterdDate及びキー情報の各値が含まれる。
【0024】
図3に例示するテーブルでは、取引#1~#3にそれぞれ対応する「データ登録」,「データ購入」及び「学習済モデル作成」について、各値が登録されている。
【0025】
図4~
図6は、
図3に示した取引情報の登録処理の詳細例を説明するブロック図である。
【0026】
図4において、取引#1では教師データ登録のイベントが発生する(符号C1参照)。このイベントの登録情報において、ユーザIDがUS0001で特定されるKenによって実行され、教師データを示すリソースIDはdata0001である。また、登録情報には、登録されるデータの種別は教師データであり、元データは無い。更に、登録情報には、教師データのハッシュ値や作成日時が含まれてよい。
【0027】
図4において、ブロック#1には、直前ブロックのハッシュ値と共に、トランザクション#1~#3が登録される。図示する例では、トランザクション#3において、取引#1が登録される(符号C2参照)。
【0028】
トランザクション#3には、ユーザIDがUS0001で特定されるKenによって実行され、教師データを示すリソースIDがdata0001である教師データ登録のイベントが登録される(符号C3参照)。また、登録情報には、登録されるデータの種別は教師データであり、元データは無い。更に、登録情報には、教師データのハッシュ値や作成日時に加えて、ブロック#1へのトランザクション#3の登録日時が含まれてよい。
【0029】
また、トランザクションには、直前の取引を示す「前のキー」と当該取引を示す「キー」が登録される。
図4に示す例において、前のキーはNULLであり、キーはUS0001+data0001である(符号C4参照)。なお、「前のキー」は、例えば、「前のトランザクションID」や「前のキー及び前のトランザクションID」であってもよい。
【0030】
ワールドステート63では、トランザクションID管理及びトレーサビリティ管理が行なわれる。
【0031】
トランザクションID管理では、キーとトランザクションIDとの対応付けが行なわれる。
図4に示す例では、キーUS0001+data0001に対して、トランザクションIDとしてTx3が登録されている(符号C5参照)。
【0032】
トレーサビリティ管理では、トランザクションIDに対する子トランザクション及び親トランザクションの対応付けが行なわれる。ここで、子トランザクションは当該トランザクションIDで示される取引の直後の取引を示し、親トランザクションは当該トランザクションIDで示される取引の直前の取引を示す。
図4に示す例では、トランザクションID Tx3の子トランザクション及び親トランザクションは、いずれも存在しない(符号C6参照)。
【0033】
図5において、取引#2では教師データ購入のイベントが発生する(符号D1参照)。このイベントの登録情報において、ユーザIDがUS0002で特定されるMikeによって実行され、教師データを示すリソースIDはdata0001である。また、登録情報には、購入されるデータの種別は教師データであり、元データ(別言すれば、「購入対象」)はユーザIDがUS0001で特定されるKenが登録した、リソースIDがdata0001で特定される教師データである。更に、登録情報には、教師データのハッシュ値が含まれてよい。
【0034】
図5において、
図4に示したブロック#1に加えて、ブロック#2には、直前ブロックのハッシュ値と共に、トランザクション#4~#7が登録される。図示する例では、トランザクション#5において、取引#2が登録される(符号D2参照)。
【0035】
トランザクション#5には、ユーザIDがUS0002で特定されるMikeによって実行され、教師データを示すリソースIDがdata0001である教師データ購入のイベントが登録される(符号D3参照)。また、登録情報において購入されるデータの種別は教師データであり、元データはユーザIDがUS0001で特定されるKenが登録した、リソースIDがdata0001で特定される教師データである。更に、登録情報には、教師データのハッシュ値が含まれてよい。
【0036】
また、トランザクションには、直前の取引を示す「前のキー」と当該取引を示す「キー」が登録される。
図5に示す例において、前のキーはUS0001+data0001であり、キーはUS0002+data0001である(符号D4参照)。なお、「前のキー」は、例えば、「前のトランザクションID」や「前のキー及び前のトランザクションID」であってもよい。
【0037】
トランザクションID管理では、キーとトランザクションIDとの対応付けが行なわれる。
図5に示す例では、キーUS0001+data0001に対してトランザクションIDとしてTx3が登録されていると共に、キーUS0002+data0001に対してトランザクションIDとしてTx5が登録されている(符号D5参照)。
【0038】
トレーサビリティ管理では、トランザクションIDに対する子トランザクション及び親トランザクションの対応付けが行なわれる。
図5に示す例では、トランザクションID Tx3の子トランザクションはTx5であり、親トランザクションは存在しない。また、トランザクションID Tx5の子トランザクションIDは存在せず、親トランザクションはTx3である(符号D6参照)。
【0039】
図6において、取引#3では学習済モデル作成のイベントが発生する(符号E1参照)。このイベントの登録情報において、ユーザIDがUS0002で特定されるMikeによって実行され、学習済モデルを示すリソースIDはmdl0001である。また、登録情報には、作成されるデータの種別は学習済モデルであり、元データはユーザIDがUS0002で特定されるMikeが購入した、リソースIDがdata0001で特定される教師データである。更に、登録情報には、学習済モデルのハッシュ値が含まれてよい。
【0040】
図6において、
図5に示したブロック#1及び#2に加えて、ブロック#3には、直前ブロックのハッシュ値と共に、トランザクション#8~#10が登録される。図示する例では、トランザクション#9において、取引#3が登録される(符号E2参照)。
【0041】
トランザクション#9には、ユーザIDがUS0002で特定されるMikeによって実行され、学習済モデルを示すリソースIDがmdl0001である学習済モデル作成のイベントが登録される(符号E3参照)。また、登録情報において購入されるデータの種別は学習済モデルであり、元データはユーザIDがUS0002で特定されるMikeが購入した、リソースIDがdata0001で特定される教師データである。更に、登録情報には、学習済モデルのハッシュ値が含まれてよい。
【0042】
また、トランザクションには、直前の取引を示す「前のキー」と当該取引を示す「キー」が登録される。
図6に示す例において、前のキーはUS0002+data0001であり、キーはUS0002+mdl0001である(符号E4参照)。なお、「前のキー」は、例えば、「前のトランザクションID」や「前のキー及び前のトランザクションID」であってもよい。
【0043】
トランザクションID管理では、キーとトランザクションIDとの対応付けが行なわれる。
図6に示す例では、キーUS0001+data0001に対してトランザクションIDとしてTx3が登録され、キーUS0002+data0001に対してトランザクションIDとしてTx5が登録されていると共に、キーUS0002+mdl0001に対してトランザクションIDとしてTx9が登録されている(符号E5参照)。
【0044】
トレーサビリティ管理では、トランザクションIDに対する子トランザクション及び親トランザクションの対応付けが行なわれる。
図6に示す例では、トランザクションID Tx3の子トランザクションはTx5であり、親トランザクションは存在しない。また、トランザクションID Tx5の子トランザクションIDはTx9であり、親トランザクションはTx3である。更に、トランザクションID Tx9の子トランザクションは存在せず、親トランザクションはTx5である(符号E6参照)。
【0045】
ここで、ワールドステート23のトレーサビリティ管理においてデータの改ざんが生じると、取引のトレースが正しくできず、データの正当性を証明できないおそれがある。
【0046】
〔B〕実施形態の一例
〔B-1〕システム構成例
図7は、実施形態の一例におけるブロックチェーンシステム100を模式的に示すブロック図である。
【0047】
ブロックチェーンシステム100は、情報処理システムの一例であり、ブロックチェーンプラットフォーム101及びクライアントアプリケーション102を備える。ブロックチェーンプラットフォーム101とクライアントアプリケーション102とは、ネットワークを介して通信可能に接続される。
【0048】
クライアントアプリケーション102は、例えばウェブブラウザ5を展開する。ユーザは、ウェブブラウザ5を介して、取引内容に関する情報を入力してよい。なお、クライアントアプリケーション102は、curlコマンドを使用してサーバアプリケーション4に対して情報を入力してもよい。
【0049】
ブロックチェーンプラットフォーム101は、Hyperledger Fabric10及びサーバアプリケーション4を展開する。
【0050】
サーバアプリケーション4は、
図8を用いて後述するクライアント40によって実行される。
【0051】
Hyperledger Fabric10は、ピア1,オーダリングサービス2及びCertificate Authority(CA)3を展開する。
【0052】
オーダリングサービス2は、トランザクションの順序付けを行ない、トランザクションの一貫性を確保する。
【0053】
CA3は、メンバーシップサービスプロバイダとして、証明書の発行や管理のためのIDを発行する。
【0054】
ピア1は、情報処理装置の一例であり、トランザクションの承認及びコミットを実行する。また、ピア1は、トランザクションを検証し、後述する台帳1012を同期させる。
【0055】
図7に示すように、ピア1は、チェーンコード21(別言すれば、「スマートコントラクト」)及び台帳1012を備える。
【0056】
チェーンコード21は、ピア1にインストールされるアプリケーションであり、取引を自動化させるための機能を有する。
【0057】
台帳1012は、ブロックチェーン22(「取引記録」と称してもよい。)及びワールドステート23として機能するデータベースである。ブロックチェーン22は、取引内容を記録する。ワールドステート23は、取引をトレース可能な状態で記憶する。
【0058】
図8は、
図7に示したブロックチェーンシステム100におけるトレース処理の概要を説明するブロック図である。
【0059】
クライアント40は、ピアコマンド41を用いて、Hyperledger Fabric10のピア1に対して、関数呼び出しを実行する。ピアコマンド41については、
図9の(A)を用いて後述する。また、クライアント40においては、Client Software Development Kit(Client SDK)42が用いられる。Client SDK42については、
図9の(B)を用いて後述する。
【0060】
ピア1のチェーンコード21において、トレースデータを記録する関数1111は、クライアント40からのピアコマンド41を用いた関数呼び出しにより、トレーサビリティ機能ライブラリ1113に対して登録関数呼び出しを行なう。また。トレース結果を参照する関数1112は、クライアント40からの関数呼び出しにより、トレーサビリティ機能ライブラリ1113に対して参照関数呼び出しを行なう。なお、チェーンコード21に直接に書き込まれた関数に対して、呼び出しが実行されてもよい。
【0061】
図9の(A)はピアコマンド41を説明する図であり、
図9の(B)はClient SDK42を説明する図である。
【0062】
ピアコマンド41は、管理者がピア1に対して特定なタスクを行なう際に使うツールである。ピアコマンド41は、例えば、
図9(A)に示す記述により、チェーンコード21を実行する。
【0063】
図9の(B)に示すように、Client SDK42は、クライアント40側におけるHyperleadger Fabric10に対応するアプリケーション(App)43を開発するためのプログラムやツール等の一式である。
【0064】
図10は、
図7及び
図8に示したピア1のハードウェア構成を模式的に示すブロック図である。
【0065】
ピア1は、Central Processing Unit(CPU)11,メモリ12,表示制御部13,記憶装置14,入力Interface(I/F)15,読み書き処理部16及び通信I/F17を備える。
【0066】
メモリ12は、記憶部の一例であり、例示的に、Read Only Memory(ROM)及びRandom Access Memory(RAM)を含む記憶装置である。メモリ12のROMには、Basic Input/Output System(BIOS)等のプログラムが書き込まれてよい。メモリ12のソフトウェアプログラムは、CPU11に適宜に読み込まれて実行されてよい。また、メモリ12のRAMは、一次記録メモリあるいはワーキングメモリとして利用されてよい。
【0067】
表示制御部13は、表示装置130と接続され、表示装置130を制御する。表示装置130は、液晶ディスプレイやOrganic Light-Emitting Diode(OLED)ディスプレイ,Cathode Ray Tube(CRT),電子ペーパーディスプレイ等であり、オペレータ等に対する各種情報を表示する。表示装置130は、入力装置と組み合わされたものでもよく、例えば、タッチパネルでもよい。
【0068】
記憶装置14は、例示的に、データを読み書き可能に記憶する装置であり、例えば、Hard Disk Drive(HDD)やSolid State Drive(SSD),Storage Class Memory(SCM)が用いられてよい。
【0069】
入力I/F15は、マウス151やキーボード152等の入力装置と接続され、マウス151やキーボード152等の入力装置を制御する。マウス151やキーボード152は、入力装置の一例であり、これらの入力装置を介して、オペレータが各種の入力操作を行なう。
【0070】
読み書き処理部16は、記録媒体160が装着可能に構成される。読み書き処理部16は、記録媒体160が装着された状態において、記録媒体160に記録されている情報を読み取り可能に構成される。本例では、記録媒体160は、可搬性を有する。例えば、記録媒体160は、フレキシブルディスク、光ディスク、磁気ディスク、光磁気ディスク、又は、半導体メモリ等である。
【0071】
通信I/F17は、外部装置との通信を可能にするためのインタフェースである。
【0072】
CPU11は、種々の制御や演算を行なう処理装置であり、メモリ12に格納されたOperating System(OS)やプログラムを実行することにより、種々の機能を実現する。
【0073】
CPU11は例示的にピア1全体の動作を制御するための装置は、CPU11に限定されず、例えば、MPUやDSP,ASIC,PLD,FPGAのいずれか1つであってもよい。また、ピア1全体の動作を制御するための装置は、CPU,MPU,DSP,ASIC,PLD及びFPGAのうちの2種類以上の組み合わせであってもよい。なお、MPUはMicro Processing Unitの略称であり、DSPはDigital Signal Processorの略称であり、ASICはApplication Specific Integrated Circuitの略称である。また、PLDはProgrammable Logic Deviceの略称であり、FPGAはField Programmable Gate Arrayの略称である。
【0074】
図11は、
図10に示したピア1の機能構成を模式的に示すブロック図である。
【0075】
ピア1は、処理部110としての機能を備える。
図11に示すように、処理部110は、第1登録処理部111,第2登録処理部112及び判定部113として機能する。
【0076】
なお、これらの第1登録処理部111,第2登録処理部112及び判定部113として機能を実現するためのプログラムは、例えば前述した記録媒体160に記録された形態で提供される。そして、コンピュータは読み書き処理部16を介してその記録媒体160からプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。また、そのプログラムを、例えば磁気ディスク,光ディスク,光磁気ディスク等の記憶装置(記録媒体)に記録しておき、その記憶装置から通信経路を介してコンピュータに提供してもよい。
【0077】
第1登録処理部111,第2登録処理部112及び判定部113としての機能を実現する際には、内部記憶装置に格納されたプログラムがコンピュータのマイクロプロセッサによって実行される。このとき、記録媒体160に記録されたプログラムをコンピュータが読み取って実行してもよい。なお、本実施形態において、内部記憶装置はメモリ12であり、マイクロプロセッサはCPU11である。
【0078】
第1登録処理部111は、取引を特定するキーに対応するトランザクションID(「取引識別情報」と称してもよい。)をワールドステート23に登録する。別言すれば、第1登録処理部111は、一連の複数の取引のうちの一の取引を特定するキーと、当該キーに対応するトランザクションIDとを、ブロックチェーン22を構成するブロック221の外に登録する。
【0079】
第2登録処理部112は、トレース情報及びトランザクションIDをブロックチェーン22のブロック221(
図12及び
図13等を用いて後述。)に登録する。別言すれば、第2登録処理部112は、複数の取引の内容及び順序を示すトレース情報又は当該トレース情報のハッシュ値と、キーと、直前のトランザクションを示すキー及び/又は直前のトランザクションを示すトランザクションIDとを、ブロック221内に登録する。
【0080】
判定部113は、トランザクションを生成した際に、ワールドステート23に記憶されている最新の関連付け情報と、ブロック221に記憶されている過去のトランザクションに含まれる最新の関連付け情報とを比較して、異なる場合に改ざんが発生していると判定する。別言すれば、トレース情報を登録する際に、ブロック221外のデータ集合に記憶されている最新のトランザクションIDと、ブロック221内に記憶されている複数の取引に含まれる最新のトランザクションIDとを比較して、異なる場合にブロック221外のデータ集合が改ざんされていると判定する。
【0081】
図12及び
図13は、
図7に示したブロックチェーンシステム100における取引情報の登録処理を説明する図である。
【0082】
図12に示すように、取引#1はA社からB社への取引であり(符号F1参照)、取引#2はB社からC社への取引であり(符号F2参照)、取引#3はC社からD社への取引である(符号F3参照)。
【0083】
ブロックチェーン22において、取引情報(「トランザクション」と称してもよい。)は、複数個がまとめられて各ブロック221に登録される。
図12に示す例では、各ブロック221は、3つのトランザクションが登録されている。ブロックチェーン22では、各ブロック221が数珠繋ぎにされて(別言すれば、「一列に繋げられて」)管理される。
【0084】
別言すれば、ブロックチェーン22では、複数の取引の内容及び順序を示すトレース情報と、トランザクションIDとが、ブロック221に登録される。
【0085】
符号F1及びF2で示したように、Tx1で示されるA社からB社へのトランザクションの後には、Tx4で示されるB社からC社へのトランザクションが発生する。また、符号F2及びF3で示したように、Tx4で示されるB社からC社へのトランザクションの後には、Tx7で示されるC社からD社へのトランザクションが発生する。
【0086】
ワールドステート23では、取引を特定するキー(例えば、取引#1~#3)と、キーに対応するトランザクションID(例えば、Tx1,Tx4及びTx7)とが、トランザクションの発生順に登録される。これにより、ブロックチェーン22とワールドステート23とが関連付けられて(符号F4参照)、ブロック221に登録されているトランザクションのデータを解析して情報を取得できる。
【0087】
図13に示すように、取引元や取引先等を示す取引内容はブロック221から取得される(符号G1参照)。これにより、取引内容がワールドステート23に登録されず、ブロック221に限って登録されるため、データ量を削減できる。
【0088】
また、取引を特定するキーを指定してトレースの起点を決定できる(符号G2参照)。これにより、任意の取引からトレースを開始できるため、ブロックチェーン22のトレース処理を高速化できる。
【0089】
更に、ワールドステート23が改ざんされた場合においても、ワールドステート23にはトレースに必要な情報は登録されない(符号G3参照)。
図13に示す例では、取引#3に対応するTx7が取引#4に対応するTx10に改ざんされているが、ワールドステート23には取引元及び取引先は登録されない。これにより、ワールドステート23の情報が改ざんされても検知可能であり、ブロックチェーンシステム100における信頼性を向上できる。
【0090】
図14は、
図7に示したブロックチェーンシステム100における取引情報の登録処理の詳細例を示すテーブルである。
【0091】
図14に示す登録情報には、No,取引,イベント,UserID,UserName,Operation,SrcResourceID,ResourceID,ResourceGroup,ResourceName,Owner,Hash,CreatedDate,RegisterdDate及びキー情報の各値が含まれる。
【0092】
図14に例示するテーブルでは、取引A~Dにそれぞれ対応する「データ登録」,「データ購入」,「学習済モデル作成」及び「データ購入」について、各値が登録されている。
【0093】
図15~
図19は、
図7に示したブロックチェーンシステム100における取引情報の登録処理の詳細例を説明するブロック図である。
【0094】
図15において、取引Aでは教師データ登録のイベントが発生する(符号H1参照)。このイベントの登録情報において、ユーザIDがUS0001で特定されるKenによって実行され、教師データを示すリソースIDはdata0001である。また、登録情報には、登録されるデータの種別は教師データであり、元データは無い。更に、登録情報には、教師データのハッシュ値や作成日時が含まれてよい。
【0095】
図16において、ブロック#1には、直前ブロックのハッシュ値と共に、トランザクション#1~#3が登録される。図示する例では、トランザクション#3において、取引Aが登録される(符号I1参照)。
【0096】
トランザクション#3には、ユーザIDがUS0001で特定されるKenによって実行され、教師データを示すリソースIDがdata0001である教師データ登録のイベントが登録される(符号I2参照)。また、登録情報には、登録されるデータの種別は教師データであり、元データは無い。更に、登録情報には、教師データのハッシュ値や作成日時に加えて、ブロック#1へのトランザクション#3の登録日時が含まれてよい。
【0097】
また、トランザクションには、直前の取引を示す「前のキー」と当該取引を示す「キー」が登録される。
図16に示す例において、前のキーはNULLであり、キーはUS0001+data0001である(符号I3参照)。なお、「前のキー」は、例えば、「前のトランザクションID」や「前のキー及び前のトランザクションID」であってもよい。
【0098】
ワールドステート23では、トランザクションID管理が行なわれる。
【0099】
トランザクションID管理では、キーとトランザクションIDとの対応付けが行なわれる。
図16に示す例では、キーUS0001+data0001に対してトランザクションIDとしてTx3が登録されていると共に、最新取引としてTx3が登録されている(符号I4参照)。
【0100】
判定部113は、ワールドステート23における最新のトランザクションIDであるTx3に対応するキーUS0001+data0001と、ブロック221に登録されているキーUS0001+data0001とが一致するか比較する。これにより、ワールドステート23における改ざんがないことを保証できる。
【0101】
図15において、取引Bでは教師データ購入のイベントが発生する(符号H2参照)。このイベントの登録情報において、ユーザIDがUS0002で特定されるMikeによって実行され、教師データを示すリソースIDはdata0001である。また、登録情報には、購入されるデータの種別は教師データであり、元データ(別言すれば、「購入対象」)はユーザIDがUS0001で特定されるKenが登録した、リソースIDがdata0001で特定される教師データである。更に、登録情報には、教師データのハッシュ値が含まれてよい。
【0102】
図17において、
図16に示したブロック#1に加えて、ブロック#2には、直前ブロックのハッシュ値と共に、トランザクション#4~#7が登録される。図示する例では、トランザクション#5において、取引Bが登録される(符号J1参照)。
【0103】
トランザクション#5には、ユーザIDがUS0002で特定されるMikeによって実行され、教師データを示すリソースIDがdata0001である教師データ購入のイベントが登録される(符号J2参照)。また、登録情報において購入されるデータの種別は教師データであり、元データはユーザIDがUS0001で特定されるKenが登録した、リソースIDがdata0001で特定される教師データである。更に、登録情報には、教師データのハッシュ値が含まれてよい。
【0104】
また、トランザクションには、直前の取引を示す「前のキー」と当該取引を示す「キー」が登録される。
図17に示す例において、前のキーはUS0001+data0001であり、キーはUS0002+data0001である(符号J3参照)。なお、「前のキー」は、例えば、「前のトランザクションID」や「前のキー及び前のトランザクションID」であってもよい。
【0105】
更に、トランザクションには、トレース情報が記録される。
図17に示す例では、US0001+data0001(Tx3)の次にUS0002+data0001(Tx5)が発生したことを示すトレース情報が記録されている(符号J4参照)。記録されるトレース情報は、例えば、「キー」,「トランザクションID」又は「キー及びトランザクションID」であってよい。また、ブロック221の各トランザクションには、トレース情報ではなく、トレース情報のハッシュ値が登録されてもよい。トランザクションにトレース情報のハッシュ値が登録される場合には、トレース情報はワールドステート23に登録される。これにより、ワールドステート23に登録されたトレース情報が改ざんされた場合には、改ざんされたトレース情報とトランザクションのハッシュ値とを比較することにより、改ざんを検知できる。
【0106】
ワールドステート23のトランザクションID管理では、キーとトランザクションIDとの対応付けが行なわれる。
図17に示す例では、キーUS0001+data0001に対してトランザクションIDとしてTx3が登録されていると共に、最新取引としてTx3がTx5に変更されている。また、キーUS0002+data0001に対してトランザクションIDとしてTx5が登録されていると共に、最新取引としてTx5が登録されている(符号J5参照)。
【0107】
判定部113は、ワールドステート23における最新のトランザクションIDであるTx5に対応するキーUS0002+data0001と、ブロック221に登録されているキーUS0002+data0001とが一致するか比較する。これにより、ワールドステート23における改ざんがないことを保証できる。
【0108】
図15において、取引Cでは学習済モデル作成のイベントが発生する(符号H3参照)。このイベントの登録情報において、ユーザIDがUS0002で特定されるMikeによって実行され、学習済モデルを示すリソースIDはmdl0001である。また、登録情報には、作成されるデータの種別は学習済モデルであり、元データはユーザIDがUS0002で特定されるMikeが購入した、リソースIDがdata0001で特定される教師データである。更に、登録情報には、学習済モデルのハッシュ値が含まれてよい。
【0109】
図18において、
図17に示したブロック#1及び#2に加えて、ブロック#3には、直前ブロックのハッシュ値と共に、トランザクション#8~#10が登録される。図示する例では、トランザクション#9において、取引Cが登録される(符号K1参照)。
【0110】
トランザクション#9には、ユーザIDがUS0002で特定されるMikeによって実行され、学習済モデルを示すリソースIDがmdl0001である学習済モデル作成のイベントが登録される(符号K2参照)。また、登録情報において購入されるデータの種別は学習済モデルであり、元データはユーザIDがUS0002で特定されるMikeが購入した、リソースIDがdata0001で特定される教師データである。更に、登録情報には、学習済モデルのハッシュ値が含まれてよい。
【0111】
また、トランザクションには、直前の取引を示す「前のキー」と当該取引を示す「キー」が登録される。
図18に示す例において、前のキーはUS0002+data0001であり、キーはUS0002+mdl0001である(符号K3参照)。なお、「前のキー」は、例えば、「前のトランザクションID」や「前のキー及び前のトランザクションID」であってもよい。
【0112】
更に、トランザクションには、トレース情報が記録される。
図17に示す例では、US0001+data0001(Tx3)の次にUS0002+data0001(Tx5)が発生し、US0002+data0001(Tx5)の次にUS0002+mdl0001(Tx9)が発生したことを示すトレース情報が記録されている(符号K4参照)。記録されるトレース情報は、例えば、「キー」,「トランザクションID」又は「キー及びトランザクションID」であってよい。また、ブロック221の各トランザクションには、トレース情報ではなく、トレース情報のハッシュ値が登録されてもよい。トランザクションにトレース情報のハッシュ値が登録される場合には、トレース情報はワールドステート23に登録される。これにより、ワールドステート23に登録されたトレース情報が改ざんされた場合には、改ざんされたトレース情報とトランザクションのハッシュ値とを比較することにより、改ざんを検知できる。
【0113】
ワールドステート23のトランザクションID管理では、キーとトランザクションIDとの対応付けが行なわれる。
図6に示す例では、キーUS0001+data0001に対してトランザクションIDとしてTx3が登録されていると共に、最新取引としてTx5がTx9に変更されている。また、キーUS0002+data0001に対してトランザクションIDとしてTx5が登録されていると共に、最新取引としてTx5がTx9に変更されている。更に、キーUS0002+mdl0001に対してトランザクションIDとしてTx9が登録されていると共に、最新取引としてTx9が登録されている(符号K5参照)。
【0114】
判定部113は、ワールドステート23における最新のトランザクションIDであるTx9に対応するキーUS0002+mdl0001と、ブロック221に登録されているキーUS0002+mdl0001とが一致するか比較する。これにより、ワールドステート23における改ざんがないことを保証できる。
【0115】
図15において、取引Dでは教師データ購入のイベントが発生する(符号H4参照)。このイベントの登録情報において、ユーザIDがUS0005で特定されるNancyによって実行され、教師データを示すリソースIDはdata0001である。また、登録情報には、登録されるデータの種別は教師データであり、元データ(別言すれば、「購入対象」)はユーザIDがUS0001で特定されるKenが登録した、リソースIDがdata0001で特定される教師データである。更に、登録情報には、教師データのハッシュ値が含まれてよい。
【0116】
図19において、
図18に示したブロック#1~#3に加えて、ブロック#4には、直前ブロックのハッシュ値と共に、トランザクション#11~#13が登録される。図示する例では、トランザクション#13において、取引Dが登録される(符号L1参照)。
【0117】
トランザクション#13には、ユーザIDがUS0005で特定されるNancyによって実行され、教師データを示すリソースIDがdata0001である教師データ購入のイベントが登録される(符号L2参照)。また、登録情報において購入されるデータの種別は教師データであり、元データはユーザIDがUS0001で特定されるKenが登録した、リソースIDがdata0001で特定される教師データである。更に、登録情報には、教師データのハッシュ値が含まれてよい。
【0118】
また、トランザクションには、直前の取引を示す「前のキー」と当該取引を示す「キー」が登録される。
図19に示す例において、前のキーはUS0001+data0001であり、キーはUS0005+data0001である(符号L3参照)。なお、「前のキー」は、例えば、「前のトランザクションID」や「前のキー及び前のトランザクションID」であってもよい。
【0119】
更に、トランザクションには、トレース情報が記録される。
図19に示す例では、US0001+data0001(Tx3)の次にUS0002+data0001(Tx5)が発生し、US0002+data0001(Tx5)の次にUS0002+mdl0001(Tx9)が発生したことを示すトレース情報が記録されている。また、
図19に示す例では、US0001+data0001(Tx3)の次にUS0005+data0001(Tx13)が発生したことを示すトレース情報が記録されている(符号L4参照)。記録されるトレース情報は、例えば、「キー」,「トランザクションID」又は「キー及びトランザクションID」であってよい。また、ブロック221の各トランザクションには、トレース情報ではなく、トレース情報のハッシュ値が登録されてもよい。トランザクションにトレース情報のハッシュ値が登録される場合には、トレース情報はワールドステート23に登録される。これにより、ワールドステート23に登録されたトレース情報が改ざんされた場合には、改ざんされたトレース情報とトランザクションのハッシュ値とを比較することにより、改ざんを検知できる。
【0120】
ワールドステート23のトランザクションID管理では、キーとトランザクションIDとの対応付けが行なわれる。
図17に示す例では、キーUS0001+data0001に対してトランザクションIDとしてTx3が登録されていると共に、最新取引としてTx13が登録されている。また、キーUS0002+data0001に対してトランザクションIDとしてTx5が登録されていると共に、最新取引としてTx13が登録されている。更に、キーUS0002+mdl0001に対してトランザクションIDとしてTx9が登録されていると共に、最新取引としてTx13が登録されている。また、キーUS0005+data0001に対してトランザクションIDとしてTx13が登録されていると共に、最新取引としてTx13が登録されている(符号L5参照)。
【0121】
判定部113は、ワールドステート23における最新のトランザクションIDであるTx13に対応するキーUS0005+data0001と、ブロック221に登録されているキーUS0005+data0001とが一致するか比較する。これにより、ワールドステート23における改ざんがないことを保証できる。
【0122】
〔B-2〕動作例
図7に示したブロックチェーンシステム100における取引情報の登録処理を、
図20に示すフローチャート(ステップS1~S9)に従って説明する。
【0123】
第1登録処理部111は、ワールドステート23に対して、今回追加する取引のデータを追加する(ステップS1)。
【0124】
第2登録処理部112は、追加するトランザクションに対して、前のキーを記録する(ステップS2)。
【0125】
第2登録処理部112は、元データがあるかを判定する(ステップS3)。
【0126】
元データがない場合には(ステップS3のNoルート参照)、第2登録処理部112は、今回追加する取引を新規のトレース情報として作成する(ステップS4)。そして、処理はステップS8へ移行する。
【0127】
一方、元データがある場合には(ステップS3のYesルート参照)、第2登録処理部112は、ワールドステート23から元データの最新取引トランザクションIDを取得する(ステップS5)。
【0128】
第2登録処理部112は、最新取引トランザクションIDのトランザクションから、トレース情報を取得する(ステップS6)。
【0129】
第2登録処理部112は、トレース情報に今回追加する取引の関連付けを追加して、新たなトレース情報を作成する(ステップS7)。
【0130】
第2登録処理部112は、追加するトランザクションにトレース情報を記録する(ステップS8)。
【0131】
第2登録処理部112は、トレース情報の各データについて、ワールドステート23の最新取引トランザクションIDを、今回追加するトランザクションIDに更新する(ステップS9)。そして、取引情報の登録処理は終了する。
【0132】
〔B-3〕効果
上述した実施形態の一例におけるブロックチェーンシステム100によれば、例えば、以下の作用効果を奏することができる。
【0133】
第1登録処理部111は、一連の複数の取引のうちの一の取引を特定するキーと、当該キーに対応するトランザクションIDとを、ブロックチェーン22を構成するブロック221の外に登録する。また、第2登録処理部112は、複数の取引の内容及び順序を示すトレース情報又は当該トレース情報のハッシュ値と、キーと、直前のトランザクションを示すキー及び/又は直前のトランザクションを示すトランザクションIDとを、ブロック221内に登録する。
【0134】
これにより、任意の取引を起点としてブロックチェーン22に記録された取引の情報をトレースすることができ、トレース処理を高速化できる。すなわち、トレーサビリティ機能を有するブロックチェーンシステム100を提供することができる。
【0135】
判定部113は、トレース情報を登録する際に、ブロック221外のデータ集合に記憶されている最新のキーと、ブロック221内に記憶されている複数の取引に含まれる最新のキーとを比較して、異なる場合にブロック221外のデータ集合が改ざんされていると判定する。
【0136】
これにより、ワールドステート23の情報が改ざんされても、改ざんの発生を検知でき、ブロックチェーンシステム100における信頼性を向上できる。
【0137】
第1登録処理部111は、ブロック221外において、複数の取引の内容を登録しない。
【0138】
これにより、取引の内容及び順序を示すトレース情報がブロックチェーン22のブロック221に限って登録されるため、ブロックチェーンシステム100におけるデータ量を削減できる。
【0139】
〔C〕その他
開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成及び各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
【0140】
上述した実施形態の一例においては、ブロックチェーン基盤として「Hyperledger Fabric」を挙げたが、これに限定されるものではない。実施形態においては、種々のブロックチェーン基盤を採用できる。
【0141】
〔D〕付記
以上の実施形態に関し、さらに以下の付記を開示する。
【0142】
(付記1)
端末からの要求に応じてブロックチェーンを用いた取引を記録するコンピュータに、
一連の複数の取引のうちの一の取引を特定するキーと、当該キーに対応する取引識別情報とを、前記ブロックチェーンを構成するブロックの外に登録し、
前記複数の取引の内容及び順序を示すトレース情報又は当該トレース情報のハッシュ値と、前記キーとを、直前のトランザクションを示すキー及び/又は直前のトランザクションを示す取引識別情報と前記ブロック内に登録する、
処理を実行させる、プログラム。
【0143】
(付記2)
前記トレース情報を登録する際に、前記ブロック外のデータ集合に記憶されている最新のキーと、前記ブロック内に記憶されている前記複数の取引に含まれる最新のキーとを比較して、異なる場合に前記ブロック外のデータ集合が改ざんされていると判定する、
処理を前記コンピュータに実行させる、付記1に記載のプログラム。
【0144】
(付記3)
前記ブロック外において、前記複数の取引の内容を登録しない、
処理を前記コンピュータに実行させる、付記1又は2に記載のプログラム。
【0145】
(付記4)
情報処理装置と端末とを備え、前記端末からの要求に応じてブロックチェーンを用いた取引を記録する情報処理システムであって、
前記情報処理装置は、
一連の複数の取引のうちの一の取引を特定するキーと、当該キーに対応する取引識別情報とを、前記ブロックチェーンを構成するブロックの外に登録する第1登録処理部と、
前記複数の取引の内容及び順序を示すトレース情報又は当該トレース情報のハッシュ値と、前記キーと、直前のトランザクションを示すキー及び/又は直前のトランザクションを示す取引識別情報とを、前記ブロック内に登録する第2登録処理部と、
を備える、情報処理システム。
【0146】
(付記5)
前記トレース情報を登録する際に、前記ブロック外のデータ集合に記憶されている最新のキーと、前記ブロック内に記憶されている前記複数の取引に含まれる最新のキーとを比較して、異なる場合に前記ブロック外のデータ集合が改ざんされていると判定する判定部
を更に備える、付記4に記載の情報処理システム。
【0147】
(付記6)
前記第1登録処理部は、前記ブロック外において、前記複数の取引の内容を登録しない、
付記4又は5に記載の情報処理システム。
【0148】
(付記7)
端末からの要求に応じてブロックチェーンを用いた取引を記録する情報処理方法であって、
一連の複数の取引のうちの一の取引を特定するキーと、当該キーに対応する取引識別情報とを、前記ブロックチェーンを構成するブロックの外に登録し、
前記複数の取引の内容及び順序を示すトレース情報又は当該トレース情報のハッシュ値と、前記キーと、直前のトランザクションを示すキー及び/又は直前のトランザクションを示す取引識別情報とを、前記ブロック内に登録する、
情報処理方法。
【0149】
(付記8)
前記トレース情報を登録する際に、前記ブロック外のデータ集合に記憶されている最新のキーと、前記ブロック内に記憶されている前記複数の取引に含まれる最新のキーとを比較して、異なる場合に前記ブロック外のデータ集合が改ざんされていると判定する、
付記7に記載の情報処理方法。
【0150】
(付記9)
前記ブロック外において、前記複数の取引の内容を登録しない、
付記7又は8に記載の情報処理方法。
【符号の説明】
【0151】
100 :ブロックチェーンシステム
10 :Hyperledger Fabric
101 :ブロックチェーンプラットフォーム
1012 :台帳
102 :クライアントアプリケーション
1111 :トレースデータを記録する関数
1112 :トレース結果を参照する関数
1113 :トレーサビリティ機能ライブラリ
1 :ピア
110 :処理部
11 :CPU
111 :第1登録処理部
112 :第2登録処理部
113 :判定部
12 :メモリ
13 :表示制御部
130 :表示装置
14 :記憶装置
15 :入力I/F
151 :マウス
152 :キーボード
16 :読み書き処理部
160 :記録媒体
17 :通信I/F
2 :オーダリングサービス
4 :サーバアプリケーション
5 :ウェブブラウザ
21,61 :チェーンコード
22,62 :ブロックチェーン
221,621:ブロック
23,63 :ワールドステート
40 :クライアント
41 :ピアコマンド
42 :Client SDK
43 :アプリケーション