JP6827327B2 - 分散コンピューティングシステム - Google Patents

分散コンピューティングシステム Download PDF

Info

Publication number
JP6827327B2
JP6827327B2 JP2017000294A JP2017000294A JP6827327B2 JP 6827327 B2 JP6827327 B2 JP 6827327B2 JP 2017000294 A JP2017000294 A JP 2017000294A JP 2017000294 A JP2017000294 A JP 2017000294A JP 6827327 B2 JP6827327 B2 JP 6827327B2
Authority
JP
Japan
Prior art keywords
reliability
task
request
participating
server
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017000294A
Other languages
English (en)
Other versions
JP2018109878A (ja
Inventor
潤 根本
潤 根本
開帆 福地
開帆 福地
匡邦 揚妻
匡邦 揚妻
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2017000294A priority Critical patent/JP6827327B2/ja
Priority to US15/860,216 priority patent/US20180189100A1/en
Publication of JP2018109878A publication Critical patent/JP2018109878A/ja
Application granted granted Critical
Publication of JP6827327B2 publication Critical patent/JP6827327B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4831Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Computer And Data Communications (AREA)
  • Hardware Redundancy (AREA)

Description

本発明は、概して、分散コンピューティングに関する。
分散コンピューティングシステムでは、一般に、計算タスク(以下、タスク)の割当てが行われる。分散コンピューティングシステムにおけるタスク割当て方法として、特許文献1がある。特許文献1によれば、計算資源(CPU、メモリ、ネットワーク)の利用状況のモニタリング結果に基づいてタスクが割り当てられる。
US2009/0276519
以下の説明では、分散コンピューティングシステムの要素としての計算機を「参加ノード」と言う。プロセッサやメモリや通信インターフェースデバイスといった計算資源を有するいずれの計算機も参加ノードになることができてよい。
また、以下の説明では、参加ノードの所有者(または使用者)を「参加者」と言うことがある。
不特定の計算機が参加ノードとなり得る分散コンピューティングシステム(以下、便宜上、「参加型分散システム」と言う)が知られている。参加型分散システムの典型例としては、ブロックチェーンが適用されたシステムのような非中央集権型の分散コンピューティングシステムがある。
参加ノードは不特定の計算機であるため、タスクの割当先の参加ノードによって、計算ミスが生じてしまう、或いは、悪意ある参加者に従う意図的な不正が行われてしまう、といったような懸念が考えられる。
しかしながら、特許文献1に記載の技術によれば、いずれのサーバも信頼できるサーバであることが前提となっており、計算資源の利用状況のモニタリング結果に基づいてタスクが割り当てられるにすぎないため、参加型分散システムについての上述の懸念を軽減することができない。
上述の懸念は、参加ノードの信頼度がわかれば、軽減できると考えられる。しかし、参加ノードの信頼度を適切に決定し、且つ、その信頼度の信憑性を担保する技術的手段は知られていない。特定の計算機が管理計算機として参加ノードを管理し信頼度を決定する方法が考えられるが、その方法は、少なくとも非中央集権型の分散コンピューティングシステムのように管理計算機が存在しないことのあるシステムには適用できない。また、人為的に参加ノードの信頼度を決定する方法も考えられるが、その方法では、人間の主観に依存することがあり参加ノードの信頼度の信憑性を担保することは難しい。
分散コンピューティングシステムに参加している計算機が、
(A)要求を受ける都度に、下記の(a1)乃至(a4)を含んだ処理である要求処理、
(a1)分散コンピューティングシステムに参加しており当該計算機を含む計算機である参加ノードにそれぞれ関連付けられている信頼度に基づいて、処理対象のタスクの実行の依頼先とする1以上の参加ノードを選択すること、
(a2)選択した1以上の参加ノードの各々に、処理対象のタスクの実行の依頼である承認要求を送信すること、
(a3)1以上の参加ノードの各々から、その参加ノードに送信した承認要求に対する応答であり、その参加ノードにより実行された前記処理対象のタスクのタスク実行結果を含んだ応答である承認応答を受け付けること、
(a4)一致したタスク実行結果の数に基づく、上記受けた要求に対する応答を返すこと、
を実行し、
(B)要求処理と要求処理とは非同期の処理との少なくとも1つにおいて、下記の処理である信頼度更新処理、
一致したタスク実行結果を含んだ応答を送信した参加ノードに関連付けられている信頼度を、そのタスク実行結果に対応したタスクに関連付けられている重要度を基に相対的に上げること、
を実行する。
本発明によれば、不特定の計算機が参加ノードになり得る分散コンピューティングシステムにおいて、計算結果の信頼性を向上させることができる。
実施例1に係る分散コンピューティングシステムの構成を示すブロック図である。 実施例1に係るブロックチェーンプログラムの内部構成を示すブロック図である。 実施例1に係るサーバ管理テーブルの構成を示す図である。 実施例1に係るスマートコントラクト管理テーブルの構成を示す図である。 実施例1に係るトランザクション処理の一例を示すフローチャートである。 実施例1に係るトランザクション承認処理の一例を示すフローチャートである。 実施例1に係る信頼度更新処理の一例を示すフローチャートである。 実施例2に係るブロックチェーンプログラムの内部構成を示すブロック図である。 実施例2に係るサーバ管理テーブルの構成を示す図である。 実施例2に係る決済処理の一例を示すフローチャートである。 実施例1の概要を示す模式図である。
以下、幾つかの実施例を説明する。
以下の説明では、「abcテーブル」の表現にて情報を説明することがあるが、情報は、テーブル以外のデータ構成で表現されていてもよい。データ構成に依存しないことを示すために「abcテーブル」のうちの少なくとも1つを「abc情報」と呼ぶことができる。また、以下の説明において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部または一部が1つのテーブルであってもよい。
また、以下の説明では、「インターフェース部」は、1以上のインターフェースを含む。1以上のインターフェースは、1以上の同種のインターフェースデバイス(例えば1以上のNIC(Network Interface Card))であってもよいし2以上の異種のインターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
また、以下の説明では、「記憶部」は、1以上のメモリを含む。少なくとも1つのメモリは、揮発性メモリであってもよいし不揮発性メモリであってもよい。記憶部は、主に、プロセッサ部による処理の際に使用される。
また、以下の説明では、「プロセッサ部」は、1以上のプロセッサを含む。少なくとも1つのプロセッサは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサである。1以上のプロセッサの各々は、シングルコアでもよいしマルチコアでもよい。プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ(例えばCPU(Central Processing Unit))によって実行されることで、定められた処理を、適宜に記憶部(例えばメモリ)および/またはインターフェース部等を用いながら行うため、処理の主語がプロセッサ部とされてもよい。プログラムを主語として説明された処理は、プロセッサ部あるいはそのプロセッサ部を有する装置が行う処理としてもよい。また、プロセッサ部は、処理の一部または全部を行うハードウエア回路を含んでもよい。プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読み取り可能な記録媒体(例えば非一時的な記録媒体)であってもよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号を使用し、同種の要素を区別して説明する場合は、要素の識別情報としての名前を使用することがある。
図11は、実施例1の概要を示す。
分散コンピューティングシステムに参加するサーバ120(参加ノードの一例)が、ブロックチェーンプログラム200を実行する。ブロックチェーンプログラム200は、サーバ120毎の信頼度と、スマートコントラクト210(タスクの一例)毎の重要度とを管理する。ブロックチェーンプログラム200は、対象サーバ120(いずれかのサーバ120)の信頼度を、その対象サーバ120によるスマートコントラクト実行の結果が正しいか否かと、その結果に対応したスマートコントラクト210に関連付けられている重要度とに基づいて更新するようになっている。要求を受けたサーバ120のブロックチェーンプログラム200は、その要求の処理において、処理対象のスマートコントラクト210の実行の依頼先とするサーバ120を、サーバ120毎の信頼度に基づいて選択する。さらに、ブロックチェーンプログラム200は、他サーバ120(当該ブロックチェーンプログラム200を実行するサーバ120とは別のサーバ120)が管理する信頼度(サーバ120毎の信頼度)を取得し、それに基づいて自サーバ120(当該ブロックチェーンプログラム200を実行するサーバ120)が管理する信頼度(サーバ120毎の信頼度)を更新する。
具体的は、例えば以下の通りである。
各サーバ120において、ブロックチェーンプログラム200は、サーバ120毎の信頼度を表す情報を含んだサーバ管理テーブル300と、スマートコントラクト210毎の重要度を表す情報を含んだスマートコントラクト管理テーブル400と、スマートコントラクトA1およびA2とを管理する。
第1のサーバ120(いずれかのサーバ120)が、クライアント100から、スマートコントラクトA1(処理対象のスマートコントラクト210の一例)を指定したトランザクション要求を受信する。
第1のサーバ120のブロックチェーンプログラム200は、その要求に従いスマートコントラクトA1を実行する。
また、第1のサーバ120のブロックチェーンプログラム200は、そのプログラム200が管理するサーバ管理テーブル300を参照して、信頼度の高い順にサーバ120を一定数選択し、選択サーバ120(選択したサーバ120)に、スマートコントラクトA1を指定したトランザクション承認要求を送信する。選択サーバ120の一例が、第2のサーバ120である。トランザクション承認要求を受信した第2のサーバ120のブロックチェーンプログラム200は、その要求に従いスマートコントラクトA1を実行し、実行結果を表す情報を含んだ応答を、第1のノードに返す。
第1のサーバ120のブロックチェーンプログラム200は、全ての選択サーバ120からの応答に含まれているスマートコントラクト実行結果を基に、正しいスマートコントラクト実行結果(例えば最も多く一致したスマートコントラクト実行結果)を選択する。
第1のサーバ120のブロックチェーンプログラム200は、最終結果として採用されたスマートコントラクト実行結果を応答したサーバ120の信頼度を、スマートコントラクトA1の重要度に応じて相対的に上げる。
各サーバ120のブロックチェーンプログラム200は、定期的に、サーバ管理テーブル300を相互交換し、他サーバ120のサーバ管理テーブル300を自サーバ120のサーバ管理テーブル300に反映する(例えば、信頼度を合算する)。
以下、図面を用いて本実施例を詳細に説明する。
図1は、実施例1に係る分散コンピューティングシステムの構成を示すブロック図である。
分散コンピューティングシステムは、ネットワーク110を介して1以上のクライアント100と接続された1以上のサーバ120を備える。なお、1以上のサーバ120の各々は、1の主体によって所有されることもあれば、複数の主体によって所有されることもある。
クライアント100は、1以上のサーバ120が提供する分散コンピューティングサービスを利用するために使用する計算機である。クライアント100では、分散コンピューティングサービスを利用するためのクライアントプログラムが動作する。クライアントプログラムをサーバ120で動作させることで、サーバ120がクライアント100を兼用してもよい。
ネットワーク110は、クライアント100とサーバ120とを相互に接続するネットワークである。ネットワーク110は、例えば、LAN(Local Area Network)やWAN(Wide Area Network)である。
サーバ120は、クライアント100に対して分散コンピューティングサービスを提供する計算機である。サーバ120は、メモリ160に格納されたプログラムを実行するCPU 130と、クライアント100との通信に使用するネットワークインタフェース140と、ディスクドライブ170と、ディスクドライブ170への入出力を制御するディスクコントローラ150と、プログラムやデータを格納するメモリ160と、を搭載し、それらを内部的な通信路(例えば、バス)によって接続している計算機である。ネットワークインタフェース140が、インターフェース部の一例である。メモリ160および170のうちの少なくともメモリ160が記憶部の一例である。CPU130およびディスクコントローラ150のうちの少なくともCPU130がプロセッサ部の一例である。
サーバ120のメモリ160には、プログラムやデータが格納される。例えば、プログラムは、ブロックチェーンプログラム200である。本実施例は、分散コンピューティングサービスを提供する主体が、例としてブロックチェーンプログラム200であることを前提に説明する。以降、ブロックチェーンプログラム200による分散コンピューティングサービスをブロックチェーンサービス、それを提供する分散コンピューティングシステムをブロックチェーンシステムと呼ぶことがある。
ブロックチェーンプログラム200は、クライアント100に対して、他のサーバ120におけるブロックチェーンプログラム200と協調してスマートコントラクトをサービスし、クライアント100から受信したトランザクション要求に基づいてスマートコントラクトを実行する。
ディスクコントローラ150は、メモリ160に格納された各種プログラムの入出力要求に基づいて、ディスクドライブ170のデータを例えばブロック単位で入出力する。
ディスクドライブ170は、メモリ160に格納された各種プログラムが読み書きするデータを格納するための記憶デバイスである。本実施例において、ディスクドライブ170には、ブロックチェーンデータ180が格納される。
図2は、ブロックチェーンプログラム200の内部構成を示すブロック図である。
ブロックチェーンプログラム200は、1以上のスマートコントラクト210と、合意形成モジュール220と、信頼度管理モジュール230と、監視モジュール240とを備える。また、ブロックチェーンプログラム200は、サーバ管理テーブル300と、スマートコントラクト管理テーブル400とを管理する。
スマートコントラクト210は、サーバ120のCPU130によって実行されるプログラムである。スマートコントラクト210は、例えば、仮想通貨や証券といった金融資産の取引を処理するためのプログラムである。ブロックチェーンプログラム200には、複数の主体によって、複数種類のスマートコントラクトが配置され得る。トランザクションとスマートコントラクト210は、1:1、1:N(Nは2以上の整数)、M:1(Mは2以上の整数)、またはM:Nで対応してよい。スマートコントラクト210が、タスクの一例である。
合意形成モジュール220は、クライアント100からのトランザクション要求を契機として、サーバ120のCPU130によって実行される。合意形成モジュール220は、トランザクション要求を受信し、当該トランザクション要求の内容に基づいて、当該要求に対応するスマートコントラクト210を実行する。さらに、合意形成モジュール220は、他のサーバ120の合意形成モジュール220に対してトランザクション承認要求を送信し、他のサーバ120とトランザクション処理結果が正しいことを合意および確定した上で、クライアント100にトランザクション処理結果を応答する。複数のサーバ120で、同じトランザクション処理を実行するのは、不特定多数が参加するブロックチェーンシステムにおいて、悪意ある参加者が不正な結果を応答したり、ハードウェアのエラー等により不正なデータを応答したりする可能性があるためである。
信頼度更新モジュール230は、参加者からの指示や、あらかじめ定められたスケジュールに基づいて、サーバ120のCPU130によって実行される。信頼度更新モジュール230は、ブロックチェーンシステムを構成する他のサーバ120にからサーバ管理テーブル300を取得し、当該サーバ管理テーブル300に基づいて自身のサーバ管理テーブル300の信頼度を更新する。
サーバ管理テーブル300は、トランザクション処理結果に関して合意形成するにあたって、承認処理を依頼する対象のサーバを選択するための判断基準として使用する信頼度やサーバ120の性能などを管理するテーブルである。サーバ管理テーブル300は、合意形成モジュール220や、信頼度更新モジュール230によって使用される。
スマートコントラクト管理テーブル400は、ブロックチェーンプログラム200に配置されたスマートコントラクト210の重要度や合意形成ポリシーを管理するテーブルである。スマートコントラクト管理テーブル400は、合意形成モジュール220によって使用される。
監視モジュール240は、あらかじめ定められたスケジュールに基づいて、サーバ120のCPU130によって定期的に実行される。監視モジュール240は、ブロックチェーンシステムに参加する各サーバ120の性能を取得し、それに基づいてサーバ管理テーブル300における情報(後述の負荷340および遅延350)を更新する。また、監視モジュール240は、監視モジュール240は、複数のスマートコントラクトの各々について、そのスマートコントラクト実行状況に関する統計情報(例えば、スマートコントラクトの実行に必要な計算資源および計算時間の少なくとも1つを表す情報)を取得し、それに基づいてスマートコントラクト管理テーブル400における情報(後述の重要度430)を更新する。
図3は、サーバ管理テーブル300の構成例を示す図である。
サーバ管理テーブル300は、サーバ120毎にエントリ(レコード)を有し、各エントリが、サーバID310、所有者ID320、信頼度330、負荷340および遅延350といった情報を保持する。
サーバID310は、サーバの識別情報である。所有者ID320は、サーバ120を所有する主体の識別情報である。信頼度330は、サーバ120の信頼度を表す値である。値が高い程、信頼度は高い。負荷340は、サーバ120の負荷を表す。遅延350は、自サーバ120と他のサーバ120との通信における遅延を表す。
所有者ID320、信頼度330、負荷340および遅延350は、合意形成モジュール220によって、トランザクション承認処理を依頼するサーバ120を選択するために使用される。
信頼度330は、後述するスマートコントラクトの重要度430と、当該サーバ120がトランザクション承認処理において正しい結果を応答したかどうかが反映される。すなわち、信頼度330は、悪意ある参加者による人為的な不正、ハードウェアやソフトウェアの非人為的なエラーに関わらず、他のサーバ120の挙動の正しさが反映される。
図4は、スマートコントラクト管理テーブル400の構成例を示す図である。
スマートコントラクト管理テーブル400は、スマートコントラクト210毎に、スマートコントラクトID410、所有者ID420、重要度430および合意形成ポリシー440といった情報を保持する。
スマートコントラクトID410は、スマートコントラクト210の識別情報である。所有者ID420は、スマートコントラクト210を所有する主体の識別情報である。重要度430は、スマートコントラクト210の重要度を表す値である。値が高い程、重要度が高い。合意形成ポリシー440は、トランザクション承認処理を依頼するサーバ120を選択するポリシーを表す。
所有者ID420は、合意形成モジュール220の処理における信頼度330の決定や、トランザクション承認処理を依頼するサーバ120を選択するために使用される。図4に例示するように、スマートコントラクト210は複数の主体により所有されてもよい。
重要度430は、上述したように、スマートコントラクト210の重要度を表す値であり、例えば、当該スマートコントラクト210を実行するために必要な計算資源および計算時間の少なくとも1つについての相対的な値(各他のスマートコントラクト210についての計算資源および計算時間の少なくとも1つとの比較結果に基づく値)に基づく。その場合、監視モジュール240が、各スマートコントラクト210の実行に必要な計算資源や計算時間を監視し、その監視結果に基づいて、当該スマートコントラクト210の重要度430を決定(更新)してよい。重要度430は、このように自動的に付与(更新)されることに代えてまたは加えて、当該スマートコントラクト210の取引の重要性や機密性が反映されてもよい(例えば、重要度430としての値は、当該スマートコントラクト210を所有する主体が任意に決めた値それ自体または当該値が考慮された値でもよい)。
合意形成ポリシー440は、例えば、トランザクション承認処理を依頼するサーバ120の数である「定足数」、全員一致や過半数などどのように合意形成するかの「種別」、サーバ120を選択する際に優先する「項目」で構成される。なお、サーバ120を選択する際に優先する項目の数は複数あってもよい。また、優先する項目の指定がない場合は、例えば信頼度など、いずれかの項目をデフォルトで優先させてもよい。「項目」としては、サーバ120の所有者IDと、サーバ120の負荷と、スマートコントラクト210の重要度430と、サーバ120の遅延(通信遅延)とのうちの少なくとも1つを採用できる。
図5は、トランザクション処理の一例を示すフローチャートである。トランザクション処理は、クライアント100(クライアントプログラム)からのトランザクション要求を契機に実行される。なお、図5の説明における合意形成モジュール220は、いずれのサーバ120の合意形成モジュール220でもよい。
まず、合意形成モジュール220は、クライアント100からトランザクション要求を受信する(S510)。トランザクション要求は、対象とするスマートコントラクトのスマートコントラクトID、および、スマートコントラクト実行時に指定するパラメータを含む。
次に、合意形成モジュール220は、トランザクション要求に含まれるスマートコントラクトIDに対応するスマートコントラクト210を実行する(S520)。ここで、合意形成モジュール220は、スマートコントラクト210の実行結果、すなわち、戻り値やブロックチェーンデータ180に反映するデータは、後述する処理で使用するためメモリ160に退避しておく。
次に、合意形成モジュール220は、サーバ管理テーブル300と、スマートコントラクト管理テーブル400とを参照し、トランザクション承認処理の依頼先とするサーバ120を選択する(S530)。具体的には、まず、合意形成モジュール220は、処理対象のスマートコントラクト210のID410に対応する合意形成ポリシー440を参照し、定足数と優先する項目を取得する。次に、合意形成モジュール220は、サーバ管理テーブル300を参照し、優先する項目に基づいて、定足数の数だけサーバ120を選択する。
例えば、処理対象のスマートコントラクト210がスマートコントラクトA1の場合、スマートコントラクトA1の合意形成ポリシー440によれば、定足数が“4”で、信頼度330が最も優先され、次に遅延350が優先される。このため、合意形成モジュール220は、信頼度330が高い順にサーバ120を選択する。ここで選択されたサーバ120は、信頼度330が最も高いサーバ“4001”と、信頼度330が2番目に高いサーバ“2002”およびサーバ“2003”である。次に、合意形成モジュール220は、信頼度330が同一(3番目)のサーバの中から、遅延350の最も小さいサーバ“2001”を選択する。結果として、定足数“4”のサーバ120が選択される。なお、合意形成モジュール220は、比較的優先度の高い項目に従いサーバを選択し、その選択されたサーバから、比較的優先度の低い項目に従いサーバを除外することで、定足数に一致する数のサーバを選択してもよい。
また、例えば、処理対象のスマートコントラクト210がスマートコントラクトA2の場合、スマートコントラクトA2の合意形成ポリシーによれば、定足数が“4”で、所有者ID320が最も優先され、信頼度330が次に優先される。このため、合意形成モジュール220は、スマートコントラクトA2の所有者Bが所有するサーバ“2001”、“2002”および“2003”を選択する。次に、合意形成モジュール220は、所有者B以外のサーバのうち、信頼度330が最も高いサーバ“4001”を選択する。
また、例えば、処理対象のスマートコントラクト210がスマートコントラクトB1の場合、スマートコントラクトB1の合意形成ポリシーによれば、優先する項目が負荷340である。このため、合意形成モジュール220は、負荷340の低い順にサーバ120を選択する。負荷340を考慮してサーバ120を選択する場合、合意形成モジュール220は、当該スマートコントラクトB1の重要度430も併せて考慮してもよい。重要度430は、各スマートコントラクト実行に必要な計算資源や計算時間が反映された値である。合意形成モジュール220は、監視モジュール240から報告される各スマートコントラクト実行状況が反映された重要度430をも考慮してサーバ120を選択することで、トランザクション承認処理を依頼したサーバ120が過負荷になって処理が遅延することを防ぐことができる。
S530の後、合意形成モジュール220は、S530で選択したサーバ(以下、図5及び図6の説明において「選択サーバ」と言う)120に対して、トランザクション承認要求を送信する(S540)。トランザクション承認処理の詳細については後述する。
選択サーバ120がトランザクション承認応答を返すと、合意形成モジュール220は、当該トランザクション承認応答を受信する(S550)。
トランザクション承認応答を受信した合意形成モジュール220は、S520で退避したスマートコントラクト実行結果と、トランザクション承認応答に含まれるスマートコントラクト実行結果とを突き合わせて採決し、その結果が、処理対象のスマートコントラクト210に対応した合意形成ポリシー440における「種別」に合致するか否かを判断する(S560)。例えば、合意形成ポリシー440において、「種別」は、“過半数”(定足数のサーバの過半数)や“全員一致”(定足数のサーバの全て)といった条件である。当該条件は、スマートコントラクトの分散処理結果(全ての選択サーバ120に対して依頼したトランザクション承認処理の結果(スマートコントラクトの実行結果))が正しいとみなすための条件(基準)である。当該条件は、具体的には、例えば、スマートコントラクトの実行結果が一致したサーバ120の数(一致したスマートコントラクト実行結果の数)の条件に相当する。例えば、「種別」が“過半数”の場合、過半数の一致したスマートコントラクト実行結果が、正しいスマートコントラクト実行結果である。
S560の判断結果が真の場合(S560:YES)、合意形成モジュール220は、サーバ管理テーブル300を更新する(S570)。具体的には、合意形成モジュール220は、S560において採択されたスマートコントラクト実行結果(一致したスマートコントラクト実行結果)を返したサーバ120に対応した信頼度330を、スマートコントラクト210の重要度430に基づいて相対的に上げる。「信頼度330を相対的に上げる」とは、例えば、処理対象のスマートコントラクト210の重要度430の値を、採択されたスマートコントラクト実行結果を返したサーバ120に対応した信頼度330に加算することであってもよいし、それに代えて又は加えて、処理対象のスマートコントラクト210の重要度430の値を、採択されたスマートコントラクト実行結果と異なるスマートコントラクト実行結果を返したサーバ120に対応した信頼度330から減算することであってもよい。なお、当該合意形成モジュール220を実行するサーバ120、または、処理対象のスマートコントラクト210を所有する主体と同じ主体によって所有されるサーバ120が、常に信頼される場合は、当該サーバ120の信頼度330は加算対象外としてもよいし、あるいは、常に加算対象とされてもよい。また、スマートコントラクトA2のように、複数の主体によって所有されるスマートコントラクトが、処理対象のスマートコントラクトの場合、いずれのサーバ120の信頼度330も加算対象外とされてもよい。さらに、サーバ管理テーブル300の更新処理に対応したスマートコントラクト210が用意されていて、その更新処理用のスマートコントラクト210の実行結果として、2以上のサーバ120と合意を形成したうえで、サーバ管理テーブル300の更新処理が行われてもよい。
以上のように、一致したスマートコントラクト実行結果を出したサーバ120の信頼度330は、当該スマートコントラクト210の重要度430の値に応じて更新されるため、信頼度330の信憑性を高めることができる。
S560の判断結果が偽の場合(S560:NO)、合意形成モジュール220は、再度、トランザクション承認処理の依頼先とするサーバを選択する(S530)。このとき、合意形成モジュール220は、S560において異なるスマートコントラクト実行結果を応答したサーバ120を依頼先のサーバ120の候補から除外してもよい。
サーバ管理テーブル300を更新後、合意形成モジュール220は、トランザクション確定処理を実行する(S580)。具体的には、合意形成モジュール220が、各選択サーバ120に当該トランザクションの確定を通知し、通知を受けた各選択サーバ120が、当該選択サーバ120のメモリ160に退避していたスマートコントラクト実行結果を、当該サーバ120におけるブロックチェーンデータ180に反映する。なお、合意形成モジュール220は、S560において採択されなかったスマートコントラクト実行結果(誤ったスマートコントラクト実行結果)を返したサーバ120に対しては、S560において採択されたスマートコントラクト実行結果を送信し、当該サーバ120は、当該スマートコントラクト実行結果をブロックチェーンデータ180に反映する。
そして、合意形成モジュール220は、上述のトランザクション要求の送信元であるクライアント100に、トランザクション応答を送信する(S590)。トランザクション応答には、スマートコントラクト実行結果が含まれる。
図6は、トランザクション承認処理の一例を示すフローチャートである。トランザクション承認処理は、サーバ120からのトランザクション承認要求を契機に実行される。以下、図5における合意形成モジュール220を実行するサーバ120からトランザクション承認要求を受けた1つの選択サーバ120を例に取り、図6の処理を説明する。すなわち、図6における合意形成モジュール220は、その選択サーバ120で実行される合意形成モジュール220である。従って、いずれのサーバ120における合意形成モジュール220も、図5及び図6の処理を実行することができる。また、本実施例において、いずれのブロックチェーンプログラム200も、当該プログラム200を実行するサーバ120内の情報にアクセスし他サーバ120内の情報には直接アクセスしないものとする。なお、トランザクション承認要求に従いスマートコントラクト210を実行することを「追認」と呼ぶことができ、そのトランザクション承認要求を受けたサーバ120の所有者(参加者)を「追認者」と呼ぶことができる。
まず、合意形成モジュール220は、サーバ120からトランザクション承認要求を受信する(S510)。トランザクション承認要求は、処理対象のスマートコントラクトのスマートコントラクトIDと、当該スマートコントラクトの実行時に指定するパラメータとを含む。
次に、合意形成モジュール220は、サーバ管理テーブル300を参照し、トランザクション承認要求の送信元サーバ120の信頼度330が、あらかじめ定められた閾値以上か否を判断する(S620)。閾値は、例えば、当該選択サーバ120の所有者によって指定されてよい。閾値は、サーバ120毎に異なる値であってもよい。
S620の判断結果が真の場合(S620:YES)、合意形成モジュール220は、トランザクション承認要求に含まれるスマートコントラクトIDに対応するスマートコントラクト210を実行する(S630)。ここで、スマートコントラクトの実行結果、すなわち、戻り値やブロックチェーンデータ180に反映するデータを、トランザクション確定処理で使用するため、合意形成モジュール220は、メモリ160に退避しておく。
そして、合意形成モジュール220は、トランザクション承認応答を、トランザクション承認要求の送信元サーバ120に送信する(S640)。トランザクション承認応答には、スマートコントラクト実行結果が含まれる。
S620の判断結果が偽の場合(S620:NO)、合意形成モジュール220は、スマートコントラクト実行の失敗を意味する情報を含んだトランザクション承認応答を、トランザクション承認要求の送信元サーバ120に送信する(S640)。つまり、合意形成モジュール220は、信頼度330が閾値未満のサーバ120からトランザクション承認要求を受けた場合、スマートコントラクトを実行すること無しに、失敗を意味する応答を返す。これにより、定足数分のサーバ120にトランザクション承認要求を送信しなければならなくても、信頼度330が低いサーバ120からの要求に応答してスマートコントラクトの分散処理結果が正しい結果となることを避けることができる。なお、合意形成モジュール220は、失敗を意味する応答を返すことに代えて、応答を返さないことを実行してもよい。また、合意形成モジュール220は、信頼度330が閾値未満のサーバ120を選択しないと定足数分のサーバ120を選択できない場合、信頼度330が閾値未満のサーバ120を選択しないでよい、つまり、選択するサーバ120の数が定足数未満となってもよい。
図7は、信頼度更新処理の一例を示すフローチャートである。信頼度更新処理は、参加者(典型的には所有者)からの指示や、あらかじめ定められたスケジュールに基づいて実行される。
信頼度更新モジュール230は、全てのサーバ120について、S720からS740までの処理を実行する。1つのサーバ120を例に取り、S720からS740の具体的な処理について述べる。
まず、信頼度更新モジュール230は、サーバ120からサーバ管理テーブル300を取得する(S720)。
次に、信頼度更新モジュール230は、S720で取得したサーバ管理テーブル300における各信頼度330について、改竄があるか否かを判断する(S730)。具体的に、信頼度330の検証では、信頼度更新モジュール230が、ブロックチェーンデータ180におけるブロックを参照し、サーバ管理テーブル300の取得元であるサーバ120が信頼度330の改竄を行っていないことを確認する。全データを検証するのは非効率であるため、適当な数のブロックをサンプリングのうえで確認してもよい。あるいは、前述のように、信頼度330の更新をスマートコントラクトとして実行し、サーバ間で合意を得ている場合には、本処理はスキップしてもよい。
S730の判断結果が偽の場合(S730:NO)、信頼度更新モジュール230は、取得したサーバ管理テーブル300に基づいて、自サーバ120(当該信頼度更新モジュール230を実行するサーバ120)のサーバ管理テーブル300を更新する(S740)。具体的には、例えば、信頼度更新モジュール230は、単純に信頼度330を合算したり、サーバ120間の信頼度330のばらつきに基づいて補正したりする。
S730の判断結果が真の場合(S730:YES)、信頼度更新モジュール230は、取得したサーバ管理テーブル300を破棄する(S750)。
以上、本実施例によれば、ブロックチェーンシステムに参加するサーバ120の信頼度330が、スマートコントラクト210の重要度430とそのスマートコントラクト210の分散処理結果の正誤とに基づいて決定される。処理対象のスマートコントラクト210に対応した合意形成ポリシー440によるが、当該決定された信頼度330に基づいて、トランザクション承認処理の依頼先とするサーバ120を選択することができる。このため、不特定のサーバが参加ノードとなり得るブロックチェーンシステムにおいて、スマートコントラクト実行結果の信頼性を向上させることができる。
また、本実施例によれば、各サーバ120は、他サーバ120が管理する信頼度330を取得し、それに基づいて自サーバ120が管理する信頼度330を更新する。このため、ある参加者が特定の参加者に対してのみ不正を行うといった問題を避けることができ、システム全体としての信頼性も向上させることができる。
また、本実施例によれば、信頼度330の低いサーバ120からのトランザクション承認要求が処理されないように振る舞われる。これにより、信頼度330の信憑性を向上させることへのインセンティブが働くため、システム全体としての信頼性を向上させることができる。
なお、本実施例の説明を簡略化するため、信頼度330は単純に重要度430が加算されることで更新されるが、例えば、トランザクションの正答率をスマートコントラクトの重要度430で加重平均するなど、別の計算方法(更新方法)が用いられてもよい。
以下、図面を用いて実施例2を説明する。以下、実施例1との相違点を主に説明し、実施例1との共通点については、説明を省略または簡略する。
実施例2では、トランザクション承認処理を行うインセンティブを維持するために、実施例1における信頼度管理を拡張する。
図8は、実施例2に係るブロックチェーンプログラム800の内部構成を示すブロック図である。
ブロックチェーンプログラム800は、さらに決済モジュール810を有する。決済モジュール810は、参加者(典型的には所有者)からの指示や、あらかじめ定められたスケジュールに基づいて、CPU130によって実行される。決済モジュール810は、後述する未処理信頼度910に応じて、例えば、仮想通貨などの決済処理を行う。
図9は、実施例2に係るサーバ管理テーブル900の構成例を示す図である。
サーバ管理テーブル900における各エントリは、さらに未処理信頼度910を保持する。未処理信頼度910は、その未処理信頼度910について前回の決済処理を実行したとき(その未処理信頼度910が初期値に戻されたとき)から現在にいたるまでの信頼度に関する一時的な情報であると同時に、その前回の決済処理を実行したときから現在にいたるまでトランザクション承認処理をどれだけ正しく実行したか(返した一致するスマートコントラクト実行結果の数)に従う値である。本実施例のトランザクション処理では、合意形成モジュール220は、S570(サーバ管理テーブル900の更新)では、信頼度330の代わりに、未処理信頼度910を更新(トランザクション承認処理において正しい結果を応答したかどうかを未処理信頼度910に反映)する。S530(サーバ120の選択)は、実施例1と同様に信頼度330に基づいて行われる。
図10は、決済処理の一例を示すフローチャートである。決済処理は、参加者からの指示や、あらかじめ定められたスケジュールに基づいて実行され、パラメータとして所有者IDをとる。
まず、決済モジュール810は、サーバ管理テーブル900を参照し、パラメータとして指定された所有者IDに対応した未処理信頼度910を集計する(S1010)。ここで集計とは、例えば合算である。
次に、決済モジュール810は、S1010の集計で得られた値に基づいて決済を行う(S1020)。ここで「決済」とは、当該所有者IDに対応した主体に対して、何らかの報酬(S1010の集計で得られた値に基づく報酬)を支払うことを指す。「報酬」は、例えば、仮想通貨であり、本実施例におけるブロックチェーンシステムのスマートコントラクトが用いられてもよい。あるいは、他の決済システムと接続して、物理的な通貨により支払いが行われてもよい。「報酬」としては、通貨(仮想通貨又は物理通貨)以外の対象が採用されてもよい。
そして、決済モジュール810は、決済が成功したか否かを判断する(S1030)。
S1030の判断結果が真の場合(S1030:YES)、決済モジュール810は、当該所有者IDに対応したサーバ120について、未処理信頼度910の値を、信頼度330に反映(例えば加算)したうえで初期化する(例えば未処理信頼度910の値をリセットする“0”を設定する)。
S1030の判断結果が偽の場合(S1030がNO)、決済処理が終了する。
なお、本実施例では、仮想通貨等の「決済」という性質上、サーバ120間で合意のうえで未処理信頼度910が更新されることを前提とし、未処理信頼度910が改竄されたか否かの判断はされないでよい。
また、本実施例では、未処理信頼度910を用いてバッチ的に決済が行われるが、より早く正確に未処理信頼度910を信頼度330に反映するために、トランザクション処理毎に決済と信頼度330の更新とが実施されてもよい。
以上、本実施例によれば、未処理信頼度910に基づく決済により、トランザクション承認処理を行うインセンティブを維持することができる。このため、結果として、ブロックチェーンシステム全体の信頼性を向上させることができる。
参加者に適正に適切な報酬が支払われることは、本実施例に係るブロックチェーンシステムに参加することのインセンティブを維持し、参加者(参加ノードとしてのサーバ120)を増やすことが期待できるが、本実施例の主な意義は、実施例1と同様、サーバ120の信頼度330の信憑性を担保することにある。実施例2では、前回決済処理を実行したときから現在にいたるまで一致するスマートコントラクト実行結果を含んだトランザクション承認応答をどれだけ返したかを示す未処理信頼度910が導入され、その未処理信頼度910は、サーバ120間で合意のうえで更新され、決済に成功したときに信頼度330に反映される。このため、信頼度330の信憑性が、実施例1よりも向上していることが期待できる。
以上が、実施例1および2の説明である。
一比較例によれば、参加型分散システム、すなわち、不特定の計算機が参加ノードとして参加し得る分散コンピューティングシステム(例えば非中央集権型の分散コンピューティングシステム)の信頼性が低い。参加ノードは不特定の計算機であるため、スマートコントラクトの承認(追認)の依頼先(割当先)の参加ノードによって、計算ミスが生じてしまう、或いは、悪意ある参加者に従う意図的な不正が行われてしまう、といったような懸念が考えられるからである。
複数の当事者間の取引に対応したスマートコントラクトを、当事者の参加ノードに加えて、当事者以外の少なくとも一の参加者の参加ノードにより、当該スマートコントラクトを実行することが、当該取引の信頼性を高めることにつながる。つまり、追認者としての参加者の増加が、参加型分散システムでの取引の信頼性を高めることになる。追認者がいないと、取引の正当性が当事者間だけで閉じてしまうことになる。このため、複数の主体および複数のスマートコントラクトを組み合わせた新しい柔軟な取引ができない。
物流システムやヘルスケアシステムといった異種システム間の連携、また、自律分散型組織の実現に向けたIoT(Internet Of Things)やAI(Artificial Intelligence)を絡めたスマートコントラクトなど、将来の社会インフラを支えるユースケースの実現するための技術開発が望まれる。そのユースケースの実現の手段の1つとして、スマートコントラクトが仕様通りに正しく実装されていることや、不正が行われていないことの検証結果の信頼性を高めることにある。そのためには、参加者が増えること、具体的には、例えば、スマートコントラクトの承認者(例えば追認者)が増えることである。参加者を増やすためには、新たな主体が安心して参加者となれるよう、そして、既存の参加者が安心して参加者としていられるよう、参加型分散システムの信頼性を高めることが、1つの方法である。
従って、実施例1および2で説明したような技術的手段は、課題とされていたブロックチェーンシステム(参加型分散システムの一例)の信頼性を高めることに貢献し、以って、将来の社会インフラを支える上述のユースケースの実現に貢献する。これが、上述の技術的手段を提供することの技術的意義の1つである。
また、上述した実施例1および2のいずれも、スマートコントラクト210の重要度は、そのスマートコントラクト210の実行に必要な計算資源および計算時間の少なくとも1つに基づく。サーバ120の信頼度は、スマートコントラクト210の重要度を基に更新され、サーバ120の信頼度に基づいて、トランザクション承認要求の送信先としてのサーバ120が選択される。このため、参加型分散システムの信頼性を高めることを維持しつつ、処理の負荷分散(例えば、性能の低いサーバ120に高負荷のスマートコントラクト210の実行が依頼されることを回避すること)も期待される。
サーバ120間の信頼度の差は、合意形成に対する各サーバ120の貢献度の差でもある。このため、サーバ120のブロックチェーンプログラム200は、指定された参加者に対してその参加者が所有するサーバ120に関連付けられている信頼度(例えば、その指定された参加者のサーバ120の信頼度の集計値と、他の参加者が所有するサーバ120の信頼度の集計値との差)に基づく報酬を支払う処理である決済処理を実行してもよい。決済処理の具体例は、実施例2の説明において述べられている。
以上、幾つかの実施例を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
例えば、サーバ120のような参加ノードに関連付けられている信頼度は、参加ノードそれ自体の信頼度に代えて又は加えて、参加ノードの所有者の信頼度、参加ノードの使用者の信頼度であってもよい。
また、例えば、図5のトランザクション処理において、S520はスキップされてもよい、すなわち、自サーバ120(当該合意形成モジュールを実行するサーバ120)が必ずしも処理対象のスマートコントラクト210を実行しないでもよい。
また、例えば、各サーバ120のブロックチェーンプログラム200が管理するサーバ管理テーブル300は、サーバ120毎の信頼度330の内訳を含んでもよい。サーバ120の信頼度330の内訳とは、そのサーバ120が実行したスマートコントラクトのうちの正しいスマートコントラクト実行結果が得られたスマートコントラクトのIDと、その実行結果に応じた信頼度(以下、サブ信頼度)とを含んでよい。サーバ120のブロックチェーンプログラム200は、参加者X(そのサーバ120を所有する参加者)のサブ信頼度の集計値と、参加者Y(指定された参加者)のサブ信頼度の集計値との差を基に報酬を決定してもよい。報酬は、プラス(参加者Xから参加者Yに報酬が支払われる)であっても、マイナス(参加者Xに参加者Yから報酬が支払われる)であってもよい。報酬がプラスでもマイナスでもよいことは、実施例2の決済処理あるいは他の決済処理でも同様である。
100・・・クライアント、120・・・サーバ

Claims (13)

  1. 分散コンピューティングシステムに参加している計算機に、
    (A)要求を受ける都度に、下記の(a1)乃至(a4)を含んだ処理である要求処理、
    (a1)前記分散コンピューティングシステムに参加しており前記計算機を含む計算機である参加ノードにそれぞれ関連付けられている信頼度に基づいて、処理対象のタスクの実行の依頼先とする1以上の参加ノードを選択すること、
    (a2)前記選択した1以上の参加ノードの各々に、前記処理対象のタスクの実行の依頼である承認要求を送信すること、
    (a3)前記1以上の参加ノードの各々から、その参加ノードに送信した承認要求に対する応答であり、その参加ノードにより実行された前記処理対象のタスクのタスク実行結果を含んだ応答である承認応答を受け付けること、
    (a4)一致したタスク実行結果の数に基づく、前記要求に対する応答を返すこと、
    を実行させ、
    (B)前記要求処理と前記要求処理とは非同期の処理との少なくとも1つにおいて、下記の処理である信頼度更新処理、
    一致したタスク実行結果を含んだ応答を送信した参加ノードに関連付けられている信頼度を、そのタスク実行結果に対応したタスクに関連付けられている重要度を基に相対的に上げること、
    を実行させるコンピュータプログラム。
  2. 前記信頼度更新処理は、下記の(b1)および(b2)を含
    (b1)前記要求処理において、前記1以上の参加ノードの各々について、その参加ノードから一致したタスク実行結果を含んだ応答を受けた場合、その参加ノードに関連付けられている未処理信頼度を相対的に上げること、
    各参加ノードについて、関連付けられている未処理信頼度は、その未処理信頼度が初期値に戻されて以降に返した一致するタスク実行結果の数に従う値であり、
    (b2)前記要求処理とは非同期の処理において、少なくとも1つの未処理信頼度を、その未処理信頼度が関連付けられている参加ノードに関連付けられている信頼度に反映すること、
    前記非同期の処理は、指定された参加者に対してその参加者の参加ノードに関連付けられている未処理信頼度の集計値に基づく報酬を支払う処理である決済処理であり、
    前記決済処理が実行されると前記未処理信頼度が初期値に戻される
    請求項1記載のコンピュータプログラム。
  3. 前記非同期の処理は、指定された参加者に対してその参加者の参加ノードに関連付けられている未処理信頼度の集計値に基づく報酬を支払う処理である決済処理であり、
    前記少なくとも1つの未処理信頼度は、前記集計値であり、
    (b2)の反映は、前記集計値を、前記指定された参加者の参加ノードに関連付けられている信頼度に反映することである、
    請求項2記載のコンピュータプログラム。
  4. (C)前記要求処理とは非同期に、下記の(c1)および(c2)を含んだ処理である監視処理、
    (c1)前記処理対象のタスクを含む複数のタスクの各々について、そのタスクを実行するために必要な計算資源および計算時間のうちの少なくとも1つを監視すること
    (c2)前記複数のタスクの各々について、そのタスクに関連付けられている重要度を、(c1)の監視結果に基づいて更新すること、
    をさらに前記計算機に実行させ、
    前記複数のタスクの各々について、そのタスクに関連付けられている重要度は、そのタスクを実行するために必要な計算資源および計算時間の少なくとも1つについての相対的な値に基づいている、
    請求項1乃至3のうちのいずれか1項に記載のコンピュータプログラム。
  5. 前記複数のタスクの各々について、そのタスクに関連付けられている重要度には、さらに、そのタスクに従う処理の重要性または機密性が反映されている、
    請求項4記載のコンピュータプログラム。
  6. (a1)の選択は、前記分散コンピューティングシステムの参加ノードにそれぞれ関連付けられている信頼度に加えて、承認要求の送信先となる参加ノードの数である定足数と、参加ノードの所有者と、参加ノードの負荷と、タスクの重要度と、参加ノードの通信遅延とのうちの少なくとも1つを規定したポリシーに基づく選択である、
    請求項1乃至5のうちのいずれか1項に記載のコンピュータプログラム。
  7. (D)処理対象のタスクの実行の依頼である承認要求を受信した場合、下記の(d1)ないし(d3)を含んだ承認処理、
    (d1)その承認要求の送信元の参加ノードに関連付けられている信頼度が閾値以上か否かを判断すること、
    (d2)(d1)の判断結果が真の場合、その承認要求に従いタスクを実行しそのタスクの実行結果を含んだ応答を返すこと、
    (d3)(d1)の判断結果が偽の場合、その承認要求に従う処理を実行しないこと、
    をさらに前記計算機に実行させる請求項1乃至6のうちのいずれか1項に記載のコンピュータプログラム。
  8. (d3)は、処理の失敗を表す情報を含んだ応答を返すことである、
    請求項7記載のコンピュータプログラム。
  9. 前記要求処理とは非同期の処理として、指定された参加者に対してその参加者の参加ノードに関連付けられている信頼度に基づく報酬を支払う処理である決済処理、
    をさらに前記計算機に実行させる請求項1乃至8のうちのいずれか1項に記載のコンピュータプログラム。
  10. 前記タスクは、スマートコントラクトである、
    請求項1乃至9のうちのいずれか1項に記載のコンピュータプログラム。
  11. 前記計算機以外の参加ノードが管理している、参加ノード毎の信頼度を基に、前記計算機が管理している、参加ノード毎の信頼度を更新することである信頼度更新処理、
    をさらに前記計算機に実行させる請求項1乃至10のうちのいずれか1項に記載のコンピュータプログラム。
  12. 分散コンピューティングシステムに参加している複数の計算機である複数の参加ノードを有し、
    前記複数の参加ノードの各々が、
    (A)要求を受ける都度に、下記の(a1)乃至(a4)を含んだ処理である要求処理、
    (a1)前記分散コンピューティングシステムに参加しており前記計算機を含む計算機である参加ノードにそれぞれ関連付けられている信頼度に基づいて、処理対象のタスクの実行の依頼先とする1以上の参加ノードを選択すること、
    (a2)前記選択した1以上の参加ノードの各々に、前記処理対象のタスクの実行の依頼である承認要求を送信すること、
    (a3)前記1以上の参加ノードの各々から、その参加ノードに送信した承認要求に対する応答であり、その参加ノードにより実行された前記処理対象のタスクのタスク実行結果を含んだ応答である承認応答を受け付けること、
    (a4)一致したタスク実行結果の数に基づく、前記要求に対する応答を返すこと、
    を実行し、
    (B)前記要求処理と前記要求処理とは非同期の処理との少なくとも1つにおいて、下記の処理である信頼度更新処理、
    一致したタスク実行結果を含んだ応答を送信した参加ノードに関連付けられている信頼度を、そのタスク実行結果に対応したタスクに関連付けられている重要度を基に相対的に上げること、
    を実行する、
    分散コンピューティングシステム。
  13. 分散コンピューティングシステムに参加している計算機により、
    (A)要求を受ける都度に、下記の(a1)乃至(a4)を含んだ処理である要求処理、
    (a1)前記分散コンピューティングシステムに参加しており前記計算機を含む計算機である参加ノードにそれぞれ関連付けられている信頼度に基づいて、処理対象のタスクの実行の依頼先とする1以上の参加ノードを選択すること、
    (a2)前記選択した1以上の参加ノードの各々に、前記処理対象のタスクの実行の依頼である承認要求を送信すること、
    (a3)前記1以上の参加ノードの各々から、その参加ノードに送信した承認要求に対する応答であり、その参加ノードにより実行された前記処理対象のタスクのタスク実行結果を含んだ応答である承認応答を受け付けること、
    (a4)一致したタスク実行結果の数に基づく、前記要求に対する応答を返すこと、
    を実行し、
    (B)前記要求処理と前記要求処理とは非同期の処理との少なくとも1つにおいて、下記の処理である信頼度更新処理、
    一致したタスク実行結果を含んだ応答を送信した参加ノードに関連付けられている信頼度を、そのタスク実行結果に対応したタスクに関連付けられている重要度を基に相対的に上げること、
    を実行する、
    分散コンピューティング方法。

JP2017000294A 2017-01-05 2017-01-05 分散コンピューティングシステム Active JP6827327B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017000294A JP6827327B2 (ja) 2017-01-05 2017-01-05 分散コンピューティングシステム
US15/860,216 US20180189100A1 (en) 2017-01-05 2018-01-02 Distributed computing system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017000294A JP6827327B2 (ja) 2017-01-05 2017-01-05 分散コンピューティングシステム

Publications (2)

Publication Number Publication Date
JP2018109878A JP2018109878A (ja) 2018-07-12
JP6827327B2 true JP6827327B2 (ja) 2021-02-10

Family

ID=62712370

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017000294A Active JP6827327B2 (ja) 2017-01-05 2017-01-05 分散コンピューティングシステム

Country Status (2)

Country Link
US (1) US20180189100A1 (ja)
JP (1) JP6827327B2 (ja)

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10936721B1 (en) * 2018-03-01 2021-03-02 Amdocs Development Limited System, method, and computer program for splitting and distributing a privileged software component into dependent components in order to deliver better security
US11257073B2 (en) * 2018-01-31 2022-02-22 Salesforce.Com, Inc. Systems, methods, and apparatuses for implementing machine learning models for smart contracts using distributed ledger technologies in a cloud based computing environment
US10701054B2 (en) 2018-01-31 2020-06-30 Salesforce.Com, Inc. Systems, methods, and apparatuses for implementing super community and community sidechains with consent management for distributed ledger technologies in a cloud based computing environment
CN109032803B (zh) 2018-08-01 2021-02-12 创新先进技术有限公司 数据处理方法和装置、客户端
JP7051648B2 (ja) * 2018-09-05 2022-04-11 株式会社日立製作所 電子取引装置、電子取引検証装置、及び電子取引方法
CN110443614B (zh) * 2018-09-07 2021-04-09 腾讯科技(深圳)有限公司 节点设备删除方法、装置、计算机设备及存储介质
CN109697606A (zh) * 2018-09-30 2019-04-30 贝克链区块链技术有限公司 基于创新性的信誉证明共识协议的分布式网络及生态***
US11288280B2 (en) 2018-10-31 2022-03-29 Salesforce.Com, Inc. Systems, methods, and apparatuses for implementing consumer data validation, matching, and merging across tenants with optional verification prompts utilizing blockchain
US11568437B2 (en) 2018-10-31 2023-01-31 Salesforce.Com, Inc. Systems, methods, and apparatuses for implementing commerce rewards across tenants for commerce cloud customers utilizing blockchain
WO2019072289A2 (en) * 2018-11-30 2019-04-18 Alibaba Group Holding Limited INTELLIGENT BLOCK CHAIN CONTRACT UPDATES USING A DECENTRALIZED DECISION
KR102315791B1 (ko) * 2018-11-30 2021-10-21 어드밴스드 뉴 테크놀로지스 씨오., 엘티디. 이진 로그 복제에 기초한 블록체인 데이터 관계 구조화 방식
JP7209518B2 (ja) * 2018-12-03 2023-01-20 富士通株式会社 通信装置、通信方法、および通信プログラム
JP6883111B2 (ja) * 2018-12-13 2021-06-09 アドバンスド ニュー テクノロジーズ カンパニー リミテッド イベント駆動型ブロックチェーンワークフロー処理
CN109413211B (zh) * 2018-12-18 2019-12-31 陕西医链区块链集团有限公司 一种eos区块链超级节点的架构及其实现方法
US11348101B2 (en) * 2018-12-19 2022-05-31 International Business Machines Corporation Post-settlement processes
US11720545B2 (en) 2018-12-19 2023-08-08 International Business Machines Corporation Optimization of chaincode statements
CN110046036A (zh) * 2018-12-25 2019-07-23 阿里巴巴集团控股有限公司 一种操作请求分配方法、装置及设备
US11283673B2 (en) * 2019-01-07 2022-03-22 International Business Machines Corporation Blockchain endorsement verification
JP7181663B2 (ja) * 2019-01-11 2022-12-01 富士通株式会社 通信装置、通信プログラム、および分散処理方法
US11244313B2 (en) 2019-01-31 2022-02-08 Salesforce.Com, Inc. Systems, methods, and apparatuses for implementing declarative smart actions for coins and assets transacted onto a blockchain using distributed ledger technology (DLT)
US11488176B2 (en) 2019-01-31 2022-11-01 Salesforce.Com, Inc. Systems, methods, and apparatuses for implementing certificates of authenticity of digital twins transacted onto a blockchain using distributed ledger technology (DLT)
US11811769B2 (en) 2019-01-31 2023-11-07 Salesforce, Inc. Systems, methods, and apparatuses for implementing a declarative, metadata driven, cryptographically verifiable multi-network (multi-tenant) shared ledger
US11971874B2 (en) 2019-01-31 2024-04-30 Salesforce, Inc. Systems, methods, and apparatuses for implementing efficient storage and validation of data and metadata within a blockchain using distributed ledger technology (DLT)
US11803537B2 (en) 2019-01-31 2023-10-31 Salesforce, Inc. Systems, methods, and apparatuses for implementing an SQL query and filter mechanism for blockchain stored data using distributed ledger technology (DLT)
US11899817B2 (en) 2019-01-31 2024-02-13 Salesforce, Inc. Systems, methods, and apparatuses for storing PII information via a metadata driven blockchain using distributed and decentralized storage for sensitive user information
US11824864B2 (en) 2019-01-31 2023-11-21 Salesforce, Inc. Systems, methods, and apparatuses for implementing a declarative and metadata driven blockchain platform using distributed ledger technology (DLT)
US11886421B2 (en) 2019-01-31 2024-01-30 Salesforce, Inc. Systems, methods, and apparatuses for distributing a metadata driven application to customers and non-customers of a host organization using distributed ledger technology (DLT)
US11783024B2 (en) 2019-01-31 2023-10-10 Salesforce, Inc. Systems, methods, and apparatuses for protecting consumer data privacy using solid, blockchain and IPFS integration
US11875400B2 (en) 2019-01-31 2024-01-16 Salesforce, Inc. Systems, methods, and apparatuses for dynamically assigning nodes to a group within blockchains based on transaction type and node intelligence using distributed ledger technology (DLT)
US11876910B2 (en) 2019-01-31 2024-01-16 Salesforce, Inc. Systems, methods, and apparatuses for implementing a multi tenant blockchain platform for managing Einstein platform decisions using distributed ledger technology (DLT)
US11790368B2 (en) * 2019-03-05 2023-10-17 International Business Machines Corporation Auto-evolving database endorsement policies
US11762842B2 (en) * 2019-03-18 2023-09-19 Jio Platforms Limited Systems and methods for asynchronous delayed updates in virtual distributed ledger networks
US11763298B2 (en) * 2019-03-18 2023-09-19 Jio Platforms Limited Systems and methods for hybrid synchronization in virtual distributed ledger networks
US11398895B2 (en) 2019-03-26 2022-07-26 International Business Machines Corporation Information management in a decentralized database including a fast path service
US11269858B2 (en) 2019-03-26 2022-03-08 International Business Machines Corporation Information management in a decentralized database including a fast path service
US11418322B2 (en) * 2019-03-26 2022-08-16 International Business Machines Corporation Information management in a decentralized database including a fast path service
US11038771B2 (en) 2019-04-26 2021-06-15 Salesforce.Com, Inc. Systems, methods, and apparatuses for implementing a metadata driven rules engine on blockchain using distributed ledger technology (DLT)
US11880349B2 (en) 2019-04-30 2024-01-23 Salesforce, Inc. System or method to query or search a metadata driven distributed ledger or blockchain
US11995647B2 (en) 2019-04-30 2024-05-28 Salesforce, Inc. System and method of providing interoperable distributed and decentralized ledgers using consensus on consensus and delegated consensus
JP7221799B2 (ja) * 2019-05-31 2023-02-14 株式会社日立製作所 情報処理システム、及び情報処理システムの制御方法
CN110189128B (zh) * 2019-06-06 2021-05-14 西安安盟智能科技股份有限公司 一种用于区块快速生成的分布式共识的方法和装置
US11520904B2 (en) * 2019-08-27 2022-12-06 Accenture Global Solutions Limited AI-based blockchain hybrid consensus
US11824970B2 (en) 2020-01-20 2023-11-21 Salesforce, Inc. Systems, methods, and apparatuses for implementing user access controls in a metadata driven blockchain operating via distributed ledger technology (DLT) using granular access objects and ALFA/XACML visibility rules
US11611560B2 (en) 2020-01-31 2023-03-21 Salesforce.Com, Inc. Systems, methods, and apparatuses for implementing consensus on read via a consensus on write smart contract trigger for a distributed ledger technology (DLT) platform
US10715463B1 (en) 2020-02-20 2020-07-14 Robert Gelfond System and method for controlling access to resources in a multicomputer network
CN111914038B (zh) * 2020-09-21 2024-04-16 北京百度网讯科技有限公司 联邦计算方法、装置、设备及存储介质
CN112232959B (zh) * 2020-10-20 2023-09-15 贵州大学 一种基于信誉机制的理性云计算激励方法
KR102462866B1 (ko) * 2020-11-25 2022-11-07 주식회사 커먼컴퓨터 코드 저장소와 연동하여 원클릭 배포 서비스를 제공하는 방법 및 시스템
JPWO2022118565A1 (ja) * 2020-12-03 2022-06-09
US11375009B1 (en) * 2020-12-07 2022-06-28 International Business Machines Corporation Minimizing the impact of malfunctioning peers on blockchain
CN113067898B (zh) * 2021-06-02 2021-08-10 支付宝(杭州)信息技术有限公司 为业务流程合约调度计算服务的方法
CN113850511A (zh) * 2021-09-27 2021-12-28 国网江苏省电力有限公司扬州供电分公司 一种适用于多管理运维主体的运维激励***及方法
US11880567B2 (en) * 2022-02-25 2024-01-23 Cohesity, Inc. Quorum in a distributed system
CN116709341B (zh) * 2023-07-31 2024-04-30 中国人民解放军军事科学院***工程研究院 针对无人蜂群的实用拜占庭容错共识算法优化方法及***

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19918896A1 (de) * 1999-04-26 2000-11-02 Mueschenborn Hans Joachim Logisches Netzwerksystem
JP3793048B2 (ja) * 2001-06-28 2006-07-05 富士通株式会社 インターネットを用いた分散処理システム及び方法
JP2004240671A (ja) * 2003-02-05 2004-08-26 Hitachi Ltd 分散計算機の処理方法及びシステム
JP2005135209A (ja) * 2003-10-31 2005-05-26 Hitachi Ltd 分散処理サービス仲介システム及びその方法
US7310641B2 (en) * 2004-07-30 2007-12-18 Microsoft Corporation Multiple redundant services with reputation
JP2007241394A (ja) * 2006-03-06 2007-09-20 Mitsubishi Electric Corp 分割処理管理装置及び分割処理管理システム及び演算処理実行システム及び分割処理管理方法
JP2007249491A (ja) * 2006-03-15 2007-09-27 Fujitsu Ltd マルチサーバ環境においてバッチジョブを分散させるプログラム、装置、および方法
US20090210876A1 (en) * 2008-02-20 2009-08-20 Jinmei Shen Pull-model Workload Management with Synchronous-Asynchronous-Synchronous Bridge
US8903981B2 (en) * 2008-05-05 2014-12-02 International Business Machines Corporation Method and system for achieving better efficiency in a client grid using node resource usage and tracking
WO2014078569A1 (en) * 2012-11-14 2014-05-22 The 41St Parameter, Inc. Systems and methods of global identification
US20140343984A1 (en) * 2013-03-14 2014-11-20 University Of Southern California Spatial crowdsourcing with trustworthy query answering
US9600251B1 (en) * 2014-10-13 2017-03-21 Google Inc. Enhancing API service schemes
US20160232474A1 (en) * 2015-02-05 2016-08-11 Xerox Corporation Methods and systems for recommending crowdsourcing tasks
US9363283B1 (en) * 2015-06-30 2016-06-07 Traitperception Inc. Systems and methods for reputation scoring

Also Published As

Publication number Publication date
JP2018109878A (ja) 2018-07-12
US20180189100A1 (en) 2018-07-05

Similar Documents

Publication Publication Date Title
JP6827327B2 (ja) 分散コンピューティングシステム
US11055136B2 (en) Prioritization in a permissioned blockchain
CN110915166B (zh) 区块链
US11252220B2 (en) Distributed code execution involving a serverless computing infrastructure
US20190188655A1 (en) Dynamic blockchain transactional policy management
CN112997469B (zh) 用于分布式计算和存储的智能、分散和自主市场
US20200364212A1 (en) System and method of supporting reflection of transactions between blockchain networks
US10761875B1 (en) Large scale compute instance launching
US10970780B2 (en) Zero-knowledge predictions market
JP7254585B2 (ja) システム間連携方法およびノード
US20230052935A1 (en) Asynchronous accounting method and apparatus for blockchain, medium and electronic device
US10243819B1 (en) Template generation based on analysis
US11606391B2 (en) Method for controlling and provisioning resource access
JP2023514633A (ja) マルチコンピュータネットワークにおけるリソースへのアクセスを制御するためのシステム及び方法
Aral et al. Reliability management for blockchain-based decentralized multi-cloud
WO2021223492A1 (en) Method and system for determining blockchain-based gridlock resolution
US20230050048A1 (en) Isolating And Reinstating Nodes In A Distributed Ledger Using Proof Of Innocence
CN114328731A (zh) 信息处理方法、装置、电子设备和存储介质
Arantes et al. Probabilistic byzantine tolerance scheduling in hybrid cloud environments
WO2022202865A1 (ja) 分散型台帳システム及び方法
JP7490394B2 (ja) 情報共有支援方法、及び情報共有支援システム
US20240015595A1 (en) Distributed Network Management System
Lin et al. A Cooperative Game-Theoretic Model in Cloud Storage Auditing.
JP2023157673A (ja) トランザクション管理システム及びトランザクション管理方法
CN116502242A (zh) 基于区块链的属性访问控制方法及装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191023

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200916

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201006

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201202

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20201222

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210119

R150 Certificate of patent or registration of utility model

Ref document number: 6827327

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150