(57)【要約】【課題】複数のコンピュータにより相互に送受信して記憶される取引に関する情報の信頼性を向上させることを可能とする制御方法等を提供する。【解決手段】本発明は、取引情報を相互に送受信する窓口ノード３及び複数の団体ノード４に、取引情報を含むデータグループが記憶され、窓口ノード３が、取引情報を暗号化して第１暗号値を生成し、検証要求信号を複数の団体ノード４のそれぞれに送信し、複数の団体ノード４のそれぞれが、第１暗号値を復号した第１復号値と、取引情報とを比較することにより検証処理を実行し、第１復号値と取引情報が一致した場合、検証成功信号を窓口ノード３に送信し、窓口ノード３が、複数の団体ノード４のそれぞれから受信した検証成功信号の数に基づいて、データグループに含まれる取引情報が正当であるか否かを判定する。【選択図】図１
2018014567.tif 000002
【特許請求の範囲】
【請求項１】
第１記憶部を有する第１コンピュータと、それぞれ第２記憶部を有する複数の第２コンピュータとを有し、前記第１コンピュータ及び前記複数の第２コンピュータがデータグループに含まれる取引情報を相互に送受信する情報処理システムにおける制御方法であって、
前記第１記憶部及び前記第２記憶部には、前記取引情報を含む前記データグループが記憶され、
前記第１コンピュータが、
前記取引情報を暗号化して第１暗号値を生成し、
前記生成した第１暗号値の検証処理を要求する検証要求信号を前記複数の第２コンピュータのそれぞれに送信し、
前記複数の第２コンピュータのそれぞれが、
前記第１コンピュータから前記検証要求信号を受信した場合、前記第１暗号値を復号した第１復号値と、前記取引情報とを比較することにより前記検証処理を実行し、
前記第１復号値と前記取引情報が一致した場合、検証成功信号を前記第１コンピュータに送信し、
前記第１コンピュータが、前記複数の第２コンピュータのそれぞれから受信した前記検証成功信号の数に基づいて、前記第１記憶部に記憶された前記データグループに含まれる前記取引情報が正当であるか否かを判定する、
ことを特徴とする制御方法。
【請求項２】
前記第１コンピュータが、前記判定において、前記取引情報が正当であると判定した場合、暗号通貨の発行を要求する発行信号又は廃棄を要求する廃棄信号を送信する、請求項１に記載の制御方法。
【請求項３】
前記第１コンピュータが、前記判定において、前記取引情報が正当でないと判定した場合、前記取引情報が正当でない旨を前記複数の第２コンピュータのそれぞれに通知する、請求項１に記載の制御方法。
【請求項４】
前記第１記憶部及び前記第２記憶部に記憶される前記データグループには、前記複数の第２コンピュータを示す情報が含まれ、
前記第２コンピュータが、
前記検証処理の実行において、前記第２コンピュータを示す情報及び前記取引情報を暗号化して第２暗号値を生成し、
前記検証成功信号の送信において、前記第２暗号値を前記検証成功信号に含ませ、
前記第１コンピュータが、前記判定において、前記第２コンピュータから受信した前記検証成功信号に含まれる第２暗号値を復号した第２復号値と、前記第２コンピュータを示す情報及び前記取引情報とが一致する検証成功信号の数に基づいて、前記第１記憶部に記憶された前記データグループに含まれる前記取引情報が正当であるか否かを判定する、請求項１〜３の何れか一項に記載の制御方法。
【請求項５】
前記第１記憶部及び前記第２記憶部に記憶される前記データグループには、前記第１コンピュータの公開鍵が含まれ、
前記第１暗号値は、前記第１コンピュータの秘密鍵で暗号化され、且つ、前記第１コンピュータの公開鍵で復号される、請求項１〜４の何れか一項に記載の制御方法。
【請求項６】
第１コンピュータと複数の第２コンピュータとを有し、前記第１コンピュータ及び前記複数の第２コンピュータがデータグループに含まれる取引情報を相互に送受信する情報処理システムであって、
前記第１コンピュータは、
前記取引情報を含む前記データグループを記憶する第１記憶部と、
前記取引情報を暗号化して第１暗号値を生成する暗号生成部と、
前記生成した第１暗号値の検証処理を要求する検証要求信号を前記複数の第２コンピュータのそれぞれに送信する第１送信部と、を有し、
前記複数の第２コンピュータのそれぞれは、
前記取引情報を含む前記データグループを記憶する第２記憶部と、
前記第１コンピュータから前記検証要求信号を受信した場合、前記第１暗号値を復号した第１復号値と前記取引情報とを比較することにより前記検証処理を実行する検証実行部と、
前記第１復号値と前記取引情報が一致した場合、検証成功信号を前記第１コンピュータに送信する第２送信部と、を有し、
前記第１コンピュータは、前記複数の第２コンピュータのそれぞれから受信した前記検証成功信号の数に基づいて、前記第１記憶部に記憶された前記データグループに含まれる前記取引情報が正当であるか否かを判定する判定部をさらに有する、
ことを特徴とする情報処理システム。
【請求項７】
取引情報を含むデータグループをそれぞれ記憶する複数の第２コンピュータと、前記データグループに含まれる前記取引情報を相互に送受信するコンピュータであって、
前記取引情報を含む前記データグループを記憶する記憶部と、
前記取引情報を暗号化して第１暗号値を生成する暗号生成部と、
前記生成した第１暗号値の検証処理を要求する検証要求信号を前記複数の第２コンピュータのそれぞれに送信する第１送信部と、
前記第１暗号値を復号した第１復号値と、前記複数の第２コンピュータのそれぞれが前記データグループ内に記憶していた前記取引情報とが一致したことにより、前記複数の第２コンピュータのそれぞれから受信した検証成功信号の数に基づいて、前記記憶部に記憶されたデータグループに含まれる前記取引情報が正当であるか否かを判定する判定部と、
を有することを特徴とするコンピュータ。
【請求項８】
記憶部を有し、取引情報を含むデータグループをそれぞれ記憶する複数の第２コンピュータと、前記データグループに含まれる前記取引情報を相互に送受信するコンピュータの制御プログラムであって、
前記取引情報を含む前記データグループを前記記憶部に記憶し、
前記取引情報を暗号化して第１暗号値を生成し、
前記生成した第１暗号値の検証処理を要求する検証要求信号を前記複数の第２コンピュータのそれぞれに送信し、
前記第１暗号値を復号した第１復号値と、前記複数の第２コンピュータのそれぞれが前記データグループ内に記憶していた前記取引情報とが一致したことにより、前記複数の第２コンピュータのそれぞれから受信した検証成功信号の数に基づいて、前記記憶部に記憶されたデータグループに含まれる前記取引情報が正当であるか否かを判定する、
ことを前記コンピュータに実行させることを特徴とする制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ブロックチェーン技術に関する。
【背景技術】
【０００２】
近年、ビットコイン等の暗号通貨を流通させるための技術としてブロックチェーンが利用されている（特許文献１）。
【０００３】
ブロックチェーンでは、Ｐｅｅｒ  ｔｏ  Ｐｅｅｒ（Ｐ２Ｐ）技術を用いて分散型の経済流通が実現される。Ｐ２Ｐ技術を用いたいわゆるＰ２Ｐネットワークに参加する各ノード（通信を行う各コンピュータ）は、取引の記録等をまとめた複数のブロックを時系列順にチェーン状につなげていく。各ブロックには、前のブロックを数学的に要約したハッシュ値が含まれ、各ノードによってそのハッシュ値により各ブロック内のデータに改ざんが行われていないことが確認されることで、取引の記録の正当性が検証される。
【０００４】
あるノードは、取引を実行する際に、取引の記録をＰ２Ｐネットワークに参加する各ノードにブロードキャストし、各ノードは、受け取った取引の記録をブロックに追加する。ブロック内のデータサイズが所定値以上になった場合又は前のブロックが生成されてから一定時間が経過した場合、各ノードはマイニングを実行する。各ノードは、ブロック内のデータの集合に、ナンス（任意の値）を加えて、ハッシュ値を算出する。各ノードは、ナンスを変えながらハッシュ値を算出し、特定のノードが所定の条件に合致したハッシュ値を算出した場合、他のノードは、その算出されたハッシュ値が正しいことを検証する。各ノードによりハッシュ値が正しいことが検証された場合、そのハッシュ値を含む新たなブロックが生成される。ハッシュ値を算出する各ノードは、マイナー（マイニングコンピュータシステム）と呼ばれ、マイナーのうち、所定の条件に合致したハッシュ値を算出したノードには一定の報酬が付与される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許出願公開第２０１６／００２８５５２号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００６】
一般に、ブロックチェーンでは、Ｐ２Ｐネットワークへの参加が制限されておらず、各ノードには、それぞれが記憶しているブロックチェーンへの取引の記録の追加及び更新が許可されている。そのため、悪意を持ったノードの管理者により誤った取引の記録がブロックチェーンに記憶されてしまう場合があり、ブロックチェーンに含まれる取引の記録の信頼性が失われる可能性があった。
【０００７】
本発明は、このような従来の課題を解決すべくなされたものであり、複数のコンピュータが取引に関する情報を相互に送受信して記憶する情報処理システムにおいて、その情報の信頼性を向上させることを可能とする、制御方法、情報処理システム、コンピュータ及び制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明に係る制御方法は、第１記憶部を有する第１コンピュータと、それぞれ第２記憶部を有する複数の第２コンピュータとを有し、第１コンピュータ及び複数の第２コンピュータがデータグループに含まれる取引情報を相互に送受信する情報処理システムにおける制御方法であって、第１記憶部及び第２記憶部には、取引情報を含むデータグループが記憶され、第１コンピュータが、取引情報を暗号化して第１暗号値を生成し、生成した第１暗号値の検証処理を要求する検証要求信号を複数の第２コンピュータのそれぞれに送信し、複数の第２コンピュータのそれぞれが、第１コンピュータから検証要求信号を受信した場合、第１暗号値を復号した第１復号値と、取引情報とを比較することにより検証処理を実行し、第１復号値と取引情報が一致した場合、検証成功信号を第１コンピュータに送信し、第１コンピュータが、複数の第２コンピュータのそれぞれから受信した検証成功信号の数に基づいて、第１記憶部に記憶されたデータグループに含まれる取引情報が正当であるか否かを判定する。
【０００９】
本発明に係る制御方法において、第１コンピュータが、判定において、取引情報が正当であると判定した場合、暗号通貨の発行を要求する発行信号又は廃棄を要求する廃棄信号を送信することが好ましい。
【００１０】
本発明に係る制御方法において、第１コンピュータが、判定において、取引情報が正当でないと判定した場合、取引情報が正当でない旨を複数の第２コンピュータのそれぞれに通知することが好ましい。
【００１１】
本発明に係る制御方法において、第１記憶部及び第２記憶部に記憶されるデータグループには、複数の第２コンピュータを示す情報が含まれ、第２コンピュータが、検証処理の実行において、第２コンピュータを示す情報及び取引情報を暗号化して第２暗号値を生成し、検証成功信号の送信において、第２暗号値を検証成功信号に含ませ、第１コンピュータが、判定において、第２コンピュータから受信した検証成功信号に含まれる第２暗号値を復号した第２復号値と、第２コンピュータを示す情報及び取引情報とが一致する検証成功信号の数に基づいて、第１記憶部に記憶されたデータグループに含まれる取引情報が正当であるか否かを判定することが好ましい。
【００１２】
本発明に係る制御方法において、第１記憶部及び第２記憶部に記憶されるデータグループには、第１コンピュータの公開鍵が含まれ、第１暗号値は、第１コンピュータの秘密鍵で暗号化され、且つ、第１コンピュータの公開鍵で復号されることが好ましい。
【００１３】
本発明に係る情報処理システムにおいて、第１コンピュータと複数の第２コンピュータとを有し、第１コンピュータ及び複数の第２コンピュータがデータグループに含まれる取引情報を相互に送受信する情報処理システムであって、第１コンピュータは、取引情報を含むデータグループを記憶する第１記憶部と、取引情報を暗号化して第１暗号値を生成する暗号生成部と、生成した第１暗号値の検証処理を要求する検証要求信号を複数の第２コンピュータのそれぞれに送信する第１送信部と、を有し、複数の第２コンピュータのそれぞれは、取引情報を含むデータグループを記憶する第２記憶部と、第１コンピュータから検証要求信号を受信した場合、第１暗号値を復号した第１復号値と取引情報とを比較することにより検証処理を実行する検証実行部と、第１復号値と取引情報が一致した場合、検証成功信号を第１コンピュータに送信する第２送信部と、を有し、第１コンピュータは、複数の第２コンピュータのそれぞれから受信した検証成功信号の数に基づいて、第１記憶部に記憶されたデータグループに含まれる取引情報が正当であるか否かを判定する判定部をさらに有する。
【００１４】
本発明に係るコンピュータは、取引情報を含むデータグループをそれぞれ記憶する複数の第２コンピュータと、データグループに含まれる取引情報を相互に送受信するコンピュータであって、取引情報を含むデータグループを記憶する記憶部と、取引情報を暗号化して第１暗号値を生成する暗号生成部と、生成した第１暗号値の検証処理を要求する検証要求信号を複数の第２コンピュータのそれぞれに送信する第１送信部と、第１暗号値を復号した第１復号値と、複数の第２コンピュータのそれぞれがデータグループ内に記憶していた取引情報とが一致したことにより、複数の第２コンピュータのそれぞれから受信した検証成功信号の数に基づいて、記憶部に記憶されたデータグループに含まれる取引情報が正当であるか否かを判定する判定部と、を有する。
【００１５】
本発明に係る制御プログラムは、記憶部を有し、取引情報を含むデータグループをそれぞれ記憶する複数の第２コンピュータと、データグループに含まれる取引情報を相互に送受信するコンピュータの制御プログラムであって、取引情報を含むデータグループを記憶し、取引情報を暗号化して第１暗号値を生成し、生成した第１暗号値の検証処理を要求する検証要求信号を複数の第２コンピュータのそれぞれに送信し、第１暗号値を復号した第１復号値と、複数の第２コンピュータのそれぞれがデータグループ内に記憶していた取引情報とが一致したことにより、複数の第２コンピュータのそれぞれから受信した検証成功信号の数に基づいて、記憶部に記憶されたデータグループに含まれる取引情報が正当であるか否かを判定することをコンピュータに実行させる。
【発明の効果】
【００１６】
本発明に係る制御方法、情報処理システム、コンピュータ及び制御プログラムは、複数のコンピュータが取引に関する情報を相互に送受信して記憶する情報処理システムにおいて、その情報の信頼性を向上させることを可能とする。
【図面の簡単な説明】
【００１７】
【図１】情報処理システム１の処理の一例を示す模式図である。
【図２】情報処理システム１の概略構成の一例を示す図である。
【図３】窓口ノード３の概略構成の一例を示す図である。
【図４】ブロックチェーンの概略構成の一例を示す図である。
【図５】（ａ）〜（ｄ）は、各オブジェクトのデータ構造の一例を示す図である。
【図６】アドレス管理テーブルのデータ構造の一例を示す図である。
【図７】団体ノード４の概略構成の一例を示す図である。
【図８】マイニングノード７の概略構成の一例を示す図である。
【図９】ブロック生成処理のフローチャートである。
【図１０】暗号通貨発行処理に係る動作シーケンスの一例を示す図である。
【図１１】暗号値生成処理のフローチャートである。
【図１２】検証処理のフローチャートである。
【図１３】合意確認処理のフローチャートである。
【図１４】送金オブジェクトのデータ構造の一例を示す図である。
【図１５】暗号通貨廃棄処理に係る動作シーケンスの一例を示す図である。
【図１６】残高確認オブジェクトのデータ構造の一例を示す図である。
【図１７】残高確認処理に係る動作シーケンスの一例を示す図である。
【発明を実施するための形態】
【００１８】
以下、図面を参照しつつ、本発明の様々な実施形態について説明する。ただし、本発明の技術的範囲はそれらの実施形態に限定されず、特許請求の範囲に記載された発明とその均等物に及ぶ点に留意されたい。
【００１９】
図１は、第１の実施形態に従った情報処理システム１の処理の一例を示す模式図である。
【００２０】
情報処理システム１は、寄付者から特定の団体への寄付を管理するシステムである。情報処理システム１は、寄付者装置２、窓口ノード３、複数の団体ノード４及び金融機関サーバ５等を有する。寄付者装置２は、寄付者が使用するコンピュータである。窓口ノード３及び複数の団体ノード４のそれぞれは、金融機関の管理者及び各団体の管理者が使用するコンピュータである。金融機関サーバ５は、金融機関が提供するサーバである。なお、窓口ノード３は、第１コンピュータの一例であり、複数の団体ノード４は、複数の第２コンピュータの一例である。
【００２１】
各ノードは、それぞれデータグループを共有して記憶する。データグループは、例えばブロックチェーンである。ブロックチェーンは、複数のブロックを時系列順につなげたデータである。各ブロックには取引情報が含まれ、あるノードは、自ノードが記憶するブロック内に新たなデータを追加すると、そのデータを、Ｐ２Ｐネットワークを介して他のノードにブロードキャストする。
【００２２】
図１に示す例では、まず、寄付者装置２は、寄付者から特定の団体への寄付データが入力された場合、寄付データの管理を要求するための寄付要求信号をその特定の団体の団体ノード４に送信する（１）。寄付データには、寄付者、被寄付者、寄付額等の情報が含まれる。特定の団体の団体ノード４は、寄付者装置２から寄付要求信号を受信すると、寄付者の銀行口座から特定の団体の銀行口座に寄付額の入金がされたかの確認を要求するための入金確認信号を窓口ノード３に送信する（２）。窓口ノード３は、特定の団体の団体ノード４から入金確認信号を受信すると、特定の団体の金融機関における取引に関する取引情報の取得を要求するための取引情報要求信号を金融機関サーバ５に送信する（３）。金融機関サーバ５は、窓口ノード３から取引情報要求信号を受信すると、取引情報を通知するための取引情報通知信号を窓口ノード３に送信する（４）。取引情報には、金融機関における取引毎に取引番号、取引日時、振込元、振込先、取引金額、口座残高等の情報が含まれる。取引情報通知信号には、取引情報が含まれる。
【００２３】
窓口ノード３は、金融機関サーバ５から取引情報通知信号を受信すると、取引情報通知信号に含まれる取引情報を自ノードが記憶しているブロックに記憶する。窓口ノード３は、取引情報を暗号化して第１暗号値を生成し（５）、第１暗号値をブロックに記憶する。窓口ノード３は、更新した取引情報及び第１暗号値を各ノードにブロードキャストするとともに、複数の団体ノードに取引情報の正当性の検証を要求する検証要求信号を送信する（６）。
【００２４】
一方、取引情報を受信した各ノードは、受信した取引情報及び第１暗号値を自ノードが記憶しているブロックに記憶する。また、各団体ノード４は、窓口ノード３から検証要求信号を受信すると、自ノードが記憶しているブロックに記憶された第１暗号値を復号する（７）。各団体ノード４は、復号した第１復号値と、自ノードが記憶しているブロックに記憶された取引情報とを比較することにより、取引情報の正当性を検証する（８）。第１復号値と取引情報とが一致した場合、各団体ノード４は、検証が成功したことを示す検証成功信号を窓口ノード３に送信する（９）。
【００２５】
窓口ノード３は、各団体ノード４から検証成功信号を受信すると、各団体ノード４から受信した検証成功信号の数が所定数以上であるか否かを判定する（１０）。これにより、窓口ノード３は、取引情報が正当であるか否かを判定する。
【００２６】
このように、窓口ノード３は、取引情報の正当性について複数の団体ノードに検証を要求し、各団体ノードから受信した検証成功信号の数に基づいて、取引情報の正当性を判定する。情報処理システム１は、複数の団体ノードの検証結果に基づいて取引情報の正当性を判定するため、取引情報の信頼性を向上させることができる。
【００２７】
図２は、情報処理システム１の概略構成の一例を示す。
【００２８】
情報処理システム１は、寄付者装置２と、窓口ノード３と、複数の団体ノード４と、金融機関サーバ５と、募金ノード６と、マイニングノード７と、被送金者装置８とを有する。情報処理システム１では、窓口ノード３、複数の団体ノード４、募金ノード６及びマイニングノード７は、それぞれネットワーク９を介して相互に通信可能に接続され、Ｐ２Ｐネットワークを形成する。また、窓口ノード３は、ネットワーク９を介して金融機関サーバ５と通信可能に接続される。寄付者装置２及び被送金者装置８は、それぞれネットワーク９を介して各団体ノード４に接続されている。
【００２９】
寄付者装置２は、寄付者が使用するコンピュータであり、例えばパーソナルコンピュータである。
【００３０】
金融機関サーバ５は、金融機関が提供するサーバである。
【００３１】
募金ノード６は、情報処理システム１で使用される暗号通貨を管理するコンピュータである。
【００３２】
被送金者装置８は、寄付者により寄付された寄付金を受け取る被送金者が使用するコンピュータであり、例えばパーソナルコンピュータである。
【００３３】
図３は、窓口ノード３の概略構成の一例を示す図である。
【００３４】
窓口ノード３は、金融機関の管理者が使用するコンピュータである。窓口ノード３は、第１記憶部３１と、第１通信部３２と、第１処理部３３とを有する。
【００３５】
第１記憶部３１は、例えば、半導体メモリ、磁気ディスク装置、及び光ディスク装置の内の少なくとも一つを有する。第１記憶部３１は、第１処理部３３による処理に用いられるプログラム（ドライバプログラム、オペレーティングシステムプログラム、アプリケーションプログラム等）、データ等を記憶する。コンピュータプログラムは、例えばＣＤ−ＲＯＭ（compact disk read only memory）、ＤＶＤ−ＲＯＭ（digital versatile disk read only memory）等のコンピュータ読み取り可能な可搬型記録媒体から、公知のセットアッププログラム等を用いて第１記憶部３１にインストールされてもよい。また、コンピュータプログラムは、クラウドサービスから提供され、インストールされてもよい。第１記憶部３１は、データとして、情報処理システム１で共有されるブロックチェーン、ブロックチェーンに含まれる各データが格納されたアドレスを示すアドレステーブル及び窓口ノード３の秘密鍵等を記憶する。
【００３６】
第１通信部３２は、窓口ノード３をネットワーク９に接続するための通信インターフェース回路を有する。第１通信部３２は、外部の各装置から受信したデータを第１処理部３３に供給し、第１処理部３３から受信したデータを外部の各装置に送信する。
【００３７】
第１処理部３３は、一又は複数個のプロセッサ又はその周辺回路を有する。第１処理部３３は、窓口ノード３の全体的な動作を統括的に制御するものであり、例えば、ＣＰＵ（Central Processing Unit）である。第１処理部３３は、窓口ノード３の各種処理が第１記憶部３１に記憶されているプログラム等に応じて適切な手順で実行されるように、第１通信部３２等の動作を制御する。また、第１処理部３３は、複数のプログラムを並列に実行できる。
【００３８】
第１処理部３３は、第１暗号値生成部３３１と、第１送信部３３２と、判定部３３３とを有する。第１処理部３３が有するこれらの各部は、第１処理部３３が有するプロセッサ上で実行されるプログラムによって実装される機能モジュールである。あるいは、これらの各部は、独立した集積回路、マイクロプロセッサ又はファームウェアとして窓口ノード３に実装されてもよい。
【００３９】
図４は、第１記憶部３１に記憶されるブロックチェーンに含まれるブロックのデータ構造の一例を示す図である。
【００４０】
図４に示すように、ブロックチェーンは、複数のブロックがチェーン状につながれることにより形成される。各ブロックには、ハッシュ、オブジェクト及びトランザクション等が含まれる。ハッシュは、１つ前のブロックについて算出されたハッシュ値である。オブジェクトは、団体オブジェクト、寄付オブジェクト、入出金オブジェクト及び暗号通貨オブジェクト等の各種オブジェクトを含む。各オブジェクトの詳細については後述する。トランザクションには、各オブジェクトに含まれるデータを識別するための識別情報と、ノードの公開鍵とが関連付けて記憶される。
【００４１】
図５（ａ）〜（ｄ）は、各ブロックに含まれるオブジェクトのデータ構造の一例を示す図である。
【００４２】
図５（ａ）〜（ｄ）に示すように、各オブジェクトには、メソッドとデータとが含まれる。メソッドは、第１処理部３３に特定の処理を実行させるためのプログラムである。データには、メソッドの実行により取得された実行結果等が記憶される。
【００４３】
図５（ａ）は、団体オブジェクトのデータ構造の一例を示す図である。
【００４４】
団体オブジェクトには、団体メソッド及び複数の団体データが含まれる。団体メソッドは、各団体ノードのアドレスを取得するためのプログラムである。各団体データには、各団体ノードのアドレスが含まれる。
【００４５】
図５（ｂ）は、寄付オブジェクトのデータ構造の一例を示す図である。
【００４６】
寄付オブジェクトには、寄付メソッド及び複数の寄付データが含まれる。寄付メソッドは、寄付データを管理するためのプログラムである。寄付データには、寄付者、被寄付者、寄付額及び暗号通貨情報等を示す情報が含まれる。暗号通貨情報には、暗号通貨の発行額又は廃棄額が含まれる。
【００４７】
図５（ｃ）は、入出金オブジェクトのデータ構造の一例を示す図である。
【００４８】
入出金オブジェクトには、入出金メソッド及び複数の入出金データが含まれる。入出金メソッドは、入出金データを管理するためのプログラムである。入出金データには、入出金予定情報、取引情報、入出金確認情報、第１暗号値、選出団体ノードアドレス、第２暗号値、タイムスタンプの日時、検証結果及び暗号通貨情報等の各情報が含まれる。入出金確認情報は、特定の団体の銀行口座において入出金がされたことを示す情報である。選出団体ノードアドレスは、窓口ノード３により選出された団体ノードのアドレスである。タイムスタンプは、窓口ノード３の合意確認処理の実行により取引情報が正当であると判定された時刻を示す文字列である。検証結果は、後述する合意確認処理における判定結果である。
【００４９】
図５（ｄ）は、暗号通貨オブジェクトのデータ構造の一例を示す図である。
【００５０】
暗号通貨オブジェクトには、暗号通貨オブジェクト及び複数の暗号通貨データが含まれる。暗号通貨メソッドは、暗号通貨データを管理するためのプログラムである。暗号通貨データには、暗号通貨情報が含まれる。
【００５１】
図６は、第１記憶部３１に記憶されるブロックチェーンに含まれる特定のデータが格納されたアドレスを示すアドレステーブルである。
【００５２】
図６に示すように、アドレステーブルには、データ毎に、各データを示すデータ識別情報と、各データのデータ領域のアドレスとが関連付けて記憶されている。
【００５３】
図７は、団体ノード４の概略構成の一例を示す図である。
【００５４】
団体ノード４は、団体の管理者が使用するコンピュータである。団体ノード４は、第２記憶部４１と、第２通信部４２と、第２処理部４３とを有する。
【００５５】
第２記憶部４１は、例えば、半導体メモリ、磁気ディスク装置、及び光ディスク装置の内の少なくとも一つを有する。第２記憶部４１は、第２処理部４３による処理に用いられるプログラム、データ等を記憶する。コンピュータプログラムは、例えばＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ等のコンピュータ読み取り可能な可搬型記録媒体から、公知のセットアッププログラム等を用いて第２記憶部４１にインストールされてもよい。また、コンピュータプログラムは、クラウドサービスから提供され、インストールされてもよい。第２記憶部４１は、データとして、情報処理システム１で共有される図４、５（ａ）〜（ｄ）に示したブロックチェーン及びブロックチェーンに含まれる各データと、図６に示したアドレステーブル等を記憶する。
【００５６】
第２通信部４２は、団体ノード４をネットワーク９に接続するための通信インターフェース回路を有する。第２通信部４２は、外部の各装置から受信したデータを第２処理部４３に供給し、第２処理部４３から受信したデータを外部の各装置に送信する。
【００５７】
第２処理部４３は、一又は複数個のプロセッサ又はその周辺回路を有する。第２処理部４３は、団体ノード４の全体的な動作を統括的に制御するものであり、例えば、ＣＰＵである。第２処理部４３は、団体ノード４の各種処理が第２記憶部４１に記憶されているプログラム等に応じて適切な手順で実行されるように、第２通信部４２等の動作を制御する。また、第２処理部４３は、複数のプログラムを並列に実行できる。
【００５８】
第２処理部４３は、検証実行部４３１と、第２暗号値生成部４３２と、第２送信部４３３とを有する。第２処理部４３が有するこれらの各部は、第２処理部４３が有するプロセッサ上で実行されるプログラムによって実装される機能モジュールである。あるいは、これらの各部は、独立した集積回路、マイクロプロセッサ又はファームウェアとして団体ノード４に実装されてもよい。
【００５９】
図８は、マイニングノード７の概略構成の一例を示す図である。
【００６０】
マイニングノード７は、マイニングを実行してブロックを生成するコンピュータである。マイニングノード７は、第３記憶部７１と、第３通信部７２と、第３処理部７３とを有する。
【００６１】
第３記憶部７１は、例えば、半導体メモリ、磁気ディスク装置、及び光ディスク装置の内の少なくとも一つを有する。第３記憶部７１は、第３処理部７３による処理に用いられるプログラム、データ等を記憶する。コンピュータプログラムは、例えばＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ等のコンピュータ読み取り可能な可搬型記録媒体から、公知のセットアッププログラム等を用いて第３記憶部７１にインストールされてもよい。また、コンピュータプログラムは、クラウドサービスから提供され、インストールされてもよい。第３記憶部７１は、データとして、情報処理システム１で共有される図４、５（ａ）〜（ｄ）に示したブロックチェーン及びブロックチェーンに含まれる各データと、図６に示したアドレステーブル等を記憶する。
【００６２】
第３通信部７２は、マイニングノード７をネットワーク９に接続するための通信インターフェース回路を有する。第３通信部７２は、外部の各装置から受信したデータを第３処理部７３に供給し、第３処理部７３から受信したデータを外部の各装置に送信する。
【００６３】
第３処理部７３は、一又は複数個のプロセッサ又はその周辺回路を有する。第３処理部７３は、マイニングノード７の全体的な動作を統括的に制御するものであり、例えば、ＣＰＵである。第３処理部７３は、マイニングノード７の各種処理が第３記憶部７１に記憶されているプログラム等に応じて適切な手順で実行されるように、第３通信部７２等の動作を制御する。
【００６４】
図９は、ブロック生成処理のフローチャートである。
【００６５】
以下に説明するブロック生成処理は、マイニングノード７の第３記憶部７１に記憶されているプログラムに基づいて、主に第３処理部７３により、マイニングノード７の各要素と協働して実行される。
【００６６】
最初に、第３処理部７３は、第３記憶部７１に記憶されているブロックチェーンの最後尾のブロックについて、ブロック内のデータサイズが所定値以上か否かを判定する（ステップＳ１０１）。
【００６７】
次に、ブロック内のデータサイズが所定値以上であった場合（ステップＳ１０１：ＹＥＳ）、第３処理部７３は、新たなブロックを生成し（ステップＳ１０２）、処理をステップＳ１０１に戻す。第３処理部７３は、新たなブロックを生成するためにマイニングを実行する。第３処理部７３は、取引情報等を含む１つ前のブロックについて、ナンス（任意の値）を加えて、ハッシュ値を算出する。第３処理部７３は、Ｐｒｏｏｆ  Ｏｆ  Ｗｏｒｋ（ＰｏＷ）によりハッシュ値を算出する。なお、第３処理部７３は、Ｐｒｏｏｆ  Ｏｆ  Ｓｔａｋｅ（ＰｏＳ）又はＰｒｏｏｆ  Ｏｆ  Ｉｍｐｏｒｔａｎｃｅ（ＰｏＩ）等によりハッシュ値を算出してもよい。第３処理部７３は、ナンスを変えながらハッシュ値を算出し、所定の条件に合致したハッシュ値を算出した場合、その算出されたハッシュ値を他のノードにブロードキャストし、そのハッシュ値が正しいことについての検証を他のノードに要求する。他のノードによりそのハッシュ値が正しいことが検証された場合、そのハッシュ値を含む新たなブロックが生成される。マイニングの実行は、例えば、イーサリアム等の分散型アプリケーション・プラットフォームを用いて実現される。なお、マイニングの実行は、上記の例に限定されず、公知の任意の合意形成アルゴリズムを用いて実現されてもよい。
【００６８】
一方、ブロック内のデータサイズが所定値以上でなかった場合（ステップＳ１０１：ＮＯ）、第３処理部７３は、ブロックが生成されてから一定時間が経過しているか否かを判定する（ステップＳ１０３）。
【００６９】
一定時間が経過していた場合（ステップＳ１０２：ＹＥＳ）、第３処理部７３は、新たなブロックを生成し（ステップＳ１０３）、処理をステップＳ１０１に戻す。
【００７０】
一定時間が経過していない場合（ステップＳ１０２：ＮＯ）、第３処理部７３は、処理をステップＳ１０１に戻す。
【００７１】
図１０は、情報処理システム１による暗号通貨発行処理の一例を説明するための動作シーケンスの一例である。
【００７２】
以下に説明する動作シーケンスは、予め第１記憶部３１及び第２記憶部４１に記憶されているプログラムに基づいて、主に第１処理部３３及び第２処理部４３により、窓口ノード３及び団体ノード４の各要素と協働して実行される。なお、以下に説明する動作シーケンスは、ブロックチェーン内のオブジェクトに予め記録されているメソッドに従って、実行される。
【００７３】
最初に、寄付者から被寄付者である特定の団体への寄付データが入力された場合、寄付者装置２は、寄付データの管理を要求するための寄付要求信号を特定の団体ノード４に送信する（ステップＳ２０１）。寄付者により入力される寄付データには、寄付者、被寄付者、寄付額等の情報が含まれる。寄付要求信号には、入力された各情報が含まれる。
【００７４】
次に、特定の団体の団体ノード４の第２処理部４３は、第２通信部４２を介して寄付要求信号を受信すると、寄付オブジェクトに寄付データを生成し（ステップＳ２０２）、寄付要求信号に含まれる各情報を、生成した寄付データのデータ領域に書込む。第２処理部４３は、生成した寄付データを第２通信部４２を介して各ノードにブロードキャストし、各ノードは、受信した寄付データを各ノードが記憶しているブロックチェーンに記憶する。
【００７５】
次に、第２処理部４３は、寄付者の銀行口座から特定の団体の銀行口座に寄付額の入金がされたかの確認を要求するための入金確認信号を第２通信部４２を介して窓口ノード３に送信する（ステップＳ２０３）。入金確認信号には、寄付者、被寄付者、寄付額等の情報が含まれる。
【００７６】
次に、窓口ノード３の第１処理部３３は、第１通信部３２を介して入金確認信号を受信すると、入出金オブジェクトに入出金データを生成し（ステップＳ２０４）、入金確認信号に含まれる各情報を生成した入出金データのデータ領域に書込む。
【００７７】
入金確認信号に含まれる寄付者、被寄付者及び寄付額を示す各情報は、それぞれ、入出金予定情報において入金者、被入金者及び入金予定額として書込まれる。また、第１処理部３３は、生成した入出金データの識別情報とアドレスを関連付けてアドレステーブルに書き込む。さらに、第１処理部３３は、生成した入出金データの識別情報と、窓口ノード３の公開鍵を関連付けてトランザクションとして記憶する。第１処理部３３は、生成した入出金データ及びトランザクションを第１通信部３２を介して各ノードにブロードキャストする。各ノードは、受信した入出金データ及びトランザクションを各ノードが記憶しているブロックチェーンに記憶するとともに、各ノードが記憶しているアドレステーブルを更新する。
【００７８】
次に、第１処理部３３は、第１通信部３２を介して金融機関サーバ５に取引情報要求信号を送信する（ステップＳ２０５）。取引情報要求信号には、被入金者を示す情報が含まれる。
【００７９】
次に、金融機関サーバ５は、取引情報要求信号を受信すると、受信した取引情報要求信号において指定された被入金者に関する取引情報を抽出し、抽出した取引情報を含む取引情報通知信号を窓口ノード３に送信する（ステップＳ２０６）。取引情報には、被入金者の金融機関における各取引毎の取引番号、取引日時、振込元、振込先、取引金額、口座残高等の情報が含まれる。
【００８０】
次に、窓口ノード３の第１処理部３３は、取引情報通知信号を第１通信部３２を介して受信すると、取引情報通知信号に含まれる取引情報をステップＳ２０４で生成した入出金データのデータ領域に書込む（ステップＳ２０７）。
【００８１】
第１処理部３３は、取引情報に基づいて、寄付者の銀行口座から特定の団体の銀行口座に寄付額が入金されたか否かを判定する。第１処理部３３は、入出金データとして記憶されている入出金予定情報と、取引情報通知信号に含まれる取引情報とを比較する。第１処理部３３は、入出金予定情報に含まれる入金者、被入金者及び入金予定額と、取引情報に含まれる振込元、振込先及び取引金額とがそれぞれ一致した場合に、入金されたと判定する。第１処理部３３は、入金されたと判定した場合、入出金データのデータ領域に、寄付者の銀行口座から特定の団体の銀行口座に寄付額の入金がされたことを示す入出金確認情報を書込む。第１処理部３３は、更新された入出金データを第１通信部３２を介して各ノードにブロードキャストし、各ノードは、受信した入出金データを各ノードが記憶しているブロックチェーンに記憶する。なお、寄付者の銀行口座から特定の団体の銀行口座に寄付額が入金されていないと判定した場合、第１処理部３３は、一定期間、再度ステップＳ２０５〜Ｓ２０７の処理を繰り返してもよい。
【００８２】
次に、第１暗号値生成部３３１は、後述するステップＳ２１０の検証処理において使用する第１暗号値を生成するための暗号値生成処理を実行する（ステップＳ２０８）。暗号値生成処理の詳細については後述する。
【００８３】
次に、第１送信部３３２は、生成した第１暗号値の検証処理を要求する検証要求信号を第１通信部３２を介して複数の団体ノード４のそれぞれに送信する（ステップＳ２０９）。検証要求信号には、第１暗号値及び対応する入出金データの識別情報が含まれる。
【００８４】
検証要求信号が送信される複数の団体ノード４は、例えば、比例分配法等により選出される。各団体ノード４には、法人格の有無又は団体の所在地等の属性が予め設定され、第１送信部３３２は、各属性を有する団体ノード４が選出される比率が、各属性を有する団体ノード４が存在する比率と同一になるように、団体ノードを選出する。第１送信部３３２は、比例分配法を用いて団体ノード４を選出することにより、検証者として選出される団体に偏りが生じることを防止できる。
【００８５】
次に、各団体ノード４の検証実行部４３１は、検証要求信号を受信した場合、第１暗号値の検証処理を実行する（ステップＳ２１０）。検証処理は、第１暗号値を復号した第１復号値と、各団体ノード４がブロックチェーンに記憶している取引情報とを比較することにより実行される。検証処理の詳細については後述する。
【００８６】
各団体ノード４の第２送信部４３３は、検証処理において第１復号値と、各団体ノード４がブロックチェーンに記憶している取引情報が一致した場合、検証が成功したことを示す検証成功信号を第２通信部４２を介して窓口ノード３に送信する（ステップＳ２１１）。検証成功信号には、検証処理において生成された第２暗号値及び検証した入出金データの識別情報等が含まれる。
【００８７】
次に、窓口ノード３の第１処理部３３が第１通信部３２を介して各団体ノード４から検証成功信号を受信すると、判定部３３３は、合意確認処理を実行する（ステップＳ２１２）。なお、判定部３３３は、各団体ノード４から検証成功信号を受信するたびに合意確認処理を実行する。合意確認処理の詳細については後述する。判定部３３３は、合意確認処理の実行により取引情報が正当であると判定した場合、検証成功信号において指定された入出金データのデータ領域に取引情報の正当性が証明されたことを示すタイムスタンプを記憶する。また、判定部３３３は、合意確認処理における検証結果を、対応する入出金データのデータ領域に書込む。判定部３３３は、更新された入出金データを第１通信部３２を介して各ノードにブロードキャストし、各ノードは、受信した入出金データを各ノードが記憶しているブロックチェーンに記憶する。
【００８８】
以下のステップＳ２１３〜Ｓ２１８の処理は、ステップＳ２０７で寄付者の銀行口座から特定の団体の銀行口座に寄付額が入金されたと判定された場合に限り実行される。
【００８９】
判定部３３３は、合意確認処理において取引情報が正当であると判定した場合、第１通信部３２を介して募金ノード６に暗号通貨の発行信号を送信する（ステップＳ２１３）。発行信号は、暗号通貨の発行を要求する信号であり、発行信号には、入金された寄付額と同額の取引金額及び対応する入出金データの識別情報等の各情報が含まれる。
【００９０】
次に、募金ノード６は、窓口ノード３から発行信号を受信すると、発行信号に含まれる取引金額に相当する暗号通貨の発行額を算出する。暗号通貨の発行額は、固定レート又は取引所若しくは販売所等のレートを適用して算出される。募金ノード６は、暗号通貨データを生成し（ステップＳ２１４）、生成した暗号通貨データのデータ領域に、暗号通貨情報として、算出した発行額を示す情報を書き込む。募金ノード６は、生成した暗号通貨データを各ノードにブロードキャストし、各ノードは、受信した暗号通貨データを各ノードが記憶しているブロックチェーンに記憶する。
【００９１】
次に、募金ノード６は、発行結果信号を窓口ノード３に送信する（ステップＳ２１５）。発行結果信号には、暗号通貨情報及び発行信号に含まれていた入出金データの識別情報等が含まれる。
【００９２】
次に、窓口ノード３の第１処理部３３は、第１通信部３２を介して発行結果信号を受信すると、発行結果信号において指定された入出金データのデータ領域に暗号通貨情報を書込む（ステップＳ２１６）。第１処理部３３は、第１通信部３２を介して更新した入出金データを各ノードにブロードキャストし、各ノードは、受信した入出金データを各ノードが記憶しているブロックチェーンに記憶する。
【００９３】
次に、第１処理部３３は、第１通信部３２を介して入金結果信号を特定の団体ノード４に送信する（ステップＳ２１７）。入金結果信号は、寄付者の銀行口座から特定の団体の銀行口座に寄付額の入金がされ、暗号通貨が発行されたことを示し、入金結果信号には、暗号通貨情報等が含まれる。
【００９４】
次に、特定の団体ノード４の第２処理部４３は、第２通信部４２を介して入金結果信号を受信すると、入金結果信号に含まれる暗号通貨情報を、ステップＳ２０２で生成していた寄付データのデータ領域に書込む（ステップＳ２１８）。以上により、暗号通貨の発行処理は終了する。
【００９５】
図１１は、暗号値の生成処理の動作の例を示すフローチャートである。暗号値の生成処理は、図１０に示す動作シーケンスのステップＳ２０８において、窓口ノード３により実行される。
【００９６】
最初に、第１暗号値生成部３３１は、図１０のステップＳ２０４で生成した入出金データに含まれる取引情報から最新の口座残高及びその直前の口座残高を取得する（ステップＳ３０１）。
【００９７】
次に、第１暗号値生成部３３１は、最新の口座残高と直前の口座残高との差分値を算出する（ステップＳ３０２）。
【００９８】
次に、第１暗号値生成部３３１は、窓口ノード３の秘密鍵で差分値を暗号化することにより、第１暗号値を生成する（ステップＳ３０３）。即ち、第１暗号値は、取引情報を暗号化した値である。
【００９９】
第１暗号値生成部３３１は、第一暗号値を図１０のステップＳ２０４で生成した入出金データに書込み（ステップＳ３０４）、一連のステップを終了する。なお、第１暗号値生成部３３１は、更新された入出金データを第１通信部３２を介して各ノードにブロードキャストし、各ノードは、受信した入出金データを各ノードが記憶しているブロックチェーンに記憶する。
【０１００】
図１２は、検証処理の動作の例を示すフローチャートである。検証処理は、図１０に示す動作シーケンスのステップＳ２１０において、各団体ノード４により実行される。
【０１０１】
最初に、検証実行部４３１は、自ノードが記憶しているトランザクションから、受信した検証要求信号に含まれる入出金データの識別情報に関連付けられている公開鍵を取得する（ステップＳ４０１）。この公開鍵は、その入出金データを生成した窓口ノード３の公開鍵である。
【０１０２】
次に、検証実行部４３１は、受信した検証要求信号に含まれる第１暗号値を取得した公開鍵で復号する（ステップＳ４０２）。
【０１０３】
次に、検証実行部４３１は、自ノードが記憶している入出金オブジェクトから、受信した検証要求信号において指定された入出金データを抽出し、抽出した入出金データに含まれる取引情報から最新の口座残高及びその直前の口座残高を取得する（ステップＳ４０３）。
【０１０４】
次に、検証実行部４３１は、最新の口座残高と直前の口座残高との差分値を算出する（ステップＳ４０４）。
【０１０５】
次に、検証実行部４３１は、算出した差分値が第１復号値と一致するか否かを判定する（ステップＳ４０５）。
【０１０６】
差分値と第１復号値が一致した場合（ステップＳ４０５：ＹＥＳ）、検証実行部４３１は、差分値、入出金データの識別情報及び団体ノードアドレスを窓口ノード３の公開鍵で暗号化し、第２暗号値を生成する（ステップＳ４０６）。
【０１０７】
次に、検証実行部４３１は、検証要求信号において指定された入出金データのデータ領域に第２暗号値を書込み（ステップＳ４０７）、一連のステップを終了する。この場合、図１０のステップＳ２１１において、検証成功信号が送信される。
【０１０８】
一方、差分値と第１復号値とが一致しない場合（ステップＳ４０５：ＮＯ）、検証実行部４３１は、特に処理を行わず、一連のステップを終了する。この場合、図１０のステップＳ２１１において、検証成功信号は送信されない。
【０１０９】
図１３は、合意確認処理の動作の例を示すフローチャートである。合意確認処理は、図１０に示す動作シーケンスのステップＳ２１２において、窓口ノード３により実行される。
【０１１０】
最初に、判定部３３３は、受信した検証成功信号から第２暗号値を取得する（ステップＳ５０１）。
【０１１１】
次に、判定部３３３は、窓口ノード３の秘密鍵で第２暗号値を復号し、第２復号値を生成する（ステップＳ５０２）。第２暗号値を復号した第２復号値は、最新の口座残高と直前の口座残高との差分値、入出金データの識別情報及び団体ノードアドレスである。
【０１１２】
判定部３３３は、受信した検証成功信号において指定された入出金データを抽出し、抽出した取引情報から最新の口座残高及びその直前の口座残高を取得する（ステップＳ５０３）。
【０１１３】
次に、判定部３３３は、最新の口座残高と直前の口座残高との差分値を算出する（ステップＳ５０４）。
【０１１４】
次に、判定部３３３は、算出した差分値が第２復号値に含まれる差分値と一致するか否かを判定する（ステップＳ５０５）。
【０１１５】
算出した差分値が第２復号値に含まれる差分値と一致した場合（ステップＳ５０５：ＹＥＳ）、判定部３３３は、正しい検証成功信号を受信した数を示すカウンタをインクリメントする（ステップＳ５０６）。なお、判定部３３３は、第２復号値に含まれる入出金データの識別情報が、検証成功信号に含まれる入出金データの識別情報と一致し、且つ第２復号値に含まれる団体ノードアドレスが検証成功信号を送信した団体ノードのアドレスである場合に限り、カウンタをインクリメントしてもよい。これにより、検証が成功したことの信頼性をより向上させることができる。
【０１１６】
算出した差分値が第２復号値に含まれる差分値と一致しない場合（ステップＳ５０５：ＮＯ）、判定部３３３は、特に処理を行わず、一連のステップを終了する。
【０１１７】
次に、判定部３３３は、カウンタが所定値以上であるか否かを判定する（Ｓ５０７）。
【０１１８】
カウンタが所定値以上である場合（ステップＳ５０６：ＹＥＳ）、判定部３３３は、取引情報が正当であると判定し（ステップＳ５０７）、一連のステップを終了する。この場合、図１０のステップＳ２１３において、発行信号が送信される。
【０１１９】
一方、カウンタが所定値未満である場合（ステップＳ５０７：ＮＯ）、判定部３３３は、特に処理を行わず、一連のステップを終了する。この場合は、まだ発行信号は送信されない。なお、判定部３３３は、検証要求信号を送信してから一定期間経過しても、カウンタが所定値以上にならない場合、取引情報が正当でないと判定する。判定部３３３は、取引情報が正当でないと判定し、取引情報が正当でない旨を複数の団体ノード４のそれぞれに通知してもよい。
【０１２０】
このように、窓口ノード３の判定部３３３は、各団体ノード４の検証実行部４３１により暗号化された情報を用いて、検証が成功したか否かを判定することにより、検証が成功したことの信頼性を向上させることができる。なお、検証実行部４３１は第２暗号値を生成せず、判定部３３３は、ステップＳ５０１〜Ｓ５０５の処理を省略して、検証成功信号を受信した場合にカウンタをインクリメントしてもよい。この場合、検証実行部４３１は検証処理を短時間に実行し、判定部３３３は合意確認処理を短時間に実行することができる。
【０１２１】
以上説明したように、窓口ノード３は、取引情報の正当性について複数の団体ノードに検証を要求し、各団体ノードから受信した検証成功信号の数に基づいて、取引情報の正当性を判定する。情報処理システム１は、複数の団体ノードの検証結果に基づいて取引情報の正当性を判定するため、取引情報の信頼性を向上させることができる。
【０１２２】
また、情報処理システム１は、マイニングノード７によるブロック単位でのマイニングによる検証に加えて、複数の団体ノード４によるデータ単位での検証を二重に実行する。情報処理システム１は、ブロック単位でのマイニングによる検証と、ブロック内の特定のデータについての検証をそれぞれ実行するため、個別のデータの信頼性を向上させることができる。また、Ｐ２Ｐネットワークへの参加が制限されていないブロックチェーンにおいて、悪意を持ったノードの管理者により取引の記録が改ざんされた場合であっても、情報処理システム１は、改ざんされたことを適切に検出することができる。
【０１２３】
また、情報処理システム１は、取引情報の検証をコンピュータの処理により自動的に実行する。これにより、情報処理システム１は、取引情報の改ざん及び人為的ミスによる取引情報の不整合を防ぐことができ、取引情報の信頼性を向上させることができる。
【０１２４】
また、情報処理システム１は、適切に検証された信頼性の高い取引情報に基づいて、暗号通貨を発行することができ、暗号通貨自体の信頼性を向上させることもできる。
【０１２５】
また、既存の暗号通貨基盤では、寄付者による金融機関口座への入金確認は、取引所又は販売所等のサービス提供者によって行われており、時間を要する場合があった。そのため、寄付者が、法定通貨を金融機関口座に入金してから暗号通貨が発行されるまでの間に、法定通貨及び暗号通貨の価値が大きく変動する可能性があった。一方、情報処理システム１は、寄付者により寄付データが入力されてから暗号通貨が発行されるまでの一連の処理を自動で行うため、法定通貨及び暗号通貨の価値の変動リスクを抑えることができる。
【０１２６】
また、情報処理システム１は、既存のブロックチェーン基盤上で実現されるため、容易に実装することができる。
【０１２７】
（第２の実施形態）
本実施形態では、情報処理システム１は、暗号通貨の発行処理に代えて、暗号通貨の廃棄処理を実行する。第２の実施形態における情報処理システム１の構成は、第１の実施形態における情報処理システム１と同様であるため、詳細な説明を省略し、第１の実施形態と異なる点についてのみ説明する。
【０１２８】
図１４は、各ノードの記憶部に記憶される送金オブジェクトのデータ構造の一例を示す図である。
【０１２９】
送金オブジェクトには、送金メソッド及び複数の送金データが含まれる。送金メソッドは、送金データを管理するプログラムである。送金データには、被送金者、送金者、送金額及び暗号通貨情報の情報等が含まれる。
【０１３０】
図１５は、情報処理システム１による暗号通貨廃棄処理の一例を説明するための動作シーケンスの一例である。
【０１３１】
以下に説明する動作シーケンスは、予め第１記憶部３１及び第２記憶部４１に記憶されているプログラムに基づいて、主に第１処理部３３及び第２処理部４３により、窓口ノード３及び団体ノード４の各要素と協働して実行される。なお、以下に説明する動作シーケンスは、ブロックチェーン内のオブジェクトに予め記録されているメソッドに従って、実行される。
【０１３２】
最初に、送金者である特定の団体から被送金者への送金データが入力された場合、被送金者装置８は、送金データの管理を要求するための送金要求信号を特定の団体の団体ノード４に送信する（ステップＳ６０１）。被送金者により入力される送金データには、被送金者、送金者、送金額等の情報が含まれる。送金要求信号には、入力された各情報が含まれる。
【０１３３】
次に、特定の団体の団体ノード４の第２処理部４３は、第２通信部４２を介して送金要求信号を受信すると、送金オブジェクトに送金データを生成し（ステップＳ６０２）、送金要求信号に含まれる各情報を、生成した送金データのデータ領域に書込む。第２処理部４３は、生成した送金データを第２通信部４２を介して各ノードにブロードキャストし、各ノードは、受信した送金データを各ノードが記憶しているブロックチェーンに記憶する。
【０１３４】
次に、第２処理部４３は、特定の団体の銀行口座から被送金者の銀行口座に送金額の出金がされたかの確認を要求するための出金確認信号を第２通信部４２を介して窓口ノード３に送信する（ステップＳ６０３）。出金確認信号には、被送金者、送金者、送金額等の情報が含まれる。
【０１３５】
次に、窓口ノード３の第１処理部３３は、第１通信部３２を介して出金確認信号を受信すると、入出金オブジェクトに入出金データを生成し（ステップＳ６０４）、出金確認信号に含まれる各情報を生成した入出金データのデータ領域に書込む。
【０１３６】
出金確認信号に含まれる被送金者、送金者及び送金額を示す各情報は、それぞれ、入出金予定情報において出金者、被出金者及び出金予定額として書込まれる。窓口ノード３及び他の各ノードは、図１０のステップＳ２０４と同様にして、生成された入出金データ及びトランザクションを共有する。
【０１３７】
次に、第１処理部３３は、第１通信部３２を介して金融機関サーバ５に取引情報要求信号を送信する（ステップＳ６０５）。取引情報要求信号には、出金者を示す情報が含まれる。
【０１３８】
次に、金融機関サーバ５は、取引情報要求信号を受信すると、受信した取引情報要求信号において指定された出金者に関する取引情報を抽出し、抽出した取引情報含む取引情報通知信号を窓口ノード３に送信する（ステップＳ６０６）。取引情報には、出金者の金融機関における各取引毎の取引番号、取引日時、取引金額、振込元、振込先、口座残高が含まれる。
【０１３９】
次に、窓口ノード３の第１処理部３３は、取引情報通知信号を第１通信部３２を介して受信すると、取引情報通知信号に含まれる取引情報をステップＳ６０４で生成した入出金データのデータ領域に書込む（ステップＳ６０７）。
【０１４０】
第１処理部３３は、図１０のステップＳ６０７と同様にして、取引情報に基づいて、送金者の銀行口座から被送金者の銀行口座に送金額が出金されたか否かを判定する。第１処理部３３は、出金されたと判定した場合、入出金データのデータ領域に、送金者の銀行口座から被送金者の銀行口座に送金額の出金がされたことを示す入出金確認情報を書込む。窓口ノード３及び他の各ノードは、図１０のステップＳ２０７と同様にして、更新された入出金データを共有する。なお、送金者の銀行口座から被送金者の銀行口座に送金額が出金されていないと判定した場合、第１処理部３３は、一定期間、再度ステップＳ６０５〜Ｓ６０７の処理を繰り返してもよい。
【０１４１】
ステップＳ６０８〜Ｓ６１２の各処理については、図１０のステップＳ２０８〜Ｓ２１２の各処理と同様であるため、説明を省略する。
【０１４２】
以下のステップＳ６１３〜Ｓ６１８の処理は、ステップＳ６０７で送金者の銀行口座から被送金者の銀行口座に送金額が出金されたと判定された場合に限り実行される。
【０１４３】
判定部３３３は、合意確認処理において取引情報が正当であると判定した場合、第１通信部３２を介して募金ノード６に暗号通貨の廃棄信号を送信する（ステップＳ６１３）。廃棄信号は、暗号通貨の廃棄を要求する信号であり、廃棄信号には、取引金額及び対応する入出金データの識別情報が含まれる。
【０１４４】
次に、募金ノード６は、窓口ノード３から廃棄信号を受信すると、廃棄信号に含まれる取引金額に相当する暗号通貨の廃棄額を算出する。暗号通貨の廃棄額は、固定レート又は取引所若しくは販売所等のレートを適用して算出される。募金ノード６は、暗号通貨データを生成し（ステップＳ６１４）、生成した暗号通貨データのデータ領域に、暗号通貨情報として、算出した廃棄額を示す情報を書き込む。募金ノード６及び他の各ノードは、図１０のステップＳ６１４と同様にして、生成された暗号通貨データを共有する。
【０１４５】
次に、募金ノード６は、廃棄結果信号を窓口ノード３に送信する（ステップＳ６１５）。廃棄結果信号には、暗号通貨情報及び廃棄信号に含まれていた入出金データの識別情報等が含まれる。
【０１４６】
次に、窓口ノード３の第１処理部３３は、第１通信部３２を介して廃棄結果信号を受信すると、廃棄結果信号において指定された入出金データのデータ領域に暗号通貨情報を書込む（ステップＳ６１６）。窓口ノード３及び他の各ノードは、図１０のステップＳ６１６と同様にして、更新された入出金データを共有する。
【０１４７】
次に、第１処理部３３は、第１通信部３２を介して出金結果信号を特定の団体ノード４に送信する（ステップＳ６１７）。出金結果信号は、送金者の銀行口座から被送金者の銀行口座に送金額の出金がされ、暗号通貨が廃棄されたことを示し、出金結果信号には、暗号通貨情報等が含まれる。
【０１４８】
次に、特定の団体ノード４の第２処理部４３は、第２通信部４２を介して出金結果信号を受信すると、出金結果信号に含まれる暗号通貨情報を、ステップＳ６０２で生成していた送金データのデータ領域に書込む（ステップＳ６１８）。以上により、暗号通貨の廃棄処理は終了する。
【０１４９】
以上説明したように、情報処理システム１は、暗号通貨の廃棄処理においても、複数の団体ノードの検証結果に基づいて取引情報の正当性を判定するため、取引情報の信頼性を向上させることができる。また、情報処理システム１は、適切に検証された信頼性の高い取引情報に基づいて、暗号通貨を廃棄することができ、暗号通貨自体の信頼性を向上させることもできる。また、情報処理システム１は、被送金者により送金データが入力されてから暗号通貨が廃棄されるまでの一連の処理を自動で行うため、法定通貨及び暗号通貨の価値の変動リスクを抑えることができる。
【０１５０】
（第３の実施形態）
本実施形態では、情報処理システム１は、暗号通貨の発行処理に代えて、残高確認処理を実行する。第３の実施形態における情報処理システム１の構成は、第１の実施形態における情報処理システム１と同様であるため、詳細な説明を省略し、第１の実施形態と異なる点についてのみ説明する。
【０１５１】
図１６は、各ノードの記憶部に記憶される残高確認オブジェクトのデータ構造の一例を示す図である。
【０１５２】
残高確認オブジェクトには、残高確認メソッド及び複数の残高確認データが含まれる。残高確認メソッドは、残高確認データを管理するプログラムである。残高確認データには、残高確認結果が含まれる。残高確認データには、取引情報、残高確認結果、残高の差分値、第１暗号値、選出団体ノードアドレス、第２暗号値、タイムスタンプの日時及び検証結果等の各情報が含まれる。
【０１５３】
図１７は、残高確認処理の一例を説明するための動作シーケンスの一例である。
【０１５４】
以下に説明する動作シーケンスは、予め第１記憶部３１及び第２記憶部４１に記憶されているプログラムに基づいて、主に第１処理部３３及び第２処理部４３により、窓口ノード３及び団体ノード４の各要素と協働して実行される。なお、以下に説明する動作シーケンスは、ブロックチェーン内のオブジェクトに予め記録されているメソッドに従って、実行される。また、以下に説明する動作シーケンスは、窓口ノード３により定期的に又は任意のタイミングで実行される。
【０１５５】
最初に、窓口ノード３の第１処理部３３は、自ノードが記憶している入出金オブジェクトから、入出金確認情報が記憶されていない入出金データ、即ち未だ入金又は出金されていない入出金データを抽出し、抽出した入出金データに対応する残高確認データを生成する（ステップＳ７０１）。また、第１処理部３３は、生成した残高確認データの識別情報とアドレスを関連付けてアドレステーブルに書込む。第１処理部３３は、生成した残高確認データの識別情報と、窓口ノード３の公開鍵を関連付けてトランザクションとして記憶する。第１処理部３３は、生成した残高確認データ及びトランザクションを第１通信部３２を介して各ノードにブロードキャストし、各ノードは、受信した残高確認データ及びトランザクションを各ノードが記憶しているブロックチェーンに記憶するとともに、各ノードが記憶しているアドレステーブルを更新する。
【０１５６】
次に、第１処理部３３は、第１通信部３２を介して金融機関サーバ５に取引情報要求信号を送信する（ステップＳ７０２）。取引情報要求信号には、残高確認処理の対象となる団体（即ち、抽出した入出金データの入出金予定情報における被入金者又は出金者）を示す情報が含まれる。
【０１５７】
次に、金融機関サーバ５は、取引情報要求信号を受信すると、受信した取引情報要求信号において指定された団体に関する取引情報を抽出し、抽出した取引情報を含む取引情報通知信号を窓口ノード３に送信する（ステップＳ７０３）。取引情報には、その団体の金融機関における各取引の取引番号、取引日時、振込元、振込先、取引金額、口座残高等の情報が含まれる。
【０１５８】
次に、窓口ノード３の第１処理部３３は、取引情報通知信号を第１通信部３２を介して受信すると、取引情報通知信号に含まれる取引情報をステップＳ７０１で生成した残高確認データのデータ領域に書込む（ステップＳ７０４）。次に、第１処理部３３は、金融機関サーバ５から受信した取引情報通知信号から、取引情報に含まれる口座残高を取得する。第１処理部３３は、ステップＳ７０１において抽出した入出金データから取引情報に含まれる口座残高及び入出金予定情報に含まれる入金予定額又は出金予定額を取得する。
【０１５９】
入金予定額が０でない場合、第１処理部３３は、入出金データから取得した口座残高に入金予定額を加算した加算値が金融機関サーバ５から受信した取引情報通知信号に含まれる口座残高と一致するか否かを判定する。第１処理部３３は、各値が一致する場合、団体の口座に入金予定額が入金されたと判定し、各値が一致しない場合、入金予定額がまだ入金されていないと判定する。
【０１６０】
一方、出金予定額が０でない場合、第１処理部３３は、入出金データから取得した口座残高から出金予定額を減算した減算値が金融機関サーバ５から受信した取引情報通知信号に含まれる口座残高と一致するか否かを判定する。第１処理部３３は、各値が一致する場合、団体の口座から出金予定額が出金されたと判定し、各値が一致しない場合、出金予定額がまだ出金されていないと判定する。
【０１６１】
第１処理部３３は、判定結果を残高確認結果としてステップＳ７０１で生成した残高確認データのデータ領域に書込む。第１処理部３３は、更新された残高確認データを第１通信部３２を介して各ノードにブロードキャストし、各ノードは、受信した入出金データを各ノードが記憶しているブロックチェーンに記憶する。
【０１６２】
なお、ステップＳ７０５〜Ｓ７０９の各処理については、第１の実施形態で説明したステップＳ２０８〜Ｓ２１２の各処理と同様であるため、説明を省略する。但し、ステップＳ７０５〜Ｓ７０９及び図１１〜１３の各フローチャートの処理において、入出金データの代わりに、残高確認データが用いられる。
【０１６３】
また、ステップＳ７１０において、窓口ノード３の判定部３３３は、合意確認処理における検証結果を、対応する残高確認データのデータ領域に書込む。判定部３３３は、更新された残高確認データを第１通信部３２を介して各ノードにブロードキャストし、各ノードは、受信した残高確認データを各ノードが記憶しているブロックチェーンに記憶する。これにより、判定部３３３は、図１３のステップＳ５０６において、取引情報が正当でないと判定した場合、取引情報が正当でない旨を複数の団体ノード４に通知する。
【０１６４】
なお、ステップＳ７０４の処理で、団体の銀行口座に入金予定額が入金されたと判定された場合、情報処理システム１は、図１０に示したステップＳ２１３〜Ｓ２１８の各処理を実行し、暗号通貨を発行する。一方、ステップＳ７０４の処理で、団体の銀行口座から出金予定額が出金されたと判定された場合、情報処理システム１は、図１５に示したステップＳ６１３〜Ｓ６１８の各処理を実行し、暗号通貨を廃棄する。
【０１６５】
以上説明したように、残高確認処理においても、情報処理システム１は、複数の団体ノードの検証結果に基づいて取引情報の正当性を判定するので、取引情報の信頼性を向上させることができる。
【符号の説明】
【０１６６】
１…情報処理システム
３…窓口ノード
３１…第１記憶部
３２…第１通信部
３３…第１処理部
３３１…第１暗号値生成部
３３２…第１送信部
３３３…判定部
４…団体ノード
４１…第２記憶部
４２…第２通信部
４３…第２処理部
４３１…検証実行部
４３２…第２暗号値生成部
４３３…第２送信部
【図１】
2018014567.tif 000003
【図２】
2018014567.tif 000004
【図３】
2018014567.tif 000005
【図４】
2018014567.tif 000006
【図５】
2018014567.tif 000007
【図６】
2018014567.tif 000008
【図７】
2018014567.tif 000009
【図８】
2018014567.tif 000010
【図９】
2018014567.tif 000011
【図１０】
2018014567.tif 000012
【図１１】
2018014567.tif 000013
【図１２】
2018014567.tif 000014
【図１３】
2018014567.tif 000015
【図１４】
2018014567.tif 000016
【図１５】
2018014567.tif 000017
【図１６】
2018014567.tif 000018
【図１７】
2018014567.tif 000019