(58)【調査した分野】(Int.Cl.,DB名)
前記トランザクション活動のトランザクションを実行するための入力データを受信することであって、前記入力データが前記トランザクション活動のための前記アカウントの前記識別子を含むことと、
前記トランザクション活動のための前記アカウントの前記識別子に基づいて前記デジタル証明書を識別することと、
前記入力データ及び前記デジタル証明書を前記ブロックチェーンシステムへ送信することであって、前記トランザクションが、前記デジタル証明書及び前記スマートコントラクトが有効であるとの判定に基づいて実施されることと、
をさらに含む、請求項8に記載の方法。
ブロックチェーンにおけるスマートコントラクトに基づくトランザクション活動の取扱注意データを保護するための装置であって、前記装置が、請求項1〜10のいずれか一項に記載の方法を実行するための複数のモジュールを備える、装置。
デバイスのプロセッサによって実行されると、前記デバイスに請求項1〜10のいずれか一項に記載の方法を実行させる命令を内部に記憶した非一時的コンピュータ可読媒体。
【発明を実施するための形態】
【0010】
詳細な説明
[0016] 本明細書の諸実施形態は、コンソーシアム型ブロックチェーンなどのブロックチェーンにおける、スマートコントラクトに基づくトランザクション活動の取扱注意データを保護するための方法及びデバイスを提供する。方法及びデバイスは、1つ以上のプロセッサが、ブロックチェーンシステムにおけるスマートコントラクトに基づくトランザクション活動を作成するための要求をユーザから受信することを可能にする。1つ以上のプロセッサが要求を許可した場合には、次に、方法及びデバイスは、1つ以上のプロセッサが、スマートコントラクトの識別子及びトランザクション活動の満了時間を含むトランザクション活動に関連付けられた活動データをユーザから受信することを可能にする。次に、本方法及びデバイスは、活動データ、及び活動データのデジタル証明書の要求を認証サーバへ送信し、ここで、デジタル証明書はまた、満了時間において満了するように設定される。デジタル証明書を認証サーバから受信した後に、次に、方法及びデバイスは、デジタル証明書に基づいてブロックチェーンシステムにおけるトランザクション活動のためのアカウントを作成するように要求する。次に、方法及びデバイスは、作成されたアカウントを、トランザクション活動の規則を適用するためのコンピュータ可読命令を含み得るスマートコントラクトの識別子に関連付ける。
【0011】
[0017] 本明細書において開示される実施形態は、1つ以上の技術的効果を有する。実施形態によっては、方法及びデバイスは、ブロックチェーンシステムに、ユーザ、例えば、小売商のアイデンティティに基づくのではなく、特定のトランザクション活動に基づいてアカウントを作成する能力を提供し、これにより、アカウントは、ブロックチェーンにおけるトランザクション活動のために特別に作成され、関連付けられる。これは、ユーザが、彼らのアイデンティティをブロックチェーンシステムの他のユーザにさらすことなく、ブロックチェーンシステムにおけるトランザクション活動を制御することを可能にし、したがって、非取扱注意データをオープン性及び透明性を有するように保ちつつ、取扱注意データの非自発的開示を回避する。実施形態によっては、方法及びデバイスは、ブロックチェーンシステムに、アカウントを作成する前にユーザのアイデンティティを認証する能力を提供する。これは、小売商の顧客などの他のブロックチェーンユーザが、トランザクション活動及び小売商の有効性、正確さ、及び安全性を信用することを可能にする。実施形態によっては、方法及びデバイスは、ブロックチェーンシステムに、トランザクション活動のトランザクションを実行するためのデジタル証明書を取得する能力を提供する。これは、アカウント情報の正確さ及び有効性の保証を可能にする。実施形態によっては、方法及びデバイスは、デジタル証明書の満了時間をトランザクション活動の満了時間として設定する能力を提供する。これは、トランザクション活動が満了した後にデジタル証明書が誤用又は悪用され得ないため、トランザクション活動のためのアカウントの有効性、実時間、及び安全性の保証を可能にする。これはまた、特定の活動データがブロックチェーンにおいて永久に記憶される一方で、トランザクション活動の細かいタイミング制御も可能にする。これはまた、ブロックチェーンにおけるユーザのアイデンティティとアカウント識別子との間の対応を切り離すことも可能にする。実際には、トランザクション活動に基づいてブロックチェーンシステムにおけるアカウントを作成し、トランザクション活動を作成する前にアカウントを認証することを可能にすることは、ブロックチェーンシステムが、スマートコントラクトベースのトランザクション活動のオープン性及び透明性の特徴を犠牲にすることなく、ユーザのアイデンティティを公衆から隠し、これにより、ユーザのプライバシーを保護することを可能にする。
【0012】
[0018] 以下の説明は実施形態の詳細を提供する。実施形態において、ブロックチェーンは、データ、例えば、トランザクションを、トランザクションが変更不可能であり、後に検証され得る仕方で記憶するデータ構造である。ブロックチェーンは1つ以上のブロックを含む。各ブロックは、以前のブロックの暗号ハッシュを含むことによって、ブロックチェーンにおけるその直前のブロックにリンクされる。各ブロックはまた、タイムスタンプ、それ自身の暗号ハッシュ、及び1つ以上のトランザクションを含み得る。概して、ブロックチェーンシステムのノードによってすでに検証されたトランザクションは、ハッシュ化され、マークル木などのデータ構造に符号化され得る。マークル木では、木のリーフノードにおけるデータはハッシュ化され、木の各枝内の全てのハッシュは枝のルートにおいて連結され得る。このプロセスが木の上から木全体のルートまで続き、ルートは、木の中の全てのデータを代表するハッシュを記憶する。木に記憶されたトランザクションのものであると主張するハッシュは、それが木の構造と一貫しているかどうかを判定することによって、迅速に検証することができる。
【0013】
[0019] ブロックチェーンシステムは、1つ以上のブロックチェーンを管理、更新、及び維持する計算ノードのネットワークを含む。ネットワークは、パブリック型ブロックチェーンネットワーク、プライベート型ブロックチェーンネットワーク、又はコンソーシアム型ブロックチェーンネットワークであり得る。例えば、パブリック型ブロックチェーンネットワーク内では、数百、数千、又はさらに数百万個のエンティティなどの、数多くのエンティティが動作することができ、エンティティの各々はパブリック型ブロックチェーンネットワーク内の少なくとも1つのノードを操作する。したがって、パブリック型ブロックチェーンネットワークは、参加エンティティに対してはパブリックネットワークと考えることができる。時には、ブロックが有効性を検証され、ブロックチェーンネットワークのブロックチェーンに追加されるために、エンティティ(ノード)の大部分が全てのブロックに署名しなければならない。パブリック型ブロックチェーンネットワークの例としては、ブロックチェーンと呼ばれる、分散型台帳を活用する特定のピアツーピア支払いネットワークが挙げられる。
【0014】
[0020] 概して、パブリック型ブロックチェーンネットワークはパブリックトランザクションをサポートし得る。パブリックトランザクションはパブリック型ブロックチェーンネットワーク内のノードの全てと共有され、グローバルブロックチェーン内に記憶される。グローバルブロックチェーンは、全てのノードにわたって複製されるブロックチェーンであり、全てのノードはグローバルブロックチェーンに関して合意している。コンセンサス(例えば、ブロックチェーンへのブロックの追加への合意)を達成するために、コンセンサスプロトコルがパブリック型ブロックチェーンネットワーク内で実施される。コンセンサスプロトコルの例としては、プルーフオブワーク(proof-of-work、POW)(例えば、いくつかの暗号通貨ネットワークにおいて実施されている)、プルーフオブステーク(proof-of-stake、POS)、及びプルーフオブオーソリティ(proof-of-authority、POA)が挙げられる。
【0015】
[0021] 概して、プライベート型ブロックチェーンネットワークは、読み出し及び書き込み許可を中央制御する、特定のエンティティのために提供され得る。エンティティは、どのノードがブロックチェーンネットワークに参加することができるのかを制御する。それゆえ、プライベート型ブロックチェーンネットワークは、一般的に、誰がネットワークに参加することを許可されるのか、及び彼らの参加レベル(例えば、特定のトランザクションにのみ参加)に制限を課す、認可制ネットワークと呼ばれる。様々な種類のアクセス制御機構を用いることができる(例えば、既存の参加者が、新しいエンティティを追加することを票決し、規制当局が加入を統括することができる)。
【0016】
[0022] 概して、コンソーシアム型ブロックチェーンネットワークは参加エンティティの間ではプライベートなものであり得る。コンソーシアム型ブロックチェーンネットワークでは、コンセンサスプロセスは、許可されたノードセットによって制御され、1つ以上のノードはそれぞれのエンティティ(例えば、金融機関、保険会社)によって操作される。例えば、10個のエンティティ(例えば、金融機関、保険会社)のコンソーシアムがコンソーシアム型ブロックチェーンネットワークを操作することができ、エンティティの各々はコンソーシアム型ブロックチェーンネットワーク内の少なくとも1つのノードを各々操作する。したがって、コンソーシアム型ブロックチェーンネットワークは、参加エンティティに対してはプライベートネットワークと考えることができる。一例では、ブロックが有効性を検証され、ブロックチェーンに追加されるために、各エンティティ(ノード)が全てのブロックに署名しなければならない。一例では、ブロックが有効性を検証され、ブロックチェーンに追加されるために、エンティティ(ノード)の少なくともサブセット(例えば、少なくとも7つのエンティティ)が全てのブロックに署名しなければならない。
【0017】
[0023]
図1は、一実施形態に係る、ブロックチェーンシステム100の概略図を示す。
図1を参照すると、ブロックチェーンシステム100は、ブロックチェーン120上で動作するように構成された複数のノード、例えば、ノード102〜110を含み得る。ノード102〜110は、ピアツーピア(P2P)ネットワークなどの、ネットワーク112を形成し得る。ノード102〜110の各々は、ブロックチェーン120のコピーを記憶するように構成された、コンピュータ又はコンピュータシステムなどの、コンピューティングデバイスであり得るか、或いはプロセス又はアプリケーションなどの、コンピューティングデバイス上で実行されるソフトウェアであり得る。ノード102〜110の各々は一意識別子を有し得る。
【0018】
[0024] ブロックチェーン120は、
図1におけるブロックB1〜B5などの、データブロックの形式の増加するレコードのリストを含み得る。ブロックB1〜B5の各々は、タイムスタンプ、以前のブロックの暗号ハッシュ、及びマネタリートランザクションなどのトランザクションであり得る、現在のブロックのデータを含み得る。例えば、
図1に示されるように、ブロックB5は、タイムスタンプ、ブロックB4の暗号ハッシュ、及びブロックB5のトランザクションデータを含み得る。また、例えば、以前のブロックの暗号ハッシュを生成するために、ハッシュ操作が以前のブロックに対して実行され得る。ハッシュ操作は、SHA−256などのハッシュアルゴリズムを通じて、様々な長さの入力を固定された長さの暗号出力に変換し得る。
【0019】
[0025] ノード102〜110は、ブロックチェーン120に対する操作を実行するように構成され得る。例えば、ノード、例えば、ノード102が、新しいデータをブロックチェーン120上に記憶したいと欲すると、そのノードは、ブロックチェーン120に追加されるべき新しいブロックを生成し、新しいブロックをネットワーク112内の他のノード、例えば、ノード104〜110へ一斉同報し得る。新しいブロックの正当性、例えば、その署名及びトランザクションの有効性に基づいて、他のノードは、新しいブロックを受け入れると決定し得、これにより、ノード102及び他のノードは新しいブロックをブロックチェーン120のそれらのそれぞれのコピーに追加し得る。このプロセスが繰り返すに従い、ますます多くのデータのブロックがブロックチェーン120に追加され得る。
【0020】
[0026] 実施形態によっては、ブロックチェーンシステム100は1つ以上のスマートコントラクトに従って動作し得る。各スマートコントラクトは、契約の交渉又は遂行を容易にする、検証する、又は執行するために、ブロックチェーン120に組み込まれるコンピュータコードの形のコンピュータプロトコルであり得る。例えば、ブロックチェーンシステム100のユーザは、C++、Java(登録商標)、Solidity、Python等などのプログラミング言語を用いて、合意された条件をスマートコントラクトにプログラムし得、条件が満たされると、スマートコントラクトはブロックチェーンシステム100によって、例えば、トランザクションを実行するために、自動的に実行され得る。また、例えば、スマートコントラクトは、各々、特定のタスクを実行する一連のプログラム命令であり得る、複数のサブルーチン又は関数を含み得る。スマートコントラクトは、人間とのインタクラションを用いず、完全に、又は部分的に実行される操作コードであり得る。
【0021】
[0027] ノード102〜110の各々がブロックチェーン120のコピーを記憶し得るため、ノード102〜110の各々はまた、ブロックチェーン120内に含まれるスマートコントラクトのコピーへのアクセスも有し得る。実施形態によっては、スマートコントラクトは、例えば、スマートコントラクトが操作コードにコンパイルされた後に、ブロックチェーン120上のアドレスを割り当てられてもよい。スマートコントラクトのアドレスは、ブロックチェーン120上におけるスマートコントラクトの位置を示すように構成されている。
【0022】
[0028] 実施形態によっては、ブロックチェーンシステム100内のノード(例えば、ノード102)はスマートコントラクトのコピーに基づいてトランザクションを実行し得る。トランザクションを含む新しいブロックがブロックチェーンシステム100へ一斉同報された後に、ブロックチェーンシステム100内の他のノードは新しいブロックを検証し得る。新しいブロックがブロックチェーンシステム100内のノードの大部分又は全てによって検証された後に、新しいブロックはそれらのノード上のブロックチェーン120のそれぞれのコピーに追加されてもよく、トランザクションは完了する。
【0023】
[0029]
図2は、一実施形態に係る、ブロックチェーンシステムにおけるノード、例えば、ノード102(
図1)を実施するためのコンピューティングデバイス200の概略図を示す。
図2を参照すると、コンピューティングデバイス200は、通信インターフェース202、プロセッサ204、及びメモリ206を含み得る。
【0024】
[0030] 通信インターフェース202は、コンピューティングデバイス200と、ネットワーク内の他のノード、例えば、ノード104〜110(
図1)を実施するデバイスとの間の通信を容易にし得る。実施形態によっては、通信インターフェース202は、インターネット規格若しくはプロトコル、サービス総合デジタル網(Integrated Services Digital Network、ISDN)規格等などの、1つ以上の通信規格をサポートするように構成されている。実施形態によっては、通信インターフェース202は、ローカルエリアネットワーク(Local Area Network、LAN)カード、ケーブルモデム、衛星モデム、データバス、ケーブル、無線通信チャネル、無線ベースの通信チャネル、セルラー通信チャネル、インターネットプロトコル(Internet Protocol、IP)ベースの通信デバイス、或いは有線及び/又は無線通信のための他の通信デバイスのうちの1つ以上を含み得る。実施形態によっては、通信インターフェース202は、パブリッククラウドインフラストラクチャ、プライベートクラウドインフラストラクチャ、ハイブリッドパブリック/プライベートクラウドインフラストラクチャに基づき得る。
【0025】
[0031] プロセッサ204は中央処理装置(central processing unit、CPU)又はグラフィック処理装置(graphics processing unit、GPU)を含み得る。実施形態によっては、プロセッサ204は、1つ以上の専用処理装置、特定用途向け集積回路(application-specific integrated circuit、ASIC)、フィールドプログラマブルゲートアレイ(field-programmable gate array、FPGA)、又は様々な他の種類のプロセッサ若しくは処理装置を含み得る。プロセッサ204はメモリ206に結合され、メモリ206内に記憶された命令を実行するように構成されている。
【0026】
[0032] メモリ206は、ブロックチェーン120(
図1)のコピーなどの、プロセッサ実行可能命令及びデータを記憶し得る。メモリ206は、スタティックランダムアクセスメモリ(static random-access memory、SRAM)、電気的消去可能プログラマブルリードオンリーメモリ(electrically erasable programmable read-only memory、EEPROM)、消去可能プログラマブルリードオンリーメモリ(erasable programmable read-only memory、EPROM)、プログラマブルリードオンリーメモリ(programmable read-only memory、PROM)、リードオンリーメモリ(read-only memory、ROM)、磁気メモリ、フラッシュメモリ、又は磁気若しくは光ディスクなどの、任意の種類の揮発性若しくは不揮発性メモリデバイス、又はこれらの組み合わせを含み得る。メモリ206内の命令がプロセッサ204によって実行されると、コンピューティングデバイス200はブロックチェーン120に対する操作を実行し得る。
【0027】
[0033]
図1を再び参照すると、ブロックチェーンシステム100は、販売促進活動、マーケティング活動等などの、オープンデータ及び透明な条件を含むトランザクション活動において用いられ得る。例えば、追跡可能な有機食品を販売する小売商が、このような製品を購入したことがない顧客にクーポンを発行することによって、販売を促進したいと欲し得る。ブロックチェーンシステム100を用いることによって、製品の追跡データがブロックチェーン120などのブロックチェーンのブロック内に記憶され得、スマートコントラクトを用いてクーポンの発行が実行され得る。例えば、顧客が、スマートコントラクトにおいて指定された条件(例えば、「消費者はこの製品を購入したことがない」)を満たす場合には、対応するイベントが実行され、生じ得る(例えば、「クーポンをその消費者に発行する」)。スマートコントラクトがブロックチェーン内に記憶され、閲覧に供されるため、スマートコントラクトを用いることは契約条件及び条項を透明にし得る。発行されるべきクーポンの総価値、発行されるべきクーポンの総数、販売促進の満了時間(例えば、日付)等などの、活動関連データ(又は簡潔にするために、「活動データ」)がブロックチェーン内に同様に記憶されてもよい。スマートコントラクト及び活動データをブロックチェーン120などのブロックチェーン内に記憶することによって、顧客は、上述の情報が真実であり、正確であり、悪意のある者による偽造又は改ざんが不可能であることを保証され得る。
【0028】
[0034] 一実施形態では、ユーザのアイデンティティではなく、トランザクション活動に基づくアカウントがブロックチェーンシステム100のために作成され、用いられ得る。このように、ユーザの取扱注意データ、例えば、ユーザのアイデンティティは秘匿され、非自発的開示を防止され得、その一方で、ユーザの非取扱注意データはオープン且つ透明に保たれ得、かくして、トランザクション活動のためのブロックチェーンシステム及びスマートコントラクトの利用を促す。
【0029】
[0035] 例えば、
図1におけるデバイス130が、ユーザによって、ブロックチェーンシステム100とインタクラションするために用いられ得る。デバイス130は、通信インターフェース、プロセッサ、及びメモリを含み得る、コンピューティングデバイス200(
図2)と同様のコンピューティングデバイスであり得る。実施形態によっては、デバイス130はブロックチェーンシステム100のノードとして動作する。他の実施形態では、デバイス130はノードとして動作せず、ブロックチェーンシステム100の1つ以上のノード、例えば、ノード102〜110を用いて確立された接続を通じてブロックチェーンシステム100とインタクラションし得る。接続は1つ以上のアプリケーションプログラミングインターフェース(application programming interface、API)を通じて確立され得る。また、このような接続の確立を容易にするためのソフトウェア開発キット(Software development kit、SDK)も提供され得る。
【0030】
[0036]
図3は、一実施形態に係る、トランザクション活動の取扱注意データを保護するための方法300のフローチャートを示す。例えば、方法300は、ブロックチェーンシステム120(
図1)などのブロックチェーンにおける、スマートコントラクトに基づくトランザクション活動のためのアカウントを作成する。また、例えば、方法300はデバイス130(
図1)によって実行され得る。実施形態によっては、ブロックチェーンはコンソーシアム型ブロックチェーンであり得る。
【0031】
[0037]
図3を参照すると、ステップ302において、例えば、デバイス130(
図1)の、1つ以上のプロセッサが、ブロックチェーンにおけるスマートコントラクトに基づくトランザクション活動のためのアカウントを作成するための活動データをユーザから受信する。活動データは、スマートコントラクトの識別子及びトランザクション活動の満了時間を含み得る。実施形態によっては、スマートコントラクトの識別子は、スマートコントラクトのコンピュータ実行可能命令を記憶する1つ以上のブロックに対応するブロックチェーン上のアドレスを含み得る。アドレスへのアクセスを有することによって、ブロックチェーンのユーザはスマートコントラクトの内容及びコードにアクセスし得る。実施形態によっては、トランザクション活動は、マーケティング活動、販売促進活動等であり得る。例えば、販売促進活動は、特定の規則に基づいてクーポンを消費者に発行することであり得る。
【0032】
[0038] 実施形態によっては、活動データは、トランザクション活動の予算、活動の名称、ユーザの識別子、予算の残りの残高等などの、トランザクション活動に関連する情報をさらに含み得る。トランザクション活動の予算は、ユーザ(例えば、小売商)によって、ユーザの顧客に発行されるべきクーポン内に配分するために提供される金銭又は資金であり得る。実施形態によっては、予算は、ブロックチェーンサービスプロバイダのサービスのための料金をさらに含み得る。ユーザは、ユーザの識別子などの、活動データのうちの一部を取扱注意として指定し得る。ユーザはまた、スマートコントラクトの内容、並びにトランザクション活動の満了時間、予算、又は残りの残高などの、活動データの一部を非取扱注意として指定し得る。
【0033】
[0039] 実施形態によっては、スマートコントラクトは、ユーザによって(例えば、ユーザ生成プログラムコードをブロックチェーンに提出することによって)提供されるか、或いはユーザによって、ブロックチェーンサービスプロバイダによって提供されたテンプレートスマートコントラクトから選択され、構成され得る。例えば、ユーザはメニューからスマートコントラクトを選択し、カスタマイズされたパラメータを提供し得る。スマートコントラクトは、ユーザによって設定されたトランザクション活動の戦略及び規則を表し得る。例えば、クーポンベースの販売促進活動では、規則は、顧客ごとに受け取られるクーポンの許可された総価値、顧客ごとに受け取られるクーポンの許可された総数、クーポンの額面金額、クーポンの種類、指定された地理的領域内のターゲット顧客の割合、顧客がクーポンを受け取るための方法、顧客がクーポンを使用するための条件及び制限といったものに対する制限を含み得る。スマートコントラクトは識別子に関連付けられてもよく、異なるスマートコントラクトは1つ以上のプロセッサによって、異なる識別子を割り当てられてもよい。
【0034】
[0040] 実施形態によっては、1つ以上のプロセッサは許可に基づいて活動データを受信し得る。例えば、アカウントを作成するための要求をユーザから受け取った後に、1つ以上のプロセッサは、トランザクション活動のための支払い額を示すデータをユーザから受信し得る。支払い額はブロックチェーンサービスプロバイダによって設定されてもよく、トランザクション活動のために用いられることになる。例えば、支払い額は、手付金、内金、依頼料、保証、又はトランザクション活動の予算の一部若しくは全てとして用いられ得る。例えば、トランザクション活動がクーポンベースの販売促進である場合には、支払い額は、クーポンの価値の総額に等しい金額の全ての一部であり得る。実施形態によっては、ユーザは、サードパーティの支払いサービス又は銀行を利用するなど、別個のシステムを利用してブロックチェーンサービスプロバイダに代金を支払ってもよい。
【0035】
[0041] 実施形態によっては、支払いは1つ以上のプロセッサによって処理され得る。他の実施形態では、支払いはユーザインターフェースシステムによって開始され、活動管理システムによって処理されてもよく、どちらも1つ以上のプロセッサによって実施される。ユーザインターフェースシステム及び活動管理システムの詳細は、
図5〜
図6に関連する説明において説明されることになる。
【0036】
[0042] 支払い額が所定の額を超えると、1つ以上のプロセッサは、アカウントを作成するための要求を許可し得る。例えば、所定の額は、トランザクション活動の予算の固定された額、又は割合であり得る。要求が許可されると、次に、1つ以上のプロセッサは活動データをユーザから受信し得る。要求が許可されないときには、1つ以上のプロセッサは、活動データを受信することを拒否し得る。
【0037】
[0043]
図3をなお参照すると、ステップ304において、1つ以上のプロセッサが、活動データのデジタル証明書を要求するために、活動データを認証サーバへ送信する。実施形態によっては、認証サーバは認証局(certificate authority、CA)サーバであり得る。実施形態によっては、デジタル証明書は、スマートコントラクトの識別子を示すデータを記憶し得る。実施形態によっては、デジタル証明書の満了時間がトランザクション活動の満了時間として設定され得る。そうすることによって、デジタル証明書は、トランザクション活動が満了した後に、悪意のある者によって誤用又は悪用され得ない。デジタル証明書が満了すると、ユーザは、もはや、トランザクション活動のためにブロックチェーンを利用することができなくなり得る。実施形態によっては、活動データがトランザクション活動の予算を含むときには、デジタル証明書は、予算を示すデータも記憶し得る。
【0038】
[0044] 実施形態によっては、1つ以上のプロセッサは、ユーザに関連付けられた公開鍵を認証サーバへさらに送信し得る。公開鍵は、ユーザに関連付けられたプライベート鍵と共に生成され、プライベート鍵と共に対を形成し得る。例えば、活動データをユーザから受信すると、1つ以上のプロセッサは、安全な通信及びデジタル署名のために用いられ得る、公開鍵及びプライベート鍵を生成し得る。公開及びプライベート鍵は、RSAアルゴリズム、ElGamalアルゴリズム、又は楕円曲線暗号(elliptic curve cryptography、ECC)アルゴリズムなどの、非対称暗号アルゴリズムを用いて生成され得る。実施形態によっては、デジタル証明書は、ユーザに関連付けられた公開鍵を示すデータを記憶し得る。
【0039】
[0045] 実施形態によっては、デジタル証明書は、トランザクション活動の識別子とユーザ(例えば、小売商)の識別子との間の関連付けを示すデータを記憶し得る。例えば、トランザクション活動の識別子は、ランダムに生成された番号であり得る。ユーザの識別子は英数字の文字列であり得る。トランザクション活動の識別子及びユーザの識別子は連結され、ハッシュコードを生成するためにハッシュ化され得る。ハッシュコードはデジタル証明書内に記憶され得る。そうすることによって、デジタル証明書は、ハッシュコードをラベルとして用いることによって分類され得る。
【0040】
[0046] 実施形態によっては、認証サーバはデジタル証明書を生成し、それに署名し得る。認証サーバは
図5〜
図6における認証システム508であり得る。認証サーバ、及びデジタル証明書の生成の詳細は、
図5〜
図6に関連する説明において説明されることになる。
【0041】
[0047] ステップ306において、1つ以上のプロセッサが、デジタル証明書を認証サーバから受信した後に、ブロックチェーンにおけるスマートコントラクトの識別子に関連付けられたアカウントを作成させる。例えば、アカウントとスマートコントラクトの識別子との間の関連付けは、ブロックチェーン内に記憶されたデータレコードとして実施され得る。実施形態によっては、スマートコントラクトの識別子はデジタル証明書の生成のために認証サーバへ送信され得る。それらの実施形態では、デジタル証明書は、スマートコントラクトの識別子を示すデータをさらに記憶し得る。実施形態によっては、スマートコントラクトは、トランザクション活動の規則を適用するためのコンピュータ可読命令を含み得る。
【0042】
[0048] 実施形態によっては、1つ以上のプロセッサは、認証サーバの公開鍵を用いてデジタル証明書が有効であるかどうかを判定し得る。認証サーバの公開鍵は認証サーバのプライベート鍵と共に生成され得る。認証サーバのプライベート鍵は、生成されたデジタル証明書を暗号化するために用いられ得る。認証サーバの公開鍵は、デジタル証明書の受け手によって有効性検証のために用いられ得る。例えば、1つ以上のプロセッサは公開鍵を認証サーバからあらかじめ受信してもよく、又はそれを認証サーバからオンデマンドで取得してもよい。デジタル証明書が有効である場合には、1つ以上のプロセッサはブロックチェーンにおけるアカウントを作成し得る。実施形態によっては、1つ以上のプロセッサはアカウントの残高額を予算としてさらに設定し得る。
【0043】
[0049] 実施形態によっては、アカウントが作成された後に、1つ以上のプロセッサはユーザにこのような情報を知らせ得る。例えば、アカウントが作成されたことを確かめるために、1つ以上のプロセッサは、ブロックチェーンシステムによって生成されたアカウントの識別子を受信し得る。アカウントの識別子はハッシュコードとして生成され得る。次に、1つ以上のプロセッサは、アカウントが作成されたことをユーザに示し得るデータをユーザへ送信し得る。例えば、データはアカウントの識別子を含み得る。
【0044】
[0050] トランザクション活動のためのアカウントを作成した後に、ユーザ(例えば、小売商)はトランザクション活動のための入口データをその顧客へ公開し得る。トランザクション活動の入口データは、顧客がトランザクション活動の情報にアクセスするための入口を提供し得る。入口データは、ハイパリンク、クイックレスポンス(quick response、QR)コード、モバイルアプリ内の広告、又は同様のものなどの、様々な形式で実施され得る。顧客が(例えば、リンクをクリックすることによって)入口データにアクセスすると、彼らは、名称、規則、予算、残りの残高、又は活動の満了時間などの、トランザクション活動の指定された非取扱注意データにアクセスし得る。ブロックチェーンにアクセスする顧客及び他の小売商は、トランザクション活動を始める小売商のアイデンティティなどの、トランザクション活動の取扱注意データにアクセスすることが不可能であり得る。
【0045】
[0051]
図4は、一実施形態に係る、トランザクション活動の取扱注意データを保護するための方法400のフローチャートである。例えば、方法400は、ブロックチェーンにおけるスマートコントラクトに基づくトランザクション活動のトランザクションを実行する。また、例えば、方法400はデバイス130によって実行され得、ブロックチェーンはブロックチェーン120(
図1)であり得る。実施形態によっては、ブロックチェーンはコンソーシアム型ブロックチェーンであり得る。実施形態によっては、方法400は、方法300のステップ306(
図3)の後に続くプロセスとして、又はトランザクション活動のためのアカウントが作成された後の独立プロセスとして実施され得る。
【0046】
[0052]
図4を参照すると、ステップ402において、例えば、デバイス130(
図1)の1つ以上のプロセッサが、トランザクション活動のトランザクションを実行するための入力データを受信する。入力データはアカウントの識別子を含み得る。
【0047】
[0053] 実施形態によっては、ユーザの顧客は、ユーザによって公開された入口データにアクセスし、入力データを1つ以上のプロセッサへ提出し得る。入力データは、例えば、顧客の識別子、トランザクション活動の名称、トランザクション活動に関連付けられたアカウントの識別子、顧客によって要求されたクーポンの種類、数、及び価値、顧客の購入履歴、顧客によって提供された購入製品のレビューデータ、顧客によって受け取られたクーポンの総価値、顧客によって受け取られたクーポンの総数、顧客によって受け取られたクーポンの額面金額及び種類、顧客が位置する地理的領域、顧客によって消費されたクーポン等を含み得る。
【0048】
[0054] ステップ404において、1つ以上のプロセッサが入力データに基づいてデジタル証明書を識別する。実施形態によっては、1つ以上のプロセッサは、アカウントの識別子を用いてデジタル証明書を識別し得る。例えば、1つ以上のプロセッサは、デジタル証明書の位置を特定するために、アカウントの識別子を用いてデバイス130(
図1)を探索し得る。実施形態によっては、1つ以上のプロセッサは、識別されたデジタル証明書を用いてスマートコントラクトの識別子をさらに取得し得る。
【0049】
[0055] ステップ406において、1つ以上のプロセッサが入力データ及びデジタル証明書をブロックチェーンシステムへ送信する。実施形態によっては、1つ以上のプロセッサはまた、スマートコントラクトの識別子もブロックチェーンシステムへ送信する。ブロックチェーンシステムは、デジタル証明書及びスマートコントラクトの有効性が検証された後に、トランザクションを実行し得る。
【0050】
[0056] 実施形態によっては、1つ以上のプロセッサは、ユーザ(例えば、小売商)に関連付けられたプライベート鍵を用いて、入力データ、デジタル証明書、及びスマートコントラクトの識別子を暗号化し得る。1つ以上のプロセッサは、暗号化されたデータをブロックチェーンシステムへ送信し得る。次に、ブロックチェーンシステムは、ユーザの公開鍵を用いて、暗号化されたデータを解読することによって、入力データ、デジタル証明書、及びスマートコントラクトの識別子を取得し得る。デジタル証明書の満了時間が、デジタル証明書が満了していないことを確実にするために、現時刻に照らしてさらにチェックされ得る。実施形態によっては、ブロックチェーンシステムは、スマートコントラクトの識別子とトランザクション活動のアカウントとの間の関連付けが存在するかどうかをチェックすることによって、スマートコントラクトが有効であるかどうかを判定し得る。
【0051】
[0057] 実施形態によっては、デジタル証明書、及びスマートコントラクトの識別子が有効であると判定した後に、ブロックチェーンシステムは、入力データに基づいてスマートコントラクトのコンピュータ可読命令を実行することによって、トランザクションを実行し得る。
【0052】
[0058]
図5は、一実施形態に係る、トランザクション活動の取扱注意データを保護するための方法500のフローチャートである。例えば、方法500は、ブロックチェーンにおけるスマートコントラクトに基づくトランザクション活動のためのアカウントを作成する。また、例えば、方法500は、データを入力及び出力するべくユーザとインタクラションするためのユーザインターフェースシステム502、トランザクション活動のトランザクションを管理するための活動管理システム504、ブロックチェーンシステム100(
図1)などのブロックチェーンシステム506、並びに認証システム508によって実行され得る。
【0053】
[0059] 実施形態によっては、ユーザインターフェースシステム502及び活動管理システム504は、1つ以上のプロセッサ、例えば、デバイス130(
図1)の1つ以上のプロセッサを用いて実施され得る。実施形態によっては、ユーザインターフェースシステム502及び活動管理システム504は、ブロックチェーンシステム100(
図1)内の同じノード上で実施され得る。その場合には、ユーザインターフェースシステム502及び活動管理システム504は、異なる仮想機械又はプログラムモジュールとして実施され得る。実施形態によっては、ユーザインターフェースシステム502及び活動管理システム504は、ブロックチェーンシステム100(
図1)内の異なるノード上で実施され得る。
【0054】
[0060] 実施形態によっては、ユーザインターフェースシステム502は、ブロックチェーンのユーザとのインタクラションのためのサーバとして実施され得る。例えば、ユーザインターフェースシステム502は、ウェブサイト、又はモバイルアプリケーションのバックエンドサーバとして実施され得る。ユーザインターフェースシステム502は、アカウント及びパスワードを用いてブロックチェーンのユーザを管理し得る。
【0055】
[0061] 認証システム508は、認証サーバなどの、別個のシステムであり得る。例えば、認証システム508は、認証局(CA)サーバとして実施され得る。認証システム508は、ブロックチェーンシステム506において実行されるトランザクション活動のためのデジタル証明書を発行し、認証し得る。実施形態によっては、認証システム508は、コンソーシアム型ブロックチェーンのユーザによって委託され得る。実施形態によっては、認証システム508は、ブロックチェーンサービスプロバイダによって、又はサードパーティのサービスプロバイダによって提供され得る。認証システム508は、暗号化及び認証のための公開鍵及びプライベート鍵の対を生成し得る。プライベート鍵はもっぱら認証システム508内に記憶され、それによって暗号化又は解読のために用いられ得る。公開鍵は、暗号化又は解読のために認証システム508のユーザへ送信され得る。このような暗号化及び解読は、X.509プロトコルなどの暗号規格に準拠し得る。
【0056】
[0062] 例えば、活動管理システム504によって要求されたデジタル証明書を生成する際に、認証システム508は、生成されたデジタル証明書のデータのハッシュ化部分(「ダイジェスト」と呼ばれる)を、そのプライベート鍵を用いて暗号化し、暗号化されたダイジェストをデジタル証明書の一部として記憶し得る。このプロセスは「署名」と呼ばれ得る。ユーザシステムが、署名されたデジタル証明書を受信すると、ユーザシステムは、認証システム508の公開鍵を用いて、署名されたデジタル証明書内の暗号化されたダイジェストを解読し、解読されたダイジェストを、(例えば、データのハッシュ値を再計算することによって)データの再生成されたダイジェストと比較し得る。解読されたダイジェスト及び再生成されたダイジェストが同じである場合には、デジタル証明書は、有効であると考えることができる。認証システム508の公開鍵は、ユーザシステム内に記憶され得るか、又は認証システム508からオンデマンドで取得され得る。
【0057】
[0063]
図5を参照すると、ステップ512において、ユーザインターフェースシステム502が、クーポンベースの販売促進などのトランザクション活動を開始するための要求を受信し得る。例えば、ユーザとしての小売商は、ユーザインターフェースシステム502にログインし、トランザクション活動の活動データを(例えば、フォームに記入することによって)提供し得る。活動データは、ステップ302(
図3)に関して上述されたとおりの活動データと同様であり得る。
【0058】
[0064] ステップ514において、活動管理システム504が支払いを小売商から受け取り得る。支払いは、ステップ302(
図3)に関して上述されたとおりの支払い額と同様であり得る。支払いが受け取られると、活動管理システム504は、トランザクション活動のためのデジタル証明書の申請のために、活動データをユーザインターフェースシステム502から受信し得る。
【0059】
[0065] ステップ516において、活動管理システム504が、ステップ304(
図3)と同様に、トランザクション活動のためのデジタル証明書を要求するために、活動データを認証システム508へ送信し得る。ステップ518において、認証システム508がデジタル証明書を生成し得る。実施形態によっては、認証システム508は、ユーザによって指定されたスマートコントラクトの識別子、トランザクション活動の予算、又はトランザクション活動の満了時間のうちの少なくとも1つなどの、いくらかの活動データをデジタル証明書内に記憶し得る。認証システム508はまた、デジタル証明書に署名し得る。
【0060】
[0066] ステップ520において、活動管理システム504が、署名されたデジタル証明書を認証システム508から受信する。ステップ522において、活動管理システム504が、トランザクション活動のためのアカウントを作成し、当該アカウントを、ブロックチェーンシステム506におけるユーザによって指定されたスマートコントラクトに関連付ける。ステップ522はステップ306(
図3)と同様に実行され得る。
【0061】
[0067] ステップ524において、ブロックチェーンシステム506が、認証システム508に、デジタル証明書及びトランザクション活動が有効であるかどうかを判定するよう要求し得る。ステップ526において、認証システム508が、デジタル証明書及びトランザクション活動を検証し、検証結果をブロックチェーンシステム506へ送信する。ステップ528において、ブロックチェーンシステム506が、作成されたアカウントのための残高額(例えば、予算に等しい)を設定する。実施形態によっては、ブロックチェーンシステム506は、アカウントのための識別子(例えば、ハッシュコード)を生成し得る。
【0062】
[0068] ステップ530において、ブロックチェーンシステム506が、アカウントの識別子を活動管理システム504へ送信し得る。ステップ532において、活動管理システム504が、ユーザインターフェースシステム502に、トランザクション活動のためのアカウントの作成に成功したことを通知し得る。
【0063】
[0069]
図6は、一実施形態に係る、ブロックチェーンにおけるスマートコントラクトに基づくトランザクション活動のトランザクションを実行するための方法600のフローチャートである。例えば、方法600は、
図5に関して上述された、ユーザインターフェースシステム502、活動管理システム504、及びブロックチェーンシステム506によって実行され得る。
【0064】
[0070] ステップ612において、ユーザインターフェースシステム502が、トランザクション活動のトランザクションを実行するための入力データをユーザから受信し得る。実施形態によっては、ユーザの顧客は、ユーザによって公開された入口データにアクセスし、入力データをユーザインターフェースシステム502へ提出し得る。入力データは、ステップ402(
図4)に関して上述されたとおりの入力データと同様であり得る。ステップ614において、活動管理システム504が、入力データに基づいて、デジタル証明書、及びスマートコントラクトの識別子を識別し得る。実施形態によっては、管理システム504はまた、管理システム504によって送信されるデータを安全性の理由から暗号化するために用いられ得る、ユーザに関連付けられたプライベート鍵を識別し得る。
【0065】
[0071] ステップ616において、活動管理システム504が、例えば、ユーザインターフェースシステム502から受信された入力データ、デジタル証明書、及びスマートコントラクトの識別子を含むトランザクションデータに署名し得る。例えば、署名プロセスは、入力データ、及びスマートコントラクトの識別子を暗号化するために、ユーザに関連付けられたプライベート鍵を用い得る。ステップ618において、活動管理システム504が、署名されたトランザクションデータをブロックチェーンシステム506へ送信し得る。
【0066】
[0072] ステップ620において、ブロックチェーンシステム506が、デジタル証明書の満了時間を現時刻と比較するなど、デジタル証明書の有効性を検証し得る。ステップ622において、ブロックチェーンシステム506が、スマートコントラクトの識別子及びアカウントの識別子の関連付けをチェックするなど、スマートコントラクトを検証し得る。スマートコントラクトの識別子は、ユーザに関連付けられた公開鍵を用いて解読され得る。ユーザに関連付けられた公開鍵は、認証システム508の公開鍵を用いてデジタル証明書から解読され得る。ステップ624において、デジタル証明書及びスマートコントラクトの両方が検証された場合には、スマートコントラクトが実行され得る。入力データは、ユーザに関連付けられた公開鍵を用いて解読され、スマートコントラクトへの入力として用いられ得る。
【0067】
[0073]
図7は、一実施形態に係る、ブロックチェーンにおけるスマートコントラクトに基づくトランザクション活動における取扱注意データを保護するための装置700のブロック図である。例えば、装置700はデバイス130(
図1)を実施し得る。また、例えば、装置700は方法300(
図3)及び方法400(
図4)を実行し得る。
図7を参照すると、装置700は、受信モジュール702、伝送モジュール704、及びアカウントモジュール706を含む。
【0068】
[0074] 受信モジュール702は、ブロックチェーンにおけるスマートコントラクトに基づくトランザクション活動のためのアカウントを作成するための活動データをユーザから受信し得る。活動データは、スマートコントラクトの識別子及びトランザクション活動の満了時間を含み得る。伝送モジュール704は、活動データのデジタル証明書を要求するために、活動データを認証サーバへ送信し得る。デジタル証明書はスマートコントラクトの識別子を記憶し得、デジタル証明書の満了時間が、トランザクション活動の満了時間となるよう設定され得る。アカウントモジュール706は、デジタル証明書を認証サーバから受信した後に、トランザクション活動のためのアカウントを作成させ得、トランザクション活動のために作成されたアカウントは、ブロックチェーンにおけるスマートコントラクトの識別子に関連付けられる。
【0069】
[0075] 装置700はまた、識別モジュール708を含み得る。受信モジュール702が、トランザクション活動のトランザクションを実行するための入力データを受信した後に、識別モジュール708は、アカウントの識別子を用いて、デジタル証明書、及びスマートコントラクトの識別子を識別し得る。入力データは、アカウントの識別子を含み得る。
【0070】
[0076] 上述されたモジュールの各々は、ソフトウェア、又はハードウェア、或いはソフトウェア及びハードウェアの組み合わせとして実施され得る。例えば、上述されたモジュールの各々は、メモリ内に記憶された命令を実行するプロセッサを用いて実施され得る。また、例えば、各々の上述されたモジュールは、上述の方法を実行するための、1つ以上の特定用途向け集積回路(ASIC)、デジタル信号プロセッサ(digital signal processor、DSP)、デジタル信号処理デバイス(digital signal processing device、DSPD)、プログラマブル論理デバイス(programmable logic device、PLD)、フィールドプログラマブルゲートアレイ(field-programmable gate array、FPGA)、コントローラ、マイクロコントローラ、マイクロプロセッサ、又は他の電子構成要素を用いて実施され得る。さらに、例えば、上述されたモジュールの各々は、コンピュータチップ又はエンティティを用いることによって実施されるか、或いは特定の機能を有する製品を用いて実施され得る。一実施形態では、装置700はコンピュータであり得、コンピュータは、パーソナルコンピュータ、ラップトップコンピュータ、セルラー電話、カメラフォン、スマートフォン、パーソナルデジタルアシスタント、メディアプレーヤ、ナビゲーションデバイス、電子メール受信及び送信デバイス、ゲームコンソール、タブレットコンピュータ、ウェアラブルデバイス、或いはこれらのデバイスの任意の組み合わせであり得る。
【0071】
[0077] 装置700内の各モジュールの機能及び役割の実行プロセスのために、上述の方法における対応するステップを参照することができる。簡潔にするためにここでは詳細は省略される。
【0072】
[0078] 実施形態によっては、コンピュータプログラム製品は、プロセッサに上述の方法を実行させるためのコンピュータ可読プログラム命令を有する非一時的コンピュータ可読記憶媒体を含み得る。
【0073】
[0079] コンピュータ可読記憶媒体は、命令実行デバイスによる使用のための命令を記憶することができる有形のデバイスであり得る。コンピュータ可読記憶媒体は、例えば、限定するものではないが、電子記憶デバイス、磁気記憶デバイス、光記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、又は上述のものの任意の好適な組み合わせであり得る。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストは、以下のもの:ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、消去可能プログラマブルリードオンリーメモリ(EPROM)、スタティックランダムアクセスメモリ(SRAM)、ポータブルコンパクトディスクリードオンリーメモリ(compact disc read-only memory、CD−ROM)、デジタル多用途ディスク(digital versatile disk、DVD)、メモリスティック、フロッピーディスク、穿孔カード、又は命令が記録された溝内の隆起構造などの、機械的に符号化されたデバイス、並びに上述のものの任意の好適な組み合わせを含む。
【0074】
[0080] 上述の方法を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(instruction-set-architecture、ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、或いはオブジェクト指向プログラミング言語、及び従来の手続き型プログラミング言語を含む、1つ以上のプログラミング言語の任意の組み合わせで書かれた、ソースコード又はオブジェクトコードであり得る。コンピュータ可読プログラム命令は、完全に、コンピューティングデバイス上でスタンドアロンソフトウェアパッケージとして実行するか、或いは部分的に、第1のコンピューティングデバイス上で、及び部分的に、第1のコンピューティングデバイスから遠隔の第2のコンピューティングデバイス上で実行し得る。後者のシナリオでは、第2の遠隔のコンピューティングデバイスは、ローカルエリアネットワーク(LAN)又はワイドエリアネットワーク(wide area network、WAN)を含む、任意の種類のネットワークを通じて第1のコンピューティングデバイスに接続され得る。
【0075】
[0081] コンピュータ可読プログラム命令は、汎用若しくは専用コンピュータ、又は機械を生成するための他のプログラム可能データ処理装置のプロセッサに提供され得、これにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサを介して実行する命令は、上述の方法を実行するための手段を作り出す。
【0076】
[0082] 図面におけるフローチャート及び図は、本明細書の様々な実施形態に係るデバイス、方法、及びコンピュータプログラム製品の可能な諸実施形態のアーキテクチャ、機能性、及び動作を示す。この点に関して、フローチャート又は図内のブロックは、特定の機能を実施するための1つ以上の実行可能命令を含む、ソフトウェアプログラム、セグメント、又はコードの部分を表し得る。いくつかの代替的実施形態では、ブロック内に記された機能は、図面に記された順序に従わずに生じてもよいことにも留意されたい。例えば、連続して示された2つのブロックは、実際には、実質的に同時に実行されてもよく、又はブロックは、時として、含まれる機能性に依存して、逆の順序で実行されてもよい。また、図及び/又はフローチャートの各ブロック、並びに図及びフローチャートにおけるブロックの組み合わせは、指定された機能若しくは行為を実行する専用ハードウェアベースのシステム、或いは専用ハードウェア及びコンピュータ命令の組み合わせによって実施され得ることにも留意されたい。
【0077】
[0083] 明確にするために、別個の実施形態の文脈で説明される本明細書の特定の特徴はまた、単一の実施形態において組み合わせて提供され得ることが理解される。逆に、簡潔にするために、単一の実施形態の文脈で説明される本明細書の様々な特徴はまた、別個に、又は任意の好適なサブコンビネーションで提供され、或いは本明細書の任意の他の上述の実施形態において同様に適し得る。様々な実施形態の文脈で説明される特定の特徴は、そのように断りのない限り、それらの実施形態の本質的な特徴ではない。
【0078】
[0084] 本明細書は特定の実施形態と関連して説明されたが、多くの代替、変更及び変形が当業者には明らかであろう。したがって、添付の請求項は、請求項の条件の範囲内に含まれる全てのこのような代替、変更及び変形を包含する。