詳細な説明
[0016] 本明細書の実施形態は、ブロックチェーンシステムにおいて証明書を処理するための方法及び装置を提供する。方法及び装置は、ブロックチェーンシステムにおいてスマートコントラクトを生成させてもよい。スマートコントラクトは、証明書を処理するためのコンピュータ可読命令を含む。スマートコントラクトが生成された後で、方法及び装置は、第1の取引用の第1の要求をブロックチェーンシステムに送信してもよく、第1の取引は、第1の要求に基づいて証明書明細を生成するために、ブロックチェーンシステムにスマートコントラクトを実行させる。方法及び装置は、ブロックチェーンシステムから証明書明細を受信してもよい。方法及び装置は、複数の第2の取引の第2の要求をブロックチェーンシステムに更に送信してもよい。複数の第2の取引は、複数の証明書を生成するために、ブロックチェーンシステムにスマートコントラクトを実行させる。
[0017] 本明細書において開示される実施形態は、1つ又は複数の技術的効果を有する。幾つかの実施形態において、方法及び装置は、証明書明細を生成するために、ブロックチェーンシステムにスマートコントラクトを実行させる。これは、証明書明細が、ブロックチェーンシステム上で公にアクセス可能であるようにすることができ、取引活動の透明性を保証する。幾つかの実施形態において、方法及び装置は、更に、証明書明細に基づいた証明書を生成するために、ブロックチェーンシステムにスマートコントラクトを実行させる。これは、証明書明細において指定された情報を備えた正確な証明書の生成を可能にし、それによって、システム性能を改善し、且つブロックチェーンシステムにおいて契約アカウントを実行するコンピューティングコストを低減する。他の実施形態において、方法及び装置は、証明書を用いるための要求を受信する前に複数の証明書を生成するために、ブロックチェーンシステムに複数の第2の取引を実行させる。これは、証明書の生成を証明書の配送及び消去から分離できるようにし、その結果、ブロックチェーンの性能に対する証明書の処理の影響が低減される。ブロックチェーンシステム上の証明書の生成はまた、取引活動の追加の透明性を提供する。例えばブロックチェーンシステムのノードは、証明書明細に基づいて証明書を検証してもよい。
[0018] 以下の説明は、実施形態の詳細を提供する。実施形態において、ブロックチェーンは、取引が不変であり、且つ、後に検証され得る方法で、データ、例えば取引を記憶するデータ構造である。ブロックチェーンは、1つ又は複数のブロックを含む。各ブロックは、前のブロックの暗号ハッシュを含むことによって、ブロックチェーンにおいて、各ブロックの直前のブロックにリンクされる。各ブロックはまた、タイムスタンプ、それ自体の暗号ハッシュ、及び1つ又は複数の取引を含んでもよい。取引は、一般に、ブロックチェーンシステムのノードによって既に検証されているが、マークルツリーなどのデータ構造にハッシュされコード化されてもよい。マークルツリーにおいて、ツリーのリーフノードにおけるデータは、ハッシュされ、ツリーの各ブランチにおける全てのハッシュは、ブランチのルートにおいて連結されてもよい。このプロセスは、ツリー全体のルートまでツリーの上方へ継続し、ツリー全体は、ツリーにおける全てのデータを表すハッシュを記憶する。ツリーに記憶された取引であることを意味するハッシュは、それが、ツリーの構造と一致しているかどうかを判定することによって、素早く検証することができる。
[0019] ブロックチェーンシステムは、1つ又は複数のブロックチェーンを管理し、更新し、且つ維持するコンピューティングノードのネットワークを含む。そのネットワークは、パブリックブロックチェーンネットワーク、プライベートブロックチェーンネットワーク、又はコンソーシアムブロックチェーンネットワークであってもよい。例えば、数百、数千、又は数百万ものエンティティなどの非常に多数のエンティティが、パブリックブロックチェーンネットワークにおいて動作することが可能であり、エンティティのそれぞれは、パブリックブロックチェーンネットワークにおける少なくとも1つのノードを操作する。従って、パブリックブロックチェーンネットワークは、参加するエンティティに関してはパブリックネットワークと見なすことができる。時には、エンティティ(ノード)の大多数は、ブロックが有効にされ、且つブロックチェーンネットワークのブロックチェーンに追加されるために、全てのブロックに署名しなければならない。パブリックブロックチェーンネットワークの例には、ブロックチェーンと呼ばれる分散台帳を活用する特定のピアツーピア決済ネットワークを含む。
[0020] 一般に、パブリックブロックチェーンネットワークは、公開取引を支援し得る。公開取引は、パブリックブロックチェーンネットワークにおける全てのノードと共有され、且つグローバルブロックチェーンに記憶される。グローバルブロックチェーンは、全てのノードにわたって複写されるブロックチェーンであり、全てのノードは、グローバルブロックチェーンに対して合意している。コンセンサス(例えばブロックチェーンへのブロックの追加に対する同意)を達成するために、コンセンサスプロトコルが、パブリックブロックチェーンネットワークにおいて実行される。コンセンサスプロトコルの例には、プルーフオブワーク(POW)(例えば幾つかの暗号通貨ネットワークにおいて実行される)、プルーフオブステーク(POS)、及びプルーフオブオーソリティ(POA)を含む。
[0021] 一般に、プライベートブロックチェーンネットワークは、特定のエンティティ用に提供されてもよく、プライベートブロックチェーンネットワークは、読み出し及び書き込み許可を中央で制御する。エンティティは、どのノードが、ブロックチェーンネットワークに参加できるかを制御する。結果として、プライベートブロックチェーンネットワークは、一般に、誰がネットワークに参加できるか、及びその参加レベル(例えば一定の取引においてのみ)に対して制限をする許可制ネットワークと呼ばれる。様々なタイプのアクセス制御機構を用いることができる(例えば既存の参加者は、新しいエンティティの追加について投票し、規制機関は、承認を制御することができる)。
[0022] 一般に、コンソーシアムブロックチェーンネットワークは、参加するエンティティ間でプライベートであってもよい。コンソーシアムブロックチェーンネットワークにおいて、コンセンサスプロセスは、認定されたノードセットによって制御され、1つ又は複数のノードは、それぞれのエンティティ(例えば金融機関、保険会社)によって操作される。例えば10個のエンティティ(例えば金融機関、保険会社)のコンソーシアムは、コンソーシアムブロックチェーンネットワークを操作することができ、エンティティのそれぞれは、コンソーシアムブロックチェーンネットワークにおける少なくとも1つのノードを操作する。従って、コンソーシアムブロックチェーンネットワークは、参加するエンティティに関してはプライベートネットワークと見なすことができる。幾つかの例において、各エンティティ(ノード)は、ブロックが有効にされ、且つブロックチェーンに追加されるために、全てのブロックに署名しなければならない。幾つかの例において、エンティティ(ノード)の少なくともサブセット(例えば少なくとも7つのエンティティ)は、ブロックが有効にされ、且つブロックチェーンに追加されるために、全てのブロックに署名しなければならない。
[0023] 図1は、実施形態に従って、ブロックチェーンシステム100の概略図である。図1を参照すると、ブロックチェーンシステム100は、ブロックチェーン120上で動作するように構成された複数のノード、例えばノード102−110を含んでもよい。ノード102−110は、ピアツーピア(P2P)ネットワークなどのネットワーク112を形成してもよい。ノード102−110のそれぞれは、ブロックチェーン120のコピーを記憶するように構成された、コンピュータ若しくはコンピュータシステムなどのコンピューティング装置であってもよく、又はプロセス若しくはアプリケーションなど、コンピューティング装置上で実行されるソフトウェアであってもよい。ノード102−110のそれぞれは、一意の識別子を有してもよい。
[0024] ブロックチェーン120は、図1におけるブロックB1−B5など、データブロックの形における増え続ける記録リストを含んでもよい。ブロックB1−B5のそれぞれは、タイムスタンプ、前のブロックの暗号ハッシュ、及び現在のブロックのデータを含んでもよく、それらは、金融取引などの取引であってもよい。例えば、図1に示されているように、ブロックB5は、タイムスタンプ、ブロックB4の暗号ハッシュ、及びブロックB5の取引データを含んでもよい。また、例えば、ハッシュ演算は、前のブロックの暗号ハッシュを生成するために、前のブロック上で実行されてもよい。ハッシュ演算は、SHA−256などのハッシュアルゴリズムを通して、様々な長さの入力を固定長の暗号出力に変換してもよい。
[0025] ノード102−110は、ブロックチェーン120上で操作を実行するように構成されてもよい。例えば、ノード、例えばノード102が、ブロックチェーン120上に新しいデータを記憶したい場合に、そのノードは、ブロックチェーン120に追加される新しいブロックを生成し、且つ新しいブロックをネットワーク112における他のノード、例えばノード104−110にブロードキャストしてもよい。新しいブロックの合法性、例えばその署名及び取引の有効性に基づいて、他のノードは、新しいブロックを受け入れることを決定してもよく、その結果、ノード102及び他のノードは、ブロックチェーン120のそれらのそれぞれのコピーに新しいブロックを追加してもよい。このプロセスが繰り返されるので、ますます多くのデータブロックが、ブロックチェーン120に追加され得る。
[0026] ブロックチェーンシステム100は、1つ又は複数のスマートコントラクトに従って動作してもよい。各スマートコントラクトは、契約の交渉又は遂行を促進、検証、又は執行するために、ブロックチェーン120に組み込まれるコンピュータコードの形のコンピュータプロトコルであってもよい。例えば、ブロックチェーンシステム100のユーザは、C++、Java(登録商標)(ジャバ)、Solidity(ソリディティ)、Python(パイソン)などのプログラミング言語を用いて、スマートコントラクトに同意条件をプログラムしてもよく、条件が満たされた場合に、スマートコントラクトは、例えば取引を実行するために、ブロックチェーンシステム100によって自動的に実行されてもよい。また例えばスマートコントラクトは、複数のサブルーチン又は関数を含んでもよく、サブルーチン又は関数のそれぞれは、特定のタスクを実行するプログラム命令のシーケンスであってもよい。スマートコントラクトは、人とのインタラクションなしに完全に又は部分的に実行される操作コードであってもよい。
[0027] ノード102−110のそれぞれが、ブロックチェーン120のコピーを記憶してもよいので、ノード102−110のそれぞれはまた、ブロックチェーン120に含まれるスマートコントラクトのコピーへのアクセスを有してもよい。実施形態において、スマートコントラクトは、例えばスマートコントラクトが操作コードにコンパイルされた後で、ブロックチェーン120上のアドレスを割り当てられてもよい。スマートコントラクトのアドレスは、ブロックチェーン120上でスマートコントラクトの位置を特定するように構成又は使用される。
[0028] 実施形態において、ブロックチェーンシステム100におけるノード(例えばノード102)は、スマートコントラクトのコピーに基づいて取引を実行してもよい。取引を含む新しいブロックがブロックチェーンシステム100にブロードキャストされた後で、ブロックチェーンシステム100における他のノードは、新しいブロックを検証してもよい。新しいブロックがブロックチェーンシステム100における大多数又は全てのノードによって検証された後で、新しいブロックは、それらのノード上におけるブロックチェーン120のそれぞれのコピーに追加されてもよく、取引は完了する。
[0029] 図2は、本明細書の実施形態に従って、ブロックチェーンシステムにおけるノード、例えばノード102(図1)を実現するためのコンピューティング装置200の概略図である。図2を参照すると、コンピューティング装置200は、通信インターフェース202、プロセッサ204、及びメモリ206を含んでもよい。
[0030] 通信インターフェース202は、ネットワークにおいて、コンピューティング装置200と、他のノード、例えばノード104−110(図1)を実現する装置との間の通信を容易にし得る。幾つかの実施形態において、通信インターフェース202は、インターネット標準又はプロトコル、統合サービスデジタルネットワーク(ISDN)標準などの、1つ又は複数の通信標準をサポートし得る。幾つかの実施形態において、通信インターフェース202は、ローカルエリアネットワーク(LAN)カード、ケーブルモデム、衛星モデム、データバス、ケーブル、無線通信チャネル、無線ベースの通信チャネル、セルラー通信チャネル、インターネットプロトコル(IP)ベースの通信装置、又は有線及び/若しくは無線通信用の他の通信装置における、1つ又は複数を含んでもよい。幾つかの実施形態において、通信インターフェース202は、パブリック・クラウド・インフラストラクチャ、プライベート・クラウド・インフラストラクチャ、ハイブリッド・パブリック/プライベート・クラウド・インフラストラクチャに基づいてもよい。
[0031] プロセッサ204は、1つ又は複数の専用処理ユニット、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、又は様々な他のタイプのプロセッサ若しくは処理ユニットを含んでもよい。プロセッサ204は、メモリ206と結合され、且つメモリ206に記憶された命令を実行する。
[0032] メモリ206は、ブロックチェーン120(図1)のコピーなど、プロセッサ実行命令及びデータを記憶してもよい。メモリ206は、スタティックランダムアクセスメモリ(SRAM)、電気的消去可能プログラマブル読み出し専用メモリ(EEPROM)、消去可能プログラマブル読み出し専用メモリ(EPROM)、プログラマブル読み出し専用メモリ(PROM)、読み出し専用メモリ(ROM)、磁気メモリ、フラッシュメモリ、又は磁気若しくは光ディスクなど、任意のタイプの揮発性若しくは不揮発性メモリ装置、又はそれらの組み合わせを含んでもよい。メモリ206における命令が、プロセッサ204によって実行される場合に、コンピューティング装置200は、ブロックチェーン120上で操作を実行してもよい。
[0033] 図1を参照すると、ブロックチェーンシステム100は、販売促進活動、マーケティング活動など、公開データ及び透明性のある条項を含む取引活動において用いられてもよい。例えば商人は、かかる製品を購入しなかった顧客に、クーポンなどの証明書を発行してもよい。ブロックチェーンシステム100を用いることによって、クーポンの発行は、スマートコントラクトを用いて執行されてもよい。例えば顧客が、スマートコントラクトにおいて指定された条項(例えば「消費者は、この製品を購入しなかった」)を満たす場合に、対応するイベントが行われるようにされてもよい(例えば「その消費者クーポンを発行する」)。スマートコントラクトの使用は、契約条項及び条件を透明にし得る。何故なら、スマートコントラクトが、ブロックチェーンに記憶され、ユーザに開放されているからである。
[0034] 証明書は、クーポン、チケット、バウチャーなどを含んでもよい。例えばクーポンは、販売促進活動において用いられ、オンラインプラットホームのユーザに割引を提供してもよい。また例えば、チケットは、イベント(例えばコンサート)又は興味のある場所(例えば観光地、博物館など)において用いられ、イベント又は興味のある場所へのアクセスを提供してもよい。別の例として、休日に、興味対象の場所は、訪問者の往来を管理するために、限られた数のチケットを提供してもよい。これらの例において、証明書は、ユーザの間で人気になり得、証明書を処理するための透明性を更に要求してもよい。ブロックチェーンシステムが、悪意のある者たちによる記憶データの改竄及び操作を防ぎ得、且つブロックチェーンシステムの各ノードが、コピーを含んでもよいので、ブロックチェーンシステムにおける証明書の処理は、信頼できるように且つ検証可能にすることができる。
[0035] 実施形態において、図1における装置130は、ブロックチェーンシステム100とインタラクションするために、ユーザ、例えば商人によって用いられてもよい。装置130は、コンピューティング装置200(図2)に似たコンピューティング装置であってもよく、それは、通信インターフェース、プロセッサ、及びメモリを含んでもよい。幾つかの実施形態において、装置130は、ブロックチェーンシステム100のノードとして動作する。他の実施形態において、装置130は、ノードとして動作せず、ブロックチェーンシステム100の1つ又は複数のノード、例えばノード102−110で確立された接続を通して、ブロックチェーンシステム100とインタラクションしてもよい。接続は、1つ又は複数のアプリケーションプログラミングインターフェース(API)を通して確立されてもよい。ソフト開発キット(SDK)もまた、かかる接続の確立を容易にするために提供されてもよい。
[0036] 図3は、実施形態1による、ブロックチェーンシステム100(図1)などのブロックチェーンシステムにおいて証明書を処理するための方法300の流れ図である。例えば方法300は、証明書を生成するために用いられる。また例えば、方法300は、装置130(図1)の1つ又は複数のプロセッサによって実行されてもよく、1つ又は複数のプロセッサは、ユーザインターフェースシステム及び活動管理システムを実現してもよい。ユーザインターフェースシステムは、データを入力及び出力するために、ユーザ、例えば商人とインタラクションし、且つ証明書を生成するための要求を活動管理システムに送信してもよい。活動管理システムは、実行用にブロックチェーンシステム100への命令又は要求を生成してもよい。幾つかの実施形態において、ブロックチェーンシステムは、コンソーシアムブロックチェーンを実現してもよい。
[0037] 図3を参照すると、ステップ302において、活動管理システムは、スマートコントラクトを生成するための要求をブロックチェーンシステムに送信してもよい。幾つかの実施形態において、スマートコントラクトは、ユーザによって(例えばユーザ生成プログラムコードをブロックチェーンに提示することによって)提供されるか、又はブロックチェーンサービスプロバイダによって提供されるテンプレートスマートコントラクトからユーザによって選択及び構成されてもよい。例えばユーザは、メニューからスマートコントラクトを選択し、且つカスタマイズされたパラメータを提供してもよい。スマートコントラクトは、ユーザによって設定された取引活動の戦略及び規則を表してもよい。例えばクーポンに基づいた販売促進活動において、規則は、顧客ごとに受信されるクーポンの許可される合計値、顧客ごとに受信されるクーポンの許可される総数、クーポンの額面金額、クーポンのタイプ、指定の地理的地域における対象顧客のパーセンテージ、顧客がクーポンを受け取るための方法、顧客がクーポンを用いるための条件及び制約などに対する制限を含んでもよい。
[0038] それに応じて、ステップ304において、ブロックチェーンシステム100は、スマートコントラクトを生成し、且つ生成されたスマートコントラクトのアドレスを返してもよい。スマートコントラクトのアドレスは、複数の数字(例えば160の2進数字)を含んでもよい。幾つかの実施形態において、スマートコントラクトのアドレスは、アドレスに対応するハッシュ値を用いて、記憶され伝送されてもよい。取引が、スマートコントラクトのアドレスに送信される場合に、取引は、スマートコントラクトの対応する機能によって実行されてもよい。スマートコントラクトは、証明書明細生成機能、証明書生成機能、証明書検証機能、又は消去機能などの複数の機能を含んでもよい。生成されたスマートコントラクトが、相異なる要求に従って、クーポンの発行、チケットの発行などの相異なる取引活動用に使用されてもよいことが分かる。
[0039] ステップ306において、活動管理システムは、証明書を生成するための要求をユーザインターフェースシステムから受信してもよい。例えば、ユーザインターフェースシステムは、ユーザ入力に基づいて要求を生成してもよい。証明書を生成するための要求は、生成される証明書に関する情報を含んでもよい。幾つかの実施形態において、証明書に関する情報は、証明書タイプ、各証明書タイプの証明書の数、証明書の総数、又は各証明書の有効期間の少なくとも1つを含んでもよい。例えば、クーポンを生成するための要求は、3ドルの割引用の1,000個のクーポン及び5ドルの割引用の500個のクーポンを生成すること、及びこれらのクーポンが3日間有効であることを要求してもよい。
[0040] ユーザインターフェースシステムから受信された、証明書を生成するための要求に基づいて、活動管理システムは、第1の取引用の第1の要求を生成してもよく、第1の取引は、第1の要求に基づいて証明書明細を生成するために、ブロックチェーンシステムにスマートコントラクトを実行させるために用いられる。ステップ308において、活動管理システムは、第1の取引用の第1の要求をブロックチェーンシステム100に更に送信してもよい。例えば第1の取引用の第1の要求は、ステップ304においてブロックチェーンシステムから受信されたスマートコントラクトのアドレスに送信されてもよい。
[0041] ステップ310において、第1の取引用の第1の要求に応じて、ブロックチェーンシステム100は、証明書を生成するための要求からの情報に基づいて証明書明細を生成するために、スマートコントラクトを実行する。例えば、ブロックチェーンシステム100は、第1の取引を実行するために、スマートコントラクトの証明書明細生成機能を実行する。第1の取引の実行の結果として、証明書明細は、例えばハッシュ値として生成され記憶されてもよい。生成された証明書明細は、生成される証明書の証明書タイプ、各証明書タイプの証明書の数、証明書の総数、又は各証明書の有効期間の少なくとも1つを含んでもよい。証明書明細は、取引の実行の結果として、ブロックチェーン上に記録され、且つブロックチェーンシステム100のノードによってアクセス可能であってもよい。従って、証明書明細は、取引活動の透明性を保証するために、ブロックチェーン上で公開される。
[0042] ステップ312において、活動管理システムは、ブロックチェーンシステム100から証明書明細を受信してもよい。ステップ314において、活動管理システムは、証明書明細に基づいて証明書を生成するための第2の要求を生成してもよい。例えば証明書明細は、3ドルの割引用の1,000個のクーポン及び5ドルの割引用の500個のクーポンを指定してもよく、それに応じて、活動管理システムは、証明書明細に基づいて、3ドルの割引用の1,000個のクーポン及び5ドルの割引用の500個のクーポンを生成するための第2の要求を生成してもよい。第2の要求は、証明書に対応する複数の第2の取引を含んでもよい。幾つかの実施形態において、複数の第2の取引のそれぞれは、1つの証明書に対応する。例えば、第2の取引は、3ドルの割引用のクーポンを生成することに向けられもよく、別の第2の取引は、5ドルの割引用のクーポンを生成することに向けられもよい。1つの第2の取引がまた、多数の証明書を生成することに向けられもよいことが分かる。
[0043] ステップ316において、活動管理システムは、第2の取引用の第2の要求をブロックチェーンシステム100に送信してもよい。例えば、第2の取引は、スマートコントラクトのアドレスに送信されてもよい。
[0044] ステップ318において、第2の取引用の第2の要求に応じて、ブロックチェーンシステム100は、第2の取引に対応する証明書を生成するために、スマートコントラクトを実行してもよい。第2の取引の実行の結果として、証明書は、例えばハッシュ値として生成され記憶されてもよい。生成された証明書のそれぞれは、証明書と関係する情報を含んでもよい。例えば、証明書がクーポンである場合に、証明書は、クーポンのコード、クーポンのタイプ、クーポンによって提供される割引、クーポンの適用可能なカテゴリ、クーポンの有効期間などを含んでもよい。生成された証明書は、ブロックチェーンシステム100に記憶されてもよい。
[0045] 幾つかの実施形態において、ステップ318で、ブロックチェーンシステム100はまた、生成された証明書が、証明書明細を満たすかどうかを判定するために、スマートコントラクトの検証機能を実行してもよい。検証機能は、生成された証明書のタイプ及び数を監視し、生成された証明書のタイプ及び数が証明書明細の要件を満たすかどうかを判定してもよい。例えば、証明書明細が、3ドルの割引用の1,000個のクーポン及び5ドルの割引用の500個のクーポンを指定した場合に、検証機能は、3ドルの割引用の1,000個のクーポン及び5ドルの割引用の500個のクーポンが生成されたと充足判定機能が判定したときに、生成された証明書が証明書明細を満たすと判定してもよい。生成された証明書が証明書明細を満たすという判定に応じて、スマートコントラクトは、証明書の生成を停止する。検証機能がまた、各生成された証明書の有効期間を検証してもよいことが分かる。
[0046] ステップ320において、ブロックチェーンシステム100は、生成された証明書を活動管理システムに送信してもよい。従って、ステップ322において、活動管理システムは、証明書の生成の成功を示すメッセージをユーザインターフェースシステムに送信してもよい。
[0047] 図4は、実施形態による、ブロックチェーンシステムにおいて証明書を処理するための方法400の流れ図である。例えば、方法400は、ユーザに証明書を配送し、また配送された証明書をブロックチェーンシステム上で消去するために用いられる。また例えば、方法400は、装置130(図1)によって実行されてもよく、装置130は、ユーザインターフェースシステム及び活動管理システムを含んでもよい。
[0048] 図4を参照すると、ステップ402において、ユーザインターフェースシステムは、ユーザから対象証明書用のユーザ要求を受信してもよい。ユーザ要求は、対象証明書の情報、ユーザの身分証明(ID)などを含んでもよい。対象証明書の情報は、対象証明書のタイプを含んでもよい。IDは、対象証明書がユーザに配送される場合に、ユーザを識別するために用いられてもよい。ユーザが、インターネットなどの任意のタイプのネットワークを通して対象証明書を要求してもよいことが分かる。
[0049] ステップ404において、ユーザインターフェースシステムは、ユーザ要求に基づいて、証明書配送要求を生成し、証明書配送要求を活動管理システムに送信してもよい。証明書を要求するユーザのIDは、証明書配送要求と一緒に活動管理システムに送信されてもよい。
[0050] 受信された証明書配送要求に基づいて、ステップ406において、活動管理システムは、配送されるべき対象証明書としての証明書を判定してもよい。上記のように、ステップ320(図3)において、生成された証明書は、活動管理システムに送信される。従って、活動管理システムは、証明書配送要求に基づいて、受信された証明書のなかで対象証明書を判定してもよい。例えば、活動管理システムは、対象証明書のタイプを判定し、受信された証明書に、判定されたタイプの有効な証明書が含まれるかどうかを判定してもよい。幾つかの実施形態において、活動管理システムは、有効な証明書のリストを有してもよい。有効な証明書のリストに、判定されたタイプの有効な証明書が含まれる場合に、活動管理システムは、ユーザ用の対象証明書として当該有効な証明書を判定してもよい。
[0051] 対象証明書が判定された後で、ステップ408において、活動管理システムは、消去取引用の要求をブロックチェーンシステム100に送信してもよい。例えば、消去は、アカウントからの項目のキャンセル又は削除である。実施形態において、証明書がユーザに配送された場合に、その証明書は、別のユーザによって使用されてはならず、従って消去されてもよい。幾つかの実施形態において、証明書の配送は、証明書が消去される前に検証されてもよい。また例えば、消去取引は、対象証明書が配送される前に、スマートコントラクトのアドレスに送信されてもよい。ブロックチェーンシステム100が、要求を受信し、且つ対象証明書を消去した場合に、証明書は、別のユーザによって用いられてはならない。幾つかの実施形態において、活動管理システムは、複数の消去取引用の複数の要求をブロックチェーンシステムに非同期的に送信してもよく、複数の消去取引のそれぞれは、複数の証明書における対応する対象証明書を消去するために、ブロックチェーンシステムにスマートコントラクトを実行させてもよい。これは、特定の時刻にブロックチェーンシステムに負荷をかけ過ぎることを回避する。
[0052] ステップ410において、消去取引用の要求に応じて、ブロックチェーンシステム100は、対象証明書を消去するために、スマートコントラクトを実行する。例えば、ブロックチェーンシステム100は、消去取引を実行するために、スマートコントラクトの消去機能を実行する。例えば、スマートコントラクトの消去機能は、対象証明書が有効かどうかを判定してもよい。対象証明書が消去されることになる場合に、当該対象証明書が有効であることが分かる。ブロックチェーンシステム100のコンセンサスは、達成までに幾らかの時間、例えば数秒掛かり得るので、対象証明書用の別の要求は、コンセンサスが達成される前に受信され得る。スマートコントラクトの消去機能は、証明書を配送した後で、対象証明書を消去する。従って、消去機能は、証明書が、今、無効であると別の要求に応答してもよく、応答はまた、証明書が配送されるユーザの情報(例えばユーザのID)を含んでもよい。
[0053] ステップ412において、ブロックチェーンシステム100は、証明書の消去の成功を示すメッセージを活動管理システムに送信してもよい。他方で、消去取引用の要求が受信された場合に、証明書は、配送され得るが、もはや有効ではない。この状況で、ブロックチェーン100は、消去失敗を示すメッセージを活動管理システムに送信してもよい。活動管理システムは、配送用の別の証明書を要求するために、ステップ406を再実行してもよい。
[0054] ステップ414において、証明書の消去の成功を示すメッセージを受信すると、活動管理システムは、対象証明書の配送の成功の結果をユーザインターフェースシステムに送信してもよい。
[0055] 方法300(図3)及び方法400(図4)において、証明書の配送及び消去は、証明書の生成から分離される。従って、ブロックチェーンシステム100に対する計算負担は、ある期間にわたって広げることが可能であり、ブロックチェーンシステム100の性能への影響が低減され得る。
[0056] 図5は、実施形態による、ブロックチェーンシステムにおいて証明書を処理するためのコンピュータ実行方法500の流れ図である。方法500は、コンピュータシステムによって実行されてもよい。コンピュータシステムは、命令セットを記憶するメモリと、コンピュータシステムに方法500を行わせせるために当該命令セットを実行する少なくとも1つのプロセッサと、を含んでもよい。例えばコンピュータシステムは、装置130(図1)であってもよく、装置130は、ユーザインターフェースシステム並びに活動管理システム(図3及び4)を含んでもよい。図5を参照すると、方法500は、以下のステップを含んでもよい。
[0057] ステップ502において、コンピュータシステムは、ブロックチェーンシステム、例えばブロックチェーンシステム100(図1)において、スマートコントラクトを生成させてもよい。上記のように、スマートコントラクトは、証明書を処理するためのコンピュータ可読命令を含んでもよい。証明書は、クーポン、チケット、バウチャー等であってもよい。
[0058] ステップ504において、コンピュータシステムは、スマートコントラクトが生成された後で、第1の取引用の第1の要求をブロックチェーンシステムに送信してもよい。第1の取引は、実行のためにスマートコントラクトのアドレスに送信されてもよい。例えば、第1の取引は、第1の要求に基づいて証明書明細を生成するために、ブロックチェーンシステムにスマートコントラクトを実行させてもよい。証明書明細は、第1の取引の実行を表すハッシュ値を含んでもよい。証明書明細はまた、証明書タイプ、各証明書タイプの証明書の数、証明書の総数、又は各証明書の有効期間の少なくとも1つを含んでもよい。幾つかの実施形態において、証明書は、クーポン、チケット、バウチャーなどの少なくとも1つを含む。
[0059] ステップ506において、コンピュータシステムは、ブロックチェーンシステムから証明書明細を受信してもよい。証明書明細に基づいて、コンピュータシステムは、複数の第2の取引用の第2の要求を生成してもよい。
[0060] ステップ508において、コンピュータシステムは、複数の第2の取引用の第2の要求をブロックチェーンシステムに送信してもよい。複数の第2の取引は、スマートコントラクトのアドレスに送信されてもよい。複数の第2の取引は、複数の証明書を生成及び検証するために、ブロックチェーンシステムにスマートコントラクトを実行させる。幾つかの実施形態において、複数の証明書を検証する際に、ブロックチェーンシステムは、複数の証明書が証明書明細を満たすかどうかを判定するために、スマートコントラクトを実行させてもよい。例えば、ブロックチェーンシステムは、生成された証明書が、要求された証明書タイプの証明書かどうか、生成された証明書の数が、当該証明書タイプの要求された数を満たすかどうか、全ての生成された証明書の数が、証明書の要求された総数を満たすかどうか、又は生成された証明書の有効期間が、要求された有効期間を満たすかどうかを判定してもよい。幾つかの実施形態において、証明書明細の全ての条件が満たされる場合に、ブロックチェーンシステムは、複数の証明書が証明書明細を満たすと判定し、複数の証明書が成功裏に生成されたことを示すメッセージをコンピュータシステムに送信する。
[0061] コンピュータシステムはまた、複数の証明書をユーザに配送してもよい。例えばコンピュータシステムは、対象証明書用の要求を受信してもよい。対象証明書用の要求は、ユーザ入力に基づいて生成されてもよい。例えば、コンピュータシステムのユーザインターフェースシステムは、証明書用のユーザ入力の要求を受信し、且つそれに応じて要求を生成してもよい。
[0062] 図6は、実施形態による、ブロックチェーンシステムにおいて証明書を処理するためのコンピュータ実行方法600の流れ図である。方法600はまた、図5に関連して説明されたコンピュータシステムによって実行されてもよい。方法600が、方法500の一部として又は別個の方法として実行されてもよいことが分かる。図6を参照すると、方法600は、以下のステップを含んでもよい。
[0063] ステップ602において、コンピュータシステムは、第3の取引用の第3の要求をブロックチェーンシステムに送信してもよい。第3の取引は、ブロックチェーンシステムから受領される複数の証明書における対象証明書が配送される前に、ブロックチェーンシステム上で実行されるスマートコントラクトのアドレスに送信されてもよい。ブロックチェーンシステムは、対象証明書を消去するために、第3の取引によってスマートコントラクトを実行させられてもよい。上記のように、複数の証明書は、クーポン、チケット、バウチャー等であってもよい。幾つかの実施形態において、対象証明書が、対象クーポンである場合に、ブロックチェーンシステムは、対象クーポンを消去するために、スマートコントラクトを実行させられる。幾つかの実施形態において、コンピュータシステムは、複数の第3の取引用の複数の第3の要求をブロックチェーンシステムに非同期に送信してもよく、複数の第3の取引のそれぞれは、複数の証明書の対応する対象証明書を消去するために、ブロックチェーンシステムにスマートコントラクトを実行させる。これは、特定の時刻にブロックチェーンシステムに負荷をかけ過ぎることを回避する。
[0064] 対象証明書が実施されたことを示す結果が、生成され、且つコンピュータシステムに送信されてもよい。従って、ステップ604において、コンピュータシステムは、対象証明書が実施されたことを示す結果をブロックチェーンシステムから受信してもよい。
[0065] 図7は、実施形態による、ブロックチェーンシステムにおいて証明書を処理するための機器700のブロック図である。例えば、機器700は、装置130(図1)を実現してもよい。また例えば、機器700は、方法500(図5)及び方法600(図6)を実行してもよい。図7を参照すると、機器700は、スマートコントラクト生成モジュール702及び証明書生成モジュール704を含んでもよい。
[0066] スマートコントラクト生成モジュール702は、ブロックチェーンシステムにおいてスマートコントラクトを生成させてもよい。スマートコントラクトは、証明書を処理するためのコンピュータ可読命令を含んでもよい。証明書生成モジュール704は、第1の取引用の第1の要求をブロックチェーンシステムに送信し、第1の取引は、第1の要求に基づいて証明書明細を生成するために、ブロックチェーンシステムにスマートコントラクトを実行させてもよい。証明書生成モジュール704は、証明書明細をブロックチェーンシステムから受信してもよい。証明書生成モジュール704は、複数の第2の取引用の第2の要求をブロックチェーンシステムに更に送信し、複数の第2の取引は、複数の証明書を生成するために、ブロックチェーンシステムにスマートコントラクトを実行させてもよい。
[0067] 幾つかの実施形態において、機器700はまた、証明書配送モジュール706を含んでもよい。証明書配送モジュール706は、第3の取引用の第3の要求をブロックチェーンシステムに送信し、第3の取引は、対象証明書が配送される前に、複数の証明書のうちの対象証明書を消去するために、ブロックチェーンシステムにスマートコントラクトを実行させてもよい。証明書配送モジュール706は、対象証明書が消去されたことを示す結果を ブロックチェーンシステムから受信してもよい。
[0068] 上記のモジュールのそれぞれは、ソフトウェア、ハードウェア、又はソフトウェア及びハードウェアの組み合わせとして実現されてもよい。例えば、上記のモジュールのそれぞれは、メモリに記憶された命令を実行するプロセッサを用いて実現されてもよい。また、例えば、上記のモジュールのそれぞれは、上記の方法を実行するための1つ又は複数の特定用途向け集積回路(ASIC)、デジタル信号プロセッサ(DSP)、デジタル信号処理装置(DSPD)、プログラマブル論理装置(PLD)、フィールドプログラマブルゲートアレイ(FPGA)、コントローラ、マイクロコントローラ、マイクロプロセッサ、又は他の電子コンポーネントで実現されてもよい。更に、例えば、上記のモジュールのそれぞれは、コンピュータチップ若しくはエンティティを用いることによって実現されてもよく、又は或る機能を有する製品を用いることによって実現されてもよい。一実施形態において、機器700は、コンピュータであってもよく、コンピュータは、パーソナルコンピュータ、ラップトップコンピュータ、携帯電話、カメラ付き携帯電話、スマートフォン、携帯情報端末、メディアプレーヤ、ナビゲーション装置、電子メール受信及び送信装置、ゲーム機、タブレットコンピュータ、ウェアラブル装置、又はこれらの装置の任意の組み合わせであってもよい。
[0069] 機器700における各モジュールの機能及び役割の実現プロセス用に、上記の方法における対応するステップを参照することができる。詳細は、簡潔にするためにここでは省略される。
[0070] 幾つかの実施形態において、コンピュータプログラムプロダクトは、上記の方法をプロセッサに実行させるためのコンピュータ可読プログラム命令を有する非一時的なコンピュータ可読記憶媒体を含んでもよい。
[0071] コンピュータ可読記憶媒体は、命令実行装置による使用のための命令を記憶できる有形装置であってもよい。コンピュータ可読記憶媒体は、例えば、限定するわけではないが、電子記憶装置、磁気記憶装置、光記憶装置、電磁気記憶装置、半導体記憶装置、又は前述のものの任意の適切な組み合わせであってもよい。コンピュータ可読記憶媒体のより具体的な例の非包括的リストは、次のもの、即ち、ポータブルコンピュータディスケットと、ハードディスクと、ランダムアクセスメモリ(RAM)と、読み出し専用メモリ(ROM)と、消去可能プログラマブル読み出し専用メモリ(EPROM)と、スタティックランダムアクセスメモリ(SRAM)と、ポータブルコンパクトディスク読み出し専用メモリ(CD−ROM)と、デジタル多用途ディスク(DVD)と、メモリスティックと、フロッピーディスクと、パンチカードか又は命令を自らに記録した溝における凸構造など、機械的にコード化された装置と、前述のものの任意の適切な組み合わせと、を含む。
[0072] 上記の方法を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令か、命令セットアーキテクチャ(ISA)命令か、機械語命令か、機械依存命令か、マイクロコードか、ファームウェア命令か、状態設定データか、又はオブジェクト指向プログラミング言語を含む1つ若しくは複数のプログラミング言語及び従来の手続き型プログラミング言語の任意の組み合わせで書かれたソースコード若しくはオブジェクトコードであってもよい。コンピュータ可読プログラム命令は、スタンドアロンのパッケージソフトとしてコンピューティング装置上で完全に、又は第1のコンピューティング装置上で部分的に且つ第1のコンピューティング装置から遠隔の第2のコンピューティング装置上で部分的に実行されてもよい。後のシナリオにおいて、第2の遠隔コンピューティング装置は、ローカルエリアネットワーク(LAN)又はワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを通して、第1のコンピューティング装置に接続されてもよい。
[0073] コンピュータ可読プログラム命令は、機械を作製するために、汎用若しくは専用コンピュータ又は他のプログラマブルデータ処理機器のプロセッサに提供されてもよく、その結果、命令は、コンピュータ又は他のプログラマブルデータ処理機器のプロセッサを介して実行されるが、上記の方法を実行するための手段を生成する。
[0074] 図における流れ図及び図形は、本明細書の様々な実施形態に従って、装置、方法及びコンピュータプログラムプロダクトの可能な実装形態のアーキテクチャ、機能、及び動作を示す。この点において、流れ図又は図形におけるブロックは、ソフトウェアプログラム、セグメント、又はコードの一部を表してもよく、それは、特定の機能を実行するための1つ又は複数の実行可能命令を含む。幾つかの代替実装形態において、ブロックに書かれた機能が、図に書かれた順序から外れて行われてもよいことに留意されたい。例えば連続して示されている2つのブロックは、実際にはほぼ同時に実行されてもよく、又はブロックは、含まれる機能性に依存して、時には逆順に実行されてもよい。図形及び/又は流れ図の各ブロック、並びに図形及び流れ図におけるブロックの組み合わせが、特定の機能若しくは行動を実行する専用ハードウェアベースシステム、又は専用ハードウェア及びコンピュータ命令の組み合わせによって実行されてもよいこともまた注目される。
[0075] 簡潔にするために別個の実施形態の文脈で説明される本明細書の或る特徴はまた、単一の実施形態における組み合わせで提供されてもよいことが認識される。反対に、簡潔にするために単一の実施形態の文脈で説明される本明細書の様々な特徴もまた、別々に、又は任意の適切なサブ組み合わせで、若しくは本明細書の任意の他の説明される実施形態において適切なように提供されてもよい。様々な実施形態の文脈で説明される或る特徴は、別段の記載がない限り、それらの実施形態の不可欠な特徴ではない。
[0076] 本明細書が、特定の実施形態に関連して説明されたが、多くの代替、修正、及び変形が、当業者には明らかであろう。従って、次の特許請求の範囲は、請求項の条項内に入る全てのかかる代替、修正、及び変形を包含する。