(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-23
(45)【発行日】2024-10-31
(54)【発明の名称】制御方法、装置、及び、プログラム
(51)【国際特許分類】
G06Q 20/40 20120101AFI20241024BHJP
【FI】
G06Q20/40 330
(21)【出願番号】P 2021565562
(86)(22)【出願日】2020-12-11
(86)【国際出願番号】 JP2020046402
(87)【国際公開番号】W WO2021125109
(87)【国際公開日】2021-06-24
【審査請求日】2023-09-13
(32)【優先日】2019-12-19
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】514136668
【氏名又は名称】パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ
【氏名又は名称原語表記】Panasonic Intellectual Property Corporation of America
(74)【代理人】
【識別番号】100109210
【氏名又は名称】新居 広守
(74)【代理人】
【識別番号】100137235
【氏名又は名称】寺谷 英作
(74)【代理人】
【識別番号】100131417
【氏名又は名称】道坂 伸一
(72)【発明者】
【氏名】海上 勇二
(72)【発明者】
【氏名】道山 淳児
(72)【発明者】
【氏名】添田 純一郎
(72)【発明者】
【氏名】大森 基司
(72)【発明者】
【氏名】渕上 哲司
(72)【発明者】
【氏名】廣瀬 雄揮
(72)【発明者】
【氏名】西田 直央
(72)【発明者】
【氏名】田口 雅裕
【審査官】藤原 拓也
(56)【参考文献】
【文献】国際公開第2018/142948(WO,A1)
【文献】米国特許出願公開第2019/0278767(US,A1)
【文献】米国特許出願公開第2018/0096360(US,A1)
【文献】中村誠吾ほか,"ブロックチェーン システム設計",第1版,株式会社リックテレコム,2018年08月02日,P.178-186,ISBN:978-4-86594-115-9
【文献】知念祐一郎ほか,"RA:スマートコントラクトの安全性解析にむけたシンボリック実行ツール ",コンピュータセキュリティシンポジウム2019論文集,情報処理学会,2019年10月04日,P.569-576,ISSN:1882-0840
(58)【調査した分野】(Int.Cl.,DB名)
G06Q 10/00-99/00
(57)【特許請求の範囲】
【請求項1】
分散台帳を保有している複数の装置を備える管理システムにおいて、前記複数の装置のうちの一の装置が実行する制御方法であって、
前記分散台帳は、新たなスマートコントラクトを自動生成する自動生成機能を含む親スマートコントラクトと、前記複数の装置において前記自動生成機能が実行されることによって生成された複数の子スマートコントラクトのうちの一つを選択して管理する管理機能とを格納しており、
前記自動生成機能を実行することで第1子スマートコントラクトを生成し、
生成した前記第1子スマートコントラクトを含む第1トランザクションデータを前記複数の装置のうちの他の装置に送信し、かつ、前記第1トランザクションデータを前記一の装置の分散台帳に格納し、
前記他の装置において前記自動生成機能が実行されることで生成された第2子スマートコントラクトを含む第2トランザクションデータを受信し、かつ、前記第2トランザクションデータを前記一の装置の分散台帳に格納し、
前記分散台帳に格納されている前記管理機能を実行することで、前記第1子スマートコントラクト及び前記第2子スマートコントラクトのうち、一の子スマートコントラクトを前記親スマートコントラクトと対応付けて管理する
制御方法。
【請求項2】
前記管理機能は、前記親スマートコントラクト、又は、前記親スマートコントラクトとは異なる管理スマートコントラクトに含まれ、
前記管理スマートコントラクトは、前記分散台帳に格納されており、
前記第1トランザクションデータは、前記第1子スマートコントラクトに対して前記管理機能を実行するための実行情報を含み、
前記第2トランザクションデータは、前記第2子スマートコントラクトに対して前記管理機能を実行するための実行情報を含む
請求項1に記載の制御方法。
【請求項3】
前記管理では、前記第1トランザクションデータ及び前記第2トランザクションデータのうちで、前記一の装置の前記分散台帳にn番目(nは自然数)に格納されたn番目のトランザクションデータに含まれるn番目の子スマートコントラクトを前記一の子スマートコントラクトとして前記親スマートコントラクトと対応付けて管理する
請求項1又は2に記載の制御方法。
【請求項4】
前記nは、1である
請求項3に記載の制御方法。
【請求項5】
前記nは、ランダムに定められた値である
請求項3に記載の制御方法。
【請求項6】
前記管理では、前記n番目の子スマートコントラクトを識別する識別子を、前記一の子スマートコントラクトの識別子として管理することで、前記n番目の子スマートコントラクトを前記一のスマートコントラクトとして前記親スマートコントラクトと対応付けて管理する
請求項3から5のいずれか1項に記載の制御方法。
【請求項7】
前記管理では、前記n番目以外の順番で前記一の装置の前記分散台帳に格納されたトランザクションデータに含まれる子スマートコントラクトを、前記一の子スマートコントラクトとして管理しない
請求項3から6のいずれか1項に記載の制御方法。
【請求項8】
前記管理では、前記n番目以外の順番で前記一の装置の前記分散台帳に格納されたトランザクションデータに含まれる子スマートコントラクトを無効にする
請求項3から6のいずれか1項に記載の制御方法。
【請求項9】
前記管理では、前記n番目以外の順番で前記一の装置の前記分散台帳に格納されたトランザクションデータに含まれる子スマートコントラクトに対して、スマートコントラクトを破棄する破棄機能を実行する
請求項3から6のいずれか1項に記載の制御方法。
【請求項10】
分散台帳を保有している複数の装置を備える管理システムにおいて、前記複数の装置のうちの一の装置であって、
プロセッサと、
メモリと、を備え、
前記分散台帳は、新たなスマートコントラクトを自動生成する自動生成機能を含む親スマートコントラクトと、前記複数の装置において前記自動生成機能が実行されることによって生成された複数の子スマートコントラクトのうちの一つを選択して管理する管理機能とを格納しており、
前記プロセッサは、前記メモリを用いて、
前記自動生成機能を実行することで第1子スマートコントラクトを生成し、
生成した前記第1子スマートコントラクトを含む第1トランザクションデータを前記複数の装置のうちの他の装置に送信し、かつ、前記第1トランザクションデータを前記一の装置の分散台帳に格納し、
前記他の装置において前記自動生成機能が実行されることで生成された第2子スマートコントラクトを含む第2トランザクションデータを受信し、かつ、前記第2トランザクションデータを前記一の装置の分散台帳に格納し、
前記分散台帳に格納されている前記管理機能を実行することで、前記第1子スマートコントラクト及び前記第2子スマートコントラクトのうち、一の子スマートコントラクトを前記親スマートコントラクトと対応付けて管理する
装置。
【請求項11】
分散台帳を保有している複数の装置を備える管理システムにおいて、前記複数の装置のうちの一の装置が実行する制御方法をコンピュータに実行させるためのプログラムであって、
前記分散台帳は、新たなスマートコントラクトを自動生成する自動生成機能を含む親スマートコントラクトと、前記複数の装置において前記自動生成機能が実行されることによって生成された複数の子スマートコントラクトのうちの一つを選択して管理する管理機能とを格納しており、
前記自動生成機能を実行することで第1子スマートコントラクトを生成し、
生成した前記第1子スマートコントラクトを含む第1トランザクションデータを前記複数の装置のうちの他の装置に送信し、かつ、前記第1トランザクションデータを前記一の装置の分散台帳に格納し、
前記他の装置において前記自動生成機能が実行されることで生成された第2子スマートコントラクトを含む第2トランザクションデータを受信し、かつ、前記第2トランザクションデータを前記一の装置の分散台帳に格納し、
前記分散台帳に格納されている前記管理機能を実行することで、前記第1子スマートコントラクト及び前記第2子スマートコントラクトのうち、一の子スマートコントラクトを前記親スマートコントラクトと対応付けて管理することを
コンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、制御方法、装置、及び、プログラムに関する。
【背景技術】
【0002】
従来、契約の条件確認から履行までをブロックチェーン上で自動的に実行するスマートコントラクト技術が存在する。例えば、特許文献1には、スマートコントラクト技術を用いて自動的に貿易取引の手続きを実行させる方法が開示されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、特許文献1に開示されている方法では、分散台帳を管理している管理システムの動作に不整合が生じ、この管理システムが正しく動作しないおそれがある。
【0005】
本開示は、上述の事情を鑑みてなされたもので、分散台帳を管理している管理システムを正しく動作させることができる制御方法、装置、及び、プログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
本開示の一態様に係る制御方法は、分散台帳を保有している複数の装置を備える管理システムにおいて、前記複数の装置のうちの一の装置が実行する制御方法であって、前記分散台帳は、新たなスマートコントラクトを自動生成する自動生成機能を含む親スマートコントラクトと、前記複数の装置において前記自動生成機能が実行されることによって生成された複数の子スマートコントラクトのうちの一つを選択して管理する管理機能とを格納しており、前記自動生成機能を実行することで第1子スマートコントラクトを生成し、生成した前記第1子スマートコントラクトを含む第1トランザクションデータを前記複数の装置のうちの他の装置に送信し、かつ、前記第1トランザクションデータを前記一の装置の分散台帳に格納し、前記他の装置において前記自動生成機能が実行されることで生成された第2子スマートコントラクトを含む第2トランザクションデータを受信し、かつ、前記第2トランザクションデータを前記一の装置の分散台帳に格納し、前記分散台帳に格納されている前記管理機能を実行することで、前記第1子スマートコントラクト及び前記第2子スマートコントラクトのうち、一の子スマートコントラクトを前記親スマートコントラクトと対応付けて管理する。
【0007】
なお、これらの包括的または具体的な態様は、システム、方法、集積回路、コンピュータプログラムまたはコンピュータで読み取り可能なCD-ROMなどの記録媒体で実現されてもよく、システム、方法、集積回路、コンピュータプログラム及び記録媒体の任意な組み合わせで実現されてもよい。
【発明の効果】
【0008】
本開示に係る制御方法などによれば、分散台帳を管理している管理システムを正しく動作させることができる。
【図面の簡単な説明】
【0009】
【
図1】
図1は、実施の形態に係る管理システムの構成の一例を示す図である。
【
図2】
図2は、実施の形態に係るサーバの構成の一例を示す図である。
【
図3】
図3は、実施の形態に係る第1トランザクションデータを模式的に示す説明図である。
【
図4】
図4は、実施の形態に係る管理システムの管理処理の一例を示すシーケンス図である。
【
図5】
図5は、実施の形態に係る管理システムの管理処理の一例を示すシーケンス図である。
【
図6】
図6は、実施の形態に係る管理機能により実行される設定処理の第1の例を示す図である。
【
図7】
図7は、実施の形態に係る管理機能の第1の例を示す図である。
【
図8】
図8は、実施の形態に係る管理機能により実行される設定処理の第2の例を示す図である。
【
図9】
図9は、実施の形態に係る管理機能の第2の例を示す図である。
【
図10】
図10は、実施の形態に係る管理機能により実行される設定処理の第3の例を示す図である。
【
図11】
図11は、実施の形態に係る管理機能の第3の例を示す図である。
【
図12】
図12は、実施の形態に係る管理機能により実行される設定処理の第4の例を示す図である。
【
図13】
図13は、実施の形態に係る管理機能の第4の例を示す図である。
【
図14】
図14は、実施の形態に係る管理機能により実行される設定処理の第5の例を示す図である。
【
図15】
図15は、実施の形態に係る管理機能の第5の例を示す図である。
【
図16】
図16は、実施の形態に係る管理機能により実行される設定処理の第6の例を示す図である。
【
図17】
図17は、実施の形態に係る管理機能の第6の例を示す図である。
【発明を実施するための形態】
【0010】
(本開示の基礎となった知見)
特許文献1に開示されているスマートコントラクト技術を用いて、例えば、ある取引の契約を実行するスマートコントラクトにおいて、その取引に関連する新たな契約を実行するスマートコントラクトを自動生成するという要望が考えられる。
【0011】
しかし、従来技術においてスマートコントラクトにて新たなスマートコントラクトを自動生成する場合、以下の課題が想定される。
【0012】
スマートコントラクト(プログラム)は、管理システムを構成する複数の装置のそれぞれが保有する分散台帳に格納されている。管理システムが複数の装置のそれぞれの分散台帳格納されているスマートコントラクトを用いて、新たなスマートコントラクトを自動生成する場合、複数の装置のそれぞれにおいて新たなスマートコントラクトを自動生成する。このため、同じ内容のスマートコントラクトが、管理システムを構成する複数の装置の数だけ自動生成されることになる。さらに、自動生成された全てのスマートコントラクトは、複数の装置のそれぞれが保有する分散台帳で共有されると、結果的に各装置が同じ内容の有効なスマートコントラクトを重複して保持することになる。このため、各装置では、同じ内容の複数のスマートコントラクトが同時に実行されうることになり、管理システムの動作に不整合が生じ、管理システムが正しく動作しないおそれがある。
【0013】
本発明者らは、上記の課題を解決するために、以下の制御方法、装置、及び、プログラムを見出した。
【0014】
本開示の一態様に係る制御方法は、分散台帳を保有している複数の装置を備える管理システムにおいて、前記複数の装置のうちの一の装置が実行する制御方法であって、前記分散台帳は、新たなスマートコントラクトを自動生成する自動生成機能を含む親スマートコントラクトと、前記複数の装置において前記自動生成機能が実行されることによって生成された複数の子スマートコントラクトのうちの一つを選択して管理する管理機能とを格納しており、前記自動生成機能を実行することで第1子スマートコントラクトを生成し、生成した前記第1子スマートコントラクトを含む第1トランザクションデータを前記複数の装置のうちの他の装置に送信し、かつ、前記第1トランザクションデータを前記一の装置の分散台帳に格納し、前記他の装置において前記自動生成機能が実行されることで生成された第2子スマートコントラクトを含む第2トランザクションデータを受信し、かつ、前記第2トランザクションデータを前記一の装置の分散台帳に格納し、前記分散台帳に格納されている前記管理機能を実行することで、前記第1子スマートコントラクト及び前記第2子スマートコントラクトのうち、一の子スマートコントラクトを前記親スマートコントラクトと対応付けて管理する。
【0015】
これによれば、親スマートコントラクトが含む自動生成機能が複数の装置のそれぞれにおいて実行されることによって生成された複数の子スマートコントラクトのうちの一の子スマートコントラクトを選択して、選択した一の子スマートコントラクトを親スマートコントラクトと対応付けて管理する。このため、同一の親スマートコントラクトから自動生成された互いに同じ複数の子スマートコントラクトを重複して保持することを抑制することができる。これにより、各装置で同じ内容の複数の子スマートコントラクトが実行されることを抑制でき、管理システムの動作に不整合が生じることを抑制することができる。よって、分散台帳を管理している管理システムを正しく動作させることができる。
【0016】
また、前記管理機能は、前記親スマートコントラクト、又は、前記親スマートコントラクトとは異なる管理スマートコントラクトに含まれ、前記管理スマートコントラクトは、前記分散台帳に格納されており、前記第1トランザクションデータは、前記第1子スマートコントラクトに対して前記管理機能を実行するための実行情報を含み、前記第2トランザクションデータは、前記第2子スマートコントラクトに対して前記管理機能を実行するための実行情報を含んでもよい。
【0017】
このため、第1トランザクションデータ及び第2トランザクションデータがそれぞれ分散台帳に格納される度に、親スマートコントラクト又は管理スマートコントラクトを実行することができる。これにより、第1トランザクションデータ及び第2トランザクションデータがそれぞれ分散台帳に格納される度に、自動的に管理機能を実行することができる。
【0018】
また、前記管理では、前記第1トランザクションデータ及び前記第2トランザクションデータのうちで、前記一の装置の前記分散台帳にn番目(nは自然数)に格納されたn番目のトランザクションデータに含まれるn番目の子スマートコントラクトを前記一の子スマートコントラクトとして前記親スマートコントラクトと対応付けて管理してもよい。
【0019】
このため、n番目のトランザクションデータに含まれるn番目の子スマートコントラクトを一の子スマートコントラクトとして親スマートコントラクトと対応付けて管理することができる。
【0020】
また、前記nは、1であってもよい。
【0021】
このため、最初に分散台帳に格納されたトランザクションデータに含まれる最初の子スマートコントラクトを一の子スマートコントラクトとして親スマートコントラクトと対応付けて管理することができる。
【0022】
また、前記nは、ランダムに定められた値であってもよい。
【0023】
このため、ランダムに定められた順番に分散台帳に格納されたトランザクションデータに含まれる子スマートコントラクトを一の子スマートコントラクトとして親スマートコントラクトと対応付けて管理することができる。このように、選択される子スマートコントラクトの順番がランダムであり変更されうるため、親スマートコントラクトに対応付ける子スマートコントラクトが改変された子スマートコントラクトに差し替えられることを抑制することができる。
【0024】
また、前記管理では、前記n番目の子スマートコントラクトを識別する識別子を、前記一の子スマートコントラクトの識別子として管理することで、前記n番目の子スマートコントラクトを前記一のスマートコントラクトとして前記親スマートコントラクトと対応付けて管理してもよい。
【0025】
このため、親スマートコントラクトと一の子スマートコントラクトとを容易に対応付けることができる。
【0026】
また、前記管理では、前記n番目以外の順番で前記一の装置の前記分散台帳に格納されたトランザクションデータに含まれる子スマートコントラクトを、前記一の子スマートコントラクトとして管理しなくてもよい。
【0027】
このため、n番目の子スマートコントラクトのみを親スマートコントラクトに対応付けることができる。
【0028】
また、前記管理では、前記n番目以外の順番で前記一の装置の前記分散台帳に格納されたトランザクションデータに含まれる子スマートコントラクトを無効にしてもよい。
【0029】
このため、n番目の子スマートコントラクトのみを親スマートコントラクトに対応付けることができる。また、無効な子スマートコントラクトを実行しようとする処理が発生することを抑制することができ、処理負荷を低減することができる。
【0030】
また、前記管理では、前記n番目以外の順番で前記一の装置の前記分散台帳に格納されたトランザクションデータに含まれる子スマートコントラクトに対して、スマートコントラクトを破棄する破棄機能を実行してもよい。
【0031】
このため、n番目の子スマートコントラクトのみを親スマートコントラクトに対応付けることができる。また、破棄された子スマートコントラクトを実行しようとする処理が発生することを抑制することができ、処理負荷を低減することができる。
【0032】
また、本開示の一態様に係る装置は、分散台帳を保有している複数の装置を備える管理システムにおいて、前記複数の装置のうちの一の装置であって、プロセッサと、メモリと、を備え、前記分散台帳は、新たなスマートコントラクトを自動生成する自動生成機能を含む親スマートコントラクトと、前記複数の装置において前記自動生成機能が実行されることによって生成された複数の子スマートコントラクトのうちの一つを選択して管理する管理機能とを格納しており、前記プロセッサは、前記メモリを用いて、前記自動生成機能を実行することで第1子スマートコントラクトを生成し、生成した前記第1子スマートコントラクトを含む第1トランザクションデータを前記複数の装置のうちの他の装置に送信し、かつ、前記第1トランザクションデータを前記一の装置の分散台帳に格納し、前記他の装置において前記自動生成機能が実行されることで生成された第2子スマートコントラクトを含む第2トランザクションデータを受信し、かつ、前記第2トランザクションデータを前記一の装置の分散台帳に格納し、前記分散台帳に格納されている前記管理機能を実行することで、前記第1子スマートコントラクト及び前記第2子スマートコントラクトのうち、一の子スマートコントラクトを前記親スマートコントラクトと対応付けて管理する。
【0033】
これによれば、親スマートコントラクトが含む自動生成機能が複数の装置のそれぞれにおいて実行されることによって生成された複数の子スマートコントラクトのうちの一の子スマートコントラクトを選択して、選択した一の子スマートコントラクトを親スマートコントラクトと対応付けて管理する。このため、同一の親スマートコントラクトから自動生成された互いに同じ複数の子スマートコントラクトを重複して保持することを抑制することができる。これにより、各装置で同じ内容の複数の子スマートコントラクトが実行されることを抑制でき、管理システムの動作に不整合が生じることを抑制することができる。よって、分散台帳を管理している管理システムを正しく動作させることができる。
【0034】
また、本開示の一態様に係るプログラムは、分散台帳を保有している複数の装置を備える管理システムにおいて、前記複数の装置のうちの一の装置が実行する制御方法をコンピュータに実行させるためのプログラムであって、前記分散台帳は、新たなスマートコントラクトを自動生成する自動生成機能を含む親スマートコントラクトと、前記複数の装置において前記自動生成機能が実行されることによって生成された複数の子スマートコントラクトのうちの一つを選択して管理する管理機能とを格納しており、前記自動生成機能を実行することで第1子スマートコントラクトを生成し、生成した前記第1子スマートコントラクトを含む第1トランザクションデータを前記複数の装置のうちの他の装置に送信し、かつ、前記第1トランザクションデータを前記一の装置の分散台帳に格納し、前記他の装置において前記自動生成機能が実行されることで生成された第2子スマートコントラクトを含む第2トランザクションデータを受信し、かつ、前記第2トランザクションデータを前記一の装置の分散台帳に格納し、前記分散台帳に格納されている前記管理機能を実行することで、前記第1子スマートコントラクト及び前記第2子スマートコントラクトのうち、一の子スマートコントラクトを前記親スマートコントラクトと対応付けて管理することをコンピュータに実行させるためのプログラムである。
【0035】
これによれば、親スマートコントラクトが含む自動生成機能が複数の装置のそれぞれにおいて実行されることによって生成された複数の子スマートコントラクトのうちの一の子スマートコントラクトを選択して、選択した一の子スマートコントラクトを親スマートコントラクトと対応付けて管理する。このため、同一の親スマートコントラクトから自動生成された互いに同じ複数の子スマートコントラクトを重複して保持することを抑制することができる。これにより、各装置で同じ内容の複数の子スマートコントラクトが実行されることを抑制でき、管理システムの動作に不整合が生じることを抑制することができる。よって、分散台帳を管理している管理システムを正しく動作させることができる。
【0036】
以下、図面を参照しながら、実施の形態について説明する。なお、以下で説明する実施の形態は、いずれも本開示の一具体例を示すものである。つまり、以下の実施の形態で示される数値、形状、材料、構成要素、構成要素の配置及び接続形態、ステップ、ステップの順序などは、一例であり、本開示を限定する主旨ではない。また、以下の実施の形態における構成要素のうち、最上位概念を示す独立請求項に記載されていない構成要素は、本開示の課題を達成するために必ずしも必要ではないが、より好ましい形態を構成する構成要素として説明される。
【0037】
(実施の形態)
まず、本開示に係るシステム構成について説明する。
【0038】
本開示に係る管理システムは、複数のサーバを備え、各サーバにおいて親スマートコントラクトが実行されることにより自動生成された複数の子スマートコントラクトを分散台帳に格納し、複数の子スマートコントラクトを管理する。以下では、図面を参照しながら、本実施の形態に係る管理システムの構成等の説明を行う。
【0039】
[管理システム]
図1は、実施の形態に係る管理システムの構成の一例を示す図である。
【0040】
本実施の形態に係る管理システムは、
図1に示すように、例えば、サーバ10a~10cを備える。サーバ10a~10cは、全部がネットワークで互いに接続されていてもよいし、全部が通信可能に直接接続されていてもよいし、一部がネットワークで接続されており、他の一部が通信可能に直接接続されていてもよい。ネットワークは、例えば、インターネット、携帯電話のキャリアネットワークなどであるが、どのような通信回線またはネットワークから構成されてもよい。サーバ10a~10cは、管理システムを構成する複数の装置の一例である。なお、管理システムを構成する複数の装置は、サーバ10a~10cのみに限らずに、1以上の端末を含んでいてもよいし、複数の端末のみを含んでいてもよい。ブロックチェーンを格納する分散台帳を管理する管理システムは、パブリック型、プライベート型及びコンソーシアム型のいずれの形態であってもよい。
【0041】
なお、以下では、サーバ10a~サーバ10cのそれぞれをサーバ10とも称するが、サーバ10a~サーバ10cをサーバA~サーバCと称する場合もある。
【0042】
以下、サーバ10について説明する。
【0043】
[サーバ10]
サーバ10は、分散台帳を保有する複数の装置のうちの一の装置の一例である。サーバ10は、事業者により管理されるサーバである。事業者は、例えば、ユーザとの間で契約を締結する事業者であってもよい。契約は、ユーザに対して、所定の対価と引き替えに物品又はサービスを提供する事業に関する契約であってもよいし、ユーザによる労働と引き替えに、当該ユーザに所定の対価を支払う。また、契約は、贈与、売買、交換、消費貸借、使用貸借、賃貸借、雇用、請負、寄託、組合、終身定期金、及び、和解などで規定される契約であってもよい。
【0044】
ここで説明するサーバ10は、サーバ10a~10cのうちの一つのサーバ10である。サーバ10a~10cのうち、この一つのサーバ10以外のサーバを他のサーバ10と称する。他のサーバ10は、本実施の形態では、複数であるものとして説明する。このため、以下では、単に他のサーバ10と称している場合には、他のサーバ10は、複数の他のサーバ10であることを示す。なお、他のサーバ10は、これに限らずに、1つであってもよい。
【0045】
図2は、実施の形態に係るサーバの構成の一例を示す図である。
【0046】
サーバ10は、
図2に示すように、通信部101と、トランザクションデータ生成部102と、トランザクションデータ検証部103と、状態記憶部104と、スマートコントラクト実行部105と、記録部106と、分散台帳107とを備える。サーバ10は、プロセッサがメモリを用いて所定のプログラムを実行することで実現され得る。以下、各構成要素について説明する。
【0047】
<通信部101>
通信部101は、他のサーバ10に、実行トランザクションデータを送信する。実行トランザクションデータは、サーバ10a~10cによるコンセンサスアルゴリズムにより分散台帳に格納されることで、各サーバ10a~10cの分散台帳に格納されている親スマートコントラクトを各サーバ10a~10cに実行させるためのトランザクションデータである。各サーバ10a~10cでは、親スマートコントラクトが実行されることで、新たなスマートコントラクトとして、子スマートコントラクトが生成される。なお、親スマートコントラクトとは、実行されることで新たなスマートコントラクトを生成するスマートコントラクトである。子スマートコントラクトとは、親スマートコントラクトが実行されることで生成された新たなスマートコントラクトである。
【0048】
通信部101は、他のサーバ10に、第1トランザクションデータを送信する。第1トランザクションデータは、第1子スマートコントラクトを含む。第1子スマートコントラクトは、サーバ10において自動生成機能が実行されることで生成される。また、通信部101は、他のサーバ10から第2トランザクションデータを受信する。第2トランザクションデータは、第2子スマートコントラクトを含む。第2子スマートコントラクトは、他のサーバ10において自動生成機能が実行されることで生成される。
【0049】
なお、通信部101は、他のサーバ10との間で、上記のトランザクション以外のデータのやり取りを行ってもよい。また、通信部101は、他のサーバ10以外の装置(端末)との間で、データのやり取りを行ってもよい。
【0050】
このように、通信部101は、他のサーバ10との間で通信を行う。なお、この通信は、TLS(Transport Layer Security)によりなされてもよく、TLS通信用の暗号鍵は通信部101で保持してもよい。
【0051】
<トランザクションデータ生成部102>
トランザクションデータ生成部102は、実行トランザクションデータを生成する。本実施の形態では、実行トランザクションデータは、分散台帳107に格納されている親スマートコントラクトをスマートコントラクト実行部105に実行させるための実行情報を含む。この実行情報は、親スマートコントラクトを識別する識別子と、親スマートコントラクトに入力する値(引数)とを含む。なお、親スマートコントラクトを識別する識別子は、親スマートコントラクトが格納されている分散台帳107における格納場所(アドレス)であってもよいし、識別番号であってもよいし、親スマートコントラクトの名称であってもよい。
【0052】
トランザクションデータ生成部102は、生成した実行トランザクションデータを状態記憶部104に一時的に格納してもよい。トランザクションデータ生成部102は、サーバ10a~10cのうちの1つのサーバ10のみが備えていてもよい。トランザクションデータ生成部102は、通信部101を介して、生成した実行トランザクションデータを他のサーバ10に送信する。
【0053】
また、トランザクションデータ生成部102は、後述するスマートコントラクト実行部105により生成された子スマートコントラクトを含む第1トランザクションデータを生成してもよい。トランザクションデータ生成部102は、生成した第1トランザクションデータを状態記憶部104に一時的に格納してもよい。トランザクションデータ生成部102は、通信部101を介して、生成した第1トランザクションデータを他のサーバ10に送信する。
【0054】
ここで、第1トランザクションデータについて説明する。
【0055】
図3は、第1トランザクションデータを模式的に示す説明図である。第1トランザクションデータは、第1子スマートコントラクトと、引数としての親スマートコントラクトの識別子と、第1トランザクションデータを生成したサーバ10の署名と、第1トランザクションデータの送信日時とを含む。
図3では、サーバAにより生成された第1トランザクションデータが例示されており、「初期化機能」は、スマートコントラクトAが実行されたときに最初に実行される機能を示す。初期化機能は、管理スマートコントラクトに含まれる管理機能を呼び出して実行する機能を含む。初期化機能は、管理スマートコントラクトの識別子を含む。管理スマートコントラクトの識別子は、管理スマートコントラクトの分散台帳107における格納場所(アドレス)であってもよいし、識別番号であってもよいし、管理スマートコントラクトの名称であってもよい。「親ID」は、親スマートコントラクトの識別子を示す。「スマートコントラクトA」は、サーバAが親スマートコントラクトを実行することで生成した子スマートコントラクトを示す。「自分の識別子」は、サーバAが親スマートコントラクトを実行することで生成した子スマートコントラクトの識別子を示し、具体的には、子スマートコントラクトが格納されている分散台帳107における格納場所(アドレス)であってもよいし、識別番号であってもよいし、子スマートコントラクトの名称であってもよい。
【0056】
第1トランザクションデータは、管理スマートコントラクトをスマートコントラクト実行部105に実行させるための実行情報を含む。この実行情報は、管理スマートコントラクトを識別する識別子と、管理スマートコントラクトに入力する値(引数)とを含む。なお、管理スマートコントラクトを識別する識別子は、管理スマートコントラクトが格納されている分散台帳107における格納場所(アドレス)であってもよいし、識別番号であってもよいし、管理スマートコントラクトの名称であってもよい。
【0057】
なお、他のサーバ10により生成される第2トランザクションデータも第1トランザクションデータと同様であるため、説明を省略する。
【0058】
<トランザクションデータ検証部103>
トランザクションデータ検証部103は、通信部101がトランザクションデータを受信したとき、そのトランザクションデータの正当性を検証する。例えば、トランザクションデータ検証部103は、通信部101が受信したトランザクションデータに、正しい方法で生成された電子署名が付与されているかなどを検証する。なお、この検証はスキップされてもよい。ここで、通信部101が受信するトランザクションデータは、第2トランザクションデータである。
【0059】
また、トランザクションデータ検証部103は、トランザクションデータ生成部102がトランザクションデータを生成したとき、そのトランザクションデータの正当性を検証する。例えば、トランザクションデータ検証部103は、トランザクションデータ生成部102が生成したトランザクションデータに、正しい方法で生成された電子署名が付与されているかなどを検証する。なお、この検証はスキップされてもよい。ここで、トランザクションデータ生成部102が生成したトランザクションデータは、実行トランザクションデータ又は第1トランザクションデータである。
【0060】
また、トランザクションデータ検証部103は、他のサーバ10とともに、トランザクションデータの正当性について合意するためのコンセンサスアルゴリズムを実行する。
【0061】
ここで、コンセンサスアルゴリズムには、PBFT(Practical Byzantine Fault Tolerance)が用いられてもよいし、その他の公知のコンセンサスアルゴリズムが用いられてもよい。公知のコンセンサスアルゴリズムとしては、例えばPoW(Proof of Work)またはPoS(Proof of Stake)などがある。コンセンサスアルゴリズムにPBFTが用いられる場合、トランザクションデータ検証部103は、他のサーバ10のそれぞれからトランザクションデータの検証が成功したか否かを示す報告を受け取り、当該報告の数が所定の数を超えたか否かを判定する。そして、トランザクションデータ検証部103は、当該報告の数が所定の数を超えたとき、コンセンサスアルゴリズムによってトランザクションデータの正当性が検証されたと判定すればよい。
【0062】
トランザクションデータ検証部103は、トランザクションデータの正当性を確認した場合、記録部106にそのトランザクションデータを記録させる。
【0063】
本実施の形態では、トランザクションデータ検証部103は、実行トランザクションデータ、第1トランザクションデータ及び第2トランザクションデータの正当性を検証する。
【0064】
<状態記憶部104>
状態記憶部104は、分散台帳107の最新版のデータを記憶している記憶部である。状態記憶部104に記憶されているデータは、コンピュータにより変更されたり、削除されたりすることが可能なデータである。状態記憶部104は、分散台帳107に記憶される前のトランザクションデータを記憶してもよい。状態記憶部104は、実行トランザクションデータにより呼び出されたスマートコントラクトを記憶してもよい。また、状態記憶部104は、分散台帳107に格納されているスマートコントラクトの変数を記憶していてもよい。状態記憶部104は、トランザクションデータ生成部102により生成されたトランザクションデータを記憶してもよい。つまり、状態記憶部104は、実行トランザクションデータ及び第1トランザクションデータを記憶してもよい。状態記憶部104は、通信部101により受信されたトランザクションデータを記憶してもよい。つまり、状態記憶部104は、第2トランザクションデータを記憶してもよい。
【0065】
状態記憶部104は、上述した各データを一時的に記憶してもよい。
【0066】
<スマートコントラクト実行部105>
スマートコントラクト実行部105は、実行トランザクションデータに含まれる第1実行情報に基づいて、分散台帳107に格納されている親スマートコントラクトを実行する。スマートコントラクト実行部105は、第1実行情報に含まれる親スマートコントラクトの識別子に基づいて、分散台帳107に格納されている親スマートコントラクトを呼び出して、呼び出した親スマートコントラクトを状態記憶部104に格納する。分散台帳107に格納されている親スマートコントラクトは、新たなスマートコントラクト(子スマートコントラクト)を自動生成する自動生成機能を含む。スマートコントラクト実行部105は、状態記憶部104に格納した親スマートコントラクトを実行することで、自動生成機能を実行する。これにより、スマートコントラクト実行部105は、新たに子スマートコントラクトを生成する。スマートコントラクト実行部105は、生成した子スマートコントラクトを状態記憶部104に一時的に格納してもよい。
【0067】
また、スマートコントラクト実行部105は、第1トランザクションデータまたは第2トランザクションデータに含まれる第2実行情報に基づいて、分散台帳107に格納されている管理スマートコントラクトを実行する。スマートコントラクト実行部105は、第2実行情報に含まれる管理スマートコントラクトの識別子に基づいて、分散台帳107に格納されている管理スマートコントラクトを呼び出して、呼び出した管理スマートコントラクトを状態記憶部104に格納する。なお、分散台帳107に格納されている管理スマートコントラクトは、複数のサーバ10において自動生成機能が実行されることによって生成された複数の子スマートコントラクトのうちの一つを有効な子スマートコントラクトとして管理するための管理機能を含む。スマートコントラクト実行部105は、状態記憶部104に格納した管理スマートコントラクトを実行することで、管理機能を実行する。これにより、スマートコントラクト実行部105は、複数の子スマートコントラクトのうちの一つを選択し、選択した一つの子スマートコントラクトを親スマートコントラクトと対応付けて管理する。具体的には、スマートコントラクト実行部105は、親スマートコントラクトの識別子と、選択した一つの子スマートコントラクトの識別子とを対応付けて状態記憶部104に記憶する。
【0068】
なお、複数の子スマートコントラクトは、サーバ10で親スマートコントラクトに基づいて自動生成された第1子スマートコントラクトと、他のサーバ10で親スマートコントラクトに基づいて自動生成された第2子スマートコントラクトとを含む。上述したように、第2子スマートコントラクトは、通信部101が他のサーバ10から受信した第2トランザクションデータに含まれる。
【0069】
<記録部106>
記録部106は、トランザクションデータ検証部103により正当性の検証がなされたトランザクションデータをブロックに含めて分散台帳107に格納することで、トランザクションデータを記録する。
【0070】
なお、記録部106は、分散台帳107が内部に構成されていてもよい。
【0071】
<分散台帳107>
分散台帳107は、親スマートコントラクトを含むトランザクションデータを格納している。分散台帳107は、管理機能を含む管理スマートコントラクトを含むトランザクションデータを格納している。管理スマートコントラクトは、親スマートコントラクトとは異なるスマートコントラクトである。
【0072】
なお、親スマートコントラクトは、自動生成機能の他に、管理機能を含んでいてもよい。この場合、分散台帳107は、管理スマートコントラクトを含むトランザクションデータを親スマートコントラクトとは別に格納していなくてもよい。
【0073】
[管理システムの動作等]
次に、以上のように構成された管理システムの動作について説明する。
【0074】
図4及び
図5は、実施の形態に係る管理システムの管理処理の一例を示すシーケンス図である。
図5は、
図4の続きの処理を示す。
【0075】
まず、サーバAは、実行トランザクションデータを生成し、生成した実行トランザクションデータをサーバB及びサーバCへ送信する(S101)。
【0076】
次に、サーバA、サーバB及びサーバCは、コンセンサスアルゴリズムを実行し、実行トランザクションデータを含むブロックを生成して、それぞれの分散台帳107に格納する(S102)。
【0077】
サーバA、サーバB及びサーバCは、実行トランザクションデータについてコンセンサスアルゴリズムが実行されると、それぞれにおいて、親スマートコントラクトによって自動生成機能を実行する(S103~S105)。
【0078】
次に、サーバA、サーバB及びサーバCは、新スマートコントラクトを生成する。具体的には、サーバAは、自動生成機能により、子スマートコントラクトとしての新スマートコントラクトAを生成する(S106)。サーバBは、自動生成機能により、子スマートコントラクトとしての新スマートコントラクトBを生成する(S107)。サーバCは、自動生成機能により、子スマートコントラクトとしての新スマートコントラクトCを生成する(S108)。なお、
図4では、新スマートコントラクトAは新SC_Aと表記され、新スマートコントラクトBは新SC_Bと表記され、新スマートコントラクトCは、新SC_Cと表記される。
【0079】
次に、サーバA、サーバB及びサーバCは、それぞれにおいて、生成した新スマートコントラクトを含むトランザクションデータを生成する。具体的には、サーバAは、新スマートコントラクトAを含むトランザクションデータAを生成する(S109)。サーバBは、新スマートコントラクトBを含むトランザクションデータBを生成する(S110)。サーバCは、新スマートコントラクトCを含むトランザクションデータCを生成する(S111)。なお、
図4では、トランザクションデータAはTx_Aと表記され、トランザクションデータBはTx_Bと表記され、トランザクションデータCはTx_Cと表記される。
【0080】
次に、サーバAは、生成したトランザクションデータAをサーバB及びサーバCへ送信する(S112)。また、サーバBは、生成したトランザクションデータBをサーバA及びサーバCへ送信する(S113)。また、サーバCは、生成したトランザクションデータCをサーバA及びサーバBへ送信する(S114)。
【0081】
次に、サーバA、サーバB及びサーバCは、コンセンサスアルゴリズムを実行し、トランザクションデータA、トランザクションデータB及びトランザクションデータCを含むブロックを生成して、それぞれの分散台帳107に格納する(S115)。なお、サーバA、サーバB及びサーバCは、トランザクション毎にコンセンサスアルゴリズムを実行し、各トランザクションデータを含むブロックを生成して、それぞれの分散台帳107に格納してもよい。
【0082】
サーバA、サーバB及びサーバCは、トランザクションデータAについてコンセンサスアルゴリズムが実行されると、それぞれにおいて、管理スマートコントラクトによって初期化機能を実行する(S116~S118)。具体的には、サーバA、サーバB及びサーバCのそれぞれは、初期化機能の実行において、トランザクションデータAに含まれる第2実行情報に含まれる識別子により識別される管理スマートコントラクトを実行する。これにより、サーバA、サーバB及びサーバCは、トランザクションデータAに含まれる新スマートコントラクトAに対して管理機能を実行する。
【0083】
次に、サーバA、サーバB及びサーバCのそれぞれは、管理機能により、親スマートコントラクトに対応付ける子スマートコントラクトを設定する(S119~S121)。この設定の詳細は、後述する。
【0084】
同様に、サーバA、サーバB及びサーバCは、トランザクションデータBについてコンセンサスアルゴリズムが実行されると、それぞれにおいて、管理スマートコントラクトによって初期化機能を実行する(S122~S124)。具体的には、サーバA、サーバB及びサーバCのそれぞれは、初期化機能の実行において、トランザクションデータBに含まれる第2実行情報に含まれる識別子により識別される管理スマートコントラクトを実行する。これにより、サーバA、サーバB及びサーバCは、トランザクションデータAに含まれる新スマートコントラクトAに対して管理機能を実行する。
【0085】
次に、サーバA、サーバB及びサーバCのそれぞれは、管理機能により、親スマートコントラクトに対応付ける子スマートコントラクトを設定する(S125~S127)。この設定の詳細は、後述する。
【0086】
同様に、サーバA、サーバB及びサーバCは、トランザクションデータCについてコンセンサスアルゴリズムが実行されると、それぞれにおいて、管理スマートコントラクトによって初期化機能を実行する(S128~S130)。具体的には、サーバA、サーバB及びサーバCのそれぞれは、初期化機能の実行において、トランザクションデータCに含まれる第2実行情報に含まれる識別子により識別される管理スマートコントラクトを実行する。これにより、サーバA、サーバB及びサーバCは、トランザクションデータAに含まれる新スマートコントラクトAに対して管理機能を実行する。
【0087】
次に、サーバA、サーバB及びサーバCのそれぞれは、管理機能により、親スマートコントラクトに対応付ける子スマートコントラクトを設定する(S131~S133)。この設定の詳細は、後述する。
【0088】
次に、ステップS119~S121、S125~S127及びS131~S133のそれぞれにおける設定の詳細について説明する。
【0089】
まず、設定処理の第1の例について説明する。
【0090】
図6は、実施の形態に係る管理機能により実行される設定処理の第1の例を示す図である。
図7は、実施の形態に係る管理機能の第1の例を示す図である。ここでは、サーバAの処理として説明するが、サーバB及びサーバCにおいても同様の処理が行われる。なお、管理機能により実行される設定処理を管理処理とも称する場合がある。
【0091】
図6に示すように、サーバAは、同じ親スマートコントラクトから生成された複数の子スマートコントラクトのうちで最初に分散台帳107に格納されたトランザクションデータに含まれるスマートコントラクトが、処理対象のトランザクションデータに含まれる新スマートコントラクトであるか否かを判定する(S141)。具体的には、サーバAは、処理対象のトランザクションデータに含まれる第2実行情報に基づいて、分散台帳107に格納されている管理機能を呼び出して、呼び出した管理機能を、処理対象のトランザクションデータに含まれる親IDを引数として実行する。そして、サーバAは、
図7に示すように、親IDに対応付けられている子ID(
図7では、「子ID[親ID]」と表記)が不定値であるか否かを判定する。なお、親IDと子IDとの対応関係を示す情報は、状態記憶部104に記憶されている。この対応関係を示す情報は、初期状態では、親IDに対して不定値が対応付けられている。不定値は、0であってもよいし、nullであってもよいし、予め定められた固定値であってもよい。不定値は、親IDに対して子IDが対応付けられていないことを示す情報であればよい。サーバAは、親IDに対応付けられている子IDが不定値である場合、最初に分散台帳107に格納されたトランザクションデータに含まれるスマートコントラクトが、処理対象のトランザクションデータに含まれる新スマートコントラクトであると判定する。
【0092】
次に、サーバAは、同じ親スマートコントラクトから生成された複数の子スマートコントラクトのうちで最初に分散台帳107に格納されたトランザクションデータに含まれるスマートコントラクトが、処理対象のトランザクションデータに含まれる新スマートコントラクトであると判定した場合(S141でYes)、この新スマートコントラクトの識別子を親スマートコントラクトの識別子に対応付けて記憶する(S142)。これにより、サーバAは、この新スマートコントラクトを親スマートコントラクトと対応付けて管理する。サーバAは、例えば、状態記憶部104に記憶されている対応関係を示す情報において、親IDに対応付けられている不定値を、新スマートコントラクトの識別子に更新する(置き換える)。
【0093】
一方で、サーバAは、同じ親スマートコントラクトから生成された複数の子スマートコントラクトのうちで最初に分散台帳107に格納されたトランザクションデータに含まれるスマートコントラクトが、処理対象のトランザクションデータに含まれる新スマートコントラクトでないと判定した場合(S141でNo)、設定処理を終了する。つまり、サーバAは、状態記憶部104に記憶されている対応関係を示す情報を更新せずに、設定処理を終了する。よって、サーバAは、2番目以降に分散台帳107に格納されたトランザクションデータに含まれるスマートコントラクトを、親スマートコントラクトと対応付けて管理しない。
【0094】
例えば、サーバAは、
図5に示すように、新スマートコントラクトA、新スマートコントラクトB及び新スマートコントラクトCのうちで、新スマートコントラクトAに対して最初に初期化機能を実行するため、ステップS119の設定処理では、新スマートコントラクトAを親スマートコントラクトと対応付ける。そして、サーバAは、新スマートコントラクトB及び新スマートコントラクトCに対しては、対応関係を示す情報では、親スマートコントラクトが既に新スマートコントラクトAと対応付けられているため、対応関係を示す情報が維持される。
【0095】
第1の例における設定処理において、第1トランザクションデータ及び第2トランザクションデータのうちで、サーバAの分散台帳107に最初に格納された最初のトランザクションデータに含まれる最初の子スマートコントラクトを一の子スマートコントラクトとして親スマートコントラクトと対応付けて管理する。このため、最初のトランザクションデータに含まれる最初の子スマートコントラクトを一の子スマートコントラクトとして親スマートコントラクトと対応付けて管理することができる。
【0096】
次に、設定処理の第2の例について説明する。
【0097】
図8は、実施の形態に係る管理機能により実行される設定処理の第2の例を示す図である。
図9は、実施の形態に係る管理機能の第2の例を示す図である。ここでは、サーバAの処理として説明するが、サーバB及びサーバCにおいても同様の処理が行われる。
【0098】
図8に示すように、サーバAは、同じ親スマートコントラクトから生成された複数の子スマートコントラクトのうちでn番目に分散台帳107に格納されたトランザクションデータに含まれるスマートコントラクトが、処理対象のトランザクションデータに含まれる新スマートコントラクトであるか否かを判定する(S151)。nは、自然数であり、予め定められた固定値であってもよい。具体的には、サーバAは、処理対象のトランザクションデータに含まれる第2実行情報に基づいて、分散台帳107に格納されている管理機能を呼び出して、呼び出した管理機能を、処理対象のトランザクションデータに含まれる親IDを引数として実行する。
【0099】
なお、nは、親IDが異なれば、異なる値に設定されてもよい。nは、親ID毎にランダムに定められた値であってもよい。このため、ランダムに定められた順番に分散台帳に格納されたトランザクションデータに含まれる子スマートコントラクトを一の子スマートコントラクトとして親スマートコントラクトと対応付けて管理することができる。このように、選択される子スマートコントラクトの順番がランダムであり変更されうるため、親スマートコントラクトに対応付ける子スマートコントラクトが改変された子スマートコントラクトに差し替えられることを抑制することができる。
【0100】
そして、サーバAは、
図9に示すように、親IDに対応付けられているカウンタ(
図9では、「カウンタ[親ID]」と表記)に1を加えた値がnであるか否かを判定する。なお、親IDに対応付けられているカウンタは、状態記憶部104に記憶されている。このカウンタは、初期状態では、その値が0に設定されている。サーバAは、ステップS151を実行する度に、親IDに対応付けられているカウンタが示す値に1を加算した値に、当該カウンタが示す値を更新する。
【0101】
次に、サーバAは、同じ親スマートコントラクトから生成された複数の子スマートコントラクトのうちでn番目に分散台帳107に格納されたトランザクションデータに含まれるスマートコントラクトが、処理対象のトランザクションデータに含まれる新スマートコントラクトであると判定した場合(S151でYes)、この新スマートコントラクトの識別子を親スマートコントラクトの識別子に対応付けて記憶する(S152)。これにより、サーバAは、この新スマートコントラクトを親スマートコントラクトと対応付けて管理する。サーバAは、例えば、親IDと、この新スマートコントラクトの識別子とを対応付けて記憶する。
【0102】
一方で、サーバAは、同じ親スマートコントラクトから生成された複数の子スマートコントラクトのうちでn番目に分散台帳107に格納されたトランザクションデータに含まれるスマートコントラクトが、処理対象のトランザクションデータに含まれる新スマートコントラクトでないと判定した場合(S151でNo)、設定処理を終了する。つまり、サーバAは、状態記憶部104に記憶されている対応関係を示す情報を更新せずに、設定処理を終了する。よって、サーバAは、n番目以外の順番で分散台帳107に格納されたトランザクションデータに含まれるスマートコントラクトを、親スマートコントラクトと対応付けて管理しない。
【0103】
例えば、サーバAは、nが2に設定されている場合、
図5に示すように、新スマートコントラクトA、新スマートコントラクトB及び新スマートコントラクトCのうちで、2番目に分散台帳107に格納される新スマートコントラクトBに対して、2番目に初期化機能を実行する。ステップS119の設定処理では、新スマートコントラクトAと親スマートコントラクトとの対応付けをしない。ステップS125の設定処理では、新スマートコントラクトBと親スマートコントラクトとの対応付けをする。そして、ステップS131の設定処理では、新スマートコントラクトCと親スマートコントラクトとの対応付けをしない。
【0104】
第2の例における設定処理において、第1トランザクションデータ及び第2トランザクションデータのうちで、サーバAの分散台帳107にn番目(nは自然数)に格納されたn番目のトランザクションデータに含まれるn番目の子スマートコントラクトを一の子スマートコントラクトとして親スマートコントラクトと対応付けて管理する。このため、n番目のトランザクションデータに含まれるn番目の子スマートコントラクトを一の子スマートコントラクトとして親スマートコントラクトと対応付けて管理することができる。
【0105】
また、第1の例及び第2の例における設定処理において、2番目以降の順番でサーバAの分散台帳に格納されたトランザクションデータに含まれる子スマートコントラクトを、一の子スマートコントラクトとして管理しない。このため、n番目の子スマートコントラクトのみを親スマートコントラクトに対応付けることができる。
【0106】
次に、設定処理の第3の例について説明する。
【0107】
図10は、管理機能により実行される設定処理の第3の例を示す図である。
図11は、管理機能の第3の例を示す図である。ここでは、サーバAの処理として説明するが、サーバB及びサーバCにおいても同様の処理が行われる。
【0108】
図10に示すように、サーバAは、同じ親スマートコントラクトから生成された複数の子スマートコントラクトのうちで最初に分散台帳107に格納されたトランザクションデータに含まれるスマートコントラクトが、処理対象のトランザクションデータに含まれる新スマートコントラクトであるか否かを判定する(S161)。ステップS161は、ステップS141と同様であるため、詳細な説明を省略する。
【0109】
次に、サーバAは、同じ親スマートコントラクトから生成された複数の子スマートコントラクトのうちで最初に分散台帳107に格納されたトランザクションデータに含まれるスマートコントラクトが、処理対象のトランザクションデータに含まれる新スマートコントラクトであると判定した場合(S161でYes)、この新スマートコントラクトの識別子を親スマートコントラクトの識別子に対応付けて記憶する(S162)。ステップS162は、ステップS142と同様であるため、詳細な説明を省略する。
【0110】
一方で、サーバAは、同じ親スマートコントラクトから生成された複数の子スマートコントラクトのうちで最初に分散台帳107に格納されたトランザクションデータに含まれるスマートコントラクトが、処理対象のトランザクションデータに含まれる新スマートコントラクトでないと判定した場合(S161でNo)、2番目以降に分散台帳107に格納されたトランザクションデータに含まれるスマートコントラクトを無効にする(S163)。サーバAは、例えば、2番目以降に分散台帳107に格納されたトランザクションデータに含まれるスマートコントラクトに当該スマートコントラクトが無効であることを示す無効情報を付与することで、当該スマートコントラクトを無効にしてもよい。無効情報は、例えば、有効であるか無効であるかを示すフラグにより示されてもよい。つまり、無効情報は、無効であることを示す値に設定されたフラグであってもよい。
【0111】
なお、サーバAは、最初に分散台帳107に格納されたトランザクションデータに含まれるスマートコントラクトに対して、当該スマートコントラクトが有効であることを示す有効情報を付与することで、当該スマートコントラクトを有効にしてもよい。有効情報は、例えば、有効であるか無効であるかを示すフラグにより示されてもよい。つまり、有効情報は、有効であることを示す値に設定されたフラグであってもよい。
【0112】
例えば、サーバAは、
図5に示すように、新スマートコントラクトA、新スマートコントラクトB及び新スマートコントラクトCのうちで、新スマートコントラクトAに対して最初に初期化機能を実行するため、ステップS119の設定処理では、新スマートコントラクトAを親スマートコントラクトと対応付ける。そして、サーバAは、新スマートコントラクトB及び新スマートコントラクトCを無効にする。
【0113】
第3の例における設定処理において、第1トランザクションデータ及び第2トランザクションデータのうちで、サーバAの分散台帳107に最初に格納された最初のトランザクションデータに含まれる最初の子スマートコントラクトを一の子スマートコントラクトとして親スマートコントラクトと対応付けて管理する。このため、最初のトランザクションデータに含まれる最初の子スマートコントラクトを一の子スマートコントラクトとして親スマートコントラクトと対応付けて管理することができる。
【0114】
また、第3の例における設定処理において、2番目以降の順番でサーバAの分散台帳107に格納されたトランザクションデータに含まれる子スマートコントラクトを無効にする。このため、最初の子スマートコントラクトのみを親スマートコントラクトに対応付けることができる。また、無効な子スマートコントラクトを実行しようとする処理が発生することを抑制することができ、処理負荷を低減することができる。
【0115】
次に、設定処理の第4の例について説明する。
【0116】
図12は、管理機能により実行される設定処理の第4の例を示す図である。
図13は、管理機能の第4の例を示す図である。ここでは、サーバAの処理として説明するが、サーバB及びサーバCにおいても同様の処理が行われる。
【0117】
図12に示すように、サーバAは、同じ親スマートコントラクトから生成された複数の子スマートコントラクトのうちでn番目に分散台帳107に格納されたトランザクションデータに含まれるスマートコントラクトが、処理対象のトランザクションデータに含まれる新スマートコントラクトであるか否かを判定する(S171)。ステップS171は、ステップS151と同様であるため、詳細な説明を省略する。
【0118】
次に、サーバAは、同じ親スマートコントラクトから生成された複数の子スマートコントラクトのうちでn番目に分散台帳107に格納されたトランザクションデータに含まれるスマートコントラクトが、処理対象のトランザクションデータに含まれる新スマートコントラクトであると判定した場合(S171でYes)、この新スマートコントラクトの識別子を親スマートコントラクトの識別子に対応付けて記憶する(S172)。ステップS172は、ステップS152と同様であるため、詳細な説明を省略する。
【0119】
一方で、サーバAは、同じ親スマートコントラクトから生成された複数の子スマートコントラクトのうちでn番目に分散台帳107に格納されたトランザクションデータに含まれるスマートコントラクトが、処理対象のトランザクションデータに含まれる新スマートコントラクトでないと判定した場合(S171でNo)、n番目以外の順番で分散台帳107に格納されたトランザクションデータに含まれるスマートコントラクトを無効にする(S173)。ステップS173は、ステップS163と同様であるため、詳細な説明を省略する。
【0120】
例えば、サーバAは、nが2に設定されている場合、
図5に示すように、新スマートコントラクトA、新スマートコントラクトB及び新スマートコントラクトCのうちで、2番目に分散台帳107に格納される新スマートコントラクトBに対して、2番目に初期化機能を実行する。ステップS119の設定処理では、新スマートコントラクトAを無効にする。ステップS125の設定処理では、新スマートコントラクトBと親スマートコントラクトとの対応付けをする。そして、ステップS131の設定処理では、新スマートコントラクトCを無効にする。
【0121】
第4の例における設定処理において、第1トランザクションデータ及び第2トランザクションデータのうちで、サーバAの分散台帳107にn番目(nは自然数)に格納されたn番目のトランザクションデータに含まれるn番目の子スマートコントラクトを一の子スマートコントラクトとして親スマートコントラクトと対応付けて管理する。このため、n番目のトランザクションデータに含まれるn番目の子スマートコントラクトを一の子スマートコントラクトとして親スマートコントラクトと対応付けて管理することができる。
【0122】
また、第4の例における設定処理において、n番目以外の順番でサーバAの分散台帳107に格納されたトランザクションデータに含まれる子スマートコントラクトを無効にする。このため、n番目の子スマートコントラクトのみを親スマートコントラクトに対応付けることができる。また、無効な子スマートコントラクトを実行しようとする処理が発生することを抑制することができ、処理負荷を低減することができる。
【0123】
次に、設定処理の第5の例について説明する。
【0124】
図14は、管理機能により実行される設定処理の第5の例を示す図である。
図15は、管理機能の第5の例を示す図である。ここでは、サーバAの処理として説明するが、サーバB及びサーバCにおいても同様の処理が行われる。
【0125】
図14に示すように、サーバAは、同じ親スマートコントラクトから生成された複数の子スマートコントラクトのうちで最初に分散台帳107に格納されたトランザクションデータに含まれるスマートコントラクトが、処理対象のトランザクションデータに含まれる新スマートコントラクトであるか否かを判定する(S181)。ステップS181は、ステップS141と同様であるため、詳細な説明を省略する。
【0126】
次に、サーバAは、同じ親スマートコントラクトから生成された複数の子スマートコントラクトのうちで最初に分散台帳107に格納されたトランザクションデータに含まれるスマートコントラクトが、処理対象のトランザクションデータに含まれる新スマートコントラクトであると判定した場合(S181でYes)、この新スマートコントラクトの識別子を親スマートコントラクトの識別子に対応付けて記憶する(S182)。ステップS182は、ステップS142と同様であるため、詳細な説明を省略する。
【0127】
一方で、サーバAは、同じ親スマートコントラクトから生成された複数の子スマートコントラクトのうちで最初に分散台帳107に格納されたトランザクションデータに含まれるスマートコントラクトが、処理対象のトランザクションデータに含まれる新スマートコントラクトでないと判定した場合(S181でNo)、2番目以降に分散台帳107に格納されたトランザクションデータに含まれるスマートコントラクトに対して破棄機能を実行する(S183)。破棄機能は、例えば、Ethereumにおいてスマートコントラクトの破棄機能を示すselfdestructであり、この機能の処理対象となるスマートコントラクトを分散台帳107上で無効な状態に設定する機能である。例えば、サーバAは、スマートコントラクトに対して破棄機能を実行することで当該スマートコントラクトが格納されているブロックチェーンのブロックを無効化することができる。
【0128】
例えば、サーバAは、
図5に示すように、新スマートコントラクトA、新スマートコントラクトB及び新スマートコントラクトCのうちで、新スマートコントラクトAに対して最初に初期化機能を実行するため、ステップS119の設定処理では、新スマートコントラクトAを親スマートコントラクトと対応付ける。そして、サーバAは、新スマートコントラクトB及び新スマートコントラクトCに対して破棄機能を実行する。
【0129】
第5の例における設定処理において、第1トランザクションデータ及び第2トランザクションデータのうちで、サーバAの分散台帳107に最初に格納された最初のトランザクションデータに含まれる最初の子スマートコントラクトを一の子スマートコントラクトとして親スマートコントラクトと対応付けて管理する。このため、最初のトランザクションデータに含まれる最初の子スマートコントラクトを一の子スマートコントラクトとして親スマートコントラクトと対応付けて管理することができる。
【0130】
また、第5の例における設定処理において、2番目以降の順番でサーバAの分散台帳107に格納されたトランザクションデータに含まれる子スマートコントラクトに対して、スマートコントラクトを破棄する破棄機能を実行する。このため、2番目以降の子スマートコントラクトのみを親スマートコントラクトに対応付けることができる。また、破棄された子スマートコントラクトを実行しようとする処理が発生することを抑制することができ、処理負荷を低減することができる。
【0131】
次に、設定処理の第6の例について説明する。
【0132】
図16は、管理機能により実行される設定処理の第6の例を示す図である。
図17は、管理機能の第6の例を示す図である。ここでは、サーバAの処理として説明するが、サーバB及びサーバCにおいても同様の処理が行われる。
【0133】
図16に示すように、サーバAは、同じ親スマートコントラクトから生成された複数の子スマートコントラクトのうちでn番目に分散台帳107に格納されたトランザクションデータに含まれるスマートコントラクトが、処理対象のトランザクションデータに含まれる新スマートコントラクトであるか否かを判定する(S191)。ステップS191は、ステップS151と同様であるため、詳細な説明を省略する。
【0134】
次に、サーバAは、同じ親スマートコントラクトから生成された複数の子スマートコントラクトのうちでn番目に分散台帳107に格納されたトランザクションデータに含まれるスマートコントラクトが、処理対象のトランザクションデータに含まれる新スマートコントラクトであると判定した場合(S191でYes)、この新スマートコントラクトの識別子を親スマートコントラクトの識別子に対応付けて記憶する(S192)。ステップS192は、ステップS152と同様であるため、詳細な説明を省略する。
【0135】
一方で、サーバAは、同じ親スマートコントラクトから生成された複数の子スマートコントラクトのうちでn番目に分散台帳107に格納されたトランザクションデータに含まれるスマートコントラクトが、処理対象のトランザクションデータに含まれる新スマートコントラクトでないと判定した場合(S191でNo)、n番目以外の順番で分散台帳107に格納されたトランザクションデータに含まれるスマートコントラクトに対して破棄機能を実行する(S193)。ステップS193は、ステップS183と同様であるため、詳細な説明を省略する。
【0136】
例えば、サーバAは、nが2に設定されている場合、
図5に示すように、新スマートコントラクトA、新スマートコントラクトB及び新スマートコントラクトCのうちで、2番目に分散台帳107に格納される新スマートコントラクトBに対して、2番目に初期化機能を実行する。ステップS119の設定処理では、新スマートコントラクトAに対して破棄機能を実行する。ステップS125の設定処理では、新スマートコントラクトBと親スマートコントラクトとの対応付けをする。そして、ステップS131の設定処理では、新スマートコントラクトCに対して破棄機能を実行する。
【0137】
第6の例における設定処理において、第1トランザクションデータ及び第2トランザクションデータのうちで、サーバAの分散台帳107にn番目(nは自然数)に格納されたn番目のトランザクションデータに含まれるn番目の子スマートコントラクトを一の子スマートコントラクトとして親スマートコントラクトと対応付けて管理する。このため、n番目のトランザクションデータに含まれるn番目の子スマートコントラクトを一の子スマートコントラクトとして親スマートコントラクトと対応付けて管理することができる。
【0138】
また、第6の例における設定処理において、n番目以外の順番でサーバAの分散台帳107に格納されたトランザクションデータに含まれる子スマートコントラクトに対して、スマートコントラクトを破棄する破棄機能を実行する。このため、n番目の子スマートコントラクトのみを親スマートコントラクトに対応付けることができる。また、破棄された子スマートコントラクトを実行しようとする処理が発生することを抑制することができ、処理負荷を低減することができる。
【0139】
なお、サーバAは、ステップS141、S161又はS181において、同じ親スマートコントラクトから生成された複数の子スマートコントラクトのうちで最初に管理機能が実行されたスマートコントラクトが、処理対象のトランザクションデータに含まれる新スマートコントラクトであるか否かを判定してもよい。つまり、サーバAは、同じ親スマートコントラクトから生成された複数の子スマートコントラクトのうちで最初に管理機能が実行されたスマートコントラクトを、親スマートコントラクトと対応付けて管理してもよい。
【0140】
なお、サーバAは、ステップS151、S171又はS191において、同じ親スマートコントラクトから生成された複数の子スマートコントラクトのうちでn番目に管理機能が実行されたスマートコントラクトが、処理対象のトランザクションデータに含まれる新スマートコントラクトであるか否かを判定してもよい。つまり、サーバAは、同じ親スマートコントラクトから生成された複数の子スマートコントラクトのうちでn番目に管理機能が実行されたスマートコントラクトを、親スマートコントラクトと対応付けて管理してもよい。
【0141】
なお、サーバAにおいては、トランザクションデータAは第1トランザクションデータの一例であり、トランザクションデータB及びトランザクションデータCは第2トランザクションデータの一例である。
【0142】
[効果等]
以上のように、実施の形態に係る管理システム等によれば、親スマートコントラクトが含む自動生成機能が複数のサーバ10のそれぞれにおいて実行されることによって生成された複数の子スマートコントラクトのうちの一の子スマートコントラクトを選択して、選択した一の子スマートコントラクトを親スマートコントラクトと対応付けて管理する。このため、同一の親スマートコントラクトから自動生成された互いに同じ複数の子スマートコントラクトを重複して保持することを抑制することができる。これにより、各装置で同じ内容の複数の子スマートコントラクトが実行されることを抑制でき、管理システムの動作に不整合が生じることを抑制することができる。よって、分散台帳107を管理している管理システムを正しく動作させることができる。
【0143】
また、実施の形態に係る管理システム等によれば、管理機能は、親スマートコントラクト、又は、親スマートコントラクトとは異なる管理スマートコントラクトに含まれる。管理スマートコントラクトは、分散台帳107に格納されている。第1トランザクションデータは、第1子スマートコントラクトに対して管理機能を実行するための実行情報を含む。第2トランザクションデータは、第2子スマートコントラクトに対して管理機能を実行するための実行情報を含む。このため、第1トランザクションデータ及び第2トランザクションデータがそれぞれ分散台帳107に格納される度に、親スマートコントラクト又は管理スマートコントラクトを実行することができる。これにより、第1トランザクションデータ及び第2トランザクションデータがそれぞれ分散台帳107に格納される度に、自動的に管理機能を実行することができる。
【0144】
また、実施の形態に係る管理システム等によれば、管理では、第1トランザクションデータ及び第2トランザクションデータのうちで、サーバAの分散台帳107にn番目(nは自然数)に格納されたn番目のトランザクションデータに含まれるn番目の子スマートコントラクトを一の子スマートコントラクトとして親スマートコントラクトと対応付けて管理する。このため、n番目のトランザクションデータに含まれるn番目の子スマートコントラクトを一の子スマートコントラクトとして親スマートコントラクトと対応付けて管理することができる。
【0145】
[その他の実施の形態等]
以上のように、本開示について上記の実施の形態に基づいて説明してきたが、本開示は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本開示に含まれる。
【0146】
(1)上記の実施の形態における各装置は、具体的には、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記RAMまたはハードディスクユニットには、コンピュータプログラムが記録されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
【0147】
(2)上記の実施の形態における各装置は、構成する構成要素の一部または全部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されているとしてもよい。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM、RAMなどを含んで構成されるコンピュータシステムである。前記RAMには、コンピュータプログラムが記録されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、システムLSIは、その機能を達成する。
【0148】
また、上記の各装置を構成する構成要素の各部は、個別に1チップ化されていても良いし、一部またはすべてを含むように1チップ化されてもよい。
【0149】
また、ここでは、システムLSIとしたが、集積度の違いにより、IC、LSI、スーパーLSI、ウルトラLSIと呼称されることもある。また、集積回路化の手法はLSIに限るものではなく、専用回路または汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。
【0150】
さらには、半導体技術の進歩または派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてありえる。
【0151】
(3)上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なICカードまたは単体のモジュールから構成されているとしてもよい。前記ICカードまたは前記モジュールは、マイクロプロセッサ、ROM、RAMなどから構成されるコンピュータシステムである。前記ICカードまたは前記モジュールは、上記の超多機能LSIを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ICカードまたは前記モジュールは、その機能を達成する。このICカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
【0152】
(4)本開示は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
【0153】
また、本開示は、前記コンピュータプログラムまたは前記デジタル信号をコンピュータで読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD-ROM、MO、DVD、DVD-ROM、DVD-RAM、BD(Blu-ray(登録商標) Disc)、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記デジタル信号であるとしてもよい。
【0154】
また、本開示は、前記コンピュータプログラムまたは前記デジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
【0155】
また、本開示は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記録しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。
【0156】
また、前記プログラムまたは前記デジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記デジタル信号を、前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
【0157】
(5)上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
【産業上の利用可能性】
【0158】
本開示は、制御方法、サーバ、及び、プログラムに利用でき、例えば取引において不正取引を適切に検知することができる制御方法、サーバ、及び、プログラムなどに利用可能である。
【符号の説明】
【0159】
10、10a~10c サーバ
101 通信部
102 トランザクションデータ生成部
103 トランザクションデータ検証部
104 状態記憶部
105 スマートコントラクト実行部
106 記録部
107 分散台帳