以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された内容を不当に限定するものではない。また本実施形態で説明される構成の全てが必須構成要件であるとは限らない。
1.概要
図1は本実施形態の提供装置100の構成例である。提供装置100は、ブロックチェーンを用いたネットワークとの通信を行う通信部120と、通信部120を制御する処理部110を含む。そして処理部110は、管理対象である電子機器についてのサービス提供処理を行うためのサービス提供処理プログラムを、ブロックチェーンに登録するためのトランザクションを生成し、生成したトランザクションを、通信部120を介してネットワークに発行する。詳細については図2を用いて後述するが、電子機器300は直接又は処理装置200を介して、ブロックチェーンを用いたネットワークに接続される。また、サービス提供処理の詳細についても後述する。以下、ブロックチェーンを用いたネットワークを、ブロックチェーンネットワークNWと表記する。なお「ブロックチェーンに登録」とは、具体的にはブロックチェーンのブロックにデータが書き込まれることである。
ブロックチェーンネットワークNWにおいては、複数のブロックがチェーン状につながったブロックチェーンと呼ばれるデータ構造が用いられる。トランザクションとは、データをブロックチェーンに登録する処理を行う際に発行される命令である。ブロックチェーンネットワークNWの各ノードは、同じ内容のブロックチェーンを保持している。そのため、提供装置100が発行した処理プログラムを含むトランザクションがブロックチェーンに書き込まれた場合、当該処理プログラムはブロックチェーンネットワークNWに参加する全てのノードから参照可能となる。ここでの処理プログラムとは、狭義には発注処理プログラム等のサービス提供処理プログラムであるが、後述するようにサービス提供処理に関連する種々のプログラムを含んでもよい。これにより、サービス提供処理を実現するための各処理プログラムの提供が容易になる。
本実施形態における電子機器300は、例えばプリンターである。或いは電子機器300は、スキャナー、ファクシミリ装置又はコピー機であってもよい。電子機器300は、複数の機能を有する複合機(MFP:Multifunction Peripheral)であってもよく、印刷機能を有する複合機もプリンターの一例である。電子機器300は、プロジェクター、頭部装着型表示装置、ウェアラブル機器、脈拍計や活動量計等の生体情報測定機器、ロボット、カメラ等の映像機器、スマートフォン等の携帯情報端末、又は物理量計測機器等であってもよい。
なお、本実施形態の処理部110は、下記のハードウェアにより構成される。ハードウェアは、デジタル信号を処理する回路及びアナログ信号を処理する回路の少なくとも一方を含むことができる。例えば、ハードウェアは、回路基板に実装された1又は複数の回路装置や、1又は複数の回路素子で構成することができる。1又は複数の回路装置は例えばIC等である。1又は複数の回路素子は例えば抵抗、キャパシター等である。
また処理部110は、下記のプロセッサーにより実現されてもよい。本実施形態の提供装置100は、情報を記憶するメモリーと、メモリーに記憶された情報に基づいて動作するプロセッサーと、を含む。情報は、例えばプログラムと各種のデータ等である。プロセッサーは、ハードウェアを含む。プロセッサーは、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)、DSP(Digital Signal Processor)等、各種のプロセッサーを用いることが可能である。メモリーは、SRAM(Static Random Access Memory)、DRAM(Dynamic Random Access Memory)などの半導体メモリーであってもよいし、レジスターであってもよいし、ハードディスク装置等の磁気記憶装置であってもよいし、光学ディスク装置等の光学式記憶装置であってもよい。例えば、メモリーはコンピューターにより読み取り可能な命令を格納しており、当該命令がプロセッサーにより実行されることで、提供装置100の各部の機能が処理として実現されることになる。ここでの命令は、プログラムを構成する命令セットの命令でもよいし、プロセッサーのハードウェア回路に対して動作を指示する命令であってもよい。
図2は、本実施形態の提供装置100と、処理装置200を含む処理システム10の構成例である。処理装置200は、電子機器300に対応して設けられる装置である。提供装置100は、スマートコントラクトによってブロックチェーンに処理プログラムを書き込む処理を行う装置であり、図2においては、提供装置100が2つである例を示している。例えば提供装置100の一方は後述するプラットフォーム管理者が使用する装置であり、他方はサービス提供者が使用する装置である。ただし、提供装置100の数はこれに限定されない。また図2は、処理装置200が2つであり、各処理装置200に2つの電子機器300が接続される例を示しているが、処理装置200の数及び電子機器300の数はこれに限定されない。処理装置200は、具体的には後述するサービス利用者が使用する装置である。また、図2では処理装置200と電子機器300が異なる機器である例を示したが、電子機器300が処理装置200を含んでもよい。即ち、電子機器300が直接ブロックチェーンネットワークNWに参加することは妨げられない。
提供装置100及び処理装置200は、ブロックチェーンのクライアントアプリケーションがインストールされる。クライアントアプリケーションは、ブロックチェーンネットワークNWに参加するためのソフトウェアである。クライアントアプリケーションは、例えばトランザクションの生成、発行、コンセンサスアルゴリズムの処理、仮想通貨の管理等、ブロックチェーンネットワークNWで行われる各種処理を実行するためのソフトウェアである。
また処理装置200には、電子機器300を管理するための管理アプリケーションがインストールされる。なお、クライアントアプリケーションと管理アプリケーションは、連携可能な異なるアプリケーションであってもよいし、ブロックチェーンのクライアント機能及び電子機器300の管理機能の両方を含む1つのアプリケーションとして実現されてもよい。
管理アプリケーションは、電子機器300に対する処理コマンドの実行処理を行うことによって電子機器300の制御を行う。電子機器300の制御を行う処理コマンドは、初期化コマンド、再起動コマンド、設定変更コマンド等、種々のコマンドが考えられる。また、電子機器300の情報を取得する処理プログラムはブロックチェーンに書き込まれ、クライアントアプリケーションにより実行されることが想定される。電子機器300の情報を取得する処理プログラムとは、例えば後述する残量収集プログラム、警告状態確認プログラム等である。ただし、管理アプリケーションが処理プログラムに相当するプログラムを保持していてもよい。この場合、管理アプリケーションが当該プログラムを定期的に実行することによって、電子機器300の情報取得が行われる。
なお本実施形態の手法は、図1に示した提供装置100に限定されず、図2に示した処理システム10に適用されてもよい。図2に示したように、本実施形態に係る処理システム10は、提供装置100と、電子機器300に対応して設けられる処理装置200と、を含む。処理装置200は、例えば後述する残量収集プログラム、警告状態確認プログラム等、電子機器300の使用状況データや状態データの取得を行う処理プログラムを実行する。
2.ブロックチェーンとスマートコントラクト
次にブロックチェーン技術について説明する。なお以下で説明する内容はブロックチェーン技術を構成する要素の一部であり、異なる技術要素が追加されてもよい。また、以下で説明する技術要素の一部が省略されてもよい。また、各技術要素を発展させた方式も本実施形態におけるブロックチェーン技術に含まれる。
ブロックチェーンは、オープンなネットワークにおいて、参加者による分散型の合意形成を行う手法である。ブロックチェーンネットワークNWは、P2Pネットワークである。そのため、クライアント/サーバー型のシステムとは異なり、特定の機器がデータを一元管理することはない。ブロックチェーンネットワークNWでは、ブロックが連結されたブロックチェーンと呼ばれるデータ構造によりデータが管理され、各ノードが共通のブロックチェーンを保持している。
図3は、ブロックチェーンの構造を説明する図である。1つのブロックは、複数のトランザクションのデータと、親ブロックのハッシュ値のデータを含む。親ブロックのハッシュ値とは、具体的には、1つ前のブロックのブロックヘッダーのハッシュ値である。当該ハッシュ値により、ブロック間のつながりが実現される。トランザクションとは、ブロックチェーンへのデータの登録時にノードによって発行される命令である。例えば、仮想通貨を用いた取引を行う場合、送金元のユーザーアドレス、送金先のユーザーアドレス、送金額等の情報を含むトランザクションが生成される。
生成されたトランザクションは、送信者の署名を付してブロードキャストされ、ブロックチェーンネットワークNW上の各ノードに伝搬する。なお、トランザクションの送信は、P2Pネットワークで用いられる種々のデータ伝搬アルゴリズムにより実現可能である。例えば、単純に隣接ノードにトランザクションを送信し、当該隣接ノードから他のノードへの伝搬を繰り返す手法でもよい。或いは、スーパーノードと呼ばれる生存している蓋然性の高い特定のノードを規定し、当該スーパーノードに対してトランザクションが送信されてもよい。スーパーノードを送信先とすることによって、トランザクションがブロックチェーンネットワークNWの各ノードに伝搬する蓋然性を高めることが可能になる。
ブロックチェーンへのブロックの追加は、マイナーと呼ばれるノードにより実行される。マイナーは、トランザクションが所定量蓄積されると、当該トランザクションを含むブロックの生成を試みる。ブロックは、コンセンサスアルゴリズムに従って合意形成が行われたと判定されたことを条件に、ブロックチェーンに追加される。
コンセンサスアルゴリズムとしてPoW(Proof of Work)が用いられる場合、ブロックヘッダーのハッシュ値が、特定の条件を満たす必要がある。特定の条件とは、例えばハッシュ値が所定閾値よりも小さくなるという条件である。ブロックヘッダーは、Nonceと呼ばれるフィールドを含み、当該Nonceはマイナーにより設定される。換言すれば、マイナーはブロックヘッダーのハッシュ値が特定の条件を満たすようなNonceを探索する処理を実行する。ハッシュ値を求めるためのハッシュ関数は、入力値から出力値を予測することが困難であるため、マイナーはNonceを変更しながら総当たりで条件を満たすNonceを探す必要がある。即ち、PoWとは、仕事量を根拠として合意を形成する手法である。
マイナーにより新たなブロックが生成されると、当該ブロックは各ノードでの検証を経て、ブロックチェーンネットワークNW内で伝搬する。各ノードでの検証は、ハッシュ値を求め、当該ハッシュ値が特定の条件を満たすかを判定する処理であり、短時間で実行可能である。
なおコンセンサスアルゴリズムはPoWに限定されない。例えば、仮想通貨の保有量に応じて発言権が付与されるPoS(Proof of Stake)、或いは参加者の重要度に応じて発言権が付与されるPoI(Proof of Importance)等のコンセンサスアルゴリズムが用いられてもよい。また、固有の署名が付与されている場合は無条件に合意したとみなしてもよい。また、限られたユーザー、端末しかアクセスできないプライベートネットワークを用いる場合、署名に関する判定も除外して、無条件に合意形成したとみなしてもよい。本実施形態におけるコンセンサスアルゴリズムに基づく合意形成とは、無条件に合意形成したとみなす場合を含む。
図4は、ブロックチェーンにデータを書き込む処理を説明するフローチャートである。この処理が開始されると、まずブロックチェーンへのデータ書き込みを希望するノードは、当該データを含むトランザクションを生成し、当該トランザクションをブロックチェーンネットワークNWにブロードキャストする(S101)。各ノードへの通知は、ブロードキャストに限るものではなく、P2Pネットワークで用いられる他の手段を用いてもよい点は上述した通りである。
次にデータを受信した各ノードは、データをブロックチェーンに書き込んで良いか判断するため、コンセンサスアルゴリズムに基づく合意形成を行う(S102)。コンセンサスアルゴリズムは、上述した通りPoW,PoS,PoI等、種々のアルゴリズムを採用可能である。コンセンサスアルゴリズムで合意が得られるまでの間(S103でNo)、S102の処理が繰り返される。
コンセンサスアルゴリズムで合意が得られた場合(S103でYes)、合意を得たノードは、各ノードに合意形成をブロードキャストし(S104)、各ノードは自分が保持するブロックチェーンにデータを書き込む(S105)。以上の処理により、S101でブロードキャストされたデータがブロックチェーンに追加され、各ノードにより利用可能になる。
またブロックチェーンネットワークNWにおいては、ノードで実行されるプログラムを、ブロックチェーンに追加することが可能である。このプログラムは、ステート及び関数を含み、ノード内の実行環境により実行される。ステートは変数の集合と言い換えてもよく、関数はサブルーチン、メソッド等と言い換えてもよい。ノード内の実行環境とは、例えば仮想マシンである。このような、ブロックチェーンにプログラムを追加してノードにおいてプログラムを実行する仕組みは、スマートコントラクトと呼ばれる。
スマートコントラクトによるブロックチェーンへのプログラムの書き込みについても、図4を用いて上述した流れに従って実行される。即ち、スマートコントラクトの書き込みを希望するノードは、書き込み対象であるプログラムを含むトランザクションの生成、ブロードキャストを行う。当該トランザクションがコンセンサスアルゴリズムにより合意された場合に、スマートコントラクトによりプログラムがブロックチェーンに書き込まれる。
本実施形態に係る提供装置100の処理部110は、サービス提供処理プログラムを、スマートコントラクトを用いてブロックチェーンに登録するためのトランザクションを生成する。このように、サービス提供処理プログラムを、スマートコントラクトを用いてブロックチェーンに書き込むことによって、当該サービス提供処理プログラムをブロックチェーンネットワークNWの任意のノードで実行することが可能になる。
特に、ブロックチェーン技術においては、所与のスマートコントラクトのプログラムから他のスマートコントラクトのプログラムを呼び出すことが可能である。即ち、ブロックチェーンに書き込まれたサービス提供処理プログラム等をスマートコントラクトによって実行することによって、処理プログラム間の連携を容易に実現することが可能になる。具体的な連携については後述する。
3.プラットフォーム管理者、サービス提供者、サービス利用者
本実施形態の手法においては、ブロックチェーンネットワークNWを利用したサービス提供プラットフォームを用いて、種々のサービスが提供される。サービス提供プラットフォームの参加者としては、プラットフォーム管理者、サービス提供者、サービス利用者が想定される。
プラットフォーム管理者とは、サービス提供プラットフォームの提供及び管理を行う事業者である。サービス提供者とは、サービス提供プラットフォームを利用してサービスを提供する事業者である。サービス利用者とは、サービス提供プラットフォームにおいて提供されているサービスを利用するユーザーであり、個人であってもよいし、企業等の団体であってもよい。なおここでのサービスは電子機器300に関するサービスであるため、サービス利用者とは、電子機器300を使用するユーザーである。
プラットフォーム管理者は、サービス提供者情報と、当該サービス提供者が提供するサービス内容情報を対応づけて記憶することによって、サービス提供者の管理を行う。サービス提供者情報とは、例えばサービス提供者の名称、所在地、責任者、登録年月日等の情報である。サービス提供者情報には、後述するデジタルIDが含まれてもよい。サービス内容情報は、例えば後述する消耗品配送、修理請負等、サービスの内容を特定可能な情報である。以下、サービス提供者情報と、サービス内容情報を合わせてサービス登録必須情報と表記する。
プラットフォーム管理者は、サービス提供者と契約を締結し、契約内容に基づいて、サービス登録必須情報の登録処理を行う。なお、プラットフォーム管理者は、サービス提供者を兼ねてもよい。この場合、プラットフォーム管理者が提供するサービスについては、登録処理を省略してもよい。或いは、契約が締結されたものと見なして、サービス登録必須情報の登録処理が実行されてもよい。例えば、プラットフォーム管理者は、サービス利用者に電子機器300を貸与し、当該電子機器300の使用状況に応じた課金処理を行うサービスを提供してもよい。ここでの電子機器300の使用状況とは、例えばインクやトナーの使用量、印刷枚数、スキャン枚数、機器の使用時間等である。
図5は、具体的な登録処理を説明するフローチャートである。プラットフォーム管理者が使用する管理システムは、まずサービス登録必須情報を取得する(S201)。なお、サービスの提供には、種々の処理プログラムを適切なタイミングにおいて実行する必要がある。よってS201において、管理システムは、使用する処理プログラムを特定するためのスマートコントラクト情報、及び当該処理プログラムの実行タイミング情報を取得してもよい。
次に管理システムは、サービス登録必須情報に第三者機関が発行したデジタルIDが含まれているか否かを判定する(S202)。デジタルIDとはコンピューター上で管理される識別情報である。第三者機関とは、プラットフォーム管理者及びサービス提供者のいずれとも異なる機関であり、デジタルIDの発行及び認証を行う機関である。第三者機関が発行したデジタルIDは、ブロックチェーンを利用したデジタルIDであってもよいし、ブロックチェーンを利用しないデジタルIDであってもよい。また、ここでのデジタルIDは、証明書発行機関により発行された証明書であってもよい。
サービス登録必須情報にデジタルIDが含まれる場合(S202でYes)、管理システムは第三者機関にIDの問い合わせを行い(S203)、当該デジタルIDが正当なIDであるか否かを判定する(S204)。デジタルIDが正当なIDである場合(S204でYes)、管理システムは、S201において取得したサービス登録必須情報を含む情報をブロックチェーンに書き込む処理を行う(S205)。S205における処理は、具体的には、プラットフォーム管理者の提供装置100に含まれるクライアントアプリケーションが、後述する契約管理コントラクトを呼び出すことによって実行される。契約管理コントラクトには、サービス登録必須情報をブロックチェーンに書き込むための処理が記述されている。契約管理コントラクトは、ブロックチェーンに書き込まれる種々の情報のうち、自身が書き込み処理を行った情報を参照することによって、適切にサービス提供者との契約を管理することが可能になる。一方、デジタルIDが正当なIDでない場合(S204でNo)、管理システムは登録を却下する(S206)。具体的には、管理システムはサービス登録必須情報等の書き込みを行わずに処理を終了する。
また、サービス登録必須情報にデジタルIDが含まれない場合(S202でNo)、管理システムは処理対象となっているサービス提供者にユニークなIDを発行する(S207)。そして管理システムは、S201において取得したサービス登録必須情報を含む情報をブロックチェーンに書き込む処理を行う(S205)。
図5に示した処理を行うことによって、第三者機関によるデジタルIDが正当でないサービス提供者を排除すること、ブロックチェーンを用いてサービス提供者との契約を管理すること、登録が完了したサービス提供者とデジタルIDとを対応づけることが可能になる。なおデジタルIDは、サービス利用時に、利用対象であるサービスが正規サービスとして登録済みであるか否かを確認するために用いられてもよい。当該確認は、例えば契約管理コントラクトによって実行される。詳細については後述する。また、正規サービスかを確認しない実施形態の場合、デジタルIDに関する処理を省略してもよい。例えば、図5において、S202~S204、S206、S207の処理が省略される。
なおS205の処理において、契約管理コントラクトを呼び出すことによって、サービス登録必須情報のブロックチェーンへの書き込みを実行することを考慮すれば、ここでの管理システムは、プラットフォーム管理者が使用する提供装置100によって実現されることが望ましい。ただし、管理システムは、提供装置100とは異なる装置によって実現されてもよいし、提供装置100と他の装置が連携することによって実現されてもよい。
図5に示した処理は、例えばサービス提供プラットフォーム外において契約が締結される場合に適している。その場合、プラットフォーム管理者は、契約を締結するまでの段階、或いは契約の締結後であって図5に示す登録処理を開始するまでの段階において、サービス提供者の信頼性について判定する機会がある。登録処理を実行するか否かをプラットフォーム管理者側でコントロールできるため、第三者機関が発行するデジタルIDを有さない場合にサービス提供者の登録を行っても問題になりにくい。具体的には、S202でNoと判定された場合であっても、S205の処理を実行可能である。
ただし、スマートコントラクトを用いて、サービス提供者の登録を自動化することも妨げられない。例えば契約管理コントラクトは、サービス登録必須情報の取得、及び登録処理を実行する関数を含み、当該関数をAPI(Application Programming Interface)として提供する。サービス提供者は、当該APIを用いてサービス登録必須情報を入力することによって、自身の登録を試行する。
図6は、この場合の登録処理を説明するフローチャートであり、契約管理コントラクトによって実行される処理を説明するフローチャートである。この処理が開始されると、契約管理コントラクトを実行した提供装置100は、サービス提供者からの登録要求を受け付ける(S301)。具体的には、サービス登録必須情報、スマートコントラクト情報、実行タイミング情報等の入力を受け付ける。
この場合、サービス提供者側から登録要求が実行されるため、登録処理前にプラットフォーム管理者側でサービス提供者を選別できない。換言すれば、信頼できないサービス提供者がサービス提供プラットフォームに入り込むおそれがある。よってここでは、サービス登録必須情報が第三者機関によるデジタルIDを含むことを、登録における必須条件とする。即ち契約管理コントラクトは、S301において第三者機関によって発行されたデジタルIDが入力されることを、S302以降の処理に移行する条件とする。
そして提供装置100は、第三者機関にIDの問い合わせを行い(S302)、当該デジタルIDが正当なIDであるか否かを判定する(S303)。デジタルIDが正当なIDである場合(S303でYes)、提供装置100は、サービス登録必須情報を含む情報をブロックチェーンに書き込む処理を行う(S304)。デジタルIDが正当なIDでない場合(S303でNo)、提供装置100は登録を却下する(S305)。
図6に示した処理を行うことによって、プラットフォーム管理者とサービス提供者の間の契約締結、及びサービス提供者の登録処理を自動化できる。そのため、プラットフォーム管理者とサービス提供者双方の負担軽減が可能である。その際、第三者機関が発行するデジタルIDを用いることによって、不適切なサービス提供者が登録されることを抑制可能である。
このように、プラットフォーム管理者が使用する提供装置100の処理部110は、電子機器300に関するサービスを提供するサービス提供者を管理するための管理プログラムを、ブロックチェーンに登録するための第1トランザクションを生成し、生成した第1トランザクションを、通信部120を介してネットワークに発行する。また管理プログラムは、サービス提供者を識別するサービス提供者情報と、サービス提供者によるサービスを提供するためのサービス提供処理プログラムとを対応付けた情報を、ブロックチェーンに登録するための第2トランザクションを生成し、生成した第2トランザクションを、通信部120を介してネットワークに発行する。
このようにすれば、プラットフォーム管理者がブロックチェーンネットワークNWを用いて管理プログラムを提供すること、及び当該管理プログラムが必要な情報をブロックチェーンに書き込むことが可能になる。即ち、ブロックチェーンを用いたサービス提供プラットフォームに、種々のサービス提供者を参加させることが可能になる。また、サービス提供者をブロックチェーン上で適切に管理することも可能になる。
ここで、サービス提供者情報は、サービス提供者を特定可能な情報であればよく、上述した情報の全てを含む必要はない。また、サービス提供者情報は、デジタルIDであってもよい。デジタルIDは、第三者機関が発行するIDであってもよいし、管理システムが発行するIDであってもよい。また、管理プログラムとは、例えば上述した契約管理コントラクトである。ただし、詳細については後述するが、契約管理コントラクトはサービス提供者とサービス利用者との間の契約を管理するプログラムである。当該契約管理コントラクトがサービス提供者の管理を行ってもよいし、サービス提供者を管理する管理プログラムが、契約管理コントラクトとは別のプログラムとして実現されてもよい。なお、管理プログラムは、ブロックチェーンへの書き込み処理(S205又はS304)を行えばよく、デジタルIDの問い合わせ等を行ってもよいし、行わなくてもよい。
以上で説明した処理によって、サービス提供プラットフォームにおけるサービス提供者の登録処理が実行される。サービス利用者は、サービス提供プラットフォームを用いて登録済みのサービスを検索する。具体的には、プラットフォーム管理者は、サービス登録必須情報を用いて、サービス利用者が必要なサービスを見つけるための手段を提供する。
例えばプラットフォーム管理者は、サービスを見つけるための手段として検索システムを提供する。サービス利用者は、検索システムにおいて、サービス提供者の名称、サービス内容、サービス提供地域等、自身が利用したいサービスに関連する任意の情報を入力する。ここで入力される情報は、例えばテキスト情報である。検索システムは、入力された情報に関連するサービスを提示する。
或いは、プラットフォーム管理者は、サービスを見つけるための手段としてフィルタリングシステムを提供する。サービス利用者は、フィルタリングシステムにおいて、フィルタリング条件を入力する。フィルタリングシステムは、登録済みのサービスに対して入力された条件に従ったフィルタリング処理を行い、処理結果をサービス利用者に提供する。フィルタリング条件は、サービスのジャンル、サービス毎の評判情報、評価順、サービス毎の受注回数等、種々の条件を設定可能である。また、ブロックチェーンへの貢献度が高いサービス提供者は信頼できると推定することも可能である。よってフィルタリングシステムは、ブロックチェーンにおけるマイニング量に基づくフィルタリングを行ってもよい。
或いは、プラットフォーム管理者は、サービスを見つけるための手段としてディレクトリーサービスを提供してもよい。より具体的には、プラットフォーム管理者は、登録済みのサービスを選択するためのポータルを提供してもよい。ディレクトリーサービスは、登録済みのサービスをツリー構造等の特定のデータ構造によって管理する。サービス利用者は、ポータルを起点とすることによって、目的のサービスに到達可能である。ディレクトリーサービスについては広く知られているため、詳細な説明は省略する。
サービス利用者は、上記種々の手段を用いて利用を希望するサービスを選択する。そして、サービス利用者は当該サービスを利用するために必要な情報を入力することによって、サービス提供者との間で当該サービスに関する契約を締結する。契約内容はブロックチェーンに書き込まれる。当該契約内容は、契約管理コントラクトによって管理される。具体的な契約内容は、サービスに応じて異なるため、詳細については後述する。なお、以下では消耗品配送サービス及び修理請負サービスについて詳細に説明するが、サービス提供者の登録、及びサービス利用者によるサービスの探索については、上記の流れに従って完了しているものとして説明を行う。
4.サービスの具体例
本実施形態にかかる提供装置100の処理部110は、管理対象である電子機器300についてのサービス提供処理を行うためのサービス提供処理プログラムを、ブロックチェーンに登録するためのトランザクションを生成し、生成したトランザクションを、通信部120を介してブロックチェーンネットワークNWに発行する。サービス提供処理プログラムは、ブロックチェーンに記憶されたサービス提供者情報により表されるサービス提供者に、サービスを依頼する処理を行う。このようにすれば、適切なサービス提供者に対してサービスを依頼することが可能になる。サービス提供者情報は、例えば上述したように、契約管理コントラクトによってブロックチェーンに書き込む処理が行われる。
以下、サービスの具体例として、消耗品配送サービスと修理請負サービスについて説明する。消耗品配送サービスにおけるサービス提供処理プログラムとは、消耗品の残量収集プログラム、残量計算プログラム、警告状態確認プログラム、発注プログラムに対応する。修理請負サービスにおけるサービス提供処理プログラムとは、状態確認プログラム、修理手配プログラムに対応する。
またサービス提供処理プログラムは、サービス提供により発生する費用を含むサービス提供データを、ブロックチェーンに書き込む処理を行う。また提供装置100の処理部110は、ブロックチェーンに書き込まれたサービス提供データに基づいて、課金額を決定する課金処理プログラムをブロックチェーンに登録するためのトランザクションを生成する。このようにすれば、サービス提供に伴う課金処理が可能になる。消耗品配送サービスにおいて発生する費用とは、消耗品自体の費用、及び送料等である。修理請負サービスにおいて発生する費用とは、出張料、技術料、部品代等である。
4.1 消耗品配送サービス
消耗品配送サービスについて説明する。まず、消耗品配送サービスで用いられるスマートコントラクトの具体例を説明し、その後、フローチャートを用いて処理の流れを説明する。
4.1.1 スマートコントラクト
<契約管理コントラクト>
提供装置100の処理部110は、サービス提供処理の内容を決定するための契約内容情報、及び、サービス提供者情報を管理する契約管理プログラムを、ブロックチェーンに登録するためのトランザクションを生成する。スマートコントラクトを用いてブロックチェーンに書き込まれる契約管理プログラムを、契約管理コントラクトと表記する。
このようにすれば、ブロックチェーン上で動作するプログラムである契約管理コントラクトを用いて、サービス提供者及び当該サービス提供者によって提供されるサービスの内容を管理することが可能になる。換言すれば、契約管理コントラクトは、プラットフォーム管理者とサービス提供者の間の契約、及び、サービス提供者とサービス利用者の間の契約を管理する。
プラットフォーム管理者とサービス提供者の間の契約は、上述したようにサービス登録必須情報の登録処理に基づいて管理される。例えば、契約管理コントラクトは、サービス登録必須情報のブロックチェーンへの書き込み機能を有し、自身が書き込みを行ったサービス登録必須情報に基づくサービスを登録済みの正規サービスと判定する。換言すれば、契約管理コントラクトを介さずにサービス登録必須情報がブロックチェーンに書き込まれたとしても、当該サービス登録必須情報に対応するサービスは正規サービスと判定されない。このようにすれば、不適切なサービス提供者によるサービス提供を抑制できる。
また契約管理コントラクトは、消耗品の発注処理の内容を決定するための契約アカウント情報を管理する。契約アカウント情報は、サービス利用者を特定する情報と、契約内容を表す情報を含む。このようにすれば、サービス提供者とサービス利用者との間の契約内容に基づく発注処理を、ブロックチェーンを用いて共有されるプログラムに基づいて実行することが可能になる。
契約アカウント情報は、契約ID、契約者情報、契約内容情報、サービス提供対象となる電子機器300を特定する情報等を含む。
契約IDとは、当該契約を一意に特定する情報である。契約者情報とは、契約者であるサービス利用者の名称やIDの情報である。なお、所与の契約者が複数のサービス利用契約を結ぶことは妨げられない。電子機器300を特定する情報とは、消耗品配送の対象となる電子機器300を特定する情報であり、電子機器300のシリアル番号やMACアドレス等の種々の情報を利用可能である。
消耗品配送サービスにおける契約内容情報とは、契約タイプ、締め日、配送先、配送方法、請求方法等を含む情報である。また、消耗品の発注先が契約によって決定される場合、契約内容情報は発注先を表す情報を含んでもよい。
契約タイプは、例えば印刷媒体の自動配送、インクの自動配送、トナーの自動配送等、どのような配送サービスを行うかを表す情報である。なお契約タイプは、A4用紙、ロール紙、布等の印刷媒体のサイズ、種類を特定する情報を含んでもよい。締め日は、自動的に配送された消耗品についての課金処理を実行するタイミングを表す情報である。配送先は、消耗品の配送先を表す住所等の情報である。配送方法は、配送業者や配送時間等を特定する情報である。請求方法は、消耗品の代金をサービス利用者に請求する際の、請求書の宛先、請求書の送付方法を特定する情報である。
なお消耗品の値段は固定であってもよいし、サービス利用者ごとに可変であってもよい。消耗品の値段が可変である場合、契約内容情報は単価、割引情報を含む。単価とは、単位数量当たりの課金額の情報であり、例えば所与の用紙サイズ1枚あたり何円という情報、或いはインク1ミリリットルあたり何円という情報である。割引情報とは、例えば1回の発注量が所定枚数以上、或いは所定インク量以上の場合に課金額を何%減額するという割引率の情報である。
また、契約管理コントラクトは、契約アカウント情報とサービス登録必須情報に加えて、サービス提供時に必要な処理プログラムを特定するスマートコントラクト情報を対応づけて管理する。消耗品配送サービスにおいては、後述する残量収集コントラクト、警告状態確認コントラクト、発注コントラクトを実行することによって消耗品の配送手配が行われる。契約管理コントラクトは、これらのうち、少なくとも自身が呼び出す必要がある残量収集コントラクト、警告状態確認コントラクトを表す情報を、スマートコントラクト情報として管理する。また、消耗品配送サービスにおいては、後述する課金コントラクト、請求コントラクトを実行することによって配送した消耗品に関する課金、請求処理が行われる。契約管理コントラクトは、これらのうち、少なくとも自身が呼び出す必要がある課金コントラクトを表す情報を、スマートコントラクト情報として管理する。
また、契約管理コントラクトは、上記スマートコントラクト情報によって表される処理プログラムを実行するタイミングを表す実行タイミング情報を管理する。消耗品配送サービスにおいては、契約管理コントラクトは、残量収集コントラクト、警告状態確認コントラクトの実行タイミングを表す情報を管理する。なお、処理プログラムによっては実行タイミングが契約によって決定されるものもある。例えば課金コントラクトの実行タイミングはサービス利用者に応じて異なり、契約内容情報の「締め日」によって特定される。
以上で説明したように、契約管理コントラクトは、契約アカウント情報、サービス登録必須情報、スマートコントラクト情報、実行タイミング情報を対応づけて管理する。契約アカウント情報とサービス登録必須情報と対応づけて管理することによって、サービス提供者とサービス利用者の間の契約を適切に管理可能である。また、スマートコントラクト情報と実行タイミング情報も対応づけられるため、サービスを実現するためには、どの処理プログラムをどのタイミングにおいて実行すればよいかを特定することも可能である。
契約管理コントラクトは、定期的に実行され、あらかじめ指定した条件に応じて、スマートコントラクトによりブロックチェーンに書き込まれた他のプログラムを実行する。契約管理コントラクト自体が定期実行機能を持ってもよい。或いは、契約管理コントラクトは、定期的に外部から起動され、必要なタスクがある場合にブロックチェーンに書き込まれた他のプログラムを起動してもよい。
契約管理コントラクトは、残量計算コントラクト、警告状態確認コントラクトを定期的に起動することによって、消耗品の発注処理を行う。また契約管理コントラクトは、課金コントラクトを締め日に対応するタイミングにおいて起動することによって、消耗品の発注に伴う課金処理を行う。
<残量収集コントラクト>
提供装置100の処理部110は、電子機器300の消耗品の使用状況データを収集する残量収集プログラムを、ブロックチェーンに登録するためのトランザクションを生成する。残量収集プログラムは、契約管理プログラムによって所与のスケジュールに従って起動されるプログラムである。スマートコントラクトを用いてブロックチェーンに書き込まれる残量収集プログラムを、残量収集コントラクトと表記する。このようにすれば、消耗品の使用状況データの収集を、ブロックチェーンを用いて共有されるプログラムに基づいて実行することが可能になる。
ここでの使用状況データとは、消耗品の残量特定に用いられるデータであり、例えばインク残量やトナー残量である。また、使用状況データは、印刷媒体の消費量を含む。印刷媒体の消費量は、印刷枚数であってもよいし、ロール紙における印刷長であってもよい。印刷媒体の消費量に基づいて、当該印刷媒体の残量の演算が可能である。
使用状況データの取得は、例えば、SNMP(Simple Network Management Protocol)に則って実行される。この場合、残量収集コントラクトを実行する処理装置200が通信のマネージャー、各電子機器300が通信のエージェントとなる。処理装置200は、収集プログラムを実行することによりSNMPに則った通信を行い、電子機器300からMIB(Management Information Base)情報を受信する。
また残量収集コントラクトは、取得した使用状況データをブロックチェーンに登録する処理を行う。具体的には、使用状況データを含むトランザクションを生成し、当該トランザクションをブロックチェーンに登録するための発行処理を行う。コンセンサスアルゴリズムに基づいて合意形成されると、当該トランザクションを含むブロックがブロックチェーンに追加され、使用状況データが各ノードから参照可能になる。
契約管理コントラクトは、契約ID及び収集対象となる電子機器300を特定する情報を指定して残量収集コントラクトを起動する。残量収集コントラクトは、指定された電子機器300の使用状況データを取得する。上述したように、契約管理コントラクトは、他のコントラクトの実行タイミングを規定する実行タイミング情報を管理する。契約管理コントラクトが実行タイミング情報に従って残量収集コントラクトを起動することによって、サービス提供者の決定した適切なタイミングで使用状況データの収集が可能になる。具体的な起動タイミングは種々の変形実施が可能であるが、収集コントラクトは、30分に1回、1時間に1回等のある程度高い頻度で起動される。このようにすれば、消耗品切れを出来る限り遅延なく検出することが可能になる。
また使用状況データの収集タイミングは、サービス提供者とサービス利用者の間の契約によって決定されてもよい。その場合、契約内容情報は残量収集ルールを含む。契約管理コントラクトが残量収集ルールに従って残量収集コントラクトを起動することによって、契約内容に即した適切なタイミングにおいて使用状況データの収集が可能になる。
<残量計算コントラクト>
提供装置100の処理部110は、消耗品の使用状況データに基づいて残量計算を行う残量計算プログラムを、ブロックチェーンに登録するためのトランザクションを生成する。残量計算プログラムは、残量収集プログラムによって起動されるプログラムである。なお、消耗品切れを出来る限り遅延なく検出することを考慮すれば、残量計算プログラムは、残量収集の終了時に、毎回起動されることが望ましい。スマートコントラクトを用いてブロックチェーンに書き込まれる残量計算プログラムを、残量計算コントラクトと表記する。このようにすれば、残量収集コントラクトによって収集された使用状況データに基づく計算処理を、ブロックチェーンを用いて共有されるプログラムに基づいて実行することが可能になる。
残量計算コントラクトは、残量収集コントラクトから、契約ID、電子機器300を特定する情報を受け取り、ブロックチェーンに保存されている使用状況データに基づいて、各契約の消耗品の残量を計算する。残量計算コントラクトは、各電子機器300から収集したインク残量の値をインク残量とする。トナー残量についても同様である。また残量計算コントラクトは、用紙サイズごとに、前回残量から今回収集した印刷量の増加分を減じることによって印刷媒体の残量を算出する。
残量計算コントラクトは、求められたインク残量、トナー残量、印刷媒体残量等に基づいて、残量不足となっているか否かを判定する。なお、残量計算コントラクトは、契約において消耗品配送サービスの対象となっている消耗品を対象として処理を行い、他の種類の消耗品については処理を省略可能である。例えば残量計算コントラクトは、インク、トナー、印刷媒体について、それぞれ残量不足と判定する閾値を事前に設定しておき、求められた残量が当該閾値を下回った場合に、残量不足であると判定する。
残量計算コントラクトは、残量不足であると判定された場合、契約ID、残量不足と判定された消耗品種別をパラメーターとして、発注コントラクトを起動する。
なお、上述したように電子機器300から収集可能であるのは、印刷媒体の消費量である。印刷媒体の残量を正しく計算するためには、初期値を正しく記録していること、配送分は加算すること、本サービス提供プラットフォーム以外では印刷媒体を購入しないこと、等が必要となる。或いは、本サービス提供プラットフォーム以外で印刷媒体を購入した場合、購入量をユーザーが入力可能にしてもよい。入力は、例えば電子機器300又は処理装置200において行われ、入力された情報は契約ID、電子機器300を特定する情報、消耗品種別等と対応づけてブロックチェーンに書き込まれる。
<警告状態確認コントラクト>
提供装置100の処理部110は、消耗品の不足に基づく警告状態となっているか否かを確認する警告状態確認プログラムを、ブロックチェーンに登録するためのトランザクションを生成する。警告状態確認プログラムは、契約管理プログラムによって所与のスケジュールに従って起動される。スマートコントラクトを用いてブロックチェーンに書き込まれる警告状態確認プログラムを、警告状態確認コントラクトと表記する。このようにすれば、消耗品の不足に基づく警告状態の確認処理を、ブロックチェーンを用いて共有されるプログラムに基づいて実行することが可能になる。
警告状態確認コントラクトは、電子機器300の状態データを取得する。状態データは、少なくとも消耗品不足に起因するエラー状態であるか否かを識別可能な情報である。また、ここでの状態データが、他の状態を識別可能な情報であってもよい。他の状態とは、正常動作状態、アイドル状態、消耗品不足以外のエラー状態を含み、消耗品不足以外のエラー状態とは、例えば紙詰まりや部品故障等が発生した状態である。状態データの取得は、例えば、使用状況データの収集と同様に、SNMPに則って実行される。
警告状態確認コントラクトは、電子機器300が消耗品不足の警告状態であると判定された場合、契約ID、不足消耗品種別をパラメーターとして、発注コントラクトを起動する。
なお、ここでの消耗品不足に起因する警告状態は、プリンターのインク切れが相当する。印刷用紙等の印刷媒体切れに関しても検出可能だが、在庫を含めた用紙切れではない可能性もあるため、消耗品を配送すべきか判断できない。また、印刷媒体の不足については残量計算コントラクトにおいて検出可能である。よって警告状態確認コントラクトは、用紙切れ警告は対象外とする。
契約管理コントラクトは、契約ID及び収集対象となる電子機器300を特定する情報を指定して警告状態確認コントラクトを起動する。警告状態確認コントラクトは、指定された電子機器300の状態データを取得する。契約管理コントラクトが実行タイミング情報に従って残量収集コントラクトを起動することによって、サービス提供者の決定した適切なタイミングで使用状況データの収集が可能になる。具体的な起動タイミングは種々の変形実施が可能であるが、警告状態確認コントラクトは、収集コントラクトと同様に、30分に1回、1時間に1回等のある程度高い頻度で起動される。このようにすれば、消耗品切れを出来る限り遅延なく検出することが可能になる。或いは契約管理コントラクトは、対象の全ての電子機器300の警告状態確認が完了後、あらかじめ指定された警告状態確認インターバル経過したら、次の警告状態確認を行うようにしてもよい。ここでの警告状態確認インターバルは、例えば1分間である。
また状態データの収集タイミングについても、サービス提供者とサービス利用者の間の契約によって決定されてもよい。その場合、契約内容情報は警告状態確認ルールを含む。契約管理コントラクトが警告状態確認ルールに従って警告状態確認コントラクトを起動することによって、契約内容に即した適切なタイミングで警告状態の確認が可能になる。
<発注コントラクト>
提供装置100の処理部110は、管理対象である電子機器300の消耗品の発注処理を行うための発注処理プログラムを、ブロックチェーンに登録するためのトランザクションを生成する。発注処理プログラムは、残量計算プログラムによって起動される。または発注処理プログラムは、警告状態確認プログラムによって起動される。スマートコントラクトを用いてブロックチェーンに書き込まれる発注処理プログラムを、発注コントラクトと表記する。このようにすれば、消耗品の発注処理を、ブロックチェーンを用いて共有されるプログラムに基づいて実行することが可能になる。
残量計算コントラクト又は警告状態確認コントラクトは、契約ID、不足消耗品種別をパラメーターとして、発注コントラクトを起動する。発注コントラクトは、契約IDに基づいて、契約管理コントラクトから配送先、配送方法等を取得する。契約管理コントラクトは、不足消耗品種別に対応する消耗品を、配送方法に従った方法によって配送先へ配送する処理を行う。実際の配送処理についてはブロックチェーン外で行われることであるため詳細な説明は省略する。また発注コントラクトは、発注分の費用を含む発注データをブロックチェーンに保存する。
なお、発注コントラクトは、発注先情報により表される発注先に、消耗品を発注する処理を行う。例えば、サービス提供者が消耗品の販売業者である場合、発注先情報により表される発注先はサービス提供者となる。例えば発注先情報は発注コントラクトによって管理される。より具体的には、発注コントラクトは、サービス提供者を発注先とする発注処理を実行する処理プログラムとして実現される。
ただし、サービス提供者が、当該サービス提供者以外の消耗品販売業者に消耗品の発注を行うことは妨げられない。例えば、いずれの発注先に発注を行うかが、サービス提供者とサービス利用者の間の契約において決定されてもよい。この場合、発注先情報は、契約管理プログラムによって管理される。
以上のように、発注先は種々の変形実施が考えられる。例えば、発注先情報は、電子機器300の販売元(すなわち、電子機器300を販売した業者)を表す情報であってもよい。この場合、サービス利用者からすれば、電子機器300の販売元と、消耗品の発注先(すなわち、消耗品の発注を受けて、消耗品配送サービスを提供する業者)が同じになるため、電子機器300に関する問い合わせ等の負担が軽減される。
<課金コントラクト>
上述したように、発注処理プログラムは、発注により発生する費用を含む発注データを、ブロックチェーンに書き込む処理を行う。提供装置100の処理部110は、ブロックチェーンに書き込まれた発注データに基づいて、課金額を決定する課金処理プログラムをブロックチェーンに登録するためのトランザクションを生成する。課金処理プログラムは、契約管理プログラムによって起動されるプログラムである。スマートコントラクトを用いてブロックチェーンに書き込まれる課金処理プログラムを、課金コントラクトと表記する。このようにすれば、消耗品の発注に伴う課金処理を、ブロックチェーンを用いて共有されるプログラムに基づいて実行することが可能になる。
上述したように、契約管理コントラクトは締め日の情報を保持する。締め日とは課金処理の基準となる日を表す情報であり、例えば毎月末日等の情報である。ただし締め日の設定は1ヶ月に1回に限定されず、2ヶ月に1回等の異なる周期であってもよい。契約管理コントラクトが課金コントラクトを起動することによって、適切なタイミングで課金処理を実行することが可能になる。
課金コントラクトは、契約アカウントごとに、課金額を決定する。契約管理コントラクトは、契約ID、締め日をパラメーターとして、課金コントラクトを起動する。課金コントラクトは、契約IDごとに、ブロックチェーンに保存された発注データのうち、前回の締め日以降、今回の締め日までの発注金額を取得、累計することによって課金額を決定する。
<請求コントラクト>
提供装置100の処理部110は、課金処理プログラムによって決定された課金額を、対応する契約アカウントに対して請求する請求プログラムをブロックチェーンに登録するためのトランザクションを生成する。請求プログラムは、課金処理プログラムによって起動されるプログラムである。スマートコントラクトを用いてブロックチェーンに書き込まれる請求プログラムを、請求コントラクトと表記する。このようにすれば、課金コントラクトによって決定された課金額の請求を、ブロックチェーンを用いて共有されるプログラムに基づいて実行することが可能になる。
課金コントラクトは、契約ID及び課金額をパラメーターとして、請求コントラクトを起動する。請求コントラクトは、取得した契約IDに基づいて契約管理コントラクトに問い合わせを行い、当該契約IDに対応する請求方法を取得する。請求方法とは、請求の宛先、請求の送付方法であり、送付方法とは郵便や電子メール等である。請求コントラクトは、取得した請求方法に従って、請求書を送付する。このようにすれば、サービス利用者に対応する適切な契約アカウントに対して、請求を行うことが可能になる。なお、仮想通貨を使用して決済を行う場合、請求書の送付とは、ブロックチェーン上での支払い要求である。
<決済コントラクト>
また処理装置200は、請求プログラムによる請求に対する決済を行う決済プログラムをブロックチェーンに登録するためのトランザクションを生成する。決済プログラムは、ブロックチェーンにおける仮想通貨を用いて決済を行うプログラムである。また決済プログラムは、請求プログラムによって起動されるプログラムである。スマートコントラクトを用いてブロックチェーンに書き込まれる決済プログラムを、決済コントラクトと表記する。このようにすれば、請求コントラクトによる請求に対する決済を、ブロックチェーンを用いて共有されるプログラムに基づいて実行することが可能になる。
決済コントラクトは、仮想通貨による支払いを行うコントラクトのため、サービス利用者ごとに、当該サービス利用者がブロックチェーンに登録する必要がある。よって処理装置200において、決済コントラクトの生成、及びブロックチェーンに登録するための処理が行われる。なお、ブロックチェーン技術においては、プログラムを生成するプログラムを、スマートコントラクトによりブロックチェーンに書き込むことも許容される。例えば提供装置100は、決済コントラクト生成用のプログラムをスマートコントラクトにより提供し、処理装置200は当該プログラムを実行することによって、自身の決済用の決済コントラクトを生成してもよい。決済コントラクトは、例えば仮想通貨の送金元として、サービス利用者のアドレスを保持するプログラムである。
請求コントラクトは、請求書をパラメーターとして決済コントラクトを起動する。請求書とは、送金先のアドレスと、送金額を指定する情報である。決済コントラクトは、保持しているサービス利用者のアドレスから、請求書に指定された仮想通貨のアドレス宛に、請求された額の仮想通貨を支払う処理を行う。
4.1.2 ブロックチェーンの具体例
以上のように、本実施形態の提供装置100は、スマートコントラクトを用いて各処理プログラムをブロックチェーンに書き込む処理を行う。具体的には、提供装置100の処理部110は、各処理プログラムをブロックチェーンのブロックに登録するためのトランザクションを生成する処理を行う。生成されたトランザクションはブロックチェーンネットワークNWにブロードキャストされる。
契約管理コントラクトは、サービス利用者及びサービス提供者を管理するための処理プログラムである。そのため、契約管理コントラクトは、プラットフォーム管理者の提供装置100においてブロックチェーンに書き込む処理が行われる。残量収集、残量計算、警告状態確認、課金、請求の各処理プログラムについては、プラットフォーム管理者の提供装置100から書き込まれてもよいし、サービス提供者の提供装置100から書き込まれてもよい。例えば、残量収集、残量計算、警告状態確認の各処理プログラムは、提供されるサービス内容を決定するプログラムである。サービス提供者が自社独自のサービスを提供する場合、これらの処理プログラムはサービス提供者の提供装置100から書き込まれる。或いは、汎用サービスとしてプラットフォーム管理者の提供装置100から書き込まれてもよい。課金、請求の各処理プログラムは、サービス提供者が独自のルールで課金を行いたいと考えればサービス提供者の提供装置100から書き込まれる。或いは、課金や請求に関する処理は種々のサービスにおいて流用可能であるため、プラットフォーム管理者の提供装置100がブロックチェーンに書き込み、多くのサービスにおいて汎用的に利用されてもよい。その他、契約管理コントラクトを除く各処理プログラムがいずれの提供装置100から書き込まれるかについては、種々の変形実施が可能である。
また、処理装置200は、決済プログラムをスマートコントラクトを用いてブロックチェーンに書き込む処理を行う。処理装置200は、決済コントラクトをブロックチェーンのブロックに登録するためのトランザクションを生成する処理を行う。
トランザクションの生成以降の流れは、図4を用いて上述した通りである。具体的にはコンセンサスアルゴリズムを用いた処理が行われ、合意形成が行われた場合に、トランザクションが取り込まれたブロックがブロックチェーンに追加される。
図7は、本実施形態のブロックチェーンの例である。ブロックAには契約管理コントラクトを含むトランザクションが書き込まれている。ブロックBには残量収集コントラクトを含むトランザクションが書き込まれている。ブロックCには残量計算コントラクトを含むトランザクションが書き込まれている。ブロックDには警告状態確認コントラクトを含むトランザクションが書き込まれている。ブロックEには発注コントラクトを含むトランザクションが書き込まれている。ブロックFには課金コントラクトを含むトランザクションが書き込まれている。ブロックGには請求コントラクトを含むトランザクションが書き込まれている。ブロックHには決済コントラクトを含むトランザクションが書き込まれている。
ブロックA~Hがブロックチェーンに追加されることによって、ブロックチェーンネットワークNWの各ノードは、消耗品配送サービスに関する各処理を実行可能になる。なお、図7はブロックチェーンの構造を表す一例であり、各プログラムがスマートコントラクトによりブロックチェーンに書き込まれる順序は問わない。また1ブロックに複数のコントラクトが書き込まれてもよい。
ブロックチェーンは、図7に示したスマートコントラクトにより書き込まれるプログラムだけでなく、ブロックチェーンネットワークNWで通信される任意のデータを含むことが可能である。ブロックチェーンに書き込まれるデータは、例えばプログラムの実行結果を表すデータであってもよいし、仮想通貨の取引を表す情報であってもよいし、他のデータであってもよい。実行結果を表すデータとは、残量収集コントラクトの実行結果である使用状況データであってもよいし、発注コントラクトの実行結果である発注データであってもよいし、図7には不図示のプログラムの実行結果であってもよい。また仮想通貨の取引を表す情報とは、決済コントラクトの実行結果であってもよいし、本実施形態に係る決済処理とは異なる仮想通貨の取引結果を表す情報であってもよい。
4.1.3 処理の詳細
次に本実施形態の処理について詳細に説明する。なお、上述した各プログラムは、図4に示した処理を経て、スマートコントラクトによりブロックチェーンに書き込まれているものとして、説明を行う。
サービス提供者とサービス利用者との間で、消耗品配送サービスに関する契約が締結されると、まず契約アカウント情報のブロックチェーンへの登録処理が行われる。契約では、契約管理コントラクトが管理する契約タイプ、単価、割引情報、配送先、配送方法、締め日、請求方法の情報が決定される。各情報については上述した通りである。なお、契約にスマートコントラクトを用いる場合、契約アカウント情報の登録処理の完了をもって、契約が締結されたとみなしてもよい。
図8は、契約管理コントラクトの実行処理を説明するフローチャートである。なお、以下では、プラットフォーム管理者の提供装置100が契約管理コントラクトを実行することによって、図8の各ステップを実行するものとして説明する。ただし、プラットフォーム管理者の提供装置100は、契約管理コントラクトのブロックチェーンへの登録、及び契約アカウント情報の書き込み等を行うことは想定されるが、図8に示す処理の実行は必須ではない。図8を用いて後述する各ステップは、プラットフォーム管理者の提供装置100で実行されてもよいし、サービス提供者の提供装置100で実行されてもよいし、処理装置200等の他のノードで実行されてもよい。広義には、ブロックチェーンネットワークNWのいずれかのノードが、当該ノード内の実行環境でスマートコントラクトを用いて提供されたプログラムを実行することによって、各ステップが実現される。図9以降のフローチャートについても同様であり、特定の装置が処理プログラムを実行することによって、フローチャートの各ステップの処理を実行するものとして説明を行うが、ブロックチェーンネットワークNWの他のノードにおいて当該処理が実行されてもよい。
まず提供装置100は、実行タイミング情報に基づいて、残量収集コントラクト及び警告状態確認コントラクトの起動インターバルを登録する。また提供装置100は、契約内容情報の締め日に基づいて、課金コントラクトの起動時刻を登録する(S401)。起動インターバルとは、例えば30分、1時間等の時間である。締め日とは、例えば「毎月21日09:00」、「月初08:00」といった情報である。
次に提供装置100は、前回の残量収集コントラクト及び警告状態確認コントラクトの起動から現在時刻までの時間と、S401で取得した起動インターバルを比較することによって、起動インターバルを経過しているか否かを判定する(S402)。起動インターバルを経過していると判定した場合(S402でYes)、提供装置100は、残量計算コントラクト及び警告状態確認コントラクトを起動する(S403)。S402においてNoの場合、S403の処理は行われない。
次に提供装置100は、現在時刻とS401で取得した起動時刻を比較することによって、起動時刻を経過しているか否かを判定する(S404)。起動時刻を経過していると判定した場合(S404でYes)、提供装置100は、課金コントラクトを起動する(S405)。S404においてNoの場合、課金コントラクトは起動されない。S405の処理後、又はS404においてNoの場合、S402に戻り処理が繰り返される。
図8の処理を行うことによって、所定の起動インターバルに従った残量収集コントラクト及び警告状態確認コントラクト起動、及び、締め日における課金コントラクトの起動が可能になる。なお、契約管理コントラクトは、定期実行機能を有してもよい。即ち、契約管理コントラクトは、自身の機能を用いて図8に示した処理を定期的に実行してもよい。
或いは、契約管理コントラクトが定期実行機能を持たず、外部プログラムが定期的に契約管理コントラクトを起動してもよい。この場合、外部プログラムは、使用状況データの収集ルールや締め日情報を知らない。そのため外部プログラムは、毎分、5分毎、30分毎、毎時等の任意の間隔で、定期的に契約管理コントラクトを起動する。契約管理コントラクトは、起動の都度、図8に示した処理を行う。例えば、締め日として「毎月21日09:00(A社)、月初08:00(B社)」という情報が取得された場合であって、ある月の21日09:03に外部プログラムから契約管理コントラクトが起動されたとする。この場合、契約管理コントラクトは、「毎月21日09:00(A社)」という締め日に従って課金コントラクトを起動する。
なお、図8に示した処理においては、警告状態確認コントラクトの所与の起動から次の起動までの間隔である起動インターバルが制御される。ただし、警告状態確認コントラクトの起動制御はこれに限定されない。例えば、警告状態確認コントラクトは、所与の起動に伴う確認処理が終了してから、次の起動までの間隔が制御されてもよい。
図9は、契約管理コントラクトによる警告状態確認コントラクトの定期起動処理を説明する他のフローチャートである。この処理が開始されると、まず契約管理コントラクトを実行する提供装置100は、実行タイミング情報に基づいて、警告状態確認インターバルを登録する(S501)。警告状態確認インターバルは、例えば1分程度の相対的に短い時間である。
次に、提供装置100は、警告状態確認コントラクトを起動する(S502)。そして提供装置100は、確認対象である全ての電子機器300について、警告状態の確認が完了したか否かを判定する(S503)。確認が完了していない場合、S502に戻り、確認対象である他の電子機器300を対象として処理を繰り返す。確認が完了した場合、提供装置100は、そこから警告状態確認インターバルによって指定される時間だけ待機し(S504)、その後、S502に戻り警告状態確認コントラクトを再度起動する。図9に示した処理を行う場合、相対的に短い警告状態確認インターバルの期間を除いて、警告状態確認コントラクトが動作を繰り返すことになるため、電子機器300における警告状態の発生を速やかに検出することが可能になる。
図10は、残量収集コントラクト及び残量計算コントラクトによる処理を説明するフローチャートである。残量収集コントラクトを実行する処理装置200は、図8のS403において起動されると、まず契約管理コントラクトから収集対象である電子機器300を特定する情報を取得する(S601)。S601の処理では、例えば収集対象となる電子機器300の数が取得される。処理装置200は、対象の電子機器300から、印刷枚数、インク残量等の消耗品の使用状況データを収集する(S602)。処理装置200は、収集したデータに、電子機器300を特定する情報と収集時刻を付与して、ブロックチェーンに書き込む処理を行う。次に処理装置200は、対象となる全ての電子機器300からの使用状況データの収集が完了したか否かを判定する(S603)。未収集の電子機器300が残っている場合(S603でNo)、S602に戻って収集を継続する。全ての電子機器300からの収集が完了した場合(S603でYes)、処理装置200は残量計算コントラクトを起動する(S604)。
S605以降の処理は、残量計算コントラクトによって行われる。残量計算コントラクトを実行する提供装置100は、残量収集コントラクトから取得した契約IDに基づいて、契約タイプを特定する。そして残量計算の対象がインク残量であるか否かを判定する(S605)。対象がインク残量である場合(S605でYes)、提供装置100は、対象である電子機器300のインク残量データを含む使用状況データをブロックチェーンから取得し、当該インク残量がインク残量限界値以下であるか否かを判定する(S606)。S606でYesの場合、残量不足であると判定されるため、提供装置100は、インクを不足消耗品種別として指定して、発注コントラクトを起動する(S607)。S606でNoの場合、発注コントラクトは起動されずに処理を終了する。
一方、残量計算の対象が印刷媒体である場合(S606でNo)、提供装置100は、用紙サイズごとに以下の処理をループする。具体的には、提供装置100は、対象である電子機器300の印刷枚数を含む使用状況データをブロックチェーンから取得した後、前回の残量から印刷枚数を減算することによって、用紙残量を求める(S608)。なお、ここでの印刷枚数は、前回の残量計算からの増加分を表す。なお、残量の初期値は適切に設定されているものとする。また、印刷用紙を購入した場合、購入分が残量に加算される。
そして提供装置100トは、求めた用紙残量が用紙残量限界値以下であるか否かを判定する(S609)。S609でYesの場合、残量不足であると判定されるため、提供装置100は、対象の用紙サイズについて、残量不足フラグを設定する(S610)。S609でNoの場合、又は、S610の処理後、提供装置100は、全ての用紙サイズについて処理が完了したか否かを判定する(S611)。S611でNoの場合、S608に戻り処理を継続する。
S611でYesの場合、提供装置100は、いずれかの用紙サイズについて、残量不足フラグが設定されているか否かを判定する(S612)。残量不足フラグが設定されていた場合(S612でYes)、提供装置100は、対応するサイズの印刷用紙を不足消耗品種別として指定して、発注コントラクトを起動する(S607)。S612でNoの場合、発注コントラクトは起動されずに処理を終了する。
図11は、警告状態確認コントラクトによる処理を説明するフローチャートである。警告状態確認コントラクトを実行する処理装置200は、図8のS403又は図9のS502において起動されると、契約管理コントラクトから収集対象である電子機器300を特定する情報を取得する(S701)。S701の処理では、例えば収集対象となる電子機器300の数が取得される。処理装置200は、対象の電子機器300から、警告状態か否かを表すデータを含む状態データを収集する(S702)。処理装置200は、収集した状態データに基づいて、電子機器300がインク切れに対応する警告状態であるか否かを判定する(S703)。S703でYesの場合、対象の電子機器300に消耗品切れフラグを設定する(S704)。
S703でNoの場合、又は、S704の処理後、処理装置200は、全ての電子機器300について処理が完了したか否かを判定する(S705)。S705でNoの場合、S702に戻り処理を継続する。
S705でYesの場合、処理装置200は、いずれかの電子機器300について、消耗品切れフラグが設定されているか否かを判定する(S706)。消耗品切れフラグが設定されていた場合(S706でYes)、処理装置200は、インクを不足消耗品種別として指定して、発注コントラクトを起動する(S707)。S706でNoの場合、発注コントラクトは起動されずに処理を終了する。
図12は、発注コントラクトによる処理を説明するフローチャートである。まず発注コントラクトを実行する提供装置100は、起動時に、残量計算コントラクト又は警告状態確認コントラクトから契約ID及び不足消耗品種別を取得する(S801)、次に提供装置100は、取得した契約IDに基づいて、契約管理コントラクトに問い合わせを行うことによって、配送先及び配送方法を取得する(S802)。提供装置100は、不足消耗品種別によって特定される消耗品を、指定された配送方法によって、指定された配送先に配送するための手配処理を行う(S803)。その後、提供装置100は、消耗品の代金、及び送料を含む発注データを、ブロックチェーンに書き込む処理を行う(S804)。
図13は、課金コントラクト、請求コントラクト、決済コントラクトの処理を説明するフローチャートである。課金コントラクトを実行する提供装置100は、図8のS405において、契約ID及び締め日をパラメーターとして契約管理コントラクトによって起動される。提供装置100は、ブロックチェーンに保存されている発注データのうち、前回の締め日以降、今回の締め日までの発注金額を取得、累計することによって、課金額を決定する(S901)。課金額が決定されると、提供装置100は、契約ID、課金額をパラメーターとして請求コントラクトを起動する(S902)。
請求コントラクトを実行する提供装置100は、パラメーターとして取得した契約IDに基づいて契約管理コントラクトに問い合わせを行い、請求方法として宛先や送付方法の情報を取得する(S903)。提供装置100は、取得した方法で請求書を送付する(S904)。なお、仮想通貨を使用して決済を行う場合、S904における請求書とは、ブロックチェーン上での支払い要求になる。支払い要求を行うために、請求コントラクトは、自分の仮想通貨の受信アドレスと請求額をパラメーターとして、請求対象である契約者の決済コントラクトを起動する(S905)。
決済コントラクトを実行する提供装置100は、自身が保持する契約者のアドレスを、仮想通貨の送信アドレスとする。そして提供装置100は、当該送信アドレスから、パラメーターとして取得した受信アドレスへ、請求額分を送金するという取引データをブロックチェーンに書き込む処理を行う(S906)。実際の仮想通貨の取引はコンセンサスアルゴリズムに基づく合意形成が承認された後、成立する。
なお、決済処理において、契約者のアカウントが請求額に満たない仮想通貨しか保有していなかった場合、提供装置100は、不足分を未決済取引としてブロックチェーンに書き込む処理を行ってもよい。その場合、決済コントラクトは、次回以降の決済時に、ブロックチェーン内の未決済取引から順に処理することによって、未払いの請求に関する決済を実行する。
これ以降についても、図8~図13に示した各処理を実行することによって、消耗品配送サービスを自動で実行する処理システム10を実現できる。ブロックチェーン上で処理を自動化することによって、一つのシステムのみで消耗品配送サービスを実現することが可能である。なお、郵送やメールによって行われた請求に対する決済を、仮想通貨を用いずに行う場合のように、消耗品配送サービスに関する一部の処理がブロックチェーンを介さずに実行されてもよい。
本実施形態によれば、ブロックチェーン技術を利用して、電子機器300に関するサービス提供処理を自動化できる。狭義には、サービスとは消耗品配送サービスであって、残量収集、残量計算、警告状態確認、発注、サービスによって発生する費用の課金、課金額の請求、の各処理を自動化できる。また、同じブロックチェーン上の仮想通貨を使用することで、請求に基づく決済についても自動化が可能である。ブロックチェーン技術では、ブロックチェーンにデータを書き込む際にコンセンサスアルゴリズムによる合意形成が行われる。これにより、発行したトランザクションが書き込まれることなく放置されること、及び同じトランザクションが二重に書き込まれることが抑制できる。即ち、人手によるチェックを行わずとも、消耗品の重複配送及び配送忘れ、或いは重複課金や課金忘れを抑制することが可能である。
4.2 修理請負サービス
次に電子機器300に関するサービスの他の例として、修理請負サービスについて説明する。まず、修理請負サービスで用いられるスマートコントラクトの具体例を説明し、その後、フローチャートを用いて処理の流れを説明する。
4.2.1 スマートコントラクト
<契約管理コントラクト>
契約管理コントラクトについては消耗品配送サービスと同様である。契約管理コントラクトは、契約アカウント情報とサービス提供者情報を管理することによって、プラットフォーム管理者とサービス提供者の間の契約、及び、サービス提供者とサービス利用者の間の契約を管理する。
ただし修理請負サービスを実現するためには、契約アカウント情報に含まれる契約内容情報は、修理請負サービスに関する契約の内容を表す情報である必要があり、契約内容情報の具体的な内容は消耗品配送サービスと異なる。修理請負サービスにおける契約内容情報とは、保証期間、修理形態、年間サポート契約、請求方法等を含む情報である。
保証期間は、電子機器300の保証期間を表す情報であり、例えば保証期間の開始日と、保証期間の長さを特定する情報である。修理形態は、訪問修理を行うか引取修理を行うかを特定する情報である。年間サポート契約は、上記保証期間とは別に、修理費用を低減する契約を結んでいるか否かを表す情報である。年間サポート契約は、例えば修理費用を低減する対象となる故障、サポート期間、費用の低減額等の情報を含む。なお、以下では説明を簡略化するため、年間サポート契約の契約範囲内であれば、修理費用を無料とする例について説明する。請求方法は、修理代金をサービス利用者に請求する際の、請求書の宛先、請求書の送付方法を特定する情報である。
また、契約管理コントラクトが、スマートコントラクト情報、実行タイミング情報を対応づけて管理する点は消耗品配送サービスと同様である。修理請負サービスにおいては、後述する状態確認コントラクト、修理手配コントラクトを実行することによって電子機器300の修理手配が行われる。契約管理コントラクトは、これらのうち、少なくとも自身が呼び出す必要がある状態確認コントラクトを表す情報をスマートコントラクト情報として管理する。また契約管理コントラクトは、状態確認コントラクトの実行タイミングを表す情報を管理する。
<状態確認コントラクト>
サービス提供処理プログラムは、電子機器300のエラー状態の確認処理、及び、電子機器300の部品交換の有無の判定処理の少なくとも一方の処理を行う状態確認プログラムを含む。提供装置100の処理部110は、状態確認プログラムを、ブロックチェーンに登録するためのトランザクションを生成する。状態確認プログラムは、契約管理プログラムによって所与のスケジュールに従って起動される。スマートコントラクトを用いてブロックチェーンに書き込まれる状態確認プログラムを、状態確認コントラクトと表記する。このようにすれば、修理が必要な状態であるか否かの確認処理を、ブロックチェーンを用いて共有されるプログラムに基づいて実行することが可能になる。
状態確認コントラクトは、電子機器300の状態データを取得する。状態データは、サービスコールが必要なエラー状態であるかを識別可能な情報である。また状態確認コントラクトは、電子機器300の使用状況データを取得し、当該使用状況データに含まれる部品の使用量情報又は使用時間情報に基づいて、交換時期か否かを判定する。状態データ、使用状況データの取得は、消耗品配送サービスの例と同様に、SNMPに則って実行される。なお状態データの種類によっては、状態確認コントラクトは、定期交換が必要な部品が交換時期になっているか否かを状態データに基づいて判定することも妨げられない。また、ここでの状態確認コントラクトは、エラー状態の確認処理及び部品交換の有無の判定処理の両方を行うものには限定されず、いずれか一方に基づいて修理が必要な状態であるか否かを判定してもよい。
例えば電子機器300がプロジェクターである場合、使用状況データは、当該プロジェクターの光源の発光時間である。状態確認コントラクトは、発光時間の累計と耐用時間に基づいて交換が必要か否かを判定する。或いは使用状況データは、電子機器300の可動部の移動量、例えばモーターの回転量等であってもよい。また使用状況データは、例えば電子機器300の電源がオンになっている時間を表す情報であってもよいし、電子機器300の特定の機能を使用している時間を表す情報であってもよい。特定の機能とは、例えばプリンターの印刷機能、スキャナーのスキャン機能等、種々の機能が考えられる。
状態確認コントラクトは、何らかの修理が必要な状態が確認された場合、契約ID、電子機器300を特定する情報、及び具体的な状態をパラメーターとして、修理手配コントラクトを起動する。
契約管理コントラクトは、契約ID及び収集対象となる電子機器300を特定する情報を指定して状態コントラクトを起動する。契約管理コントラクトが実行タイミング情報に従って残量収集コントラクトを起動することによって、サービス提供者の決定した適切なタイミングで状態データの収集が可能になる。具体的な起動タイミングは種々の変形実施が可能である。修理が必要な状態を可能な限り遅延なく検出することを考慮すれば、状態確認コントラクトは、30分に1回、1時間に1回等のある程度高い頻度で起動される。或いは契約管理コントラクトは、対象の全ての電子機器300の状態確認が完了後、あらかじめ指定された状態確認インターバル経過したら、次の状態確認を行うようにしてもよい。ここでの状態確認インターバルは、例えば1分間である。
また状態データの収集タイミングは、サービス提供者とサービス利用者の間の契約によって決定されてもよい。その場合、契約内容情報は状態確認ルールを含む。契約管理コントラクトが状態確認ルールに従って状態確認コントラクトを起動することによって、契約内容に即した適切なタイミングで警告状態の確認が可能になる。
<修理手配コントラクト>
サービス提供処理プログラムは、状態確認プログラムによって起動され、電子機器300の修理手配処理を行うための修理手配処理プログラムを含む。提供装置100の処理部110は、修理手配プログラムを、ブロックチェーンに登録するためのトランザクションを生成する。スマートコントラクトを用いてブロックチェーンに書き込まれる修理手配プログラムを、修理手配コントラクトと表記する。このようにすれば、電子機器300の修理を手配する処理を、ブロックチェーンを用いて共有されるプログラムに基づいて実行することが可能になる。
修理手配コントラクトは、修理の手配処理を行う。修理手配コントラクトは、状態確認コントラクトから契約ID、電子機器300を特定する情報、及び具体的な状態を受け取る。修理手配コントラクトは、契約IDに基づいて契約管理コントラクトに問い合わせを行うことによって、契約内容情報の修理形態に応じた修理の手配を行う。修理形態が訪問修理の場合、修理担当者の割り当てと訪問日時を決定する。訪問日時に関しては、修理担当者が決められるようにしてもよい。一方、修理形態が引取修理の場合、配送の手配を行う。
また修理手配コントラクトは、各修理案件に修理案件IDを割り当てる。修理手配コントラクトは、修理案件IDごとに、修理進捗状況確認、進捗状況の変更、修理内容および修理費用の入力が出来る手段を提供する。入力された値はブロックチェーンに保存される。例えば、Webページの形態で、請け負った修理案件の状況の確認、変更、修理内容、修理費用の入力が可能なインターフェースが提供され、当該インターフェースを用いて入力された情報がブロックチェーンに書き込まれる。
修理手配コントラクトは、所与の修理案件について修理費用が入力されると、契約ID、修理案件ID、電子機器300を特定する情報、修理費用をパラメーターとして、課金コントラクトを起動する。
<課金コントラクト>
課金コントラクトは、修理案件IDに対する課金額を決定する。課金コントラクトは、修理手配コントラクトから取得した契約IDに基づいて契約管理コントラクトに問い合わせを行うことによって、保証期間、修理形態、年間サポート契約の有無、の各情報を取得する。
課金コントラクトは、取得した情報に基づいて課金額を決定する処理を行う。課金コントラクトは、保証期間内の場合や、年間サポート契約に含まれる修理の場合、課金額を0とする。一方、課金コントラクトは、保証期間が終了している場合、年間サポート契約外の修理である場合、年間サポート未契約である場合、修理手配コントラクトから受け取った修理費用に出張修理費用、配送料等を適切に加算することによって、課金額を算出する。
課金コントラクトは、算出した課金額をブロックチェーンに書き込む処理を行う。また課金コントラクトは、契約ID及び課金額をパラメーターとして、請求コントラクトを起動する。
<請求コントラクト>
請求コントラクトについては消耗品配送サービスと同様である。課金コントラクトは、契約ID及び課金額をパラメーターとして、請求コントラクトを起動する。請求コントラクトは、取得した契約IDに基づいて契約管理コントラクトに問い合わせを行い、当該契約IDに対応する請求方法を用いて請求処理を行う。
<決済コントラクト>
決済コントラクトについても消耗品配送サービスと同様である。請求コントラクトは、請求書をパラメーターとして決済コントラクトを起動する。決済コントラクトは、保持しているサービス利用者のアドレスから、請求書に指定された仮想通貨のアドレス宛に、請求された額の仮想通貨を支払う処理を行う。
4.2.2 ブロックチェーンの具体例
図14は、本実施形態のブロックチェーンの例である。ブロックIには契約管理コントラクトを含むトランザクションが書き込まれている。ブロックJには状態確認コントラクトを含むトランザクションが書き込まれている。ブロックKには修理手配コントラクトを含むトランザクションが書き込まれている。ブロックLには課金コントラクトを含むトランザクションが書き込まれている。ブロックMには請求コントラクトを含むトランザクションが書き込まれている。ブロックNには決済コントラクトを含むトランザクションが書き込まれている。
ブロックI~Nがブロックチェーンに追加されることによって、ブロックチェーンネットワークNWの各ノードは、修理請負サービスに関する各処理を実行可能になる。
なお、上述したように契約管理コントラクトは、契約内容情報に含まれる情報が一部異なるものの、消耗品配送サービスと修理請負サービスの両方で共通とすることが可能である。消耗品配送サービスと修理請負サービスの両方をサービス提供プラットフォームにおいて提供する場合、図7のブロックAに含まれる契約管理コントラクトと、図14のブロックIに含まれる契約管理コントラクトは別々に書き込まれる必要はなく、いずれか一方が書き込まれればよい。また、請求コントラクト及び決済コントラクトも複数のサービスにおいて共通化が可能である。ブロックGとブロックM、ブロックHとブロックNも重複させる必要がない。所与の処理プログラムを複数のサービスにおいて利用することによって、サービス提供プラットフォームにおけるサービス提供を効率的に実現することが可能になる。例えば、複数のサービス提供者による利用が想定される汎用処理プログラムを、プラットフォーム管理者があらかじめ提供する実施形態が考えられる。
4.2.3 処理の詳細
次に本実施形態の処理について詳細に説明する。なお、上述した各プログラムは、図4に示した処理を経て、スマートコントラクトによりブロックチェーンに書き込まれているものとして、説明を行う。
サービス提供者とサービス利用者との間で、修理請負サービスに関する契約が締結されると、まず契約アカウント情報のブロックチェーンへの登録処理が行われる。契約では、契約管理コントラクトが管理する保証期間、修理形態、年間サポート契約、請求方法の情報が決定される。各情報については上述した通りである。
図15は、契約管理コントラクトの実行処理を説明するフローチャートである。契約管理コントラクトを実行する提供装置100は、実行タイミング情報に基づいて、状態確認コントラクトの起動インターバルを登録する(S1001)。起動インターバルとは、例えば30分、1時間等の時間である。
次に提供装置100は、前回の状態確認コントラクトの起動から現在時刻までの時間と、S1001で取得した起動インターバルを比較することによって、起動インターバルを経過しているか否かを判定する(S1002)。起動インターバルを経過していると判定した場合(S1002でYes)、提供装置100は、状態確認コントラクトを起動する(S1003)。S1003の処理後、又は、S1002においてNoの場合、S1001に戻り処理が繰り返される。
図15の処理を行うことによって、所定の起動インターバルに従った状態確認コントラクト起動が可能になる。なお、上述した消耗品配送サービスにおいては、ある程度高い頻度で消耗品の配送が行われることが想定されるため、課金処理を締め日に実行することによってユーザーの利便性向上が可能である。例えば、所与の締め日以降、次の締め日までの期間に複数回の発送が行われたとしても、請求や決済の頻度が抑制される。それに比べて、修理が必要な故障等の発生頻度は低いと考えられる。よってここでは、課金処理が修理案件ごとに行われる例について説明する。ただし、消耗品配送サービスと同様に、締め日ごとに課金処理が実行されてもよい。
図16は、契約管理コントラクトによる状態確認コントラクトの定期起動処理を説明する他のフローチャートである。この処理が開始されると、まず契約管理コントラクトを実行する提供装置100は、実行タイミング情報に基づいて、状態確認インターバルを登録する(S1101)。状態確認インターバルは、例えば1分程度の相対的に短い時間である。
次に、提供装置100は、状態確認コントラクトを起動する(S1102)。そして提供装置100は、確認対象である全ての電子機器300について、状態の確認が完了したか否かを判定する(S1103)。確認が完了していない場合、S1102に戻り、確認対象である他の電子機器300を対象として処理を繰り返す。確認が完了した場合、提供装置100は、そこから状態確認インターバルによって指定される時間だけ待機し(S1104)、その後、S1102に戻る。
図17は、状態確認コントラクトによる処理を説明するフローチャートである。状態確認コントラクトは、図15のS1003又は図16のS1102において起動される。状態確認コントラクトを実行する処理装置200は、契約管理コントラクトから収集対象である電子機器300を特定する情報を取得する。そして処理装置200は、対象の電子機器300から、修理が必要な状態か否かを表すデータを含む状態データ、及び、定期交換部品の使用回数情報又は使用時間情報を含む使用状況データを収集する(S1201)。処理装置200は、収集した状態データに基づいて、電子機器300が、サービスコールが必要なエラー状態であるか否かを判定する(S1202)。S1202でYesの場合、対象の電子機器300にサービスコールフラグを設定する(S1203)。S1202でNoの場合、S1203の処理は省略される。
また処理装置200は、収集した使用状況データに基づいて、定期交換部品が交換時期を超えているか否かを判定する(S1204)。交換時期を超えているか否かの判定は、例えば使用状況データとして取得された使用回数と、あらかじめ部品ごとに設定されている耐用回数との比較処理によって行われる。或いは、使用年数と耐用年数の比較が行われてもよい。S1204でYesの場合、対象の定期交換部品に関する交換フラグを設定する(S1205)。S1204でNoの場合、S1205の処理は省略される。処理装置200は、全ての定期交換部品について確認処理が終了したか否かを判定し(S1206)、終了していない場合はS1204に戻り処理を繰り返す。
処理装置200は、全ての電子機器300について処理が完了したか否かを判定する(S1207)。S1207でNoの場合、S1201に戻り処理を継続する。S1207でYesの場合、処理装置200は、いずれかの電子機器300について、サービスコールフラグ又は交換フラグが設定されているか否かを判定する(S1208)。少なくとも一方のフラグが設定されていた場合(S1208でYes)、処理装置200は、修理手配コントラクトを起動する(S1209)。S1208でNoの場合、修理手配コントラクトは起動されずに処理を終了する。
図18は、修理手配コントラクトによる処理を説明するフローチャートである。修理手配コントラクトは、図17のS1209において起動される。修理手配コントラクトを実行する提供装置100は、起動時に受け取った契約IDに基づいて契約管理コントラクトに問い合わせを行うことによって、修理形態を取得する(S1301)。提供装置100は、修理案件ごとにユニークな修理案件IDを割当てる(S1302)。
提供装置100は、修理形態が訪問修理であるか否かを判定する(S1303)。修理形態が訪問修理の場合(S1303でYes)、提供装置100は、修理担当者の割当て、および訪問日時を決定する(S1304)。訪問日時は、システム側が決定してもよいし、修理担当者が決定した日時の入力を受け付けてもよい。その後、修理担当者が訪問修理を行い、修理手配コントラクトの該当する修理案件IDに対して、修理進捗状況の入力を行う。提供装置100は、修理進捗状況の入力を受け付け(S1305)、修理が完了したか否かを判定する(S1306)。修理が完了していない場合(S1306でNo)、S1305に戻り、完了するまで処理を継続する。
修理形態が引取修理の場合(S1303でNo)、提供装置100は、引取対象の電子機器300の配送手配処理を行う(S1307)。修理進捗状況の入力受け付け(S1308)、及び、修理が完了したか否かの判定(S1309)については訪問修理の場合と同様である。
修理が完了したと判定された場合(S1306又はS1309でYes)、提供装置100は、修理内容、修理費の入力を受け付ける(S1310)。提供装置100は、契約ID、修理案件ID、電子機器300を特定する情報、修理費用をパラメーターとして、課金コントラクトを起動する(S1311)。なお、図18の処理において、修理案件IDの決定や、何らかの入力を受け付けが行われた場合、該当する情報は、その都度ブロックチェーンに書き込まれる。
図19は、課金コントラクト、請求コントラクト、決済コントラクトの処理を説明するフローチャートである。課金コントラクトは、図18のS1311において、修理手配コントラクトによって起動される。課金コントラクトを実行する提供装置100は、起動時に受け取った契約IDに基づいて契約管理コントラクトに問い合わせを行うことによって、保証期間、年間サポート契約を含む契約内容情報を取得する(S1401)。
提供装置100は、修理対象である電子機器300が保証期間内であるか否かを判定する(S1402)。また提供装置100は、該当する修理が年間サポート契約の範囲内で行われたか否かを判定する(S1403)。S1402とS1403のいずれか一方でYesの場合、提供装置100は、課金額を0に設定する(S1404)。S1402とS1403の両方でNoの場合、提供装置100は、起動時に受け取った修理費用に出張費、配送料等の経費を加算し、課金額を算出する(S1405)。なお、S1403においてNoとは、年間サポート契約が未契約の場合、契約済みであるが修理内容が年間サポート契約の範囲外である場合、等が考えられる。
課金額が決定されると、提供装置100は、契約ID、課金額をパラメーターとして請求コントラクトを起動する(S1406)。
請求コントラクトを実行する提供装置100は、パラメーターとして取得した契約IDに基づいて契約管理コントラクトに問い合わせを行い、請求方法として宛先や送付方法の情報を取得する(S1407)。提供装置100は、取得した方法で請求書を送付する(S1408)。支払い要求を行うために、請求コントラクトは、自分の仮想通貨の受信アドレスと請求額をパラメーターとして、請求対象である契約者の決済コントラクトを起動する(S1409)。
決済コントラクトを実行する提供装置100は、自身が保持する契約者のアドレスを、仮想通貨の送信アドレスとする。そして提供装置100は、当該送信アドレスから、パラメーターとして取得した受信アドレスへ、請求額分を送金するという取引データをブロックチェーンに書き込む処理を行う(S1410)。実際の仮想通貨の取引はコンセンサスアルゴリズムに基づく合意形成が承認された後、成立する。
これ以降についても、図15~図19に示した各処理を実行することによって、修理請負サービスを自動で実行する処理システム10を実現できる。
5.変形例
以下、いくつかの変形例について説明する。
5.1 他のサービス
以上ではサービスの具体例として消耗品配送サービスと修理請負サービスについて説明した。ただし、電子機器300に関するサービスはこれに限定されず、種々の変形実施が可能である。
例えば、電子機器300の配置や配線等の処理を行う設置サービス、電子機器300の設定を行う設定サービス、印刷物の製本処理を行う製本受注サービス、写真印刷等の高精細印刷を行う高精細印刷受注サービス等が考えられる。いずれのサービスにおいても、サービス提供者は、サービス登録必須情報等の登録を行えばサービス提供が可能になる。また、サービス利用者は、ディレクトリーサービス等を用いてサービスを検索、選択することによって、種々のサービスを利用可能になる。そしてこれらの手続きがブロックチェーンを用いて自動化されるため、サービス提供者及びサービス利用者にとって使用しやすいプラットフォームの実現が可能である。
5.2 契約管理プログラムの変形例
以上では、契約管理コントラクトが定期実行機能を有する例、及び定期実行機能を有さない契約管理コントラクトが外部プログラムにより起動される例を示した。いずれの場合も、契約管理プログラムがスマートコントラクトによりブロックチェーンに書き込まれるプログラムとして実現される例を示している。
ただし、契約管理プログラム自体を外部プログラムとしてもよい。当該外部プログラムは、収集コントラクト等の他のコントラクトを必要なタイミングで起動する。
消耗品配送サービスにおいては、提供装置100の処理部110は、電子機器300の消耗品の使用状況データを収集する残量収集プログラムを、ブロックチェーンに登録するためのトランザクションを生成し、当該残量収集プログラムは、外部プログラムによって起動されてもよい。或いは処理部110は、電子機器300が消耗品の不足に基づく警告状態となっているか否かを確認する警告状態確認プログラムを、ブロックチェーンに登録するためのトランザクションを生成し、当該警告確認プログラムは、外部プログラムによって起動されてもよい。また修理請負サービスにおいては、電子機器300のエラー状態の確認処理、及び、電子機器300の部品交換の有無の判定処理の少なくとも一方の処理を行う状態確認プログラムをブロックチェーンに登録するためのトランザクションを生成し、当該状態確認プログラムは、外部プログラムによって起動されてもよい。このようにすれば、契約管理プログラムを種々の態様により実現することが可能になる。
5.3 正規サービスか否かの判定
サービス提供者にはデジタルIDが割り当てられる。これは、第三者機関が発行したデジタルIDであってもよいし、サービス提供プラットフォームにおいて割り当てられるデジタルIDであってもよい。このデジタルIDは、スマートコントラクトを利用したサービス利用時に、当該サービスが正規サービスとして登録済みか否か確認するために用いられてもよい。
例えば、契約管理コントラクトは、サービスを提供するための処理プログラムを呼び出す際に、デジタルIDを用いて当該サービスが正規サービスであるか否かを判定する。サービスを提供するための処理プログラムとは、例えば消耗品配送サービスにおける残量収集コントラクト及び警告状態確認コントラクト、修理請負サービスにおける状態確認コントラクト等である。
契約管理コントラクトは、デジタルIDが第三者機関によって発行されたIDである場合、サービス利用時に第三者機関に問合せを行い、当該IDが正規に取得されたIDであるか否かを確認する。或いは契約管理コントラクトは、デジタルIDがサービス提供プラットフォームの管理システムによって割り当てられたIDである場合、サービス利用時に管理システムに問合せを行い、当該IDが正規に割り当てられたIDであるか否かを確認する。
なお、初回の問合せ時に承認済みのトークンを取得し、トークンの有効期間内はトークンを再利用して、正規に取得したIDであることを確認してもよい。
以上のように本実施形態の提供装置100は、ブロックチェーンを用いたネットワークとの通信を行う通信部と、通信部を制御する処理部を含む。処理部は、管理対象である電子機器についてのサービス提供処理を行うためのサービス提供処理プログラムを、ブロックチェーンに登録するためのトランザクションを生成し、生成したトランザクションを、通信部を介してネットワークに発行する。サービス提供処理プログラムは、ブロックチェーンに記憶されたサービス提供者情報により表されるサービス提供者に、サービスを依頼する処理を行う。
このようにすれば、サービス提供処理プログラムは、ブロックチェーンを用いたネットワークの各ノードにおいて実行可能となる。これにより、ブロックチェーンを用いてサービスを適切に提供することが可能になる。その際、どのサービス提供者がサービスを実行するかを特定するためのサービス提供者情報についても、ブロックチェーン上で管理することが可能になる。
また本実施形態の処理部は、サービス提供処理の内容を決定するための契約内容情報、及び、サービス提供者情報を管理する契約管理プログラムを、ブロックチェーンに登録するためのトランザクションを生成してもよい。
このようにすれば、サービスの具体的な内容と、当該サービスを提供するサービス提供者を適切に対応づけて管理することが可能になる。
また本実施形態のサービス提供処理プログラムは、電子機器のエラー状態の確認処理、及び、電子機器の部品交換の有無の判定処理の少なくとも一方の処理を行う状態確認プログラムを含んでもよい。提供装置の処理部は、状態確認プログラムを、ブロックチェーンに登録するためのトランザクションを生成する。
このようにすれば、ブロックチェーンを用いて、電子機器の修理が必要か否かの確認を行うことが可能になる。
また本実施形態のサービス提供処理プログラムは、契約管理プログラムによって所与のスケジュールに従って起動され、電子機器のエラー状態の確認処理、及び、電子機器の部品交換の有無の判定処理の少なくとも一方の処理を行う状態確認プログラムを含んでもよい。提供装置の処理部は、状態確認プログラムを、ブロックチェーンに登録するためのトランザクションを生成する。
このようにすれば、ブロックチェーンを用いて、電子機器の修理が必要か否かの確認を行うことが可能になる。また、状態確認の実行タイミングを、契約管理プログラムによって管理することが可能になる。
また本実施形態のサービス提供処理プログラムは、状態確認プログラムによって起動され、電子機器の修理手配処理を行うための修理手配処理プログラムを含んでもよい。提供装置の処理部は、修理手配処理プログラムを、ブロックチェーンに登録するためのトランザクションを生成する。
このようにすれば、状態確認結果に基づく修理手配を、ブロックチェーンを用いて行うことが可能になる。
また本実施形態のサービス提供処理プログラムは、サービス提供により発生する費用を含むサービス提供データを、ブロックチェーンに書き込む処理を行う。提供装置の処理部は、ブロックチェーンに書き込まれたサービス提供データに基づいて、課金額を決定する課金処理プログラムをブロックチェーンに登録するためのトランザクションを生成する。
このようにすれば、サービス提供によって発生する費用の課金処理を、ブロックチェーンを用いて行うことが可能になる。
また本実施形態の処理部は、課金処理プログラムによって決定された課金額を、対応する契約アカウントに対して請求する請求プログラムをブロックチェーンに登録するためのトランザクションを生成する。そして請求プログラムは、課金処理プログラムによって起動される。
このようにすれば、ブロックチェーンを用いて課金額を請求すること、及び課金処理プログラムと請求プログラムを連携して動作させることが可能になる。
また本実施形態の処理部は、サービス提供処理プログラムを、スマートコントラクトを用いてブロックチェーンに登録するためのトランザクションを生成してもよい。
このようにすれば、ブロックチェーン技術におけるスマートコントラクトを用いて、サービス提供処理プログラムを提供することが可能になる。
また本実施形態の処理部は、電子機器に関するサービスを提供するサービス提供者を管理するための管理プログラムを、ブロックチェーンに登録するための第1トランザクションを生成し、生成した第1トランザクションを、通信部を介してネットワークに発行してもよい。管理プログラムは、サービス提供者を識別するサービス提供者情報と、サービス提供者によるサービスを提供するためのサービス提供処理プログラムとを対応付けた情報を、ブロックチェーンに登録するための第2トランザクションを生成し、生成した第2トランザクションを、通信部を介してネットワークに発行する。
このようにすれば、サービス提供者を管理するための管理プログラム、及び当該管理プログラムによって管理される情報がブロックチェーンに書き込まれる。サービス提供のための情報の登録処理が可能なるため、ブロックチェーンを利用したサービス提供プラットフォームを適切に構築できる。
また本実施形態の処理システムは、上記のいずれかに記載の提供装置と、電子機器に対応して設けられ、ブロックチェーンからサービス提供処理プログラムを取得してサービス提供処理プログラムを実行する処理装置と、を含む。
このようにすれば、ブロックチェーンを用いてサービスを提供するためのシステムを実現できる。
また本実施形態の処理システムは、上記の提供装置と、電子機器に対応して設けられる処理装置と、を含み、処理装置は、請求プログラムによる請求に対する決済を行う決済プログラムをブロックチェーンに登録するためのトランザクションを生成してもよい。決済プログラムは、ブロックチェーンにおける仮想通貨を用いて決済を行う。
このようにすれば、請求に対する決済処理を、ブロックチェーンを用いて実行することが可能になる。その際、請求を受ける側である処理装置が決済プログラムを登録するための処理を行うことによって、仮想通貨の送金処理を適切に実行することが可能になる。
なお、上記のように本実施形態について詳細に説明したが、本実施形態の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本開示の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語と共に記載された用語は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。また本実施形態及び変形例の全ての組み合わせも、本開示の範囲に含まれる。また提供装置、処理装置、処理システムの構成及び動作等も、本実施形態で説明したものに限定されず、種々の変形実施が可能である。