(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-11
(45)【発行日】2024-03-19
(54)【発明の名称】プログラム、情報処理装置、情報処理システム及び情報処理方法
(51)【国際特許分類】
G06F 16/13 20190101AFI20240312BHJP
G06Q 20/38 20120101ALI20240312BHJP
【FI】
G06F16/13 200
G06Q20/38 310
(21)【出願番号】P 2022176887
(22)【出願日】2022-11-04
(62)【分割の表示】P 2018212401の分割
【原出願日】2018-11-12
【審査請求日】2022-11-04
(73)【特許権者】
【識別番号】000102717
【氏名又は名称】NTTテクノクロス株式会社
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(72)【発明者】
【氏名】深津 颯騎
(72)【発明者】
【氏名】宮崎 泰彦
(72)【発明者】
【氏名】兼松 和広
(72)【発明者】
【氏名】滝江 勇介
【審査官】甲斐 哲雄
(56)【参考文献】
【文献】特開2018-136626(JP,A)
【文献】特開平09-081430(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/10-16/188
G06Q 10/00-99/00
(57)【特許請求の範囲】
【請求項1】
ファイルシステムに対する第1の操作と前記第1の操作の操作対象
のファイルのファイル名とに基づいて、
データ群を論理的に繋いだデータの前記ファイル名に対応する情報に対して第2の操作を行うためのリクエストを、前記
データ群を論理的に繋いだデータを保持す
る装置に対して送信する送信手順、
をコンピュータに実行させることを特徴とするプログラム。
【請求項2】
前記第1の操作には前記ファイルシステムに対するファイルオープン操作が含まれ、前記第2の操作には前記
データ群を論理的に繋いだデータに対する参照が含まれ、
前記送信手順は、
前記ファイルシステムに対するファイルオープン操作と
前記ファイル名とに基づいて、前記ファイルオープン操作及び前記ファイル名に対応する情報を参照するためのリクエストを送信する、請求項1に記載のプログラム。
【請求項3】
前記送信手順は、
前記ファイルのディレクトリが所定のディレクトリである場合、前記ファイルに対応する設定ファイルを解析した解析結果に応じて、前記ファイル名に対応する関数の処理結果を参照するためのリクエストを送信する、請求項2に記載のプログラム。
【請求項4】
前記関数は、スマートコントラクトを実現するプログラムの関数のうち、所定の情報を参照するための関数である、ことを特徴とする請求項3に記載のプログラム。
【請求項5】
前記第1の操作には前記ファイルシステムの所定のディレクトリへのファイル配置操作が含まれ、前記第2の操作には前記
データ群を論理的に繋いだデータの更新が含まれ、
前記送信手順は、
前記ファイルシステムの所定のディレクトリへのファイル配置操作と前記ファイル配置操作により配置されたファイルとに基づいて、前記ファイルを解析した解析結果に応じた
前記データ群を論理的に繋いだデータの更新命令を実行させるためのリクエストを送信する、請求項1乃至4の何れか一項に記載のプログラム。
【請求項6】
前記更新命令は、送金命令、又はスマートコントラクトを実現するプログラムの関数のうち、所定の情報を更新するための関数の実行命令である、ことを特徴とする請求項5に記載のプログラム。
【請求項7】
ファイルシステムに対する第1の操作と前記第1の操作の操作対象
のファイルのファイル名とに基づいて、
データ群を論理的に繋いだデータの前記ファイル名に対応する情報に対して第2の操作を行うためのリクエストを、前記
データ群を論理的に繋いだデータを保持す
る装置に対して送信する送信部、
を有することを特徴とする情報処理装置。
【請求項8】
データ群を論理的に繋いだデータを保持す
る装置と、
該装置と通信可能な情報処理装置とが含まれる情報処理システムであって、
ファイルシステムに対する第1の操作と前記第1の操作の操作対象
のファイルのファイル名とに基づいて、
前記データ群を論理的に繋いだデータの前記ファイル名に対応する情報に対して第2の操作を行うためのリクエストを、前
記装置に対して送信する送信部、
を有することを特徴とする情報処理システム。
【請求項9】
ファイルシステムに対する第1の操作と前記第1の操作の操作対象
のファイルのファイル名とに基づいて、
データ群を論理的に繋いだデータの前記ファイル名に対応する情報に対して第2の操作を行うためのリクエストを、前記
データ群を論理的に繋いだデータを保持す
る装置に対して送信する送信手順、
をコンピュータが実行することを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラム、情報処理装置、情報処理システム及び情報処理方法に関する。
【背景技術】
【0002】
近年、ブロックチェーン技術を実装した分散システム用のプラットフォームが知られている。このようなプラットフォームとしては、例えば、Ethereum(登録商標)やHyperledger(登録商標) Fabric等が挙げられる。
【0003】
ブロックチェーン技術とは、分散ノード(以降、単に「ノード」とも表す。)で構成されるP2P(Peer to Peer)ネットワークにおいて、悪意のあるノードが一定の割合以内であるという条件下でノード間のデータの同期を可能にする技術である。このときノード間で同期されるデータは、ブロックデータを論理的に繋いだデータで表される。以降では、ブロックデータを論理的に繋いだデータを「ブロックチェーンデータ」と表す。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
ところで、例えば、ノードと通信可能な装置等に搭載されているアプリケーションプログラムがブロックチェーンデータを操作(参照又は更新)する場合、当該ノードのプラットフォームが公開するAPI(Application Programming Interface)を利用することが一般的である。
【0006】
しかしながら、APIはプラットフォームによって固有であるため、ブロックチェーンデータを操作するためには、アプリケーションプログラムのインタフェース部分を修正等する必要がある。また、プラットフォームによってはAPIを利用可能なプログラミング言語が限定されている場合があり、アプリケーションプログラムによってはAPIを利用することができないことがある。
【0007】
ここで、ファイルシステムに対するファイル操作(例えば、ディレクトリオープンやファイルオープン、ファイル作成等)は基本的な操作であるため、アプリショーンプログラムの多くはファイル操作をサポートしていると考えられる。このため、ファイル操作によってブロックチェーンデータの操作を行うことができれば、アプリケーションプログラムのインタフェース部分を修正等することなく、ブロックチェーンデータの操作が可能となる。
【0008】
本発明の実施の形態は、ファイル操作によってブロックチェーンデータの操作を可能にすることを目的とする。
【課題を解決するための手段】
【0009】
上記目的を達成するため、本発明の実施の形態は、ファイルシステムに対する第1の操作と前記第1の操作の操作対象とに基づいて、ブロックチェーンデータに対して第2の操作を行うためのリクエストを、前記ブロックチェーンデータを保持するブロックチェーン装置に対して送信する送信手順、をコンピュータに実行させることを特徴とする。
【発明の効果】
【0010】
ファイル操作によってブロックチェーンデータの操作を可能にすることができる。
【図面の簡単な説明】
【0011】
【
図1】本実施形態に係るブロックチェーン操作システムの全体構成の一例を示す図である。
【
図2】本実施形態に係るファイルシステムの機能構成の一例を示す図である。
【
図3】ブロックチェーン操作処理(参照系)の流れの一例を示すシーケンス図(その1)である。
【
図6】ブロックチェーン操作処理(参照系)の流れの一例を示すシーケンス図(その2)である。
【
図7】参照命令設定ファイルの一例を示す図である。
【
図9】ブロックチェーン操作処理(更新系)の流れの一例を示すシーケンス図である。
【
図12】送金命令ファイル又は更新命令ファイルの配置の一例を示す図である。
【発明を実施するための形態】
【0012】
以下、本発明の実施の形態(以降、「本実施形態」と表す。)について説明する。本実施形態では、ファイル操作によってブロックチェーンデータの操作が可能なブロックチェーン操作システム1について説明する。ファイル操作とは、例えば、ディレクトリオープン、ファイルオープン、ファイル作成、ディレクトリへのファイル配置、ファイル移動等の操作のことである。また、ブロックチェーンデータの操作とは、ブロックチェーンデータの参照又は更新のことである。なお、ディレクトリは「フォルダ」等と称されても良い。
【0013】
ここで、本実施形態では、ブロックチェーン技術を実装した分散システム用のプラットフォームとしてEthereumを想定する。この場合、ブロックチェーンデータの参照とは、例えば、以下の(1)~(9)に示す情報を参照することを意味する。
【0014】
(1)最新のブロックデータのブロック詳細情報
(2)最新のブロックデータに含まれるトランザクション(以降、「TX」とも表す。)情報やTXレシート情報
(3)過去のブロックデータのブロック詳細情報
(4)過去のブロックデータに含まれるTX情報やTXレシート情報
(5)アカウントの残高情報
(6)アカウントが発行したTX数を示す情報
(7)ネットワーク情報(例えば、P2P接続しているノード数等)
(8)ノード情報(例えば、ハッシュレートやガス価格等)
(9)スマートコントラクトの参照系関数の実行結果を示す情報
また、ブロックチェーンデータの更新とは、例えば、以下の(10)又は(11)によりブロックチェーンデータを更新することを意味する。
【0015】
(10)ブロックチェーンデータへの送金命令
(11)スマートコントラクトの更新系関数による更新命令
なお、参照系関数とはデータの参照のみを行う関数やクラス等のことである。一方で、更新系関数とはデータの更新(又は、参照及び更新)を行う関数やクラス等のことである。また、TXレシート情報には、発行されたTXがブロックチェーン装置(例えば、後述するブロックチェーン装置20等)によって処理された結果の情報が出力される。
【0016】
上述したように、本実施形態では、プラットフォームとしてEthereumを想定するが、これに限られず、ブロックチェーン技術を実装した分散システム用の任意のプラットフォームであっても良い。例えば、プラットフォームはHyperledger Fabric等であっても良い。
【0017】
<全体構成>
まず、本実施形態に係るブロックチェーン操作システム1の全体構成について、
図1を参照しながら説明する。
図1は、本実施形態に係るブロックチェーン操作システム1の全体構成の一例を示す図である。
【0018】
図1に示すように、本実施形態に係るブロックチェーン操作システム1は、業務端末装置10と、ブロックチェーン装置20とを有する。業務端末装置10とブロックチェーン装置20とは、例えば、インターネットや社内LAN(Local Area Network)等を介して通信可能に接続されている。なお、業務端末装置10は、2台以上であっても良い。
【0019】
ブロックチェーン装置20は、ブロックチェーンのP2Pネットワークにおけるノードとして機能する装置又はシステム等である。ブロックチェーン装置20は、他のブロックチェーン装置20(すなわち、他のノード)とP2P接続することで、ブロックチェーンのP2Pネットワークを構成している。なお、上述したように、本実施形態では、ブロックチェーンのP2Pネットワークを構成している各ノードは、ブロックチェーンのプラットフォームとしてEthereumを用いている。
【0020】
また、ブロックチェーン装置20は、業務端末装置10が操作する対象のブロックチェーンデータを保持している。なお、このブロックチェーンデータは、P2Pネットワークによって他のブロックチェーン装置との間で同期される。
【0021】
業務端末装置10は、ユーザが利用する端末装置である。業務端末装置10としては、例えば、PC(パーソナルコンピュータ)やスマートフォン、タブレット端末等が挙げられる。
【0022】
業務端末装置10には、業務プログラム110と、ファイルシステム120とがインストールされている。業務プログラム110は、所定の業務に用いられるアプリケーションプログラムであり、例えば、ユーザの操作に応じてファイルシステム120の呼び出し等を行う。ファイルシステム120は、ユーザのファイル操作によってブロックチェーンデータの操作が可能なプログラムである。ファイルシステム120の全部又は一部は、例えば、FUSE(Filesystem in Userspace)等により実現される。
【0023】
<ファイルシステム120の機能構成>
次に、本実施形態に係るファイルシステム120の機能構成について、
図2を参照しながら説明する。
図2は、本実施形態に係るファイルシステム120の機能構成の一例を示す図である。
【0024】
図2に示すように、本実施形態に係るファイルシステム120は、機能部として、操作受付部121と、API特定部122と、API生成部123と、API発行部124と、表示制御部125とを有する。なお、これらの各機能部は、ファイルシステム120がCPU(Central Processing Unit)に実行させる処理により実現される。
【0025】
操作受付部121は、ユーザによるファイル操作(すなわち、例えば、ディレクトリオープンやファイルオープン、ファイル作成、ディレクトリへのファイル配置、ファイル移動等)を受け付ける。
【0026】
API特定部122は、操作受付部121がディレクトリオープン又はファイルオープンを受け付けた場合、当該ディレクトリオープン又は当該ファイルオープンに対応するAPIを特定する。ここで、APIとは、ブロックチェーンデータを操作するために、プラットフォームが公開する関数やクラス等のことである。
【0027】
API生成部123は、操作受付部121が所定のディレクトリへのファイル配置を受け付けた場合や所定のディレクトリのファイルに対するファイルオープンを受け付けた場合等に、当該ファイルを解析して、この解析結果に応じたAPIを生成する。
【0028】
API発行部124は、API特定部122が特定したAPI又はAPI生成部123が生成したAPIを発行する。すなわち、API発行部124は、ブロックチェーン装置20に対して、当該APIを用いたリクエスト(要求)を送信する。
【0029】
表示制御部125は、API発行部124によるリクエストに応じた結果(API結果)をブロックチェーン装置20から受信すると、当該API結果に応じた画面を業務端末装置10上に表示する。
【0030】
<ブロックチェーン操作処理>
以降では、業務端末装置10におけるファイル操作によってブロックチェーンデータを操作する場合の処理(以降、「ブロックチェーン操作処理」とも表す。)について説明する。ブロックチェーン操作処理には、ブロックチェーンデータを参照する場合である「参照系」と、ブロックチェーンデータを更新する場合である「更新系」とに分けられる。
【0031】
≪ブロックチェーン操作処理(参照系) その1≫
まず、ブロックチェーン操作処理(参照系)として、上記の(1)~(8)に示す情報を参照する場合について、
図3を参照しながら説明する。
図3は、ブロックチェーン操作処理(参照系)の流れの一例を示すシーケンス図(その1)である。
図3では、ブロックチェーンデータを参照するために、業務プログラム110によりファイルシステム120が呼び出されたものとして説明する。なお、以降のステップS101~S104は、ファイル操作(ディレクトリオープン又はファイルオープン)が行われる度に繰り返し実行される。
【0032】
まず、ユーザは、ディレクトリオープン又はファイルオープンを行う。すると、ファイルシステム120の操作受付部121は、当該ディレクトリオープン又は当該ファイルオープンを受け付ける(ステップS101)。
【0033】
次に、ファイルシステム120のAPI特定部122は、当該ディレクトリオープン又は当該ファイルオープンに対応するAPIを特定する(ステップS102)。すなわち、API特定部122は、ディレクトリオープンの場合、例えば、当該ディレクトリオープンの操作対象のディレクトリに対応するAPIを特定する。一方で、API特定部122は、ファイルオープンの場合は、例えば、当該ファイルオープンの操作対象のファイルに対応するAPIを特定する。
【0034】
次に、ファイルシステム120のAPI発行部124は、上記のステップS102で特定されたAPIを発行する(ステップS103)。すなわち、API発行部124は、ブロックチェーン装置20に対して、当該APIを用いたリクエスト(要求)を送信する。これにより、当該リクエストに応じたAPI結果がブロックチェーン装置20から返信される。
【0035】
次に、ファイルシステム120の表示制御部125は、当該API結果を受信すると、当該API結果に応じた画面を表示する(ステップS104)。
【0036】
(実施例 その1)
ここで、上記の
図3に示すブロックチェーン操作処理(参照系)の一実施例として、最新のブロックデータに含まれるブロック詳細情報を参照する場合について、
図4を参照しながら説明する。
図4は、画面遷移の一例を示す図(その1)である。
【0037】
まず、業務プログラム110によりファイルシステム120が呼び出されたことで、業務端末装置10には、表示制御部125により、
図4に示すファイルシステム画面G110が表示されたものとする。ファイルシステム画面G110には、上記の(1)~(9)に示す情報を参照するためのディレクトリが表示されている。
【0038】
例えば、ディレクトリ名「Accounts」のディレクトリは、アカウントの残高情報と、アカウントが発行したTX数を示す情報とを参照するためのディレクトリである。また、例えば、ディレクトリ名「Blocks」のディレクトリは、最新のブロックデータと過去のブロックデータとを含む全てのブロックデータのブロック詳細情報とTX情報とTXレシート情報とを参照するためのディレクトリである。また、例えば、ディレクトリ名「LatestBlock」のディレクトリは、最新のブロックデータのブロック詳細情報とTX情報とTXレシート情報とを参照するためのディレクトリである。また、例えば、ディレクトリ名「Networks」のディレクトリは、ネットワーク情報を参照するためのディレクトリである。また、例えば、ディレクトリ名「Contracts」のディレクトリは、スマートコントラクトの参照系関数を実行し、その実行結果を示す情報を参照するためのディレクトリである。なお、ディレクトリ名「Contracts」のディレクトリは、後述する「参照命令用ディレクトリ」である。
【0039】
ディレクトリ名「Blocks」のディレクトリに対してユーザがディレクトリオープンを行うと、操作受付部121は、当該ディレクトリオープンを受け付ける(ステップS101)。次に、API特定部122は、当該ディレクトリオープンに対応するAPIとして、例えば、最新のブロックデータのブロック番号を取得するためのAPIを特定する(ステップS102)。このように、API特定部122は、ファイル操作(本実施例の場合はディレクトリオープン)と、このファイル操作の操作対象(本実施例の場合はディレクトリ名「Blocks」のディレクトリ)とに対応するAPIを特定する。
【0040】
次に、API発行部124は、ブロックチェーン装置20に対して、特定したAPIを用いたリクエストを送信する(ステップS103)。これにより、API結果として、最新のブロックデータのブロック番号がブロックチェーン装置20から返信される。
【0041】
そして、表示制御部125は、最新のブロックデータのブロック番号を受信すると、例えば、ブロック番号「0」から、最新のブロックデータのブロック番号までの各ブロック番号をディレクトリ名としたディレクトリを作成し、これらのディレクトリが含まれるファイルシステム画面G120を表示する(ステップS104)。これにより、各ブロックデータのブロック番号をディレクトリ名とするディレクトリが一覧で表示される。
【0042】
同様に、例えば、ディレクトリ名「5140」(最新のブロックデータのブロック番号)のディレクトリに対してユーザがディレクトリオープンを行うと、操作受付部121は、当該ディレクトリオープンを受け付ける(ステップS101)。次に、API特定部122は、当該ディレクトリオープンに対応するAPIとして、例えば、当該ブロック番号のブロックデータに含まれる情報の種類を取得するためのAPIを特定する(ステップS102)。次に、API発行部124は、ブロックチェーン装置20に対して、特定したAPIを用いたリクエストを送信する(ステップS103)。これにより、API結果として、当該ブロックデータに含まれる情報の種類を示す情報がブロックチェーン装置20から返信される。ここで、当該ブロックデータには、ブロック詳細情報と、TX情報と、TXレシート情報とが含まれるものとする。
【0043】
そして、表示制御部125は、当該ブロックデータに含まれる情報の種類を示す情報を受信すると、例えば、TXレシート情報を参照するためのディレクトリ(ディレクトリ名「transactionReceipts」)と、TX情報を参照するためのディレクトリ(ディレクトリ名「transactions」)と、ブロック詳細情報を参照するためのファイル(ファイル名「block」)とを作成し、これらのディレクトリ及びファイルが含まれるファイルシステム画面G130を表示する(ステップS104)。
【0044】
ここで、ファイルシステム画面G120に含まれる全てのディレクトリ(ディレクトリ名がブロック番号のディレクトリ)について、当該ディレクトリをディレクトリオープンした際に表示される画面には、上記のファイルシステム画面G130と同様に、例えば、TXレシート情報を参照するためのディレクトリ(ディレクトリ名「transactionReceipts」)と、TX情報を参照するためのディレクトリ(ディレクトリ名「transactions」)と、ブロック詳細情報を参照するためのファイル(ファイル名「block」)とが含まれる。すなわち、ファイルシステム画面G120に表示されている全てのディレクトリに含まれるディレクトリのディレクトリ名及びファイルのファイル名は同一である。したがって、ファイルシステム画面G120においてディレクトリオープンした際には、上記のステップS102及びステップS103が行われずに、上記のステップS104のみが行われても良い(ただし、この場合、ステップS104では、当該ブロックデータに含まれる情報の種類を示す情報を受信するのではなく、記憶部等から取得することになる。)。なお、例えば、プラットフォームによっては、ブロック番号に応じてブロックデータに含まれる情報の種類が異なる場合も有り得る。この場合は、上述したように、ステップS102及びステップS103を行えば良い。
【0045】
その後、例えば、ファイル名「block」のファイルに対してユーザがファイルオープンを行うと、操作受付部121は、当該ファイルオープンを受け付ける(ステップS101)。次に、API特定部122は、当該ファイルオープンに対応するAPIとして、例えば、当該ブロックデータのブロック詳細情報を取得するためのAPIを特定する(ステップS102)。次に、API発行部124は、ブロックチェーン装置20に対して、特定したAPIを用いたリクエストを送信する(ステップS103)。これにより、API結果として、当該ブロックデータのブロック詳細情報(すなわち、ブロック番号「5140」のブロックデータのブロック詳細情報)がブロックチェーン装置20から返信される。
【0046】
そして、表示制御部125は、当該ブロックデータのブロック詳細情報を受信すると、当該ブロック詳細情報が含まれる画面を表示する(ステップS104)。これにより、ユーザは、ブロックチェーンを構成するブロックデータのうち、所望のブロックデータのブロック詳細情報を参照することができる。なお、ユーザは、同様に、所望のブロックデータのTX情報やTXレシート情報等も参照することができる。
【0047】
(実施例 その2)
次に、上記の
図3に示すブロックチェーン操作処理(参照系)の一実施例として、所望のアカウントが発行したTX数を示す情報を参照する場合について、
図5を参照しながら説明する。
図5は、画面遷移の一例を示す図(その2)である。
【0048】
まず、業務端末装置10には、表示制御部125により、
図5に示すファイルシステム画面G110が表示されているものとする。ファイルシステム画面G110には、上記の(1)~(9)に示す情報を参照するためのディレクトリが表示されている。
【0049】
ディレクトリ名「Accounts」のディレクトリに対してユーザがディレクトリオープンを行うと、操作受付部121は、当該ディレクトリオープンを受け付ける(ステップS101)。次に、API特定部122は、当該ディレクトリオープンに対応するAPIとして、例えば、ブロックチェーン装置20で管理されているアカウントの識別情報(例えば、アカウント名やアカウントID等)を取得するためのAPIを特定する(ステップS102)。このように、API特定部122は、ファイル操作(本実施例の場合はディレクトリオープン)と、このファイル操作の操作対象(本実施例の場合はディレクトリ名「Accounts」のディレクトリ)とに対応するAPIを特定する。
【0050】
次に、API発行部124は、ブロックチェーン装置20に対して、特定したAPIを用いたリクエストを送信する(ステップS103)。これにより、API結果として、ブロックチェーン装置20で管理されているアカウントの識別情報がブロックチェーン装置20から返信される。
【0051】
そして、表示制御部125は、アカウントの識別情報を受信すると、例えば、これらの識別情報をディレクトリ名としたディレクトリを作成し、これらのディレクトリが含まれるファイルシステム画面G210を表示する(ステップS104)。これにより、ブロックチェーン装置20で管理されているアカウントの識別情報をディレクトリ名とするディレクトリが一覧で表示される。
【0052】
同様に、例えば、ディレクトリ名「0x78c35b51143346a10ef16a16bd46c127ef339e9」のディレクトリに対してユーザがディレクトリオープンを行うと、操作受付部121は、当該ディレクトリオープンを受け付ける(ステップS101)。次に、API特定部122は、当該ディレクトリオープンに対応するAPIとして、例えば、当該識別情報のアカウントに関する情報の種類を取得するためのAPIを特定する(ステップS102)。次に、API発行部124は、ブロックチェーン装置20に対して、特定したAPIを用いたリクエストを送信する(ステップS103)。これにより、API結果として、当該アカウントに関する情報の種類を示す情報がブロックチェーン装置20から返信される。ここで、当該アカウントに関する情報には、アカウントの残高情報と、アカウントが発行したTX数を示す情報とが含まれるものとする。
【0053】
そして、表示制御部125は、当該アカウントに関する情報の種類を示す情報を受信すると、例えば、当該アカウントの残高情報を参照するためのファイル(ファイル名「balance」)と、当該アカウントが発行したTX数を示す情報を参照するためのファイル(ファイル名「transactionCount」)とを作成し、これらのファイルが含まれるファイルシステム画面G220を表示する(ステップS104)。
【0054】
ここで、ファイルシステム画面G210に含まれる全てのディレクトリ(ディレクトリ名がアカウントの識別情報のディレクトリ)について、当該ディレクトリをディレクトリオープンした際に表示される画面には、上記のファイルシステム画面G220と同様に、例えば、当該アカウントの残高情報を参照するためのファイル(ファイル名「balance」)と、当該アカウントが発行したTX数を示す情報を参照するためのファイル(ファイル名「transactionCount」)とが含まれる。すなわち、ファイルシステム画面G210に表示されている全てのディレクトリに含まれるファイルのファイル名は同一である。したがって、ファイルシステム画面G210においてディレクトリオープンした際には、上記のステップS102及びステップS103が行われずに、上記のステップS104のみが行われても良い(ただし、この場合、ステップS104では、当該アカウントに関する情報の種類を示す情報を受信するのではなく、記憶部等から取得することになる。)。なお、例えば、プラットフォームによっては、アカウントの識別情報に応じてアカウントに関する情報の種類が異なる場合も有り得る。この場合は、上述したように、ステップS102及びステップS103を行えば良い。
【0055】
その後、例えば、ファイル名「transactionCount」のファイルに対してユーザがファイルオープンを行うと、操作受付部121は、当該ファイルオープンを受け付ける(ステップS101)。次に、API特定部122は、当該ファイルオープンに対応するAPIとして、例えば、当該アカウントが発行したTX数を示す情報を取得するためのAPIを特定する(ステップS102)。次に、API発行部124は、ブロックチェーン装置20に対して、特定したAPIを用いたリクエストを送信する(ステップS103)。これにより、API結果として、当該アカウントが発行したTX数を示す情報がブロックチェーン装置20から返信される。
【0056】
そして、表示制御部125は、当該アカウントが発行したTX数を示す情報を受信すると、当該アカウントが発行したTX数を示す情報が含まれる画面を表示する(ステップS104)。これにより、ユーザは、ブロックチェーン装置20が管理しているアカウントのうち、所望のアカウントが発行したTX数を示す情報を参照することができる。なお、ユーザは、同様に、所望のアカウントの残高情報等も参照することができる。
【0057】
≪ブロックチェーン操作処理(参照系) その2≫
次に、ブロックチェーン操作処理(参照系)として、上記の(9)に示す情報を参照する場合について、
図6を参照しながら説明する。
図6は、ブロックチェーン操作処理(参照系)の流れの一例を示すシーケンス図(その2)である。なお、以降のステップS201及びS202は、上記の(9)に示す情報の参照に先立って、予め実施しておく必要がある。
【0058】
まず、ユーザは、所定のディレクトリ(以降では、「参照命令設定用ディレクトリ」と表す。)に参照命令設定ファイルを配置する。すると、ファイルシステム120の操作受付部121は、参照命令設定ファイルの配置を受け付ける(ステップS201)。参照命令設定用ディレクトリとしては、任意のディレクトリを設定することができる。
【0059】
ここで、参照命令設定ファイルの一例を
図7に示す。
図7は、参照命令ファイルの一例を示す図である。
【0060】
図7に示す参照命令設定ファイルは、コントラクトアドレス「0xbaa411afbc990323d510686f6c431ed5c6f313d9」のスマートコントラクトの参照系関数が定義された情報である。
図7に示す参照命令設定ファイルには、ABI(Application Binary Interface)と、コントラクトアドレスと、関数定義とが含まれる。また、関数定義には、参照系関数の関数定義として、例えば、関数名「name」の関数や関数名「balanceOf」の関数とその引数等が定義されている。なお、コントラクトアドレスとは、スマートコントラクトを実現するプログラム(このプログラムは、例えば、ブロックチェーン装置20が有している。)を識別する識別情報である。
【0061】
次に、ユーザは、所定のディレクトリ(以降では、「参照命令用ディレクトリ」と表す。)以下のディレクトリにおいて、上記のステップS201で配置された参照命令設定ファイル毎のディレクトリに、当該参照命令設定ファイルに定義されている関数名をファイル名としたファイル(以降では、「参照命令ファイル」とも表す。)を作成する。
【0062】
例えば、上記のステップS201で配置された参照命令設定ファイルのコントラクトアドレスが「0xbaa411afbc990323d510686f6c431ed5c6f313d9」である場合、参照命令用ディレクトリ以下に、当該コントラクトアドレスをディレクトリ名としたディレクトリを作成した上で、この作成したディレクトリに対して、当該参照命令設定ファイルに定義されている関数名をファイル名とした参照命令ファイルを作成する。
【0063】
すると、ファイルシステム120の操作受付部121は、参照命令ファイルの作成を受け付ける(ステップS202)。これにより、例えば、ディレクトリ名「0xbaa411afbc990323d510686f6c431ed5c6f313d9」のディレクトリに対して、ファイル名「name」の参照命令ファイルやファイル名「balanceOf」の参照命令ファイル等が作成される。ここで、参照命令用ディレクトリとしては、任意のディレクトリを設定することができるが、本実施形態では、ディレクトリ名「Contracts」のディレクトリが参照命令用ディレクトリであるものとする。
【0064】
なお、上記のステップS202において、例えば、参照命令設定ファイルをファイルシステム120が解析することで、ファイルシステム120により参照命令ファイルが自動的に作成されても良い。
【0065】
以降では、ステップS203の前に、ブロックチェーンデータを参照するために、業務プログラム110によりファイルシステム120が呼び出されたものとして説明する。なお、以降のステップS203~S206は、ファイル操作(参照命令ファイルのファイルオープンが行われる度に繰り返し実行される。
【0066】
ファイルシステム120の操作受付部121は、ユーザによる参照命令ファイルのファイルオープンを受け付ける(ステップS203)。
【0067】
次に、ファイルシステム120のAPI生成部123は、当該参照命令ファイルに対応する参照命令設定ファイルを解析して、この解析結果に応じたAPIを生成する(ステップS204)。ここで、API生成部123は、当該参照命令ファイルに対応する参照命令設定ファイルに定義されている関数名の中から、ファイルオープンが行われた参照命令ファイルのファイル名に対応する関数名を特定した上で、特定した関数名の関数の定義からAPIを生成する。
【0068】
次に、ファイルシステム120のAPI発行部124は、上記のステップS204で生成されたAPIを発行する(ステップS205)。すなわち、API発行部124は、ブロックチェーン装置20に対して、当該APIを用いたリクエスト(要求)を送信する。これにより、当該リクエストに応じたAPI結果がブロックチェーン装置20から返信される。
【0069】
次に、ファイルシステム120の表示制御部125は、当該API結果を受信すると、当該API結果に応じた画面を表示する(ステップS206)。
【0070】
(実施例)
ここで、上記の
図6に示すブロックチェーン操作処理(参照系)の一実施例として、スマートコントラクトの参照系関数「balanceOf」の実行結果を示す情報を参照する場合について、
図8を参照しながら説明する。
図8は、画面遷移の一例を示す図(その3)である。なお、
図8に示すファイルシステム画面G110からファイルシステム画面G320までの画面遷移は、
図3に示すブロックチェーン操作処理(参照系)により行われる。そこで、
図8に示すファイルシステム画面G110からファイルシステム画面G320までの画面遷移については説明を省略し、以降では、ファイルシステム画面G320が表示されているものとして説明する。このファイルシステム画面G320には、ディレクトリ名「0xbaa411afbc990323d510686f6c431ed5c6f313d9」のディレクトリ内の参照命令ファイルが一覧で表示されている。
【0071】
ファイル名「balanceOf」の参照命令ファイルに対してユーザがファイルオープンを行うと、操作受付部121は、当該ファイルオープンを受け付ける(ステップS203)。次に、API生成部123は、当該ファイルオープンを行った参照命令ファイルに対応する参照命令設定ファイルを解析し、この解析結果に応じたAPIを生成する(ステップS204)。ここで、ファイル名「balanceOf」の参照命令ファイルは、ディレクトリ名「0xbaa411afbc990323d510686f6c431ed5c6f313d9」のディレクトリに格納されているため、この参照命令ファイルに対応する参照命令設定ファイルは、
図7に示す参照命令設定ファイルである。この場合、API生成部123は、
図7に示す参照命令設定ファイルの解析結果として、関数名「balanceOf」と、この関数名の関数の引数「0x78c35b51143346a10ef16a167bd46c127ef339e9」とを特定した上で、コントラクトアドレス「0xbaa411afbc990323d510686f6c431ed5c6f313d9」のスマートコントラクトの関数「balanceOf」(引数「0x78c35b51143346a10ef16a167bd46c127ef339e9」)を実行させるためのAPIを生成する。
【0072】
このように、API生成部123は、ファイルオープンを行った参照命令ファイルのファイル名と、当該参照命令ファイルに対応する参照命令設定ファイルとにより、当該参照命令設定ファイルを解析することで、この解析結果として、スマートコントラクトの参照系関数と、この参照系関数の引数とを特定する。そして、API生成部123は、当該引数が指定された当該参照系関数を実行させるためのAPIを生成する。
【0073】
次に、API発行部124は、ブロックチェーン装置20に対して、特定したAPIを用いたリクエストを送信する(ステップS205)。これにより、スマートコントラクトの参照系関数が実行され、API結果として、引数に指定した「0x78c35b51143346a10ef16a167bd46c127ef339e9」を識別情報とするアカウントの残高情報がブロックチェーン装置20から返信される。
【0074】
そして、表示制御部125は、アカウントの残高情報を受信すると、スマートコントラクトの参照系関数の実行結果を示す情報として、当該アカウントの残高情報を表示する(ステップS206)。なお、ユーザは、同様に、スマートコントラクトの他の参照系関数の実行結果を示す情報も参照することができる。
【0075】
≪ブロックチェーン操作処理(更新系)≫
次に、ブロックチェーン操作処理(更新系)として、上記の(10)又は(11)によりブロックチェーンデータを更新する場合について、
図9を参照しながら説明する。
図9は、ブロックチェーン操作処理(更新系)の流れの一例を示すシーケンス図である。
図9では、ブロックチェーンデータを更新するために、業務プログラム110によりファイルシステム120が呼び出されたものとして説明する。なお、以降のステップS301~S304は、ファイル操作(後述する送金命令ファイル又は更新命令ファイルの配置)が行われる度に繰り返し実行される。
【0076】
まず、ユーザは、所定のディレクトリ(以降では、「更新命令用ディレクトリ」と表す。)に送金命令ファイル又は更新命令ファイルを配置する。すると、ファイルシステム120の操作受付部121は、送金命令ファイル又は更新命令ファイルの配置を受け付ける(ステップS301)。更新命令用ディレクトリとしては、任意のディレクトリを設定することができる。ここで、更新命令用ディレクトリに配置する送金命令ファイル又は更新命令ファイルは、ユーザが事前に作成しておく。
【0077】
ここで、送金命令ファイルの一例を
図10に示す。
図10は、送金命令ファイルの一例を示す図である。
図10に示す送金命令ファイルには、送信元アドレスと、送信先アドレスと、手数料上限と、送金額と、データとが含まれる。ただし、送信元アドレスから送信先アドレスへ送金を行う場合にはデータは定義されなくても良い。データには、例えば、スマートコントラクトを実行させる場合に、当該スマートコントラクトのソースコードをコンパイルしたデータや、実行数関数のシグネチャとエンコードされたパラメータハッシュ等が定義される。
【0078】
また、更新命令ファイルの一例を
図11に示す。
図11は、更新命令ファイルの一例を示す図である。
図11に示す更新命令ファイルには、ABIと、コントラクトアドレスと、関数定義とが含まれる。また、関数定義には、関数名と、メソッド(call又はsend)と、引数とを定義することができる。
【0079】
次に、ファイルシステム120のAPI生成部123は、当該送金命令ファイル又は当該参照命令ファイルを解析して、この解析結果に応じたAPIを生成する(ステップS302)。ここで、API生成部123は、当該解析結果に応じて、当該送金命令ファイルに定義された送金命令を実行させるためのAPI又は当該更新命令ファイルに定義されたスマートコントラクトの関数を実行させるためのAPIを生成する。
【0080】
次に、ファイルシステム120のAPI発行部124は、上記のステップS302で生成されたAPIを発行する(ステップS303)。すなわち、API発行部124は、ブロックチェーン装置20に対して、当該APIを用いたリクエスト(要求)を送信する。これにより、当該リクエストに応じたAPI結果(すなわち、送金命令又は更新命令の実行結果)がブロックチェーン装置20から返信される。
【0081】
次に、ファイルシステム120の表示制御部125は、当該API結果を受信すると、当該API結果に応じた画面を表示する(ステップS304)。
【0082】
(実施例)
ここで、上記の
図9に示すブロックチェーン操作処理(更新系)の一実施例として、ファイル名が「abc」の送金命令ファイル又は更新命令ファイルを配置してブロックチェーンデータを更新する場合について、
図12を参照しながら説明する。
図12は、送金命令ファイル又は更新命令ファイルの配置の一例を示す図である。
【0083】
ユーザは、ファイル名「abc」の送金命令ファイル又は更新命令ファイルを更新命令用ディレクトリ(
図12に示す例では、ディレクトリ名「TX」のディレクトリ)に配置する。すると、操作受付部121は、送金命令ファイル又は更新命令ファイルの配置を受け付ける(ステップS301)。
【0084】
次に、API生成部123は、ファイル名「abc」の送金命令ファイル又は参照命令ファイルを解析して、この解析結果に応じたAPIを生成する(ステップS302)。すなわち、API生成部123は、ファイル名「abc」が送金命令ファイルである場合、当該送金命令ファイルに定義された送金命令を実行させるためのAPIを生成する。一方で、API生成部123は、ファイル名「abc」が更新命令ファイルである場合、当該更新命令ファイルに定義されたスマートコントラクトの関数を実行させるためのAPIを生成する。
【0085】
次に、API発行部124は、ブロックチェーン装置20に対して、特定したAPIを用いたリクエストを送信する(ステップS303)。これにより、送金命令又は更新命令が実行され、API結果として、送金命令の実行結果又は更新命令の実行結果がブロックチェーン装置20から返信される。
【0086】
そして、表示制御部125は、送金命令の実行結果又は更新命令の実行結果を受信すると、当該実行結果を表示する(ステップS304)。
【0087】
<まとめ>
以上のように、本実施形態に係るブロックチェーン操作システム1では、業務端末装置10のユーザがファイルシステム120に対してファイル操作を行うことで、ブロックチェーン装置20が保持するブロックチェーンデータに対して操作を行うことができる。このため、本実施形態に係るブロックチェーン操作システム1によれば、業務プログラム110を修正等することなく、ファイルシステム120に対するファイル操作だけでブロックチェーンデータを容易に操作することができるようになる。
【0088】
なお、本実施形態では、業務端末装置10がファイルシステム120を有している場合について説明したが、これに限られない。ファイルシステム120は、例えば、ブロックチェーン装置20が有していても良いし、業務端末装置10とブロックチェーン装置20との間に位置する装置(例えば、中継装置やクラウドサーバ等)が有していても良い。
【0089】
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【符号の説明】
【0090】
1 ブロックチェーン操作システム
10 業務端末装置
20 ブロックチェーン装置
110 業務プログラム
120 ファイルシステム
121 操作受付部
122 API特定部
123 API生成部
124 API発行部
125 表示制御部