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

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

<>
  • -履歴管理システム、履歴管理方法 図1
  • -履歴管理システム、履歴管理方法 図2
  • -履歴管理システム、履歴管理方法 図3
  • -履歴管理システム、履歴管理方法 図4
  • -履歴管理システム、履歴管理方法 図5
  • -履歴管理システム、履歴管理方法 図6
  • -履歴管理システム、履歴管理方法 図7
  • -履歴管理システム、履歴管理方法 図8
  • -履歴管理システム、履歴管理方法 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024006160
(43)【公開日】2024-01-17
(54)【発明の名称】履歴管理システム、履歴管理方法
(51)【国際特許分類】
   H04L 9/32 20060101AFI20240110BHJP
【FI】
H04L9/32 200Z
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2022106790
(22)【出願日】2022-07-01
【新規性喪失の例外の表示】新規性喪失の例外適用申請有り
(71)【出願人】
【識別番号】522222478
【氏名又は名称】株式会社ギャス
(74)【代理人】
【識別番号】100137338
【弁理士】
【氏名又は名称】辻田 朋子
(74)【代理人】
【識別番号】100224719
【弁理士】
【氏名又は名称】長谷川 隆治
(72)【発明者】
【氏名】島田 聖二
(57)【要約】
【課題】
ブロックチェーンにおけるデータ履歴の活用をより好適に支援すること。
【解決手段】
ブロックチェーンにおけるデータ履歴の活用を支援するための履歴管理システムであって、ブロックデータの値と、当該値に対応する変換値と、の対応関係を格納する記憶部と、ブロックデータを取得する取得部と、前記対応関係に基づいて、取得したブロックデータの前記値を前記変換値に変換して、前記ブロックデータに対応付けて記憶部に格納する変換部と、を備える。
【選択図】図1
【特許請求の範囲】
【請求項1】
ブロックチェーンにおけるデータ履歴の活用を支援するための履歴管理システムであって、
ブロックデータの値と、当該値に対応する変換値と、の対応関係を格納する記憶部と、
ブロックデータを取得する取得部と、
前記対応関係に基づいて、取得したブロックデータの前記値を前記変換値に変換して、前記ブロックデータに対応付けて記憶部に格納する変換部と、を備える、履歴管理システム。
【請求項2】
前記記憶部は、スマートコントラクトのアドレスと、前記スマートコントラクトのバイナリコードに含まれる関数およびその変換値と、前記関数の引数およびその変換値と、の対応関係を格納し、
前記取得部は、前記スマートコントラクトのトランザクションによるバイナリコードと、前記アドレスと、を含むブロックデータを取得し、
前記変換部は、前記バイナリコードを、前記関数および前記引数の変換値に変換する、請求項1に記載の履歴管理システム。
【請求項3】
前記記憶部は、前記スマートコントラクトのアドレスと、前記スマートコントラクトのABI(Application Binary Interface)と、の対応関係を更に格納し、
前記ABIを参照し、前記バイナリコードより前記関数および前記引数を抽出する抽出部を備える、請求項2に記載の履歴管理システム。
【請求項4】
前記記憶部は、前記スマートコントラクトのアドレスと、前記スマートコントラクトのコントラクト名と、の対応関係を更に格納し、
前記変換部は、取得した前記ブロックデータに含まれる前記スマートコントラクトのアドレスを前記コントラクト名に変換する、請求項2に記載の履歴管理システム。
【請求項5】
前記記憶部は、前記スマートコントラクトのアドレスに対応する前記引数の表記とするためのレイアウト情報を格納し、
前記引数の変換値を前記レイアウト情報にしたがって表示処理する、履歴表示生成部を備える、請求項4に記載の履歴管理システム。
【請求項6】
前記記憶部は、スマートコントラクトにトランザクション要求するユーザのアドレスと、ユーザ名と、の対応関係を格納し、
前記取得部は、前記トランザクション要求されたスマートコントラクトのアドレスと、前記ユーザのアドレスと、を含むブロックデータを取得し、
前記変換部は、前記ユーザのアドレスを、前記ユーザ名に変換する、請求項1~請求項5の何れかに記載の履歴管理システム。
【請求項7】
ブロックチェーンにおけるデータ履歴の活用を支援するための履歴管理方法であって、
ブロックデータの値と、当該値に対応する変換値と、の対応関係を格納するステップと、
ブロックデータを取得するステップと、
前記対応関係に基づいて、取得したブロックデータの前記値を前記変換値に変換して、前記ブロックデータに対応付けて記憶部に格納するステップと、をコンピュータが実行する履歴管理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、履歴管理システム、履歴管理方法に関する。
【背景技術】
【0002】
ブロックチェーンでは、複数のノードにより分散ネットワークが構築され、分散ネットワーク内で扱われるデータを合意形成アルゴリズムにしたがって処理することで、データの真正性を担保することができる。
【0003】
ブロックチェーンで扱われるデータは、ブロックと呼ばれる単位でそれぞれのノードに格納され、合意形成アルゴリズムにより承認されることで、新たなブロックが元のブロックに連結させる形で生成される。
【0004】
ブロックチェーンは、プライベートチェーンとパブリックチェーンに分類される。プライベートチェーンでは、予め定められたノード間で分散ネットワークが構築され、上述した合意形成を行うノードが一部に限定されるため、比較的容易かつ迅速に承認プロセスを実行できるという特徴を持つ。
【0005】
プライベートチェーンでは、不特定多数のノードが分散ネットワークに参加することを許容し、例えば、ネットワークに参加したノードの過半数による合意形成アルゴリズムが構築されている。パブリックチェーンでは、履歴参照サイトなどを通じて全てのブロックにおける履歴情報が公開されており、システムにおける不正や稼働状態を誰でも確認できることから、データの公共性や真正性、透明性に優れるという特徴を持つ。
【0006】
また、データの信頼性が高いというブロックチェーンの特徴を活用した仕組みとして、スマートコントラクトが知られている。スマートコントラクトでは、ブロックチェーン上に所定の処理目的のためのソースコードを登録することで、信頼性が担保された取引処理(トランザクション)を実行することができる。また、スマートコントラクトでは、トランザクションの実行結果もブロックチェーン上に格納されるため、信頼性の高い取引を実現することができる。
【0007】
上述したような利点がある一方、ブロックチェーン技術は、専門性の高さが導入障壁となることが課題であった。そのような導入障壁を低減するため、例えば、ブロックの履歴情報の活用を支援する仕組みを提供することが1つの課題として挙げられる。
【0008】
特許文献1では、スマートコントラクト型のブロックチェーンの履歴を管理する技術であって、ブロックチェーン上で、データの履歴を容易に追跡することを可能とする技術を開示している。具体的には、特許文献1では、利用者端末1と、承認端末2とを備えるブロックチェーンシステムであって、利用者端末1は、スマートコントラクトの変数の値を更新するトランザクションを発行するトランザクション発行部13を備え、承認端末2は、トランザクションを含むブロックを生成するとともに変数の値を更新し、前記ブロックと、前記変数の値を更新した当該ブロックの更新ブロック番号とをブロックチェーンシステムの端末の分散台帳11に反映させるブロック生成部153を備える、ことを開示している。
【0009】
また、スマートコントラクトのソースコードは、コンパイルされたバイトコードとしてブロックチェーンに格納されるため、そのソースコードをブロックチェーンの履歴情報から把握するためには当該ソースコードに対応するABI(Application Binary Interface)が必要となる。このとき、ABIは、そのソースコードの作成者にしか知り得ない情報であることから、不正なABIが提供されるような場合に、ブロックチェーンの履歴情報のトレーサビリティを確保できなくなる問題があった。
【0010】
特許文献2では、ABI情報の改ざんを防ぎ、ユーザが安全にブロックチェーン上のデータを読み取ることを可能とする技術を開示している。具体的には、特許文献2では、登録端末1は、スマートコントラクトにアクセスするためのABI情報を、前記スマートコントラクトから抽出する抽出部142と、スマートコントラクトをコンパイルすることで生成されたバイトコードと、ABI情報とを含むトランザクションを発行するトランザクション発行部13とを備え、承認端末2は、トランザクションに含まれるABI情報を用いてバイトコードにアクセス可能かを検証する検証部152と、アクセス可能な場合、トランザクションを含むブロックを生成し、前記ブロックおよび前記ABI情報を、ブロックチェーンシステムの端末の分散台帳11に反映させるブロック生成部154と、を備える、ことを開示している。
【先行技術文献】
【特許文献】
【0011】
【特許文献1】特開2020-080061号公報
【特許文献2】国際公開第2019/194267号
【発明の概要】
【発明が解決しようとする課題】
【0012】
特許文献1、2では、ブロックチェーン上のデータのトレーサビリティの向上や確保に向けられた技術であった。一方、何れの特許文献も、ブロックチェーン技術を熟知した専門家に向けられたものであり、ブロックチェーン技術の一般利用を促進・支援する技術を提供する点において課題があるものと把握される。
【0013】
本願発明は、上述した課題に鑑みてなされたものであって、ブロックチェーンにおけるデータ履歴の活用をより好適に支援することを解決すべき課題とする。
【課題を解決するための手段】
【0014】
上述したような課題を解決するために、本発明は、ブロックチェーンにおけるデータ履歴の活用を支援するための履歴管理システムであって、ブロックデータの値と、当該値に対応する変換値と、の対応関係を格納する記憶部と、ブロックデータを取得する取得部と、前記対応関係に基づいて、取得したブロックデータの前記値を前記変換値に変換して、前記ブロックデータに対応付けて記憶部に格納する変換部と、を備える。
【0015】
また、本発明は、ブロックチェーンにおけるデータ履歴の活用を支援するための履歴管理方法であって、ブロックデータの値と、当該値に対応する変換値と、の対応関係を格納するステップと、ブロックデータを取得するステップと、前記対応関係に基づいて、取得したブロックデータの前記値を前記変換値に変換して、前記ブロックデータに対応付けて記憶部に格納するステップと、をコンピュータが実行する。
【0016】
このような構成とすることで、ブロックデータを一般的に理解しやすい変換値に変換したうえで、ブロックデータに対応付けて格納することができる。
【0017】
本発明の好ましい形態では、前記記憶部は、スマートコントラクトのアドレスと、前記スマートコントラクトのバイナリコードに含まれる関数およびその変換値と、前記関数の引数およびその変換値と、の対応関係を格納し、前記取得部は、前記スマートコントラクトのトランザクションによるバイナリコードと、前記アドレスと、を含むブロックデータを取得し、前記変換部は、前記バイナリコードを、前記関数および前記引数の変換値に変換する。
本発明の好ましい形態では、前記記憶部は、前記スマートコントラクトのアドレスと、前記スマートコントラクトのABI(Application Binary Interface)と、の対応関係を更に格納し、前記ABIを参照し、前記バイナリコードより前記関数および前記引数を抽出する抽出部を備える。
このような構成とすることで、バイナリコードとして格納されているブロックデータのトランザクションに関する関数および引数を一般的に理解しやすい表記に変換し、提示することができる。
【0018】
本発明の好ましい形態では、前記記憶部は、前記スマートコントラクトのアドレスと、前記スマートコントラクトのコントラクト名と、の対応関係を更に格納し、前記変換部は、取得した前記ブロックデータに含まれる前記スマートコントラクトのアドレスを前記コントラクト名に変換する。
このような構成とすることで、ブロックデータに格納されるスマートコントラクトを、対応する名称として変換し、提示することができる。
【0019】
本発明の好ましい形態では、前記記憶部は、前記スマートコントラクトのアドレスに対応する前記関数の表記とするためのレイアウト情報を格納し、前記変換値を前記レイアウト情報にしたがって表示処理する履歴表示生成部を備える。
このような構成とすることで、ブロックデータを、ブロックチェーンに格納される前のデータのレイアウトとして再現し、提示することができる。
【0020】
本発明の好ましい形態では、前記記憶部は、スマートコントラクトにトランザクション要求するユーザのアドレスと、ユーザ名と、の対応関係を格納し、前記取得部は、前記トランザクション要求されたスマートコントラクトのアドレスと、前記ユーザのアドレスと、を含むブロックデータを取得し、前記変換部は、前記ユーザアドレスを、前記ユーザ名に変換する。
このような構成とすることで、ブロックデータに格納されるスマートコントラクトの利用者であるユーザのアドレスを、ユーザ名として提示することができる。
【発明の効果】
【0021】
本発明によれば、ブロックチェーンにおけるデータ履歴の活用をより好適に支援する履歴管理システム、履歴管理方法を提供することができる。
【図面の簡単な説明】
【0022】
図1】本実施形態にかかる履歴管理システムのシステム構成図を示す。
図2】本実施形態にかかるブロックチェーンの構成例を示す。
図3】本実施形態にかかる各種データの構成例を示す。
図4】本実施形態にかかる各装置のハードウェア構成図を示す。
図5】本実施形態にかかる登録処理に関するフローチャートを示す。
図6】本実施形態にかかる変換処理に用いるデータ構成例を示す。
図7】本実施形態にかかるトランザクション処理に関するフローチャートを示す。
図8】本実施形態にかかるブロックデータの変換に関する処理フローチャートを示す。
図9】本実施形態にかかる履歴参照画面の画面表示例を示す。
【発明を実施するための形態】
【0023】
以下、図面を用いて、本発明の履歴管理システムについて説明する。なお、以下に示す実施形態は本発明の一例であり、本発明を以下の実施形態に限定するものではなく、様々な構成を採用することもできる。
【0024】
本実施形態では履歴管理システムの構成、動作等について説明するが、同様の構成の方法、装置、コンピュータのプログラムおよび当該プログラムを格納したプログラム記録媒体なども、同様の作用効果を奏することができる。以下で説明する本実施形態にかかる一連の処理は、コンピュータで実行可能なプログラムとして提供され、CD-ROMやフレキシブルディスクなどの非一過性コンピュータ可読記録媒体、更には通信回線を経て提供可能である。
【0025】
履歴管理システムの各機能構成部と、履歴管理方法の各ステップと、は同様の作用効果を実現する。履歴管理システムを構成するコンピュータは、CPU(Central Processing Unit)などの演算装置および記憶装置を有する。当該コンピュータは、記憶装置に格納されるプログラムを、演算装置により実行することで、各機能構成部の機能を実現する。
【0026】
図1は、履歴管理システム1のブロック図を示す。履歴管理システム1は、履歴管理装置2と、管理者端末3と、ユーザ端末4と、ブロックチェーン5と、を備え、これら構成部は、通信ネットワークNWを介して通信可能に構成されている。履歴管理装置2は、ブロックチェーン5のノードとして構成されてもよい。管理者端末3とユーザ端末4は、1つのみ示しているがそれぞれ複数存在してもよい。
【0027】
履歴管理装置2は、ブロックチェーン5より取得されるブロックデータを変換し、変換後のデータ管理を行う装置である。履歴管理装置2は、各種データの登録を受け付ける登録受付部21と、ブロックチェーン5よりブロックデータを取得する取得部22と、ブロックデータより所定のデータを抽出する抽出部23と、ブロックデータの値を変換値に変換する変換部24と、変換値に基づく履歴表示を生成する履歴表示生成部25と、を備える。
【0028】
管理者端末3は、スマートコントラクトのソースコード作成者であって、スマートコントラクトによるサービスの管理者により操作される端末装置である。管理者端末3は、作成されたスマートコントラクトのソースコードをコンパイルし、ブロックチェーンに送信する。また、管理者端末3は、スマートコントラクトのアドレス(コントラクトアドレス)と、当該スマートコントラクトに対応するサービス名(コントラクト名)と、ソースコードに対応するABIと、を含む管理者登録情報を履歴管理装置2に送信する。
【0029】
ユーザ端末4は、スマートコントラクトに対応するサービスのユーザにより操作される端末装置である。ユーザ端末4は、ブロックチェーン5に登録されたスマートコントラクトにトランザクション要求を送信することで、サービスを利用することができる。また、ユーザ端末4は、トランザクションに基づき生成されたブロックデータの履歴情報を履歴参照画面を介して閲覧することができる。なお、履歴参照画面は、トランザクション要求を行ったユーザ端末4に限定されず、全てのユーザや管理者の端末装置を介してアクセス可能である。
【0030】
ブロックチェーン5は、複数のノードにより構成される。ノードは、サーバ装置などのコンピュータを用いることができ、パブリックチェーンの態様ではその数は制限されない。ブロックチェーン5は、図2に示すように、第1ノード50と第2ノード60を備え、これらがブロックチェーンネットワークBCNに自律分散的に接続されることで相互通信可能に構成されている。なお、図示例では、第1ノード50と第2ノード60のみを示しているが、上述した通りノードは複数存在し、以下では簡略化して説明している。
【0031】
第1ノード50は、ブロックチェーン記憶部70と、トランザクション処理部51と、合意処理部52と、ブロック処理部53と、ブロックチェーン記憶部70と、を備える。ブロックチェーン記憶部70は、ブロックチェーンネットワークBCNを介して接続されたノード間で同期され、それぞれのノードが同様のデータを格納するデータベースとして構成されている。
【0032】
トランザクション処理部51は、管理者端末3またはユーザ端末4を介してトランザクション要求を取得する。トランザクション処理部51は、第2ノード60を含むノードに対して、取得したトランザクションの合意形成を依頼する。本実施形態におけるトランザクション要求は、スマートコントラクトを登録するための第1トランザクション要求と、スマートコントラクトを実行するための第2トランザクション要求と、が含まれる。
【0033】
合意処理部52は、依頼されたトランザクションの合意形成処理を実行する。合意形成処理は、合意形成アルゴリズム(コンセンサスアルゴリズムともいう)にしたがって処理される。合意形成アルゴリズムは、例えば、PoW(Proof of Work)、PoS(Proof of Stake)、PoA(Proof of Authority)などを用いることができるが、これらに限定されず任意の合意形成アルゴリズムを採用することができる。なお、本実施形態において、合意形成アルゴリズムは、特定のノードが合意形成処理を実行するPoAなどが採用されることが好ましい。このとき、例えば、履歴管理装置2が当該特定のノードとして構成されてもよい。特定のノードの合意処理部52は、合意形成処理と併せて、トランザクションに含まれるデータの変換処理などを実行することができる。
【0034】
ブロック処理部53は、合意形成処理に成功したトランザクションについてブロック生成処理を実行する。ブロック処理部53は、生成された新規のブロックを元のブロックに連結させてブロックチェーンとしてブロックチェーン記憶部70に格納する。なお、ブロック処理部53は、合意までの期間において依頼された1つ以上のトランザクションを含むブロック生成処理を実行し、1つ以上のトランザクションが集約されたブロックを生成する。
【0035】
ブロックチェーン記憶部70は、ブロック処理部53により生成されたブロックを格納する。ブロックは、ブロックヘッダとトランザクションを格納する。トランザクションは、複数のトランザクションの集合であってよい。本実施形態において、ブロックのトランザクションを含むデータとしてブロックデータが定義される。
【0036】
ブロックデータは、図3(a)に示すように、トランザクションの識別子となるトランザクションハッシュ、ブロックへの格納状態、ブロックを識別可能なブロック番号、ブロックに格納された日時を示すタイムスタンプ、トランザクション要求の要求元を識別する送信元アドレス、トランザクション要求の要求先を識別する送信先アドレス、バイナリコード、を含む。
【0037】
送信元アドレスは、トランザクション要求を行ったユーザのアドレス(ウォレットアドレス)を含む。送信先アドレスは、トランザクション要求先となるスマートコントラクトのアドレス(コントラクトアドレス)を含む。なお、送信元アドレスが、コントラクトアドレスとなること、送信先アドレスが、ウォレットアドレスとなること等、他のアドレスとなることは制限されない。
【0038】
バイナリコードは、スマートコントラクトのソースコードのコンパイル結果である。ソースコードは、コンパイルされ、機械語にエンコードされた状態でブロックに格納されている。バイナリコードは、スマートコントラクトのトランザクションの実行結果を含むものであり、ソースコードにおける関数およびその引数がバイナリ化されたデータを示す。
【0039】
ブロックヘッダは、前ブロックのハッシュ値、タイムスタンプ、ノンス、ブロック番号、トランザクションハッシュなどを有する。トランザクションハッシュは、トランザクションまたはその集合のハッシュ演算により算出されるハッシュ値である。前ブロックのハッシュ値は、前ブロックのブロックヘッダのハッシュ演算により算出されるハッシュ値である。ブロックのハッシュ値は、所定の文字列を含むもののみ認めるというルールが設けられ、当該ルールをクリアするためにノンスの値が任意に設定される。本ブロックのブロックヘッダは、ハッシュ演算によりハッシュ値を算出され、後ブロックのブロックヘッダに格納される。
【0040】
図4(a)は、履歴管理装置2、ノード(50、60)を含む装置20のハードウェア構成図を示す。装置20は、CPU(Central Processing Unit)などによる制御部201と、RAM(Random Access Memory)等の主記憶装置、HDD(Hard Disk Drive)やSSD(Solid State Drive)、フラッシュメモリ等の補助記憶装置による記憶部202と、ネットワークとの通信制御を行うための通信部203などとを備える。履歴管理装置2の記憶部202は、OS(Operating System)と、OSと協働して各種機能構成要素を実現する履歴管理プログラムと、を格納し、履歴管理装置2の制御部201は、当該プログラムを実行することで各種機能構成要素を実現することができる。
【0041】
図4(b)は、管理者端末3、ユーザ端末4を含む端末装置30のハードウェア構成図を示す。端末装置30は、CPUなどによる制御部301と、RAM等の主記憶装置、HDD等の補助記憶装置による記憶部302と、ネットワークとの通信制御を行うための通信部303と、タッチパネル、マウス、キーボード等による入力部304と、ディスプレイ等による表示部305と、などを備える。
【0042】
図5は、スマートコントラクトの生成処理から登録処理に関するフローチャートを示す。
【0043】
管理者端末3は、管理者により作成されたスマートコントラクトのソースコードをサービス生成のための情報として入力を受け付ける(ステップS11)。本実施形態では、管理者端末3は、サービス生成のための情報としてサービス名の入力を同時に受け付ける。
【0044】
管理者端末3は、スマートコントラクトのソースコードをコンパイルするためのコンパイラがインストールされている。管理者端末3は、コンパイラによりソースコードをコンパイルし、コンパイル結果であるバイナリコードを含むトランザクション要求をブロックチェーン5に送信する(ステップS12)。ここで送信されるトランザクション要求は、スマートコントラクトを登録するための第1トランザクション要求を示す。
【0045】
コンパイラは、ソースコードのコンパイル結果としてバイナリコードを生成すると共に、ソースコードに記述された構文に基づくバイナリコードをデコードするためのABIを生成する。ABIは、ソースコードからバイナリコードを生成する際の仕様を定義した情報である。生成されたABIは、ABIインターフェイスを介してスマートコントラクトのオブジェクト作成に用いられ、スマートコントラクトのバイナリコードを実行する際に参照される。なお、第1トランザクション要求は、ABIを含んでもよい。
【0046】
ブロックチェーン5のトランザクション処理部51は、管理者端末3より送信された第1トランザクション要求に基づいてスマートコントラクトを生成する(ステップS13)。トランザクション処理部51は、当該トランザクションについて他のノードに対して合意形成を依頼し、他のノードの合意処理部52は、合意形成処理を実行する。ブロック処理部53は、合意形成に成功したバイナリコードを含むトランザクションをブロックとして格納する。このとき、ブロック処理部53は、スマートコントラクトを一意に識別可能なアドレスを発行し、ブロックに格納する。ブロック処理部53は、発行したスマートコントラクトのアドレスを含む応答を管理者端末3に送信する(ステップS14)。
【0047】
管理者端末3は、スマートコントラクトのアドレスと、コンパイラにより生成されたABIを取得する(ステップS15)。
【0048】
管理者端末3は、スマートコントラクトのアドレスと、スマートコントラクトに対応するサービス名と、ABIと、を含む管理者登録情報を履歴管理装置2に送信する(ステップS16)。
【0049】
履歴管理装置2の登録受付部21は、管理者登録情報を記憶部202に格納する(ステップS17)。管理者登録情報は、スマートコントラクトのアドレスにより識別可能であるが、別途管理IDなどを付与することで管理されてもよい。
【0050】
図3(d)は、管理者登録情報のデータ構成例を示す。また、管理者登録情報は、更にレイアウト情報を対応付けて格納してもよい。レイアウト情報は、コントラクトアドレス毎に登録可能であり、スマートコントラクトの引数の表記を、所定のレイアウトとして表示処理するための画面レイアウトに関する情報を示す。
【0051】
本実施形態において、レイアウト情報は、所定のレイアウトを有するデータがブロックチェーン5に格納される際に、そのレイアウト表現まではブロックチェーン5に格納できないため、後にブロックチェーン5より取得したブロックデータを元のレイアウトとして再現し、提示するために用いられる。
【0052】
登録受付部21は、図6に例示される関数変換データとパラメータ変換データの登録を管理者端末3を介して受け付け、管理者登録情報に対応付けて記憶部202に格納する。関数変換データとパラメータ変換データは、ソースコードに含まれる関数とその引数(パラメータ)を、一般的に理解しやすい表記名である変換値に変換するための対応関係を示すデータである。本実施形態において、関数および引数と、それぞれの変換値の対照テーブルデータの例を示すが、データ構造はこれに限定されない。
【0053】
抽出部23は、管理者登録情報のABIを参照し、コントラクトアドレスにより特定されるスマートコントラクトのバイナリコードをデコードすることで元のソースコードに含まれる関数および引数を抽出する。関数は、スマートコントラクトの実効的な処理を示すもので、引数は、当該処理により扱うデータを示す。また、抽出部23は、予め定義された関数タイプを抽出した関数に付与することができる。関数と関数タイプの対応付けの定義は、システム運営者または管理者により登録され、記憶部202に格納されるものとする。
【0054】
抽出部23は、図3(c)に示すコントラクトデータに基づき関数および引数を抽出する処理を実行する。コントラクトデータは、スマートコントラクトのアドレス、当該スマートコントラクトのバイナリコードおよび、サービス名を有する。なお、抽出部23は、管理者登録情報のコントラクトアドレスを参照し、ブロックチェーン5よりバイナリコードを取得し、抽出処理を実行してもよい。
【0055】
関数変換データは、図6(a)に示すように、ソースコードにおける関数名と、関数タイプと、表記名と、を有する。関数名は、ソースコードの実際の関数を示す。関数タイプは、例えば、読み取り、書き込みなどが関数名に対応するように定義可能であり、関数の種類に応じて登録されてもよい。登録受付部21は、管理者端末3を介して、関数名に対応する任意の表記名の登録を受け付けることができる。関数変換データの表記名は、関数の変換値であって、後述する履歴参照画面において、ブロックデータに含まれるトランザクションに関連する関数を表記名として提示する際に用いられる。
【0056】
パラメータ変換データは、図6(b)に示すように、ソースコードにおけるパラメータ名と、パラメータタイプと、表記名と、を有する。パラメータ名は、ソースコードの実際の引数を示す。パラメータタイプは、例えば、address、uint256などのデータ型がパラメータに対応するように定義可能である。登録受付部21は、管理者端末3を介して、パラメータ名に対応する任意の表記名の登録を受け付けることができる。パラメータ変換データの表記名は、引数の変換値であって、後述する参照画面において、ブロックデータに含まれるトランザクションに関連する関数を表記名として提示する際に用いられる。
【0057】
変換部24は、バイナリコードを、デコードしたソースコードに含まれる関数名およびパラメータ名のそれぞれの変換値に変換し、記憶部202に格納してもよい。
【0058】
ここで、関数変換データとパラメータ変換データは、管理者登録情報に含まれるコントラクトアドレスに対応付けられているが、他のコントラクトアドレスにより特定されるスマートコントラクトのソースコードの変換に用いられてもよい。変換部24は、例えば、管理者登録情報に対応付けられた関数変換データとパラメータ変換データにおける変換値を優先的に参照し、関数やパラメータに対応する変換値の設定がない場合、他のデータの変換値を参照することができる。なお、変換部24は、記憶部202を参照した結果、設定された変換値が存在しない場合、関数や引数を変換しないソースコードの状態で出力するものとする。
【0059】
本実施形態において、関数変換データとパラメータ変換データに含まれる変換値は、プログラミング言語を自然言語に変換した値である。自然言語は、その言語の種類(例えば、日本語、英語など)に限定はなく、また、複数の言語が登録されてもよい。変換値の言語は、ユーザ端末4で設定されたユーザの指定する言語により出力される。なお、変換値は、自然言語に限定されず、他のプログラミング言語などを含む構成とすることも可能である。
【0060】
図7は、ユーザによるスマートコントラクトのサービス利用に関する処理フローチャートを示す。
【0061】
はじめに、ユーザ端末4は、ユーザ登録情報を履歴管理装置2に送信する(ステップS21)。登録受付部21は、ユーザ登録情報を受信し、記憶部202に格納する(ステップS22)。ユーザ登録情報が登録されることで、ユーザ端末4を介したブロックチェーン5に対するトランザクション要求が可能となる。
【0062】
本実施形態において、ユーザ登録情報は、図3(e)に示すように、ユーザのウォレットアドレスと、ユーザ名と、を含む。ステップS21において、ユーザ端末4は、予めユーザが所有するウォレットアドレスを送信するか、新規のウォレットアドレスの生成依頼を送信することができる。ステップS22において、登録受付部21は、受信または生成したウォレットアドレスと、送信元のユーザのユーザ名との対応関係を格納することができる。登録受付部21は、ウォレットアドレスを含む登録完了の通知をユーザ端末4に送信する。
【0063】
ユーザ登録情報を登録後、ユーザ端末4は、スマートコントラクトを実行するためのトランザクション要求をブロックチェーン5に送信する(ステップS23)。ここで送信されるトランザクション要求は、スマートコントラクトを実行するための第2トランザクション要求と定義する。第2トランザクション要求は、スマートコントラクトを特定できる情報(コントラクトアドレスなど)と、トランザクションを要求した者を特定できる情報(ウォレットアドレスなど)と、を含むものとする。第2トランザクション要求に含まれるユーザのアドレスは、履歴管理装置2またはブロックチェーン5の所定のノードにおいて、ユーザ登録情報として登録されたアドレスと一致するか認証処理されるものとする。
【0064】
ブロックチェーン5のトランザクション処理部51は、第2トランザクション要求に含まれるスマートコントラクトを特定できる情報に基づきABIを取得する。このとき、トランザクション処理部51は、管理者登録情報を参照し、ABIを取得してもよい。トランザクション処理部51は、取得したABIを用いて、対応するスマートコントラクトのバイナリコードを処理することでスマートコントラクトのトランザクションを実行することができる。また、合意処理部52は、当該トランザクションについて合意形成処理を実行する。ブロック処理部53は、合意形成に成功したトランザクションの結果について、ブロックを生成処理する(ステップS24)。ここで、トランザクションによって、スマートコントラクトに含まれる関数のパラメータが変更され、そのパラメータがスマートコントラクトの実行結果となる。
【0065】
ブロックチェーン5は、第2トランザクション要求に対応するスマートコントラクトの実行結果を含むトランザクション応答をユーザ端末4に対して送信する(ステップS25)。ユーザ端末4は、ブロックチェーン5よりトランザクション応答を受け取り、スマートコントラクトの実行結果を出力する。これによりユーザは、スマートコントラクトのサービスを利用することができる。
【0066】
上述したステップS23~S25の処理は、ユーザ登録情報を登録したユーザ端末4からの第2トランザクション要求に応じて繰り返し実行され、ブロックデータが履歴情報として蓄積されていく。
【0067】
ステップS23において、ユーザ端末4は、スマートコントラクトを実行するための第2トランザクション要求を、履歴管理装置2を介してブロックチェーン5に送信してもよい。履歴管理装置2は、第2トランザクション要求に含まれるユーザを特定できる情報と、ユーザ登録情報に登録されるユーザのアドレスの照合結果に応じて当該第2トランザクション要求を承認し、ブロックチェーン5に送信することができる。また、このとき、履歴管理装置2は、第2トランザクション要求に含まれるスマートコントラクトを特定できる情報に基づき、管理者登録情報を参照し、当該スマートコントラクトに対応するABIを、第2トランザクション要求とともにブロックチェーン5に送信することができる。なお、ユーザ端末4は、スマートコントラクトを実行するための第2トランザクション要求を、特定のノードを介してブロックチェーン5に送信してもよい。
【0068】
図8は、ブロックデータの変換処理および履歴参照画面の履歴表示生成処理に関するフローチャートを示す。
【0069】
履歴管理装置2の取得部22は、ブロックチェーン5に対してブロックデータを取得するための履歴取得要求を送信する(ステップS31)。履歴取得要求は、例えば、所定時間毎に送信されるか、システム管理者からの指示により送信されてもよい。履歴取得要求は、1つのブロックの一部または全部、或いは、1つのブロックに含まれるブロックデータの一部または全て、或いは、1つのブロックに含まれるトランザクション単位のブロックデータ、を取得するための要求であってもよい。
【0070】
ブロックチェーン5は、履歴取得要求により要求されたブロックまたはブロックデータを抽出処理する(ステップS32)。抽出処理は、例えば、前回の履歴取得要求から今回の履歴取得要求の間に実行されたトランザクション処理またはブロック生成処理に基づき実行される。ブロックチェーン5は、抽出処理により抽出したブロックまたはブロックデータを、履歴取得要求に対する応答として履歴管理装置2に送信する(ステップS33)。
【0071】
取得部22は、ブロックチェーン5よりブロックまたはブロックデータを取得する(ステップS34)。取得部22は、取得したブロックまたはブロックデータを記憶部202に格納する。これによって、図3(a)に示すブロックデータに相当するデータが取得される。記憶部202に格納されるブロックデータは、スマートコントラクトのバイナリコードを含むデータと、他のデータを区別可能に格納してもよい。
【0072】
変換部24は、取得部22により取得したブロックデータについて変換処理を実行する(ステップS35)。
【0073】
変換部24は、スマートコントラクトのアドレスに対応するABIを参照してバイナリコードの変換処理を行うことができる。本実施形態では、変換部24は、関数変換データを参照し、バイナリコードに含まれる関数名を対応する表記名である「操作名」に変換する。また、変換部24は、パラメータ変換データを参照し、バイナリコードに含まれるパラメータ名を対応する表記名である「操作パラメータ」に変換する。また、変換部24は、管理者登録情報を参照し、ブロックデータに含まれるスマートコントラクトのアドレスを対応するサービス名に変換する。また、変換部24は、ユーザ登録情報を参照し、ブロックデータに含まれるユーザのアドレスを対応するユーザ名に変換する。
【0074】
変換部24は、ブロックデータを変換処理した変換後ブロックデータを生成し、記憶部202に格納する(ステップS36)。変換後ブロックデータは、図3(b)に示すように、ユーザのアドレスなどである送信元アドレスを変換したユーザ名と、スマートコントラクトのアドレスなどである送信先アドレスを変換したサービス名と、スマートコントラクトのバイナリコードを変換した操作名および操作パラメータと、などを有する。なお、変換後ブロックデータは、変換前の元のブロックデータに対応付けて記憶されている。
【0075】
本実施形態において、変換後ブロックデータは、履歴参照サイト(図示せず)を介して閲覧可能に構成されている。履歴参照サイトは、データの真正性を保証する観点から誰でもアクセス可能なウェブサイトの態様をとることが好ましいが、会員登録制サイトなどのようにアクセス権限を付与されたユーザにのみ公開する態様をとることもできる。
【0076】
ユーザ端末4は、ユーザにより参照を希望するブロックデータを指定した履歴参照要求を履歴管理装置2に対して送信する(ステップS36)。本実施形態において、履歴参照要求は、履歴参照サイトを介して入力を受け付けることができる。履歴参照サイトは、ブロックデータに含まれるトランザクション単位のデータ一覧を表示し、当該データ一覧から参照を希望するデータの指定を受け付けることで、そのデータを履歴参照画面としてユーザに提供することができる。
【0077】
履歴参照サイトは、変換前のブロックデータ、または、変換後のブロックデータに含まれる1つ以上のデータの指定を、ユーザ端末4を介して受け付け、当該指定されたデータを含むデータ一覧を表示することができる。ユーザ端末4が指定するデータは、例えば、ブロック番号、ユーザまたはスマートコントラクトのアドレス、ユーザ名、サービス名、トランザクションハッシュ、タイムスタンプなどが挙げられ、履歴参照サイト上の検索用フォームなどから入力される。なお、トランザクションに一意な識別子であるトランザクションハッシュなどが指定された場合、当該トランザクションにかかる履歴閲覧画面を表示してもよい。ユーザ端末4は、データ一覧から所望のブロックデータを指定し、履歴参照要求を送信できる。
【0078】
履歴管理装置2の履歴表示生成部25は、ユーザ端末4より取得した履歴参照要求により特定される変換後のブロックデータに関する履歴参照画面を表示処理し、ユーザ端末4に送信する(ステップS37)。履歴表示生成部25は、ブロックデータに含まれる関数および/または引数の変換値を、対応するレイアウト情報にしたがって表示処理し、履歴参照画面を生成する。履歴表示生成部25による履歴参照画面の表示生成処理は、履歴参照要求前に予め実行し、要求後にその処理結果を送信する態様であってもよい。
【0079】
ユーザ端末4は、履歴表示生成部25より履歴参照画面の表示処理結果を取得することで、図9(a)に示すような履歴参照画面W1を表示することができる。なお、履歴参照画面W1の画面レイアウトや表示内容は、図示例に限定されず適宜変更可能であってよい。
【0080】
履歴参照画面W1は、検索用フォームW11と、変換データ表示部W12と、ブロックデータ表示部W13と、2次元コードW14と、を備える。検索用フォームW11は、変換前後のブロックデータに含まれる1つ以上のデータの指定を受け付け、指定されたデータを含むデータ一覧を表示可能に構成される。
【0081】
変換データ表示部W12は、変換部24により変換された変換後ブロックデータを表示する。ここでは、変換データ表示部W12は、変換後ブロックデータとして、関数を変換した操作名と、引数を変換したパラメータ(操作パラメータ)と、ユーザのアドレスを変換したユーザ名と、スマートコントラクトのアドレスを変換したサービス名と、を表示している。変換データ表示部W12は、表示しているユーザ名、サービス名の選択を受け付けることで、当該ユーザ名またはサービス名のブロックデータの一覧画面に遷移させることができる。また、ユーザの所有する他の端末装置は、ユーザ名、サービス名に並記され、上述の一覧画面へのアクセス情報を提示する2次元コードを読み取ることで、当該端末装置において一覧画面に遷移することができる。
【0082】
変換データ表示部W12は、関数やパラメータが複数含まれるブロックデータである場合、複数の操作名やパラメータを表示してもよい。
【0083】
ブロックデータ表示部W13は、ブロックデータに含まれるタイムスタンプ、ブロック番号、トランザクションハッシュなどを表示する。なお、ブロックデータ表示部W13は、ブロックデータにおけるタイムスタンプやトランザクションハッシュなどの項目名は、日時や識別子などとして表示することができる。
【0084】
2次元コードW14は、履歴参照画面W1へのアクセス情報を提示している。2次元コードW14は、カメラを搭載した端末装置により読取可能であって、端末装置はコードを読み取ることで、同様の履歴参照画面W1を端末装置のディスプレイ等に表示することができる。
【0085】
履歴参照画面W1は、トランザクションの内容を示す操作名やパラメータと、トランザクションの実行の対象および被対象を示すユーザ名とサービス名と、などが分かり易い表記で提示されるものであって、この画面自体をトランザクションの証明書として用いることができる。
【0086】
図9(b)は、履歴参照画面の異なる画面表示例である履歴参照画面W2を示す。履歴参照画面W2は、「SNS保存」なるサービス名のスマートコントラクトにおけるトランザクションのブロックデータの履歴を示す。SNS保存なるサービスは、例えば、SNS(Social Networking Service)などにおける投稿データを保存するサービスを示す。履歴参照画面W2のブロックデータ表示部W22は、図9(b)に示すように、当該SNSのレイアウトを再現してパラメータを表示することができる。当該SNSのレイアウトは、履歴表示生成部25がスマートコントラクトのアドレスに対応したレイアウト情報を参照することで生成することができる。このとき、元のブロックデータに含まれるパラメータは、当該投稿データに含まれるユーザ名やユーザID、投稿本文のテキストデータ、タイムスタンプや、他ユーザからの評価データ(いいね、コメントなど)などであって、これらがレイアウト情報により規定された配置およびデザインに基づいて処理されることで、保存データの元となるレイアウトを再現することができる。
【符号の説明】
【0087】
1 履歴管理システム
2 履歴管理装置
21 登録受付部
22 取得部
23 抽出部
24 変換部
25 履歴表示生成部
201 制御部
202 記憶部
203 通信部
3 管理者端末
4 ユーザ端末
301 制御部
302 記憶部
303 通信部
304 入力部
305 出力部
5 ブロックチェーン
50 第1ノード
60 第2ノード
70 ブロックチェーン記憶部
51 トランザクション処理部
52 合意処理部
53 ブロック処理部
図1
図2
図3
図4
図5
図6
図7
図8
図9