IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ テンセント・テクノロジー・(シェンジェン)・カンパニー・リミテッドの特許一覧

特表2024-515022ブロックチェーンに基づくデータ処理方法、装置、機器及びコンピュータプログラム
<>
  • 特表-ブロックチェーンに基づくデータ処理方法、装置、機器及びコンピュータプログラム 図1
  • 特表-ブロックチェーンに基づくデータ処理方法、装置、機器及びコンピュータプログラム 図2A
  • 特表-ブロックチェーンに基づくデータ処理方法、装置、機器及びコンピュータプログラム 図2B
  • 特表-ブロックチェーンに基づくデータ処理方法、装置、機器及びコンピュータプログラム 図3
  • 特表-ブロックチェーンに基づくデータ処理方法、装置、機器及びコンピュータプログラム 図4
  • 特表-ブロックチェーンに基づくデータ処理方法、装置、機器及びコンピュータプログラム 図5
  • 特表-ブロックチェーンに基づくデータ処理方法、装置、機器及びコンピュータプログラム 図6
  • 特表-ブロックチェーンに基づくデータ処理方法、装置、機器及びコンピュータプログラム 図7
  • 特表-ブロックチェーンに基づくデータ処理方法、装置、機器及びコンピュータプログラム 図8
  • 特表-ブロックチェーンに基づくデータ処理方法、装置、機器及びコンピュータプログラム 図9
  • 特表-ブロックチェーンに基づくデータ処理方法、装置、機器及びコンピュータプログラム 図10
  • 特表-ブロックチェーンに基づくデータ処理方法、装置、機器及びコンピュータプログラム 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-04-04
(54)【発明の名称】ブロックチェーンに基づくデータ処理方法、装置、機器及びコンピュータプログラム
(51)【国際特許分類】
   G06F 9/52 20060101AFI20240328BHJP
   G06F 21/64 20130101ALI20240328BHJP
【FI】
G06F9/52 150Z
G06F21/64
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023558388
(86)(22)【出願日】2022-06-17
(85)【翻訳文提出日】2023-10-20
(86)【国際出願番号】 CN2022099549
(87)【国際公開番号】W WO2023011019
(87)【国際公開日】2023-02-09
(31)【優先権主張番号】202110901263.X
(32)【優先日】2021-08-06
(33)【優先権主張国・地域又は機関】CN
(81)【指定国・地域】
(71)【出願人】
【識別番号】514187420
【氏名又は名称】テンセント・テクノロジー・(シェンジェン)・カンパニー・リミテッド
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】シー,イーファン
(57)【要約】
ブロックチェーンに基づくデータ処理方法、装置、機器、可読記憶媒体及びコンピュータプログラム製品であって、該方法は、コンセンサスノードがトランザクションプールにおける同じグループ識別子を有する複数のトランザクションデータを、グループトランザクションデータとして決定するステップと、各グループトランザクションデータを提案ブロックにパッキングし、提案ブロックにおける各グループトランザクションデータを実行し、実行済みのトランザクション実行結果を得るステップと、実行済みのトランザクション実行結果にトランザクション実行失敗結果が含まれる場合、各グループトランザクションデータに対応するトランザクション実行結果をいずれもトランザクション実行失敗結果に更新し、各グループトランザクションデータに対応するトランザクション実行失敗結果に基づいて提案ブロックを更新し、目標提案ブロックを得るステップと、目標提案ブロックがコンセンサスにより可決された場合、目標提案ブロック及び各グループトランザクションデータに対応するトランザクション実行失敗結果に対して記帳処理を行うステップと、を含む。
【選択図】図3
【特許請求の範囲】
【請求項1】
コンピュータ機器が実行する、ブロックチェーンに基づくデータ処理方法であって、前記コンピュータ機器は、ブロックチェーンネットワークにおいてコンセンサスノードとしてマッピングされ、前記ブロックチェーンに基づくデータ処理方法は、
前記コンセンサスノードがトランザクションプールにおける同じグループ識別子を有する複数のトランザクションデータを、グループトランザクションデータとして決定するステップと、
各前記グループトランザクションデータを提案ブロックにパッキングし、前記提案ブロックにおける各前記グループトランザクションデータを実行し、実行済みのトランザクション実行結果を得るステップと、
前記実行済みのトランザクション実行結果にトランザクション実行失敗結果が含まれる場合、各前記グループトランザクションデータに対応するトランザクション実行結果をいずれもトランザクション実行失敗結果に更新し、各前記グループトランザクションデータに対応するトランザクション実行失敗結果に基づいて前記提案ブロックを更新し、目標提案ブロックを得るステップと、
前記目標提案ブロックがコンセンサスにより可決された場合、前記目標提案ブロック及び各前記グループトランザクションデータに対応するトランザクション実行失敗結果に対して記帳処理を行うステップと、を含む、ブロックチェーンに基づくデータ処理方法。
【請求項2】
前記コンセンサスノードがトランザクションプールにおける同じグループ識別子を有する複数のトランザクションデータを、グループトランザクションデータとして決定するステップは、
コンセンサスノードがトランザクションプールから前記トランザクションデータを取得するステップであって、前記トランザクションデータは、グループ識別子とグループトランザクション数量を含む、ステップと、
前記トランザクションデータを前記グループ識別子に対応するグループキャッシュキューに追加し、更新グループキャッシュキューを得るステップと、
前記更新グループキャッシュキューにおけるトランザクションデータの数量が前記グループトランザクション数量に等しい場合、前記更新グループキャッシュキューにおけるトランザクションデータを、グループトランザクションデータとして決定するステップと、
前記更新グループキャッシュキューにおけるトランザクションデータの数量が前記グループトランザクション数量より小さい場合、前記トランザクションプールから前記グループ識別子を含むトランザクションデータを引き続き取得するステップと、を含む、
請求項1に記載のブロックチェーンに基づくデータ処理方法。
【請求項3】
前記更新グループキャッシュキューにおけるトランザクションデータの数量が前記グループトランザクション数量より小さい場合、前記トランザクションプールから前記グループ識別子を含むトランザクションデータを引き続き取得するステップは、
前記更新グループキャッシュキューにおけるトランザクションデータの数量が前記グループトランザクション数量より小さく、且つ、現在時間がキャッシュ時間帯にある場合、前記トランザクションプールから前記グループ識別子を含むトランザクションデータを引き続き取得するステップを含み、
前記ブロックチェーンに基づくデータ処理方法はさらに、
前記更新グループキャッシュキューにおけるトランザクションデータの数量が前記グループトランザクション数量より小さく、且つ、現在時間が前記キャッシュ時間帯を超えた場合、前記更新グループキャッシュキューにおけるトランザクションデータを前記トランザクションプールに改めて入れ、前記更新グループキャッシュキューをクリアするステップを含む、
請求項2に記載のブロックチェーンに基づくデータ処理方法。
【請求項4】
各前記グループトランザクションデータは、いずれも実行順序識別子を含み、
各前記グループトランザクションデータを提案ブロックにパッキングするステップは、
各前記グループトランザクションデータに含まれる実行順序識別子に基づいて、各前記グループトランザクションデータに対してソート処理を実行し、ソート後の前記グループトランザクションデータを得るステップと、
ソート後の前記グループトランザクションデータを提案ブロックにパッキングするステップと、を含む、
請求項1に記載のブロックチェーンに基づくデータ処理方法。
【請求項5】
前記グループトランザクションデータの数量はSであり、Sは1より大きい正の整数であり、
前記提案ブロックにおける各前記グループトランザクションデータを実行し、実行済みのトランザクション実行結果を得るステップは、
前記提案ブロックにおけるk番目のグループトランザクションデータを取得し、前記k番目のグループトランザクションデータを実行し、前記k番目のグループトランザクションデータに対応するトランザクション実行結果を得るステップであって、kは順に増加する正の整数であり、且つ、kはSより小さい、ステップと、
前記k番目のグループトランザクションデータに対応するトランザクション実行結果がトランザクション実行成功結果である場合、前記提案ブロックにおける(k+1)番目のグループトランザクションデータを引き続き実行するステップと、
前記k番目のグループトランザクションデータに対応するトランザクション実行結果がトランザクション実行失敗結果である場合、前記提案ブロックにおける(k+1)番目のグループトランザクションデータからS番目のグループトランザクションデータまでのそれぞれに対応するトランザクション実行結果を、いずれもトランザクション実行失敗結果として決定するステップと、
各前記グループトランザクションデータのそれぞれに対応するトランザクション実行結果を実行済みのトランザクション実行結果とするステップと、を含む、
請求項1に記載のブロックチェーンに基づくデータ処理方法。
【請求項6】
各前記グループトランザクションデータに対応するトランザクション実行失敗結果に基づいて前記提案ブロックを更新し、目標提案ブロックを得るステップは、
各前記グループトランザクションデータに対応するトランザクション実行失敗結果に基づいて結果メルケルツリーを生成するステップであって、前記結果メルケルツリーは、ツリールートハッシュ値を含む、ステップと、
前記ツリールートハッシュ値を前記提案ブロックのブロックヘッダに追加し、目標提案ブロックを得るステップと、を含む、
請求項1に記載のブロックチェーンに基づくデータ処理方法。
【請求項7】
前記ブロックチェーンに基づくデータ処理方法はさらに、
前記提案ブロックをコンセンサスネットワークにおける通信可能なコンセンサスノードにブロードキャストするステップであって、前記通信可能なコンセンサスノードは、前記提案ブロックにおける各前記グループトランザクションデータを実行し、各前記グループトランザクションデータに対応するトランザクション実行結果に基づいて前記提案ブロックを更新し、通信可能な目標提案ブロックを得るためのものである、ステップと、
前記通信可能なコンセンサスノードから送信された前記通信可能な目標提案ブロックのブロックハッシュ値を受信し、前記通信可能な目標提案ブロックのブロックハッシュ値をマッチング対象ブロックハッシュ値として決定するステップと、
前記目標提案ブロックのブロックハッシュ値と同じマッチング対象ブロックハッシュ値の数量がコンセンサス数量閾値より大きい場合、前記目標提案ブロックがコンセンサスにより可決されたことを決定するステップと、を含む、
請求項1に記載のブロックチェーンに基づくデータ処理方法。
【請求項8】
コンピュータ機器が実行する、ブロックチェーンに基づくデータ処理方法であって、前記コンピュータ機器は、ブロックチェーンネットワークにおいてサービスノードとしてマッピングされ、前記ブロックチェーンに基づくデータ処理方法は、
前記サービスノードが端末機器から送信された、複数者間協力トランザクションに対するトランザクション要求を受信するステップと、
前記トランザクション要求に基づいて前記複数者間協力トランザクションに対応するグループ識別子を決定するステップと、
前記複数者間協力トランザクションに対応するグループ識別子と前記トランザクション要求に基づいてグループ識別子を有するトランザクションデータを生成し、前記トランザクションデータをトランザクションプールに追加するステップと、を含み、
前記トランザクションプールは、同じグループ識別子の複数のトランザクションデータを有し、前記トランザクションデータは、コンセンサスノードによりグループトランザクションデータとして決定されるためのものであり、前記コンセンサスノードは、各前記グループトランザクションデータを提案ブロックにパッキングし、前記提案ブロックにおける各前記グループトランザクションデータを実行し、実行済みのトランザクション実行結果を得るためのものであり、前記コンセンサスノードはさらに、前記実行済みのトランザクション実行結果にトランザクション実行失敗結果が含まれる場合、各前記グループトランザクションデータに対応するトランザクション実行結果をいずれもトランザクション実行失敗結果に更新するためのものである、ブロックチェーンに基づくデータ処理方法。
【請求項9】
前記トランザクション要求は、署名データを搬送し、前記署名データは、前記端末機器が秘密鍵で前記トランザクション要求に対して署名処理を行った後に得られ、
前記ブロックチェーンに基づくデータ処理方法はさらに、
前記端末機器に対応する公開鍵を取得するステップと、
前記公開鍵によって前記署名データに対して署名検証処理を行い、署名検証結果を得るステップと、
前記署名検証結果が署名検証成功結果である場合、前記トランザクション要求に基づいて前記複数者間協力トランザクションに対応するグループ識別子を決定するステップを実行するステップと、を含む、
請求項8に記載のブロックチェーンに基づくデータ処理方法。
【請求項10】
前記トランザクション要求の数量は複数であり、各前記トランザクション要求は実行順序識別子を含み、
前記トランザクション要求に基づいて前記複数者間協力トランザクションに対応するグループ識別子を決定するステップは、
実行順序識別子に示された順序優先度が最高優先度であるトランザクション要求を取得した場合、前記順序優先度が最高優先度であるトランザクション要求を、グループ識別子要求として決定するステップと、
前記グループ識別子要求に対してハッシュ処理を行い、要求ハッシュ値を得、前記要求ハッシュ値を前記複数者間協力トランザクションに対応するグループ識別子として決定するステップと、を含む、
請求項8に記載のブロックチェーンに基づくデータ処理方法。
【請求項11】
前記トランザクション要求は、前記複数者間協力トランザクションを開始した協力トランザクション開始オブジェクトを含み、
前記トランザクション要求に基づいて前記複数者間協力トランザクションに対応するグループ識別子を決定するステップは、
前記トランザクション要求から前記協力トランザクション開始オブジェクトを取得するステップと、
身分識別子ライブラリに、前記協力トランザクション開始オブジェクトに対応する身分識別子を検索するステップと、
前記身分識別子に基づいて前記複数者間協力トランザクションに対応するグループ識別子を生成するステップと、を含む、
請求項8に記載のブロックチェーンに基づくデータ処理方法。
【請求項12】
前記ブロックチェーンに基づくデータ処理方法はさらに、
協力トランザクション開始オブジェクトが開始した、複数者間協力トランザクションに対する識別子取得要求を取得するステップであって、前記識別子取得要求は、前記複数者間協力トランザクションに参加するトランザクションオブジェクトを含む、ステップと、
前記識別子取得要求に基づいて前記複数者間協力トランザクションに対する使用可能なグループ識別子を生成するステップと、
前記使用可能なグループ識別子を前記トランザクションオブジェクトに対応する端末機器に送信するステップであって、前記トランザクションオブジェクトに対応する端末機器は、前記使用可能なグループ識別子が含まれるトランザクション要求を生成する、ステップと、を含み、
前記トランザクション要求に基づいて前記複数者間協力トランザクションに対応するグループ識別子を決定するステップは、
前記トランザクション要求における前記使用可能なグループ識別子を、前記複数者間協力トランザクションに対応するグループ識別子として決定するステップを含む、
請求項8に記載のブロックチェーンに基づくデータ処理方法。
【請求項13】
ブロックチェーンに基づくデータ処理装置であって、
トランザクションプールにおける同じグループ識別子を有する複数のトランザクションデータを、グループトランザクションデータとして決定するように構成されるグループ決定モジュールと、
各前記グループトランザクションデータを提案ブロックにパッキングするように構成されるパッキングモジュールと、
前記提案ブロックにおける各前記グループトランザクションデータを実行し、実行済みのトランザクション実行結果を得るように構成されるブロック実行モジュールと、
前記実行済みのトランザクション実行結果にトランザクション実行失敗結果が含まれる場合、各前記グループトランザクションデータに対応するトランザクション実行結果をいずれもトランザクション実行失敗結果に更新するように構成される結果更新モジュールと、
各前記グループトランザクションデータに対応するトランザクション実行失敗結果に基づいて前記提案ブロックを更新し、目標提案ブロックを得るように構成されるブロック更新モジュールと、
前記目標提案ブロックがコンセンサスにより可決された場合、前記目標提案ブロック及び各前記グループトランザクションデータに対応するトランザクション実行失敗結果に対して記帳処理を行うように構成される記帳モジュールと、を含む、ブロックチェーンに基づくデータ処理装置。
【請求項14】
ブロックチェーンに基づくデータ処理装置であって、
端末機器から送信された、複数者間協力トランザクションに対するトランザクション要求を受信するように構成される要求受信モジュールと、
前記トランザクション要求に基づいて前記複数者間協力トランザクションに対応するグループ識別子を決定するように構成される識別子決定モジュールと、
前記複数者間協力トランザクションに対応するグループ識別子と前記トランザクション要求に基づいてグループ識別子を有するトランザクションデータを生成し、前記トランザクションデータをトランザクションプールに追加するように構成されるデータ追加モジュールと、を含み、
前記トランザクションプールは、同じグループ識別子の複数のトランザクションデータを有し、前記トランザクションデータは、コンセンサスノードによりグループトランザクションデータとして決定されるためのものであり、前記コンセンサスノードは、各前記グループトランザクションデータを提案ブロックにパッキングし、前記提案ブロックにおける各前記グループトランザクションデータを実行し、実行済みのトランザクション実行結果を得るためのものであり、前記コンセンサスノードはさらに、前記実行済みのトランザクション実行結果にトランザクション実行失敗結果が含まれる場合、各前記グループトランザクションデータに対応するトランザクション実行結果をいずれもトランザクション実行失敗結果に更新するためのものである、ブロックチェーンに基づくデータ処理装置。
【請求項15】
プロセッサ、メモリ、及びネットワークインターフェース、を含むコンピュータ機器であって、
前記プロセッサは、前記メモリと前記ネットワークインターフェースに接続され、前記ネットワークインターフェースは、データ通信機能を提供するためのものであり、前記メモリは、プログラムコードを記憶するためのものであり、前記プロセッサは、請求項1~12のいずれか1項に記載のブロックチェーンに基づくデータ処理方法を実行するために、前記プログラムコードを呼び出すためのものである、コンピュータ機器。
【請求項16】
コンピュータに、請求項1~12のいずれか1項に記載のブロックチェーンに基づくデータ処理方法を実行させる、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願への相互参照)
本願は、2021年08月06日に中国特許局に提出された、出願番号が202110901263.Xである中国特許出願の優先権を主張し、その内容の全てが引用により本願に組み込まれる。
【0002】
本願は、コンピュータ技術の分野に関し、特に、ブロックチェーンに基づくデータ処理方法、装置、機器、可読記憶媒体及びコンピュータプログラム製品に関する。
【背景技術】
【0003】
ブロックチェーンは、分散型データ記憶、ピアツーピア伝送、コンセンサスメカニズム、及び暗号化アルゴリズムなどのコンピュータ技術を融合した新しい応用モードである。ブロックチェーンは主に、データを時系列に整理し、データを暗号化して台帳化するために使用され、データの改ざんや偽造を防止すると同時に、データの検証、記憶、及び更新を可能にする。また、ブロックチェーンは、データの暗号化伝送、ノードの識別、及び安全なアクセスを可能にし、先進的な分散型インフラストラクチャである。現在、ブロックチェーンの改ざん防止性と真実性により、ブロックチェーンの応用が増加している。
【0004】
トランザクションは、ブロックチェーンシステムにおける最小要求単位である。1つのトランザクションは、ブロックチェーンサービス側への1回の操作要求とみなされることができ、該操作要求は、ブロックチェーンシステムがいくつかのトランザクション操作を実行することを許可する。しかしながら、1つのトランザクションには個人又は両方しか関与しない。複数者間協力(「マルチパーティ協力」とも呼ばれる。)の場面では、通常、複数のトランザクションが生成されることが多く、これらのトランザクションは、同時に実行に成功又は失敗すべきであり、それによって、参加者全員の利益を保証することができる。
【0005】
しかしながら、関連技術のブロックチェーンシステムにおいて、異なるトランザクションは、ブロックチェーンにおいて相互に独立して隔離される。複数者間協力の場面で生成された複数のトランザクションについて、一部のトランザクションの実行が失敗した場合、実行に成功したトランザクションは依然としてブロックチェーン帳簿に書き込まれ、トランザクションに成功した側はトランザクションに失敗した側のために新しいトランザクションを開始しないため、完全な複数者間協力のトランザクションをブロックチェーン帳簿に保存することができず、その結果、ブロックチェーンに基づく複数者間協力トランザクションが失敗し、ブロックチェーンのトランザクションデータの正確性を低下させる。
【発明の概要】
【0006】
本願の実施例は、ブロックチェーンに基づくデータ処理方法、装置、機器、可読記憶媒体及びコンピュータプログラム製品を提供し、ブロックチェーンのトランザクションデータの正確性を向上させることができる。
【0007】
本願の実施例は、コンピュータ機器に適用される、ブロックチェーンに基づくデータ処理方法を提供する。前記コンピュータ機器は、ブロックチェーンネットワークにおいてコンセンサスノードとしてマッピングされ、前記ブロックチェーンに基づくデータ処理方法は、
前記コンセンサスノードがトランザクションプールにおける同じグループ識別子を有する複数のトランザクションデータを、グループトランザクションデータとして決定するステップと、
各前記グループトランザクションデータを提案ブロックにパッキングし、前記提案ブロックにおける各前記グループトランザクションデータを実行し、実行済みのトランザクション実行結果を得るステップと、
前記実行済みのトランザクション実行結果にトランザクション実行失敗結果が含まれる場合、各前記グループトランザクションデータに対応するトランザクション実行結果をいずれもトランザクション実行失敗結果に更新し、各前記グループトランザクションデータに対応するトランザクション実行失敗結果に基づいて前記提案ブロックを更新し、目標提案ブロックを得るステップと、
前記目標提案ブロックがコンセンサスにより可決された場合、前記目標提案ブロック及び各前記グループトランザクションデータに対応するトランザクション実行失敗結果に対して記帳処理を行うステップと、を含む。
【0008】
本願の実施例は、コンピュータ機器に適用される、ブロックチェーンに基づくデータ処理方法を提供する。前記コンピュータ機器は、ブロックチェーンネットワークにおいてサービスノードとしてマッピングされ、前記ブロックチェーンに基づくデータ処理方法は、
前記サービスノードが端末機器から送信された、複数者間協力トランザクションに対するトランザクション要求を受信するステップと、
前記トランザクション要求に基づいて前記複数者間協力トランザクションに対応するグループ識別子を決定するステップと、
前記複数者間協力トランザクションに対応するグループ識別子と前記トランザクション要求に基づいてグループ識別子を有するトランザクションデータを生成し、前記トランザクションデータをトランザクションプールに追加するステップと、を含み、
前記トランザクションプールは、同じグループ識別子の複数のトランザクションデータを有し、前記トランザクションデータは、コンセンサスノードによりグループトランザクションデータとして決定されるためのものであり、前記コンセンサスノードは、各前記グループトランザクションデータを提案ブロックにパッキングし、前記提案ブロックにおける各前記グループトランザクションデータを実行し、実行済みのトランザクション実行結果を得るためのものであり、前記コンセンサスノードはさらに、前記実行済みのトランザクション実行結果にトランザクション実行失敗結果が含まれる場合、各前記グループトランザクションデータに対応するトランザクション実行結果をいずれもトランザクション実行失敗結果に更新するためのものである。
【0009】
本願の実施例は、ブロックチェーンに基づくデータ処理装置を提供する。該ブロックチェーンに基づくデータ処理装置は、
トランザクションプールにおける同じグループ識別子を有する複数のトランザクションデータを、グループトランザクションデータとして決定するように構成されるグループ決定モジュールと、
各前記グループトランザクションデータを提案ブロックにパッキングするように構成されるパッキングモジュールと、
各前記グループトランザクションデータを提案ブロックにパッキングし、前記提案ブロックにおける各前記グループトランザクションデータを実行し、実行済みのトランザクション実行結果を得るように構成されるブロック実行モジュールと、
前記実行済みのトランザクション実行結果にトランザクション実行失敗結果が含まれる場合、各前記グループトランザクションデータに対応するトランザクション実行結果をいずれもトランザクション実行失敗結果に更新するように構成される結果更新モジュールと、
各前記グループトランザクションデータに対応するトランザクション実行失敗結果に基づいて前記提案ブロックを更新し、目標提案ブロックを得るように構成されるブロック更新モジュールと、
前記目標提案ブロックがコンセンサスにより可決された場合、前記目標提案ブロック及び各前記グループトランザクションデータに対応するトランザクション実行失敗結果に対して記帳処理を行うように構成される記帳モジュールと、を含む。
【0010】
本願の実施例は、ブロックチェーンに基づくデータ処理装置を提供する。該ブロックチェーンに基づくデータ処理装置は、
端末機器から送信された、複数者間協力トランザクションに対するトランザクション要求を受信するように構成される要求受信モジュールと、
前記トランザクション要求に基づいて前記複数者間協力トランザクションに対応するグループ識別子を決定するように構成される識別子決定モジュールと、
前記複数者間協力トランザクションに対応するグループ識別子と前記トランザクション要求に基づいてグループ識別子を有するトランザクションデータを生成し、前記トランザクションデータをトランザクションプールに追加するように構成されるデータ追加モジュールと、を含み、
前記トランザクションプールは、同じグループ識別子の複数のトランザクションデータを有し、前記トランザクションデータは、コンセンサスノードによりグループトランザクションデータとして決定されるためのものであり、前記コンセンサスノードは、各前記グループトランザクションデータを提案ブロックにパッキングし、前記提案ブロックにおける各前記グループトランザクションデータを実行し、実行済みのトランザクション実行結果を得るためのものであり、前記コンセンサスノードはさらに、前記実行済みのトランザクション実行結果にトランザクション実行失敗結果が含まれる場合、各前記グループトランザクションデータに対応するトランザクション実行結果をいずれもトランザクション実行失敗結果に更新するためのものである。
【0011】
本願の実施例は、プロセッサ、メモリ、及びネットワークインターフェース、を含むコンピュータ機器を提供し、
前記プロセッサは、前記メモリと前記ネットワークインターフェースに接続され、前記ネットワークインターフェースは、データ通信機能を提供するためのものであり、前記メモリは、コンピュータプログラムを記憶するためのものであり、前記プロセッサは、本願の実施例におけるブロックチェーンに基づくデータ処理方法を実行するために、前記コンピュータプログラムを呼び出すためのものである。
【0012】
本願の実施例は、コンピュータプログラムを記憶するコンピュータ可読記憶媒体を提供する。前記コンピュータプログラムは、プロセッサにロードされ、本願の実施例におけるブロックチェーンに基づくデータ処理方法を実行するのに適している。
【0013】
本願の実施例は、コンピュータ命令を含むコンピュータプログラム製品又はコンピュータプログラムを提供する。該コンピュータ命令は、コンピュータ可読記憶媒体に記憶され、コンピュータ機器のプロセッサは、コンピュータ可読記憶媒体から該コンピュータ命令を読み取り、プロセッサは、該コンピュータ命令を実行して、該コンピュータ機器に本願の実施例におけるブロックチェーンに基づくデータ処理方法を実施する。
【0014】
本願の実施例において、同一のグループ識別子を有するグループトランザクションデータを同一の提案ブロックにパッキングすることができ、さらに、1つのグループトランザクションデータの実行に失敗した場合、すべてのグループトランザクションデータの実行に失敗したと決定する。このようにして、複数者間協力トランザクションで生成されたグループトランザクションデータの一部が実行に失敗した後に、トランザクションに成功したグループトランザクションデータの一部をブロックチェーンに書き込むことを防ぐことができる。したがって、本願の実施例によれば、すべてのグループトランザクションデータが実行に成功した場合にのみ、ブロックチェーンに基づく複数者間協力トランザクションに成功することを保証し、それによって、ブロックチェーンのトランザクションデータの正確性を向上させる。
【図面の簡単な説明】
【0015】
図1】本願の実施例に提供されるネットワークアーキテクチャの一例の概略図である。
図2a】本願の実施例に提供されるブロックチェーンに基づくデータ処理の場面の一例の概略図である。
図2b】本願の実施例に提供されるブロックチェーンに基づくデータ処理の場面の一例の概略図である。
図3】本願の実施例に提供されるブロックチェーンに基づくデータ処理方法の一例のフローチャートである。
図4】本願の実施例に提供されるブロックチェーンに基づくデータ処理方法の一例のフローチャートである。
図5】本願の実施例に提供されるグループトランザクションデータ実行方法の一例のフローチャートである。
図6】本願の実施例に提供されるトランザクショングループの実現場面の一例の概略図である。
図7】本願の実施例に提供されるトランザクショングループの実現の一例のフローチャートである。
図8】本願の実施例に提供されるブロックチェーンに基づくデータ処理装置の一例の構造概略図である。
図9】本願の実施例に提供されるコンピュータ機器の一例の構造概略図である。
図10】本願の実施例に提供されるブロックチェーンに基づくデータ処理装置の別の一例の構造概略図である。
図11】本願の実施例に提供されるコンピュータ機器の別の一例の構造概略図である。
【発明を実施するための形態】
【0016】
以下では、本願の実施例における図面を参照して、本願の実施例における技術的解決策を明確で完全に説明する。明らかなこととして、記載される実施例は、本願の実施例の一部に過ぎず、全ての実施例ではない。本願の実施例に基づいて、創造的な労力を払うことなく、当業者に得られる他のすべての実施例は、本願の保護範囲に含まれるものである。
【0017】
説明すべきこととして、本願の実施例に関するトランザクションは、トランザクション要求とも呼ばれ、トランザクションは、ブロックチェーンネットワークに提出されて実行される必要がある操作、及び対応するトランザクション結果を含む。本願の実施例に関するトランザクションは、ビジネス環境におけるトランザクションに限定されず、即ち、トランザクションデータは、デジタル通貨などの関連データに限定されない。例えば、トランザクションは、配置(Deploy)トランザクション、又は呼び出し(Invoke)トランザクションであり得る。配置トランザクションは、スマート契約をブロックチェーンネットワークのノードに配置し、呼び出される準備を整えるためのものである。呼び出しトランザクションは、帳簿における状態データベースに対して照会操作(即ち、読み出し操作)又は更新操作(即ち、書き込み操作であり、増加、削除と変更を含む)を行うためのものである。
【0018】
図1を参照すると、図1は、本願の実施例に提供されるネットワークアーキテクチャの一例の概略図である。ブロックチェーンは、分散型データ記憶、ピアツーピア伝送、コンセンサスメカニズム、及び暗号化アルゴリズムなどのコンピュータ技術を融合した新しい応用モードである。ブロックチェーンは主に、データを時系列に整理し、データを暗号化して台帳化するために使用され、データの改ざんや偽造を防止すると同時に、データの検証、記憶、及び更新を可能にする。ブロックチェーンは本質的に、デセンタリング(分散型)のデータベースであり、該データベースにおける各ノードは、1つの同じブロックチェーンを記憶する。ブロックチェーンネットワークにおけるノードは、コンセンサスノード(例えば、図1に示すコンセンサスノード1000a)とサービスノード(例えば、図1に示すサービスノード100a)を含み、コンセンサスノードは、ブロックチェーンのネットワーク全体のコンセンサスのためのものであり、サービスノードは、端末機器(クライアントが実行される)から送信されたトランザクション要求を処理するためのものである。ブロックチェーンネットワークにおいてトランザクションデータが帳簿に書き込まれる過程(プロセス)は、クライアントがトランザクションデータをサービスノードに送信すること、コンセンサスノードがトランザクションデータを受信するまで、ブロックチェーンネットワークにおけるサービスノード間でトランザクションデータがリレー形式で受け渡されること、コンセンサスノードが該トランザクションデータをブロックにパッキングし、他のコンセンサスノードとのコンセンサスを求めること、コンセンサスに達した後に、該トランザクションデータを搬送するブロックを帳簿に書き込むこと、を含むことができる。
【0019】
ここで、理解可能なこととして、ブロック(Block)は、ブロックチェーンネットワークにおいてトランザクションデータ(即ち、トランザクションサービス)を運ぶデータパッケージであり、タイムスタンプと前のブロックのハッシュ値がマークされたデータ構造である。ブロックがネットワークのコンセンサスメカニズムによって検証され、それによって、ブロックにおけるトランザクションを決定する。
【0020】
ここで、理解可能なこととして、ハッシュ(hash)値は、情報特徴値又は特徴値とも呼ばれ、ハッシュ値は、ハッシュアルゴリズムによって、任意の長さの入力データをパスワードに転換して固定的に出力することによって生成され、ハッシュ値を復号化することによってオリジナル入力データを検索することができず、ハッシュアルゴリズムは、一方向の暗号化関数である。ブロックチェーンにおいて、各ブロック(初期ブロックを除く)は、前のブロックのハッシュ値を含み、前のブロックは、現在ブロックの親ブロックと呼ばれる。ハッシュ値は、ブロックチェーン技術の中核となる基盤及び最も重要な部分であり、記録されたデータと閲覧されたデータの真実性、及びブロックチェーンの全体として完全性を保証することができる。
【0021】
ここで、理解可能なこととして、ブロックチェーンシステムは、スマート契約を含むことができ、該スマート契約は、ブロックチェーンシステムにおいて、ブロックチェーンの各ノード(コンセンサスノードが含まれる)が理解して実行することができるコードと理解することができ、任意のロジックを実行し、結果を得ることができる。ユーザは、クライアントがトランザクションサービス要求を開始する方式によって、ブロックチェーンにおける配置済みのスマート契約を呼び出すことができる。次に、ブロックチェーンにおけるサービスノードは、該トランザクションサービス要求をコンセンサスノードに送信することができ、ブロックチェーンにおける各コンセンサスノードは、それぞれに該スマート契約を実行することができる。理解可能なこととして、ブロックチェーンは、1つ又は複数のスマート契約を含むことができ、これらのスマート契約は、識別子番号(ID:Identity document)又は名称によって区別されることができる。クライアントが開始したトランザクションサービス要求も、スマート契約の識別子番号又は名称を搬送することができ、それによって、ブロックチェーンが実行必要なスマート契約を指定する。クライアントにより指定されたスマート契約がデータを読み取る必要がある契約である場合、各コンセンサスノードは、ローカル帳簿にアクセスし、データの読み取りを行う。最後に、各コンセンサスノードは、実行結果が一致するか否かを相互に検証する(即ち、コンセンサスを行う)。一致する場合、実行結果をそれぞれのローカル帳簿に記憶し、実行結果をクライアントに戻ることができる。
【0022】
図1に示すように、該ネットワークアーキテクチャは、コンセンサスノードクラスタ1000、サービスノードクラスタ100、及び端末機器(クライアントが実行される)クラスタ10を含むことができる。該コンセンサスノードクラスタ1000は、少なくとも2つのコンセンサスノードを含むことができ、サービスノードクラスタ100は、少なくとも2つのサービスノードを含むことができる。図1に示すように、該コンセンサスノードクラスタ1000は、コンセンサスノード1000a、コンセンサスノード1000b、…、コンセンサスノード1000nを含むことができ、該サービスノードクラスタ100は具体的に、サービスノード100a、サービスノード100b、…、サービスノード100nを含むことができ、該端末機器クラスタ10は具体的に、端末機器10a、端末機器10b、…、端末機器10nを含むことができる。
【0023】
図1に示すように、端末機器10a、端末機器10b、…、端末機器10nのそれぞれは、サービスノード100a、サービスノード100b、…、サービスノード100nとネットワーク接続を行うことができ、それによって、端末機器は、該ネットワーク接続によってサービスノードとデータインタラクションを行うことができる。サービスノード100a、サービスノード100b、…、サービスノード100nのそれぞれは、コンセンサスノード1000a、コンセンサスノード1000b、…、コンセンサスノード1000nとネットワーク接続を行うことができ、それによって、サービスノードは、該ネットワーク接続によってコンセンサスノードとデータインタラクションを行うことができる。サービスノード100a、サービスノード100b、…、サービスノード100nは、相互に接続され、それによって、サービスノードの間は、データインタラクションを行うことができる。コンセンサスノード1000a、コンセンサスノード1000b、…、コンセンサスノード1000nは、相互に接続され、それによって、コンセンサスノードの間は、データインタラクションを行うことができる。
【0024】
理解可能なこととして、ブロックチェーンノード(上記のサービスノード又はコンセンサスノードであり得る)の間は、上記のデータ接続によってデータ又はブロック伝送を行うことができる。ブロックチェーンネットワークは、ノード識別子に基づいてブロックチェーンノードの間のデータ接続を実現することができる。ブロックチェーンネットワークにおける各ブロックチェーンノードは、いずれもそれに対応するノード識別子を有し、さらに、上記の各ブロックチェーンノードは、いずれも自身と接続関係を有する他のブロックチェーンノードのノード識別子を記憶することができ、それによって、後続で他のブロックチェーンノードのノード識別子に基づいて、取得されたデータ又は生成されたブロックを他のブロックチェーンノードにブロードキャストする。例えば、サービスノード100aにおいて、表1に示すノード識別子リストを保持することができ、該ノード識別子リストは、他のブロックチェーンノードのノード名称とノード識別子を記憶する。
【0025】
【表1】
ここで、ノード識別子は、ネットワークの間に相互接続のプロトコル(IP:Internet Protocol)アドレス、及び、ブロックチェーンネットワークにおけるブロックチェーンノードを識別することができる他の任意の情報であり得る。表1において、IPアドレスだけを例として説明する。例えば、サービスノード100aは、ノード識別子117.116.189.145によってコンセンサスノード1000aに情報(例えば、トランザクションデータ)を送信することができ、さらに、コンセンサスノード1000aは、ノード識別子117.114.151.174によって該情報がサービスノード100aから送信されたことを決定することができる。
【0026】
理解可能なこととして、上記のデータ接続は、接続方式に限定されず、有線通信方式によって直接的に又は間接的に接続されることができ、無線通信方式によって直接的に又は間接的に接続されることもでき、さらに他の接続方式によって接続されることもでき、本願は、これについて限定しない。
【0027】
理解可能なこととして、本願の実施例に提供されるブロックチェーンに基づくデータ処理方法は、コンピュータ機器によって実行されることができる。コンピュータ機器は、上記のコンセンサスノード又はサービスノード(端末又はサーバであり得る)を含むが、これらに限定されない。上記のサーバは、独立な物理サーバであり得、複数の物理サーバによって構成されるサーバクラスタ又は分散型システムでもあり得、又は、クラウドサービス、クラウドデータベース、クラウド計算、クラウド関数、クラウド記憶、ネットワークサービス、クラウド通信、ミドルウェアサービス、ドメイン名サービス、セキュリティサービス、CDN、ビッグデータ、及び人工知能プラットフォームなどの基本的なクラウド計算サービスを提供するクラウドサーバでもあり得る。上記の端末は、スマートフォン、タブレットパソコン、ノートパソコン、デスクトップパソコン、スマートスピーカ、スマートウォッチ、車載端末などであり得るが、これらに限定されない。
【0028】
図1に示すように、コンセンサスノードクラスタ1000における任意のコンセンサスノードは、ブロックプロデューサノードとして機能し、トランザクションプールから同じグループ識別子を有する複数のトランザクションデータを取得し、各トランザクションデータグループをトランザクションデータとして決定することができる。ここで、トランザクションプールは、トランザクションデータを記憶する、ブロックチェーンネットワークにおける各ブロックチェーンノードが保持する必要のある一時的なリストであり、ブロックチェーンノードは、トランザクションプールによってブロックチェーンネットワークにおける既知であるがブロックチェーンにまだ含まれないトランザクションデータを一時的に記憶する。次に、該ブロックプロデューサノードは、各グループトランザクションデータを提案ブロック(ブロックチェーンにおけるグループトランザクションデータを記憶するブロック)にパッキングし、提案ブロックにおける各グループトランザクションデータを順に実行し、実行済みのトランザクション実行結果を得ることができる。実行済みのトランザクション実行結果にトランザクション実行失敗結果が含まれる場合、各グループトランザクションデータに対応するトランザクション実行結果をいずれもトランザクション実行失敗結果に更新し、各グループトランザクションデータに対応するトランザクション実行失敗結果に基づいて提案ブロックを更新し、目標提案ブロックを得る。次に、目標提案ブロックがコンセンサスにより可決された場合、目標提案ブロック及び各グループトランザクションデータに対応するトランザクション実行失敗結果に対して記帳処理を行う。ここで、各グループトランザクションデータに対応するトランザクション実行失敗結果に基づいて提案ブロックを更新し、目標提案ブロックを得る過程は、下記のようであり得る。各グループトランザクションデータに対応するトランザクション実行失敗結果に基づいて結果メルケルツリーを生成し、結果メルケルツリーのツリールートハッシュ値を提案ブロックのブロックヘッダに追加し、目標提案ブロックを得る。ここで、記帳処理は、目標提案ブロック及び各グループトランザクションデータに対応するトランザクション実行失敗結果をブロックチェーン帳簿に書き込んで記憶することである。実行済みのトランザクション実行結果がトランザクション実行失敗結果を含まない場合、実行済みのトランザクション実行結果に基づいて結果メルケルツリーを直接的に生成し、該結果メルケルツリーのツリールートハッシュ値を提案ブロックに追加し、更新後の提案ブロックを得、更新後の提案ブロックと実行済みのトランザクション実行結果に対して記帳処理を行う。
【0029】
上記のトランザクションプールにおけるトランザクションデータは、サービスノードクラスタ100における任意のサービスノードから送信されたことができる。図1に示すように、サービスノードクラスタ100における任意のサービスノードは、端末機器クラスタ10における端末機器から送信された複数者間協力トランザクションに対するトランザクション要求を受信することができ、ここで、トランザクション要求の数量は複数である。トランザクション要求の数量が複数である場合、同一の端末機器から送信されてもよく、異なる端末機器から送信されてもよく、ここでこれについて限定しない。ここで、複数者間協力トランザクションは、複数の参加者が一緒にトランザクションを行う場面であり、この場面で、通常、1つ又は複数のトランザクションが生成され、これらのトランザクションは、同時に実行に成功し、一緒にブロックチェーン帳簿に書き込まれるべきである。次に、サービスノードクラスタ100における任意のサービスノードは、トランザクション要求に基づいて複数者間協力トランザクションに対応するグループ識別子を決定し、該複数者間協力トランザクションに対応するグループ識別子とトランザクション要求に基づいてグループ識別子を有するトランザクションデータを生成し、該グループ識別子を有するトランザクションデータをトランザクションプールに追加し、上記のブロックプロデューサノードの処理を待つことができる。例えば、端末機器クラスタ10における端末機器は、複数者間協力トランザクションに対応するグループ識別子を直接的に取得し、該グループ識別子に基づいて複数者間協力トランザクションに対するトランザクション要求を生成し、該グループ識別子を搬送するトランザクション要求をサービスノードクラスタ100における任意のサービスノードに送信することができる。サービスノードは、グループ識別子を搬送するトランザクション要求を受信した後に、グループ識別子を有するトランザクションデータを直接的に生成し、グループ識別子を搬送するトランザクションデータをトランザクションプールに追加することができる。
【0030】
理解しやすいように、図2a~図2bを参照すると、図2a~図2bは、本願の実施例に提供されるブロックチェーンに基づくデータ処理の場面の一例の概略図である。ここで、図2aに示すユーザAに対応する端末機器20a、ユーザBに対応する端末機器20b、及びユーザCに対応する端末機器20cは、いずれも上記の図1における端末機器クラスタ10における任意の端末機器であり得る。例えば、端末機器20aは、端末機器10aであり得、端末機器20bは、端末機器10bであり得、端末機器20cは、端末機器10nであり得る。図2aに示すサービスノード200は、上記の図1におけるサービスノードクラスタ100における任意のサービスノードであり得、例えば、該サービスノードは、サービスノード100bであり得る。図2bに示すコンセンサスノード201は、上記の図1におけるコンセンサスノードクラスタ1000における任意のサービスノードであり得、例えば、該コンセンサスノードは、コンセンサスノード1000aであり得る。
【0031】
図2aに示すように、ユーザA、ユーザB、ユーザC、及びユーザD(図示されていない)は、複数者間協力トランザクションfに参加している。4人の約束によると、ユーザAはユーザBに100元を振り替える必要があり、ユーザBはユーザCに60元を振り替える必要があり、ユーザCはユーザDに30元を振り替える必要がある。そこで、ユーザAは端末機器20aで「ユーザAがユーザBに100元を振り替える」に対するトランザクション要求1を開始し、ユーザBは端末機器20bで「ユーザBがユーザCに60元を振り替える」に対するトランザクション要求2を開始し、ユーザCは端末機器20cで「ユーザCがユーザDに30元を振り替える」に対するトランザクション要求3を開始する。理解可能なこととして、トランザクション要求2の実行に失敗し、トランザクション要求1とトランザクション要求3の実行に成功した場合、即ち、ユーザAが成功にユーザBに振替し、ユーザCが成功にユーザDに振替したが、ユーザBが成功にユーザCに振替しなかった場合、ユーザBは、60元多く受け取った。この時に、ユーザBがユーザAの振替の返却を拒否し、再びユーザCに60元を振り替えることも拒否すると、ユーザAとユーザCの利益はいずれも損なわれる可能性があり、ブロックチェーンに基づく複数者間協力トランザクションの成功及びブロックチェーンのトランザクションデータの正確性を保証することができない。本願の実施例において、複数者間協力トランザクションで生成された複数のトランザクションを同一のグループのグループトランザクションとしており、同一のグループにおける任意の1つのグループトランザクションの実行に失敗した場合、すべてのグループトランザクションの実行に失敗したと見なされるため、ブロックチェーンに基づく複数者間協力トランザクションの成功を保証し、ブロックチェーンのトランザクションデータの正確性を向上させる。
【0032】
図2aに示すように、ユーザA、ユーザB、及びユーザCは、品物推奨モデルに対する連合学習タスクを行っている。ユーザAは品物推奨モデルに対する第1部分訓練データを有し、ユーザBは品物推奨モデルに対する第2部分訓練データを有し、ユーザCは品物推奨モデルに対する第3部分訓練データを有する。ここで、第1部分訓練データ、第2訓練部分データ、及び第3部分訓練データは、品物推奨モデルを訓練する完全な訓練データを構成する。したがって、ユーザAは、端末機器20aで「第1部分訓練データによって品物推奨モデルを訓練する」に対するトランザクション要求1を開始し、ユーザBは、端末機器20bで「第2部分訓練データによって品物推奨モデルを訓練する」に対するトランザクション要求2を開始し、ユーザCは、端末機器20cで「第3部分訓練データによって品物推奨モデルを訓練する」に対するトランザクション要求3を開始する。理解可能なこととして、トランザクション要求2の実行に失敗し、トランザクション要求1とトランザクション要求3の実行に成功した場合、即ち、第1部分訓練データによる品物推奨モデルの訓練に成功し、第3部分訓練データによる品物推奨モデルの訓練に成功したが、第2部分訓練データによる品物推奨モデルの訓練に失敗した場合、品物推奨モデルは第2部分訓練データの訓練が欠けるため、品物推奨モデルの訓練に失敗する。第1部分訓練データで品物推奨モデルを訓練したトランザクションデータ、及び第3部分訓練データで品物推奨モデルを訓練したトランザクションデータが記憶されていても、ブロックチェーンに基づく複数者間協力トランザクションの成功、即ち、品物推奨モデルの成功を保証することができない。すべてのトランザクションの実行に成功した場合にのみ、ブロックチェーンに基づく複数者間協力トランザクションの成功を保証することができる。このようにして、ブロックチェーンのトランザクションデータの正確性を向上させ、さらに、連合学習のデータプライバシー保護の特性に基づいて、それぞれの訓練データで訓練モデルを独立して訓練するため、ブロックチェーンのトランザクションデータの安全性を向上させる。
【0033】
図2aに示すように、ユーザA、ユーザB、及びユーザCは、目標コードに対する協同開発タスクを行っている。ユーザAは、目標コードの第1部分コードに対して開発を行う必要があり、ユーザBは、目標コードの第2部分コードに対して開発を行う必要があり、ユーザCは、目標コードの第3部分コードに対して開発を行う必要がある。ここで、第1部分コード、第2部分コード、及び第3部分コードは、完全な目標コードを構成する。したがって、ユーザAは、端末機器20aで「第1部分コードに対する開発タスク」のトランザクション要求1を開始し、ユーザBは、端末機器20bで「第2部分コードに対する開発タスク」のトランザクション要求2を開始し、ユーザCは、端末機器20cで「第3部分コードに対する開発タスク」のトランザクション要求3を開始する。理解可能なこととして、トランザクション要求2の実行に失敗し、トランザクション要求1とトランザクション要求3の実行に成功した場合、即ち、第1部分コードの開発に成功し、第3部分コードの開発に成功したが、第2部分コードによって開発に失敗した場合、この時に、第2部分コードが欠けるために、目標コードの開発に失敗し、ブロックチェーンに基づく複数者間協力トランザクションの成功を保証することができない。すべてのトランザクションの実行に成功してこそ、ブロックチェーンに基づく複数者間協力トランザクションの成功を保証することができる。このようにして、ブロックチェーンのトランザクションデータの正確性及び完全性を向上させ、さらに、多方コード協同開発によって、ブロックチェーンのトランザクションデータ(即ち、開発されたコード)の開発効率を向上させる。
【0034】
図2aに示すように、サービスノード200は、トランザクション要求1、トランザクション要求2、及びトランザクション要求3を受信した後に、複数者間協力トランザクションfに対応するグループ識別子を決定し、グループ識別子Fと仮定する。次に、サービスノードは、複数者間協力トランザクションに対応するグループ識別子とトランザクション要求に基づいてグループ識別子を有するトランザクションデータを生成し、即ち、図2aに示すように、サービスノード200は、トランザクション要求1とグループ識別子Fに基づいてトランザクションデータ1を生成し、サービスノード200は、トランザクション要求2とグループ識別子Fに基づいてトランザクションデータ2を生成し、サービスノード200は、トランザクション要求3とグループ識別子Fに基づいてトランザクションデータ3を生成する。トランザクションデータ1、トランザクションデータ2、及びトランザクションデータ3は、いずれもグループ識別子Fを搬送する。次に、サービスノード200は、トランザクションデータ1、トランザクションデータ2、及びトランザクションデータ3を、いずれもトランザクションプール202に追加する。上記から分かるように、トランザクションプール202は、ブロックチェーンノードにおける各ブロックチェーンノードがいずれも保持する、トランザクションデータを記憶する臨時リストである。
【0035】
例えば、グループ識別子を有するトランザクションデータがトランザクションプールに入った後に、ブロックプロデューサノードに提案ブロックにパッキングされることを待つ。ブロックプロデューサノードがコンセンサスノード201であると仮定すると、コンセンサスノード201は、トランザクションプール202からトランザクションデータを抽出し、提案ブロックにパッキングし、ブロックチェーンネットワークにブロードキャストしてコンセンサス記帳処理を行うことができる。図2bに示すように、コンセンサスノード201は、トランザクションプールから、グループ識別子Fを有するトランザクションデータ1、トランザクションデータ2、及びトランザクションデータ3を同一のグループ2011のグループトランザクションデータとして決定し、次に、該グループ2011における各グループトランザクションデータを、提案ブロック2015にパッキングする。ここで、提案ブロックは、ブロックヘッダとブロック体を含む。ブロックヘッダは、バージョン番号、タイムスタンプ、及び難度値などの基本データを記憶し、さらに他の関連データを記憶することができる。ブロック体は、グループ2011における各グループトランザクションデータを記憶するためのものである。理解可能なこととして、提案ブロックは、複数のグループに対応するグループトランザクションデータを記憶することができる。同一のグループに対応するグループトランザクションデータに対応するトランザクション実行結果のうちの1つのトランザクション実行結果がトランザクション実行失敗結果である場合、該グループにおけるすべてのグループトランザクションデータに対応するトランザクション実行結果は、トランザクション実行失敗結果に更新される。異なるグループに対応するグループトランザクションデータに対応するトランザクション実行結果は、相互に影響を与えない。提案ブロックがグループAとグループBのそれぞれに対応するグループトランザクションデータと仮定すると、グループAにおけるグループトランザクションデータaの実行に失敗した場合、グループBにおけるグループトランザクションデータに対応するトランザクション実行結果は、影響を受けない。
【0036】
図2bに示すように、コンセンサスノード201は、提案ブロックにおける各グループトランザクションデータを順に実行し、即ち、グループトランザクションデータ2012、グループトランザクションデータ2013、及びグループトランザクションデータ2014を順に実行し、実行済みのトランザクション実行結果を得る。グループトランザクションデータ2012に対応するトランザクション実行結果2016がトランザクション実行成功結果であり、グループトランザクションデータ2013に対応するトランザクション実行結果2017がトランザクション実行成功結果であり、グループトランザクションデータ2014に対応するトランザクション実行結果2018がトランザクション実行失敗結果であると仮定すると、即ち、実行済みのトランザクション実行結果にトランザクション実行失敗結果が含まれる場合、コンセンサスノード201は、トランザクション実行結果を更新し、即ち、各グループトランザクションデータに対応するトランザクション実行結果をトランザクション実行失敗結果に更新する。更新を遂行した後に、グループトランザクションデータ2012に対応するトランザクション実行結果2016は、トランザクション実行失敗結果であり、グループトランザクションデータ2013に対応するトランザクション実行結果2017は、トランザクション実行失敗結果であり、グループトランザクションデータ2014に対応するトランザクション実行結果2018は、トランザクション実行失敗結果である。コンセンサスノード201は、各グループトランザクションデータに対応するトランザクション実行失敗結果に基づいて提案ブロックを更新し、目標提案ブロックを得、次に、目標提案ブロックに対してコンセンサス記帳処理を行い、即ち、ブロックチェーンにおけるコンセンサスノードクラスタ(上記の図1に示すコンセンサスノードクラスタ1000であり得る)のコンセンサスが可決された後に、コンセンサスノード201は、目標提案ブロック及び各グループトランザクションデータに対応するトランザクション実行失敗結果に対して記帳処理を行うことができる。
【0037】
図3を参照すると、図3は、本願の実施例に提供されるブロックチェーンに基づくデータ処理方法の一例のフローチャートである。ここで、該方法は、コンセンサスノード(例えば、上記の図1におけるコンセンサスノード)に実行されてもよく、サービスノード、コンセンサスノード(例えば、上記の図1に対応する実施例におけるコンセンサスノード)、及び端末機器(例えば、上記の図1に対応する実施例における端末機器)に共同で実行されても良い。以下では、本方法がコンセンサスノードに実行されることを例として説明する。ここで、該ブロックチェーンに基づくデータ処理方法は、少なくとも下記のステップS101~ステップS104を含むことができる。
【0038】
ステップS101において、コンセンサスノードは、トランザクションプールにおける同じグループ識別子を有する複数のトランザクションデータを、グループトランザクションデータとして決定する。
【0039】
例えば、グループ識別子は、トランザクションデータが属するトランザクショングループを識別するためのものであり、言い換えれば、同一のトランザクショングループに含まれるトランザクションデータは、同一のグループ識別子を有する。理解可能なこととして、グループ識別子は唯一性を有し、即ち、異なるトランザクショングループに対応するグループ識別子は異なり、異なるトランザクショングループに属するトランザクションデータに対応するグループ識別子は異なる。関連技術のブロックチェーンシステムにおいて、ブロックチェーンにおけるトランザクションの間は、相互に独立して隔離され、1つのトランザクションの実行に成功又は失敗したことは、他のトランザクションに影響を与えない。本願の実施例のトランザクショングループについて、ブロックチェーンにおける関連関係を有する複数のトランザクションを同一のトランザクショングループに追加し、トランザクショングループは、トランザクショングループにおけるトランザクションのすべてが実行に成功し、又はすべてが実行に失敗するという特性を有する。
【0040】
例えば、サービスノードは、トランザクションデータを生成した後に、トランザクションデータをトランザクションプールに追加し、次に、ブロックプロデューサ機能を有するコンセンサスノード(即ち、ブロックプロデューサノード)がトランザクションデータをトランザクションプールから取り出し、提案ブロックにパッキングすることを待つ。同一のトランザクショングループに追加されたトランザクションに対応するトランザクションデータは、グループ識別子を搬送し、コンセンサスノードは、トランザクションプールにおける同じグループ識別子を有する複数のトランザクションデータを、グループトランザクションデータとして決定する。
【0041】
いくつかの実施例において、コンセンサスノードがグループトランザクションデータを決定する過程は、下記のようであり得る。コンセンサスノードは、トランザクションプールからトランザクションデータを取得することができる。ここで、トランザクションデータは、グループ識別子とグループトランザクション数量を含む。グループトランザクション数量は、グループ識別子に対応するトランザクショングループに含まれるトランザクションの数量である。次に、コンセンサスノードは、トランザクションデータをグループ識別子に対応するグループキャッシュキューに追加し、更新グループキャッシュキューを得ることができる。更新グループキャッシュキューにおけるトランザクションデータの数量がグループトランザクション数量に等しい場合、更新グループキャッシュキューにおけるトランザクションデータを、グループトランザクションデータとして決定し、更新グループキャッシュキューにおけるトランザクションデータの数量がグループトランザクション数量より小さい場合、トランザクションプールからグループ識別子を含むトランザクションデータを引き続き取得する。
【0042】
ここで、グループキャッシュキューは、コンセンサスノードが既に取得したトランザクショングループにおけるトランザクションの一部に対応するトランザクションデータを一時記憶するためのものである。グループ識別子に対応するグループキャッシュキューは、コンセンサスノードがグループ識別子を搬送する1番目のトランザクションデータを取得した後に確立される。グループキャッシュキューにおけるトランザクションデータがいずれもブロックチェーンにパッキングされた場合、グループキャッシュキューにおけるトランザクションデータはクリアされ、該グループキャッシュキューが占めるリソースはリリースされ、即ち、コンセンサスノードは、該グループキャッシュキューを削除する。
【0043】
理解しやすいように、コンセンサスノードがトランザクションデータAを取得したと仮定すると、トランザクションデータAは、グループ識別子mとグループトランザクション数量を含み、ここで、グループトランザクション数量は3である。次に、コンセンサスノードは、トランザクションデータAをグループ識別子mに対応するグループキャッシュキューに追加し、更新キャッシュキューを得る。説明すべきこととして、コンセンサスノードがグループ識別子mに対応するグループキャッシュキューを照会しなかった場合、コンセンサスノードは、該グループ識別子mに対応するグループキャッシュキューを確立し、トランザクションデータAを該グループキャッシュキューに追加する。例えば、グループキャッシュキューのサイズは、グループトランザクション数量に基づいて動的に調整されることができ、多すぎるメモリリソースを占めることを避ける。次に、コンセンサスノードは、更新キャッシュキューにおけるトランザクションデータの数量を決定する。グループキャッシュキューが前に追加されたトランザクションデータBを含むと仮定すると、この時に、更新キャッシュキューにおけるトランザクションデータの数量が2であり、グループトランザクション数量より小さく、コンセンサスノードは、トランザクションプールから新しいトランザクションデータを引き続き取得し、新しいトランザクションデータに対応するグループ識別子を決定し、該新しいトランザクションデータをグループ識別子mに対応するグループキャッシュキューに追加し、次に、上記の過程を繰り返す。コンセンサスノードが取得した新しいトランザクションデータCに対応するグループ識別子がグループ識別子mであるまで、コンセンサスノードは、該トランザクションデータCを更新グループキャッシュキューに追加し、新しい更新グループキャッシュキューを得る。この時に、新しい更新グループキャッシュキューは、トランザクションデータA、トランザクションデータB、及びトランザクションデータCを含み、トランザクションデータの数量は、3であり、グループトランザクション数量に等しい。この場合、コンセンサスノードは、トランザクションデータA、トランザクションデータB、及びトランザクションデータCを、同一のトランザクショングループに対応するグループトランザクションデータとして決定する。
【0044】
いくつかの実施例において、更新グループキャッシュキューにおけるトランザクションデータの数量が目標グループトランザクション数量より小さい場合、トランザクションプールから目標グループ識別子を含むトランザクションデータを引き続き取得する過程は、下記のようであり得る。更新グループキャッシュキューにおけるトランザクションデータの数量がグループトランザクション数量より小さく、且つ、現在時間がキャッシュ時間帯にある場合、トランザクションプールからグループ識別子を含むトランザクションデータを引き続き取得する。更新グループキャッシュキューにおけるトランザクションデータの数量がグループトランザクション数量より小さく、且つ、現在時間がキャッシュ時間帯を超えた場合、更新グループキャッシュキューにおけるトランザクションデータをトランザクションプールに改めて入れ、更新グループキャッシュキューをクリアする。
【0045】
説明すべきこととして、異なるトランザクショングループのグループ識別子は、異なるグループキャッシュキューに対応する。コンセンサスノードが同一のトランザクショングループに属するすべてのトランザクションデータを長時間に取得しなかった場合、グループキャッシュキューはずーと、コンセンサスノードのメモリリソースを占め、大量のメモリリソースを浪費する。したがって、キャッシュ時間帯、即ち、1つのグループキャッシュキューが確立されたから存在可能な最も長い時間帯を設置することができる。グループキャッシュキューの存在時間長がキャッシュ時間帯を超えた場合、グループキャッシュキューにおけるトランザクションデータをトランザクションプールに改めて入れ、グループキャッシュキューをクリアし、グループキャッシュキューがコンセンサスノードのメモリリソースを占めることを避け、それによって、メモリリソースを節約する。
【0046】
ステップS102において、各グループトランザクションデータを提案ブロックにパッキングし、提案ブロックにおける各グループトランザクションデータを実行し、実行済みのトランザクション実行結果を得る。
【0047】
いくつかの実施例において、グループトランザクションデータは、実行順序識別子を含むことができ、実行順序識別子は、トランザクショングループにおけるトランザクションの実行順序である。各グループトランザクションデータを提案ブロックにパッキングする過程は、下記のようであり得る。各グループトランザクションデータに含まれる実行順序識別子に基づいて、各グループトランザクションデータに対してソート処理を実行し、ソート後の前記グループトランザクションデータを得、次に、ソート後のグループトランザクションデータを提案ブロックにパッキングする。その後に、コンセンサスノードは、グループトランザクションデータのパッキング順序に従って、提案ブロックにおける各グループトランザクションデータを順に実行し、実行済みのトランザクション実行結果を得る。
【0048】
説明すべきこととして、本願の実施例において、グループトランザクションデータのパッキング順序に従って提案ブロックにおける各グループトランザクションデータを実行することができる。無論、本願の実施例において、さらに、提案ブロックにおける各グループトランザクションデータをランダムに実行することができる。
【0049】
いくつかの実施例において、グループトランザクションデータの数量がSであり、Sが1より大きい正の整数であると仮定すると、提案ブロックにおける各グループトランザクションデータを実行し、実行済みのトランザクション実行結果を得る過程は、下記のようであり得る。提案ブロックにおけるk番目のグループトランザクションデータを取得し、k番目のグループトランザクションデータを実行し、k番目のグループトランザクションデータに対応するトランザクション実行結果を得る。ここで、kは順に増加する正の整数であり、且つ、kはSより小さい。k番目のグループトランザクションデータに対応するトランザクション実行結果がトランザクション実行成功結果である場合、提案ブロックにおける(k+1)番目のグループトランザクションデータを引き続き実行し、k番目のグループトランザクションデータに対応するトランザクション実行結果がトランザクション実行失敗結果である場合、提案ブロックにおける(k+1)番目のグループトランザクションデータからS番目のグループトランザクションデータまでのそれぞれに対応するトランザクション実行結果を、いずれもトランザクション実行失敗結果として決定する。各グループトランザクションデータのそれぞれに対応するトランザクション実行結果を実行済みのトランザクション実行結果とする。
【0050】
簡単に言えば、ブロックチェーンシステムの動作効率を向上させるために、コンセンサスノードが提案ブロックにおける各グループトランザクションデータを順に実行する過程において、1つのグループトランザクションデータのトランザクション実行結果がトランザクション実行失敗結果である場合、該グループトランザクションデータの後の他のグループトランザクションデータのトランザクション実行結果を、いずれもトランザクション実行失敗結果として直接的に決定し、それ以上計算する必要がなく、それによって、計算リソースを節約することができる。例えば、パッキング順序に従って、提案ブロックは、グループトランザクションデータa、グループトランザクションデータb、グループトランザクションデータc、及びグループトランザクションデータd、を含む。コンセンサスノードは、提案ブロックを実行する場合、まず、グループトランザクションデータaを実行する。グループトランザクションデータaに対応するトランザクション実行結果がトランザクション実行成功結果であると仮定すると、グループトランザクションデータbを引き続き実行する。グループトランザクションデータbに対応するトランザクション実行結果がトランザクション実行失敗結果であると仮定すると、コンセンサスノードは、グループトランザクションデータcとグループトランザクションデータdを実行する必要がなく、グループトランザクションデータcとグループトランザクションデータdのそれぞれに対応するトランザクション実行結果をトランザクション実行失敗結果として直接的に決定することができる。この時に、実行済みのトランザクション実行結果は、グループトランザクションデータaに対応するトランザクション実行成功結果、グループトランザクションデータbに対応するトランザクション実行失敗結果、グループトランザクションデータcに対応するトランザクション実行失敗結果、及びグループトランザクションデータdに対応するトランザクション実行失敗結果である。
【0051】
いくつかの実施例において、k番目のグループトランザクションデータを実行する過程は、下記のようであり得る。グループトランザクションデータを実行するスマート契約におけるトランザクション実行関数を呼び出し、トランザクション実行関数に基づいてk番目のグループトランザクションデータに対する履歴トランザクションデータを取得し、履歴トランザクションデータを読み取りデータとして決定する。次に、読み取りデータ及びグループトランザクションデータに基づいてトランザクション実行関数を実行し、グループトランザクションデータのトランザクション実行結果を得る。例えば、k番目のトランザクションに対応するグループトランザクションデータは、甲が自分のアカウントによって乙に10元を振り返ることであり、k番目のグループトランザクションデータに対応するトランザクション実行関数kは、転移実行関数であり、k番目のグループトランザクションデータに対応する履歴トランザクションデータkは、甲のアカウントの残高が20元であることである。k番目のグループトランザクションデータに対するトランザクション実行結果kは、20-10=10元であり得、即ち、トランザクションkを実行した後に、甲のアカウントの残高は10元である。
【0052】
ステップS103において、実行済みのトランザクション実行結果にトランザクション実行失敗結果が含まれる場合、各グループトランザクションデータに対応するトランザクション実行結果をいずれもトランザクション実行失敗結果に更新し、各グループトランザクションデータに対応するトランザクション実行失敗結果に基づいて提案ブロックを更新し、目標提案ブロックを得る。
【0053】
例えば、同一のトランザクショングループに属するトランザクションには、同時に成功又は失敗するべきである。したがって、実行済みのトランザクション実行結果がトランザクション実行失敗結果を含まない場合だけに、コンセンサスノードは、実行済みのトランザクション実行結果に基づいて提案ブロックを更新する。実行済みのトランザクション実行結果が1つ又は複数のトランザクション実行失敗結果を含む場合、コンセンサスノードは、各グループトランザクションデータに対応するトランザクション実行結果をトランザクション実行失敗結果に更新し、次に、各グループトランザクションデータに対応するトランザクション実行失敗結果に基づいて提案ブロックを更新し、目標提案ブロックを得る。例えば、上記のステップS102において得られた実行済みのトランザクション実行結果は、グループトランザクションデータaに対応するトランザクション実行成功結果、グループトランザクションデータbに対応するトランザクション実行失敗結果、グループトランザクションデータcに対応するトランザクション実行失敗結果、及びグループトランザクションデータdに対応するトランザクション実行失敗結果である。この時に、コンセンサスノードは、グループトランザクションデータaに対応するトランザクション実行成功結果を、トランザクション実行失敗結果に更新する。この時に、各グループトランザクションデータに対応するトランザクション実行結果は、いずれもトランザクション実行失敗結果である。
【0054】
いくつかの実施例において、各グループトランザクションデータに対応するトランザクション実行失敗結果に基づいて提案ブロックを更新し、目標提案ブロックを得るステップは、各グループトランザクションデータに対応するトランザクション実行失敗結果に基づいて結果メルケルツリーを生成するステップであって、結果メルケルツリーは、ツリールートハッシュ値を含む、ステップと、ツリールートハッシュ値を提案ブロックのブロックヘッダに追加し、目標提案ブロックを得るステップと、を含む。
【0055】
説明すべきこととして、結果メルケルツリーは、メルケルツリー(ハッシュツリーとも呼ばれる)の一種であり、メルケルツリーは、データ構造の一種、即ち、バイナリーツリーである。メルケルツリーは、ルート、ブランチ(中間の非リーフノード)、及びリーフノードによって構成される。すべてのノードに記憶されたのは、関連データのハッシュ値であり(関連データそのものではなく)、例えば、ルートノードに記憶されたのは、ツリールートハッシュ値であり、ツリールート自身のデータではない。
【0056】
ステップS104において、目標提案ブロックがコンセンサスにより可決された場合、目標提案ブロック及び各グループトランザクションデータに対応するトランザクション実行失敗結果に対して記帳処理を行う。
【0057】
例えば、記帳処理は、目標提案ブロックにおけるグループトランザクションデータ及び各グループトランザクションデータに対応するトランザクション実行失敗結果を、ブロックチェーン帳簿に追加して記憶を行うことである。
【0058】
いくつかの実施例において、コンセンサスノードは、提案ブロックをコンセンサスネットワークにおける通信可能なコンセンサスノードにブロードキャストすることができ、通信可能なコンセンサスノードは、提案ブロックにおける各グループトランザクションデータを実行し、各グループトランザクションデータに対応するトランザクション実行結果に基づいて提案ブロックを更新し、通信可能な目標提案ブロックを得るためのものである。コンセンサスノードは、通信可能なコンセンサスノードから送信された通信可能な目標提案ブロックのブロックハッシュ値を受信し、同時に、目標提案ブロックのブロックハッシュ値をコンセンサスネットワークにおける通信可能なコンセンサスノードにブロードキャストすることができる。コンセンサスノードは、通信可能な目標提案ブロックのブロックハッシュ値をマッチング対象ブロックハッシュ値として決定し、次に、マッチング対象ブロックハッシュ値と目標提案ブロックのブロックハッシュ値を比較する。目標提案ブロックのブロックハッシュ値と同じマッチング対象ブロックハッシュ値の数量がコンセンサス数量閾値より大きい場合、目標提案ブロックがコンセンサスにより可決されたことを決定する。
【0059】
本願の実施例に提供される方法において、トランザクションプールにおける同じグループ識別子を有する複数のトランザクションデータを、グループトランザクションデータとして決定し、次に、各グループトランザクションデータを提案ブロックにパッキングし、提案ブロックにおける各グループトランザクションデータを実行し、実行済みのトランザクション実行結果を得ることができる。実行済みのトランザクション実行結果にトランザクション実行失敗結果が含まれる場合、各グループトランザクションデータに対応するトランザクション実行結果をいずれもトランザクション実行失敗結果に更新し、各グループトランザクションデータに対応するトランザクション実行失敗結果に基づいて提案ブロックを更新し、目標提案ブロックを得る。目標提案ブロックがコンセンサスにより可決された場合、目標提案ブロック及び各グループトランザクションデータに対応するトランザクション実行失敗結果に対して記帳処理を行う。同一のグループ識別子を有するトランザクションデータをグループトランザクションデータとすることによって、各グループトランザクションデータのトランザクション実行結果をバインドし、それによって、複数者間協力トランザクションに生成された複数のトランザクションがすべて実行に成功する又はすべて実行に失敗することを保証する。このようにして、複数者間協力トランザクションで生成されたグループトランザクションデータの一部が実行に失敗した後に、グループトランザクションデータにおけるトランザクションに成功した一部をブロックチェーンに書き込むことを避けることができる。したがって、すべてのグループトランザクションデータが実行に成功した場合だけに、ブロックチェーンに基づく複数者間協力トランザクションに成功することを保証し、それによって、ブロックチェーンのトランザクションデータの正確性を向上させる。
【0060】
図4を参照すると、図4は、本願の実施例に提供されるブロックチェーンに基づくデータ処理方法の一例のフローチャートである。ここで、該方法は、サービスノード(例えば、上記の図1に対応する実施例におけるサービスノード)に実行されてもよく、サービスノード、コンセンサスノード(例えば、上記の図1に対応する実施例におけるコンセンサスノード)、及び端末機器(例えば、上記の図1に対応する実施例における端末機器)に共同で実行されても良い。以下では、本方法がサービスノードに実行されることを例として説明する。ここで、該ブロックチェーンに基づくデータ処理方法は、少なくとも下記のステップS201~ステップS203を含むことができる。
【0061】
ステップS201において、サービスノードは、端末機器から送信された、複数者間協力トランザクションに対するトランザクション要求を受信する。
【0062】
いくつかの実施例において、複数者間協力トランザクションは、複数の参加者が共同で参加して遂行したトランザクションであり、複数者間協力トランザクションは、複数のトランザクション要求を生成する。これらのトランザクション要求は、同一の端末機器によって開始されてもよく、異なる端末機器によって開始されても良い。説明すべきこととして、複数者間協力トランザクションが生成したトランザクション要求は、異なるサービスノードに送信されることもできる。理解しやすいように、後続のステップにおいて、トランザクション要求が同一のサービスノードに送信されることだけを例として説明する。
【0063】
ステップS202において、トランザクション要求に基づいて複数者間協力トランザクションに対応するグループ識別子を決定する。
【0064】
いくつかの実施例において、前記トランザクション要求の数量が複数であり、各前記トランザクション要求がいずれも実行順序識別子を含む場合、トランザクション要求に基づいて複数者間協力トランザクションに対応するグループ識別子を決定する過程は、下記のようであり得る。実行順序識別子に示された順序優先度が最高優先度であるトランザクション要求を取得した場合、順序優先度が最高優先度であるトランザクション要求を、グループ識別子要求として決定し、次に、グループ識別子要求に対してハッシュ処理を行い、要求ハッシュ値を得、要求ハッシュ値を複数者間協力トランザクションに対応するグループ識別子として決定する。
【0065】
例えば、実行順序識別子は、トランザクション要求が実行されるときの順序を示すためのものであり、最高優先度のトランザクション要求は、実行順序識別子に示された最初に実行されるトランザクション要求である。
【0066】
いくつかの実施例において、トランザクション要求が複数者間協力トランザクションを開始した協力トランザクション開始オブジェクトを含む場合、トランザクション要求に基づいて複数者間協力トランザクションに対応するグループ識別子を決定する過程はさらに、下記のようであり得る。トランザクション要求から協力トランザクション開始オブジェクトを取得し、身分識別子ライブラリに協力トランザクション開始オブジェクトに対応する身分識別子を検索し、身分識別子に基づいて複数者間協力トランザクションに対応するグループ識別子を生成する。
【0067】
ここで、協力トランザクション開始オブジェクトは、複数者間協力トランザクションの開始対象、例えば、二人トランザクションで契約にサインするときの甲であり得る。ここで、身分識別子ライブラリは、各トランザクションオブジェクト(即ち、複数者間協力トランザクションの開始対象)の身分識別子を記憶するためのものであり、トランザクションオブジェクトの身分識別子は、トランザクションオブジェクトがトランザクション要求を開始する前に、サービスノードに身分識別子取得要求を開始した後に、サービスノードから配布された身分識別子であり得る。ここで、トランザクションオブジェクトは、トランザクション要求を開始することができる対象であり、任意のトランザクションオブジェクトは、協力トランザクション開始オブジェクトとして、複数者間協力トランザクションに参加するように他のトランザクションオブジェクトを誘うことができる。身分識別子は唯一性を有し、即ち、1つのトランザクションオブジェクトは、1つの身分識別子に対応し、異なるトランザクションオブジェクトに対応する身分識別子は異なる。ここで、身分識別子に基づいて複数者間協力トランザクションに対応するグループ識別子を生成する過程は、下記のようであり得る。サービスノードは、現在タイムスタンプを取得し、身分識別子の後に現在タイムスタンプを追加し、1つの唯一の識別子を得、該識別子を複数者間協力トランザクションに対応するグループ識別子とすることができる。
【0068】
いくつかの実施例において、端末機器は、複数者間協力トランザクションに対するトランザクション要求を開始する前に、まず、該複数者間協力トランザクションに1つの対応するグループ識別子を申請することができる。端末機器は、複数者間協力トランザクションに対するトランザクション要求を開始するときに、該申請されたグループ識別子を直接的に搬送することができる。グループ識別子を申請する具体的な実現過程は、下記のようであり得る。サービスノードは、協力トランザクション開始オブジェクトが開始した、複数者間協力トランザクションに対する識別子取得要求を取得し、識別子取得要求は、複数者間協力トランザクションに参加するトランザクションオブジェクトを含む。次に、サービスノードは、識別子取得要求に基づいて複数者間協力トランザクションに対する使用可能なグループ識別子を生成し、使用可能なグループ識別子をトランザクションオブジェクトに対応する端末機器に送信することができ、それによって、トランザクションオブジェクトに対応する端末機器は、使用可能なグループ識別子が含まれるトランザクション要求を生成する。この時に、トランザクション要求に基づいて複数者間協力トランザクションに対応するグループ識別子を決定する過程は、下記のようであり得る。トランザクション要求における使用可能なグループ識別子を、複数者間協力トランザクションに対応するグループ識別子として決定する。
【0069】
例えば、端末機器はさらに、サービスノードにグループ識別子申請要求(即ち、識別子取得要求)を直接的に送信し、次に、サービスノードから送信された二次元バーコード画像を受信し、該二次元バーコード画像をスキャンすることによって、グループ識別子を得、次に、該グループ識別子に基づいて使用可能なグループ識別子が含まれるトランザクション要求を生成することができる。
【0070】
例えば、複数者間協力トランザクションに対応するグループ識別子を決定する前に、まず、トランザクション要求の正当性を検証することができる。通常、トランザクション要求は署名データを搬送し、署名データは、端末機器が秘密鍵でトランザクション要求に対して署名処理を行った後に得られる。サービスノードは、端末機器に対応する公開鍵を取得し、公開鍵によって署名データに対して署名検証処理を行い、署名検証結果を得る。署名検証結果が署名検証成功結果である場合、該トランザクション要求が正当であることを決定し、複数者間協力トランザクションに対応するグループ識別子を引き続き決定する。
【0071】
ステップS203において、複数者間協力トランザクションに対応するグループ識別子とトランザクション要求に基づいてグループ識別子を有するトランザクションデータを生成し、トランザクションデータをトランザクションプールに追加する。
【0072】
いくつかの実施例において、トランザクションプールにおける同じグループ識別子を有する複数のトランザクションデータは、コンセンサスノードによりグループトランザクションデータとして決定される。コンセンサスノードは、各グループトランザクションデータを提案ブロックにパッキングし、提案ブロックにおける各グループトランザクションデータを順に実行し、実行済みのトランザクション実行結果を得る。実行済みのトランザクション実行結果にトランザクション実行失敗結果が含まれる場合、コンセンサスノードは、各グループトランザクションデータに対応するトランザクション実行結果をいずれもトランザクション実行失敗結果に更新する。
【0073】
本願の実施例に提供される方法を適用して、複数者間協力トランザクションの唯一のグループ識別子を生成することができる。該複数者間協力トランザクション過程において生成されたトランザクション要求に基づいて生成されたトランザクションデータは、いずれも該グループ識別子を搬送し、トランザクションプールに入れられる。トランザクションプールにおける同じグループ識別子を有する複数のトランザクションデータは、コンセンサスノードによりグループトランザクションデータとして決定される。各グループトランザクションデータのトランザクション実行結果の間は、関連関係を有し、1つのグループトランザクションデータのトランザクション実行結果がトランザクション実行失敗結果である場合、他のグループトランザクションデータのトランザクション実行結果は、トランザクション実行失敗結果に更新され、それによって、複数者間協力トランザクションに生成された複数のトランザクションがすべて実行に成功する又はすべて実行に失敗することを保証する。このようにして、複数者間協力トランザクションで生成されたグループトランザクションデータの一部が実行に失敗した後に、グループトランザクションデータにおけるトランザクションに成功した一部をブロックチェーンに書き込むことを避けることができる。したがって、すべてのグループトランザクションデータが実行に成功した場合だけに、ブロックチェーンに基づく複数者間協力トランザクションに成功することを保証し、それによって、ブロックチェーンのトランザクションデータの正確性を向上させる。
【0074】
上記の過程について、図5を参照しても良い。図5は、本願の実施例に提供されるグループトランザクションデータ実行方法の一例のフローチャートである。該方法は、ブロックチェーンネットワークにおける任意のノード(上記の図1に示すサービスノードであり得、上記の図1に示すコンセンサスノードでもあり得る)に実行されることができる。
【0075】
図5に示すように、該グループトランザクションデータ実行方法は、下記のステップS1~ステップS5を含むことができる。
【0076】
ステップS1において、各ノードにおけるリモート過程呼び出し(RPC:Remote Procedure Call)層は、トランザクション要求を取得する。
【0077】
いくつかの実施例において、トランザクション要求は、グループ識別子を搬送することができ、複数者間協力トランザクションの基本情報を搬送することもでき、それによって、ノードが該トランザクション要求にグループ識別子を取得することに便利である。
【0078】
ステップS2において、各ノードは、相互にトランザクションをブロードキャストし、且つ、そのうちのある1つのノードは、ブロックプロデューサノードとして複数のトランザクションを1つのブロックようにパッキングし、他のノードにブロードキャストする。
【0079】
ここで、ブロックプロデューサノードの選択は、コンセンサスアルゴリズムによって異なり、リーダー(leader)ブロックプロデューサ、順番ブロックプロデューサ、及び計算力競合ブロックプロデューサなど、を含むことができる。
【0080】
いくつかの実施例において、RPC層によってトランザクション要求を取得したノードは、グループ識別子を有するトランザクションデータ(即ち、トランザクションのデータ)を生成し、相互にブロードキャストし、それをトランザクションプールに追加する。ブロックプロデューサノードが複数のトランザクションを1つのブロックようにパッキングするときに、同じグループ識別子を有するトランザクションデータを同一のグループのグループトランザクションデータとする。
【0081】
ステップS3において、各ノードがブロックを受信した後に、ブロックにおけるトランザクションを実行し始めてロジック計算を行う。ロジック計算層で、トランザクションパラメータを解析し、契約を実行する。
【0082】
実行過程において、記憶空間におけるデータ(即ち、読み取りデータ)を読み取る必要がある可能性がある。図5に示す例のように、ノード1は、記憶空間から履歴トランザクションデータを読み取る。
【0083】
いくつかの実施例において、各ノードは、ブロックにおけるトランザクションを実行するときに、同一のグループのグループトランザクションデータを全体として、該グループにおける各グループトランザクションデータを順に実行し、実行済みのトランザクション実行結果を得る。実行済みのトランザクション実行結果にトランザクション実行失敗結果が含まれる場合、該グループにおける各グループトランザクションデータに対応するトランザクション実行結果をいずれもトランザクション実行失敗結果に更新し、それによって、該グループにおけるグループトランザクションデータがすべて実行に成功したか、それともすべて実行に失敗したことを保証する。
【0084】
ステップS4において、契約の実行が遂行された後に、各ノードは、実行結果(即ち、上記の各グループトランザクションデータに対応するトランザクション実行結果)に対して相互検査を行う。検査方法として、実行結果又は記憶に対する変更を結果merkleツリーに構成し、結果ツリールート(即ち、結果ルートハッシュ)をブロックヘッダに入れ、最終的に、各ノードブロックhashが一致すると検査して良い。
【0085】
ステップS5において、コンセンサスに成功した後に、各ノードは、本ブロックの関連データを記憶空間に書き込む。
【0086】
ここで、関連データは、ブロックヘッダ、ブロックに含まれるすべてのトランザクション、及び契約実行結果などを含む。
【0087】
上記のステップS1~ステップS5の詳細な過程について、図3に対応する実施例と図4に対応する実施例を参照して良く、ここで繰り返して記述しない。
【0088】
図6を参照すると、図6は、本願の実施例に提供されるトランザクショングループの実現場面の一例の概略図である。複数者間協力トランザクションに参加するのが参加者A、参加者B、及び参加者Cであると仮定すると、参加者Aはトランザクションaを生成し、参加者Bはトランザクションbを生成し、参加者Cはトランザクションcを生成する。本願の実施例に提供される方法において、この3つのトランザクションを同一のトランザクショングループに追加することができる。ブロックチェーンシステムは、トランザクションとコンセンサスを実行するときに、トランザクショングループを最小実行単位とする。1つのトランザクショングループにおけるすべてのトランザクションには、同時に成功し、それによって、参加者A、参加者B、及び参加者Cの三方がそれぞれの振り替えを受け取ったことを保証するか、それとも同時に失敗し、お金は元の所有者に返され、当事者はいずれも損失を被ることない。
【0089】
図6に示すように、トランザクションに対応するトランザクション要求にグループ番号フィールドを追加することができる。例えば、トランザクションaに対応するトランザクション要求61におけるグループ番号フィールドは、「グループ識別子:5、実行順序識別子:1、グループトランザクション数量:3」であり、該トランザクション要求61が属するトランザクショングループのグループ識別子が5であり、該トランザクショングループに3つのトランザクションが含まれ、トランザクション要求61に対応するトランザクションaが該トランザクショングループにおける1番目のトランザクションであることを表す。同様に、トランザクションbに対応するトランザクション要求62におけるグループ番号フィールドは、「グループ識別子:5、実行順序識別子:2、グループトランザクション数量:3」であり、該トランザクション要求62が属するトランザクショングループのグループ識別子が5であり、該トランザクショングループに3つのトランザクションが含まれ、トランザクション要求62に対応するトランザクションbが該トランザクショングループにおける2番目のトランザクションであることを表す。トランザクションcに対応するトランザクション要求63におけるグループ番号フィールドは、「グループ識別子:5、実行順序識別子:3、グループトランザクション数量:3」であり、該トランザクション要求63が属するトランザクショングループのグループ識別子が5であり、該トランザクショングループに3つのトランザクションが含まれ、トランザクション要求63に対応するトランザクションcが該トランザクショングループにおける3番目のトランザクションであることを表す。ここで、実行順序識別子は、3つの参加者によって事前に共同で決定されてもよく、トランザクション要求の開始時間に基づいて决定されてもよく、これについて限定しない。参加者A、参加者B、及び参加者Cは、複数の方法によって今回の複数者間協力トランザクションに対するグループ識別子を取得することができ、例えば、上記の図4に対応する実施例におけるステップS202に説明されるグループ識別子を取得する方法である。
【0090】
図6に示すように、各参加者は、グループ識別子を取得した後に、それぞれのトランザクション要求を出し、自分の秘密鍵で署名し、署名データを得、トランザクション要求と署名データを一緒にブロックチェーンシステムに送信する。ブロックチェーンシステムは、署名データによって、受信したトランザクション要求に対して検証を行った後に、相応的なトランザクションデータを生成し、同じグループ識別子を有するトランザクションデータをグループトランザクションデータとして同一の提案ブロックにパッキングする。理解可能なこととして、1つのトランザクショングループにおけるトランザクションデータを収集完了しなかった場合、ブロックチェーンシステムは、一定の時間を待つ。次に、ブロックチェーンシステムは、提案ブロックを実行し、トランザクショングループを単位としてトランザクションを実行する。トランザクショングループにおける任意のトランザクションが実行に失敗した場合、該トランザクショングループに失敗したと認められることができ、各トランザクションに対応するグループトランザクションデータのトランザクション実行結果は、いずれもトランザクション失敗結果に更新される。最後に、ブロックチェーンシステムは、実行後の提案ブロックに対してコンセンサスと記憶を行う。説明すべきこととして、グループ識別子の取得は、ブロックチェーンシステムによって遂行されることもでき、即ち、複数者間協力トランザクションの参加者は、グループ識別子を取得する必要がなく、トランザクション要求をブロックチェーンシステムに送信するだけで良く、ブロックチェーンシステムは、参加者にグループ識別子を配布する。
【0091】
トランザクショングループの実現過程をよりうまく理解するために、図7を参照すると、図7は、本願の実施例に提供されるトランザクショングループの実現の一例のフローチャートである。図7に示すように、端末機器71と端末機器72に生成されたトランザクションに対応するトランザクションデータは、いずれもトランザクションプールに入れられ、ブロックプロデューサノードとされるコンセンサスノード73に提案ブロックにパッキングされることを待つ。コンセンサスノード73は、コンセンサスアルゴリズムに従ってブロックプロデューサを行い、その期間に、該グループ識別子に対応するトランザクショングループにおけるすべてのトランザクションに対応するトランザクションデータを取得したまで、同一のグループ識別子を有するトランザクションデータをグループキャッシュキューに入れてキャッシュを行い、完全なグループにおけるすべてのトランザクションデータをグループトランザクションデータとして提案ブロックにパッキングし、次に、コンセンサスノード73は、該提案ブロックをブロックチェーンシステムにおける他のコンセンサスノードにブロードキャストする。コンセンサスノード73は、提案ブロックにおける各トランザクショングループに対応するグループトランザクションデータを実行し、具体的な実行過程について、上記の図3に対応する実施例の説明を参照して良く、ここで繰り返して記述しない。コンセンサスノード73は、提案ブロックの実行を遂行し、他のコンセンサスノードと該提案ブロックに対するコンセンサスを達成した後に、結果を端末機器71と端末機器72に通知する。
【0092】
図8を参照すると、図8は、本願の実施例に提供されるブロックチェーンに基づくデータ処理装置の一例の構造概略図である。該データ処理装置は、コンピュータ機器に実行されるコンピュータプログラム(プログラムコードが含まれる)であり得、例えば、該データ処理装置は、アプリケーションソフトウェアである。該装置は、本願の実施例に提供されるデータ処理方法における相応的なステップを実行するためのものであり得る。図8に示すように、該データ処理装置1は、グループ決定モジュール11、パッキングモジュール12、ブロック実行モジュール13、結果更新モジュール14、ブロック更新モジュール15、及び記帳モジュール16、を含むことができる。
【0093】
グループ決定モジュール11は、トランザクションプールにおける同じグループ識別子を有する複数のトランザクションデータを、グループトランザクションデータとして決定するように構成される。
【0094】
パッキングモジュール12は、各前記グループトランザクションデータを提案ブロックにパッキングするように構成される。
【0095】
ブロック実行モジュール13は、各前記グループトランザクションデータを提案ブロックにパッキングし、前記提案ブロックにおける各前記グループトランザクションデータを実行し、実行済みのトランザクション実行結果を得るように構成される。
【0096】
結果更新モジュール14は、前記実行済みのトランザクション実行結果にトランザクション実行失敗結果が含まれる場合、各前記グループトランザクションデータに対応するトランザクション実行結果をいずれもトランザクション実行失敗結果に更新するように構成される。
【0097】
ブロック更新モジュール15は、各前記グループトランザクションデータに対応するトランザクション実行失敗結果に基づいて前記提案ブロックを更新し、目標提案ブロックを得るように構成される。
【0098】
記帳モジュール16は、前記目標提案ブロックがコンセンサスにより可決された場合、前記目標提案ブロック及び各前記グループトランザクションデータに対応するトランザクション実行失敗結果に対して記帳処理を行うように構成される。
【0099】
ここで、グループ決定モジュール11、パッキングモジュール12、ブロック実行モジュール13、結果更新モジュール14、ブロック更新モジュール15、及び記帳モジュール16の具体的な実現方式について、上記の図3に対応する実施例におけるステップS101~ステップS104の説明を参照して良く、ここで繰り返して記述しない。
【0100】
図8を参照すると、グループ決定モジュール11は、取得ユニット111、データ追加ユニット112、第1決定ユニット113、及び第2決定ユニット114、を含むことができる。
【0101】
取得ユニット111は、コンセンサスノードがトランザクションプールから前記トランザクションデータを取得するように構成され、前記トランザクションデータは、グループ識別子とグループトランザクション数量を含む。データ追加ユニット112は、前記トランザクションデータを前記グループ識別子に対応するグループキャッシュキューに追加し、更新グループキャッシュキューを得るように構成される。第1決定ユニット113は、前記更新グループキャッシュキューにおけるトランザクションデータの数量が前記グループトランザクション数量に等しい場合、前記更新グループキャッシュキューにおけるトランザクションデータを、グループトランザクションデータとして決定するように構成される。第2決定ユニット114は、前記更新グループキャッシュキューにおけるトランザクションデータの数量が前記グループトランザクション数量より小さい場合、前記トランザクションプールから前記グループ識別子を含むトランザクションデータを引き続き取得するように構成される。
【0102】
ここで、取得ユニット111、データ追加ユニット112、第1決定ユニット113、及び第2決定ユニット114の具体的な実現方式について、上記の図3に対応する実施例におけるステップS101の説明を参照して良く、ここで繰り返して記述しない。
【0103】
図8を参照すると、第2決定ユニット114は、第1判断サブユニット1141及び第2判断サブユニット1142を含むことができる。
【0104】
第1判断サブユニット1141は、前記更新グループキャッシュキューにおけるトランザクションデータの数量が前記グループトランザクション数量より小さく、且つ、現在時間がキャッシュ時間帯にある場合、前記トランザクションプールから前記グループ識別子を含むトランザクションデータを引き続き取得するように構成される。第2判断サブユニット1142は、前記更新グループキャッシュキューにおけるトランザクションデータの数量が前記グループトランザクション数量より小さく、且つ、現在時間が前記キャッシュ時間帯を超えた場合、前記更新グループキャッシュキューにおけるトランザクションデータを前記トランザクションプールに改めて入れ、前記更新グループキャッシュキューをクリアするように構成される。
【0105】
ここで、第1判断サブユニット1141及び第2判断サブユニット1142の具体的な実現方式について、上記の図3に対応する実施例におけるステップS101の説明を参照して良く、ここで繰り返して記述しない。
【0106】
ここで、各グループトランザクションデータは、いずれも実行順序識別子を含む。図8を参照すると、パッキングモジュール12は、ソートユニット121及びパッキングユニット122を含むことができる。
【0107】
ソートユニット121は、各前記グループトランザクションデータに含まれる実行順序識別子に基づいて、各前記グループトランザクションデータに対してソート処理を実行し、ソート後の前記グループトランザクションデータを得るように構成される。パッキングユニット122は、ソート後の前記グループトランザクションデータを提案ブロックにパッキングするように構成される。
【0108】
ここで、ソートユニット121及びパッキングユニット122の具体的な実現方式について、上記の図3に対応する実施例におけるステップS102の説明を参照して良く、ここで繰り返して記述しない。
【0109】
ここで、前記グループトランザクションデータの数量はSであり、Sは1より大きい正の整数である。図8を参照すると、ブロック実行モジュール13は、トランザクション実行ユニット131、第1結果決定ユニット132、及び第2結果決定ユニット133、を含むことができる。
【0110】
トランザクション実行ユニット131は、前記提案ブロックにおけるk番目のグループトランザクションデータを取得し、前記k番目のグループトランザクションデータを実行し、前記k番目のグループトランザクションデータに対応するトランザクション実行結果を得るように構成され、kは順に増加する正の整数であり、且つ、kはSより小さい。第1結果決定ユニット132は、前記k番目のグループトランザクションデータに対応するトランザクション実行結果がトランザクション実行成功結果である場合、前記提案ブロックにおける(k+1)番目のグループトランザクションデータを引き続き実行するように構成される。第2結果決定ユニット133は、前記k番目のグループトランザクションデータに対応するトランザクション実行結果がトランザクション実行失敗結果である場合、前記提案ブロックにおける(k+1)番目のグループトランザクションデータからS番目のグループトランザクションデータまでのそれぞれに対応するトランザクション実行結果を、いずれもトランザクション実行失敗結果として決定するように構成される。
【0111】
ここで、トランザクション実行ユニット131、第1結果決定ユニット132、及び第2結果決定ユニット133の具体的な実現方式について、上記の図3に対応する実施例におけるステップS102の説明を参照して良く、ここで繰り返して記述しない。
【0112】
図8を参照すると、ブロック更新モジュール15は、ツリー生成ユニット151及びツリー追加ユニット152を含むことができる。
【0113】
ツリー生成ユニット151は、各前記グループトランザクションデータに対応するトランザクション実行失敗結果に基づいて結果メルケルツリーを生成するように構成され、前記結果メルケルツリーは、ツリールートハッシュ値を含む。ツリー追加ユニット152は、前記ツリールートハッシュ値を前記提案ブロックのブロックヘッダに追加し、目標提案ブロックを得るように構成される。
【0114】
ここで、ツリー生成ユニット151及びツリー追加ユニット152の具体的な実現方式について、上記の図3に対応する実施例におけるステップS103の説明を参照して良く、ここで繰り返して記述しない。
【0115】
図8を参照すると、データ処理装置1はさらに、ブロードキャストモジュール17、ハッシュ値処理モジュール18、及びコンセンサスモジュール19、を含むことができる。
【0116】
ブロードキャストモジュール17は、前記提案ブロックをコンセンサスネットワークにおける通信可能なコンセンサスノードにブロードキャストするように構成され、前記通信可能なコンセンサスノードは、前記提案ブロックにおける各前記グループトランザクションデータを実行し、各前記グループトランザクションデータに対応するトランザクション実行結果に基づいて前記提案ブロックを更新し、通信可能な目標提案ブロックを得るためのものである。ハッシュ値処理モジュール18は、前記通信可能なコンセンサスノードから送信された前記通信可能な目標提案ブロックのブロックハッシュ値を受信し、前記通信可能な目標提案ブロックのブロックハッシュ値をマッチング対象ブロックハッシュ値として決定するように構成される。コンセンサスモジュール19は、前記目標提案ブロックのブロックハッシュ値と同じマッチング対象ブロックハッシュ値の数量がコンセンサス数量閾値より大きい場合、前記目標提案ブロックがコンセンサスにより可決されたことを決定するように構成される。
【0117】
ここで、ブロードキャストモジュール17、ハッシュ値処理モジュール18、及びコンセンサスモジュール19の具体的な実現方式について、上記の図3に対応する実施例におけるステップS104の説明を参照して良く、ここで繰り返して記述しない。
【0118】
図9を参照すると、図9は、本願の実施例に提供されるコンピュータ機器の一例の構造概略図である。図9に示すように、上記の図8に対応する実施例におけるデータ処理装置1は、上記のコンピュータ機器1000に適用されることができる。上記のコンピュータ機器1000は、プロセッサ1001、ネットワークインターフェース1004、及びメモリ1005、を含むことができ、それ以外、上記のコンピュータ機器1000はさらに、ユーザインターフェース1003及び少なくとも1つの通信バス1002を含む。ここで、通信バス1002は、これらのコンポーネントの間の接続通信を実現するためのものである。ここで、ユーザインターフェース1003は、ディスプレイ(Display)とキーボード(Keyboard)を含むことができ、選択的に、ユーザインターフェース1003はさらに、標準的な有線インターフェースと無線インターフェースを含むことができる。ネットワークインターフェース1004は、標準的な有線インターフェースと無線インターフェース(例えば、WI-FIインターフェース)を含むことができる。メモリ1005は、高速RAMメモリであり得、不揮発性メモリ(Non-Volatile Memory)、例えば、少なくとも1つのディスクメモリでもあり得る。メモリ1005はさらに、上記のプロセッサ1001から離れる少なくとも1つの記憶装置であり得る。図9に示すように、コンピュータ可読記憶媒体の一種として、メモリ1005は、オペレーティングシステム、ネットワーク通信モジュール、ユーザインターフェースモジュール、及び機器制御アプリケーションプログラム、を含むことができる。
【0119】
図9に示すコンピュータ機器1000において、ネットワークインターフェース1004は、ネットワーク通信機能を提供することができる。ユーザインターフェース1003は主に、ユーザに入力インターフェースを提供するためのものである。プロセッサ1001は、下記のステップを実現するために、メモリ1005に記憶された機器制御アプリケーションプログラムを呼び出すためのものである。
【0120】
トランザクションプールにおける同じグループ識別子を有する複数のトランザクションデータを、グループトランザクションデータとして決定し、各前記グループトランザクションデータを提案ブロックにパッキングし、前記提案ブロックにおける各前記グループトランザクションデータを実行し、実行済みのトランザクション実行結果を取得し、前記実行済みのトランザクション実行結果にトランザクション実行失敗結果が含まれる場合、各前記グループトランザクションデータに対応するトランザクション実行結果をいずれもトランザクション実行失敗結果に更新し、各前記グループトランザクションデータに対応するトランザクション実行失敗結果に基づいて前記提案ブロックを更新し、目標提案ブロックを取得し、前記目標提案ブロックがコンセンサスにより可決された場合、前記目標提案ブロック及び各前記グループトランザクションデータに対応するトランザクション実行失敗結果に対して記帳処理を行う。
【0121】
理解可能なこととして、本願の実施例に説明されたコンピュータ機器1000は、前述の各実施例における該データ処理方法に対する説明を実行することができ、前述の図8に対応する実施例における該データ処理装置1に対する説明をすることができ、ここで繰り返して記述しない。さらに、同じ方法を採用する有益効果の説明を繰り返して記述しない。
【0122】
さらに、ここで説明すべきこととして、本願の実施例はさらに、コンピュータ可読記憶媒体を提供し、上記のコンピュータ可読記憶媒体は、前述のデータ処理装置1に実行されるコンピュータプログラムを記憶し、上記のプロセッサが上記のコンピュータプログラムをロードして実行するときに、前述の任意の実施例における上記のデータ処理方法に対する説明を実行することができ、したがって、ここで繰り返して記述しない。さらに、同じ方法を採用する有益効果の説明を繰り返して記述しない。本願に関するコンピュータ可読記憶媒体実施例において開示されていない技術詳細について、本願の方法実施例の説明を参照して良い。
【0123】
図10を参照すると、図10は、本願の実施例に提供されるブロックチェーンに基づくデータ処理装置の別の一例の構造概略図である。上記のデータ処理装置は、コンピュータ機器に実行されるコンピュータプログラム(プログラムコードが含まれる)であり得、例えば、該データ処理装置は、アプリケーションソフトウェアである。該データ処理装置は、本願の実施例に提供される方法における相応的なステップを実行するためのものであり得る。図10に示すように、該データ処理装置2は、要求受信モジュール21、識別子決定モジュール22、及びデータ追加モジュール23、を含むことができる。
【0124】
要求受信モジュール21は、端末機器から送信された、複数者間協力トランザクションに対するトランザクション要求を受信するように構成される。
【0125】
識別子決定モジュール22は、前記トランザクション要求に基づいて前記複数者間協力トランザクションに対応するグループ識別子を決定するように構成される。
【0126】
データ追加モジュール23は、前記複数者間協力トランザクションに対応するグループ識別子と前記トランザクション要求に基づいてグループ識別子を有するトランザクションデータを生成し、前記トランザクションデータをトランザクションプールに追加するように構成される。
【0127】
ここで、前記トランザクションプールは、同じグループ識別子の複数のトランザクションデータを有し、前記トランザクションデータは、コンセンサスノードによりグループトランザクションデータとして決定されるためのものであり、前記コンセンサスノードは、各前記グループトランザクションデータを提案ブロックにパッキングし、前記提案ブロックにおける各前記グループトランザクションデータを実行し、実行済みのトランザクション実行結果を得るためのものであり、前記コンセンサスノードはさらに、前記実行済みのトランザクション実行結果にトランザクション実行失敗結果が含まれる場合、各前記グループトランザクションデータに対応するトランザクション実行結果をいずれもトランザクション実行失敗結果に更新するためのものである。
【0128】
ここで、要求受信モジュール21、識別子決定モジュール22、及びデータ追加モジュール23の具体的な実現方式について、上記の図4に対応する実施例におけるステップS201~ステップS203の説明を参照して良く、ここで繰り返して記述しない。
【0129】
ここで、前記トランザクション要求は、署名データを搬送し、前記署名データは、前記端末機器が秘密鍵で前記トランザクション要求に対して署名処理を行った後に得られる。図10を参照すると、データ処理装置2はさらに、署名モジュール24を含むことができる。
【0130】
署名モジュール24は、前記端末機器に対応する公開鍵を取得するように構成される。署名モジュール24はさらに、前記公開鍵によって前記署名データに対して署名検証処理を行い、署名検証結果を得るように構成される。署名モジュール24はさらに、前記署名検証結果が署名検証成功結果である場合、トランザクション要求に基づいて複数者間協力トランザクションに対応するグループ識別子を決定させるように識別子決定モジュール22を通知するように構成される。
【0131】
ここで、署名モジュール24の具体的な実現方式について、上記の図4に対応する実施例におけるステップS202の説明を参照して良く、ここで繰り返して記述しない。
【0132】
ここで、前記トランザクション要求の数量は複数であり、各前記トランザクション要求は実行順序識別子を含む。図10を参照すると、識別子決定モジュール22は、第1識別子決定ユニット221を含むことができる。
【0133】
第1識別子決定ユニット221は、実行順序識別子に示された順序優先度が最高優先度であるトランザクション要求を取得した場合、前記順序優先度が最高優先度であるトランザクション要求を、グループ識別子要求として決定するように構成される。第1識別子決定ユニット221はさらに、前記グループ識別子要求に対してハッシュ処理を行い、要求ハッシュ値を得、前記要求ハッシュ値を前記複数者間協力トランザクションに対応するグループ識別子として決定するように構成される。
【0134】
ここで、第1識別子決定ユニット221の具体的な実現方式について、上記の図4に対応する実施例におけるステップS202の説明を参照して良く、ここで繰り返して記述しない。
【0135】
ここで、トランザクション要求は、複数者間協力トランザクションを開始した協力トランザクション開始オブジェクトを含む。図10を参照すると、識別子決定モジュール22は、第2識別子決定ユニット222を含むことができる。
【0136】
第2識別子決定ユニット222は、前記トランザクション要求から前記協力トランザクション開始オブジェクトを取得するように構成される。第2識別子決定ユニット222はさらに、身分識別子ライブラリに、前記協力トランザクション開始オブジェクトに対応する身分識別子を検索するように構成される。第2識別子決定ユニット222はさらに、前記身分識別子に基づいて前記複数者間協力トランザクションに対応するグループ識別子を生成するように構成される。
【0137】
ここで、第2識別子決定ユニット222の具体的な実現方式について、上記の図4に対応する実施例におけるステップS202の説明を参照して良く、ここで繰り返して記述しない。
【0138】
図10を参照すると、データ処理装置2はさらに、識別子生成モジュール25を含むことができる。
【0139】
識別子生成モジュール25は、協力トランザクション開始オブジェクトが開始した、複数者間協力トランザクションに対する識別子取得要求を取得するように構成され、ここで、前記識別子取得要求は、前記複数者間協力トランザクションに参加するトランザクションオブジェクトを含む。識別子生成モジュール25はさらに、前記識別子取得要求に基づいて前記複数者間協力トランザクションに対する使用可能なグループ識別子を生成するように構成される。識別子生成モジュール25はさらに、前記使用可能なグループ識別子を前記トランザクションオブジェクトに対応する端末機器に送信するように構成され、ここで、前記トランザクションオブジェクトに対応する端末機器は、前記使用可能なグループ識別子が含まれるトランザクション要求を生成する。
【0140】
識別子決定モジュール22は、第3識別子決定ユニット223を含むことができる。
【0141】
第3識別子決定ユニット223は、前記トランザクション要求における前記使用可能なグループ識別子を、前記複数者間協力トランザクションに対応するグループ識別子として決定するように構成される。
【0142】
ここで、識別子生成モジュール25及び第3識別子決定ユニット223の具体的な実現方式について、上記の図4に対応する実施例におけるステップS202の説明を参照して良く、ここで繰り返して記述しない。
【0143】
図11を参照すると、図11は、本願の実施例に提供されるコンピュータ機器の別の一例の構造概略図である。図11に示すように、上記の図10に対応する実施例におけるデータ処理装置2は、上記のコンピュータ機器2000に適用されることができる。上記のコンピュータ機器2000は、プロセッサ2001、ネットワークインターフェース2004、及びメモリ2005、を含むことができ、それ以外、上記のコンピュータ機器2000はさらに、ユーザインターフェース2003及び少なくとも1つの通信バス2002を含む。ここで、通信バス2002は、これらのコンポーネントの間の接続通信を実現するためのものである。ここで、ユーザインターフェース2003は、ディスプレイ(Display)とキーボード(Keyboard)を含むことができ、選択的に、ユーザインターフェース2003はさらに、標準的な有線インターフェースと無線インターフェースを含むことができる。ネットワークインターフェース2004は、標準的な有線インターフェースと無線インターフェース(例えば、WI-FIインターフェース)を含むことができる。メモリ2005は、高速RAMメモリであり得、不揮発性メモリ(Non-Volatile Memory)、例えば、少なくとも1つのディスクメモリでもあり得る。メモリ2005はさらに、上記のプロセッサ2001から離れる少なくとも1つの記憶装置であり得る。図11に示すように、コンピュータ可読記憶媒体の一種として、メモリ2005は、オペレーティングシステム、ネットワーク通信モジュール、ユーザインターフェースモジュール、及び機器制御アプリケーションプログラム、を含むことができる。
【0144】
図11に示すコンピュータ機器2000において、ネットワークインターフェース2004は、ネットワーク通信機能を提供することができる。ユーザインターフェース2003は主に、ユーザに入力インターフェースを提供するためのものである。プロセッサ2001は、下記のステップを実現するために、メモリ2005に記憶された機器制御アプリケーションプログラムを呼び出すためのものである。
【0145】
端末機器から送信された、複数者間協力トランザクションに対するトランザクション要求を受信し、前記トランザクション要求に基づいて前記複数者間協力トランザクションに対応するグループ識別子を決定し、前記複数者間協力トランザクションに対応するグループ識別子と前記トランザクション要求に基づいてグループ識別子を有するトランザクションデータを生成し、前記トランザクションデータをトランザクションプールに追加する。
【0146】
ここで、前記トランザクションプールは、同じグループ識別子の複数のトランザクションデータを有し、前記トランザクションデータは、コンセンサスノードによりグループトランザクションデータとして決定されるためのものであり、前記コンセンサスノードは、各前記グループトランザクションデータを提案ブロックにパッキングし、前記提案ブロックにおける各前記グループトランザクションデータを実行し、実行済みのトランザクション実行結果を得るためのものであり、前記コンセンサスノードはさらに、前記実行済みのトランザクション実行結果にトランザクション実行失敗結果が含まれる場合、各前記グループトランザクションデータに対応するトランザクション実行結果をいずれもトランザクション実行失敗結果に更新するためのものである。
【0147】
理解可能なこととして、本願の実施例に説明されたコンピュータ機器2000は、前述の各実施例における該データ処理方法に対する説明を実行することができ、前述の図10に対応する実施例における該データ処理装置2に対する説明をすることができ、ここで繰り返して記述しない。さらに、同じ方法を採用する有益効果の説明を繰り返して記述しない。
【0148】
さらに、ここで説明すべきこととして、本願の実施例はさらに、コンピュータ可読記憶媒体を提供し、上記のコンピュータ可読記憶媒体は、前述のデータ処理装置2に実行されるコンピュータプログラムを記憶し、上記のプロセッサが上記のコンピュータプログラムをロードして実行するときに、前述の任意の実施例における上記のデータ処理方法に対する説明を実行することができ、したがって、ここで繰り返して記述しない。さらに、同じ方法を採用する有益効果の説明を繰り返して記述しない。本願と関連付けられるコンピュータ可読記憶媒体実施例において開示されていない技術詳細について、本願の方法実施例の説明を参照して良い。
【0149】
上記のコンピュータ可読記憶媒体は、前述の任意の実施例に提供されるデータ処理装置又は上記のコンピュータ機器の内部記憶ユニット、例えば、コンピュータ機器のハードディスク又はメモリであり得る。該コンピュータ可読記憶媒体はさらに、該コンピュータ機器の外部記憶機器、例えば、該コンピュータ機器に配置されたプラグインハードディスク、スマート記憶カード(SMC:Smart Media Card)、セキュアデジタル(SD:Secure Digital)カード、フラッシュカード(flash card)などであり得る。該コンピュータ可読記憶媒体はさらに、該コンピュータ機器の内部記憶ユニットと外部記憶機器の両方を含むことができる。該コンピュータ可読記憶媒体は、該コンピュータプログラム及び該コンピュータ機器が必要な他のプログラムとデータを記憶するためのものである。該コンピュータ可読記憶媒体はさらに、出力済み又は出力予定のデータを一時的に記憶するためのものであり得る。
【0150】
さらに説明すべきこととして、本願の実施例はさらに、コンピュータ命令を含むコンピュータプログラム製品又はコンピュータプログラムを提供する。該コンピュータ命令は、コンピュータ可読記憶媒体に記憶され、コンピュータ機器のプロセッサは、コンピュータ可読記憶媒体から該コンピュータ命令を読み取り、プロセッサは、該コンピュータ命令を実行し、該コンピュータ機器に前述の任意の対応する実施例に提供される方法を実現させる。
【0151】
本願の実施例の明細書、特許請求の範囲、及び図面における「第1」、「第2」という用語は、特定の順序を説明するものではなく、異なる対象を区別するものである。さらに、「含む」という用語、又はその任意の他の変形は、非排他的な包含をカバーすることを意図する。例えば、一連のステップ又はユニットを含む過程、方法、装置、製品又は機器は、列挙されただけでなく、選択的に、列挙されていないステップ又はモジュール、又は、そのような過程、方法、装置、製品又は機器の固有のステップ又はユニットをさらに含む。
【0152】
当業者が理解可能なこととして、本明細書に開示された実施例に参照して説明された各例におけるユニット及びアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、又はその両方の組み合わせで実現されることができる。ハードウェアとソフトウェアの交換可能性を明確に説明するために、上記の説明において、各例の構成とステップをネットワーク要素に従って一般的に説明した。これらのネットワーク要素がハードウェアかソフトウェアで実行されるかは、技術的解決策の特定応用と設計制約条件に依存する。当業者は、各特定のアプリケーションに対して、異なる方法を使用して説明されたネットワーク要素を実現することができるが、そのような実現は、本願の範囲を超えるべきではない。
【0153】
上記に開示されたのは、本願の最適的な実施例に過ぎなく、無論、本願の特許請求の範囲を制限しない。したがって、本願の請求項に基づく同等入れ替わりは、本願の保護範囲以内に含まれるべきである。
図1
図2A
図2B
図3
図4
図5
図6
図7
図8
図9
図10
図11
【国際調査報告】