(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023135642
(43)【公開日】2023-09-28
(54)【発明の名称】ブロックチェーン乱数取得方法、装置、機器および媒体
(51)【国際特許分類】
G09C 1/00 20060101AFI20230921BHJP
G06F 7/58 20060101ALI20230921BHJP
【FI】
G09C1/00 650B
G06F7/58 620
【審査請求】有
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2023039172
(22)【出願日】2023-03-14
(11)【特許番号】
(45)【特許公報発行日】2023-05-02
(31)【優先権主張番号】202210250974.X
(32)【優先日】2022-03-15
(33)【優先権主張国・地域又は機関】CN
(71)【出願人】
【識別番号】514322098
【氏名又は名称】ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッド
【氏名又は名称原語表記】Beijing Baidu Netcom Science Technology Co., Ltd.
【住所又は居所原語表記】2/F Baidu Campus, No.10, Shangdi 10th Street, Haidian District, Beijing 100085, China
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】劉 暁赫
(57)【要約】
【課題】本開示は、ブロックチェーン乱数取得方法、装置、機器および媒体を提供する。
【解決手段】該方法は、ブロックチェーンノードに適用され、ビジネストランザクション要求の実行中に、オラクル契約を呼び出し、乱数取得要求を生成することと、前記オラクル契約により前記乱数取得要求を処理し、チェーン外に設けられた少なくとも2つのオラクルノードに、前記オラクルノードの秘密鍵に基づいてランダム要素を生成させることと、前記オラクル契約により、少なくとも2つの前記オラクルノードからフィードバックされたランダム要素を取得することと、前記オラクル契約により各前記ランダム要素を集約して集約要素を形成し、前記集約要素およびチェーン上ランダムアルゴリズムに基づいて乱数を生成することとを含む。
【選択図】
図1B
【特許請求の範囲】
【請求項1】
ブロックチェーンノードに適用されるブロックチェーン乱数取得方法であって、
ビジネストランザクション要求の実行中に、オラクル契約を呼び出し、乱数取得要求を生成することと、
前記オラクル契約により前記乱数取得要求を処理し、チェーン外に設けられた少なくとも2つのオラクルノードに、前記オラクルノードの秘密鍵に基づいてランダム要素を生成させることと、
前記オラクル契約により、少なくとも2つの前記オラクルノードからフィードバックされたランダム要素を取得することと、
前記オラクル契約により各前記ランダム要素を集約して集約要素を形成し、前記集約要素およびチェーン上ランダムアルゴリズムに基づいて乱数を生成することと、
前記オラクル契約により、前記乱数を前記ビジネストランザクション要求にフィードバックすることと、
前記オラクル契約により、各前記オラクルノードの公開鍵を用いて各前記ランダム要素の署名をそれぞれ検証し、前記署名が秘密鍵を用いた乱数取得要求の要求パラメータおよびランダム要素への前記オラクルノードによる署名であり、前記要求パラメータが前記乱数取得要求を表す可能なパラメータであることとを含む、
ブロックチェーン乱数取得方法。
【請求項2】
前記オラクル契約により前記乱数取得要求を処理し、チェーン外に設けられた少なくとも2つのオラクルノードに、前記オラクルノードの秘密鍵に基づいてランダム要素を生成させることは、
前記オラクル契約により前記乱数取得要求を処理し、イベントログを生成してブロックに記録することを含み、
前記イベントログは、前記オラクルノードに傍受された時に、前記オラクルノードをトリガして前記乱数取得要求を取得し、前記オラクルノードの秘密鍵に基づいてランダム要素を生成することに用いられる、
請求項1に記載の方法。
【請求項3】
前記オラクル契約により前記乱数取得要求を処理することは、
前記オラクル契約により前記乱数取得要求を実行し、要求番号、要求データ、要求ハッシュ値、要求者アドレス、およびコールバック関数を確定することを含み、
これに応じて、前記オラクル契約により、前記乱数を前記ビジネストランザクション要求にフィードバックすることは、
前記オラクル契約により、前記乱数を、前記コールバック関数を介して前記ビジネストランザクション要求にフィードバックすることを含む、
請求項1に記載の方法。
【請求項4】
ビジネストランザクション要求の実行中に、オラクル契約を呼び出し、乱数取得要求を生成することは、
ビジネススマート契約を実行して前記ビジネストランザクション要求を実行している時に、オラクル契約の呼び出し命令に応じて前記オラクル契約を呼び出し、乱数取得要求を生成することを含む、
請求項1に記載の方法。
【請求項5】
前記オラクル契約により、前記オラクルノードからフィードバックされたランダム要素を取得することは、
オラクルノードによって開始されたランダム要素フィードバックトランザクション要求を取得することと、
前記ランダム要素フィードバックトランザクション要求の実行中に、前記オラクル契約を呼び出し、前記オラクルノードからフィードバックされたランダム要素を取得することと、を含む、
請求項1に記載の方法。
【請求項6】
前記チェーン外に設けられた少なくとも2つのオラクルノードに、前記オラクルノードの秘密鍵に基づいてランダム要素を生成させる前に、
オラクルノードの登録トランザクション要求を取得することと、
前記登録トランザクション要求の実行中に、前記オラクル契約を呼び出し、前記登録トランザクション要求における前記オラクルノードの識別子、ランダム要素生成アルゴリズムのコード証明書、および公開鍵を取得し、チェーンに書き込んで記憶することと、を更に含む、
請求項1に記載の方法。
【請求項7】
ビジネストランザクション要求の実行中に、オラクル契約を呼び出し、乱数取得要求を生成するための乱数取得要求生成モジュールと、
前記オラクル契約により前記乱数取得要求を処理し、チェーン外に設けられた少なくとも2つのオラクルノードに、前記オラクルノードの秘密鍵に基づいてランダム要素を生成させるための乱数取得要求実行モジュールと、
前記オラクル契約により、少なくとも2つの前記オラクルノードからフィードバックされたランダム要素を取得するためのランダム要素取得モジュールと、
前記オラクル契約により各前記ランダム要素を集約して集約要素を形成し、前記集約要素およびチェーン上ランダムアルゴリズムに基づいて乱数を生成するための乱数生成モジュールと、
前記オラクル契約により、前記乱数を前記ビジネストランザクション要求にフィードバックするための乱数フィードバックモジュールと、
前記オラクル契約により、各前記オラクルノードの公開鍵を用いて各前記ランダム要素の署名をそれぞれ検証するランダム要素署名検証モジュールであって、前記署名が秘密鍵を用いた乱数取得要求の要求パラメータおよびランダム要素への前記オラクルノードによる署名であり、前記要求パラメータが前記乱数取得要求を表す可能なパラメータであるランダム要素署名検証モジュールとを備える、
ブロックチェーン乱数取得装置。
【請求項8】
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサに通信接続されたメモリと、を備える電子機器であって、
前記メモリに、前記少なくとも1つのプロセッサによって実行可能な命令が記憶され、
前記命令は、前記少なくとも1つのプロセッサが請求項1から6のいずれか1項に記載のブロックチェーン乱数取得方法を実行可能であるように、前記少なくとも1つのプロセッサにより実行される、
電子機器。
【請求項9】
コンピュータ命令が記憶された非一時的コンピュータ可読記憶媒体であって、
前記コンピュータ命令は、コンピュータに、請求項1から6のいずれか1項に記載のブロックチェーン乱数取得方法を実行させることに用いられる、
非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、コンピュータ技術分野に関し、特に、ブロックチェーン、データトラステッドコンピューティング技術に関する。
【背景技術】
【0002】
ブロックチェーンは、複数のスマート契約を配置することにより、異なるビジネス機能を実現することができる。これらのビジネス機能のうち、乱数に基づいて開発された信頼できるアプリケーションニーズが存在する。例えば、ゲーム中のランダムな当選、リソース管理中のランダムな割り当て等である。
【0003】
乱数を生成するために信頼できるランダムソースが必要となるが、ブロックチェーンにおけるスマート契約自身が使用できるランダムソースは少ない。乱数を取得するために、2つのステップが必要となる。ステップ1、ランダムシードを確定する。ステップ2、ランダムアルゴリズムに基づいてランダムシードを処理して乱数を生成する。スマート契約のコードが公開されているため、コードで使用されるランダムアルゴリズムも公開されている。これは、乱数生成結果が確定されず、ランダムシードによって決定されることを意味する。従い、ランダムシードの生成の信頼性を高めることは、乱数の信頼性に重要な意義がある。
【発明の概要】
【発明が解決しようとする課題】
【0004】
本開示は、乱数の生成の信頼性を高めるためのブロックチェーン乱数取得方法、装置、機器および媒体を提供する。
【課題を解決するための手段】
【0005】
態様1において、本開示の実施例は、
ブロックチェーンノードに適用されるブロックチェーン乱数取得方法であって、
ビジネストランザクション要求の実行中に、オラクル契約を呼び出し、乱数取得要求を生成することと、
前記オラクル契約により前記乱数取得要求を処理し、チェーン外に設けられた少なくとも2つのオラクルノードに、前記オラクルノードの秘密鍵に基づいてランダム要素を生成させることと、
前記オラクル契約により、少なくとも2つの前記オラクルノードからフィードバックされたランダム要素を取得することと、
前記オラクル契約により各前記ランダム要素を集約して集約要素を形成し、前記集約要素およびチェーン上ランダムアルゴリズムに基づいて乱数を生成することと、
前記オラクル契約により、前記乱数を前記ビジネストランザクション要求にフィードバックすることとを含む、
ブロックチェーン乱数取得方法を提供する。
【0006】
態様2において、本開示の実施例は、
ブロックチェーンノードに備えられるブロックチェーン乱数取得装置であって、
ビジネストランザクション要求の実行中に、オラクル契約を呼び出し、乱数取得要求を生成するための乱数取得要求生成モジュールと、
前記オラクル契約により前記乱数取得要求を処理し、チェーン外に設けられた少なくとも2つのオラクルノードに、前記オラクルノードの秘密鍵に基づいてランダム要素を生成させるための乱数取得要求実行モジュールと、
前記オラクル契約により、少なくとも2つの前記オラクルノードからフィードバックされたランダム要素を取得するためのランダム要素取得モジュールと、
前記オラクル契約により各前記ランダム要素を集約して集約要素を形成し、前記集約要素およびチェーン上ランダムアルゴリズムに基づいて乱数を生成するための乱数生成モジュールと、
前記オラクル契約により、前記乱数を前記ビジネストランザクション要求にフィードバックするための乱数フィードバックモジュールとを備える、
ブロックチェーン乱数取得装置を更に提供する。
【0007】
第3態様において、本開示の実施例は、
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサに通信接続されたメモリと、を備える電子機器であって
前記メモリに前記少なくとも1つのプロセッサによって実行可能な命令が記憶され、
前記命令は、前記少なくとも1つのプロセッサが態様1の実施例に記載のいずれかのブロックチェーン乱数取得方法を実行可能であるように、前記少なくとも1つのプロセッサにより実行される、
電子機器を更に提供する。
【0008】
態様4において、本開示の実施例は、
コンピュータ命令が記憶された非一時的コンピュータ可読記憶媒体であって、
前記コンピュータ命令は、コンピュータに、態様1の実施例に記載のいずれかのブロックチェーン乱数取得方法を実行させることに用いられる、
非一時的コンピュータ可読記憶媒体を更に提供する。
【0009】
態様5において、本開示の実施例は、
プロセッサにより実行されると、態様1の実施例に記載のいずれかのブロックチェーン乱数取得方法を実現する、
コンピュータプログラムを更に提供する。
【発明の効果】
【0010】
本開示の実施例は、チェーン外に設けられた少なくとも2つのオラクルノードに、前記オラクルノードの秘密鍵に基づいてランダム要素を生成させることにより、ランダム要素が生成および伝送過程において改ざんされるリスクを低減し、ランダム要素の生成の信頼性を効果的に高める。その基に、オラクル契約により、各ランダム要素を集約して集約要素を形成し、チェーン上ランダムアルゴリズムに基づいて乱数を生成し、少数のオラクルノードが攻略されても、乱数のランダム性に影響を与えることができず、ブロックチェーンにおける乱数の確率の均一な分布を確保し、乱数の生成の信頼性を高める。
【0011】
本開示に記載された内容は、本開示の実施例のキーとなるまたは重要な特徴を標識するためのものではなく、本開示の範囲を限定するものでもないことが理解されるべきである。本開示の他の特徴は、以下の明細書により容易に理解することができる。
【図面の簡単な説明】
【0012】
図面は本形態をより良く理解するためのものであり、本開示を限定するものではない。
【0013】
【
図1A】本開示の実施例に適用されるブロックチェーンシステムが乱数を取得するシステムアーキテクチャの模式図である。
【
図1B】本開示の実施例に係るブロックチェーン乱数取得方法のフローチャートである。
【
図2】本開示の実施例に係るブロックチェーン乱数取得装置の構造模式図である。
【
図3】本開示の実施例に係るブロックチェーン乱数取得方法を実現するための電子機器のブロック図である。
【発明を実施するための形態】
【0014】
以下、図面を参照しながら本開示の例示的な実施例について説明し、ここで、理解の便宜上、本開示の実施例に係る様々な細かい内容まで含まれているが、例示的なものに過ぎないと理解すべきである。同様に、以下の説明において、公知されている機能および構造の説明は、明確且つ簡潔にするために省略している。同様に、以下の説明において、公知されている機能および構造の説明は、明確且つ簡潔にするために省略している。
【0015】
本開示の実施例を解釈しやすいために、
図1Aを例とし、本開示の実施例に適用されるブロックチェーンシステムが乱数を取得するシステムアーキテクチャの模式図を示すが、本開示の実施例を具体的に限定するものと理解すべきではない。
【0016】
図1Aを参照し、ブロックチェーンシステムにビジネススマート契約およびオラクル(oracle)契約が配置され、ビジネススマート契約とオラクル契約との間は互いに関連する。また、ブロックチェーン外に複数のオラクルサービス(オラクルノードであってもよい)が設けられ、各オラクルサービスは、ランダム要素a(sub seed-a)、ランダム要素b(sub seed-b)、ランダム要素c(sub seed-c)、およびランダム要素d(sub seed-d)をそれぞれ生成することができる。且つ、各オラクルサービスは、いずれもオラクル契約との間でインタラクションを行う。
【0017】
図1Bは、本開示の実施例に係るブロックチェーン乱数取得方法のフローチャートであり、本開示の実施例は、ブロックチェーンがチェーン外の少なくとも2つのオラクルノードにアクセスし、複数のランダム要素を取得して乱数を生成する場合に適用できる。該方法は、ブロックチェーン乱数取得装置で実行することができ、該装置は、ハードウェアおよび/またはソフトウェアの方式で実現することができ、電子機器に構成でき、該電子機器は、ブロックチェーンノードであってもよい。
図1Bを参照し、該方法はブロックチェーンノードに適用され、具体的に、以下のステップを含む。
【0018】
S110において、ビジネストランザクション要求の実行中に、オラクル契約を呼び出し、乱数取得要求を生成する。
【0019】
ここで、ブロックチェーンシステムに、様々なスマート契約を配置して対応するビジネス機能を実現することができ、ビジネススマート契約と呼ばれてもよく、ビジネス機能は、例えば、電子商品の購入、ゲーム等のユーザに直接提供する機能であり、ビジネス機能は、振込データの処理、権限検証等のようなブロックチェーンシステムで他のビジネススマート契約に提供する必要がある機能であってもよい。ユーザは、ブロックチェーンのクライアントを介してビジネススマート契約が提供するインタフェースを取得することができる。ビジネストランザクション要求は、ユーザが自身の必要に応じてクライアントを介してビジネススマート契約に発信したトランザクション要求であってもよい。
【0020】
ここで、オラクル契約は、ブロックチェーン外の情報をブロックチェーン内に書き込むことに用いることができる。例えば、ビジネストランザクション要求の実行中に、乱数を取得する必要がある条件に遇う時に呼び出された、乱数を取得するためのスマート契約であってもよい。
【0021】
ここで、乱数取得要求は、ビジネストランザクション要求の実行中に取得する必要がある乱数の生成を要求することに用いることができる。ここで、乱数は、ゲーム中にゲームの信頼度を高めたり、ゲーム活動中にプレイヤーにインセンティブをランダムに提供したりすることに用いられてもよいし、リソースをランダムに割り当てる等に用いられてもよい。ここで、リソースをランダムに割り当てることは、受験生に試験官をランダムに割り当てる等の方式であってもよい。
【0022】
具体的には、ユーザは、自身の必要に応じてビジネストランザクション要求を発信することができ、該ビジネストランザクション要求の実行段階中に乱数を取得する必要がある場合、ブロックチェーンに配置されたオラクル契約を呼び出し、対応する乱数の生成を要求する。
【0023】
例示的には、ビジネストランザクション要求の実行中に、オラクル契約を呼び出し、乱数取得要求を生成することは、
ビジネススマート契約を実行して前記ビジネストランザクション要求を実行している時に、オラクル契約の呼び出し命令に応じて前記オラクル契約を呼び出し、乱数取得要求を生成することを含んでもよい。
【0024】
ここで、ビジネススマート契約は、ビジネストランザクション要求の実行に専用するスマート契約であってもよい。ここで、オラクル契約の呼び出し命令は、ビジネススマート契約の実行段階でオラクル契約を呼び出すことに用いることができる。
【0025】
具体的には、ビジネススマート契約を実行することによりユーザノードによって開始されたビジネストランザクション要求を実行することができ、該ビジネストランザクション要求の実行中に乱数を取得する必要がある条件に遇うと、現在のビジネススマート契約は、オラクル契約の呼び出し命令を発信し、契約間呼び出しの方式でオラクル契約を呼び出し、更に乱数取得要求を生成することができる。
【0026】
ビジネススマート契約を実行してビジネストランザクション要求を実行している時に、オラクル契約の命令に基づき、対応するオラクル契約の契約間呼び出しを実現することができ、オラクル契約を呼び出すビジネストランザクション要求を個別に発信しなくても、乱数取得要求を生成することができ、乱数の取得効率の向上に寄与することが理解できる。
【0027】
S120において、前記オラクル契約により前記乱数取得要求を処理し、チェーン外に設けられた少なくとも2つのオラクルノードに、前記オラクルノードの秘密鍵に基づいてランダム要素を生成させる。
【0028】
ここで、オラクルノードは、ランダム要素の生成と生成したランダム要素の裏書きを担当するためのチェーン外ノードであってもよい。ここで、オラクルノードは、ローカルで1対の公開鍵・秘密鍵を生成することができ、これに応じて、オラクルノードは、任意のランダムアルゴリズムに基づいてランダムデータを生成した後、秘密鍵でランダムデータに署名してランダム要素を生成することができる。更に、オラクルノードは、乱数取得要求の要求パラメータに基づいてランダムデータを生成してから、秘密鍵でランダムデータに署名してランダム要素を生成することができる。
【0029】
ここで、要求パラメータは、該乱数取得要求を表すことができるパラメータであり、例えば、要求番号、要求データ、要求ハッシュ値、要求者アドレス、およびコールバック関数の少なくとも1つを含んでもよい。
【0030】
具体的には、オラクル契約により乱数取得要求を実行し、ブロックチェーン外に設けられた少なくとも2つのオラクルノードを制御することができ、これにより、各オラクルノードの秘密鍵を用いて乱数取得要求の要求パラメータに基づいて確定されたランダムデータに署名し、署名結果を対応するランダム要素とすることができる。例えば、各オラクルノードのインタフェースを呼び出して乱数取得要求を送信することができる。または、他の方式を採用することで、各オラクルノードに乱数取得要求を発見させて実行させることができる。
【0031】
例示的には、前記オラクル契約により前記乱数取得要求を処理し、チェーン外に設けられた少なくとも2つのオラクルノードに、前記オラクルノードの秘密鍵に基づいてランダム要素を生成させることは、
前記オラクル契約により前記乱数取得要求を処理し、イベントログを生成してブロックに記録することを含んでもよく、前記イベントログは、ブロック内のブロックヘッダのログツリーに記録される。
【0032】
ここで、前記イベントログは、前記オラクルノードに傍受された時に、前記オラクルノードをトリガして前記乱数取得要求を取得し、前記オラクルノードの秘密鍵に基づいてランダム要素を生成することに用いられる。
【0033】
ここで、イベントログは、オラクル契約が乱数取得要求の実行中に生成したイベント情報であってもよい。該イベントログは、ブロックチェーンのブロックヘッダまたはブロックボディに記録されてもよい。ブロックは、ブロックヘッダおよびブロックボディを含み、ブロックボディにブロックの詳細データが記録されてもよく、例えば、ブロックチェーンの実行中に生成または受信した少なくとも1つのトランザクション要求データが記録されてもよい。ブロックヘッダには、前のブロックのハッシュ値と自ブロックのハッシュ値、および少なくとも1つの情報を記録するためのツリー等が記録されてもよい。例えば、イベントログは、ブロックヘッダにおけるログツリーに記録されてもよい。ここで、ログツリーは、ブロックにおける各イベント情報を記録するためのデータ構造であってもよい。
【0034】
具体的には、オラクル契約が乱数取得要求を実行する時、該乱数取得要求の処理に対応するイベントログを生成することができる。イベントログに形成された内容は、予め定義することができ、即ち、オラクル契約が乱数取得要求を実行する時に生成した乱数イベントがどのような情報を含むかを設定する。イベントログを生成した後、ブロックチェーンノードは、イベントログをネットワークでブロードキャストすることができる。ここで、ブロックチェーンのネットワークポート(ip:port)、オラクル契約のアドレスを予めオラクルノードに登録することができ、これに応じて、オラクルノードは、ブロックチェーンで生成されたイベントを傍受することができ、乱数取得イベントログを傍受した場合、該オラクルノードをトリガして乱数取得要求を取得し、該オラクルノード自身の秘密鍵に基づいてランダム要素を生成することができる。
【0035】
オラクルノードは、ブロックチェーンで生成されたイベントログを傍受することにより、対応するブロックチェーンノードにおける乱数取得要求を正確に取得することができ、チェーン上の乱数取得要求をタイムリーに確定することを実現するとともに、その自身の秘密鍵に基づいて対応するランダム要素を生成することで、ランダム要素の生成の信頼性を効果的に高めることが理解できる。傍受の方式を採用することにより、ブロックチェーンのオラクル契約は、特定したオラクルノードに対してインタフェースの呼び出しを行わなくてもよい。ブロックチェーンネットワークは、複数のブロックチェーンノードを含み、オラクルノードをそれぞれ呼び出せば、大量の呼び出し要求を生成する可能性がある。
【0036】
例示的には、前記オラクル契約により前記乱数取得要求を処理することは、
前記オラクル契約により前記乱数取得要求を実行し、要求番号、要求データ、要求ハッシュ値、要求者アドレス、およびコールバック関数を確定することを含んでもよい。
【0037】
ここで、要求番号は、乱数取得要求に含まれる識別情報であってもよく、該識別情報は、異なる乱数取得要求を区別することに用いることができる。ここで、要求データは、生成された乱数へのニーズを記述することに用いることができる。ここで、要求ハッシュ値は、オラクル契約が乱数取得要求をハッシュ計算したものであってもよく、該要求ハッシュ値は、ブロックチェーンの各ノードが乱数取得イベントについて合意することに用いることができる。
【0038】
ここで、要求者アドレスは、オラクル契約を呼び出すビジネススマート契約のアドレスであってもよい。ここで、コールバック関数は、生成された乱数をビジネススマート契約が位置するアドレスにフィードバックすることができる。
【0039】
具体的には、オラクル契約により乱数取得要求を実行し、実行結果に基づいて要求番号、要求データ、要求ハッシュ値、要求者アドレス、およびコールバック関数を確定することができる。
【0040】
S130において、前記オラクル契約により、少なくとも2つの前記オラクルノードからフィードバックされたランダム要素を取得する。
【0041】
具体的には、オラクルノードは、ローカルでランダム要素を生成した後、ブロックチェーンに取引を発信することで、生成されたランダム要素をオラクル契約にフィードバックすることができる。
【0042】
例示的には、前記オラクル契約により、前記オラクルノードからフィードバックされたランダム要素を取得することは、
オラクルノードによって開始されたランダム要素フィードバックトランザクション要求を取得することと、
前記ランダム要素フィードバックトランザクション要求の実行中に、前記オラクル契約を呼び出し、前記オラクルノードからフィードバックされたランダム要素を取得することとを含んでもよい。
【0043】
ここで、前記ランダム要素フィードバックトランザクション要求は、オラクル契約を呼び出すブロックチェーンノードにランダム要素をフィードバックするトランザクション要求であってもよい。
【0044】
具体的には、オラクルノードは、ブロックチェーンがインストールされたクライアントであってもよく、ランダム要素を生成した後、対応するブロックチェーンノードにランダム要素フィードバックトランザクション要求を送信することができ、該ブロックチェーンノードは、オラクル契約を呼び出し、オラクルノードからフィードバックされたランダム要素を呼び出すことができる。
【0045】
オラクルノードによって開始されたフィードバックトランザクション要求を実行し、オラクル契約を呼び出してオラクルノードで生成されたランダム要素を取得することにより、オラクル契約が取得したランダム要素の信頼性を確保し、更に乱数の生成の信頼性の向上に寄与することが理解できる。
【0046】
例示的には、前記オラクル契約により、少なくとも2つの前記オラクルノードからフィードバックされたランダム要素を取得した後、
前記オラクル契約により、各前記オラクルノードの公開鍵を用いて各前記ランダム要素の署名をそれぞれ検証することを更に含み、前記署名は、秘密鍵を用いた乱数取得要求の要求パラメータおよびランダム要素への前記オラクルノードによる署名である。
【0047】
具体的には、オラクル契約により、ブロックチェーンに記憶されたオラクルノードの公開鍵を用いて乱数取得要求パラメータおよびランダム要素の署名に対して有効性検証を行い、署名がオラクルノードによって生成されるか否かを検証し、署名の乱数取得要求パラメータがブロックチェーンに記憶された要求パラメータと一致するか否かを検証する。
【0048】
各オラクルノードが自身の秘密鍵に基づいて乱数取得要求パラメータおよびランダム要素に署名し、更にオラクル契約により、チェーンに記憶された各オラクルノードの公開鍵を用いて取得されたランダム要素の有効性を検証することにより、オラクル契約が取得したランダム要素の信頼性を確保し、更に乱数の生成の信頼性の向上に寄与することが理解できる。
【0049】
S140において、前記オラクル契約により各前記ランダム要素を集約して集約要素を形成し、前記集約要素およびチェーン上ランダムアルゴリズムに基づいて乱数を生成する。
【0050】
ここで、集約要素は、予め設定された集約アルゴリズムを利用して各ランダム要素を計算した結果であってもよい。ここで、予め設定された集約アルゴリズムは、Agg関数に基づいて確立されたものであってもよく、該Agg関数は、列に基づく集約操作を提供することができる。例えば、各ランダム要素がそれぞれS1、S2…Snである場合、集約操作を経て形成された集約要素S=Agg(S1、S2、…Sn)である。なお、ここで、集約アルゴリズムのタイプを限定しない。
【0051】
ここで、前記チェーン上ランダムアルゴリズムは、乱数を生成するためのアルゴリズム規則であってもよい。1種または複数種のチェーン上の乱数アルゴリズムを含んでもよく、ビジネススマート契約によって指定されるか、またはオラクル契約によって、現在使用しているアルゴリズムを選択して使用する。
【0052】
具体的には、集約アルゴリズムを予め設定し、該集約アルゴリズムにより、オラクル契約が取得した各ランダム要素を集約し、集約後の結果を集約要素とすることができる。更に、オラクル契約は、集約要素に基づき、チェーン上に設定された乱数アルゴリズムに従って乱数を生成することができる。
【0053】
S150において、前記オラクル契約により、前記乱数を前記ビジネストランザクション要求にフィードバックする。
【0054】
具体的には、オラクル契約は、自身が生成した乱数を対応するビジネストランザクション要求にフィードバックすることができる。
【0055】
例示的には、前記オラクル契約により、前記乱数を前記ビジネストランザクション要求にフィードバックすることは、
前記オラクル契約により、前記乱数を、前記コールバック関数を介して前記ビジネストランザクション要求にフィードバックすることを含んでもよい。
【0056】
具体的には、オラクル契約は、ブロックチェーン乱数取得要求における要求パラメータに含まれるコールバック関数を呼び出すことにより、自身が生成した乱数を対応するビジネストランザクション要求にフィードバックすることができる。
【0057】
乱数取得要求における要求パラメータに含まれるコールバック関数に基づき、オラクル契約は、自身が生成した乱数を対応するビジネストランザクション要求にフィードバックすることができ、ビジネストランザクション要求により取得された乱数の信頼性を確保することが理解できる。
【0058】
上記各実施例の技術案の基に、更に、前記チェーン外に設けられた少なくとも2つのオラクルノードに、前記オラクルノードの秘密鍵に基づいてランダム要素を生成させる前に、
オラクルノードの登録トランザクション要求を取得することと、
前記登録トランザクション要求の実行中に、前記オラクル契約を呼び出し、前記登録トランザクション要求における前記オラクルノードの識別子、ランダム要素生成アルゴリズムのコード証明書、および公開鍵を取得し、チェーンに書き込んで記憶することとを更に含んでもよい。
【0059】
ここで、登録トランザクション要求は、オラクルノードによって開始されたブロックチェーンにノード情報を登録するトランザクション要求であってもよい。ここで、オラクルノードの識別子は、オラクルノードの身分検証に用いることができる。ここで、前記ランダム要素生成アルゴリズムのコード証明書は、オラクルノードからフィードバックされたランダム要素の生成過程を検証することに用いることができる。ここで、オラクルノードの公開鍵は、オラクルノードからフィードバックされたランダム要素の署名を検証することに用いることができる。
【0060】
具体的には、オラクルノードの登録トランザクション要求を取得し、該登録トランザクション要求の実行中にオラクル契約を呼び出し、取得した登録トランザクション要求におけるオラクルノードの識別子、ランダム要素生成アルゴリズムのコード証明書、および公開鍵をブロックチェーンに記憶する。ここで、各オラクルノードの公開鍵は、オラクル契約に登録でき、該公開鍵は、ブロックチェーン外のオラクルノードに対応し、ブロックチェーンと各オラクルノードとの間のバンドリングを実現する。
【0061】
登録トランザクション要求の実行中に、オラクル契約を呼び出すことにより、登録トランザクション要求に含まれるオラクルノードの識別子、ランダム要素生成アルゴリズムのコード証明書、および公開鍵を取得してブロックチェーンに記憶することができ、現在のオラクル契約がオラクルノードおよび生成したランダム要素を検証することを実現でき、取得したランダム要素の信頼性を確保することが理解できる。
【0062】
本開示の実施例は、チェーン外に設けられた少なくとも2つのオラクルノードに、前記オラクルノードの秘密鍵に基づいてランダム要素を生成させることにより、ランダム要素が生成および伝送過程において改ざんされるリスクを低減し、ランダム要素の生成の信頼性を効果的に高める。その基に、オラクル契約により、各ランダム要素を集約して集約要素を形成し、チェーン上ランダムアルゴリズムに基づいて乱数を生成し、少数のオラクルノードが攻略されても、乱数のランダム性に影響を与えることができず、ブロックチェーンにおける乱数の確率の均一な分布を確保し、乱数の生成の信頼性を高める。
【0063】
本開示の技術案に係るユーザの個人情報の収集、記憶、使用、加工、伝達、提供、および公開等は、いずれも関連法律法規の規定に該当し、公序良俗に反していない。
【0064】
図2は、本開示の実施例に係るブロックチェーン乱数取得装置の構造模式図であり、本開示の実施例は、ブロックチェーンがチェーン外の少なくとも2つのオラクルノードにアクセスし、複数のランダム要素を取得して乱数を生成する場合に適用できる。該装置は、ハードウェアおよび/またはソフトウェアの方式で実現することができ、電子機器に構成でき、該電子機器は、ブロックチェーンノードであってもよい。
図2を参照し、該装置は、ブロックチェーンノードに備えられ、具体的に、
ビジネストランザクション要求の実行中に、オラクル契約を呼び出し、乱数取得要求を生成するための乱数取得要求生成モジュール210と、
前記オラクル契約により前記乱数取得要求を処理し、チェーン外に設けられた少なくとも2つのオラクルノードに、前記オラクルノードの秘密鍵に基づいてランダム要素を生成させるための乱数取得要求実行モジュール220と、
前記オラクル契約により、少なくとも2つの前記オラクルノードからフィードバックされたランダム要素を取得するためのランダム要素取得モジュール230と、
前記オラクル契約により各前記ランダム要素を集約して集約要素を形成し、前記集約要素およびチェーン上ランダムアルゴリズムに基づいて乱数を生成するための乱数生成モジュール240と、
前記オラクル契約により、前記乱数を前記ビジネストランザクション要求にフィードバックする乱数フィードバックモジュール250とを備える。
【0065】
好ましくは、乱数取得要求実行モジュール220は、具体的に、前記オラクル契約により前記乱数取得要求を処理し、イベントログを生成してブロックに記録することに用いられ、前記イベントログは、ブロック内のブロックヘッダのログツリーに記録される。
【0066】
ここで、前記イベントログは、前記オラクルノードに傍受された時に、前記オラクルノードをトリガして前記乱数取得要求を取得し、前記オラクルノードの秘密鍵に基づいてランダム要素を生成することに用いられる。
【0067】
好ましくは、前記オラクル契約により前記乱数取得要求を処理することは、
前記オラクル契約により前記乱数取得要求を実行し、要求番号、要求データ、要求ハッシュ値、要求者アドレス、およびコールバック関数を確定することを含んでもよい。
【0068】
これに応じて、乱数フィードバックモジュール250は、具体的に、前記オラクル契約により、前記乱数を、前記コールバック関数を介して前記ビジネストランザクション要求にフィードバックすることに用いられる。
【0069】
好ましくは、乱数取得要求生成モジュール210は、具体的に、ビジネススマート契約を実行して前記ビジネストランザクション要求を実行している時に、オラクル契約の呼び出し命令に応じて前記オラクル契約を呼び出し、乱数取得要求を生成することに用いられる。
【0070】
好ましくは、ランダム要素取得モジュール230は、具体的に、オラクルノードによって開始されたランダム要素フィードバックトランザクション要求を取得し、前記ランダム要素フィードバックトランザクション要求の実行中に、前記オラクル契約を呼び出し、前記オラクルノードからフィードバックされたランダム要素を取得することに用いられる。
【0071】
好ましくは、前記装置は、前記オラクル契約により、各前記オラクルノードの公開鍵を用いて各前記ランダム要素の署名をそれぞれ検証するためのランダム要素署名検証モジュールを更に備え、前記署名は、秘密鍵を用いた乱数取得要求の要求パラメータおよびランダム要素への前記オラクルノードによる署名である。
【0072】
好ましくは、前記装置は、
オラクルノードの登録トランザクション要求を取得し、
前記登録トランザクション要求の実行中に、前記オラクル契約を呼び出し、前記登録トランザクション要求における前記オラクルノードの識別子、ランダム要素生成アルゴリズムのコード証明書、および公開鍵を取得し、チェーンに書き込んで記憶するためのオラクルノード登録モジュールを更に備える。
【0073】
本開示の実施例に係るブロックチェーン乱数取得装置は、本開示の実施例に係るいずれかのブロックチェーン乱数取得方法を実行することができ、方法の実行に対応する機能モジュールおよび有益な効果を有する。本実施例で詳しく説明されていない内容は、本開示のいずれかの方法の実施例における説明を参照することができる。
【0074】
本開示の実施例によれば、本開示は、電子機器、可読記憶媒体およびコンピュータプログラム製品を更に提供する。
【0075】
図3は、本開示の実施例を実施するために使用可能な例示的な電子機器300の模式的なブロック図を示す。電子機器は、ラップトップ型コンピュータ、デスクトップ型コンピュータ、ワークステーション、パーソナルデジタルアシスタント、サーバ、ブレードサーバ、メインフレーム、および他の適切なコンピュータのような様々な形式のデジタルコンピュータを表すことを目的とする。電子機器は、携帯端末、携帯電話、スマートフォン、ウェララブル機器および他の類似する計算装置のような様々な形式の移動装置を表すこともできる。本開示に示されたコンポーネント、それらの接続、関係、およびそれらの機能は例示的なものに過ぎず、本開示に記載および/または要求される本開示の実現を限定するものではない。
【0076】
図3に示すように、機器300は、計算ユニット301を備え、読み出し専用メモリ(ROM)302に記憶されたコンピュータプログラム、または記憶ユニット308からランダムアクセスメモリ(RAM)303にロードされたコンピュータプログラムに基づき、様々な適当な動作および処理を実行することができる。RAM 303には、機器300の操作に必要な様々なプログラムおよびデータが記憶されてもよい。計算ユニット301、ROM 302およびRAM 303は、バス304を介して互いに接続されている。入力/出力(I/O)インタフェース305もバス304に接続されている。
【0077】
機器300における複数のコンポーネントはI/Oインタフェース305に接続され、キーボード、マウス等のような入力ユニット306と、各種のディスプレイ、スピーカ等のような出力ユニット307と、磁気ディスク、光ディスク等のような記憶ユニット308と、ネットワークカード、モデム、無線通信送受信機等のような通信ユニット309とを備える。通信ユニット309は、機器300がインターネットのようなコンピュータネットワークおよび/または様々な電気通信ネットワークを介して他のデバイスと情報/データを交換することを許容する。
【0078】
計算ユニット301は、処理および計算能力を有する汎用および/または専用の処理アセンブリであってもよい。計算ユニット301のいくつかの例は、中央処理ユニット(CPU)、グラフィックス処理ユニット(GPU)、各種の専用の人工知能(AI)コンピューティングチップ、各種の機械学習モデルアルゴリズムを実行する計算ユニット、デジタルシグナルプロセッサ(DSP)、および任意の適当なプロセッサ、コントローラ、マイクロコントローラ等を含んでもよいが、これらに限定されない。計算ユニット301は、上記様々な方法および処理、例えば、ブロックチェーン乱数取得方法を実行する。例えば、いくつかの実施例において、ブロックチェーン乱数取得方法は、コンピュータソフトウェアプログラムとして実現でき、有形的に記憶ユニット308のような機器可読媒体に含まれている。いくつかの実施例において、コンピュータプログラムの一部または全ては、ROM 302および/または通信ユニット309を介して機器300にロードおよび/またはインストールされ得る。コンピュータプログラムがRAM 303にロードされて計算ユニット301により実行されると、上記ブロックチェーン乱数取得方法の1つまたは複数のステップを実行することができる。あるいは、他の実施例において、計算ユニット301は、他の任意の適当な方式(例えば、ファームウェアを介して)により、ブロックチェーン乱数取得方法を実行するように構成され得る。
【0079】
本開示に記載されたシステムおよび技術の様々な実施形態は、デジタル電子回路システム、集積回路システム、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、特定用途向け標準パーツ(ASSP)、システムオンチップのシステム(SOC)、複合プログラマブルロジックデバイス(CPLD)、コンピュータハードウェア、ファームウェア、ソフトウェア、および/またはそれらの組み合わせで実現できる。これらの様々な実施形態は以下を含んでもよい。1つまたは複数のコンピュータプログラムに実施され、該1つまたは複数のコンピュータプログラムは、少なくとも1つのプログラマブルプロセッサを含むプログラマブルシステムで実行および/または解釈することができ、該プログラマブルプロセッサは、ストレージシステム、少なくとも1つの入力装置、および少なくとも1つの出力装置からデータおよび命令を受信し、且つデータおよび命令を、該ストレージシステム、該少なくとも1つの入力装置、および該少なくとも1つの出力装置に伝送することができる専用または汎用のプログラマブルプロセッサであってもよい。
【0080】
本開示の方法を実施するためのプログラムコードは、1つまたは複数のプログラミング言語の任意の組み合わせでコードできる。これらのプログラムコードは、汎用コンピュータ、専用コンピュータ、または他のプログラマブルデータ処理装置のプロセッサまたはコントローラに提供でき、これにより、プログラムコードがプロセッサまたはコントローラにより実行されると、フローチャートおよび/またはブロック図で規定された機能/操作が実施される。プログラムコードは、完全に機器で実行されてもよいし、一部が機器で実行されてもよいし、独立したソフトウェアパッケージとして一部が機器で実行されて一部がリモート機器で実行されてもよいし、完全にリモート機器またはサーバで実行されてもよい。
【0081】
本開示の明細書において、機器可読媒体は、命令実行システム、装置またはデバイスに使用される、または命令実行システム、装置またはデバイスと合わせて使用されるプログラムを含有または記憶できる有形的な媒体であってもよい。機器可読媒体は、機器可読信号媒体または機器可読記憶媒体であってもよい。機器可読媒体は、電子の、磁気の、光の、電磁気の、赤外線の、または半導体のシステム、装置またはデバイス、または上記内容の任意の適当な組み合わせを含んでもよいが、これらに限定されない。機器可読記憶媒体の更なる具体的な例は、1つまたは複数の線による電気的接続、ポータブルコンピュータディスク、ハードディスク、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、消去可能なプログラマブル読み出し専用メモリ(EPROMまたはフラッシュメモリ)、光ファイバ、ポータブルコンパクトディスク読み出し専用ディスク(CD-ROM)、光記憶デバイス、磁気記憶デバイス、または上記内容の任意の適当な組み合わせを含む。
【0082】
ユーザとのインタラクションを提供するために、ここで説明するシステムおよび技術をコンピュータで実施することができ、該コンピュータは、ユーザに情報を表示するための表示装置(例えば、CRT(陰極線管)またはLCD(液晶ディスプレイ)モニタ)と、ユーザがそれにより入力をコンピュータに提供することができるキーボードおよび指向装置(例えば、マウスまたはトラックボール)とを有する。他の種類の装置は、更にユーザとのインタラクションを提供するために使用できる。例えば、ユーザに提供されるフィードバックは、任意の形式のセンシングフィードバック(例えば、視覚フィードバック、聴覚フィードバック、または触覚フィードバック)であってもよく、且つ、任意の形式(音入力、音声入力または、触覚入力を含む)でユーザからの入力を受信することができる。
【0083】
ここで説明するシステムおよび技術を、バックグラウンドコンポーネントを含むコンピューティングシステム(例えば、データサーバとする)、または中間コンポーネントを含むコンピューティングシステム(例えば、アプリケーションサーバ)、またはフロントエンドコンポーネントを含むコンピューティングシステム(例えば、ユーザがそれによりここで説明するシステムおよび技術の実施形態とインタラクションできるグラフィカルユーザインタフェースまたはネットワークブラウザを有するユーザコンピュータ)、またはこのようなバックグラウンドコンポーネント、中間コンポーネント、またはフロントエンドコンポーネントの任意の組み合わせを含むコンピューティングシステムに実施することができる。任意の形式または媒体のデジタルデータ通信(例えば、通信ネットワーク)により、システムのコンポーネントを互に接続することができる。通信ネットワークの例は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、ブロックチェーンネットワーク、およびインターネットを含む。
【0084】
コンピューティングシステムはクライアントおよびサーバを含んでもよい。クライアントとサーバとは、一般的に互いに離れ、且つ、通常、通信ネットワークを介してインタラクションを行う。対応するコンピュータで実行されて互いにクライアント-サーバ関係を持つコンピュータプログラムにより、クライアントとサーバとの関係を生成する。サーバはクラウドサーバであってもよく、クラウドコンピューティングサーバまたはクラウドホストとも呼ばれ、クラウドコンピューティングサービス体系における1つのホスト製品であり、従来の物理ホストおよびVPSサービスに存在する管理しにくく、トラフィックの拡張性が弱いという欠陥を解決するために使用される。サーバは、分散型システムのサーバであってもよいし、ブロックチェーンを組み合わせたサーバであってもよい。
【0085】
人工知能は、研究でコンピュータに人間のある思考過程および知能行動(例えば、学習、推理、思考、計画等)をシミュレートさせる学科であり、ハードウェアの面の技術があるとともに、ソフトウェアの面の技術もある。人工知能のハードウェア技術は、一般的に、センサ、専用人工知能チップ、クラウドコンピューティング、分散ストレージ、ビッグデータ処理等のような技術を含み、人工知能のソフトウェア技術は、主にコンピュータ視覚技術、音声識別技術、自然言語処理技術と機械学習/深層学習技術、ビッグデータ処理技術、ナレッジグラフ技術等のいくつかの方向を含む。
【0086】
クラウドコンピューティング(cloud computing)は、ネットワークを介して柔軟で拡張可能な共有物理または仮想リソースプール(リソースは、サーバ、オペレーティングシステム、ネットワーク、ソフトウェア、アプリケーションおよび記憶デバイス等を含む)にアクセスし、オンデマンド、セルフサービスの方式でリソースを配置して関連付けることができる技術体系を指す。クラウドコンピューティング技術により、人工知能、ブロックチェーン等の技術応用、モデルトレーニングに効率的で強力なデータ処理能力を提供することができる。
【0087】
上記に示す様々な形式のフローを用い、ステップを並べ替え、追加または削除することができることを理解すべきである。例えば、本開示に記載された各ステップは、並列に実行されてもよいし、順に実行されてもよいし、異なる順序で実行されてもよく、本開示に係る技術案の所望する結果を達成できる限り、本開示はここで限定しない。
【0088】
上記具体的な実施形態は、本開示の保護範囲を限定するものではない。当業者は、設計要求および他の要因に基づき、様々な修正、組み合わせ、サブ組み合わせおよび代替が可能であることを理解すべできる。本発明の精神および原則内で行われる任意の修正、均等置換および改良等は、いずれも本開示の保護範囲内に含まれているべきである。