(57)【要約】  例示的な動作は、初期シードを生成することと、分散型台帳内の複数のブロックに初期シードの１つまたは複数の許可ビットを割り当てることと、初期シードおよび分散型台帳の各ブロックに初期シードのどの許可ビットが割り当てられているかの識別を格納することと、それぞれのノードによって更新されたそれぞれのブロックの許可ビットに基づいて分散型台帳にアクセスするように構成された複数のノードのそれぞれによって部分的に生成された最終シード値を受け取ることと、最終シード値に基づいてランダム・シーケンス値を生成し、ランダム・シーケンス値を分散型台帳のブロックに格納することとのうちの１つまたは複数を含んでよい。
2021516004.tif 000002
【特許請求の範囲】
【請求項１】
分散型台帳のための主催側ノード・システムであって、
初期シードを生成し、分散型台帳の複数のブロックのそれぞれに前記初期シードの１つまたは複数の許可ビットを割り当て、前記初期シード、および、前記分散型台帳の前記複数のブロックの中の各ブロックに前記初期シードのどの許可ビットが割り当てられているかの識別を格納するように構成された、プロセッサと、
複数のノードのそれぞれのノードによって更新されたそれぞれのブロックの許可ビットに基づいて前記分散型台帳にアクセスするように構成された前記複数のノードのそれぞれによって部分的に生成された最終シード値を受け取るように構成された、ネットワーク・インターフェースと
を含み、前記プロセッサが、前記最終シード値に基づいてランダム・シーケンスを生成し、前記ランダム・シーケンスを前記分散型台帳のブロックに格納するようにさらに構成される、主催側ノード・システム。
【請求項２】
前記ネットワーク・インターフェースが、前記複数のノードの合意から前記ランダム・シーケンスの検証を受け取るようにさらに構成され、前記プロセッサが、前記合意に基づいて前記ランダム・シーケンスが有効であると判定し、前記検証済みのランダム・シーケンスを抽選システムに出力するようにさらに構成される、請求項１に記載の主催側ノード・システム。
【請求項３】
前記プロセッサが、前記初期シードからの同量の許可ビットを、前記複数のノードに関連付けられた前記複数のブロックの中からの前記分散型台帳上の各ブロックに割り当てるように構成される、請求項１または２に記載の主催側ノード・システム。
【請求項４】
各ブロックに割り当てられる許可ビットの量が、前記初期シードのビット数および前記複数のノードに含まれるノードの数に基づいて決定される、請求項１ないし３のいずれかに記載の主催側ノード・システム。
【請求項５】
前記ネットワーク・インターフェースが、前記複数のノードそれぞれの暗号化キーを受け取るようにさらに構成され、前記プロセッサが、前記分散型台帳に格納された、それぞれのノードの暗号化された許可ビットを、それぞれのノードの暗号化キーに基づいて復号するようにさらに構成される、請求項１ないし４のいずれかに記載の主催側ノード・システム。
【請求項６】
前記プロセッサが、前記複数のノードの中からのそれぞれのノードによって更新された前記暗号化された許可ビットに基づいて前記最終シードを組み立てるようにさらに構成される、請求項５に記載の主催側ノード・システム。
【請求項７】
分散型台帳のためのネットワーク・ノード・システムであって、
複数のノードによってアクセスされる分散型台帳に格納されたブロックに一意に割り当てられている初期シードの許可ビットを識別し、前記初期シードの識別された前記許可ビットを変更し、変更された前記許可ビットを当該ノードの暗号化キーを使用して暗号化し、暗号化された前記許可ビットを、少なくとも１つの他のノードによって更新された許可ビットのブロックを含む前記分散型台帳のブロックに格納するように構成された、プロセッサ
を含み、前記分散型台帳に格納された、当該ノードによって変更された許可ビットおよび前記複数のノードのうちの少なくとも１つによって変更された他の許可ビットを使用して最終シードが組み立てられ得る、ネットワーク・ノード・システム。
【請求項８】
前記プロセッサが、前記初期シードの許可ビットを変更し、かつ変更された前記ビットを前記分散型台帳に格納した複数のノードのそれぞれの暗号化キーを受け取り、前記分散型台帳に格納された前記複数のノードのそれぞれによって変更された暗号化された許可ビットを、前記暗号化キーの受取りに基づいて復号し、復号された前記許可ビットに基づいて前記最終シードを生成するように構成される、請求項７に記載のネットワーク・ノード・システム。
【請求項９】
前記プロセッサが、前記分散型台帳に格納された前記許可ビットを復号するために、当該ノードの前記暗号化キーを、前記複数のノードに送信するようにさらに構成される、請求項７または８に記載のネットワーク・ノード・システム。
【請求項１０】
前記プロセッサが、前記最終シード値に基づいてランダム・シーケンス値を生成し、生成された前記ランダム・シーケンス値を前記分散型台帳のブロックに格納するようにさらに構成される、請求項７ないし９のいずれかに記載のネットワーク・ノード・システム。
【請求項１１】
前記プロセッサが、主催側ノードからランダム・シーケンス値を受け取り、前記主催側ノードによって生成された前記ランダム・シーケンス値を、生成された前記ランダム・シーケンス値に基づいて検証し、前記検証の結果を前記主催側ノードに送信するようにさらに構成される、請求項７ないし１０のいずれかに記載のネットワーク・ノード・システム。
【請求項１２】
分散型台帳のための主催側ノードの方法であって、
初期シードを生成することと、
分散型台帳内の複数のブロックのそれぞれに前記初期シードの１つまたは複数の許可ビットを割り当てることと、
前記初期シードおよび前記分散型台帳の前記複数のブロックの中の各ブロックに前記初期シードのどの許可ビットが割り当てられているかの識別を格納することと、
複数のノードのそれぞれのネットワーク・ノードによって更新されたそれぞれのブロックの許可ビットに基づいて前記分散型台帳にアクセスするように構成された前記複数のノードのそれぞれによって部分的に生成された最終シード値を受け取ることと、
前記最終シード値に基づいてランダム・シーケンス値を生成し、前記ランダム・シーケンス値を前記分散型台帳のブロックに格納することと
を含む、方法。
【請求項１３】
前記複数のノードの合意からランダム・シーケンスの検証を受け取ることと、前記合意に基づいて前記ランダム・シーケンスが有効であると判定することと、前記検証済みのランダム・シーケンスを抽選システムに出力することとをさらに含む、請求項１２に記載の方法。
【請求項１４】
前記割り当てることが、前記複数のノードに関連付けられた前記複数のブロックの中からの前記分散型台帳の各ブロックに前記初期シードからの同量の許可ビットを割り当てることをさらに含む、請求項１２または１３に記載の方法。
【請求項１５】
各ブロックに割り当てられる前記許可ビットの量が、前記初期シード内のビット数および前記複数のノードに含まれるノード数に基づいて決定される、請求項１２ないし１４のいずれかに記載の方法。
【請求項１６】
前記最終シードを前記受け取ることが、前記複数のノードそれぞれの暗号化キーを受け取ることと、前記分散型台帳に格納されたそれぞれのノードの暗号化された許可ビットをそれぞれのノードの暗号化キーに基づいて復号することとを含む、請求項１２ないし１５のいずれかに記載の方法。
【請求項１７】
前記最終シードを前記受け取ることが、前記複数のノードの中からのそれぞれのノードによって更新された前記暗号化された許可ビットに基づいて前記最終シードを組み立てることをさらに含む、請求項１６に記載の方法。
【請求項１８】
分散型台帳のためのネットワーク・ノードの方法であって、
複数のノードによってアクセスされる分散型台帳に格納されたブロックに一意に割り当てられている初期シードの許可ビットを識別することと、
前記初期シードの識別された前記許可ビットを変更し、変更された前記許可ビットを前記ネットワーク・ノードの暗号化キーを使用して暗号化し、暗号化された前記許可ビットを、少なくとも１つの他のノードによって更新された許可ビットのブロックを含む前記分散型台帳のブロックに格納することと
を含み、前記分散型台帳に格納された、当該ノードによって変更された前記許可ビットおよび少なくとも１つの他のノードによって変更された他の許可ビットを使用して最終シードが組み立てられ得る、方法。
【請求項１９】
前記初期シードの許可ビットを変更し、かつ変更された前記ビットを前記分散型台帳に格納した複数のノードのそれぞれの暗号化キーを受け取ることと、前記分散型台帳に格納された前記複数のノードのそれぞれによって変更された暗号化された許可ビットを、受け取った前記暗号化キーに基づいて復号することと、復号された前記許可ビットに基づいて前記最終シードを生成することとをさらに含み、請求項１８に記載の方法。
【請求項２０】
前記分散型台帳に格納された前記ノードによって変更された前記許可ビットを復号化するために、前記ノードの前記暗号化キーを前記複数のノードに送信することをさらに含む、請求項１８または１９に記載の方法。
【請求項２１】
最終シード値に基づいてランダム・シーケンス値を生成することと、生成された前記ランダム・シーケンス値を前記分散型台帳のブロックに格納することとをさらに含む、請求項１８ないし２０のいずれかに記載の方法。
【請求項２２】
主催側ノードからランダム・シーケンス値を受け取ることと、前記主催側ノードによって生成された前記ランダム・シーケンス値を、生成された前記ランダム・シーケンス値に基づいて検証することと、前記検証の結果を前記主催側ノードに送信することとをさらに含む、請求項１８ないし２１のいずれかに記載の方法。
【請求項２３】
コンピュータ・プログラム製品であって、
処理回路によって読み取り可能であり、請求項１２ないし２２のいずれかによる方法を実行するために、前記処理回路によって実行される命令を格納する、コンピュータ可読記憶媒体を備える
コンピュータ・プログラム製品。
【請求項２４】
コンピュータ可読媒体に格納され、デジタル・コンピュータの内部メモリにロード可能なコンピュータ・プログラムであって、前記プログラムがコンピュータ上で実行されるとき、請求項１２ないし２２のいずれかの方法を実行するためのソフトウェア・コード部分を含む、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、一般に、ブロックチェーン・システムなどの分散型台帳に関連し、より詳細には、中央集権的なホストではなく分散型台帳ノードの非中央集権的な分散型ネットワークを介して抽選番号を生成および検証する抽選分散型台帳ネットワークに関連する。
【背景技術】
【０００２】
分散型台帳は、典型的には他のブロックに関する暗号学的ハッシュの格納などの暗号技法を適用する、継続的に増大するレコードのリストである。ブロックチェーンは、分散型台帳の１つの一般的な実例である。金融取引に使用されることが多いが、ブロックチェーンなどの分散型台帳は、商品およびサービス（すなわち、製品、パッケージ、ステータスなど）に関連する情報などの他の様々なタイプの情報を格納することができる。非中央集権的な方式は、非中央集権的なネットワークに権限および信用を提供し、そのノードがそれらのトランザクションを継続的かつ順次にパブリック「ブロック」上に記録できるようにし、分散型台帳と呼ばれる一意の「チェーン」を作り出す。暗号法は、トランザクション・ソースの認証を保護するためにハッシュ・コードを用いて使用され、中央の仲介を排除する。分散型台帳に格納されたレコードは、その変更不可能という特性により、改ざんおよび改訂から保護され得る。各ブロックは、タイム・スタンプおよび前のブロックへのリンクを含む。分散型台帳は、情報を保持、追跡、転送、および検証するために使用され得る。台帳は分散システムであるため、トランザクションを分散型台帳に追加する前に、ピア（対等者，peers）は合意状態に至る必要がある。
【０００３】
抽選システムは、一般に、（いくつかの管轄区域における）ナンバー・プレートの特権などの特権をユーザに付与するために使用される。別の例として、抽選システムは、当選者を決定するためなどに使用される。現在、抽選システムのホスト組織は、抽選結果を生成して発表し、結果の妥当性確認（validation）を保証するために第三者の監督を頼りにしている。従来の抽選プロセスは、組織によって集中的に運営されており、第三者の監督に対してのみ責任追跡（accountability）の対象となる。このため、抽選結果の公平性は、組織の信頼性および第三者の監督に依存する。しかしながら、監視が行き届かない場合、不正および他の悪質な行為につながる可能性がある。したがって、抽選の責任追跡を１つまたは２つのエンティティに任せることなく、より安全で規制された抽選システムが必要である。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
したがって、当技術分野において前述の問題に対処する必要がある。
【課題を解決するための手段】
【０００５】
第１の態様によれば、本発明は、分散型台帳のための主催側ノード（organizing node）・システムを提供し、システムは、初期シードを生成し、分散型台帳の複数のブロックのそれぞれに初期シードの１つまたは複数の許可ビット（authorized bit）を割り当て、初期シード、および分散型台帳の複数のブロックの中の各ブロックに初期シードのどの許可ビットが割り当てられているかの識別を格納するように構成された、プロセッサと、複数のノードのそれぞれのノードによって更新されたそれぞれのブロックの許可ビットに基づいて分散型台帳にアクセスするように構成された前記複数のノードのそれぞれによって部分的に生成された最終シード値を受け取るように構成された、ネットワーク・インターフェースとを含み、プロセッサは、最終シード値に基づいてランダム・シーケンスを生成し、ランダム・シーケンスを分散型台帳のブロックに格納するようにさらに構成される。
【０００６】
さらなる態様によれば、本発明は、分散型台帳のためのネットワーク・ノード・システムを提供し、システムは、複数のノードによってアクセスされる分散型台帳に格納されたブロックに一意に割り当てられている初期シードの許可ビットを識別し、初期シードの識別された許可ビットを変更し、変更された許可ビットをノードの暗号化キーを使用して暗号化し、暗号化された許可ビットを、少なくとも１つの他のノードによって更新された許可ビットのブロックを含む分散型台帳のブロックに格納するように構成された、プロセッサを含み、分散型台帳に格納された、当該ノードによって変更された許可ビット、および複数のノードのうちの少なくとも１つによって変更された他の許可ビットを使用して最終シードが組み立てられ得る。
【０００７】
さらなる態様によれば、本発明は、分散型台帳のための主催側ノードの方法を提供し、方法は、初期シードを生成することと、分散型台帳内の複数のブロックのそれぞれに初期シードの１つまたは複数の許可ビットを割り当てることと、初期シード、および分散型台帳の複数のブロックの中の各ブロックに初期シードのどの許可ビットが割り当てられているかの識別を格納することと、複数のノードそれぞれのネットワーク・ノードによって更新されたそれぞれのブロックの許可ビットに基づいて分散型台帳にアクセスするように構成された前記複数のノードのそれぞれによって部分的に生成された最終シード値を受け取ることと、最終シード値に基づいてランダム・シーケンス値を生成し、ランダム・シーケンス値を分散型台帳のブロックに格納することとを含む。
【０００８】
さらなる態様によれば、本発明は、分散型台帳のためのネットワーク・ノードの方法を提供し、方法は、複数のノードによってアクセスされる分散型台帳に格納されたブロックに一意に割り当てられている初期シードの許可ビットを識別することと、初期シードの識別された許可ビットを変更することと、変更された許可ビットをネットワーク・ノードの暗号化キーを使用して暗号化することと、暗号化された許可ビットを、少なくとも１つの他のノードによって更新された許可ビットのブロックを含む分散型台帳のブロックに格納することとを含み、分散型台帳に格納された、当該ノードによって変更された許可ビット、および少なくとも１つの他のノードによって変更された他の許可ビットを使用して最終シードが組み立てられ得る。
【０００９】
さらなる態様によれば、本発明は、分散型台帳のためのコンピュータ・プログラム製品を提供し、コンピュータ・プログラム製品は、処理回路によって読み取り可能であり、本発明のステップを実行する方法を実行するために処理回路によって実行される命令を格納する、コンピュータ可読記憶媒体を備える。
【００１０】
さらなる態様によれば、本発明は、コンピュータ可読媒体に格納され、デジタル・コンピュータの内部メモリにロード可能なコンピュータ・プログラムであって、前記プログラムがコンピュータ上で実行されるとき、本発明のステップを実行するためのソフトウェア・コード部分を含む、コンピュータ・プログラムを提供する。
【００１１】
例示的な一実施形態は、初期シードを生成し、分散型台帳の複数のブロックのそれぞれに初期シードの１つまたは複数の許可ビットを割り当て、初期シード、および分散型台帳の複数のブロックの中の各ブロックに初期シードのどの許可ビットが割り当てられているかの識別を格納するように構成された、プロセッサと、それぞれのノードによって更新されたそれぞれのブロックの許可ビットに基づいて分散型台帳にアクセスするように構成された複数のノードのそれぞれによって部分的に生成された最終シード値を受け取るように構成された、ネットワーク・インターフェースとのうちの少なくとも一方を含む主催側ノード・システムであって、プロセッサが、最終シード値に基づいてランダム・シーケンスを生成し、ランダム・シーケンスを分散型台帳のブロックに格納するようにさらに構成される、主催側ノード・システムを提供してよい。
【００１２】
別の例示的な実施形態は、初期シードを生成することと、分散型台帳内の複数のブロックに初期シードの１つまたは複数の許可ビットを割り当てることと、初期シード、および分散型台帳の各ブロックに初期シードのどの許可ビットが割り当てられているかの識別を格納することと、複数のノードそれぞれのノードによって更新されたそれぞれのブロックの許可ビットに基づいて分散型台帳にアクセスするように構成された複数のノードのそれぞれによって部分的に生成された最終シード値を受け取ることと、最終シード値に基づいてランダム・シーケンス値を生成し、ランダム・シーケンス値を分散型台帳のブロックに格納することとのうちの少なくとも１つを含む方法を提供してよい。
【００１３】
別の例示的な実施形態は、複数のノードによってアクセスされる分散型台帳に格納されたブロックに一意に割り当てられている初期シードの許可ビットを識別し、初期シードの識別された許可ビットを変更し、変更された許可ビットをノードの暗号化キーを使用して暗号化し、暗号化された許可ビットを、少なくとも１つの他のノードによって更新された許可ビットのブロックを含む分散型台帳のブロックに格納するように構成された、プロセッサのうちの少なくとも１つを含むネットワーク・ノード・システムであって、分散型台帳に格納された、ノードによって変更された許可ビット、および複数のノードのうちの少なくとも１つによって変更された他の許可ビットを使用して最終シードが組み立てられ得る、ネットワーク・ノード・システムを提供してよい。
【００１４】
別の例示的な実施形態は、複数のノードによってアクセスされる分散型台帳に格納されたブロックに一意に割り当てられている初期シードの許可ビットを識別することと、初期シードの識別された許可ビットを変更することと、変更された許可ビットをネットワーク・ノードの暗号化キーを使用して暗号化することと、暗号化された許可ビットを、少なくとも１つの他のノードによって更新された許可ビットのブロックを含む分散型台帳のブロックに格納することとのうちの少なくとも１つを含む方法であって、分散型台帳に格納された、ノードによって変更された許可ビット、および少なくとも１つの他のノードによって変更された他の許可ビットを使用して最終シードが組み立てられ得る、方法を提供してよい。
【００１５】
さらなる例示的な実施形態は、プロセッサによって読み取られると、初期シードを生成することと、分散型台帳内の複数のブロックに初期シードの１つまたは複数の許可ビットを割り当てることと、初期シード、および分散型台帳の各ブロックに初期シードのどの許可ビットが割り当てられているかの識別を格納することと、それぞれのノードによって更新されたそれぞれのブロックの許可ビットに基づいて分散型台帳にアクセスするように構成された複数のノードのそれぞれによって部分的に生成された最終シード値を受け取ることと、最終シード値に基づいてランダム・シーケンス値を生成し、ランダム・シーケンス値を分散型台帳のブロックに格納することとのうちの少なくとも１つをプロセッサに実行させる命令を含む、非一過性コンピュータ可読媒体を提供してよい。
【００１６】
ここから、本発明について、以下の図に示されるように、好ましい実施形態を参照して例としてのみ説明する。
【図面の簡単な説明】
【００１７】
【図１】例示的な実施形態による、抽選分散型台帳ネットワーク・システムを示す図である。
【図２】例示的な実施形態による、アセットの共有シナリオのピア・ノード・ブロックチェーン・アーキテクチャの構成を示す図である。
【図３】例示的実施形態による、ピア・ノード・ブロックチェーンの構成を示す図である。
【図４】例示的な実施形態による、許可型ブロックチェーン・ネットワークを示す図である。
【図５】例示的な実施形態による、抽選用のシードを生成するための分散型台帳を示す図である。
【図６】例示的な実施形態による、生成された抽選番号を検証するための分散型台帳を示す図である。
【図７】例示的な実施形態による、本明細書に記載の１つまたは複数の動作に従ってブロックチェーン上で様々な動作を実行するように構成された物理インフラストラクチャを示す図である。
【図８】例示的な実施形態による、ブロックチェーン上でスマート・コントラクト条項を実施するように構成された契約当事者と仲介サーバの間のスマート・コントラクトの構成を示す図である。
【図９】例示的な実施形態の１つまたは複数をサポートするように構成されたコンピュータ・システムを示す図である。
【図１０】例示的な実施形態による、抽選分散型台帳ネットワーク内の主催側ノードの方法を示す図である。
【図１１】例示的な実施形態による、抽選分散型台帳ネットワーク内の主催側ノードの方法を示す図である。
【図１２】例示的な実施形態による、抽選分散型台帳ネットワーク内のネットワーク・ノードの方法を示す図である。
【図１３】例示的な実施形態による、抽選分散型台帳ネットワーク内のネットワーク・ノードの方法を示す図である。
【発明を実施するための形態】
【００１８】
本構成要素は、本明細書において全体的に説明され図示されるように、多種多様な異なる構成で配置および設計され得ることが容易に理解されよう。したがって、方法、装置、非一過性コンピュータ可読媒体およびシステムの少なくとも１つの実施形態の詳細な説明は、関連する図および説明に示されるように、本出願の範囲を限定することを意図するものではなく、選択された実施形態を表すにすぎない。
【００１９】
本明細書の全体を通じて説明されるような本特徴、構造、または特性は、１つまたは複数の実施形態において任意の適切な手法で組み合わされてよい。例えば、「例示的な実施形態」、「いくつかの実施形態」という語句、または他の類似の文言の使用は、本明細書の全体を通じて、実施形態に関連して説明される特定の特徴、構造、または特性が、少なくとも１つの実施形態に含まれ得ることを意味する。したがって、「例示的な実施形態」、「いくつかの実施形態において」、「他の実施形態において」という語句、または他の類似の文言の出現は、本明細書の全体を通じて、実施形態の同じグループを必ずしもすべて指すわけではなく、説明される特徴、構造、または特性は、１つまたは複数の実施形態において任意の適切な手法で組み合わされてよい。
【００２０】
加えて、実施形態の説明において「メッセージ」という用語が使用されることがあるが、本出願は、パケット、フレーム、データグラムなどの多くのタイプのメッセージまたはネットワーク・データに適用されてよい。さらに、いくつかのタイプのメッセージ、シグナリング、およびプロトコルが例示的な実施形態に示されることがあるが、これらは、いくつかのタイプのメッセージ、シグナリング、またはプロトコルに限定されない。
【００２１】
例示的な実施形態は、抽選ネットワーク・システムのための分散型台帳をサポートする方法、デバイス、ネットワーク、またはシステム、あるいはその組合せを提供する。いくつかの例において、分散型台帳はブロックチェーンであるが、実施形態はそれに限定されない。抽選ネットワークは、インターネット、プライベート・ネットワークなどの１つまたは複数のネットワークを介して相互に接続されている、１つまたは複数の主催側ノードおよび１つまたは複数の要求側ノード（本明細書ではネットワーク・ノードとも呼ばれる）などのノード（またはピア）を含む。一例として、主催側ノードは、抽選の主催者とすることができ、ネットワーク・ノードは、抽選の参加者とすることができる。様々な態様によれば、抽選ネットワークは、分散型台帳を介して格納された最終結果を中央の組織またはエンティティが制御または操作できないという点で公平である。加えて、各参加者ノードが抽選番号の生成および検証のフェーズ全体に関与するので、ランダムな抽選シーケンスの生成プロセスは透明性がある。さらに、第三者による監督の必要がないので、ノードの抽選ネットワークは効率的である。
【００２２】
台帳は一般に、トランザクションが記録される最終エントリの帳簿と定義される。台帳は、紙面上、またはコンピュータ上に電子的に格納され得る。分散型台帳は、複数のコンピュータ間で全体または一部が複製される台帳である。この例では、各コンピュータは、台帳として機能する非中央集権的または分散型のデータベースに参加および記録または格納することができ、これにより、トランザクションの記録が格納され、暗号法を使用してトランザクションが格納および更新される。分散型台帳は、安全および責任追跡を容易にする暗号特性を含むことができる。例えば、トランザクションが記録されると、暗号法によってトランザクションを元に戻すことができないので、分散型台帳は、トランザクションを不可逆的なものにすることができる。暗号特性を有する分散型台帳は、いずれの当事者も分散型台帳の全体または一部にアクセスできるので、アクセス可能性も提供することができる。暗号特性を有する分散型台帳は、時系列でありタイム・スタンプが付けられ、トランザクションが台帳に追加されたときに参加しているすべてのエンティティに通知することもできる。暗号特性を有する分散型台帳は、通常は全員一致でネットワーク上の当事者によって承認された場合にのみトランザクションが追加されるという点で、合意に基づくこともできる。暗号特性を有する分散型台帳は、すべてのトランザクションが暗号的に検証され得るので、検証可能性を提供することもできる。ブロックチェーンは、暗号特性を有する分散型台帳の一例である。以下の説明および図はブロックチェーンの観点から説明されているが、本出願は、暗号特性を有する任意の分散型台帳にも同様に適用される。
【００２３】
抽選番号は単一のエンティティのみによって生成されるのではなく、抽選番号は分散プロセスを通じて生成され、これにより、主催側ノードと複数のネットワーク・ノードの両方が、抽選結果の生成フェーズおよび検証フェーズに参加および管理する。例えば、主催側ノードおよびネットワーク・ノードは、ランダム・シーケンス（抽選番号）を生成するために使用される入力であるシード（数値）を生成するためのシード・ブロックチェーンなどの分散型台帳を介して、分散プロセスに参加してよい。この初期プロセス中、ネットワーク・ノードは、それぞれ、主催側ノードによって配布された初期シード値のビットに基づいて、最終シード値の一部を生成する。各ネットワーク・ノードは、初期シード内のビットの特定の部分（本明細書では許可ビットと呼ばれる）を変更し、更新された部分を分散型台帳の対応するブロックに格納する権限が与えられる。ビットは、更新され、すべてのノード間で複製される分散型台帳に格納されてよい。異なるネットワーク・ノードによって更新された異なるビットは、ノードのいずれかによって組み合わされて、最終シード全体を生成する。最終シードが生成された後、主催側ノードは、最終シードを入力として使用してランダム・シーケンスを生成し、ネットワーク・ノードのそれぞれは、最終シードに基づいてランダム・シーケンスを検証する。ネットワーク・ノードの合意がランダム・シーケンスを検証する場合、ランダム・シーケンスは、抽選結果として出力されてよい。
【００２４】
抽選生成プロセスは、分散型台帳を介してシード値を生成する第１の分散プロセス、および、分散型台帳を介してランダム・シーケンスを生成および検証する第２の分散プロセスを含んでよい。いくつかの例において、第１のプロセスと第２のプロセスに同じ分散型台帳が使用されてもよく、または異なる台帳が使用されてもよい。本明細書のいくつかの例において、初期シードを生成するためにシード・ブロックチェーンが使用され、抽選結果を検証するために検証ブロックチェーンが使用されるが、実施形態はこれに限定されない。分散型台帳のコピーは、各ノードによって抽選ネットワークに格納され得る。各ネットワーク・ノードは、ネットワークに登録し、リモート・プロシージャ・コール（例えば、ＲＰＣ、ｇＲＰＣ）などのピア・ツー・ピア・プロトコルに基づいて他のノードと対話してよい。ノード間の通信プロトコルは、システムによって実装されてよい。
【００２５】
以下に示すいくつかの例において、分散型台帳はブロックチェーンである。しかしながら、ブロックチェーンが使用される以下の例は、ブロックチェーンを、暗号特性を有する分散型台帳などの任意の分散型台帳に置き換えることができることを理解されたい。すなわち、分散型台帳はブロックチェーンではなく、既知の、または既知になる別のタイプの分散型台帳とすることができる。これらの例において、異なるブロックチェーン・システムは、Ｈｙｐｅｒｌｅｄｇｅｒ、Ｅｔｈｅｒｅｕｍ、Ｒｉｐｐｌｅなどの異なる通信プロトコルに基づいてよい。基礎となる分散型台帳システムは、各ノードが、分散型台帳に含まれるブロックまたは他のストレージ手段のすべての情報の完全なコピーを有することを保証することができる。
【００２６】
図１は、例示的な実施形態による抽選分散型台帳ネットワーク・システム１００を示す。この例では、抽選分散型台帳ネットワーク・システム１００内のノードは、スター状ネットワーク・トポロジを介して接続されている。図１を参照すると、システム１００は、主催側ノード１２０、および、要求側ノードとも呼ばれる複数のネットワーク・ノード１１０を含む。一例として、主催側ノード１２０は、抽選の開催者とすることができ、ネットワーク・ノード１１０は、抽選に当選することを望む参加者とすることができる。この例では、数百人の抽選参加者（例えば、２００人の参加者など）がいる場合がある。主催側ノード１２０およびネットワーク・ノード１１０のそれぞれには、抽選番号のランダム・シーケンスを生成するためのソフトウェアがインストールされている。ソフトウェアの主な入力はシード値である。したがって、抽選番号生成プロセスの最初のステップは、シード値を生成することである。
【００２７】
様々な態様によれば、主催側ノード１２０は、初期シード値を生成する。初期シードは、数十、数百、数千などのビットの文字列である。初期シード値内で、各ネットワーク・ノード１１０には、許可ビットと呼ばれるビットのフラグメントまたは小さなサブセクションが割り当てられる。各ネットワーク・ノード１１０の許可ビットは一意であるか、または他のネットワーク・ノード１１０の許可ビットと相互に排他的であってよい。初期シード値は、ネットワーク・ノード１１０に送信されてもよく、またはネットワーク・ノード１１０によってアクセスされる分散型台帳（例えば、分散型台帳１３０）を介して主催側ノード１２０によって格納されてよい。主催側ノード１２０はまた、初期シードからの部分ビット値（許可ビット）を各ブロックに事前に割り当てる。初期シードの許可ビット（位置）は、各ブロックに対して一意であり、初期シード値のどの許可ビットが、それぞれのブロックに関連付けられたネットワーク・ノード１１０によって更新されるべきかを識別する。各ネットワーク・ノード１１０は、それらそれぞれのブロックに関連付けられた許可ビットを更新し、許可ビットの更新されたバージョンをブロックとして分散型台帳１３０に格納する。更新されたビット値を安全に保つために、各ネットワーク・ノード１１０は、それぞれのネットワーク・ノード１１０の秘密鍵を用いてビット値を暗号化してよい。
【００２８】
すべてのノードがそれぞれの許可ビットを更新し、それらを分散型台帳１３０のブロックに格納したとき、タイミング・イベントが期限切れになったとき、または他の何らかの条件のとき、ネットワーク・ノード１１０は、公開鍵を互いにかつ主催側ノード１２０と共有し、それにより、すべてのノードは、暗号化された更新された許可ビットを復号し、分散型台帳１３０上に格納されたすべてのブロックから最終シード値を組み立てることができる。主催側ノード１２０とネットワーク・ノード１１０の両方を含む分散プロセスを介して最終シードを生成することによって、最終シード値は、ネットワーク１００内のすべてのノードにとって責任追跡が可能になる。次に、主催側ノードとも呼ばれる主催側ノード１２０は、擬似乱数生成器ソフトウェア、およびネットワーク・ノード１１０によって生成されたシードを用いて、抽選番号のリスト（パブリック・リストまたはランダム・シーケンスとも呼ばれる）を生成してよい。加えて、各ネットワーク・ノード１１０は、擬似乱数発生器ソフトウェアを用いて抽選番号のリスト（プライベート・リストとも呼ばれる）を生成してよい。ネットワーク・ノード１１０は、主催側ノード１２０によって生成されるパブリック・リストと、ノード自体によって生成されるプライベート・リストとを比較してよい。それらが同じである場合、リストが確証される。次に、抽選番号は、主催側ノード１２０またはネットワーク・ノード１１０のいずれかによって出力されてよい。
【００２９】
抽選ネットワーク・システム１００の目的は、不正を防止することである。従来の中央集権的な抽選では、抽選の主催者は、抽選番号自体を生成し、場合によっては第三者の監督者以外に対して責任追跡ができない。したがって、不正の可能性がある。本明細書に記載の様々な実施形態による抽選ネットワーク・システム１００では、各参加者（主催側ノード１２０とネットワーク・ノード１１０の両方）が、抽選番号を生成するエンドツーエンド・プロセスに関与するので、参加者は、結果を制御および操作することができない。例えば、各参加者は、ブロックチェーンなどの分散型台帳、または暗号特性を有する他の分散型台帳を格納し、それにアクセスすることができる。台帳を通じて、安全なシード値が生成され得、シード値に基づいて安全な抽選番号が生成され得る。
【００３０】
分散型台帳ネットワークは、相互に通信する複数のノードで構成される分散システムである。ブロックチェーン・ノードは、チェーンコード（例えば、スマート・コントラクトなど）と呼ばれるプログラムを実行し、状態および台帳のデータを保持し、トランザクションを実行する。トランザクションは、チェーンコード上で呼び出される動作である。トランザクションは通常、「裏書き」（endorse）されなければならず、裏書きされたトランザクションのみがコミットされ、ブロックチェーンの状態に影響を与えることができる。管理機能およびパラメータのための１つまたは複数の特殊なチェーンコードが存在することがあり、それらは、システム・チェーンコードと総称される。
【００３１】
ノードは、ブロックチェーン・システムの通信エンティティである。「ノード」は、異なるタイプの複数のノードが同じ物理サーバ上で実行できるという意味での論理機能である。ノードは、信用できるドメイン内でグループ化され、様々な方法でそれらのノードを制御する論理エンティティに関連付けられる。ノードは、トランザクション呼出し（transaction-invocation）を裏書者（例えば、ピア）にサブミットし、トランザクション提案（transaction-proposal）を順序付けサービス（例えば、順序付けノード（ordering node））にブロードキャストするクライアントまたはサブミット・クライアント・ノードなどの様々なタイプを含んでよい。別のタイプのノードは、クライアントがサブミットしたトランザクションを受け取り、トランザクションをコミットし、台帳の状態およびコピーを維持することができるピア・ノードである。ピアは、裏書者の役割を有することもできるが、これは必須要件ではない。順序付けサービス・ノードまたは順序付け者は、すべてのノードのための通信サービスを実行するノードであり、トランザクションをコミットしワールド・ステートを変更するときの、システム内の各ピア・ノードへのアトミック（Atomic）・ブロードキャストまたは全順序（total order）ブロードキャストなどの、配信保証を実施する。
【００３２】
分散型台帳は、ノードのネットワークのすべての状態遷移の順序付けられた耐改ざん性のレコードである。状態遷移は、参加している当事者（例えば、クライアント・ノード、順序付けノード、裏書者ノード、ピア・ノードなど）によってサブミットされたチェーンコード呼出し（すなわち、トランザクション）の結果である。トランザクションにより、作成、更新、削除などとして台帳にコミットされている１組のアセットのキー値ペアが生成され得る。分散型台帳は、ブロックチェーン（チェーンとも呼ばれる）を含んでよく、変更不可能な順序付けされたレコードをブロックに格納してよい。分散型台帳は、分散型台帳の現在の状態を維持する状態データベースを含んでもよい。典型的には、各チャネルに関連付けられた１つの分散型台帳がある。各ピア・ノードは、それらのピア・ノードがメンバーになっているチャネルごとに分散型台帳のコピーを維持する。
【００３３】
チェーンは、ハッシュ・リンク・ブロックとして構造化されたトランザクション・ログであり、各ブロックは、Ｎ個のトランザクションのシーケンスを含み、ここで、Ｎは１以上である。ブロック・ヘッダーは、ブロックのトランザクションのハッシュ、および前のブロックのヘッダーのハッシュを含む。このようにして、分散型台帳上のすべてのトランザクションが順序付けられ、暗号によって互いにリンクされてよい。したがって、ハッシュ・リンクを壊さずに分散型台帳のデータを改ざんすることはできない。直近に追加されたブロックのハッシュは、その前に発生したチェーン上のあらゆるトランザクションを表し、すべてのピア・ノードが一貫性のある信頼できる状態にあることを保証できるようにする。チェーンは、分散型台帳ネットワークのワークロードの追記のみという性質を効率的にサポートするピア・ノードのファイル・システム（ローカル、取り付けられたストレージ、クラウドなど）に格納されてよい。
【００３４】
分散型台帳の現在の状態は、チェーンのトランザクション・ログに含まれるすべてのキーの最新の値を表す。現在の状態は、チャネルに知られている最新のキー値を表すので、ワールド・ステートと呼ばれることがある。チェーンコード呼出しは、分散型台帳の現在の状態のデータに対してトランザクションを実行する。これらのチェーンコードの相互作用を効率的にするために、キーの最新の値は、状態データベースに格納されてよい。状態データベースは、単にチェーンのトランザクション・ログに対するインデックス付きビューとすることができ、したがって、いつでもチェーンから再生成され得る。状態データベースは、ピア・ノードの起動時、およびトランザクションが受け入れられる前に、自動的に回復（または必要に応じて生成）されてよい。
【００３５】
図２は、例示的な実施形態による、ブロックチェーン・システムアーキテクチャの構成２００Ａを示す。図２を参照すると、ブロックチェーン・アーキテクチャ２００Ａは、特定のブロックチェーン要素、例えば、ブロックチェーン・トランザクションの追加および妥当性確認プロセス（合意）に参加するブロックチェーン・ノード２８１〜２８４のグループ２８０を含んでよい。ブロックチェーン・ノード２８１〜２８４のうちの１つまたは複数は、トランザクションに裏書きしてよく、１つまたは複数のブロックチェーン・ノード２８１〜２８４は、アーキテクチャ２００Ａ内のすべてのブロックチェーン・ノードに順序付けサービスを提供してよい。ブロックチェーン・ノードは、ブロックチェーン認証を開始し、ブロックチェーン層２２０に格納されているブロックチェーン台帳に書き込もうとしてよく、この書込みのコピーが、基礎となる物理インフラストラクチャ２１０にも格納されてよい。ブロックチェーンの構成は、格納されたプログラム／アプリケーション・コード２５０（例えば、チェーンコード、スマート・コントラクトなど）にアクセスして実行するためにアプリケーション・プログラミング・インターフェース（ＡＰＩ）２６０にリンクされた１つまたは複数のアプリケーション２７０を含んでよく、プログラム／アプリケーション・コード２５０は、参加者が求めるカスタマイズされた構成に従って作成することができ、それら自体の状態を維持し、それら自体のアセットを管理し、外部情報を受け取ることができる。これは、トランザクションとしてデプロイされ、ブロックチェーン台帳に追加することによって、すべてのブロックチェーン・ノード２８１〜２８４にインストールされ得る。
【００３６】
ブロックチェーン基盤またはブロックチェーン・プラットフォーム２０５は、ブロックチェーン・データの様々な層と、サービス（暗号信用サービス、仮想実行環境など）と、新しいトランザクションを受信および格納し、データ・エントリにアクセスしようとしている監査者にアクセスを提供するために使用され得る基礎となる物理コンピュータ・インフラストラクチャとを含んでよい。ブロックチェーン層２２０は、プログラム・コードを処理し、物理インフラストラクチャ２１０に関与するために必要な仮想実行環境へのアクセスを提供するインターフェースを公開する。暗号信用サービス２３０は、アセット交換トランザクションなどのトランザクションを検証し、情報をプライベートに保つために使用されてよい。
【００３７】
図２のブロックチェーン・アーキテクチャの構成は、ブロックチェーン・プラットフォーム２０５によって公開された１つまたは複数のインターフェースおよび提供されたサービスを介して、プログラム／アプリケーション・コード２５０を処理および実行してよい。コード２５０は、ブロックチェーンアセットを制御してよい。例えば、コード２５０は、データを格納および転送することができ、スマート・コントラクトおよび条件と関連するチェーンコードまたはその実行の対象になる他のコード要素の形態で、ノード２８１〜２８４によって実行されてよい。非限定的な例として、リマインダ、更新、または変更、更新の対象になる他の通知あるいはその組合せなどを実行するために、スマート・コントラクトが作成されてよい。スマート・コントラクト自体は、ブロックチェーン台帳の権限付与およびアクセスの要件ならびに使用に関連するルールを識別するために使用され得る。例えば、クライアント・デバイスから受け取ったハッシュされた識別子情報２５２は、ブロックチェーン層２２０に含まれる１つまたは複数の処理エンティティ（例えば、仮想マシン）によって処理されてよい。結果は、ブロックチェーン・コンピューティング環境から第三者アプリケーションに付与されるアクセス２５４を含んでよい。この例では、以前に知られているユーザ識別子またはデータ・テンプレート情報が、ブロックチェーン・プラットフォーム２０５に格納されてよい。物理マシン２１０は、ユーザ・デバイス・テンプレートを取得するためにアクセスされてよく、その情報は、検証目的で、次に来るユーザ識別子と照合するために使用され得る。
【００３８】
チェーンコード内では、スマート・コントラクトは、高レベルのアプリケーションおよびプログラミング言語によって作成され、次いでブロックチェーン内のブロックに書き込まれてよい。スマート・コントラクトは、ブロックチェーン（例えば、ブロックチェーン・ピアの非中央集権的ネットワーク）内で登録、格納、または複製あるいはその組合せが行われる実行可能コードを含んでよい。トランザクションは、スマート・コントラクトに関連する条件が満たされていることに応答して実行され得るスマート・コントラクト・コードの実行である。スマート・コントラクトの実行は、ブロックチェーン台帳の状態に対する信頼できる変更をトリガしてよい。スマート・コントラクトの実行によって引き起こされたブロックチェーン台帳に対する変更は、１つまたは複数の合意プロトコルを介して、ブロックチェーン・ピアの分散型ネットワーク全体に自動的に複製され得る。
【００３９】
スマート・コントラクトは、キー値ペアの形式でデータをブロックチェーンに書き込んでよい。さらに、スマート・コントラクト・コードは、ブロックチェーンに格納された値を読み取り、それらをアプリケーションの動作で使用することができる。スマート・コントラクト・コードは、様々な論理演算の出力をブロックチェーンに書き込むことができる。コードは、仮想マシンまたは他のコンピューティング・プラットフォームの中で一時データ構造を作成するために使用されてよい。ブロックチェーンに書き込まれたデータは、パブリックとするか、または暗号化してプライベートとして維持するか、あるいはその組合せとすることができる。スマート・コントラクトによって使用／生成された一時データは、提供された実行環境によってメモリ内に保持され、その後ブロックチェーンに必要なデータが識別されると削除される。
【００４０】
チェーンコードは、追加機能と共に、スマート・コントラクトのコード解釈を含んでよい。本明細書に記載のように、チェーンコードは、コンピューティング・ネットワーク上にデプロイされるプログラム・コードとすることができ、プログラム・コードは、合意プロセス中にチェーン・バリデータによって共に実行され、妥当性を確認される。チェーンコードは、ハッシュを受け取り、以前に格納された特徴抽出器の使用によって作成されたデータ・テンプレートに関連付けられたハッシュをブロックチェーンから取得する。ハッシュ識別子のハッシュと、格納された識別子テンプレート・データから作成されたハッシュが一致する場合、チェーンコードは、要求されたサービスに権限付与キーを送る。チェーンコードは、暗号の詳細に関連付けられたデータをブロックチェーンに書き込んでよい。図２のこの例では、アセットサービスを提供するエンティティの仕様に従って、スマート・コントラクト情報の公開および取得が更新２２２されてよい。１つの機能は、要求側エンティティ、この例ではエンティティ＃２が、正しい資格情報を有し、かつ有効期限がまだ満了しておらず、依然として有効または保留の状態（すなわち、満期日前）である場合、エンティティ＃２にアセットへのアクセス２２４を提供することであり得る。正しい資格情報が必要であり、アセットアクセス情報を公開する前に、スマート・コントラクトの条件が満たされなければならない。
【００４１】
図３は、例示的な実施形態による、ブロックチェーンのノード間のトランザクションのフロー２００Ｂの例を示す。図３を参照すると、トランザクションのフローは、アプリケーション・クライアント・ノード２０１によって裏書ピア・ノード２８１に送信されるトランザクション提案を含んでよい。裏書ピア２８１は、クライアントの署名を検証し、チェーンコード関数を実行してトランザクションをシミュレートしてよい。出力は、チェーンコードの結果、チェーンコードに読み取られたキー／値のバージョンのセット（読取りセット）、およびチェーンコードに書き込まれたキー／値のセット（書込みセット）である。提案応答は、裏書署名と共にクライアント２０１に返送される。クライアントは、裏書きをトランザクションのペイロードにまとめ、それを順序付けサービス・ノード２８４にブロードキャストする。次いで、順序付けサービス・ノード２８４は、順序付けられたトランザクションをブロックとしてチャネル上のすべてのピア２８１〜２８３に配信する。コミットの前に、各ピア２８１〜２８３がトランザクションの妥当性を確認してよい。例えば、それらのピアは、指定されたピアの正しい割当てが結果に署名していることを保証するために裏書ポリシーを確認し、トランザクションのペイロードに対する署名を認証してよい。
【００４２】
図３を参照すると、ステップ２９１において、クライアント・ノード２０１は、要求を構築し、裏書者であるピア・ノード２８１に送ることによって、トランザクションを開始する。クライアント２０１は、Ｎｏｄｅ、Ｊａｖａ（登録商標）、Ｐｙｔｈｏｎなどのサポートされているソフトウェア開発キット（ＳＤＫ：software development kit）を活用するアプリケーションを含むことができ、利用可能なＡＰＩを利用してトランザクション提案を生成する。Ｊａｖａ（登録商標）およびすべてのＪａｖａ（登録商標）ベースの商標およびロゴは、Ｏｒａｃｌｅまたはその関連会社あるいはその両方の商標または登録商標である。提案は、データがブロックチェーン台帳に対して読取りまたは書込み（すなわち、アセットの新しいキー値ペアを書き込むこと）あるいはその組合せをされ得るように、チェーンコード関数を呼び出すことを求める要求である。ＳＤＫは、トランザクション提案を適切に設計された形式（例えば、ｇＲＰＣを経由するプロトコル・バッファ）にパッケージ化するためのシムとして機能し、クライアントの暗号資格情報を受け取り、このトランザクション提案のための一意の署名を生成する。
【００４３】
それに応じて、裏書ピア・ノード２８１は、（ａ）トランザクション提案が適切に形成されていること、（ｂ）トランザクションが過去にすでにサブミットされていないこと（リプレイアタック保護）、（ｃ）署名が有効であること、および（ｄ）サブミッター（例ではクライアント２０１）に、そのチャネルで提案された動作を実行するための権限が適切に付与されていることを検証してよい。裏書ピア・ノード２８１は、トランザクション提案の入力を、呼び出されるチェーンコード関数への引数として受け取ってよい。次いで、チェーンコードが現在の状態のデータベースに対して実行されて、応答値、読取りセット、書込みセットを含むトランザクション結果を生成する。しかしながら、この時点ではブロックチェーン台帳に対する更新は行われない。ステップ２９２において、これらの値のセットは、裏書ピア・ノード２８１の署名と共に、クライアント２０１のＳＤＫへの提案応答として渡され、このＳＤＫが、アプリケーションが消費するペイロードを構文解析する。
【００４４】
それに応じて、クライアント２０１のアプリケーションは、裏書ピアの署名を検査／検証し、提案応答を比較して、提案応答が同じかどうかを判定する。チェーンコードがブロックチェーン台帳に照会しただけの場合、アプリケーションは照会応答を検査し、通常はトランザクションを順序付けサービス２８４にサブミットしない。クライアント・アプリケーションが、ブロックチェーン台帳を更新するためにトランザクションを順序付けサービス２８４にサブミットしようとしている場合、アプリケーションは、サブミットする前に、指定された裏書ポリシーが満たされているかどうか（すなわち、トランザクションに必要なピア・ノードが両方裏書きしたかどうか）を判定する。ここで、クライアントは、トランザクションの複数の当事者のうちの１つのみを含んでよい。この場合、各クライアントは、それ自体の裏書ノードを有してもよく、各裏書ノードは、トランザクションに裏書きする必要がある。アーキテクチャは、アプリケーションが応答を検査しないことを選択するか、あるいは裏書きされていないトランザクションを転送する場合でも、裏書ポリシーがピアによって引き続き実施され、コミット妥当性確認フェーズで維持されるようにする。
【００４５】
検査が成功した後、ステップ２９３において、クライアント２０１は、裏書きをトランザクションにまとめ、順序付けノード２８４へのトランザクション・メッセージ内でトランザクションの提案および応答をブロードキャストする。トランザクションは、読取り／書込みセット、裏書ピアの署名、およびチャネルＩＤを含んでよい。順序付けノード２８４は、その動作を実行するためにトランザクションの内容全体を検査する必要はなく、単に、ネットワーク内のすべてのチャネルからトランザクションを受け取り、それらをチャネル別に時系列に順序付けをし、チャネルごとにトランザクションのブロックを作成してよい。
【００４６】
ステップ２９４において、トランザクションのブロックは、順序付けノード２８４からチャネル上のすべてのピア・ノード２８１〜２８３に配信される。裏書ポリシーが満たされていることを保証するため、およびトランザクションの実行によって読取りセットが生成されて以来、読取りセットの変数に関して台帳の状態に変更がないことを保証するために、ブロック内のトランザクションは、妥当性が確認される。ブロック内のトランザクションは、有効または無効であるとしてタグ付けされる。さらに、ステップ２９５において、各ピア・ノード２８１〜２８３は、ブロックをチャネルのチェーン（または他の分散型台帳）に追加し、有効なトランザクションごとに書込みセットが現在の状態のデータベースにコミットされる。トランザクション（呼出し）が変更不可能なようにチェーンに追加されたことをクライアント・アプリケーションに通知するため、およびトランザクションが有効にされたか、または無効にされたかを通知するために、イベントが発行される。
【００４７】
図４は、許可型ブロックチェーン・ネットワーク３００の例を示しており、許可型ブロックチェーン・ネットワーク３００は、分散型の非中央集権的なピアツーピア・アーキテクチャ、ならびにユーザの役割および権限を管理する認証局３１８を特徴とする。この例では、ブロックチェーン・ユーザ３０２は、トランザクションを許可型ブロックチェーン・ネットワーク３１０にサブミットしてよい。トランザクションは、デプロイ、呼出し、または照会とすることができ、ＳＤＫを利用するクライアント側アプリケーションを通じて、ＲＥＳＴ  ＡＰＩを介して直接的に、または同様の方法によって、発行されてよい。信頼できるビジネス・ネットワークは、監査者（例えば、米国の株式市場における証券取引委員会）などの規制者システム３１０にアクセスを提供してよい。一方、ブロックチェーン・ネットワーク運用者システム３１２は、規制者システム３１０を「監査者」として登録し、ブロックチェーン・ユーザ３０２を「クライアント」として登録するなど、メンバーの権限を管理する。監査者を、ブロックチェーン台帳への照会のみに制限することができ、一方、クライアントに、特定のタイプのチェーンコードのデプロイ、呼出し、照会を行うための権限を与えることができる。
【００４８】
ブロックチェーン開発者システム３１６は、チェーンコードおよびクライアント側アプリケーションを記述する。ブロックチェーン開発者システム３１６は、ＲＥＳＴインターフェースを介してチェーンコードをネットワークに直接デプロイすることができる。従来のデータ・ソース３３０からの資格情報をチェーンコードに含めるために、開発者システム３１６は、アウトオブバンド接続を使用してデータにアクセスすることができる。この例では、ブロックチェーン・ユーザ３０２は、ピア・ノード３１２を介してネットワークに接続する。ノード３１２は、任意のトランザクションを進める前に、認証局３１８からユーザの登録およびトランザクション証明書を取得する。場合によっては、ブロックチェーン・ユーザは、許可型ブロックチェーン・ネットワーク３１０上でトランザクションを実行するために、それらのデジタル証明書を所有しなければならない。一方、チェーンコードを動作させようとするユーザは、従来のデータ・ソース３３０でその資格情報を検証することが必要になることがある。ユーザの権限付与を確証するために、チェーンコードは、従来の処理プラットフォーム３２０を介して、このデータへのアウトオブバンド接続を使用することができる。
【００４９】
様々な実施形態によれば、抽選分散型台帳ネットワークは、シード値を生成するために使用されるシード・ブロックチェーン、および、シード値を介して生成される抽選シーケンスを検証するために使用される検証ブロックチェーンなどの複数の分散型台帳を含み、格納することができる。各分散型台帳は、いくつかの違いはあるが同様の情報を格納してよい。図５は、シード値を生成するための分散型台帳４００の例を示し、図６は、抽選番号シーケンスを検証するための分散型台帳５００の例を示す。
【００５０】
例示的な実施形態によれば、分散型台帳４００は、抽選番号生成プログラム用のシード値を生成するために、ノードによって使用されてよい。図５はまた、分散型台帳４００内に格納され得るブロック４１０の例も示す。分散型台帳４００は、抽選番号のシーケンスまたはランダム・シーケンスを生成するために使用されることになる最終シード値を生成するために、図１に示す抽選分散型台帳ネットワーク１００のノードによって使用されてよい。例において、ＲＩＤは、抽選分散型台帳システム内のノードを表す一意のＩＤである要求ＩＤである。シードは、抽選番号のランダム・シーケンスを生成するためのソフトウェア・プログラムへの唯一の入力である。公開鍵（Ｋｐｕ）および秘密鍵（Ｋｐｒｉ）は、ノードに割り当てられ得る非対称鍵のペアである。各秘密鍵はノードによって維持され、公開鍵は他のノードと共有されて、他のノードが分散型台帳４００に格納されたノードのデータを復号できるようにする。
【００５１】
図５において、分散型台帳４００上のブロックのシーケンスに格納された例示的なデータ・ブロック４１０は、ブロックを識別する情報ＩＤ、ブロック４１０を更新することになるネットワーク・ノードを識別する要求ＩＤ４１１、初期シード値の更新された許可ビットを表す更新されたシード値４１２、シードの前の値を表す前のシード情報ＩＤ４１３、および要求ＩＤ４１１に対応するネットワーク・ノードの秘密鍵を使用して暗号化された暗号化ＲＩＤを含む。更新されたシード値４１２は、要求ＩＤ４１１に対応するそれぞれのネットワーク・ノードが更新することを許可されている、データ・ブロック４１０に割り当てられた初期シード値のビット（許可ビット４１５）である。許可ビット４１５は、初期シードが生成され、すべてのネットワーク・ノードに提供されるとき、主催側ノードによってデータ・ブロック４１０に割り当てられてよい。図５に示すように、許可ビット４１５は、下線で表されている。認可ビットは、分散型台帳４００上の複数のブロックの間でブロックごとに異なる。また、各ブロックに割り当てられる許可ビット量は、異なっていてもよく、または同じでもよい。図５において、各ブロック（したがって、各ネットワーク・ノード）には、３つの許可ビットが割り当てられている。各ブロックに割り当てられる許可ビット量は、初期シードの合計サイズおよびネットワーク・ノード数に基づいて決定されてよい。
【００５２】
最終シード値を生成する前に、分散型台帳４００上のデータ・ブロックのマップおよび対応するシードが、すべてのネットワーク・ノードに配布されてよい。最終シード値の生成は、複数のステップに従って実行されてよい。例えば、主催側ノードは初期シード値を生成し、初期シード情報を分散型台帳ネットワークにサブミットしてよい。ネットワーク・ノードが初期シードを更新しようとするとき、ネットワーク・ノードは、初期シードのどの許可ビットが、ネットワーク・ノードに関連付けられたそれぞれのブロックに割り当てられているかを識別する。次いで、ネットワーク・ノードは、（例えば、タイム・スタンプを取得することによって）許可ビットＳ（ＲＩＤ）値としてランダムな数値を生成してよい。ネットワーク・ノードは、ＲＩＤ、更新されたシード値、および前のシード情報ＩＤをブロックに配置することによって、シード情報を構築してよい。次いで、シード情報内にＲＩＤを添付し、Ｋｐｒｉ（ＲＩＤ）を使用して暗号化された暗号化シード情報を分散型台帳にサブミットする。ある時点で、すべてのネットワーク・ノードは、対応するＫｐｕ（ＲＩＤ）を分散型台帳にサブミットして、他のネットワーク・ノードが該他のネットワーク・ノードによって提供される暗号化された許可ビットを復号できるようにしてよい。次いで、あらゆるノードが、ブロック内の変更されたビット値を復号して、最終的なシード値を取得することができる。
【００５３】
許可ビットは、そのブロックの許可されたネットワーク・ノードによってのみ更新され得る、初期シードのビットの一部分または一部である。主催側ノードは、以下のこと、すなわち、Ｎビット長のシード値の場合、それらのｉビットは許可ビットであること、可能なすべての許可ビットは、ｓ［０］、ｓ［１］．．．ｓ［Ｋ］（Ｋ＝ＣｉＮ−１）で表されるＣｉＮであることに基づいて、許可ビットをブロックに割り当ててよく、許可ビット・シーケンスは、初期シード値と共に分散型台帳にサブミットされる。それに対応して、各ネットワーク・ノードは、擬似ランダム生成器（ＰＲＮＧ：pseudo-random generator）を使用して、ブロック番号に従ってランダムなインデックス値Ｘを生成してよい。許可ビットｓ［Ｘ］が決定される。ネットワーク・ノードが、ネットワーク・ノードに関連付けられたブロックに割り当てられた許可ビットの識別を受け取ると、ネットワーク・ノードは、シードのそれぞれの許可ビットを更新し、更新されたシードを新しいブロックとして分散型台帳４００にポストすることができる。ここで、許可されたノードは、その許可ビットのみを更新することができ、シード値の最終結果を操作して予測することはできない。
【００５４】
図６は、例示的な実施形態による、生成された抽選番号シーケンスを検証するための分散型台帳５００を示す。図６はまた、分散型台帳５００内に格納され得るブロック５１０の例も示す。この例では、ブロック５１０は、分散型台帳５００内のレコードを識別するレコードＩＤ、ノードのＲＩＤ５１１、レコードのカウント５１２、前のレコードＩＤおよび情報５１３、ならびにＲＩＤ５１１に対応するノードの秘密鍵で暗号化された暗号化ＲＩＤ情報５１４を含んでよい。
【００５５】
検証段階の前に、ランダム・シーケンスを生成するためのソフトウェア・プログラムが、すべてのネットワーク・ノードに配布されるべきである。抽選番号シーケンスを生成するとき、シードは、プログラムの唯一の入力とすることができる。最初に、主催側ノードは、分散型台帳５００を介して生成された最終シード値に基づいてランダム・シーケンスを生成する。ランダム・シーケンスは、すべてのネットワーク・ノードに分散されてよく、番号のパブリック・リストと呼ばれることがある。次いで、各ネットワーク・ノードは、ソフトウェア・プログラムを使用して同じ最終シード値を処理して、主催側ノードによって生成されたランダム・シーケンスが正しいかどうかを判定することによって、主催側ノードによって生成されたランダム・シーケンスを検証してよい。ネットワーク・ノードがランダム・シーケンスを検証する場合、ネットワーク・ノードは、主催側ノードに通知を送信してよい。主催側ノードは、検証の合意（例えば、５０％を超える）を受け取ると、ランダム・シーケンスが承認されたと判断する。したがって、ランダム・シーケンスは、主催側ノードまたはネットワーク・ノードあるいはその両方のいずれかによって抽選番号として出力され得る。
【００５６】
例えば、各ネットワーク・ノードは、分散型台帳ネットワークからランダム・シーケンスを受け取るか、あるいは取り出すことによって、最終シード値が正しいかどうかを検証してよい。ノードは、Ｋｐｕ（ＲＩＤ）でＲＩＤを復号することによって分散型台帳上の各要求者ノードを検証し、ＲＩＤが主催者のＲＩＤであるかどうかを確認してよい。ノードは、変更されたシード・ビットが分散型台帳で許可されているかどうかを検証してよい。ノードは、擬似ランダム生成器（ＰＲＮＧ）を使用して、ブロック番号に従ってランダムなインデックス値Ｘを生成してよい。許可ビットｓ［Ｘ］が決定される。ブロック内の変更されたビットが許可ビットｓ［Ｘ］に準拠しているかどうかを確認する。
【００５７】
別の例として、各ネットワーク・ノードは、最終シードを使用して主催側ノードによって生成されたランダム・シーケンスを検証してよい。例えば、ノードは、生成された最終シードを用いてプログラムを実行することによって、ランダム・シーケンスを生成してよい。ノードは、（例えば、分散型台帳ネットワークからのランダム・シーケンスのハッシュ値を、生成されたランダム・シーケンスのハッシュ値と比較することによって）分散型台帳ネットワークからのランダム・シーケンスを、生成されたランダム・シーケンスを用いて検証してよい。上記の検証がすべて成功した場合、ネットワーク・ノードは、最新の有効な検証レコードから検証レコードのカウント数を取得してよい。次に、ノードは、カウント数を１増やし、検証レコードのカウント数、ＲＩＤ、前の検証レコードＩｄ、およびＫｐｒｉ（ＲＩＤ）で暗号化されたＲＩＤを配置することによって検証レコードを構築し、構築した検証レコードを分散型台帳ネットワークにサブミットしてよい。検証レコードを含むブロックが生成されると、分散型台帳システムは、暗号化されたＲＩＤを復号して確認することによって検証レコードの要求者を検証し、カウント数の増分が１であるかどうかを確認することによって、検証レコードのカウント数が受け入れ可能かどうかを確認してよい。上記の検証が成功したとき、検証レコードがブロック内に記録されてよく、検証レコードＩｄが生成されてよい。最後に、分散型台帳ネットワーク内の最新の有効な検証レコードは、検証レコードの総カウント数を含む。カウント数が抽選システムの要求者の５０％より大きい場合、要求者リストの検証は成功する。
【００５８】
図７は、例示的な実施形態による動作の方法のうちの１つまたは複数に従って、ブロックチェーンに対して様々な動作を実行するように構成される物理インフラストラクチャを示す。図７を参照すると、構成６００Ａは、ブロックチェーン６２０およびスマート・コントラクト６４０を有する物理インフラストラクチャ６１０を含み、例示的な実施形態のいずれかに含まれる動作ステップ６１２のいずれかを実行することができる。ステップ／動作６１２は、１つまたは複数のフロー図または論理図あるいはその両方において説明または図示されるステップのうちの１つまたは複数を含んでよい。ステップは、コンピュータ・システム構成の物理インフラストラクチャ６１０上にある１つまたは複数のスマート・コントラクト６４０またはブロックチェーン６２０あるいはその両方に書き込まれるか、またはこれらから読み取られる、出力されたか、または書き込まれた情報を表すことがある。実行されたスマート・コントラクト６４０またはブロックチェーン６２０あるいはその両方から、データが出力され得る。物理インフラストラクチャ６１０は、１つまたは複数のコンピュータ、サーバ、プロセッサ、メモリ、またはワイヤレス通信デバイス、あるいはその組合せを含んでよい。
【００５９】
図８は、例示的な実施形態による、ブロックチェーン上でスマート・コントラクト条項を実施するように構成された契約当事者と仲介サーバの間の例示的なスマート・コントラクトの構成を示す。図８を参照すると、構成６００Ｂは、通信セッション、アセット移転セッション、あるいは１つまたは複数のユーザ・デバイス６５２、もしくは６５６、またはその両方を明確に識別するスマート・コントラクト６４０によって動かされる処理または手続きを表し得る。スマート・コントラクト実行に関する実行、動作、および結果は、サーバ６５４によって管理されてよい。スマート・コントラクト６４０の内容は、スマート・コントラクトのトランザクションの当事者であるエンティティ６５２および６５６の１つまたは複数によるデジタル署名を要求することができる。スマート・コントラクト実行の結果は、ブロックチェーン・トランザクションとしてブロックチェーンに書かれてよい。
【００６０】
上記の実施形態は、ハードウェアに、プロセッサによって実行されるコンピュータ・プログラムに、ファームウェアに、または上記の組合せの中に実装されてよい。コンピュータ・プログラムは、記憶媒体などのコンピュータ可読媒体上で具体化されてよい。例えば、コンピュータ・プログラムは、ランダム・アクセス・メモリ（「ＲＡＭ」）、フラッシュ・メモリ、リード・オンリ・メモリ（「ＲＯＭ」）、消去可能プログラマブル・リード・オンリ・メモリ（「ＥＰＲＯＭ」）、電気的消去可能プログラマブル・リード・オンリ・メモリ（「ＥＥＰＲＯＭ」）、レジスタ、ハード・ディスク、リムーバブル・ディスク、コンパクト・ディスク・リード・オンリ・メモリ（「ＣＤ−ＲＯＭ」）、または当技術分野で知られた記憶媒体の他の任意の形式の中にあってよい。
【００６１】
例示的な記憶媒体は、プロセッサが記憶媒体に対して情報を読み書きできるように、プロセッサに結合されてよい。代替として、記憶媒体は、プロセッサに結合されてよい。プロセッサおよび記憶媒体は、特定用途向け集積回路（「ＡＳＩＣ：application specific integrated circuit」）の中にあってよい。代替として、プロセッサおよび記憶媒体は、個別の構成要素として存在してよい。例えば、図９は、例示的なコンピュータ・システム・アーキテクチャ７００を示し、これは、上述のコンポーネントなどのいずれかを表すか、またはこれらに統合されてよい。
【００６２】
図９は、本明細書に記載の本出願の実施形態の使用または機能の範囲について、何らかの限定を示唆することを意図するものではない。いずれにせよ、コンピューティング・ノード７００は、上述した機能のいずれかを実装すること、または実行すること、あるいはその両方を行うことができる。例えば、コンピューティング・ノード７００は、主催側ノード、要求側ノード、ネットワーク・ノード、ノードの組合せ（例えば、主催側ノードとネットワーク・ノード）などとすることができる。
【００６３】
コンピューティング・ノード７００には、多数の他の汎用または専用のコンピューティング・システム環境または構成で動作可能なコンピュータ・システム／サーバ７０２がある。コンピュータ・システム／サーバ７０２と共に使用するのに適したよく知られているコンピューティング・システム、環境、または構成あるいはその組合せの例には、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、セット・トップ・ボックス、プログラム可能なコンシューマ・エレクトロにクス、ネットワークＰＣ、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および上記のシステムまたはデバイスのいずれかを含む分散型クラウド・コンピューティング環境などが含まれるが、これらに限定されない。
【００６４】
コンピュータ・システム／サーバ７０２は、コンピュータ・システムによって実行される、プログラム・モジュールなどのコンピュータ・システムが実行可能な命令の一般的な背景で説明され得る。一般に、プログラム・モジュールは、特定のタスクを実行するか、または特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、構成要素、論理、データ構造などを含んでよい。コンピュータ・システム／サーバ７０２は、通信ネットワークを介してリンクされるリモート処理デバイスによってタスクが実行される分散型クラウド・コンピューティング環境の中で実践されてよい。分散型クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ記憶デバイスを含むローカルとリモートの両方のコンピュータ・システム記憶媒体の中に配置されてよい。
【００６５】
図９に示すように、クラウド・コンピューティング・ノード７００内のコンピュータ・システム／サーバ７０２は、汎用コンピューティング・デバイスの形で示される。コンピュータ・システム／サーバ７０２の構成要素には、１つまたは複数のプロセッサまたは処理ユニット７０４、システム・メモリ７０６、およびシステム・メモリ７０６を含む様々なシステム構成要素をプロセッサ７０４に結合するバスが含まれ得るが、これらに限定されない。
【００６６】
バスは、メモリ・バスまたはメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィックス・ポート、および任意の様々なバス・アーキテクチャを使用するプロセッサまたはローカル・バスを含む、１つまたは複数の任意のタイプのバス構造を表す。限定ではなく例として、そのようなアーキテクチャには、インダストリ・スタンダード・アーキテクチャ（ＩＳＡ）バス、マイクロ・チャネル・アーキテクチャ（ＭＣＡ）バス、拡張ＩＳＡ（ＥＩＳＡ）バス、ビデオ・エレクトロニクス規格協会（ＶＥＳＡ）ローカル・バス、およびペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）バスが含まれる。
【００６７】
コンピュータ・システム／サーバ７０２は、典型的には、様々なコンピュータ・システム可読媒体を含む。そのような媒体は、コンピュータ・システム／サーバ７０２によってアクセスできる任意の利用可能な媒体とすることができ、揮発性媒体と不揮発性媒体の両方、取り外し可能な媒体と取り外し不可の媒体の両方を含む。一実施形態において、システム・メモリ７０６は、他の図のフロー図を実装する。システム・メモリ７０６は、ランダム・アクセス・メモリ（ＲＡＭ）７１０またはキャッシュ・メモリ７１２あるいはその両方などの、揮発性メモリの形のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム／サーバ７０２は、他の取り外し可能／取り外し不可、揮発性／不揮発性のコンピュータ・システム記憶媒体をさらに含んでよい。単に例としてのみ、ストレージ・システム７１４は、取り外し不可、不揮発性の磁気媒体（図示せず、通常「ハード・ドライブ」と呼ばれる）に対する読み取りと書き込みを行うために提供される場合がある。図示しないが、取り外し可能、不揮発性の磁気ディスク（例えば「フロッピー（Ｒ）・ディスク」）に対する読み取りと書き込みを行うための磁気ディスク・ドライブ、およびＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、または他の光媒体などの取り外し可能、不揮発性の光ディスクに対する読み取りと書き込みを行うための光ディスク・ドライブが提供され得る。そのような例において、それぞれは、１つまたは複数のデータ媒体インターフェースによってバスに接続され得る。以下でさらに詳細に示され、説明されるように、メモリ７０６は、本出願の様々な実施形態の機能を実行するように構成された一連の（例えば、少なくとも１つの）プログラム・モジュールを有する少なくとも１つのプログラム製品を含んでよい。
【００６８】
プログラム／ユーティリティ７１６は、プログラム・モジュール７１８のセット（少なくとも１つ）を有し、限定ではなく例として、メモリ７０６、ならびにオペレーティング・システム、１つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データも格納されてよい。オペレーティング・システム、１つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データ、またはこれらの何らかの組合せは、それぞれネットワーキング環境の実装を含んでよい。プログラム・モジュール７１８は一般に、本明細書に記載されるような本出願の様々な実施形態の機能または方法あるいはその両方を実行する。
【００６９】
当業者によって理解されるように、本出願の態様は、システム、方法、またはコンピュータ・プログラム製品として具体化されてよい。したがって、本出願の態様は、全面的にハードウェアの実施形態、全面的にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、またはソフトウェアとハードウェアの態様を組み合わせた実施形態の形をとることができ、これらはすべて、本明細書では、概して「回路」、「モジュール」、または「システム」と呼ばれることがある。さらに、本出願の態様は、コンピュータ可読プログラム・コードがその上で具体化された１つまたは複数のコンピュータ可読媒体の中で具体化されるコンピュータ・プログラム製品の形をとることができる。
【００７０】
コンピュータ・システム／サーバ７０２は、キーボード、ポインティング・デバイス、ディスプレイ７２２などの１つまたは複数の外部デバイス７２０、ユーザがコンピュータ・システム／サーバ７０２と対話できるようにする１つまたは複数のデバイス、またはコンピュータ・システム／サーバ７０２が１つまたは複数の他のコンピューティング・デバイスと通信できるようにする任意のデバイス（例えば、ネットワーク・カード、モデムなど）、あるいはその組合せと通信してもよい。このような通信は、Ｉ／Ｏインターフェース７２４を介して行うことができる。さらに、コンピュータ・システム／サーバ７０２は、ローカル・エリア・ネットワーク（ＬＡＮ）、一般的な広域ネットワーク（ＷＡＮ）、またはパブリック・ネットワーク（例えば、インターネット）、あるいはその組合せなどの１つまたは複数のネットワークと、ネットワーク・アダプタ７２６を介して通信することができる。図示されるように、ネットワーク・アダプタ７２６（例えば、ネットワーク・インターフェースなど）は、バスを介してコンピュータ・システム／サーバ７０２の他の構成要素と通信する。図示されていないが、他のハードウェア構成要素またはソフトウェア構成要素あるいはその両方がコンピュータ・システム／サーバ７０２と共に使用され得ることを理解されたい。例には、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、ＲＡＩＤシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが含まれるが、これらに限定されない。
【００７１】
様々な実施形態によれば、プロセッサ７０４は、初期シードを生成し、初期シードの１つまたは複数の許可ビットを、分散型台帳（例えば、シード・ブロックチェーン）内の複数のブロックの中から各ブロックに割り当てることができる。プロセッサ７０４は、初期シード、および初期シードのどの許可ビットが分散型台帳の各ブロックに割り当てられているかの識別を格納してよい。許可ビット・シーケンスは、ブロックに格納されるか、あるいはブロードキャスト送信などを通じてネットワーク・ノードに提供されてよい。分散型台帳は、メモリ７０６内に格納され、抽選分散型台帳内のすべてのノードにわたって複製されてよい。ネットワーク・インターフェース７２６は、各ネットワーク・ノードに割り当てられ、かつ各ネットワーク・ノードによって更新された許可ビットに基づいて、分散型台帳を介して複数のネットワーク・ノードのそれぞれによって部分的に生成された最終シード値を受け取ってよい。この例では、プロセッサ７０４は、最終シード値に基づいてランダム・シーケンスを生成し、そのランダム・シーケンスを検証分散型台帳のブロックに格納することができる。ここで、受け取ることは、ネットワーク・ノードによって暗号化されたシード分散型台帳データ（例えば、許可ビット）を受け取ることと、シード分散型台帳データを復号することと、復号されたデータに基づいて最終シードを決定することとを含み得る。
【００７２】
他の様々な実施形態によれば、ネットワーク・インターフェース７２４は、複数の分散型台帳ノードを含む分散型台帳ネットワークの主催側ノードによって生成された初期シードを受け取ることができる。例えば、初期シードは、分散型台帳ネットワーク内のノードから受け取った分散型台帳などから取得されてよい。プロセッサ７０４は、複数のネットワーク・ノードの中からネットワーク・ノードに関連付けられた分散型台帳のブロックに一意に割り当てられている初期シードの許可ビットを識別し、初期シードの識別された許可ビットを変更し、変更された許可ビットをネットワーク・ノードの暗号化キーを使用して暗号化し、暗号化された許可ビットを、複数のネットワーク・ノードのそれぞれの許可ビットのブロックを含む分散型台帳のブロックに格納してよい。この例では、プロセッサ７０４は、分散型台帳に格納されている、ネットワーク・ノードによって変更された許可ビット、および複数のネットワーク・ノードによって変更された他の許可ビットを使用して、最終シードを生成するかあるいは組み立てることが可能であり、ネットワーク・インターフェースは、最終シードを主催側ノードに送信するようにさらに構成される。
【００７３】
図１０および図１１は、例示的な実施形態による、抽選分散型台帳ネットワーク内の主催側ノードの方法８００Ａおよび方法８００Ｂを示す。例えば、主催側ノードは、分散型台帳ピアとすることができ、サーバ、データベース、クラウド・プラットフォーム、ユーザ・デバイス、キオスクなどを含み得る。図１０を参照すると、方法８００Ａは、８１０において、初期シードを生成すること、および８２０において、初期シードの１つまたは複数の許可ビットを分散型台帳（例えば、シード・ブロックチェーンなど）上の複数のブロックに割り当てることを含む。ここで、初期シードは、ランダムに生成され複数のビットを含む数値とすることができる。
【００７４】
許可ビットは、ブロックに割り当てられ、かつネットワーク・ノードに関連付けられている、初期シード（またはビット位置）内のビットとすることができる。各ブロックは、初期シードの異なる許可ビット（例えば、相互に排他的なビット）を割り当てられてよい。したがって、各ネットワーク・ノードは、分散型台帳にアクセスし、ブロックへのアクセス権を受け取ることができ、各ネットワーク・ノードが分散型台帳に相互作用するときに、そのそれぞれのブロックに関連付けられた許可ビットを変更する責任を負う場合がある。ノードは、分散型台帳の同じブロックを介して、ブロックの更新された許可ビットを格納してよい。いくつかの実施形態において、割り当てることは、初期シードからの同量の許可ビットを複数のネットワーク・ノードに対応する複数のブロックの中から各ブロックに割り当てることを含み得る。いくつかの実施形態において、各ブロックに割り当てられる許可ビットの量は、初期シード内のビット数および複数のネットワーク・ノードに含まれるノード数に基づいて決定されてよい。
【００７５】
８３０において、方法は、初期シード、および分散型台帳の複数のブロック内の各ブロックに初期シードのどの許可ビットが割り当てられているかの識別を格納することを含む。例えば、ブロックは、ブロックに関連付けられたネットワーク・ノード（例えば、要求側ノード）のＩＤ、初期シード値、初期シード値のどのビットがそのＩＤのネットワーク・ノードに対応するそれぞれのブロックに割り当てられているかの識別などを含んでよい。すべてのネットワーク・ノードが初期シードのそのそれぞれの許可ビットを更新するとき、ネットワーク・ノードは、更新された値を暗号化された形式でシード分散型台帳に格納してよい。
【００７６】
８４０において、方法は、複数のネットワーク・ノードの中のそれぞれのノードによって更新された許可ビットに基づいて分散型台帳にアクセスするように構成された複数のノードのそれぞれによって部分的に生成された最終シード値を受け取ることを含む。例えば、最終シードを受け取ることは、複数のノードのそれぞれの暗号化キーを受け取ることと、シード分散型台帳に格納されたそれぞれのノードによって更新された暗号化された許可ビットを、それぞれのノードのそれぞれの暗号化キーに基づいて復号することとを含んでよい。この例では、方法は、複数のネットワーク・ノードの中からそれぞれのノードによって更新された暗号化された許可ビットに基づいて最終シードを組み立てることをさらに含んでよい。
【００７７】
８５０において、方法は、最終シード値に基づいてランダム・シーケンス値を生成することと、ランダム・シーケンス値を分散型台帳のブロックに格納することとを含む。ランダム・シーケンスは、抽選券、抽選ボール、抽選番号などに対応するランダムに生成された番号のシーケンスとすることができる。いくつかの実施形態において、各ネットワーク・ノードは、対応するランダム・シーケンスを生成し、ネットワーク・ノードが（同じランダム・シーケンスを生成することによって）主催側ノードによって生成された乱数シーケンスを検証したかどうかを示す通知を主催側ノードに送信してよい。この例では、図１１を参照すると、方法８００Ｂは、８５２において、複数のネットワーク・ノードの合意からランダム・シーケンスの検証を受け取ることと、８５４において、合意に基づいてランダム・シーケンスが有効であると判定することと、８５６において、検証済みのランダム・シーケンスを抽選システムに出力することとを含み得る。
【００７８】
図１２および図１３は、例示的な実施形態による、抽選分散型台帳ネットワークにおけるネットワーク・ノードの方法９００Ａおよび方法９００Ｂを示す。例えば、ネットワーク・ノードは、分散型台帳ピア・ノードとすることができ、サーバ、データベース、クラウド・プラットフォーム、ユーザ・デバイス、キオスクなどを含み得る。場合によっては、ネットワーク・ノードは、要求側ノード、主催側ノード、またはそれらの組合せとすることができる。図１２を参照すると、９１０において、方法９００Ａは、複数のネットワーク・ノードの中からネットワーク・ノードに関連付けられた分散型台帳（例えば、シード・ブロックチェーン）上のブロックに一意に割り当てられている初期シードの許可ビットを識別することを含む。ここで、初期シードは、分散型台帳に格納されてよく、暗号化を介してネットワーク・ノードによって取得されてよい。各ネットワーク・ノードは、ネットワーク・ノードの更新あるいは変更が許可された初期シードからのビットの一意のセットを有してよい。その結果、各ネットワーク・ノードは、最終シード値を部分的に生成することができる。
【００７９】
９２０において、方法は、初期シードの識別された許可ビットを変更することと、変更された許可ビットをネットワーク・ノードの暗号化キーを使用して暗号化することとを含む。例えば、許可ビットは、許可ビットに対する乱数または乱数のシーケンスを生成するためのランダム・シーケンス生成器を使用して更新されてよい。９３０において、方法は、暗号化された許可ビットを、複数のネットワーク・ノードの中からの少なくとも１つの他のノードによって変更された許可ビットを含む分散型台帳のブロックに格納することを含む。例えば、ネットワーク・ノードは、変更／更新された許可ビットを秘密鍵で暗号化し、暗号化されたビットを分散型台帳のブロックに格納してよい。いくつかの実施形態において、方法は、シード分散型台帳に格納されたネットワーク・ノードの許可ビットを復号するために、ネットワーク・ノードの暗号化キーを複数のネットワーク・ノードに送信することをさらに含んでよい。
【００８０】
さらに、９４０において、方法は、分散型台帳のブロックに格納されている、ネットワーク・ノードによって変更された初期シードの許可ビット、および少なくとも１つの他のノードによって変更された初期シードの他の許可ビットを使用して、最終シードを組み立てることを含んでよい。この例では、方法は、生成された最終シードを主催側ノードに送信することをさらに含んでよい。例えば、図１３において、方法９００Ｂは、９５２において、複数のネットワーク・ノードによって抽選分散型台帳システムのノードに発行されている複数のネットワーク・ノードのそれぞれの暗号化キーを受け取ることを含んでよい。方法９００Ｂは、９５４において、分散型台帳に格納された複数のネットワーク・ノードのそれぞれによって変更された暗号化された許可ビットを、受け取った暗号化キーに基づいて復号することと、９５６において、各ネットワーク・ノードの復号された許可ビットに基づいて、最終シードを生成することとをさらに含んでよく、復号された許可ビットは、それぞれのネットワーク・ノードによって更新された異なるビット・セグメント（許可ビット）に基づいて完全なシード値を生成するように結合される。その結果、抽選分散型台帳システム内のネットワーク・ノードのそれぞれによって、最終シード値が部分的に生成され得る。
【００８１】
いくつかの実施形態において、方法９００は、最終シード値に基づいてランダム・シーケンス値を生成することと、生成されたランダム・シーケンス値を分散型台帳のブロックに格納することとをさらに含んでよい。いくつかの実施形態において、方法９００は、主催側ノードからランダム・シーケンス値を受け取ることと、主催側ノードによって生成されたランダム・シーケンス値を、生成されたランダム・シーケンス値に基づいて検証することと、検証の結果を主催側ノードに送信することとをさらに含んでよい。
【００８２】
システム、方法、および非一過性コンピュータ可読媒体のうちの少なくとも１つの例示的な実施形態が、添付図面に示され、前述の詳細な説明において説明されているが、本出願が、開示された実施形態に限定されず、以下の特許請求の範囲によって示され、定義されているように、多数の再構成、変更、および置換が可能であることが理解されよう。例えば、様々な図のシステムの機能は、本明細書に記載のモジュールまたは構成要素のうちの１つまたは複数によって、あるいは分散型アーキテクチャにおいて実行することができ、送信機、受信機、またはその両方のペアを含んでよい。例えば、個々のモジュールによって実行される機能の全部または一部は、それらのモジュールのうちの１つまたは複数によって実行されてよい。さらに、本明細書に記載の機能は、様々な時間に、様々なイベントに関して、モジュールまたは構成要素の内部または外部で、実行されてよい。また、様々なモジュール間で送信される情報は、データ・ネットワーク、インターネット、音声ネットワーク、インターネット・プロトコル・ネットワーク、ワイヤレス・デバイス、有線デバイスのうちの少なくとも１つを介して、または複数のプロトコルを介して、あるいはその組合せを介して、モジュール間で送信され得る。また、モジュールのいずれかによって送信または受信されるメッセージは、直接的に、またはその他のモジュールのうちの１つまたは複数を介して、あるいはその両方で、送信または受信されてよい。
【００８３】
当業者は、「システム」が、パーソナル・コンピュータ、サーバ、コンソール、携帯情報端末（ＰＤＡ：personal digital assistant）、携帯電話、タブレット・コンピューティング・デバイス、スマートフォン、もしくは他の任意の適切なコンピューティング・デバイス、またはデバイスの組合せとして具体化され得ることを理解するであろう。「システム」によって実行されているような上述の機能を提示することは、本出願の範囲を何らかの形で限定することを意図するものではなく、多くの実施形態の一例を示すことを意図するものである。実際には、本明細書に開示されている方法、システム、および装置は、コンピューティング技術と整合する局所化および分散された形態で実装されてよい。
【００８４】
本明細書に記載のシステムの特徴のいくつかは、それらの実装形態の独立性をより具体的に強調するためにモジュールとして提示されていることに留意されたい。例えば、モジュールは、カスタム超大規模集積（ＶＬＳＩ：very large scale integration）回路もしくはゲート・アレイ、ロジック・チップなどの既製の半導体、トランジスタ、または他の個別の構成要素を備えるハードウェア回路として実装されてよい。モジュールは、フィールド・プログラマブル・ゲート・アレイ、プログラマブル・アレイ・ロジック、プログラマブル・ロジック・デバイス、グラフィックス処理ユニットなどのプログラマブル・ハードウェア・デバイスに実装されてよい。
【００８５】
モジュールは、様々なタイプのプロセッサによって実行するために、ソフトウェアに少なくとも部分的に実装されてもよい。例えば、実行可能コードの特定のユニットは、例えばオブジェクト、プロシージャ、または関数として編成可能なコンピュータ命令の１つまたは複数の物理ブロックまたは論理ブロックを含んでよい。それでもやはり、特定のモジュールの実行ファイルは、物理的に一緒に配置される必要はなく、論理的に一緒に結合されるとき、モジュールを含み、かつモジュールの定められた目的を実現する、異なる場所に格納された異種の命令を含んでよい。さらに、モジュールは、コンピュータ可読媒体に格納されてよく、媒体は、例えば、ハード・ディスク・ドライブ、フラッシュ・デバイス、ランダム・アクセス・メモリ（ＲＡＭ）、テープ、またはデータを格納するために使用される他のこのような任意の媒体とすることができる。
【００８６】
実際には、実行可能コードのモジュールは、単一の命令、または多くの命令であってよく、いくつかの異なるコード・セグメント上、異なるプログラム間、およびいくつかのメモリ・デバイスにわたって分散されてよい。同様に、動作上のデータは、本明細書ではモジュール内に識別され、図示される場合があり、任意の適切な形で具体化されてもよく、任意の適切なタイプのデータ構造内で編成されてよい。動作上のデータは、単一のデータ・セットとして収集されてもよく、または異なる記憶デバイスを含む様々な場所にわたって分散されてもよく、少なくとも一部が単にシステムまたはネットワーク上の電子信号として存在してよい。
【００８７】
本出願の構成要素は、本明細書において全体的に説明され図示されるように、多種多様な異なる構成で配置および設計され得ることが容易に理解されよう。したがって、実施形態の詳細な説明は、特許請求される本出願の範囲を限定するよう意図したものではなく、本出願の選択された実施形態を表すにすぎない。
【００８８】
当業者は、上記が異なる順序のステップで、または開示されたものとは異なる構成のハードウェア要素で、あるいはその両方で実施され得ることを容易に理解するであろう。したがって、本出願をこれらの好ましい実施形態に基づいて説明したが、一定の変更形態、変形形態、および代替の構成が明白であることが当業者には明らかであろう。
【００８９】
本出願の好ましい実施形態を説明したが、説明した実施形態は例示にすぎず、本出願の範囲は、あらゆる範囲のその均等物および変更形態（例えば、プロトコル、ハードウェア・デバイス、ソフトウェア・プラットフォームなど）を考慮するとき、添付の特許請求の範囲によってのみ定義されるべきであることを理解されたい。
【図１】
2021516004.tif 000003
【図２】
2021516004.tif 000004
【図３】
2021516004.tif 000005
【図４】
2021516004.tif 000006
【図５】
2021516004.tif 000007
【図６】
2021516004.tif 000008
【図７】
2021516004.tif 000009
【図８】
2021516004.tif 000010
【図９】
2021516004.tif 000011
【図１０】
2021516004.tif 000012
【図１１】
2021516004.tif 000013
【図１２】
2021516004.tif 000014
【図１３】
2021516004.tif 000015
【手続補正書】
【提出日】令和2年10月1日(2020.10.1)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
分散型台帳のための主催側ノード・システムであって、
初期シードを生成し、分散型台帳の複数のブロックのそれぞれに前記初期シードの１つまたは複数の許可ビットを割り当て、前記初期シード、および、前記分散型台帳の前記複数のブロックの中の各ブロックに前記初期シードのどの許可ビットが割り当てられているかの識別を格納するように構成された、プロセッサと、
複数のノードのそれぞれのノードによって更新されたそれぞれのブロックの許可ビットに基づいて前記分散型台帳にアクセスするように構成された前記複数のノードのそれぞれによって部分的に生成された最終シード値を受け取るように構成された、ネットワーク・インターフェースと
を含み、前記プロセッサが、前記最終シード値に基づいてランダム・シーケンスを生成し、前記ランダム・シーケンスを前記分散型台帳のブロックに格納するようにさらに構成される、主催側ノード・システム。
【請求項２】
前記ネットワーク・インターフェースが、前記複数のノードの合意から前記ランダム・シーケンスの検証を受け取るようにさらに構成され、前記プロセッサが、前記合意に基づいて前記ランダム・シーケンスが有効であると判定し、前記検証がされたランダム・シーケンスを抽選システムに出力するようにさらに構成される、請求項１に記載の主催側ノード・システム。
【請求項３】
前記プロセッサが、前記初期シードからの同量の許可ビットを、前記複数のノードに関連付けられた前記複数のブロックの中からの前記分散型台帳上の各ブロックに割り当てるように構成される、請求項１または２に記載の主催側ノード・システム。
【請求項４】
各ブロックに割り当てられる許可ビットの量が、前記初期シードのビット数および前記複数のノードに含まれるノードの数に基づいて決定される、請求項１ないし３のいずれかに記載の主催側ノード・システム。
【請求項５】
前記ネットワーク・インターフェースが、前記複数のノードそれぞれの暗号化キーを受け取るようにさらに構成され、前記プロセッサが、前記分散型台帳に格納された、それぞれのノードの暗号化された許可ビットを、それぞれのノードの暗号化キーに基づいて復号するようにさらに構成される、請求項１ないし４のいずれかに記載の主催側ノード・システム。
【請求項６】
前記プロセッサが、前記複数のノードの中からのそれぞれのノードによって更新された前記暗号化された許可ビットに基づいて前記最終シード値を組み立てるようにさらに構成される、請求項５に記載の主催側ノード・システム。
【請求項７】
分散型台帳のためのネットワーク・ノード・システムであって、
複数のノードによってアクセスされる分散型台帳に格納されたブロックに一意に割り当てられている初期シードの許可ビットを識別し、前記初期シードの識別された前記許可ビットを変更し、変更された前記許可ビットを当該ノードの暗号化キーを使用して暗号化し、暗号化された前記許可ビットを、少なくとも１つの他のノードによって更新された許可ビットのブロックを含む前記分散型台帳のブロックに格納するように構成された、プロセッサ
を含み、前記分散型台帳に格納された、当該ノードによって変更された許可ビットおよび前記複数のノードのうちの少なくとも１つによって変更された他の許可ビットを使用して最終シード値が組み立てられ得る、ネットワーク・ノード・システム。
【請求項８】
前記プロセッサが、前記初期シードの許可ビットを変更し、かつ変更された前記許可ビットを前記分散型台帳に格納した複数のノードのそれぞれの暗号化キーを受け取り、前記分散型台帳に格納された前記複数のノードのそれぞれによって変更された暗号化された許可ビットを、前記暗号化キーの受取りに基づいて復号し、復号された前記許可ビットに基づいて前記最終シード値を生成するように構成される、請求項７に記載のネットワーク・ノード・システム。
【請求項９】
前記プロセッサが、前記分散型台帳に格納された前記許可ビットを復号するために、当該ノードの前記暗号化キーを、前記複数のノードに送信するようにさらに構成される、請求項７または８に記載のネットワーク・ノード・システム。
【請求項１０】
前記プロセッサが、前記最終シード値に基づいてランダム・シーケンス値を生成し、生成された前記ランダム・シーケンス値を前記分散型台帳のブロックに格納するようにさらに構成される、請求項７ないし９のいずれかに記載のネットワーク・ノード・システム。
【請求項１１】
前記プロセッサが、主催側ノードからランダム・シーケンス値を受け取り、前記主催側ノードによって生成された前記ランダム・シーケンス値を、生成された前記ランダム・シーケンス値に基づいて検証し、前記検証の結果を前記主催側ノードに送信するようにさらに構成される、請求項７ないし１０のいずれかに記載のネットワーク・ノード・システム。
【請求項１２】
分散型台帳のための主催側ノードの方法であって、前記主催側ノードが、
初期シードを生成するステップと、
分散型台帳内の複数のブロックのそれぞれに前記初期シードの１つまたは複数の許可ビットを割り当てるステップと、
前記初期シードおよび前記分散型台帳の前記複数のブロックの中の各ブロックに前記初期シードのどの許可ビットが割り当てられているかの識別を格納するステップと、
複数のノードのそれぞれのネットワーク・ノードによって更新されたそれぞれのブロックの許可ビットに基づいて前記分散型台帳にアクセスするように構成された前記複数のノードのそれぞれによって部分的に生成された最終シード値を受け取るステップと、
前記最終シード値に基づいてランダム・シーケンス値を生成し、前記ランダム・シーケンス値を前記分散型台帳のブロックに格納するステップと
を実行する、方法。
【請求項１３】
前記主催側ノードが、
前記複数のノードの合意からランダム・シーケンスの検証を受け取るステップと、
前記合意に基づいて前記ランダム・シーケンスが有効であると判定するステップと、
前記検証がされたランダム・シーケンスを抽選システムに出力するステップと
をさらに実行する、請求項１２に記載の方法。
【請求項１４】
前記割り当てるステップが、前記複数のノードに関連付けられた前記複数のブロックの中からの前記分散型台帳の各ブロックに前記初期シードからの同量の許可ビットを割り当てるステップをさらに含む、請求項１２または１３に記載の方法。
【請求項１５】
各ブロックに割り当てられる前記許可ビットの量が、前記初期シード内のビット数および前記複数のノードに含まれるノード数に基づいて決定される、請求項１２ないし１４のいずれかに記載の方法。
【請求項１６】
前記最終シード値を前記受け取るステップが、前記複数のノードそれぞれの暗号化キーを受け取るステップと、前記分散型台帳に格納されたそれぞれのノードの暗号化された許可ビットをそれぞれのノードの暗号化キーに基づいて復号するステップとを含む、請求項１２ないし１５のいずれかに記載の方法。
【請求項１７】
前記最終シード値を前記受け取るステップが、前記複数のノードの中からのそれぞれのノードによって更新された前記暗号化された許可ビットに基づいて前記最終シード値を組み立てるステップをさらに含む、請求項１６に記載の方法。
【請求項１８】
分散型台帳のためのネットワーク・ノードの方法であって、前記ネットワーク・ノードが、
複数のノードによってアクセスされる分散型台帳に格納されたブロックに一意に割り当てられている初期シードの許可ビットを識別するステップと、
前記初期シードの識別された前記許可ビットを変更し、変更された前記許可ビットを前記ネットワーク・ノードの暗号化キーを使用して暗号化し、暗号化された前記許可ビットを、少なくとも１つの他のノードによって更新された許可ビットのブロックを含む前記分散型台帳のブロックに格納するステップと
を実行し、前記分散型台帳に格納された、当該ノードによって変更された前記許可ビットおよび少なくとも１つの他のノードによって変更された他の許可ビットを使用して最終シード値が組み立てられ得る、方法。
【請求項１９】
前記ネットワーク・ノードが、
前記初期シードの許可ビットを変更し、かつ変更された前記許可ビットを前記分散型台帳に格納した複数のノードのそれぞれの暗号化キーを受け取るステップと、
前記分散型台帳に格納された前記複数のノードのそれぞれによって変更された暗号化された許可ビットを、受け取った前記暗号化キーに基づいて復号するステップと、
復号された前記許可ビットに基づいて前記最終シード値を生成するステップと
をさらに実行する、請求項１８に記載の方法。
【請求項２０】
前記ネットワーク・ノードが、
前記分散型台帳に格納された前記ノードによって変更された前記許可ビットを復号化するために、前記ノードの前記暗号化キーを前記複数のノードに送信するステップ
をさらに実行する、請求項１８または１９に記載の方法。
【請求項２１】
前記ネットワーク・ノードが、
最終シード値に基づいてランダム・シーケンス値を生成するステップと、
生成された前記ランダム・シーケンス値を前記分散型台帳のブロックに格納するステップと
をさらに実行する、請求項１８ないし２０のいずれかに記載の方法。
【請求項２２】
前記ネットワーク・ノードが、
主催側ノードからランダム・シーケンス値を受け取るステップと、
前記主催側ノードによって生成された前記ランダム・シーケンス値を、生成された前記ランダム・シーケンス値に基づいて検証するステップと、
前記検証の結果を前記主催側ノードに送信するステップと
をさらに実行する、請求項１８ないし２１のいずれかに記載の方法。
【請求項２３】
コンピュータ可読記録媒体であって、
処理回路によって読み取り可能であり、請求項１２ないし２２のいずれかによる方法の各ステップを実行するためのプログラムを格納するコンピュータ可読記憶媒体。
【請求項２４】
コンピュータ・プログラムであって、コンピュータに、請求項１２ないし２２のいずれかの方法の各ステップを実行させるためのコンピュータ・プログラム。
【国際調査報告】
2021516004.tif 000016
2021516004.tif 000017
2021516004.tif 000018