本発明における情報処理装置100を、図1に示す情報処理システム1に適用した例を用いて説明する。情報処理システム1では、図1に示すように、情報処理装置100A〜100D(情報処理装置100A〜100Dを単に情報処理装置100ともいう)のそれぞれがネットワーク210を介して通信可能に接続されている。
本実施の形態に係る情報処理システム1は、貸し会議室の利用に係る契約(トランザクション)を履行するスマートコントラクトを実行するシステムである。具体的に、情報処理システム1は、例えば、貸し会議室の利用開始時刻になると当該貸し会議室を解錠する解錠処理を行い、貸し会議室の利用終了時刻になると当該貸し会議室を施錠する施錠処理を実行する。解錠処理では、予めユーザに送付した、貸し会議室のドアを解錠するために使用されるQRコード(登録商標)の解錠権限を有効にする処理が行われ、施錠処理では、当該QRコード(登録商標)の解錠権限を取り消す処理が行われる。情報処理システム1は、ユーザによる端末操作により貸し会議室の利用登録が行われると、すなわちトランザクションが発生すると、発生したトランザクションの内容を含むデータブロックをハッシュチェーンに登録する。そして、発生したトランザクションを履行するために実行するスマートコントラクトの実行条件と実行内容とを規定する定時実行データを生成し、当該定時実行データを含むデータブロックを専用のハッシュチェーンに登録する。これらのハッシュチェーンおよび専用のハッシュチェーンは、情報処理装置システム1における複数の情報処理装置100(情報処理装置100A〜100D)で共有され、情報処理システム1は、スマートコントラクトの実行条件を判定する情報処理装置100を順次切り替え、一の情報処理装置100において定時実行データに規定されるスマートコントラクトの実行条件を満たすと判断した場合、当該実行条件を満たすと判断した情報処理装置100が、定時実行データに規定される内容の解錠処理や施錠処理を実行する。なお、以下では、解錠処理や施錠処理等の定時実行データに規定される内容の処理を、スマートコントラクトと呼ぶことがある。
情報処理装置100は、携帯電話やスマートフォン、タブレットやPC(Personal Computer)等の情報端末であり、P2P(Peer to Peer)等の分散型のネットワーク210を構築している。なお、情報処理システム1は、P2P型のシステムに限られず、例えばクラウドコンピューティング型であってもよい。
情報処理装置100は、顧客と店舗との間で発生したトランザクションのデータ(トランザクションデータ)を格納したデータブロックと、当該トランザクションを履行するための定時実行データを含むデータブロックとを、対応する属性のハッシュチェーンに連結するハッシュチェーン登録装置として機能する。トランザクションデータとしては、例えば顧客の情報や会議室の情報、利用開始時刻や終了時刻といった契約内容が含まれ、定時実行データとしては、例えば、トランザクションを履行する実行条件と当該実行条件が成立した場合に実行すべきスマートコントラクトが含まれる。さらに、情報処理装置100は、トランザクションを履行する実行条件が成立したか否かを判定し、成立したと判定した場合に、当該実行条件に対応したスマートコントラクトを実行するスマートコントラクト実行装置としても機能する。情報処理装置100は、スマートコントラクトの処理内容をプログラム化したスマートコントラクトプログラムを格納しており、当該スマートコントラクトプログラムを起動することにより、スマートコントラクトを実行する。
なお、情報処理装置100は、ユーザの入出力部に対する操作等によってトランザクションの内容が入力されることにより、トランザクションデータを生成し、ネットワーク210へ配信する機能を有するトランザクション生成装置として機能することもある。ハッシュチェーン登録装置にて登録された内容は、ネットワーク210を介して、各情報処理装置100で共有される。また、通常、一定数のトランザクションデータが一つのデータブロックに格納される(一定数のトランザクションデータをひとまとめにして一つのブロックに格納する)が、本実施の形態では、理解を容易にするため、一つのトランザクションデータが一つのデータブロックに格納されるものとする。
本実施の形態において、顧客と店舗との間で発生したトランザクションにより生成された(情報処理装置100A〜100Dのいずれかがトランザクション生成装置として機能して生成された)トランザクションデータは、データブロックと呼ばれる一つの単位に格納され、当該データブロックを時系列に連結したそれぞれの属性のハッシュチェーンによって管理される。例えば、顧客Aと店舗1との間で発生したトランザクションデータは、顧客Aの属性のハッシュチェーンおよび店舗1の属性のハッシュチェーンとに、それぞれ新たなデータブロックとして同内容のデータが登録されて管理される。そして、顧客Aと店舗1との間で発生したトランザクションデータに基づいて、トランザクションを履行する実行条件とこれに対応するスマートコントラクトが、スマートコントラクト専用の属性のハッシュチェーンに登録されて管理される。
次に、図2〜4を参照し、この実施の形態における情報処理装置100の構成について説明する。なお、図示する例では、情報処理装置100Aを例としているが、情報処理装置100B〜100Dの端末が情報処理装置100として機能する場合についても同様であるため、説明は省略する。なお、図示は省略しているが、トランザクション生成装置としての機能を有する機能部が設けられていてもよい。
図2に示すように、情報処理装置100A(以下、情報処理装置100)は、記憶部110と、制御部120と、入出力部130と、通信部140と、これらを相互に接続するシステムバス(図示省略)と、を備えている。
記憶部110は、ROM(Read Only Memory)やRAM(Random Access Memory)等を備える。ROMは制御部120のCPU(Central Processing Unit)が実行するプログラム及び、プログラムを実行する上で予め必要なデータを記憶する(図示省略)。具体的に、本実施の形態では、当該情報処理装置100を、ハッシュチェーン登録装置およびスマートコントラクト実行装置として機能させるためのプログラムが、予めインストールされている。RAMは、プログラム実行中に作成されたり変更されたりするデータを記憶する。記憶部110は、制御部120が実行するプログラムが用いる主要な情報として、各属性のハッシュチェーン111、スマートコントラクトプログラム112、ノードリスト113を記憶する。なお、記憶部110は、特許請求の範囲における記憶手段の一例である。
各属性のハッシュチェーン111は、顧客、店舗、スマートコントラクトといったそれぞれの属性に対応するハッシュチェーンである。属性が顧客や店舗であるハッシュチェーンは、トランザクションデータ(契約のデータ)が格納されたデータブロックが連結されたものである。属性がスマートコントラクトであるハッシュチェーンは、スマートコントラクトを実行する条件及び実行内容が規定される定時実行データが格納されたデータブロックが連結された特別なハッシュチェーンである。各属性のハッシュチェーン111は、後述するデータブロック登録処理にて記憶部110に記憶される。なお、トランザクションデータが格納されたデータブロックが連結されたハッシュチェーンは、特許請求の範囲における第1のブロックチェーンの一例であり、定時実行データが格納されたデータブロックが連結されたハッシュチェーンは、特許請求の範囲における第2のブロックチェーンの一例である。
スマートコントラクトプログラム112は、スマートコントラクトの処理内容をプログラム化したデータである。具体的に、スマートコントラクトプログラム112には、貸し会議室を解錠/施錠する解錠/施錠処理、といった各処理のスマートコントラクトプログラム112が記憶部110にそれぞれ記憶される。
ノードリスト113は、ブロックチェーンネットワークに接続される情報処理装置100の名称、情報処理装置100を識別する情報であるノードID(Identification)等の情報を含む。具体的に、ノードIDは、ブロックチェーンネットワークに登録された順番に応じて、情報処理装置100に付与される識別番号であり、情報処理装置100の追加又は削除等のタイミングで自動的に更新される。図3はノードリスト113の一例である。図示するように、情報処理装置100A〜100Dが、情報処理装置100A、情報処理装置100B、情報処理装置100C、情報処理装置100Dの順番でブロックチェーンネットワークに登録された場合、ノードID「0」、「1」、「2」、「3」がそれぞれ割り当てられ、ノードリスト113に登録される。なお、例えば、情報処理装置100Cが削除されると、情報処理装置100Dに、情報処理装置100Cに付与されていたノードID「2」が新たに割り当てられる。このように、ノードリスト113は、ブロックチェーンネットワークに接続される情報処理装置100の登録状況に応じて更新される。
図2に戻り、制御部120は、CPUやASIC(Application Specific Integrated Circuit)等から構成される。制御部120は、記憶部110に記憶されたプログラムに従って動作し、当該プログラムに従った処理を実行する。制御部120は、記憶部110に記憶されたプログラムにより提供される主要な機能部として、初期登録部121と、同期処理部122と、データブロック登録部123と、定時実行データ登録部124と、データ取得部125と、現在時刻取得部126と、判断部127と、スマートコントラクト実行部128とを備える。
初期登録部121は、ユーザの入出力部130に対する操作や、通信部140を介して受信した要求に基づいて、新たな属性のハッシュチェーンを生成するために必要な初期情報を登録する機能を実現する機能部である。詳しくは後述するが、初期登録部121は、例えば、顧客Aの属性のハッシュチェーンを生成するために必要な初期情報として、属性情報、顧客Aのアドレス、インデックス値等を登録する機能(すなわち、後述するハッシュチェーンの土台情報を登録する機能)を有している。
同期処理部122は、当該情報処理装置100に記憶された各属性のハッシュチェーンと、他の情報処理装置100に記憶された各属性のハッシュチェーンとを同期する機能を実現する機能部である。同期処理部122は、後述するデータブロック登録処理にてトランザクションデータまたは定時実行データを当該情報処理装置100におけるデータブロックに登録する前と後に、他の情報処理装置100と同期する機能を有している。また、同期処理部122は、後述する初期登録処理において他の情報処理装置100へ、ハッシュチェーンの土台情報を同期させる機能を有している。
データブロック登録部123は、発生したトランザクションのトランザクションデータを含むデータブロックを、当該情報処理装置100の各属性のハッシュチェーン111のうち、対応する属性のハッシュチェーンに追加する機能を実現する機能部である。詳しくは後述するが、データブロック登録部123は、例えば、顧客Aと店舗1とのトランザクションが発生した場合、顧客Aと店舗1を属性とするそれぞれのハッシュチェーンに、当該トランザクションの内容(トランザクションデータ)を、新たなデータブロックとして登録する機能を有している。なお、データブロック登録部123は、特許請求の範囲におけるトランザクションデータ格納手段の一例である。
定時実行データ登録部124は、データブロック登録部123により登録されたトランザクションデータに基づいて定時実行データを生成し、定時実行データを含むデータブロックを、当該情報処理装置100の定時実行データを格納するスマートコントラクトの属性のハッシュチェーンに追加する機能を実現する機能部である。具体的に、定時実行データ登録部124は、トランザクションデータから、スマートコントラクトを実行する条件や当該条件を満たした場合の実行内容等の情報を取得し、定時実行データを生成する。図4は、顧客Aが店舗1の貸し会議室Xを20XX年4月1日10:00〜12:00に利用する予約をしたというトランザクションに基づいて、定時実行データ登録部124により生成される定時実行データの一例である。図示するように、定時実行データには、定時実行データを識別する情報を示す「シーケンスID」、スマートコントラクトを実行する条件である「実行日」、「実行時刻」、実行内容を示す「実行するSC(Smart Contract)プログラム名」、その他の必要情報として利用の対象となる情報を示す「対象」、当該トランザクションデータの登録を行った者を特定する「登録者アドレス」、登録を行った者の電子署名の情報を示す「電子署名」等の情報が含まれる。なお、1つのトランザクションデータから生成される定時実行データの数は任意であり、1つのトランザクションデータから1つの定時実行データが生成されてもよいし、複数の定時実行データが生成されてもよく、トランザクションデータの内容に応じて異なる数の定時実行データが生成されてもよい。例えば、当該トランザクションを履行するために、貸し会議室Xを解錠する処理および貸し会議室Xを施錠する処理の2つの処理が必要である場合、定時実行データ登録部124は、当該処理を実行するスマートコントラクトプログラム112の数に応じて2つの定時実行データを生成する。定時実行データ登録部124は、スマートコントラクトの属性のハッシュチェーンに、当該生成した定時実行データを、新たなデータブロックとして登録する。なお、定時実行データ登録部124は、特許請求の範囲における実行データ格納手段の一例であり、定時実行データを識別する情報は、特許請求の範囲における特定情報の一例である。
データ取得部125は、登録された各属性のハッシュチェーン111に含まれるデータブロックの内容を取得する機能を実現する機能部である。
現在時刻取得部126は、現在の時刻を取得する機能を実現する機能部である。具体的に、現在時刻取得部126は、情報処理装置100が有する内部時計から現在時刻を取得し、1970年1月1日午前0時0分0秒の時刻からの形式的な経過秒数であるUNIX(登録商標)時間に変換する機能を有している。なお、現在時刻取得部126は、特許請求の範囲における現在時刻取得手段の一例である。
判断部127は、自己がスマートコントラクトを実行する実行主体であるか否かを判断し、自己が実行する主体であると判断した場合に、いずれの定時実行データのスマートコントラクトを実行するかを決定する機能を実現する機能部である。具体的に、判断部127は、現在時刻取得部126により変換されたUNIX(登録商標)時間を、ノードリスト113に記載されたノードの数で除算してその余りを求め、求めた余りの値と自己のノードIDとが一致した場合に、自己がスマートコントラクトを実行する主体であると判断する。また、判断部127は、自己がスマートコントラクトを実行する主体であると判断すると、記憶部110に記憶された定時実行データの中から、未実行かつ実行時刻が現在時刻以下とする条件を満たす定時実行データを抽出し、抽出した定時実行データの中から最も早い時刻のものを、実行するスマートコントラクトの定時実行データであると決定する。なお、判断部127は、特許請求の範囲における主体判断手段と条件判定手段と対象決定手段の一例である。
スマートコントラクト実行部128は、判断部127により決定された定時実行データのスマートコントラクトを実行し、当該スマートコントラクトを実行したことを示す実行済情報をスマートコントラクトの属性のハッシュチェーンに追加する機能を実現する機能部である。具体的に、スマートコントラクト実行部128が、定時実行データに示されたスマートコントラクトプログラム112を実行することにより、スマートコントラクトが実行されることになる。また、実行済情報には、実行した定時実行データを識別する情報と実行したブロックチェーンのノードを特定する情報とが含まれる。実行済情報は、ブロックチェーンの全ノードに共有され、全てのノードが、いずれの定時実行データが実行済みであるか否かを把握することが可能になる。これにより、実行済みの定時実行データが再度実行されることを防ぐことができる。なお、スマートコントラクト実行部128は、特許請求の範囲における対応処理実行手段と実行済情報格納手段の一例である。
これら各機能部が協働して、当該情報処理装置100をハッシュチェーン登録装置およびスマートコントラクト実行装置として機能させる。
入出力部130は、キーボード、マウス、カメラ、マイク、液晶ディスプレイ、有機EL(Electoro−Luminescence)ディスプレイ等から構成され、データの入出力を行うための装置である。
通信部140は、情報処理装置100A〜100Dがネットワーク210を介して通信を行うためのデバイスである。
以上が、情報処理装置100の構成である。続いて情報処理装置100の動作等について、図を参照して説明する。まず、ハッシュチェーン登録装置として機能した場合における情報処理装置100の動作について、図5〜8を参照して説明する。
まず、ユーザの入出力部130に対する操作(入力操作)や、ユーザ端末として動作する情報処理装置100から受信した要求(登録要求)に基づいて、図5に示す初期登録処理が行われる。初期登録処理は、新たな属性のハッシュチェーンを生成するために必要な初期情報を登録する処理である。この例では、理解を容易にするため、顧客Aについての初期登録を行う場合について説明する。初期登録処理を開始すると、情報処理装置100は、初期登録部121の機能により、属性データを生成する(ステップS101)。具体的に、ステップS101では、入力操作や登録要求に含まれる、属性情報である顧客Aの情報および顧客Aのアドレスを、顧客Aの属性のハッシュチェーンを生成するための情報として、記憶部110へ登録する。なお、当該情報は、各属性のハッシュチェーン111のうちの属性Aのハッシュチェーンとして登録されればよい。また、属性情報は登録せず、アドレスのみ登録するようにしてもよい。
次に、情報処理装置100は、初期登録部121の機能により、登録した顧客Aの属性のハッシュチェーンのインデックス値に、初期値である「0」を登録する(ステップS102)。インデックス値が「0」であることは、当該ハッシュチェーンが初期状態であること(何らデータブロックが登録されていない状態であること)を示している。すなわち、ステップS101およびステップS102の処理では、データブロックがチェーンで連結されてはいないものの、データブロックが未登録のハッシュチェーン(ハッシュチェーンの土台情報)が生成されていると言える。なお、この状態では、データブロックがチェーンで連結されていないため、データを削除でき、また、削除したことを検証することができない、といった問題がある。そこで、対改ざん性を高めるため、ランダムで選択したハッシュチェーンに対して、特別なトランザクションを発生させ、インデックス値が「0」のデータブロックをチェーンで連結する処理を行うようにしてもよい。
ステップS102の処理を実行した後、情報処理装置100は、同期処理部122の機能により、他の情報処理装置100へ、当該内容を登録し(ステップS103)、初期登録処理を終了する。具体的に、ステップS103では、当該情報処理装置100における顧客Aの属性のハッシュチェーン(ハッシュチェーンの土台情報)の内容を、他の情報処理装置100の記憶部110における各属性のハッシュチェーン111へコピーする。これにより、全ての情報処理装置100において顧客Aの属性のハッシュチェーン(ハッシュチェーンの土台情報)が共有されることとなる。
次に、発生したトランザクションデータを対応する属性のハッシュチェーンへ登録し、当該トランザクションデータに基づいて定時実行データを生成してスマートコントラクトの属性のハッシュチェーンに追加するデータブロック登録処理について説明する。当該データブロック登録処理は、発生したトランザクションに対応するトランザクションデータを受信することにより実行される。トランザクションデータは、ユーザ端末として機能する情報処理装置100より受信するものであるが、入出力部130に入力されてもよい。なお、本実施の形態では、上述したように、一つのトランザクションにつき一つのデータブロックが作成され登録されることから、当該データブロック登録処理は、登録すべきトランザクションの数が複数ある場合、繰り返し実行されることとなる。
図6は、データブロック登録処理の一例を示すフローチャートである。この例では、理解を容易にするため、顧客Aが店舗1の貸し会議室Xを20XX年4月1日10:00〜12:00に利用する予約したというトランザクションが発生した場合のデータブロック登録処理について説明する。
顧客Aが店舗1の貸し会議室Xを予約したというトランザクションが発生すると、これに対応するトランザクションデータが顧客Aの情報処理装置100または店舗1の情報処理装置100から送信される。これにより、情報処理装置100は、データブロック登録部123の機能により、データブロック登録処理を開始する。なお、顧客Aの情報処理装置100と店舗1の情報処理装置100の両方から同内容のトランザクションデータを受信することをもってデータブロック登録処理を開始するようにしてもよい。異なる内容のトランザクションデータを受信した場合には、エラーを出力するようにしてもよい。
データブロック登録処理を開始すると、情報処理装置100は、まず、同期処理部122の機能により、当該情報処理装置100における対象のハッシュチェーンと、他の情報処理装置100における対象のハッシュチェーンとが、同期しているか否かを判定する(ステップS201)。具体的に、この例におけるステップS201の処理では、各属性のハッシュチェーン111のうち、顧客Aのハッシュチェーンに含まれる最新のデータブロックのインデックス値とハッシュ値、および店舗1のハッシュチェーンに含まれる最新のデータブロックのインデックス値とハッシュ値と、他の全ての情報処理装置100に記憶されたものと同一であるか否かを判定することで、同期しているか否かを判定する。
図7(A)に示す例を用いて説明すると、当該情報処理装置100(トランザクションデータを受信した情報処理装置100のことをいう、以下同様)の各属性のハッシュチェーン111のうち、顧客Aのハッシュチェーンには、インデックス値「N−1」のデータブロックが最新のデータブロックとして登録されており、店舗1のハッシュチェーンには、インデックス値「Z−1」のデータブロックが最新のデータブロックとして登録されている。なお、図示するように、本実施の形態におけるハッシュチェーンのデータブロック(第mのデータブロック)には、登録データ(トランザクションデータ)と、現在のハッシュチェーンの末尾(1つ前)のデータブロック(第m−1のデータブロック)のハッシュ値(256ビット)が含まれる点は、従来のブロックチェーンの仕組みと同様である。
ステップS201の処理では、インデックス値「N−1」と当該N−1のハッシュ値、およびインデックス値「Z−1」と当該Z−1のハッシュ値が、他の全ての情報処理装置100に記憶されているものと一致するか否かを判定することで、同期しているか否かを判定する。例えば、インデックス値「N」と当該Nのハッシュ値が記憶されている情報処理装置100が存在する場合には、当該情報処理装置100に記憶されている顧客Aの属性のハッシュチェーンの情報が古いと判定する(インデックス値「Z」および当該Zのハッシュ値の場合には店舗1の属性のハッシュチェーン)。一方、インデックス値「N−2」と当該N−2のハッシュ値が記憶されている情報処理装置100が存在する場合には、その情報処理装置100に記憶されている顧客Aの属性のハッシュチェーンの情報が古いと判定する(インデックス値「Z−2」および当該Z−2のハッシュ値の場合には店舗1の属性のハッシュチェーン)。
図6に戻り、同期していない場合(ステップS201;No)、情報処理装置100は、同期処理部122の機能により、最新のハッシュチェーンの内容を、古いと判定したハッシュチェーンが登録されている情報処理装置100へコピーする同期処理を実行する(ステップS202)。なお、ステップS202の処理では、ハッシュチェーン全体をコピーしてもよいし、不足しているデータブロックのみ(インデックス値やハッシュ値も含む)をコピーしてもよい。
ステップS201にて同期していると判定した場合(ステップS201;Yes)、またはステップS202の処理を実行した場合、情報処理装置100は、データブロック登録部123の機能により、対象のハッシュチェーンにトランザクションデータを格納したデータブロックをそれぞれ追加する(ステップS203)。なお、上述したように、新たなデータブロック(第mのデータブロック)をハッシュチェーンに追加する場合、登録データ(トランザクションデータ)と、現在のハッシュチェーンの末尾(1つ前)のデータブロック(第m−1のデータブロック)のハッシュ値(256ビット)をデータブロックに格納し、現在のハッシュチェーンの末尾(1つ前)のデータブロック(第m−1のデータブロック)に連結する点は、従来のブロックチェーンの仕組みと同様である。
具体的に、ステップS203の処理では、図7(B)に示すように、顧客Aの属性のハッシュチェーンには、インデックス値「N」のデータブロックがインデックス値「N−1」のデータブロックに連結されるとともに、店舗1の属性のハッシュチェーンには、インデックス値「Z」のデータブロックがインデックス値「Z−1」のデータブロックに連結される。連結されるそれぞれのデータブロックは、同一のトランザクションデータが含まれる。具体的に、顧客Aから(From:01)店舗1へ(To:XX)貸し会議室Xの予約をしたことを示す内容が登録される。さらに、顧客Aの属性のハッシュチェーンにおけるインデックス値「N」のデータブロックには、N−1のハッシュ値が格納され、店舗1の属性のハッシュチェーンにおけるインデックス値「Z」のデータブロックには、Z−1のハッシュ値が格納される。このように、この実施の形態における情報処理装置100は、対応するそれぞれのハッシュチェーンに、同一のトランザクションデータを追加する。
図6に戻り、ステップS203の処理を実行した後、情報処理装置100は、定時実行データ登録部124の機能により、ステップS203の処理によって追加されたトランザクションデータに基づいて定時実行データを生成し、生成した定時実行データをスマートコントラクトの属性のハッシュチェーンのデータブロックに追加する(ステップS204)。図8は、スマートコントラクトの属性のハッシュチェーンの構成の一例を表す図である。上述したように、スマートコントラクトの属性のハッシュチェーンは、1つの定時実行データが1つのデータブロックに格納され連結されたハッシュチェーンであることから、図示するように、1つのブロックには、現在のハッシュチェーンの末尾(1つ前)のデータブロック(第M−1のデータブロック)のハッシュ値(256ビット)が含まれる点は、トランザクションデータを格納するハッシュチェーンと同様であるとともに、従来のブロックチェーンの仕組みと同様である。また、ステップS203の処理では、同じ内容のトランザクションデータが顧客Aの属性のハッシュチェーンと店舗1の属性のハッシュチェーンのそれぞれに追加されるが、ステップS204では、定時実行データがスマートコントラクトの属性のハッシュチェーンに登録されるのみである。
ステップS204の処理を実行した後、情報処理装置100は、同期処理部122の機能により、ステップS203およびステップS204にてデータブロックを追加した属性のハッシュチェーンを他の情報処理装置100へ登録することにより(ステップS205)、当該情報処理装置100と他の情報処理装置100とを同期してから、データブロック登録処理を終了する。なお、ステップS205の処理では、当該情報処理装置100における顧客Aおよび店舗1の属性のハッシュチェーンそれぞれの内容と、スマートコントラクトの属性のハッシュチェーンの内容とを、他の情報処理装置100の記憶部110における各属性のハッシュチェーン111へコピーする。ステップS205の処理では、ステップS202の処理と同様に、ハッシュチェーン全体をコピーしてもよいし、不足しているデータブロックのみ(インデックス値やハッシュ値も含む)をコピーしてもよい。
以上がハッシュチェーン登録装置として機能した場合における情報処理装置100の動作である。続いてスマートコントラクト実行装置として機能した場合における情報処理装置100の動作について、図9、10を参照して説明する。なお、理解を容易にするため、ブロックチェーンネットワークには、情報処理装置100としてそれぞれ動作する顧客Aの端末と店舗1の端末が接続され(ノード数が「2」)、顧客Aが店舗1の貸し会議室Xを20XX年4月1日10:00〜12:00に利用する予約したというトランザクションが発生し、上述したデータブロック登録処理により、当該トランザクションに基づくトランザクションデータ及び定時実行データのデータブロックが各ハッシュチェーンに登録されている場合を例に説明する。すなわち、ブロックチェーンネットワークに接続された顧客Aの情報処理装置100と店舗1の情報処理装置100とがそれぞれスマートコントラクト実行装置として機能する場合について説明する。
図9は、スマートコントラクト実行処理の一例を示すフローチャートである。スマートコントラクト実行処理は、ブロックチェーンネットワークに接続された各情報処理装置100が、自己がスマートコントラクトを実行する主体であるか否かを判断し、自己が実行する主体であると判断した場合にいずれの定時実行データに対するスマートコントラクトを実行するかを決定して、決定した定時実行データに対するスマートコントラクトを実行する処理である。スマートコントラクト実行処理は、予め設定された間隔(例えば、1秒)毎に、ブロックチェーンネットワークに接続された各情報処理装置100にて繰り返し実行される。
各情報処理装置100は、現在時刻取得部126の機能により、現在時刻を取得する(ステップS301)。具体的に、現在時刻取得部126は、情報処理装置100が有する内部時計から現在時刻を取得し、取得した現在時刻をUNIX(登録商標)時間に変換する。現在時刻取得部126は、変換した現在時刻のUNIX(登録商標)時間を、判断部127に送信する。
次に、情報処理装置100は、判断部127の機能により、自己がスマートコントラクトを実行する主体であるか否かを判断する(ステップS302)。具体的に、情報処理装置100は、記憶部110のノードリスト113からブロックチェーンネットワークに接続されているノードの数(この例では「2」)を取得する。情報処理装置100は、現在時刻取得部126から受信した現在時刻のUNIX(登録商標)時間を、取得したノードの数で除算し、その余りと自己のノードIDとが一致するか否かを判断する。情報処理装置100は、算出した余りの値と自己のノードIDが一致すると判断した場合、自己がスマートコントラクトを実行する主体であると判断する(ステップS302;Yes)。一方、情報処理装置100は、算出した余りの値と自己のノードIDが一致しないと判断した場合、自己がスマートコントラクトを実行する主体ではないと判断し(ステップS302;No)、処理を終了する。例えば、顧客Aの情報処理装置100にノードID「0」が付与され、店舗1の情報処理装置100にノードID「1」が付与されている場合、各情報処理装置100は、取得したUNIX(登録商標)時間をノード数「2」で除算し、その余りを求める。顧客Aの情報処理装置100は、余りが「0」である場合、自己がスマートコントラクトを実行する主体であると判断し、余りが「1」である場合、自己がスマートコントラクトを実行する主体ではないと判断する。店舗1の情報処理装置100は、余りが「1」である場合、自己がスマートコントラクトを実行する主体であると判断し、余りが「0」である場合、自己がスマートコントラクトを実行する主体ではないと判断する。すなわち、スマートコントラクトを実行する主体となるノードは、顧客Aの情報処理装置100と店舗1の情報処理装置100とが順次切り替わることになる。
ステップS302にて、自己がスマートコントラクトを実行する主体であると判断した場合(ステップS302;Yes)、情報処理装置100は、データ取得部125の機能により、スマートコントラクトの属性のハッシュチェーンを読み出す(ステップS303)。
次に、情報処理装置100は、判断部127の機能により、スマートコントラクトの属性のハッシュチェーンの中からいずれの定時実行データに対してスマートコントラクトを実行するかを決定する(ステップS304)。具体的に、情報処理装置100は、スマートコントラクトの属性のハッシュチェーンの中から、未実行かつ実行時刻が現在時刻以下とする条件を満たす定時実行データがあるか否かを判断する。情報処理装置100は、スマートコントラクトの属性のハッシュチェーンに含まれる実行済情報と定時実行データに規定される実行時刻と現在時刻取得部126により取得した現在時刻とに基づき、当該条件を満たす定時実行データがあるか否かを判断する。すなわち、情報処理装置100は、現在時刻以下の実行時刻の定時実行データであって、実行済情報が登録されていない定時実行データがあるか否かを判断する。情報処理装置100は、当該条件を満たす定時実行データがあると判断すると(ステップS304;Yes)、条件を満たすと判断した定時実行データの中から最も早い時刻のものを選択し(ステップS305)、実行するスマートコントラクトの定時実行データであると決定する。一方、情報処理装置100は、当該条件を満たす定時実行データがないと判断すると(ステップS304;No)、実行対象がないと判断し、処理を終了する。
ステップS305の処理を実行した後、情報処理装置100は、スマートコントラクト実行部128の機能により、ステップS305の処理により決定した定時実行データに対するスマートコントラクトを実行する(ステップS306)。具体的に、情報処理装置100は、定時実行データに記述されるスマートコントラクトプログラム名のスマートコントラクトプログラム112を記憶部110から読み出して、実行する。
ステップS306の処理を実行した後、ステップS305にて決定した定時実行データに対するスマートコントラクトが実行済みであることを示す実行済情報を、スマートコントラクトの属性のハッシュチェーンに追加する(ステップS307)。
ステップS307の処理を実行した後、情報処理装置100は、同期処理部122の機能により、ステップS307にて実行済情報を追加したスマートコントラクトの属性のハッシュチェーンを他の情報処理装置100へ登録することにより(ステップS308)、当該情報処理装置100と他の情報処理装置100とを同期してから、スマートコントラクト実行処理を終了する。なお、ステップS307の処理では、ステップS205の処理と同様に、ハッシュチェーン全体をコピーしてもよいし、不足しているデータブロックのみ(インデックス値やハッシュ値も含む)コピーしてもよい。
このようなスマートコントラクト実行処理が行われることで、複数のノードが同時に1つのスマートコントラクトを実行したり、実行済みのスマートコントラクトを再度実行する等の多重実行を防ぎつつ、定時実行を条件とするスマートコントラクトの実行が可能となる。また、スマートコントラクトの実行条件が成立したか否かの検証を複数のノードで行う必要がなく、処理を短縮化することができる。
図10は、上述した、顧客Aが店舗1の貸し会議室Xを20XX年4月1日10:00〜12:00に利用する予約したことにより発生した1つのトランザクションの例に対し、上記ハッシュチェーン登録処理およびスマートコントラクト実行処理によって、登録されるハッシュチェーンの登録内容を示す。
具体的に、顧客Aが店舗1の貸し会議室Xを予約したというトランザクションデータは、図6に示すデータブロック登録処理が行われることにより、図10に示す顧客Aの属性のハッシュチェーンにおけるデータブロック(N)および店舗1の属性のハッシュチェーンにおけるデータブロック(N)に登録される。また、当該トランザクションに基づく定時実行データは、図6に示すデータブロック登録処理が行われることにより、図10に示すスマートコントラクトの属性のハッシュチェーンにおけるデータブロック(M)およびデータブロック(M+1)に登録される。具体的には、図示するように、データブロック(M)には、実行プログラムとして、貸し会議室Xを解錠するための解錠処理と、その実行条件が、データブロック(M+1)には、実行プログラムとして、貸し会議室Xを施錠するための施錠処理と、その実行条件が、それぞれ登録される。
また、データブロック(M)及びデータブロック(M+1)に格納された定時実行データに対する実行済情報は、図9に示すスマートコントラクト実行処理がデータブロック(M)及びデータブロック(M+1)に格納された定時実行データに対して行われることにより、図10に示すスマートコントラクトの属性のハッシュチェーンにおけるデータブロック(M+2)及びデータブロック(M+3)に登録される。具体的に、図10に示すデータブロック(M+2)に対応する実行済情報は、解錠プログラムの実行条件である10:00のタイミングにおいて、図9のステップS302の処理において顧客Aの情報処理装置100が主体であると判断し、当該顧客Aの情報処理装置100が解錠プログラムを実行することで登録されたデータブロックである。一方、図10に示すデータブロック(M+3)に対応する実行済情報は、施錠プログラムの実行条件である12:00のタイミングにおいて、図9のステップS302の処理において店舗1の情報処理装置100が主体であると判断し、当該店舗1の情報処理装置100が施錠プログラムを実行することで登録されたデータブロックである。なお、各トランザクションデータには、トランザクションを識別するための識別情報が付与され、当該トランザクションデータに基づいて生成された定時実行データ又は実行済情報に当該トランザクションを識別するための識別情報を含めてもよい。これにより、スマートコントラクト実行後に、各トランザクションに対して実行された一連の処理を容易に検索することが可能となる。
(変形例)
なお、この発明は、上記実施の形態に限定されず、様々な変形及び応用が可能である。例えば、情報処理装置100では、上記実施の形態で示した全ての技術的特徴を備えるものでなくてもよく、従来技術における少なくとも1つの課題を解決できるように、上記実施の形態で説明した一部の構成を備えたものであってもよい。また、下記の変形例それぞれについて、少なくとも一部を組み合わせても良い。
上記実施の形態において、1度登録したトランザクションを取り消すことができるようにしてもよい。具体的に、ユーザが端末を操作して登録済みのトランザクションの内容を表示させ、当該トランザクションを取り消す情報を入力すると、登録済みのトランザクションを取り消すことを示す新たなトランザクションが発生する。情報処理装置100は、データブロック登録部123の機能により、登録済みのトランザクションを取り消すことを示す新たなトランザクションデータを、顧客A及び店舗1の属性のハッシュチェーンに格納する。情報処理装置100は、定時実行データ登録部124の機能により、新たに格納されたトランザクションデータに基づき、実行を取り消す定時実行データを識別する識別情報と取消を登録したユーザの情報とを含む実行取消情報を生成して、スマートコントラクトの属性のハッシュチェーンに格納する。そして、情報処理装置100は、実行取消情報に含まれる識別情報により特定される定時実行データを実行しないと判断すればよい。なお、登録済みのトランザクションを取り消すことを示す新たなトランザクションデータに、登録済みのトランザクションを識別する情報を含めることにより、情報処理装置100はいずれのトランザクションを取り消すのかを特定することができる。さらに、例えば、実行取消情報と実行済情報に、それぞれが実行取消情報であるか実行済情報であるかを示す種別情報を含めることにより、情報処理装置100が実行取消情報と実行済情報とを区別できるようにすることで、実行済みの定時実行データに対して決済処理を行うが、取り消された定時実行データに対しては決済処理を行わないといった異なる処理を行うことが可能となる。また、定時実行データ登録部124は、トランザクションを登録したユーザの情報(例えば、アドレス)とトランザクションの取消登録をしたユーザの情報がと同一の場合のみ、実行取消情報を生成し、登録する処理を行うようにすることで、第3者が不正にトランザクションを取り消すことを防止することも可能である。
さらに、上記実施の形態において、1度登録したトランザクションの内容を変更することができるようにしてもよい。具体的に、ユーザが端末を操作して登録済みのトランザクションの内容を表示させ、日時や会議室を変更するといった情報を入力すると、登録済み(変更前)のトランザクションを取り消すことを示す新たなトランザクションと、変更後のトランザクションの内容を示す新たなトランザクションとが発生し、情報処理装置100は、当該2つの新たなトランザクションデータを、顧客A及び店舗1の属性のハッシュチェーンに格納する。そして、例えば、変更前のトランザクションに対応する解錠処理と施錠処理のいずれも未実行の場合、すなわち、スマートコントラクトの実行条件が成立する前の段階で変更する操作が行われた場合、情報処理装置100は、未実行の解錠/施錠処理の両方の定時実行データに対応する実行取消情報と、変更後のトランザクションに係る解錠/施錠処理の両方の定時実行データとを、スマートコントラクトの属性のハッシュチェーンにそれぞれ格納すればよい。また、例えば、変更前のトランザクションに対応する解錠処理が実行された後に施錠処理の実行時刻が変更された場合、すなわち利用時間の延長をするような場合、情報処理装置100は、未実行の施錠処理に係る定時実行データに対応する実行取消情報と変更後のトランザクションに係る施錠処理に対応する定時実行データとを、スマートコントラクトの属性のハッシュチェーンにそれぞれ格納すればよい。なお、情報処理装置100は、変更前のトランザクションに係る定時実行データに対する実行済情報が登録されているか否かを判定することで、変更前のトランザクションに対応する解錠処理と施錠処理のいずれの処理も未実行の状態であるか、利用時間の延長であるかを判定すればよい。具体的に、変更前のトランザクションに係る定時実行データに対する実行済情報が登録されていない場合に、解錠処理と施錠処理のいずれの処理も未実行の状態であると判定し、解錠処理に対応する実行済情報のみ登録されている場合に、利用時間の延長であると判定すればよい。また、変更前のトランザクションを取り消すことを示す新たなトランザクションデータと変更後のトランザクションの内容を示す新たなトランザクションとに、変更前のトランザクションを識別する情報を含めることにより、情報処理装置100は、いずれのトランザクションの内容を変更するかを特定することができる。
また、上記実施の形態において、定時実行データ登録部124は、図6のステップS203の後に、定時実行データを生成してスマートコントラクトの属性のチェーンに登録することとしたが、これに限られず、ステップS203の前又はステップS203と並行して、当該処理を行ってもよい。すなわち、上記実施の形態では、顧客Aや店舗1の属性のハッシュチェーンにトランザクションデータが登録された後、当該登録されたトランザクションデータに基づいて定時実行データを生成し、定時実行データをスマートコントラクトの属性のチェーンに登録する例を示したが、顧客Aや店舗1の属性のハッシュチェーンにトランザクションデータを登録する際に、合わせてスマートコントラクトの属性のチェーンに定時実行データが登録されてもよい。具体的に、発生したトランザクションに基づいて定時実行データを生成し、ステップS203にて顧客Aや店舗1の属性のハッシュチェーンにトランザクションデータを登録するとともに、生成した定時実行データをスマートコントラクトの属性のチェーンに登録すればよい。
また、上記実施の形態において、情報処理装置100は、解錠/施錠処理において、QRコード(登録商標)の解錠権限を有効化または無効化する処理を実行することとしたが、これに限られない。解錠/施錠処理では、QRコード(登録商標)の代わりに、一時的に利用可能な暗証番号を送付してもよいし、情報処理装置100と電気的に接続された施錠装置に対し、解錠/施錠指示信号を送信することにより解錠/施錠処理を実行してもよい。
また、上記実施の形態において、情報処理装置100は、貸し会議室Xの解錠/施錠処理といった実行時刻を条件とするスマートコントラクトを実行することとしたが、これに限られない。例えば、貸し会議室Xの施錠処理が完了することを実行条件として、決済処理を実行するといった、実行時刻を実行条件に含まないスマートコントラクトを実行してもよい。具体的に、施錠処理を実行した情報処理装置100が当該決済処理を実行すればよく、施錠処理を実行した情報処理装置100は、当該施錠処理に対応する実行済情報と、解錠処理に対応する実行済情報と、に基づいて利用時間を特定し利用料金を算出する。なお、解錠処理や施錠処理に対応する実行済情報には、それぞれ実行時の時刻が含まれているものとする。なお、利用料金については、例えば、単位時間あたりの金額が予め記憶されていればよい。当該決算処理では、例えば、当該算出した利用料金を請求する内容の電文を利用者である顧客Aに送信する処理が行われればよい。また、例えば、電子マネーや仮想通貨、ポイントなどが登録されている場合には、残高情報から当該利用料金を減算する処理を行い、その結果を利用者である顧客Aに送信すればよい。また、例えば他の決済システムと接続して、予め登録されたクレジットカードなどにより支払いが行われるようにしてもよい。この場合、利用者である顧客Aの情報、クレジットカードの番号、および利用料金等の情報が決済システムに送信されればよい。
また、上記実施の形態において、判断部127は、スマートコントラクトの属性のハッシュチェーンの中から、未実行かつ実行時刻が現在時刻以下とする条件を満たし、実行時刻が最も早い時刻のものを、スマートコントラクト実行部128が処理を実行する定時実行データであると決定するものとしたがこれに限られない。判断部127は、上記条件を満たす複数の定時実行データをスマートコントラクト実行部128が処理を実行する定時実行データであると決定してもよい。すなわち、一度のスマートコントラクト実行部128の処理において、複数の定時実行データに対するスマートコントラクトを実行してもよい。
また、上記実施の形態における情報処理装置100では、トランザクションデータや定時実行データを格納するデータブロックが、顧客Aや店舗1、スマートコントラクトといった属性毎に連結されるハッシュチェーンに連結されている例を示したが、これは一例である。トランザクションデータや定時実行データを格納するデータブロックは、例えば、属性毎に連結されるハッシュチェーンに限られず、一般的なブロックチェーン(属性のないハッシュチェーン)に連結されてもよい。すなわち、全ノードに共通の1つのアドレスのハッシュチェーン(属性のないハッシュチェーン)におけるデータブロックに、トランザクションデータや定時実行データといった複数のデータが時系列で格納されてもよい。そして、定時実行データを格納する際に、スマートコントラクトプログラム112の格納場所を示すアドレス情報を含めることにより、情報処理装置100が、当該スマートコントラクトプログラム112を実行できればよい。具体的に、スマートコントラクトを実行する実行主体の情報処理装置100は、スマートコントラクトの実行条件の時刻となると、当該ハッシュチェーン(属性のないハッシュチェーン)から、実行対象の定時実行データを、実行条件やアドレス情報などに基づいて抽出し、当該アドレス情報のスマートコントラクトプログラム112を実行することで、抽出したデータブロックに格納された実行内容の処理を実行すればよい。
また、上記実施の形態において、情報処理装置100は、貸し会議室Xの利用に係るトランザクションを履行するスマートコントラクトを実行することとしたがこれに限られず、コインロッカー、ホテルの客室、オフィス、住宅、車両等の利用に係るトランザクションといった、ある時刻になったら処理を実行することを含むトランザクションであればよい。
また、上記実施の形態において、情報処理装置100は、現在時刻とブロックチェーンネットワークに接続されるノードの数とに基づく演算結果により、自己がスマートコントラクトを実行する主体であるか否かを判断したが、これに限られない。例えば、ノードリスト113の登録順に応じて、順次スマートコントラクトを実行する主体となる情報処理装置100を入れ替えるようにしてもよい。具体的に、スマートコントラクトを実行した情報処理装置100が、ノードリスト113を参照し、次にスマートコントラクトを実行する情報処理装置100を特定して、当該情報処理装置100対して、その旨を通知すればよい。
なお、情報処理装置100は、専用の装置によらず、通常のコンピュータを用いて実現可能である。例えば、コンピュータに上述のいずれかを実行するためのプログラムを格納した記録媒体から該プログラムをコンピュータにインストールすることにより、上述の処理を実行する情報処理装置100を構成してもよい。また、複数のコンピュータが協働して動作することによって、1つの情報処理装置100を構成しても良い。
また、上述の機能を、OS(Operating System)とアプリケーションとの分担、またはOSとアプリケーションとの協同により実現する場合等には、OS以外の部分のみを媒体に格納してもよい。
また、搬送波にプログラムを重畳し、通信ネットワークを介して配信することも可能である。例えば、通信ネットワーク上の掲示板(BBS、Bulletin Board System)に当該プログラムを掲示し、ネットワークを介して当該プログラムを配信してもよい。そして、これらのプログラムを起動し、オペレーティングシステムの制御下で、他のアプリケーションプログラムと同様に実行することにより、上述の処理を実行できるように構成してもよい。