(57)【要約】【課題】ファイル操作によってブロックチェーンデータの操作を可能にすること。【解決手段】ファイルシステムに対する操作を受け付ける受付手順と、前記ファイルシステムに対する操作と操作対象とに基づいて、ブロックチェーンデータを参照又は更新するためのリクエストを特定又は生成するリクエスト手順と、前記特定又は生成したリクエストを、前記ブロックチェーンデータを保持するブロックチェーン装置に対して送信する送信手順と、をコンピュータに実行させることを特徴とする。【選択図】図１
2020080010.tif 000002
【特許請求の範囲】
【請求項１】
ファイルシステムに対する操作を受け付ける受付手順と、
前記ファイルシステムに対する操作と操作対象とに基づいて、ブロックチェーンデータを参照又は更新するためのリクエストを特定又は生成するリクエスト手順と、
前記特定又は生成したリクエストを、前記ブロックチェーンデータを保持するブロックチェーン装置に対して送信する送信手順と、
をコンピュータに実行させることを特徴とするプログラム。
【請求項２】
前記リクエスト手順は、
前記ファイルシステムに対するファイルオープン操作と操作対象のファイルのファイル名とに基づいて、前記ファイルオープン操作及び前記ファイル名に対応する情報を参照するためのリクエストを特定する、ことを特徴とする請求項１に記載のプログラム。
【請求項３】
前記リクエスト手順は、
前記ファイルのディレクトリが所定のディレクトリである場合、前記ファイルに対応する設定ファイルを解析した解析結果に応じて、前記ファイル名に対応する関数の処理結果を参照するためのリクエストを生成する、ことを特徴とすることを特徴とする請求項２に記載のプログラム。
【請求項４】
前記関数は、スマートコントラクトを実現するプログラムの関数のうち、所定の情報を参照するための関数である、ことを特徴とする請求項３に記載のプログラム。
【請求項５】
前記リクエスト手順は、
前記ファイルシステムの所定のディレクトリへのファイル配置操作と前記ファイル配置操作により配置されたファイルとに基づいて、前記ファイルを解析した解析結果に応じたブロックチェーンデータの更新命令を実行させるためのリクエストを生成する、ことを特徴とする請求項１乃至４の何れか一項に記載のプログラム。
【請求項６】
前記更新命令は、送金命令、又はスマートコントラクトを実現するプログラムの関数のうち、所定の情報を更新するための関数の実行命令である、ことを特徴とする請求項５に記載のプログラム。
【請求項７】
ファイルシステムに対する操作を受け付ける受付手段と、
前記ファイルシステムに対する操作と操作対象とに基づいて、ブロックチェーンデータを参照又は更新するためのリクエストを特定又は生成するリクエスト手段と、
前記特定又は生成したリクエストを、前記ブロックチェーンデータを保持するブロックチェーン装置に対して送信する送信手段と、
を有することを特徴とする情報処理装置。
【請求項８】
ブロックチェーンデータを保持するブロックチェーン装置と、該ブロックチェーン装置と通信可能な情報処理装置とが含まれる情報処理システムであって、
ファイルシステムに対する操作を受け付ける受付手段と、
前記ファイルシステムに対する操作と操作対象とに基づいて、ブロックチェーンデータを参照又は更新するためのリクエストを特定又は生成するリクエスト手段と、
前記特定又は生成したリクエストを、前記ブロックチェーン装置に対して送信する送信手段と、
を有することを特徴とする情報処理システム。
【請求項９】
ファイルシステムに対する操作を受け付ける受付手順と、
前記ファイルシステムに対する操作と操作対象とに基づいて、ブロックチェーンデータを参照又は更新するためのリクエストを特定又は生成するリクエスト手順と、
前記特定又は生成したリクエストを、前記ブロックチェーンデータを保持するブロックチェーン装置に対して送信する送信手順と、
をコンピュータが実行することを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム、情報処理装置、情報処理システム及び情報処理方法に関する。
【背景技術】
【０００２】
近年、ブロックチェーン技術を実装した分散システム用のプラットフォームが知られている。このようなプラットフォームとしては、例えば、Ethereum（登録商標）やHyperledger（登録商標） Fabric等が挙げられる。
【０００３】
ブロックチェーン技術とは、分散ノード（以降、単に「ノード」とも表す。）で構成されるP2P（Peer to Peer）ネットワークにおいて、悪意のあるノードが一定の割合以内であるという条件下でノード間のデータの同期を可能にする技術である。このときノード間で同期されるデータは、ブロックデータを論理的に繋いだデータで表される。以降では、ブロックデータを論理的に繋いだデータを「ブロックチェーンデータ」と表す。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１７−９１１４８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、例えば、ノードと通信可能な装置等に搭載されているアプリケーションプログラムがブロックチェーンデータを操作（参照又は更新）する場合、当該ノードのプラットフォームが公開するAPI（Application Programming Interface）を利用することが一般的である。
【０００６】
しかしながら、APIはプラットフォームによって固有であるため、ブロックチェーンデータを操作するためには、アプリケーションプログラムのインタフェース部分を修正等する必要がある。また、プラットフォームによってはAPIを利用可能なプログラミング言語が限定されている場合があり、アプリケーションプログラムによってはAPIを利用することができないことがある。
【０００７】
ここで、ファイルシステムに対するファイル操作（例えば、ディレクトリオープンやファイルオープン、ファイル作成等）は基本的な操作であるため、アプリショーンプログラムの多くはファイル操作をサポートしていると考えられる。このため、ファイル操作によってブロックチェーンデータの操作を行うことが行うことができれば、アプリケーションプログラムのインタフェース部分を修正等することなく、ブロックチェーンデータの操作が可能となる。
【０００８】
本発明の実施の形態は、ファイル操作によってブロックチェーンデータの操作を可能にすることを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するため、本発明の実施の形態は、ファイルシステムに対する操作を受け付ける受付手順と、前記ファイルシステムに対する操作と操作対象とに基づいて、ブロックチェーンデータを参照又は更新するためのリクエストを特定又は生成するリクエスト手順と、前記特定又は生成したリクエストを、前記ブロックチェーンデータを保持するブロックチェーン装置に対して送信する送信手順と、をコンピュータに実行させることを特徴とする。
【発明の効果】
【００１０】
ファイル操作によってブロックチェーンデータの操作を可能にすることができる。
【図面の簡単な説明】
【００１１】
【図１】本実施形態に係るブロックチェーン操作システムの全体構成の一例を示す図である。
【図２】本実施形態に係るファイルシステムの機能構成の一例を示す図である。
【図３】ブロックチェーン操作処理（参照系）の流れの一例を示すシーケンス図（その１）である。
【図４】画面遷移の一例を示す図（その１）である。
【図５】画面遷移の一例を示す図（その２）である。
【図６】ブロックチェーン操作処理（参照系）の流れの一例を示すシーケンス図（その２）である。
【図７】参照命令設定ファイルの一例を示す図である。
【図８】画面遷移の一例を示す図（その３）である。
【図９】ブロックチェーン操作処理（更新系）の流れの一例を示すシーケンス図である。
【図１０】送金命令ファイルの一例を示す図である。
【図１１】更新命令ファイルの一例を示す図である。
【図１２】送金命令ファイル又は更新命令ファイルの配置の一例を示す図である。
【発明を実施するための形態】
【００１２】
以下、本発明の実施の形態（以降、「本実施形態」と表す。）について説明する。本実施形態では、ファイル操作によってブロックチェーンデータの操作が可能なブロックチェーン操作システム１について説明する。ファイル操作とは、例えば、ディレクトリオープン、ファイルオープン、ファイル作成、ディレクトリへのファイル配置、ファイル移動等の操作のことである。また、ブロックチェーンデータの操作とは、ブロックチェーンデータの参照又は更新のことである。なお、ディレクトリは「フォルダ」等と称されても良い。
【００１３】
ここで、本実施形態では、ブロックチェーン技術を実装した分散システム用のプラットフォームとしてEthereumを想定する。この場合、ブロックチェーンデータの参照とは、例えば、以下の（１）〜（９）に示す情報を参照することを意味する。
【００１４】
（１）最新のブロックデータのブロック詳細情報
（２）最新のブロックデータに含まれるトランザクション（以降、「TX」とも表す。）情報やTXレシート情報
（３）過去のブロックデータのブロック詳細情報
（４）過去のブロックデータに含まれるTX情報やTXレシート情報
（５）アカウントの残高情報
（６）アカウントが発行したTX数を示す情報
（７）ネットワーク情報（例えば、P2P接続しているノード数等）
（８）ノード情報（例えば、ハッシュレートやガス価格等）
（９）スマートコントラクトの参照系関数の実行結果を示す情報
また、ブロックチェーンデータの更新とは、例えば、以下の（１０）又は（１１）によりブロックチェーンデータを更新することを意味する。
【００１５】
（１０）ブロックチェーンデータへの送金命令
（１１）スマートコントラクトの更新系関数による更新命令
なお、参照系関数とはデータの参照のみを行う関数やクラス等のことである。一方で、更新系関数とはデータの更新（又は、参照及び更新）を行う関数やクラス等のことである。また、TXレシート情報には、発行されたTXがブロックチェーン装置（例えば、後述するブロックチェーン装置２０等）によって処理された結果の情報が出力される。
【００１６】
上述したように、本実施形態では、プラットフォームとしてEthereumを想定するが、これに限られず、ブロックチェーン技術を実装した分散システム用の任意のプラットフォームであっても良い。例えば、プラットフォームはHyperledger Fabric等であっても良い。
【００１７】
＜全体構成＞
まず、本実施形態に係るブロックチェーン操作システム１の全体構成について、図１を参照しながら説明する。図１は、本実施形態に係るブロックチェーン操作システム１の全体構成の一例を示す図である。
【００１８】
図１に示すように、本実施形態に係るブロックチェーン操作システム１は、業務端末装置１０と、ブロックチェーン装置２０とを有する。業務端末装置１０とブロックチェーン装置２０とは、例えば、インターネットや社内LAN（Local Area Network）等を介して通信可能に接続されている。なお、業務端末装置１０は、２台以上であっても良い。
【００１９】
ブロックチェーン装置２０は、ブロックチェーンのP2Pネットワークにおけるノードとして機能する装置又はシステム等である。ブロックチェーン装置２０は、他のブロックチェーン装置２０（すなわち、他のノード）とP2P接続することで、ブロックチェーンのP2Pネットワークを構成している。なお、上述したように、本実施形態では、ブロックチェーンのP2Pネットワークを構成している各ノードは、ブロックチェーンのプラットフォームとしてEthereumを用いている。
【００２０】
また、ブロックチェーン装置２０は、業務端末装置１０が操作する対象のブロックチェーンデータを保持している。なお、このブロックチェーンデータは、P2Pネットワークによって他のブロックチェーン装置との間で同期される。
【００２１】
業務端末装置１０は、ユーザが利用する端末装置である。業務端末装置１０としては、例えば、PC（パーソナルコンピュータ）やスマートフォン、タブレット端末等が挙げられる。
【００２２】
業務端末装置１０には、業務プログラム１１０と、ファイルシステム１２０とがインストールされている。業務プログラム１１０は、所定の業務に用いられるアプリケーションプログラムであり、例えば、ユーザの操作に応じてファイルシステム１２０の呼び出し等を行う。ファイルシステム１２０は、ユーザのファイル操作によってブロックチェーンデータの操作が可能なプログラムである。ファイルシステム１２０の全部又は一部は、例えば、FUSE（Filesystem in Userspace）等により実現される。
【００２３】
＜ファイルシステム１２０の機能構成＞
次に、本実施形態に係るファイルシステム１２０の機能構成について、図２を参照しながら説明する。図２は、本実施形態に係るファイルシステム１２０の機能構成の一例を示す図である。
【００２４】
図２に示すように、本実施形態に係るファイルシステム１２０は、機能部として、操作受付部１２１と、API特定部１２２と、API生成部１２３と、API発行部１２４と、表示制御部１２５とを有する。なお、これらの各機能部は、ファイルシステム１２０がCPU（Central Processing Unit）に実行させる処理により実現される。
【００２５】
操作受付部１２１は、ユーザによるファイル操作（すなわち、例えば、ディレクトリオープンやファイルオープン、ファイル作成、ディレクトリへのファイル配置、ファイル移動等）を受け付ける。
【００２６】
API特定部１２２は、操作受付部１２１がディレクトリオープン又はファイルオープンを受け付けた場合、当該ディレクトリオープン又は当該ファイルオープンに対応するAPIを特定する。ここで、APIとは、ブロックチェーンデータを操作するために、プラットフォームが公開する関数やクラス等のことである。
【００２７】
API生成部１２３は、操作受付部１２１が所定のディレクトリへのファイル配置を受け付けた場合や所定のディレクトリのファイルに対するファイルオープンを受け付けた場合等に、当該ファイルを解析して、この解析結果に応じたAPIを生成する。
【００２８】
API発行部１２４は、API特定部１２２が特定したAPI又はAPI生成部１２３が生成したAPIを発行する。すなわち、API発行部１２４は、ブロックチェーン装置２０に対して、当該APIを用いたリクエスト（要求）を送信する。
【００２９】
表示制御部１２５は、API発行部１２４によるリクエストに応じた結果（API結果）をブロックチェーン装置２０から受信すると、当該API結果に応じた画面を業務端末装置１０上に表示する。
【００３０】
＜ブロックチェーン操作処理＞
以降では、業務端末装置１０におけるファイル操作によってブロックチェーンデータを操作する場合の処理（以降、「ブロックチェーン操作処理」とも表す。）について説明する。ブロックチェーン操作処理には、ブロックチェーンデータを参照する場合である「参照系」と、ブロックチェーンデータを更新する場合である「更新系」とに分けられる。
【００３１】
≪ブロックチェーン操作処理（参照系）  その１≫
まず、ブロックチェーン操作処理（参照系）として、上記の（１）〜（８）に示す情報を参照する場合について、図３を参照しながら説明する。図３は、ブロックチェーン操作処理（参照系）の流れの一例を示すシーケンス図（その１）である。図３では、ブロックチェーンデータを参照するために、業務プログラム１１０によりファイルシステム１２０が呼び出されたものとして説明する。なお、以降のステップＳ１０１〜Ｓ１０４は、ファイル操作（ディレクトリオープン又はファイルオープン）が行われる度に繰り返し実行される。
【００３２】
まず、ユーザは、ディレクトリオープン又はファイルオープンを行う。すると、ファイルシステム１２０の操作受付部１２１は、当該ディレクトリオープン又は当該ファイルオープンを受け付ける（ステップＳ１０１）。
【００３３】
次に、ファイルシステム１２０のAPI特定部１２２は、当該ディレクトリオープン又は当該ファイルオープンに対応するAPIを特定する（ステップＳ１０２）。すなわち、API特定部１２２は、ディレクトリオープンの場合、例えば、当該ディレクトリオープンの操作対象のディレクトリに対応するAPIを特定する。一方で、API特定部１２２は、ファイルオープンの場合は、例えば、当該ファイルオープンの操作対象のファイルに対応するAPIを特定する。
【００３４】
次に、ファイルシステム１２０のAPI発行部１２４は、上記のステップＳ１０２で特定されたAPIを発行する（ステップＳ１０３）。すなわち、API発行部１２４は、ブロックチェーン装置２０に対して、当該APIを用いたリクエスト（要求）を送信する。これにより、当該リクエストに応じたAPI結果がブロックチェーン装置２０から返信される。
【００３５】
次に、ファイルシステム１２０の表示制御部１２５は、当該API結果を受信すると、当該API結果に応じた画面を表示する（ステップＳ１０４）。
【００３６】
（実施例  その１）
ここで、上記の図３に示すブロックチェーン操作処理（参照系）の一実施例として、最新のブロックデータに含まれるブロック詳細情報を参照する場合について、図４を参照しながら説明する。図４は、画面遷移の一例を示す図（その１）である。
【００３７】
まず、業務プログラム１１０によりファイルシステム１２０が呼び出されたことで、業務端末装置１０には、表示制御部１２５により、図４に示すファイルシステム画面Ｇ１１０が表示されたものとする。ファイルシステム画面Ｇ１１０には、上記の（１）〜（９）に示す情報を参照するためのディレクトリが表示されている。
【００３８】
例えば、ディレクトリ名「Accounts」のディレクトリは、アカウントの残高情報と、アカウントが発行したTX数を示す情報とを参照するためのディレクトリである。また、例えば、ディレクトリ名「Blocks」のディレクトリは、最新のブロックデータと過去のブロックデータとを含む全てのブロックデータのブロック詳細情報とTX情報とTXレシート情報とを参照するためのディレクトリである。また、例えば、ディレクトリ名「LatestBlock」のディレクトリは、最新のブロックデータのブロック詳細情報とTX情報とTXレシート情報とを参照するためのディレクトリである。また、例えば、ディレクトリ名「Networks」のディレクトリは、ネットワーク情報を参照するためのディレクトリである。また、例えば、ディレクトリ名「Contracts」のディレクトリは、スマートコントラクトの参照系関数を実行し、その実行結果を示す情報を参照するためのディレクトリである。なお、ディレクトリ名「Contracts」のディレクトリは、後述する「参照命令用ディレクトリ」である。
【００３９】
ディレクトリ名「Blocks」のディレクトリに対してユーザがディレクトリオープンを行うと、操作受付部１２１は、当該ディレクトリオープンを受け付ける（ステップＳ１０１）。次に、API特定部１２２は、当該ディレクトリオープンに対応するAPIとして、例えば、最新のブロックデータのブロック番号を取得するためのAPIを特定する（ステップＳ１０２）。このように、API特定部１２２は、ファイル操作（本実施例の場合はディレクトリオープン）と、このファイル操作の操作対象（本実施例の場合はディレクトリ名「Blocks」のディレクトリ）とに対応するAPIを特定する。
【００４０】
次に、API発行部１２４は、ブロックチェーン装置２０に対して、特定したAPIを用いたリクエストを送信する（ステップＳ１０３）。これにより、API結果として、最新のブロックデータのブロック番号がブロックチェーン装置２０から返信される。
【００４１】
そして、表示制御部１２５は、最新のブロックデータのブロック番号を受信すると、例えば、ブロック番号「０」から、最新のブロックデータのブロック番号までの各ブロック番号をディレクトリ名としたディレクトリを作成し、これらのディレクトリが含まれるファイルシステム画面Ｇ１２０を表示する（ステップＳ１０４）。これにより、各ブロックデータのブロック番号をディレクトリ名とするディレクトリが一覧で表示される。
【００４２】
同様に、例えば、ディレクトリ名「5140」（最新のブロックデータのブロック番号）のディレクトリに対してユーザがディレクトリオープンを行うと、操作受付部１２１は、当該ディレクトリオープンを受け付ける（ステップＳ１０１）。次に、API特定部１２２は、当該ディレクトリオープンに対応するAPIとして、例えば、当該ブロック番号のブロックデータに含まれる情報の種類を取得するためのAPIを特定する（ステップＳ１０２）。次に、API発行部１２４は、ブロックチェーン装置２０に対して、特定したAPIを用いたリクエストを送信する（ステップＳ１０３）。これにより、API結果として、当該ブロックデータに含まれる情報の種類を示す情報がブロックチェーン装置２０から返信される。ここで、当該ブロックデータには、ブロック詳細情報と、TX情報と、TXレシート情報とが含まれるものとする。
【００４３】
そして、表示制御部１２５は、当該ブロックデータに含まれる情報の種類を示す情報を受信すると、例えば、TXレシート情報を参照するためのディレクトリ（ディレクトリ名「transactionReceipts」）と、TX情報を参照するためのディレクトリ（ディレクトリ名「transactions」）と、ブロック詳細情報を参照するためのファイル（ファイル名「block」）とを作成し、これらのディレクトリ及びファイルが含まれるファイルシステム画面Ｇ１３０を表示する（ステップＳ１０４）。
【００４４】
ここで、ファイルシステム画面Ｇ１２０に含まれる全てのディレクトリ（ディレクトリ名がブロック番号のディレクトリ）について、当該ディレクトリをディレクトリオープンした際に表示される画面には、上記のファイルシステム画面Ｇ１３０と同様に、例えば、TXレシート情報を参照するためのディレクトリ（ディレクトリ名「transactionReceipts」）と、TX情報を参照するためのディレクトリ（ディレクトリ名「transactions」）と、ブロック詳細情報を参照するためのファイル（ファイル名「block」）とが含まれる。すなわち、ファイルシステム画面Ｇ１２０に表示されている全てのディレクトリに含まれるディレクトリのディレクトリ名及びファイルのファイル名は同一である。したがって、ファイルシステム画面Ｇ１２０においてディレクトリオープンした際には、上記のステップＳ１０２及びステップＳ１０３が行われずに、上記のステップＳ１０４のみが行われても良い（ただし、この場合、ステップＳ１０４では、当該ブロックデータに含まれる情報の種類を示す情報を受信するのではなく、記憶部等から取得することになる。）。なお、例えば、プラットフォームによっては、ブロック番号に応じてブロックデータに含まれる情報の種類が異なる場合も有り得る。この場合は、上述したように、ステップＳ１０２及びステップＳ１０３を行えば良い。
【００４５】
その後、例えば、ファイル名「block」のファイルに対してユーザがファイルオープンを行うと、操作受付部１２１は、当該ファイルオープンを受け付ける（ステップＳ１０１）。次に、API特定部１２２は、当該ファイルオープンに対応するAPIとして、例えば、当該ブロックデータのブロック詳細情報を取得するためのAPIを特定する（ステップＳ１０２）。次に、API発行部１２４は、ブロックチェーン装置２０に対して、特定したAPIを用いたリクエストを送信する（ステップＳ１０３）。これにより、API結果として、当該ブロックデータのブロック詳細情報（すなわち、ブロック番号「5140」のブロックデータのブロック詳細情報）がブロックチェーン装置２０から返信される。
【００４６】
そして、表示制御部１２５は、当該ブロックデータのブロック詳細情報を受信すると、当該ブロック詳細情報が含まれる画面を表示する（ステップＳ１０４）。これにより、ユーザは、ブロックチェーンを構成するブロックデータのうち、所望のブロックデータのブロック詳細情報を参照することができる。なお、ユーザは、同様に、所望のブロックデータのTX情報やTXレシート情報等も参照することができる。
【００４７】
（実施例  その２）
次に、上記の図３に示すブロックチェーン操作処理（参照系）の一実施例として、所望のアカウントが発行したTX数を示す情報を参照する場合について、図５を参照しながら説明する。図５は、画面遷移の一例を示す図（その２）である。
【００４８】
まず、業務端末装置１０には、表示制御部１２５により、図５に示すファイルシステム画面Ｇ１１０が表示されているものとする。ファイルシステム画面Ｇ１１０には、上記の（１）〜（９）に示す情報を参照するためのディレクトリが表示されている。
【００４９】
ディレクトリ名「Accounts」のディレクトリに対してユーザがディレクトリオープンを行うと、操作受付部１２１は、当該ディレクトリオープンを受け付ける（ステップＳ１０１）。次に、API特定部１２２は、当該ディレクトリオープンに対応するAPIとして、例えば、ブロックチェーン装置２０で管理されているアカウントの識別情報（例えば、アカウント名やアカウントID等）を取得するためのAPIを特定する（ステップＳ１０２）。このように、API特定部１２２は、ファイル操作（本実施例の場合はディレクトリオープン）と、このファイル操作の操作対象（本実施例の場合はディレクトリ名「Accounts」のディレクトリ）とに対応するAPIを特定する。
【００５０】
次に、API発行部１２４は、ブロックチェーン装置２０に対して、特定したAPIを用いたリクエストを送信する（ステップＳ１０３）。これにより、API結果として、ブロックチェーン装置２０で管理されているアカウントの識別情報がブロックチェーン装置２０から返信される。
【００５１】
そして、表示制御部１２５は、アカウントの識別情報を受信すると、例えば、これらの識別情報をディレクトリ名としたディレクトリを作成し、これらのディレクトリが含まれるファイルシステム画面Ｇ２１０を表示する（ステップＳ１０４）。これにより、ブロックチェーン装置２０で管理されているアカウントの識別情報をディレクトリ名とするディレクトリが一覧で表示される。
【００５２】
同様に、例えば、ディレクトリ名「0x78c35b51143346a10ef16a16bd46c127ef339e9」のディレクトリに対してユーザがディレクトリオープンを行うと、操作受付部１２１は、当該ディレクトリオープンを受け付ける（ステップＳ１０１）。次に、API特定部１２２は、当該ディレクトリオープンに対応するAPIとして、例えば、当該識別情報のアカウントに関する情報の種類を取得するためのAPIを特定する（ステップＳ１０２）。次に、API発行部１２４は、ブロックチェーン装置２０に対して、特定したAPIを用いたリクエストを送信する（ステップＳ１０３）。これにより、API結果として、当該アカウントに関する情報の種類を示す情報がブロックチェーン装置２０から返信される。ここで、当該アカウントに関する情報には、アカウントの残高情報と、アカウントが発行したTX数を示す情報とが含まれるものとする。
【００５３】
そして、表示制御部１２５は、当該アカウントに関する情報の種類を示す情報を受信すると、例えば、当該アカウントの残高情報を参照するためのファイル（ファイル名「balance」）と、当該アカウントが発行したTX数を示す情報を参照するためのファイル（ファイル名「transactionCount」）とを作成し、これらのファイルが含まれるファイルシステム画面Ｇ２２０を表示する（ステップＳ１０４）。
【００５４】
ここで、ファイルシステム画面Ｇ２１０に含まれる全てのディレクトリ（ディレクトリ名がアカウントの識別情報のディレクトリ）について、当該ディレクトリをディレクトリオープンした際に表示される画面には、上記のファイルシステム画面Ｇ２２０と同様に、例えば、当該アカウントの残高情報を参照するためのファイル（ファイル名「balance」）と、当該アカウントが発行したTX数を示す情報を参照するためのファイル（ファイル名「transactionCount」）とが含まれる。すなわち、ファイルシステム画面Ｇ２１０に表示されている全てのディレクトリに含まれるファイルのファイル名は同一である。したがって、ファイルシステム画面Ｇ２１０においてディレクトリオープンした際には、上記のステップＳ１０２及びステップＳ１０３が行われずに、上記のステップＳ１０４のみが行われても良い（ただし、この場合、ステップＳ１０４では、当該アカウントに関する情報の種類を示す情報を受信するのではなく、記憶部等から取得することになる。）。なお、例えば、プラットフォームによっては、アカウントの識別情報に応じてアカウントに関する情報の種類が異なる場合も有り得る。この場合は、上述したように、ステップＳ１０２及びステップＳ１０３を行えば良い。
【００５５】
その後、例えば、ファイル名「transactionCount」のファイルに対してユーザがファイルオープンを行うと、操作受付部１２１は、当該ファイルオープンを受け付ける（ステップＳ１０１）。次に、API特定部１２２は、当該ファイルオープンに対応するAPIとして、例えば、当該アカウントが発行したTX数を示す情報を取得するためのAPIを特定する（ステップＳ１０２）。次に、API発行部１２４は、ブロックチェーン装置２０に対して、特定したAPIを用いたリクエストを送信する（ステップＳ１０３）。これにより、API結果として、当該アカウントが発行したTX数を示す情報がブロックチェーン装置２０から返信される。
【００５６】
そして、表示制御部１２５は、当該アカウントが発行したTX数を示す情報を受信すると、当該アカウントが発行したTX数を示す情報が含まれる画面を表示する（ステップＳ１０４）。これにより、ユーザは、ブロックチェーン装置２０が管理しているアカウントのうち、所望のアカウントが発行したTX数を示す情報を参照することができる。なお、ユーザは、同様に、所望のアカウントの残高情報等も参照することができる。
【００５７】
≪ブロックチェーン操作処理（参照系）  その２≫
次に、ブロックチェーン操作処理（参照系）として、上記の（９）に示す情報を参照する場合について、図６を参照しながら説明する。図６は、ブロックチェーン操作処理（参照系）の流れの一例を示すシーケンス図（その２）である。なお、以降のステップＳ２０１及びＳ２０２は、上記の（９）に示す情報の参照に先立って、予め実施しておく必要がある。
【００５８】
まず、ユーザは、所定のディレクトリ（以降では、「参照命令設定用ディレクトリ」と表す。）に参照命令設定ファイルを配置する。すると、ファイルシステム１２０の操作受付部１２１は、参照命令設定ファイルの配置を受け付ける（ステップＳ２０１）。参照命令設定用ディレクトリとしては、任意のディレクトリを設定することができる。
【００５９】
ここで、参照命令設定ファイルの一例を図７に示す。図７は、参照命令ファイルの一例を示す図である。
【００６０】
図７に示す参照命令設定ファイルは、コントラクトアドレス「0xbaa411afbc990323d510686f6c431ed5c6f313d9」のスマートコントラクトの参照系関数が定義された情報である。図７に示す参照命令設定ファイルには、ABI（Application Binary Interface）と、コントラクトアドレスと、関数定義とが含まれる。また、関数定義には、参照系関数の関数定義として、例えば、関数名「name」の関数や関数名「balanceOf」の関数とその引数等が定義されている。なお、コントラクトアドレスとは、スマートコントラクトを実現するプログラム（このプログラムは、例えば、ブロックチェーン装置２０が有している。）を識別する識別情報である。
【００６１】
次に、ユーザは、所定のディレクトリ（以降では、「参照命令用ディレクトリ」と表す。）以下のディレクトリにおいて、上記のステップＳ２０１で配置された参照命令設定ファイル毎のディレクトリに、当該参照命令設定ファイルに定義されている関数名をファイル名としたファイル（以降では、「参照命令ファイル」とも表す。）を作成する。
【００６２】
例えば、上記のステップＳ２０１で配置された参照命令設定ファイルのコントラクトアドレスが「0xbaa411afbc990323d510686f6c431ed5c6f313d9」である場合、参照命令用ディレクトリ以下に、当該コントラクトアドレスをディレクトリ名としたディレクトリを作成した上で、この作成したディレクトリに対して、当該参照命令設定ファイルに定義されている関数名をファイル名とした参照命令ファイルを作成する。
【００６３】
すると、ファイルシステム１２０の操作受付部１２１は、参照命令ファイルの作成を受け付ける（ステップＳ２０２）。これにより、例えば、ディレクトリ名「0xbaa411afbc990323d510686f6c431ed5c6f313d9」のディレクトリに対して、ファイル名「name」の参照命令ファイルやファイル名「balanceOf」の参照命令ファイル等が作成される。ここで、参照命令用ディレクトリとしては、任意のディレクトリを設定することができるが、本実施形態では、ディレクトリ名「Contracts」のディレクトリが参照命令用ディレクトリであるものとする。
【００６４】
なお、上記のステップＳ２０２において、例えば、参照命令設定ファイルをファイルシステム１２０が解析することで、ファイルシステム１２０により参照命令ファイルが自動的に作成されても良い。
【００６５】
以降では、ステップＳ２０３の前に、ブロックチェーンデータを参照するために、業務プログラム１１０によりファイルシステム１２０が呼び出されたものとして説明する。なお、以降のステップＳ２０３〜Ｓ２０６は、ファイル操作（参照命令ファイルのファイルオープンが行われる度に繰り返し実行される。
【００６６】
ファイルシステム１２０の操作受付部１２１は、ユーザによる参照命令ファイルのファイルオープンを受け付ける（ステップＳ２０３）。
【００６７】
次に、ファイルシステム１２０のAPI生成部１２３は、当該参照命令ファイルに対応する参照命令設定ファイルを解析して、この解析結果に応じたAPIを生成する（ステップＳ２０４）。ここで、API生成部１２３は、当該参照命令ファイルに対応する参照命令設定ファイルに定義されている関数名の中から、ファイルオープンが行われた参照命令ファイルのファイル名に対応する関数名を特定した上で、特定した関数名の関数の定義からAPIを生成する。
【００６８】
次に、ファイルシステム１２０のAPI発行部１２４は、上記のステップＳ２０４で生成されたAPIを発行する（ステップＳ２０５）。すなわち、API発行部１２４は、ブロックチェーン装置２０に対して、当該APIを用いたリクエスト（要求）を送信する。これにより、当該リクエストに応じたAPI結果がブロックチェーン装置２０から返信される。
【００６９】
次に、ファイルシステム１２０の表示制御部１２５は、当該API結果を受信すると、当該API結果に応じた画面を表示する（ステップＳ２０６）。
【００７０】
（実施例）
ここで、上記の図６に示すブロックチェーン操作処理（参照系）の一実施例として、スマートコントラクトの参照系関数「balanceOf」の実行結果を示す情報を参照する場合について、図８を参照しながら説明する。図８は、画面遷移の一例を示す図（その３）である。なお、図８に示すファイルシステム画面Ｇ１１０からファイルシステム画面Ｇ３２０までの画面遷移は、図３に示すブロックチェーン操作処理（参照系）により行われる。そこで、図８に示すファイルシステム画面Ｇ１１０からファイルシステム画面Ｇ３２０までの画面遷移については説明を省略し、以降では、ファイルシステム画面Ｇ３２０が表示されているものとして説明する。このファイルシステム画面Ｇ３２０には、ディレクトリ名「0xbaa411afbc990323d510686f6c431ed5c6f313d9」のディレクトリ内の参照命令ファイルが一覧で表示されている。
【００７１】
ファイル名「balanceOf」の参照命令ファイルに対してユーザがファイルオープンを行うと、操作受付部１２１は、当該ファイルオープンを受け付ける（ステップＳ２０３）。次に、API生成部１２３は、当該ファイルオープンを行った参照命令ファイルに対応する参照命令設定ファイルを解析し、この解析結果に応じたAPIを生成する（ステップＳ２０４）。ここで、ファイル名「balanceOf」の参照命令ファイルは、ディレクトリ名「0xbaa411afbc990323d510686f6c431ed5c6f313d9」のディレクトリに格納されているため、この参照命令ファイルに対応する参照命令設定ファイルは、図７に示す参照命令設定ファイルである。この場合、API生成部１２３は、図７に示す参照命令設定ファイルの解析結果として、関数名「balanceOf」と、この関数名の関数の引数「0x78c35b51143346a10ef16a167bd46c127ef339e9」とを特定した上で、コントラクトアドレス「0xbaa411afbc990323d510686f6c431ed5c6f313d9」のスマートコントラクトの関数「balanceOf」（引数「0x78c35b51143346a10ef16a167bd46c127ef339e9」）を実行させるためのAPIを生成する。
【００７２】
このように、API生成部１２３は、ファイルオープンを行った参照命令ファイルのファイル名と、当該参照命令ファイルに対応する参照命令設定ファイルとにより、当該参照命令設定ファイルを解析することで、この解析結果として、スマートコントラクトの参照系関数と、この参照系関数の引数とを特定する。そして、API生成部１２３は、当該引数が指定された当該参照系関数を実行させるためのAPIを生成する。
【００７３】
次に、API発行部１２４は、ブロックチェーン装置２０に対して、特定したAPIを用いたリクエストを送信する（ステップＳ２０５）。これにより、スマートコントラクトの参照系関数が実行され、API結果として、引数に指定した「0x78c35b51143346a10ef16a167bd46c127ef339e9」を識別情報とするアカウントの残高情報がブロックチェーン装置２０から返信される。
【００７４】
そして、表示制御部１２５は、アカウントの残高情報を受信すると、スマートコントラクトの参照系関数の実行結果を示す情報として、当該アカウントの残高情報を表示する（ステップＳ２０６）。なお、ユーザは、同様に、スマートコントラクトの他の参照系関数の実行結果を示す情報も参照することができる。
【００７５】
≪ブロックチェーン操作処理（更新系）≫
次に、ブロックチェーン操作処理（更新系）として、上記の（１０）又は（１１）によりブロックチェーンデータを更新する場合について、図９を参照しながら説明する。図９は、ブロックチェーン操作処理（更新系）の流れの一例を示すシーケンス図である。図９では、ブロックチェーンデータを更新するために、業務プログラム１１０によりファイルシステム１２０が呼び出されたものとして説明する。なお、以降のステップＳ３０１〜Ｓ３０４は、ファイル操作（後述する送金命令ファイル又は更新命令ファイルの配置）が行われる度に繰り返し実行される。
【００７６】
まず、ユーザは、所定のディレクトリ（以降では、「更新命令用ディレクトリ」と表す。）に送金命令ファイル又は更新命令ファイルを配置する。すると、ファイルシステム１２０の操作受付部１２１は、送金命令ファイル又は更新命令ファイルの配置を受け付ける（ステップＳ３０１）。更新命令用ディレクトリとしては、任意のディレクトリを設定することができる。ここで、更新命令用ディレクトリに配置する送金命令ファイル又は更新命令ファイルは、ユーザが事前に作成しておく。
【００７７】
ここで、送金命令ファイルの一例を図１０に示す。図１０は、送金命令ファイルの一例を示す図である。図１０に示す送金命令ファイルには、送信元アドレスと、送信先アドレスと、手数料上限と、送金額と、データとが含まれる。ただし、送信元アドレスから送信先アドレスへ送金を行う場合にはデータは定義されなくても良い。データには、例えば、スマートコントラクトを実行させる場合に、当該スマートコントラクトのソースコードをコンパイルしたデータや、実行数関数のシグネチャとエンコードされたパラメータハッシュ等が定義される。
【００７８】
また、更新命令ファイルの一例を図１１に示す。図１１は、更新命令ファイルの一例を示す図である。図１１に示す更新命令ファイルには、ABIと、コントラクトアドレスと、関数定義とが含まれる。また、関数定義には、関数名と、メソッド（call又はsend）と、引数とを定義することができる。
【００７９】
次に、ファイルシステム１２０のAPI生成部１２３は、当該送金命令ファイル又は当該参照命令ファイルを解析して、この解析結果に応じたAPIを生成する（ステップＳ３０２）。ここで、API生成部１２３は、当該解析結果に応じて、当該送金命令ファイルに定義された送金命令を実行させるためのAPI又は当該更新命令ファイルに定義されたスマートコントラクトの関数を実行させるためのAPIを生成する。
【００８０】
次に、ファイルシステム１２０のAPI発行部１２４は、上記のステップＳ３０２で生成されたAPIを発行する（ステップＳ３０３）。すなわち、API発行部１２４は、ブロックチェーン装置２０に対して、当該APIを用いたリクエスト（要求）を送信する。これにより、当該リクエストに応じたAPI結果（すなわち、送金命令又は更新命令の実行結果）がブロックチェーン装置２０から返信される。
【００８１】
次に、ファイルシステム１２０の表示制御部１２５は、当該API結果を受信すると、当該API結果に応じた画面を表示する（ステップＳ３０４）。
【００８２】
（実施例）
ここで、上記の図９に示すブロックチェーン操作処理（更新系）の一実施例として、ファイル名が「abc」の送金命令ファイル又は更新命令ファイルを配置してブロックチェーンデータを更新する場合について、図１２を参照しながら説明する。図１２は、送金命令ファイル又は更新命令ファイルの配置の一例を示す図である。
【００８３】
ユーザは、ファイル名「abc」の送金命令ファイル又は更新命令ファイルを更新命令用ディレクトリ（図１２に示す例では、ディレクトリ名「TX」のディレクトリ）に配置する。すると、操作受付部１２１は、送金命令ファイル又は更新命令ファイルの配置を受け付ける（ステップＳ３０１）。
【００８４】
次に、API生成部１２３は、API生成部１２３は、ファイル名「abc」の送金命令ファイル又は参照命令ファイルを解析して、この解析結果に応じたAPIを生成する（ステップＳ３０２）。すなわち、API生成部１２３は、ファイル名「abc」が送金命令ファイルである場合、当該送金命令ファイルに定義された送金命令を実行させるためのAPIを生成する。一方で、API生成部１２３は、ファイル名「abc」が更新命令ファイルである場合、当該更新命令ファイルに定義されたスマートコントラクトの関数を実行させるためのAPIを生成する。
【００８５】
次に、API発行部１２４は、ブロックチェーン装置２０に対して、特定したAPIを用いたリクエストを送信する（ステップＳ３０３）。これにより、送金命令又は更新命令が実行され、API結果として、送金命令の実行結果又は更新命令の実行結果がブロックチェーン装置２０から返信される。
【００８６】
そして、表示制御部１２５は、送金命令の実行結果又は更新命令の実行結果を受信すると、当該実行結果を表示する（ステップＳ３０４）。
【００８７】
＜まとめ＞
以上のように、本実施形態に係るブロックチェーン操作システム１では、業務端末装置１０のユーザがファイルシステム１２０に対してファイル操作を行うことで、ブロックチェーン装置２０が保持するブロックチェーンデータに対して操作を行うことができる。このため、本実施形態に係るブロックチェーン操作システム１によれば、業務プログラム１１０を修正等することなく、ファイルシステム１２０に対するファイル操作だけでブロックチェーンデータを容易に操作することができるようになる。
【００８８】
なお、本実施形態では、業務端末装置１０がファイルシステム１２０を有している場合について説明したが、これに限られない。ファイルシステム１２０は、例えば、ブロックチェーン装置２０が有していても良いし、業務端末装置１０とブロックチェーン装置２０との間に位置する装置（例えば、中継装置やクラウドサーバ等）が有していても良い。
【００８９】
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【符号の説明】
【００９０】
１        ブロックチェーン操作システム
１０      業務端末装置
２０      ブロックチェーン装置
１１０    業務プログラム
１２０    ファイルシステム
１２１    操作受付部
１２２    API特定部
１２３    API生成部
１２４    API発行部
１２５    表示制御部
【図１】
2020080010.tif 000003
【図２】
2020080010.tif 000004
【図３】
2020080010.tif 000005
【図４】
2020080010.tif 000006
【図５】
2020080010.tif 000007
【図６】
2020080010.tif 000008
【図７】
2020080010.tif 000009
【図８】
2020080010.tif 000010
【図９】
2020080010.tif 000011
【図１０】
2020080010.tif 000012
【図１１】
2020080010.tif 000013
【図１２】
2020080010.tif 000014