(57)【特許請求の範囲】
【請求項１】
ブロックチェーンネットワーク内のスマートコントラクトへのアクセスを制御するためのコンピュータ実装方法であって、前記方法は、
前記ブロックチェーンネットワークによって維持されるブロックチェーンに記憶されたスマートコントラクトを実行するための要求を、前記ブロックチェーンネットワークのノードによって識別するステップであって、前記要求が、前記スマートコントラクトの実行を要求している要求アカウントを識別する識別情報を含み、前記スマートコントラクトがプライベート関数およびメイン関数を含む、ステップと、
前記スマートコントラクトに関連付けられた前記ブロックチェーンからホワイトリストを、前記ノードによって取り出すステップであって、前記ホワイトリストが前記スマートコントラクトを実行する権限を与えられた1つまたは複数のアカウントを識別し、前記ホワイトリストが、前記スマートコントラクトを実行する権限を与えられた前記1つまたは複数のアカウントを記憶する前記スマートコントラクトの外部の場所への参照を含み、前記プライベート関数が、呼出者のアカウントを識別する識別情報をパラメータとし、前記呼出者のアカウントが前記スマートコントラクトを呼び出す権限を与えられているか否かを前記ホワイトリストに基づいて検証するように構成される、ステップと、
前記要求アカウントが前記ホワイトリストに含まれることに基づいて、前記要求アカウントが前記スマートコントラクトを実行する権限を与えられていると、前記ノードによって決定するステップであって、前記ノードによって前記プライベート関数を呼び出すステップを含む、ステップと、
前記要求アカウントが前記スマートコントラクトを実行する権限を与えられていると決定することに応答して、前記スマートコントラクトの前記メイン関数を前記ノードによって実行するステップと
を含む、方法。
【請求項２】
前記要求が第1の要求であり、前記要求アカウントが第1のアカウントであり、前記方法は、
前記第1の要求と異なる前記スマートコントラクトを実行するための第2の要求を、前記ノードによって識別するステップであって、前記第2の要求が前記第1のアカウントと異なる第2のアカウントを識別する、ステップと、
前記第2のアカウントが前記ホワイトリストに含まれていないことに基づいて、前記第2のアカウントが前記スマートコントラクトを実行する権限を与えられていないと、前記ノードによって決定するステップと、
前記要求アカウントが前記スマートコントラクトを実行する権限を与えられていないと決定することに応答して、前記スマートコントラクトを実行するための前記第2の要求を、前記ノードによって拒否するステップと
を含む、請求項1に記載の方法。
【請求項３】
前記ホワイトリストが前記スマートコントラクトに関連付けられた実行可能な命令のセット内に含まれる、請求項1に記載の方法。
【請求項４】
前記ホワイトリストが前記スマートコントラクトに関連付けられた実行可能な命令のセットとは別個のものである、請求項1に記載の方法。
【請求項５】
前記ホワイトリストが前記スマートコントラクトにアクセスする権限を与えられた前記1つまたは複数のアカウントの識別情報を含む、請求項1に記載の方法。
【請求項６】
前記ホワイトリストが1つまたは複数のアカウントに関連付けられたエンティティを識別し、前記要求アカウントが前記スマートコントラクトを実行する権限を与えられていると決定することが、前記要求アカウントが前記エンティティに関連付けられているかどうかを判定することを含む、請求項1に記載の方法。
【請求項７】
1つまたは複数のコンピュータに結合されるとともに、前記1つまたは複数のコンピュータによって実行可能な命令を記憶した非一時的コンピュータ可読記憶媒体であって、前記命令は、
ブロックチェーンネットワークによって維持されるブロックチェーンに記憶されたスマートコントラクトを実行するための要求を、前記ブロックチェーンネットワークのノードによって識別することであって、前記要求が、前記スマートコントラクトの実行を要求している要求アカウントを識別する識別情報を含み、前記スマートコントラクトがプライベート関数およびメイン関数を含む、ことと、
前記スマートコントラクトに関連付けられた前記ブロックチェーンからホワイトリストを、前記ノードによって取り出すことであって、前記ホワイトリストが前記スマートコントラクトを実行する権限を与えられた1つまたは複数のアカウントを識別し、前記ホワイトリストが、前記スマートコントラクトを実行する権限を与えられた前記1つまたは複数のアカウントを記憶する前記スマートコントラクトの外部の場所への参照を含み、前記プライベート関数が、呼出者のアカウントを識別する識別情報をパラメータとし、前記呼出者のアカウントが前記スマートコントラクトを呼び出す権限を与えられているか否かを前記ホワイトリストに基づいて検証するように構成される、ことと、
前記要求アカウントが前記ホワイトリストに含まれることに基づいて、前記要求アカウントが前記スマートコントラクトを実行する権限を与えられていると、前記ノードによって決定することであって、前記ノードによって前記プライベート関数を呼び出すステップを含むことと、
前記要求アカウントが前記スマートコントラクトを実行する権限を与えられていると決定することに応答して、前記スマートコントラクトの前記メイン関数を前記ノードによって実行することと
を含む、非一時的コンピュータ可読記憶媒体。
【請求項８】
前記要求が第1の要求であり、前記要求アカウントが第1のアカウントであり、前記記憶媒体は、
前記第1の要求と異なる前記スマートコントラクトを実行するための第2の要求を、前記ノードによって識別することであって、前記第2の要求が前記第1のアカウントと異なる第2のアカウントを識別する、ことと、
前記第2のアカウントが前記ホワイトリストに含まれていないことに基づいて、前記第2のアカウントが前記スマートコントラクトを実行する権限を与えられていないと、前記ノードによって決定することと、
前記要求アカウントが前記スマートコントラクトを実行する権限を与えられていないと決定することに応答して、前記スマートコントラクトを実行するための前記第2の要求を、前記ノードによって拒否することと
を含む、前記1つまたは複数のコンピュータによって実行可能なさらなる命令を記憶する、請求項7に記載の非一時的コンピュータ可読記憶媒体。
【請求項９】
前記ホワイトリストが前記スマートコントラクトに関連付けられた実行可能な命令のセット内に含まれる、請求項7に記載の非一時的コンピュータ可読記憶媒体。
【請求項１０】
前記ホワイトリストが前記スマートコントラクトに関連付けられた実行可能な命令のセットとは別個のものである、請求項7に記載の非一時的コンピュータ可読記憶媒体。
【請求項１１】
前記ホワイトリストが前記スマートコントラクトにアクセスする権限を与えられた前記1つまたは複数のアカウントの識別情報を含む、請求項7に記載の非一時的コンピュータ可読記憶媒体。
【請求項１２】
前記ホワイトリストが1つまたは複数のアカウントに関連付けられたエンティティを識別し、前記要求アカウントが前記スマートコントラクトを実行する権限を与えられていると決定することが、前記要求アカウントが前記エンティティに関連付けられているかどうかを判定することを含む、請求項7に記載の非一時的コンピュータ可読記憶媒体。
【請求項１３】
1つまたは複数のコンピュータと、
前記1つまたは複数のコンピュータに結合されるとともに、前記1つまたは複数のコンピュータによって実行可能な命令を記憶した1つまたは複数のコンピュータ可読メモリとを具備するシステムであって、前記命令は、
ブロックチェーンネットワークによって維持されるブロックチェーンに記憶されたスマートコントラクトを実行するための要求を、前記ブロックチェーンネットワークのノードによって識別することであって、前記要求が、前記スマートコントラクトの実行を要求している要求アカウントを識別する識別情報を含み、前記スマートコントラクトがプライベート関数およびメイン関数を含む、ことと、
前記スマートコントラクトに関連付けられた前記ブロックチェーンからホワイトリストを、前記ノードによって取り出すことであって、前記ホワイトリストが前記スマートコントラクトを実行する権限を与えられた1つまたは複数のアカウントを識別し、前記ホワイトリストが、前記スマートコントラクトを実行する権限を与えられた前記1つまたは複数のアカウントを記憶する前記スマートコントラクトの外部の場所への参照を含み、前記プライベート関数が、呼出者のアカウントを識別する識別情報をパラメータとし、前記呼出者のアカウントが前記スマートコントラクトを呼び出す権限を与えられているか否かを前記ホワイトリストに基づいて検証するように構成される、ことと、
前記要求アカウントが前記ホワイトリストに含まれることに基づいて、前記要求アカウントが前記スマートコントラクトを実行する権限を与えられていると、前記ノードによって決定することと、
前記要求アカウントが前記スマートコントラクトを実行する権限を与えられていると決定することに応答して、前記スマートコントラクトを前記ノードによって実行することであって、前記ノードによって前記プライベート関数を呼び出すステップを含む、ことと
を含む、システム。
【請求項１４】
前記要求が第1の要求であり、前記要求アカウントが第1のアカウントであり、前記メモリは、
前記第1の要求と異なる前記スマートコントラクトを実行するための第2の要求を、前記ノードによって識別することであって、前記第2の要求が前記第1のアカウントと異なる第2のアカウントを識別する、ことと、
前記第2のアカウントが前記ホワイトリストに含まれていないことに基づいて、前記第2のアカウントが前記スマートコントラクトを実行する権限を与えられていないと、前記ノードによって決定することと、
前記要求アカウントが前記スマートコントラクトを実行する権限を与えられていないと決定することに応答して、前記スマートコントラクトを実行するための前記第2の要求を、前記ノードによって拒否することと
を含む、前記1つまたは複数のコンピュータによって実行可能なさらなる命令を記憶する、請求項13に記載のシステム。
【請求項１５】
前記ホワイトリストが前記スマートコントラクトに関連付けられた実行可能な命令のセット内に含まれる、請求項13に記載のシステム。
【請求項１６】
前記ホワイトリストが前記スマートコントラクトに関連付けられた実行可能な命令のセットとは別個のものである、請求項13に記載のシステム。
【請求項１７】
前記ホワイトリストが前記スマートコントラクトにアクセスする権限を与えられた前記1つまたは複数のアカウントの識別情報を含む、請求項13に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スマートコントラクトのホワイトリストに関する。
【背景技術】
【０００２】
コンセンサスネットワークとも呼ばれる分散台帳システム(DLS)、および/またはブロックチェーンネットワークは、参加エンティティが安全に、そして不変にデータを記憶することを可能にする。DLSは、特定のユースケースを参照することなく、一般にブロックチェーンネットワークと呼ばれる。ブロックチェーンネットワークのタイプの例には、パブリック・ブロックチェーン・ネットワーク、プライベート・ブロックチェーン・ネットワーク、およびコンソーシアム・ブロックチェーン・ネットワークが含まれる。コンソーシアム・ブロックチェーン・ネットワークは、コンセンサスプロセスを制御するエンティティの選択されたグループに対して提供され、アクセス制御層を含む。
【０００３】
スマートコントラクトは、ブロックチェーンネットワークによって記憶され実行される実行可能なソフトウェア命令のセットである。一般に、スマートコントラクトは暗号化されずに記憶されており、従ってブロックチェーンネットワークのすべての参加者に閲覧可能である。ブロックチェーンネットワークの参加者は、自身のスマートコントラクトを書き出し発行することができ、また、一般に、ブロックチェーンネットワークに既に展開されているスマートコントラクトを呼び出すことができる。スマートコントラクトにおいて使用できる命令のセットは、一般にチューリング完全なものであるため、スマートコントラクトは異なるビジネスシナリオをサポートする複雑なロジックに対応することができる。
【０００４】
スマートコントラクトの複雑性は、セキュリティリスクを引き起こすことがある。スマートコントラクトのセキュリティリスクは、影響を与える可能性のあるアカウントの集合から生じることが多い。攻撃者は、展開されたスマートコントラクトの脆弱性を悪用して、スマートコントラクトによって制御される資金を攻撃者のアカウントにリダイレクトするためのトランザクションを構築することができる。スマートコントラクトに関連付けられたこれらのセキュリティリスクに対処するための解決策は、有利であろう。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本明細書の実施形態は、スマートコントラクトのためのアカウントホワイトリストを実施するためのコンピュータ実装方法を含む。より詳細には、本明細書の実施形態は、スマートコントラクトの作成者が、どのアカウントがスマートコントラクトを呼び出すことができるかを指定するホワイトリストを定義することを可能にする技術に向けられている。
【課題を解決するための手段】
【０００６】
いくつかの実施形態では、アクションは、ブロックチェーンネットワークによって維持されるブロックチェーンに記憶されたスマートコントラクトを実行するための要求を、ブロックチェーンネットワークのノードによって識別するステップであって、要求が、スマートコントラクトの実行を要求している要求アカウントを識別する、ステップと、スマートコントラクトに関連付けられたブロックチェーンからホワイトリストを、ノードによって取り出すステップであって、ホワイトリストがスマートコントラクトを実行する権限を与えられた1つまたは複数のアカウントを識別する、ステップと、要求アカウントがホワイトリストに含まれることに基づいて、要求アカウントがスマートコントラクトを実行する権限を与えられていると、ノードによって決定するステップと、要求アカウントがスマートコントラクトを実行する権限を与えられていると決定することに応答して、スマートコントラクトをノードによって実行するステップとを含む。他の実施形態は、コンピュータ記憶デバイス上に符号化された、方法のアクションを実行するように構成された、対応するシステム、装置、およびコンピュータプログラムを含む。
【０００７】
これらの実施形態および他の実施形態はそれぞれ、オプションとして、以下の特徴の1つまたは複数を含んでもよい。
【０００８】
ある場合には、要求が第1の要求であり、要求アカウントが第1のアカウントであり、方法は、第1の要求と異なるスマートコントラクトを実行するための第2の要求を、ノードによって識別するステップであって、第2の要求が第1のアカウントと異なる第2のアカウントを識別する、ステップと、第2のアカウントがホワイトリストに含まれていないことに基づいて、第2のアカウントがスマートコントラクトを実行する権限を与えられていないと、ノードによって決定するステップと、要求アカウントがスマートコントラクトを実行する権限を与えられていないと決定することに応答して、スマートコントラクトを実行するための第2の要求を、ノードによって拒否するステップとを含む。
【０００９】
いくつかの実施形態では、ホワイトリストは、スマートコントラクトに関連付けられた実行可能な命令のセット内に含まれる。
【００１０】
場合によっては、ホワイトリストは、スマートコントラクトに関連付けられた実行可能な命令のセットとは別個のものである。
【００１１】
いくつかの実施形態では、ホワイトリストは、スマートコントラクトにアクセスする権限を与えられた1つまたは複数のアカウントの識別情報を含む。
【００１２】
場合によっては、ホワイトリストは、スマートコントラクトにアクセスする権限を与えられた1つまたは複数のアカウントを記憶するスマートコントラクトの外部の場所への参照を含む。
【００１３】
場合によっては、ホワイトリストは、1つまたは複数のアカウントに関連付けられたエンティティを識別し、要求アカウントがスマートコントラクトを実行する権限を与えられていると決定することが、要求アカウントがエンティティに関連付けられているかどうかを判定することを含む。
【００１４】
本明細書はまた、1つまたは複数のプロセッサに結合されるとともに、命令を記憶する1つまたは複数の非一時的コンピュータ可読記憶媒体を提供し、命令は、1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサに、本明細書に提供される方法の実施形態に従う動作を実行させる。
【００１５】
本明細書は、本明細書に提供される方法を実施するためのシステムをさらに提供する。システムは、1つまたは複数のプロセッサと、命令を記憶した、1つまたは複数のプロセッサに結合されたコンピュータ可読記憶媒体とを含み、命令は、1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサに本明細書に提供される方法の実施形態に従う動作を実行させる。
【００１６】
本明細書に従う方法が、本明細書に記載の態様および特徴の任意の組み合わせを含み得ることが理解される。すなわち、本明細書に従う方法は、本明細書に具体的に記載される態様および特徴の組み合わせに限定されるものではないが、提供される態様および特徴の任意の組み合わせを含む。
【００１７】
本明細書の1つまたは複数の実施形態の詳細は、添付の図面および以下の説明に記載される。本明細書の他の特徴および利点は、明細書および図面ならびに特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【００１８】
【図１】本明細書の実施形態を実行するために使用できる環境の一例を示す図である。
【図２】本明細書の実施形態による、概念的アーキテクチャの一例を示す図である。
【図３】本明細書の実施形態による、スマートコントラクトのホワイトリストを有効にするための環境の一例を示す図である。
【図４】本明細書の実施形態に従って実行され得る信号の流れの一例を示す図である。
【図５】本明細書の実施形態に従って実行され得るプロセスの一例を示す図である。
【図６】本明細書の実施形態による、装置のモジュールの一例を示す図である。
【発明を実施するための形態】
【００１９】
様々な図面における同様の参照記号は、同様の要素を示す。
【００２０】
本明細書の実施形態は、スマートコントラクトのためのアカウントホワイトリストを実施するためのコンピュータ実装方法を含む。より詳細には、本明細書の実施形態は、スマートコントラクトの作成者が、どのアカウントがスマートコントラクトを呼び出すことができるかを指定するホワイトリストを定義することを可能にする技術に向けられている。
【００２１】
本明細書の実施形態のためのさらなるコンテキストを提供するため、上に紹介したように、コンセンサスネットワーク(例えば、ピアツーピアノードで構成される)とも呼ばれ得る分散台帳システム(DLS)およびブロックチェーンネットワークは、参加エンティティが安全にかつ不変にトランザクションを実行し、データを記憶することを可能にする。ブロックチェーンという用語は、本明細書では、特定のユースケースを参照することなく、一般にDLSを指すために使用される。
【００２２】
ブロックチェーンは、トランザクションが不変であり、後に検証できるようにトランザクションを記憶するデータ構造である。ブロックチェーンは、1つまたは複数のブロックを含む。チェーン内の各ブロックは、前のブロックの暗号ハッシュを含めることによって、チェーン内の直前のブロックにリンクされる。各ブロックはまた、タイムスタンプ、自身の暗号ハッシュ、および1つまたは複数のトランザクションを含む。ブロックチェーンネットワークのノードによってすでに検証されたトランザクションは、ハッシュ化され、マークル(Merkle)ツリーにエンコードされる。マークルツリーは、ツリーのリーフノードでのデータがハッシュ化され、ツリーの各ブランチのすべてのハッシュがブランチのルートで連結されるデータ構造である。このプロセスは、ツリー全体のルートに至るまでツリーを継続し、ツリー内のすべてのデータを表すハッシュを記憶する。ツリーに記憶されているトランザクションであるとされるハッシュは、ツリーの構造と一致しているかどうかを判定することによって、すぐに検証することができる。
【００２３】
ブロックチェーンは、トランザクションを記憶するためのデータ構造であるが、ブロックチェーンネットワークは、1つまたは複数のブロックチェーンを管理、更新、および維持するコンピューティングノードのネットワークである。上に紹介したように、ブロックチェーンネットワークは、パブリック・ブロックチェーン・ネットワーク、プライベート・ブロックチェーン・ネットワーク、またはコンソーシアム・ブロックチェーン・ネットワークとして提供され得る。
【００２４】
一般に、コンソーシアム・ブロックチェーン・ネットワークは、参加エンティティ間でプライベートである。コンソーシアム・ブロックチェーン・ネットワークでは、コンセンサスプロセスは、権限を与えられたノードのセットによって制御され、1つまたは複数のノードは、それぞれのエンティティ(例えば、金融機関、保険会社)によって運用される。例えば、10のエンティティ(例えば、金融機関、保険会社)からなるコンソーシアムは、コンソーシアム・ブロックチェーン・ネットワークを運用することができ、その各々は、コンソーシアム・ブロックチェーン・ネットワークにおいて少なくとも1つのノードを運用する。従って、コンソーシアム・ブロックチェーンネットワークは、参加エンティティに関するプライベートネットワークと見なすことができる。いくつかの例では、各エンティティ(ノード)は、ブロックを有効にしてブロックチェーンに追加するために各ブロックに署名しなければならない。いくつかの例では、少なくともエンティティ(ノード)のサブセット(例えば、少なくとも7つのエンティティ)は、ブロックを有効にしてブロックチェーンに追加するために、すべてのブロックに署名しなければならない。
【００２５】
本明細書の実施形態は、任意の適切なタイプのブロックチェーンネットワークにおいて実現可能であると考えられる。
【００２６】
本明細書の実施形態は、上述の文脈を考慮して、本明細書においてさらに詳細に説明される。より詳細には、上に紹介したように、本明細書の実施形態は、スマートコントラクトの作成者が、どのアカウントがスマートコントラクトを呼び出すことができるかを指定するホワイトリストを定義することを可能にする技術に向けられている。
【００２７】
一般に、スマートコントラクトは、ブロックチェーンに記憶され、ブロックチェーンネットワークのノードによって実行される1つまたは複数のコンピュータ命令のセットである。スマートコントラクト用のコードは、一般にブロックチェーンネットワークのノードによって実行可能な形式に変換され(例えばバイトコード)、バイトコード自体またはスマートコントラクトバイトコードを取り出すように構成されたバイトコードのいずれかがブロックチェーンに記憶される。次いで、スマートコントラクトコードにおいて定義された関数は、ブロックチェーンネットワークの参加者によって呼び出され、呼び出された関数の命令をノードに実行させる。
【００２８】
本明細書は、スマートコントラクトの作成者が、スマートコントラクトを呼び出すことが許可されているブロックチェーンネットワークのアカウントのリスト(ホワイトリスト)を指定できる技術を説明する。ブロックチェーンネットワークの参加者がブロックチェーンネットワークによって管理されたブロックチェーン内に展開されたスマートコントラクトを呼び出すと、参加者は呼び出しの一部としてアカウントを提供する。ブロックチェーンネットワークは、参加者のアカウントについてスマートコントラクトに関連付けられたホワイトリストをチェックする。参加者のアカウントがホワイトリストにある場合、ブロックチェーンネットワークはスマートコントラクトの呼び出しを実行する。参加者のアカウントがホワイトリストにない場合、ブロックチェーンネットワークはスマートコントラクトの呼び出しを実行しない。ブロックチェーンネットワークはまた、参加者のスマートコントラクトへのアクセスの失敗した試みの記録を記憶してよい。
【００２９】
図1は、本明細書の実施形態を実行するために使用され得る環境100の一例を示す。いくつかの例では、環境100は、ブロックチェーンネットワーク102にエンティティが参加することを可能にする。環境100は、コンピューティングデバイス106、108、およびネットワーク110を含む。いくつかの例では、ネットワーク110は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、インターネット、またはそれらの組み合わせを含み、ウェブサイト、ユーザデバイス(例えば、コンピューティングデバイス)、およびバックエンドシステムを接続する。いくつかの例では、ネットワーク110は、有線および/または無線通信リンクを介してアクセスされ得る。いくつかの例では、ネットワーク110は、ブロックチェーンネットワーク102との通信を可能にし、ブロックチェーンネットワーク102内での通信を可能にする。一般に、ネットワーク110は、1つまたは複数の通信ネットワークを表す。場合によっては、コンピューティングデバイス106、108は、クラウドコンピューティングシステム(図示せず)のノードであってもよく、あるいは、各コンピューティングデバイス106、108は、ネットワークによって相互接続され、分散処理システムとして機能する複数のコンピュータを含む別個のクラウドコンピューティングシステムであってもよい。
【００３０】
図示された例では、コンピューティングシステム106、108は、それぞれブロックチェーンネットワーク102のノードとして参加することを可能にする任意の適切なコンピューティングシステムを含むことができる。コンピューティングデバイスの例には、限定ではなく、サーバ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピューティングデバイス、およびスマートフォンが含まれる。いくつかの例では、コンピューティングシステム106、108は、ブロックチェーンネットワーク102と相互作用するための1つまたは複数のコンピュータ実装サービスをホストする。例えば、コンピューティングシステム106は、第1のエンティティ(例えば、参加者A)が、1つまたは複数の他のエンティティ(例えば、他の参加者)とのトランザクションを管理するために使用するトランザクション管理システムなどの第1のエンティティのコンピュータ実装サービスをホストすることができる。コンピューティングシステム108は、第2のエンティティ(例えば、参加者B)が、1つまたは複数の他のエンティティ(例えば、他の参加者)とのトランザクションを管理するために使用するトランザクション管理システムなどの第2のエンティティのコンピュータ実装サービスをホストすることができる。図1の例では、ブロックチェーンネットワーク102は、ノードのピアツーピアネットワークとして表され、コンピューティングシステム106、108は、ブロックチェーンネットワーク102に参加する第1のエンティティおよび第2のエンティティのノードをそれぞれ提供する。
【００３１】
図2は、本明細書の実施形態による、概念的アーキテクチャ200の一例を示す。概念的アーキテクチャ200の例は、参加者A、参加者B、および参加者Cにそれぞれ対応する参加者システム202、204、206を含む。各参加者(例えば、ユーザ、企業)は、複数のノード214を含むピアツーピアネットワークとして提供されるブロックチェーンネットワーク212に参加し、複数のノードの少なくともいくつかはブロックチェーン216に情報を不変に記録する。単一のブロックチェーン216がブロックチェーンネットワーク212内に概略的に示されているが、本明細書でさらに詳細に説明するように、ブロックチェーン216の複数のコピーが提供され、ブロックチェーンネットワーク212にわたって維持される。
【００３２】
図示された例では、各参加者システム202、204、206は、各参加者A、参加者B、および参加者Cによって、またはそれらに代わって提供され、ブロックチェーンネットワーク内の各ノード214として機能する。本明細書で使用されるように、ノードは一般に、ブロックチェーンネットワーク212に接続され、各参加者がブロックチェーンネットワークに参加することを可能にする個々のシステム(例えば、コンピュータ、サーバ)を指す。図2の例では、参加者は各ノード214に対応する。しかしながら、参加者はブロックチェーンネットワーク212内の複数のノード214を運用することができ、および/または複数の参加者はノード214を共有することができると考えられる。いくつかの例では、参加者システム202、204、206は、プロトコル(例えば、ハイパーテキスト転送プロトコルセキュア(HTTPS))、および/またはリモートプロシージャコール(RPC)を使用して、ブロックチェーンネットワーク212と通信するか、またはブロックチェーンネットワーク212を介して通信する。
【００３３】
ノード214は、ブロックチェーンネットワーク212内で様々な程度に参加をすることができる。例えば、いくつかのノード214は、コンセンサスプロセスに参加することができ(例えば、ブロックチェーン216にブロックを追加するマイナーノード(miner node)として)、一方、他のノード214はコンセンサスプロセスに参加しない。別の例として、いくつかのノード214はブロックチェーン216の完全なコピーを記憶し、一方、他のノード214はブロックチェーン216の部分のコピーのみを記憶する。例えば、データアクセス権は、各参加者が各システム内に記憶するブロックチェーンデータを制限することができる。図2の例では、参加者システム202、204、206は、ブロックチェーン216の完全なコピー216'、216'、216'''をそれぞれ記憶する。
【００３４】
ブロックチェーン(例えば、図2のブロックチェーン216)は、各ブロックがデータを記憶する、ブロックのチェーンで構成される。データの例には、2人以上の参加者間のトランザクションを表すトランザクションデータが含まれる。本明細書では、トランザクションを非限定的な例として使用するが、任意の適切なデータ(例えば、文書、画像、ビデオ、オーディオ)をブロックチェーンに記憶することができると考えられる。トランザクションの例には、限定ではなく、価値のあるもの(例えば、資産、製品、サービス)の交換が含まれ得る。トランザクションデータは、ブロックチェーン内に不変に記憶される。つまり、トランザクションデータは変更できない。
【００３５】
ブロックに記憶する前に、トランザクションデータはハッシュ化される。ハッシュ化は、トランザクションデータ(ストリングデータとして提供される)を固定長ハッシュ値(ストリングデータとしても提供される)に変換するプロセスである。ハッシュ値を解除してトランザクションデータを取得することはできない。ハッシュ化は、トランザクションデータにわずかな変化があっても、完全に異なるハッシュ値をもたらすことを保証する。さらに、上述のように、ハッシュ値は固定長である。つまり、トランザクションデータのサイズにかかわらず、ハッシュ値の長さは固定である。ハッシュ化は、ハッシュ関数を通してトランザクションデータを処理してハッシュ値を生成することを含む。ハッシュ関数の例には、限定ではなく、256ビットのハッシュ値を出力するセキュアハッシュアルゴリズム(SHA)-256が含まれる。
【００３６】
複数のトランザクションのトランザクションデータはハッシュ化され、ブロックに記憶される。例えば、2つのトランザクションのハッシュ値が提供され、それ自身が別のハッシュを提供するためにハッシュ化される。このプロセスは、ブロックに記憶されるべきすべてのトランザクションに対して単一のハッシュ値が提供されるまで、繰り返される。このハッシュ値はマークルルートハッシュと呼ばれ、ブロックのヘッダに記憶される。トランザクションのいずれかが変更されると、ハッシュ値が変更され、最終的にマークルルートハッシュが変更される。
【００３７】
ブロックは、コンセンサスプロトコルを介してブロックチェーンに追加される。ブロックチェーンネットワーク内の複数のノードがコンセンサスプロトコルに参加し、ブロックチェーンにブロックを追加するために競合する。このようなノードはマイナー(またはマインダーノード(minder node))と呼ばれる。上に紹介したPOWは、非限定的な例として使用される。
【００３８】
マイナーノードは、トランザクションをブロックチェーンに追加するためにコンセンサスプロセスを実行する。コンセンサスプロセスには複数のマイナーノードが参加するが、ブロックチェーンにブロックを書き込むことができるのは1つのマイナーノードだけである。つまり、コンセンサスプロセスにおいてマイナーノードが競合し、ブロックチェーンにブロックを追加する。より詳細には、マイナーノードは、トランザクションプールから保留中のトランザクションを定期的に収集する(例えば、もしあれば、ブロックに含めることができるトランザクションの数についてあらかじめ定義された制限まで)。トランザクションプールは、ブロックチェーンネットワークの参加者からのトランザクションメッセージを含む。マイナーノードはブロックを構築し、トランザクションをブロックに追加する。ブロックにトランザクションを追加する前に、マイナーノードは、トランザクションのいずれかがブロックチェーンのブロックにすでに含まれているかどうかをチェックする。トランザクションがすでに別のブロックに含まれている場合、トランザクションは廃棄される。
【００３９】
マイナーノードはブロックヘッダを生成し、ブロック内のすべてのトランザクションをハッシュ化し、そのブロック内のすべてのトランザクションに単一のハッシュ値(マークルルートハッシュ)が提供されるまで、ペア内のハッシュ値を組み合わせて、さらなるハッシュ値を生成する。このハッシュはブロックヘッダに追加される。マイナーはまた、ブロックチェーン内の最新のブロック(つまり、ブロックチェーンに追加された最後のブロック)のハッシュ値を決定する。マイナーノードはまた、ノンス値を追加し、ブロックヘッダにタイムスタンプを追加する。マイニングプロセスでは、マイナーノードは必要なパラメータを満たすハッシュ値を見つけようとする。マイナーノードは、必要なパラメータを満たすハッシュ値を見つけるまで、ナンス値を変更し続ける。
【００４０】
ブロックチェーンネットワークのすべてのマイナーは、必要なパラメータを満たすハッシュ値を見つけようとし、このようにして互いに競合する。最終的には、マイナーノードの1つが必要なパラメータを満たすハッシュ値を見つけ、これをブロックチェーンネットワークの他のすべてのマイナーノードに知らせる。他のマイナーノードはハッシュ値を検証し、正しいと判定された場合、ブロック内の各トランザクションを検証し、ブロックを受け入れ、ブロックチェーンのコピーにブロックを追加する。このようにして、ブロックチェーンのグローバル状態は、ブロックチェーンネットワーク内の全てのマイナーノードにわたって一貫している。上述のプロセスはPOWのコンセンサスプロトコルである。
【００４１】
非限定的な例が、図2を参照して提供される。この例では、参加者Aは参加者Bに送金を望む。参加者Aはトランザクションメッセージ(例えば、From、To、Valueフィールドを含む)を生成し、トランザクションメッセージをブロックチェーンネットワークに送信し、ブロックチェーンネットワークはトランザクションメッセージをトランザクションプールに追加する。ブロックチェーンネットワーク内の各マイナーノードはブロックを作成し、トランザクションプールからすべてのトランザクションを受け取り(例えば、もしあれば、ブロックに追加可能なトランザクションの数についてあらかじめ定義された制限まで)、トランザクションをブロックに追加する。このようにして、参加者Aによって発行されたトランザクションは、マイナーノードのブロックに追加される。
【００４２】
いくつかのブロックチェーンネットワークでは、トランザクションのプライバシーを維持するために暗号が実装される。例えば、ブロックチェーンネットワーク内の他のノードがトランザクションの詳細を判別できないように、2つのノードがトランザクションをプライベートに保ちたい場合、ノードはトランザクションデータを暗号化することができる。暗号化方法の例は、限定ではなく、対称暗号化および非対称暗号化を含む。対称暗号化とは、暗号化(平文から暗号文を生成する)と復号(暗号文から平文を生成する)の両方に単一の鍵を使用する暗号化プロセスを指す。対称暗号化では、同じ鍵が複数のノードに利用可能であるため、各ノードは、暗号/復号トランザクションデータを利用できる。
【００４３】
非対称暗号は、各々が秘密鍵と公開鍵を含む鍵ペアを使用し、秘密鍵はそれぞれのノードにのみ知られ、公開鍵はブロックチェーンネットワーク内の任意のノードまたはすべての他のノードに知られている。ノードは、別のノードの公開鍵を使用してデータを暗号化することができ、暗号化されたデータは、他のノードの秘密鍵を使用して復号化することができる。例えば、再度図2を参照すると、参加者Aは、参加者Bの公開鍵を用いてデータを暗号化し、暗号化データを参加者Bに送信することができる。参加者Bは、その秘密鍵を用いて暗号化データ(暗号文)を復号化し、元のデータ(平文)を抽出することができる。ノードの公開鍵で暗号化されたメッセージは、ノードの秘密鍵を使用してのみ復号化できる。
【００４４】
非対称暗号化は、トランザクションの参加者がトランザクションの他の参加者とそのトランザクションの有効性とを確認することを可能にするデジタル署名を提供するために使用される。例えば、ノードはメッセージにデジタル署名することができ、別のノードは、参加者Aのデジタル署名に基づいてノードによってメッセージが送信されたことを確認することができる。また、デジタル署名は、メッセージが転送中に改ざんされないことを保証するために使用することができる。例えば、再度図2を参照すると、参加者Aは参加者Bにメッセージを送信する。参加者Aはメッセージのハッシュを生成し、次いで、その秘密鍵を使用してハッシュを暗号化し、暗号化されたハッシュとしてデジタル署名を提供する。参加者Aは、デジタル署名をメッセージに付加し、デジタル署名付きメッセージを参加者Bに送信する。参加者Bは、参加者Aの公開鍵を使用してデジタル署名を復号し、ハッシュを抽出する。参加者Bはメッセージをハッシュ化し、ハッシュを比較する。ハッシュが同じ場合、参加者Bは、メッセージが実際に参加者Aからのものであり、改ざんされていなかったことを確認することができる。
【００４５】
図3は、本明細書の実施形態による、スマートコントラクトのホワイトリストを有効にするための環境300の一例を示す。図示のように、スマートコントラクト302は、図2のブロックチェーンネットワーク212のブロックチェーン216に記憶される。スマートコントラクト302は、命令304およびホワイトリスト306を含む。ホワイトリスト306は、1つまたは複数のアカウント308を含む。
【００４６】
上述のように、スマートコントラクト302はブロックチェーン216に記憶される。ブロックチェーンネットワーク212の参加者は、スマートコントラクト302を呼び出すことができ、これによりブロックチェーンネットワーク212のノード214に命令304を実行させることができる。いくつかの実施形態では、ブロックチェーンネットワークのノード214は、スマートコントラクトの呼出者によって指定されたアカウントが、ホワイトリスト306によって指定された1つまたは複数のアカウント308に含まれているかどうかをチェックする。アカウントがホワイトリスト306にある場合、ノード214は命令304を実行する。アカウントがホワイトリスト306にない場合、ノード214は命令304を実行しない。
【００４７】
いくつかの実施形態では、命令304は、ブロックチェーンネットワーク212のノード214によってサポートされる高レベルプログラミング言語、例えば、Solidit、Serpent、LLL、Viper、Mutan、C、C++、Python、Java(登録商標)、Javascript、または他のプログラミング言語などで書かれたソフトウェアコードであってよい。命令304はまた、スマートコントラクト302に関連付けられたソフトウェアコードから生成されたコンパイルされたバイトコードでもよい。
【００４８】
いくつかの実施態様では、ホワイトリスト306およびアカウント308は、スマートコントラクト302と共にブロックチェーン216に記憶される。場合によっては、ホワイトリスト306およびアカウント308は、スマートコントラクト302の命令304内に含まれる。例えば、ホワイトリスト306は、プリプロセッサ命令または特別にフォーマットされたコメントなどの命令304内の指示に含まれてもよい。また、ホワイトリスト306は、関数デコレータなど、スマートコントラクトを作るために使用されるプログラミング言語に特有の構成概念を使用して含まれてもよい。また、ホワイトリスト306は、命令304内の実行可能な命令において指定されてもよい。いくつかの実施形態では、ホワイトリスト306は、ノード214が命令304を実行する前に検査される。場合によっては、例えば、ホワイトリスト306が実行可能な命令に含まれる場合など、ノード214は、ホワイトリスト306を評価する前に命令304の実行を開始することができる。例えば、スマートコントラクト302は、呼出者のアカウントをパラメータとし、呼出者がホワイトリスト306に基づいてスマートコントラクトを呼び出す権限を与えられていることを検証する命令304を用いて定義されたプライベート関数を含んでもよい。このような関数は、スマートコントラクト302が実行されると自動的に呼び出され、スマートコントラクト302は、呼出者のアカウントがコントラクトを実行する権限を与えられていない場合には、単に終了することができる。場合によっては、スマートコントラクト302を実行しているノード214は、ホワイトリスト306をチェックするためにプライベート関数を呼び出し、プライベート関数への呼び出しが、発呼者のアカウントがスマートコントラクト302を実行する権限を与えられていることを示す場合にのみ、スマートコントラクト302のメイン関数を実行することができる。
【００４９】
図4は、本明細書の実施形態に従って実行され得る信号フロー400の一例を示す。示されるように、ブロックチェーンネットワークの参加者402は、ブロックチェーンノード404と通信している。ブロックチェーンノード404は、ブロックチェーンネットワークによって管理されるブロックチェーンに記憶されたスマートコントラクト302から情報を読み取る。
【００５０】
406において、参加者402は、スマートコントラクト302への呼び出しを生成する。呼び出しは、参加者402に関連付けられたアカウントの識別情報を含む。いくつかの実施態様では、参加者402は、宛先アカウントとしてスマートコントラクト302を有するブロックチェーンネットワークにトランザクションをサブミットすることによって、スマートコントラクト302を呼び出す。このような場合、ブロックチェーンノード404は、このトランザクションをスマートコントラクト302への呼び出しとして認識し、信号フロー400の残りの部分を実行する。
【００５１】
408において、ブロックチェーンノード404は、スマートコントラクト302のコントラクトのホワイトリスト(例えば、306)を取り出す。例えば、ブロックチェーンノード404は、スマートコントラクト302が記憶されているブロックチェーン内の場所からホワイトリストを取り出すことができる。
【００５２】
410において、ブロックチェーンノード404は、参加者404によって提供されたアカウントがスマートコントラクト302について取り出されたホワイトリストに含まれているかどうかを判定する。このプロセスは、図3に関して上述される。ブロックチェーンノード404はアカウントがホワイトリストに含まれていると決定する場合、信号フロー400は412に進み、ブロックチェーンノード404はスマートコントラクト302を実行する。ブロックチェーンノード404はアカウントがホワイトリストに含まれていないと決定する場合、信号フロー400は414に進み、ブロックチェーンノード404はスマートコントラクト302を実行せず、代わりにスマートコントラクトの呼び出しを拒否する。場合によっては、ブロックチェーンノード404は、スマートコントラクトの呼び出しが拒否されたことを参加者に通知する。ブロックチェーンノード404はまた、ブロックチェーン内または別の記憶場所に、スマートコントラクト302を実行するための失敗した試みを記録することができる。
【００５３】
図5は、本明細書の実施形態に従って実行され得るプロセス500の一例を示す。いくつかの実施形態では、プロセス400は、1つまたは複数のコンピューティングデバイスを使用して実行される1つまたは複数のコンピュータ実行可能プログラムを使用して実行されてよい。
【００５４】
502において、ブロックチェーンネットワークのノードによって、ブロックチェーンネットワークによって維持されたブロックチェーンに記憶されたスマートコントラクトを実行するための要求が識別され、この要求はスマートコントラクトの実行を要求している要求アカウントを識別する。
【００５５】
504において、ノードは、スマートコントラクトに関連付けられたブロックチェーンからホワイトリストを取り出し、ホワイトリストは、スマートコントラクトを実行する権限を与えられた1つまたは複数のアカウントを識別する。場合によっては、ホワイトリストは、スマートコントラクトに関連付けられた実行可能な命令のセット内に含まれる。いくつかの実施形態では、ホワイトリストは、スマートコントラクトに関連付けられた実行可能な命令のセットとは別個のものである。ホワイトリストは、スマートコントラクトにアクセスする権限を与えられた1つまたは複数のアカウントの識別を含むことができる。場合によっては、ホワイトリストは、スマートコントラクトにアクセスする権限を与えられた1つまたは複数のアカウントを記憶するスマートコントラクトの外部の場所への参照を含む。
【００５６】
506において、ノードは、取り出されたホワイトリストに含まれる要求アカウントに基づいて、要求アカウントがスマートコントラクトを実行する権限を与えられていると決定する。場合によっては、ホワイトリストは、1つまたは複数のアカウントに関連付けられたエンティティを識別し、要求アカウントがスマートコントラクトを実行する権限を与えられていると決定することが、要求アカウントがエンティティに関連付けられているかどうかを判定することを含む。
【００５７】
508において、要求アカウントがスマートコントラクトを実行する権限を与えられているとの決定に応答して、ノードはスマートコントラクトを実行する。
【００５８】
場合によっては、要求は第1の要求であり、要求アカウントは第1のアカウントであり、プロセス500は、第1の要求と異なるスマートコントラクトを実行するための第2の要求を識別するステップであって、第2の要求が第1のアカウントと異なる第2のアカウントを識別する、ステップと、第2のアカウントが取り出されたホワイトリストに含まれていないことに基づいて、第2のアカウントがスマートコントラクトを実行する権限を与えられていないと決定するステップと、要求アカウントがスマートコントラクトを実行する権限を与えられていないと決定することに応答して、スマートコントラクトを実行するための第2の要求を拒否するステップとを含む。
【００５９】
図6は、本明細書の実施形態による、装置600のモジュールの一例を示す。装置600は、コンソーシアム・ブロックチェーン・ネットワークなど、ブロックチェーンネットワーク内のスマートコントラクトへのアクセスを制御するように構成されたブロックチェーンノードであってよい。装置600は、上記の実施形態に対応することができ、装置600は、ブロックチェーンネットワークによって維持されるブロックチェーンに記憶されたスマートコントラクトを実行するための要求を識別するための識別器または識別ユニット602と、要求が、スマートコントラクトの実行を要求している要求アカウントを識別し、スマートコントラクトに関連付けられたブロックチェーンからホワイトリストを取り出すための取り出し器または取り出しユニット604と、ホワイトリストがスマートコントラクトを実行する権限を与えられた1つまたは複数のアカウントを識別し、要求アカウントがホワイトリストに含まれることに基づいて、要求アカウントがスマートコントラクトを実行する権限を与えられていると決定するための決定器または決定ユニット606と、要求アカウントがスマートコントラクトを実行する権限を与えられていると決定することに応答して、スマートコントラクトを実行するための実行器または実行ユニット608とを備える。
【００６０】
前述の実施形態に示されたシステム、装置、モジュール、またはユニットは、コンピュータチップまたはエンティティを使用することによって実装でき、または特定の機能を有する製品を使用することによって実装できる。典型的な実装デバイスは、コンピュータであり、コンピュータはパーソナルコンピュータ、ラップトップコンピュータ、携帯電話、カメラ電話、スマートフォン、個人情報端末、メディアプレーヤ、ナビゲーションデバイス、電子メール送受信デバイス、ゲームコンソール、タブレットコンピュータ、ウェアラブルデバイス、またはこれらのデバイスの任意の組合せであることができる。
【００６１】
装置内の各ユニットの機能および役割の実装プロセスについて、前述の方法で対応するステップの実装プロセスを参照することができる。簡略化のため、ここでは詳細を省略する。
【００６２】
装置の実施形態は、基本的には方法の実施形態に対応するため、関連する部分について、方法の実施形態における関連する記述を参照することができる。前述の装置の実施形態は、単なる例である。別個の部品として記載されるユニットは、物理的に分離されていてもなくてもよく、ユニットとして表示される部品は、物理的ユニットであってもなくてもよく、1つの位置に配置されていてもよく、または多数のネットワークユニット上に分散されていてもよい。モジュールの一部または全部は、本明細書の解決策の目的を達成するために実際の要求に基づいて選択することができる。当業者は、創造的な努力なしに本出願の実施形態を理解しかつ実施することができる。
【００６３】
再度図6を参照すると、これは、ブロックチェーンネットワークにおけるスマートコントラクトへのアクセスを制御するように構成されたブロックチェーンノードの内部機能モジュールおよび構造を例示するものとして解釈することができる。ブロックチェーンノードは、ブロックチェーンネットワークにおけるスマートコントラクトへのアクセスを制御するように構成された装置の一例であり得る。
【００６４】
本明細書に記載される主題の実施形態、アクション、および動作は、デジタル電子回路、実体的に具現化されたコンピュータソフトウェアまたはファームウェア、本明細書に開示される構造およびそれらの構造的等価物を含むコンピュータハードウェア、またはそれらのうちの1つまたは複数の組み合わせで実装することができる。本明細書に記載される主題の実施形態は、データ処理装置による実行のために、またはデータ処理装置の動作を制御するために、コンピュータプログラムキャリア上に符号化された1つまたは複数のコンピュータプログラム、例えば、コンピュータプログラム命令の1つまたは複数のモジュールとして実装することができる。キャリアは、有形の非一時的コンピュータ記憶媒体であってもよい。代替的に、または追加として、キャリアは、人工的に生成された伝搬信号、例えば、データ処理装置による実行のための適切な受信装置への送信のための情報を符号化するために生成される機械生成の電気的、光学的、または電磁的信号であってもよい。コンピュータ記憶媒体は、機械可読記憶デバイス、機械可読記憶基板、ランダムまたはシリアルアクセスメモリデバイス、またはそれらの1つまたは複数の組み合わせであってもよく、またはそれらの一部であってもよい。コンピュータ記憶媒体は伝搬信号ではない。
【００６５】
用語「データ処理装置」は、例えば、プログラマブルプロセッサ、コンピュータ、または複数のプロセッサまたはコンピュータを含む、データを処理するためのあらゆる種類の装置、デバイス、および機械を包含する。データ処理装置は、専用論理回路、例えば、FPGA(field programmable gate array)、ASIC(application specific integrate circuit)、またはGPU(graphics processing unit)を含むことができる。装置はまた、ハードウェアに加えて、コンピュータプログラムの実行環境、例えば、プロセッサファームウェアを構成するコード、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはそれらのうちの1つまたは複数の組み合わせを作成するコードを含むことができる。
【００６６】
プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリケーション、モジュール、ソフトウェアモジュール、エンジン、スクリプト、またはコードと呼ばれあるいは記述され得るコンピュータプログラムは、コンパイル型またはインタプリタ型言語、または宣言型もしくは手続型言語を含む、任意の形式のプログラミング言語で書くことができ、スタンドアロンプログラムとして、またはコンピューティング環境で実行するのに適したモジュール、コンポーネント、エンジン、サブルーチン、または他のユニットとして、任意の形式で展開することができ、この環境は、1つまたは複数の場所においてデータ通信ネットワークによって相互接続された1つまたは複数のコンピュータを含むことができる。
【００６７】
コンピュータプログラムは、ファイルシステム内のファイルに対応してもよいが、必ずしも対応する必要はない。コンピュータプログラムは、他のプログラムまたはデータを保持するファイルの一部、例えばマークアップ言語文書に記憶された1つまたは複数のスクリプト、問題のプログラム専用の1つのファイル、または複数の調整されたファイル、例えば、1つまたは複数のモジュール、サブプログラム、またはコードの一部を記憶するファイルに記憶することができる。
【００６８】
本明細書に記載されるプロセスおよび論理フローは、1つまたは複数のコンピュータプログラムを実行する1つまたは複数のコンピュータによって実行され、入力データについて動作するとともに出力を生成することによって動作を実行することができる。プロセスおよび論理フローはまた、専用論理回路、例えばFPGA、ASIC、またはGPUによって、または専用論理回路と1つまたは複数のプログラムされたコンピュータとの組み合わせによって実行され得る。
【００６９】
コンピュータプログラムの実行に適したコンピュータは、汎用または専用のマイクロプロセッサ、またはその両方、または任意の他の種類の中央処理ユニットに基づくことができる。一般に、中央処理ユニットは、読取り専用メモリまたはランダムアクセスメモリまたはその両方から命令およびデータを受信する。コンピュータの要素は、命令を実行するための中央処理ユニットと、命令およびデータを記憶するための1つまたは複数のメモリデバイスとを含むことができる。中央処理ユニットおよびメモリは、専用論理回路によって補足されるか、または専用論理回路に組み込まれ得る。
【００７０】
一般に、コンピュータは、少なくとも1つの非一時的コンピュータ可読記憶媒体(コンピュータ可読メモリとも呼ばれる)に結合される。コンピュータに結合された記憶媒体は、コンピュータの内部構成要素(例えば、一体型ハードドライブ)または外部構成要素(例えば、ユニバーサルシリアルバス(USB)ハードドライブまたはネットワークを介してアクセスされる記憶システム)であり得る。記憶媒体の例は、例えば、磁気ディスク、磁気光学ディスク、または光ディスク、ソリッドステートドライブ、クラウド記憶システムなどのネットワーク記憶リソース、または他のタイプの記憶媒体を含むことができる。しかしながら、コンピュータはそのようなデバイスを有する必要はない。さらに、コンピュータは、別のデバイス、例えば、ほんの数例を挙げると、携帯電話、個人情報端末(PDA)、モバイルオーディオまたはビデオプレーヤ、ゲームコンソール、全地球測位システム(GPS)受信機、またはポータブル記憶デバイス、例えば、ユニバーサルシリアルバス(USB)フラッシュドライブに埋め込むことができる。
【００７１】
ユーザとの対話を提供するために、本明細書に記載される主題の実施形態は、ユーザに情報を表示するための表示デバイス、例えば、LCD(液晶ディスプレイ)モニタ、およびユーザがコンピュータに入力を提供することができる入力デバイス、例えば、キーボードおよびポインティングデバイス、例えばマウス、トラックボールまたはタッチパッドを備えたコンピュータ上に実装するか、または該コンピュータと通信するように構成することができる。他の種類のデバイスを使用して、ユーザとの対話を提供することができ、例えば、ユーザに提供されるフィードバックは、視覚フィードバック、聴覚フィードバック、または触覚フィードバックのような任意の形態の感覚フィードバックであり得;ユーザからの入力は、音響、言語、または触覚入力を含む任意の形態で受け取ることができる。加えて、コンピュータは、ユーザが使用するデバイスと文書を送受信することによって、例えば、ウェブブラウザから受信した要求に応じてユーザのデバイス上のウェブブラウザにウェブページを送信することによって、または、ユーザデバイス、例えば、スマートフォンまたは電子タブレット上で動作するアプリケーションと対話することによって、ユーザと対話することができる。また、コンピュータは、メッセージングアプリケーションを実行しているスマートフォンなどのパーソナルデバイスにテキストメッセージまたは他の形式のメッセージを送信し、戻りとしてユーザから応答メッセージを受信することによって、ユーザと対話することができる。
【００７２】
本明細書では、システム、装置、およびコンピュータプログラム構成要素に関連して「のように構成された」という用語を使用する。1つまたは複数のコンピュータのシステムが特定の動作またはアクションを実行するように構成されている場合、システムがソフトウェア、ファームウェア、ハードウェア、またはそれらの組み合わせにインストールされていることを意味し、それにより、動作中、システムは操作またはアクションを実行する。1つまたは複数のコンピュータプログラムが特定の動作またはアクションを実行するように構成されている場合、1つまたは複数のプログラムが、データ処理装置によって実行されると、装置に動作またはアクションを実行させる命令を含むことを意味する。専用論理回路が、特定の動作またはアクションを実行するように構成される場合、回路が動作またはアクションを実行する電子論理を有することを意味する。
【００７３】
本明細書は、多くの具体的な実施形態の詳細を含んでいるが、これらは、特許請求の範囲自体によって定義される、請求されているものの範囲についての限定として解釈されるべきではなく、むしろ、特定の実施形態に特有であり得る特徴の説明として解釈されるべきである。別々の実施形態の文脈において本明細書に説明される特定の特徴はまた、単一の実施形態において組み合わせて実現することができる。逆に、単一の実施形態の文脈において説明される様々な特徴はまた、複数の実施形態において別々に、または任意の適切なサブコンビネーションにおいて実現することができる。さらに、特徴は、特定の組み合わせで機能するように上述され、最初はそのように請求されてもよいが、場合によっては、請求された組み合わせからの1または複数の特徴を組み合わせから切り出すことができ、特許請求の範囲は、サブコンビネーションまたはサブコンビネーションの変形を対象とすることができる。
【００７４】
同様に、動作が図面に示され、特定の順序で特許請求の範囲に記載されているが、このことは、そのような動作が、示された特定の順序で、またはシーケンシャルな順序で実行されること、あるいは、望ましい結果を達成するために、全ての図示された動作が実行されることを要求するものと理解されるべきではない。特定の状況では、マルチタスクおよび並列処理が有利であり得る。さらに、上述の実施形態における様々なシステムモジュールおよび構成要素の分離は、全ての実施形態においてそのような分離を必要とするものと理解されるべきではなく、説明されたプログラム構成要素およびシステムは、一般に、単一のソフトウェア製品に一緒に統合され得るか、または複数のソフトウェア製品にパッケージ化され得ることを理解されたい。
【００７５】
主題の特定の実施形態が記載されている。他の実施形態は、以下の特許請求の範囲内にある。例えば、特許請求の範囲に記載されたアクションは、異なる順序で実行することができ、なお望ましい結果を達成することができる。一例として、添付の図に示されているプロセスは、所望の結果を達成するために、必ずしも示されている特定の順序、またはシーケンシャルな順序を必要としない。場合によっては、マルチタスクおよび並列処理が有利であり得る。
【符号の説明】
【００７６】
102  ブロックチェーンネットワーク
106  コンピューティングデバイス
108  コンピューティングシステム
110  ネットワーク
202、204、206  参加者システム
212  ブロックチェーンネットワーク
214  ノード
216  ブロックチェーン
302  スマートコントラクト
304  命令
306  ホワイトリスト
308  アカウント
【図１】
0006858264.tif 000002
【図２】
0006858264.tif 000003
【図３】
0006858264.tif 000004
【図４】
0006858264.tif 000005
【図５】
0006858264.tif 000006
【図６】
0006858264.tif 000007