(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-07-10
(54)【発明の名称】ブロックチェーン取引内のデータを階層的に裁断する方法、装置、機器及び媒体
(51)【国際特許分類】
G06F 16/182 20190101AFI20240703BHJP
【FI】
G06F16/182
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023578039
(86)(22)【出願日】2022-04-29
(85)【翻訳文提出日】2023-12-18
(86)【国際出願番号】 CN2022090567
(87)【国際公開番号】W WO2022262446
(87)【国際公開日】2022-12-22
(31)【優先権主張番号】202110682927.8
(32)【優先日】2021-06-18
(33)【優先権主張国・地域又は機関】CN
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】505383316
【氏名又は名称】中国科学技▲術▼大学
【氏名又は名称原語表記】UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA
【住所又は居所原語表記】96, Jinzhai Road, Baohe District, Hefei, Anhui 230026, P.R. China
(74)【代理人】
【識別番号】100205936
【氏名又は名称】崔 海龍
(74)【代理人】
【識別番号】100132805
【氏名又は名称】河合 貴之
(72)【発明者】
【氏名】張 文帥
(72)【発明者】
【氏名】李 京
(57)【要約】
本開示はブロックチェーン取引内のデータを階層的に裁断する方法を提供し、当該方法は、取引データセットを取得するステップと、取引データセットを用いて保持データセット及びM個の裁断データセットを構築するステップS1と、裁断データセットに対して第1のシリアライズエンコードを行い、第1のシリアライズエンコード値を得るステップS2と、第1のシリアライズエンコード値に対してハッシュ計算を行い、第1のシリアライズエンコード値に対応する第1のハッシュ値を得るステップS3と、第1のシリアライズエンコード値に対応するM個の第1のハッシュ値を第1のハッシュ値セットに構築し、且つ保持データセットと併合して中間取引データセットを得るステップS4と、中間取引データセットが所定条件を満たすまで、中間取引データセットを用いて操作S1~S4を繰り返し、ターゲットデータセットを得るステップS5と、を含むデータ裁断モデルに基づき、取引データセットに対してN回の裁断を行ってターゲットデータセットを得るステップと、ターゲットデータセットを処理してターゲット値を得るステップであって、ターゲット値は、ターゲットデータセットにコチェインする際に用いられる取引識別番号を指すように構成されるステップと、を含む。
【選択図】
図2
【特許請求の範囲】
【請求項1】
ブロックチェーン取引内のデータを階層的に裁断する方法であって、
取引データセットを取得するステップと、
データ裁断モデルに基づき、前記取引データセットに対してN回の裁断を行ってターゲットデータセットを得るステップであって、Nは1以上の正整数であるステップと、
前記ターゲットデータセットを処理してターゲット値を得るステップであって、前記ターゲット値は、前記ターゲットデータセットにコチェインする際に用いられる取引識別番号を指すように構成されるステップと、を含み、
ここで、データ裁断モデルに基づき、前記取引データセットに対してN回の裁断を行ってターゲットデータセットを得る前記ステップは、
前記取引データセットを用いて保持データセット及びM個の裁断データセットを構築するステップであって、Mは1以上の正整数であるステップS1と、
前記裁断データセットに対して第1のシリアライズエンコードを行い、前記裁断データセットに対応する第1のシリアライズエンコード値を得るステップS2と、
前記第1のシリアライズエンコード値に対してハッシュ計算を行い、前記第1のシリアライズエンコード値に対応する第1のハッシュ値を得るステップS3と、
前記第1のシリアライズエンコード値に対応するM個の第1のハッシュ値を第1のハッシュ値セットに構築し、且つ前記保持データセットと併合して中間取引データセットを得るステップS4と、
前記中間取引データセットが所定条件を満たすまで、前記中間取引データセットを用いて操作S1~S4を繰り返し、前記ターゲットデータセットを得るステップS5と、を含むブロックチェーン取引内のデータを階層的に裁断する方法。
【請求項2】
前記データ裁断モデルによって裁断されたデータセットは、Y=S∪{HASH(binW
1),HASH(binW
2),…,HASH(binW
M)}に表示され、
ここで、Sは入力データセットXの保持データセットであり、W
1,W
2,…,W
Mは入力データセットXにおける裁断データセットであり、Mは裁断データセットの数であり、binW
Mは裁断データセットW
Mのシリアライズエンコード値であり、HASH(binW
M)はbinW
Mのハッシュ値であり、Yは入力データセットXをデータ裁断モデルで裁断した後のデータセットであり、X={x
1,x
2,x
3,…,x
a}であり、S={s
1,s
2,s
3,…,s
b}であり、W
h={W
h,1,W
h,2,W
h,3,…,W
h,ch}であり、W
hは裁断データセットW
1、W
2、…、W
Mにおけるいずれかの裁断データセットであり、aは入力データセットXにおけるデータエレメントの数であり、x
1,x
2,x
3,…,x
aは入力データセットXにおけるデータエレメントであり、bは保持データセットSにおけるデータエレメントの数であり、s
1,s
2,s
3,…,s
bは保持データセットSにおけるデータエレメントであり、hは裁断データセットの数であり、1≦h≦Mであり、c
hは裁断データセットW
hにおけるデータエレメントの数であり、且つc
h≧1であり、W
h,1,W
h,2,W
h,3,…,W
h,chは裁断データセットW
hのデータエレメントである請求項1に記載の方法。
【請求項3】
前記ターゲットデータセットを処理してターゲット値を得る前記ステップは、
前記ターゲットデータセットに対して第2のシリアライズエンコードを行い、前記ターゲットデータセットに対応する第2のシリアライズエンコード値を得るステップと、
前記第2のシリアライズエンコード値に対してハッシュ計算を行い、ターゲット値を得るステップと、を含む請求項1に記載の方法。
【請求項4】
1回目の裁断時の前記保持データセットは非空データセットである請求項1又は2に記載の方法。
【請求項5】
UTXOモデルにおける分散式帳簿に応用する場合、1回目の裁断では、前記取引データセットにおける各取引入力データのロック解除スクリプトエレメントは独立した裁断データセットを形成する請求項1に記載の方法。
【請求項6】
j回目の裁断では、前記各取引入力データにおけるロック解除スクリプトエレメントに関連するデータエレメントはいずれも同一の裁断データセットに属し、ここで、2≦j≦Nである請求項5に記載の方法。
【請求項7】
UTXOモデルにおける分散式帳簿に応用する場合、1回目の裁断では、前記取引データセットにおける各取引出力データのロックスクリプトエレメントは独立した裁断データセットを形成する請求項1に記載の方法。
【請求項8】
j回目の裁断では、各取引出力データにおけるロックスクリプトエレメントに関連するデータエレメントはいずれも同一の裁断データセットに属し、ここで、2≦j≦Nである請求項6に記載の方法。
【請求項9】
ブロックチェーン取引内のデータを階層的に裁断する装置であって、
取引データセットを取得するために用いられる取得モジュールと、
データ裁断モデルに基づき、前記取引データセットに対してN回の裁断を行ってターゲットデータセットを得るために用いられる裁断モジュールであって、Nは1以上の正整数である裁断モジュールと、
前記ターゲットデータセットを処理してターゲット値を得るために用いられる処理モジュールであって、前記ターゲット値は、前記ターゲットデータセットにコチェインする際に用いられる取引識別番号を指すように構成される処理モジュールと、を含み、
ここで、裁断モジュールは、
前記取引データセットを用いて保持データセット及びM個の裁断データセットを構築するために用いられる構築サブモジュールであって、Mは1以上の正整数である構築サブモジュールと、
前記裁断データセットに対して第1のシリアライズエンコードを行い、前記裁断データセットに対応する第1のシリアライズエンコード値を得るために用いられるシリアライズエンコードサブモジュールと、
前記第1のシリアライズエンコード値に対してハッシュ計算を行い、前記第1のシリアライズエンコード値に対応する第1のハッシュ値を得るために用いられる計算サブモジュールと、
前記第1のシリアライズエンコード値に対応するM個の第1のハッシュ値を第1のハッシュ値セットに構築し、且つ前記保持データセットと併合して中間取引データセットを得るために用いられる取得サブモジュールと、
前記中間取引データセットが所定条件を満たすまで、前記中間取引データセットを用いて上記サブモジュールに対応する操作を循環し、前記ターゲットデータセットを得るために用いられる循環サブモジュールと、を含むブロックチェーン取引内のデータを階層的に裁断する装置。
【請求項10】
1つ又は複数のプロセッサと、
1つ又は複数のプログラムを記憶するために用いられる記憶装置と、を含み、
ここで、前記1つ又は複数のプログラムは、前記1つ又は複数のプロセッサにより実行されるとき、前記1つ又は複数のプロセッサに請求項1~8のいずれか一項に記載の方法を実行させる電子機器。
【請求項11】
実行可能なコマンドが記憶されているコンピュータ読み取り可能な記憶媒体であって、当該コマンドは、プロセッサによって実行されると、プロセッサに請求項1~8のいずれか一項に記載の方法を実行させるコンピュータ読み取り可能な記憶媒体。
【請求項12】
コンピュータプログラムを含むコンピュータプログラム製品であって、前記コンピュータプログラムは、プロセッサによって実行されるとき、請求項1~8のいずれか一項に記載の方法を実現するコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
本願は、2021年06月18日に中国知識財産局に提出された、発明の名称が「ブロックチェーン取引内のデータを階層的に裁断する方法、システム及び記憶媒体」で、出願番号が202110682927.8である中国特許出願の優先権を主張し、その全ての内容が参照により本願に組み込まれる。
【0002】
本開示はブロックチェーンの技術分野に関し、特にブロックチェーン取引内のデータを階層的に裁断する方法、装置、機器及び媒体に関する。
【背景技術】
【0003】
ブロックチェーン技術は分散式帳簿の技術であり、異なる地理的位置に分布する複数の帳簿メンテナンスノードが記帳に共同で関与し、取引データを分散式データベースに記録する技術である。帳簿メンテナンスノードは互換性のある同類の記帳ソフトウェアを実行し且つ記帳ノードになる可能性があるノードである。取引データは全ての帳簿メンテナンスノード間に伝送される機能が完全で独立した記帳データユニットとして定義することができる。毎回の記帳はユーザがブロードキャスト又はポイントツーポイントで1つの取引を分散型ネットワークに送信し、且つ共通ルールに基づいて選択された記帳ノードによって帳簿データベースに追加し、最後に他の帳簿メンテナンスノードの検証によって実現する。
【0004】
ネットワークには記帳に関与しないが完全又は一部の、履歴又は現在の取引データを記録するノードも存在し、帳簿同期ノードと呼ばれてもよい。ネットワークにはさらにいくつかのユーザノードが存在し、ユーザ自身又はユーザグループ自身に関連する取引データのみを保存し、又は最も基本的なブロックヘッダ構造データも保存し、それはライトノードと呼ばれる。特に、本開示において、「ブロックチェーン」を使用することは説明を簡単にするためだけであり、その意味はこの狭義のブロックチェーンネットワークに限定されるものではなく、全ての形式の分散式分類帳簿を含み、そのうちの記帳取引も1つのブロックにパッキングされる必要がなく、比較的独立した方式で分散式帳簿に添加することができる。
【0005】
従来のブロックチェーン技術では、取引における主要データが全体ハッシュされて取引識別番号TXIDを得、ノードはハッシュ計算を用いてそのうちの一部の取引データの真偽を検証する必要がある場合、当該TXIDが指向する取引の完全な取引データを受信しなければならず、取引データの記憶、伝送及び二次利用のコストを増加させ、不必要なユーザの負担が増大する。
【発明の概要】
【発明が解決しようとする課題】
【0006】
上記問題を少なくとも部分的に解決するために、本開示は、ブロックチェーン取引内のデータを階層的に裁断する方法、装置、電子機器、記憶媒体及びプログラム製品を提供する。
【課題を解決するための手段】
【0007】
本開示の一態様により提供されるブロックチェーン取引内のデータを階層的に裁断する方法は、取引データセットを取得するステップと、データ裁断モデルに基づき、取引データセットに対してN回の裁断を行ってターゲットデータセットを得るステップであって、Nは1以上の正整数であるステップと、ターゲットデータセットを処理してターゲット値を得るステップであって、ターゲット値は、ターゲットデータセットにコチェインする際に用いられる取引識別番号を指すように構成されるステップと、を含む。
【0008】
本開示の実施例によれば、データ裁断モデルに基づき、取引データセットに対してN回の裁断を行ってターゲットデータセットを得るステップは、取引データセットを用いて保持データセット及びM個の裁断データセットを構築するステップであって、Mは1以上の正整数であるステップS1と、裁断データセットに対して第1のシリアライズエンコードを行い、裁断データセットに対応する第1のシリアライズエンコード値を得るステップS2と、第1のシリアライズエンコード値に対してハッシュ計算を行い、第1のシリアライズエンコード値に対応する第1のハッシュ値を得るステップS3と、第1のシリアライズエンコード値に対応するM個の第1のハッシュ値を第1のハッシュ値セットに構築し、且つ保持データセットと併合して中間取引データセットを得るステップS4と、中間取引データセットが所定条件を満たすまで、中間取引データセットを用いて操作S1~S4を繰り返し、ターゲットデータセットを得るステップS5と、を含む。
【0009】
本開示の他の態様により提供されるブロックチェーン取引内のデータを階層的に裁断する装置は、取引データセットを取得するために用いられる取得モジュールと、データ裁断モデルに基づき、取引データセットに対してN回の裁断を行ってターゲットデータセットを得るために用いられる裁断モジュールであって、Nは1以上の正整数である裁断モジュールと、ターゲットデータセットを処理してターゲット値を得るために用いられる処理モジュールであって、ターゲット値は、ターゲットデータセットにコチェインする際に用いられる取引識別番号を指すように構成される処理モジュールと、を含む。
【0010】
本開示の他の態様により提供される電子機器は、1つ又は複数のプロセッサと、1つ又は複数のプログラムを記憶するために用いられる記憶装置であって、1つ又は複数のプログラムが1つ又は複数のプロセッサにより実行されるとき、1つ又は複数のプロセッサに上記ブロックチェーン取引内のデータを階層的に裁断する方法を実行させる記憶装置と、を含む。
【0011】
本開示の他の態様によれば、実行可能なコマンドが記憶されているコンピュータ読み取り可能な記憶媒体を提供し、当該コマンドは、プロセッサによって実行されるとき、上記ブロックチェーン取引内のデータを階層的に裁断する方法をプロセッサに実行させる。
【0012】
本開示の他の態様により提供されるコンピュータプログラム製品は、コンピュータプログラムを含み、当該コンピュータプログラムは、プロセッサによって実行されるとき、上記ブロックチェーン取引内のデータを階層的に裁断する方法を実現する。
【図面の簡単な説明】
【0013】
【
図1】本開示の実施例によるブロックチェーン取引内のデータを階層的に裁断する方法のフローチャートを概略的に示す。
【
図2】本開示の実施例による取引データに対してN回の裁断を行ってターゲットデータセットを得る方法のフローチャートを概略的に示す。
【
図3】本開示の実施例1による取引データセットの分割概略図を概略的に示す。
【
図4】本開示の実施例2による取引データセットの分割概略図を概略的に示す。
【
図5】本開示の実施例3による取引データセットの分割概略図を概略的に示す。
【
図6】本開示の実施例によるブロックチェーン取引内のデータを階層的に裁断する装置の構造ブロック図を概略的に示す。
【
図7】本開示の実施例によるブロックチェーン取引内のデータを階層的に裁断する方法を実現することに適する電子機器のブロック図を概略的に示す。
【発明を実施するための形態】
【0014】
以下、添付図面を参照しながら、本開示の実施例を説明する。しかしながら、これらの説明は例示的なものであり、本開示の範囲を限定するものではないことを理解されたい。以下の説明では、説明を容易にするために、本開示の実施例を完全に理解するために、多くの特定の詳細が説明される。しかしながら、これらの具体的な詳細なしに1つ以上の実施例が実施されてもよいことは明らかである。また、以下の説明において、公知の構造及び技術については、本開示の概念の不必要な混同を避けるために、説明を省略する。
【0015】
本開示で使用される用語は、具体的な実施例を説明するためだけであり、本開示を限定することを意図していない。さらに、説明書で使用される用語「含む」、「含有」などは特徴、ステップ、操作及び/又は部品の存在を説明するためであるが、1つ又は複数の他の特徴、ステップ、操作又は部品の存在又は追加を排除するものではないことを理解されたい。
【0016】
別段の定義がある限り、本文で使用される全ての用語(技術用語及び科学用語を含む)は、当業者によって一般的に理解されているのと同じ意味を有する。なお、本明細書で使用される用語は、本明細書の文脈と一致する意味で解釈されるべきであり、理想的又は過剰な様式で解釈されるべきではない。
【0017】
「A、B、Cなどのうち少なくとも1つ」のような表現を用いる場合、一般的には当業者が通常理解している当該表現の意味で解釈すべきである(例えば、「A、B及びCのうち少なくとも1つを有するシステム」は、Aを単独で有するもの、Bを単独で有するもの、Cを単独で有するもの、A及びBを有するもの、A及びCを有するもの、B及びCを有するもの、及び/又はA、B、Cを有するものなどを含むがこれらに限定されるものではない)。
【0018】
本開示の技術案において、データの取得、収集、記憶、使用、加工、伝送、提供、開示及び応用などの処理は、いずれも関連法律の規定に合致し、必要な機密措置を採用し、且つ公序良俗に反するものではない。
【0019】
図1は本開示の実施例によるブロックチェーン取引内のデータを階層的に裁断する方法のフローチャートを概略的に示す。
【0020】
図1に示すように、当該方法100は、操作S110~S130を含む。
【0021】
操作S110において、取引データセットを取得する。
【0022】
操作S120において、データ裁断モデルに基づき、取引データセットに対してN回の裁断を行ってターゲットデータセットを得、Nは1以上の正整数である。
【0023】
本開示の実施例によれば、UTXOモデルにおける分散式帳簿に応用する場合、異なる取引データ入力と取引データ出力の個数の場合、裁断の回数Nは実際の裁断需要に基づいて決定されてもよく、具体的な裁断の回数を決定した後、取引データセットに対する裁断操作を実行する。裁断の回数Nは取引データ入力及び取引データ出力の個数の影響を受けず、すなわち、裁断ターンNは取引データ入力及び取引データ出力の個数に依存しなくてもよい。
【0024】
本開示の実施例によれば、裁断の回数を決定することにより裁断階層の個数のモードを決定し、関連するソフトウェアコードの実施を簡略化することに役立ち、また、本願の裁断方法に対してコードハードウェア化を実現することにも役立つ。
【0025】
本開示の実施例によれば、取引データセットは分散式帳簿ネットワークに伝播された完全な取引データのセットであってもよく、取引データセットはX
0に表示されてもよい。取引データ全体のセットは、必要な全ての取引データエレメントを含んでもよく、部分冗長データを含む必要はない。必要なデータは取引の有効性が帳簿メンテナンスノードに検証される時に必要なデータであってもよい。例えば、ロック解除スクリプトサイズデータ又はロックスクリプトサイズデータも冗長データであり、帳簿メンテナンスノードによる検証を必要としないデータであってもよい。本開示の実施例によれば、取引データセットX
0は複数のデータの組み合わせで形成されてもよく、例えば、
【数1】
に表示されてもよく、
ここで、x
1,x
2,x
3,…,x
nは取引データセットにおけるデータエレメントであり、nは取引データセットにおけるデータエレメントの数である。
【0026】
本開示の実施例によれば、データ裁断モデルFによって取引データセットに対して裁断を行った毎の後に得られたデータセットは、例えば、
【数2】
に表示されてもよく、
ここで、Sは入力データセットXの保持データセットであり、W
1,W
2,…,W
Mは入力データセットXにおける裁断データセットであり、Mは裁断データセットの数であり、binW
Mは裁断データセットW
Mのシリアライズエンコード値であり、HASH(binW
M)はbinW
Mのハッシュ値であり、Yは入力データセットXをデータ裁断モデルで裁断した後のデータセットである。ここで、X、S及びW
hは、例えば、
【数3】
に表示されてもよく、
ここで、W
hは裁断データセットW
1、W
2、…、W
Mにおけるいずれかの裁断データセットであり、aは入力データセットXにおけるデータエレメントの数であり、x
1,x
2,x
3,…,x
aは入力データセットXにおけるデータエレメントであり、bは保持データセットSにおけるデータエレメントの数(b≧0)であり、s
1,s
2,s
3,…,s
bは保持データセットSにおけるデータエレメントであり、hは裁断データセットの数であり、1≦h≦Mであり、c
hは裁断データセットW
hにおけるデータエレメントの数であり、且つc
h≧1であり、W
h,1,W
h,2,W
h,3,…,W
h,chは裁断データセットW
hのデータエレメントである。
【0027】
本開示の実施例によれば、任意選択的に、入力データセットは、
【数4】
のように設定されてもよく、
当該式(4)において、入力データセットXは、冗長データを減らすために、保持データセットSと裁断データセットW
1、W
2、…、W
Mの和集合として表示される。
【0028】
本開示の実施例によれば、任意選択的に、入力データセットは、
【数5】
のように設定されてもよい。
【0029】
本開示の実施例によれば、データ重複を回避し、データ裁断効率を向上させるために、入力データセットXは式5の形式で表示される。
【0030】
なお、本開示の実施例では、例えば、HASH(p)はデータpに対して1回又は1回以上ネスティングしたハッシュ計算を行った後に得られたハッシュ値を示し、データpに対して1回ハッシュ計算を行って得られたハッシュ値をhash(p)として表記し、データpに対してr回ネスティングしたハッシュ計算を行って得られたハッシュ値をHASHr(p)として表記し、HASHr(p)=hash(HASHr-1(p))であり、r≧1であり、HASH0(p)=pである。
【0031】
ここで、hash(HASHr-1(p))におけるhashはr回目のハッシュ計算時に使用されるhash関数であり、hash関数はいずれかのハッシュ関数又は新たに設計された同等の効果を有する関数であってもよい。HASHr(p)はr個の任意のhash関数ネストで構成され、当該r個のhash関数は異なるか又は同一であってもよい。
【0032】
本開示の実施例によれば、例えば、いずれか1つのデータセットRに対するシリアライズエンコード操作をEncode(R)として表記し、エンコード操作後の出力データはバイナリデータであり、対応的にbinR又はbin(R)として表記してもよく、すなわち、bin(R)=binR=Encode(R)である。当該エンコード操作にいくつかの定数データと共通認識ルールを加えることができ、特定の検索とデコードの需要を満たす。当該エンコード操作は、デコード操作(Decodeとして表記する)を備えたいずれの変換操作であってもよく、すなわち、R=Decode(Encode(R))の特性を有している。
【0033】
本開示の実施例によれば、データ裁断モデルFに基づいて、取引データセットをN回裁断することは、取引データセットのデータエレメントを裁断して裁断データセットを形成することと、裁断データセットに対してシリアライズエンコードとハッシュ演算を行うことと、未裁断データセットを保持することと、裁断データのハッシュ値からなるハッシュセット、及び保持された未裁断データセットをターゲットデータセットに形成することとを含む。
【0034】
例えば、
図2は本開示の実施例による取引データに対してN回の裁断を行ってターゲットデータセットを得る方法のフローチャートを概略的に示す。
【0035】
図2に示すように、当該方法200は、操作S1~S5をさらに含む。
【0036】
操作S1において、取引データセットを用いて保持データセット及びM個の裁断データセットを構築し、ここで、Mは1以上の正整数である。
【0037】
操作S2において、裁断データセットに対して第1のシリアライズエンコードを行い、裁断データセットに対応する第1のシリアライズエンコード値を得る。
【0038】
操作S3において、第1のシリアライズエンコード値に対してハッシュ計算を行い、第1のシリアライズエンコード値に対応する第1のハッシュ値を得る。
【0039】
操作S4において、第1のシリアライズエンコード値に対応するM個の第1のハッシュ値を第1のハッシュ値セットに構築し、且つ保持データセットと併合して中間取引データセットを得る。
【0040】
操作S5において、中間取引データセットが所定条件を満たすまで、中間取引データセットを用いて操作S1~S4を繰り返し、ターゲットデータセットを得る。
【0041】
本開示の実施例によれば、取引データセットを入力データセットとして1回目の裁断を行うとき、データ分割ルールに基づき、当該取引データセットX0={x1,x2,x3,…,xn}を現在回目の裁断プロセスにおいて裁断する必要のない取引データ及び裁断可能な取引データに分割することができる。裁断する必要のない取引データはデータセットを構築し、保持データセットS0とすることができ、裁断可能な取引データは複数のデータセットを構築し、裁断データセットW1
0、W2
0、…WM0
0とすることができ、M0は裁断データセットの1回目の裁断時の裁断データセットの数であり、Mは1より大きい正の整数である。
【0042】
本開示の実施例によれば、取引データセットX
0を保持データセットS
0とM個の裁断データセットW
1
0、W
2
0、…W
M0
0に分割して、X
0=S
0+W
1
0+W
2
0+…+W
M0
0として表記してもよく、
【数6】
のように表記してもよい。
【0043】
本開示の実施例によれば、1回目の裁断時の保持データセットは非空データセットであってもよい。
【0044】
本開示の実施例によれば、データ裁断モデルFにより、M個の裁断データセットに対してそれぞれ1回目のデータ裁断を行うとき、すなわち、第1のシリアライズエンコードを行い且つハッシュ計算を行うことは、l個目の裁断データセットWl
0に対して第1のシリアライズエンコードを行い、ここで、1≦l≦Mであり、バイナリの第1のシリアライズエンコード値binWl
0を得、さらに当該第1のシリアライズエンコード値binWl
0に対してハッシュ計算を行い、当該データセットWl
0のハッシュポインタhashWl
0、すなわち当該データセットの第1のシリアライズエンコード値に対応する第1のハッシュ値hashWl
0=HASH(binWl
0)を得る。
【0045】
本開示の実施例によれば、M個の裁断データセットに対して第1のシリアライズエンコードを行ってからハッシュ計算を行い、対応する裁断データセットの第1のシリアライズエンコード値に対応するM個の第1のシリアライズエンコード値のセットを得、例えば、
【数7】
に表示されてもよい。
【0046】
本開示の実施例によれば、1回目の裁断に対応するハッシュ値セットと保持データセットS
0を併合し、中間取引データ集合Y
0を得て、すなわち、取引データ集合X
0に対してデータ裁断モデルFの1回目の裁断を行った後に得られた取引データX
1は、例えば、
【数8】
に表示されてもよい。
【0047】
本開示の実施例によれば、当該中間取引データセットY
0(X
1)を入力データセットとして上記操作S1~S4を実行して得た中間取引データセットY
iは、すなわち、取引データセットX
0に対してデータ裁断モデルFに対してi+1回目の裁断を行って得た取引データX
i+1であり、中間取引データセットY
iが所定条件を満たす場合、当該取引データセットY
iを目標データセットX
Nとし、ここで、1≦i≦N-1である。i+1回目の裁断後に得られた中間取引データセットY
iは、例えば、
【数9】
に表示されてもよい。
【0048】
なお、取引データセット又は中間取引データセットに対してデータ裁断モデルFによってデータ裁断を行うとき、毎回のデータ裁断のプロセスは互いに独立し、すなわち、M0、M1、…、Mi、…、M(N-1)はいずれも独立定数である。
【0049】
本開示の実施例によれば、取引データセットX
0に対してN回の裁断を行うプロセスは、例えば、
【数10】
に表示されてもよく、
ここで、X
i+1は取引データセットX
0がデータ裁断モデルFのi+1階層で裁断された後のデータを示し、X
iはi+1回目の裁断時のデータ裁断モデルFの入力データセットであり、Y
iはi+1回目の裁断時のデータ裁断モデルFの出力データセットであり、S
iはi+1層目の裁断時のX
iの保持データセットであり、W
1
i、W
2
i、…W
Mi
iはi+1回目の裁断時のX
iの裁断データセットであり、ここで、Miはi+1回目の裁断時にデータ裁断を行う必要がある裁断データセットの数であり、S
i={S
1
i,S
2
i,S
3
i,…,S
bi
i}であり、ここで、b
iはi+1回目の裁断時の保持データセットにおけるデータエレメントの数であり、i+1回目の裁断時の第h個の裁断データセットは、W
h
i={w
h,1
i,w
h,2
i,…,w
h,ci,h
i}データセットとして表示されてもよく、ここで、W
h
iはi+1回目の裁断時の裁断データセットW
1
i、W
2
i、…W
Mi
iのいずれかの裁断データセットであり、c
i,hはW
h
iにおけるデータエレメントの数である。
【0050】
本開示の実施例によれば、取引データセットに対して1回の裁断を行うと、取引データセットは1層のハッシュポインタを多く有し、毎回の裁断プロセスにおける保持データセット及び裁断データセットの数は取引中の入力データ数及び出力データ数の違いによって変化する。
【0051】
本開示の実施例によれば、中位回数で裁断された出力データ、例えばHASH(binW1
i),HASH(binW2
i),…,HASH(binWMi
i)は、ノードに記憶されなくてもよく、必要なときのみ、他のデータを用いた仮演算により再取得してデータ記憶の圧力を低減させることができる。
【0052】
本開示の実施例によれば、同一回数の裁断プロセスにおいて取引データセットにおけるM個の裁断データセットに対する分割は、M個の裁断データセットにおける異なる取引データに対する分割ハッシュとエンコードを実現し、後続の取引データに対する追跡及びデコードに役立つ。例えば、データをデコード及び検証しやすいように、同一回数のハッシュにおける入力データと出力データを別々にパケット及びエンコードする。
【0053】
操作S130において、ターゲットデータセットを処理してターゲット値を得、ターゲット値は、ターゲットデータセットにコチェインする際に用いられる取引識別番号を指すように構成される。
【0054】
本開示の実施例によれば、得られたターゲットデータセットを処理し、目標値を得るステップは、ターゲットデータセットに対して第2のシリアライズエンコードを行い、ターゲットデータセットに対する第2のシリアライズエンコード値を得るステップと、第2のシリアライズエンコード値に対してハッシュ計算を行い、ターゲット値を得るステップと、を含む。
【0055】
本開示の実施例によれば、ターゲットデータセットXNに対して第2のシリアライズエンコードを行い、ターゲットデータセットXNに対応する第2のシリアライズエンコード値binXNを得て、且つ当該第2のシリアライズエンコード値binXNに対してハッシュ計算を行い、目標値ハッシュ値HASH(binXN)を得、当該目標ハッシュ値は得られた目標値であり、ターゲットデータセットにコチェインする時に使用される取引識別番号TXIDに指すように配置される。
【0056】
本開示の実施例によれば、当該方法で得られた取引識別番号は、構造化インデックスの取引識別番号と呼ばれてもよい。
【0057】
本開示の実施例によれば、取引データセットが裁断される前に、特にブロックチェーンメンテナンスノードの間に伝送されるとき、現在のソフトウェアとアプリケーション環境を両立させるように、伝送されたオリジナル取引データのフォーマットをそのまま保持し、現在の既存のフォーマットを流用してもよい。
【0058】
本開示の実施例によれば、取引データセットは1回目の裁断の前に、全ての取引データを含み、2回目及び2回目以上の裁断プロセスでは、データハッシュ値で取引データセットにおけるオリジナルデータを置換し、データ遷移プロセスでは、オリジナルデータの痕跡はハッシュ値で常に存在することを示し、いずれの取引データに対する改ざんはいずれも各回の裁断の取引入力データセットを変更させ、データの遡及を容易にする。
【0059】
本開示の実施例によれば、取引データセットに対して複数階層のハッシュ処理を行うことにより、取引データセットにおけるそれぞれのデータが、ブロックチェーン又は分散型ネットワークにおける当該取引データセットに対応するノードに、オリジナルデータの形態又はハッシュコードの形態で存在する。ノード又は取引ロックスクリプトは入力されたデータにおける一部の取引データの真偽を検証する必要がある場合、当該取引データ全体を受信しなければならず、取引データの記憶及び伝送に必要なデータ量を増加するという技術的問題を解決する。それにより取引データにおける一部のデータの真偽のみを検証する必要がある場合、当該一部のデータが位置する取引データのTXID及び他の取引データのハッシュ値を利用し、一部の取引データの真偽性の検証を実現し、当該取引データセットがノード間に遷移するプロセスにおいて必要に応じて冗長データを縮減させ、データ伝送プロセスにおけるデータパケットの大きさを小さくし、冗長データの重複伝送を回避し、それによりデータ伝送及び処理効率を向上させる。また、データ移行プロセスにおいて、少なくともハッシュコードの形式でデータノードに存在するため、データの信頼性検証を保証し、データが改ざんされることを回避する。且つ、データの階層化ハッシュにより、指定されたデータへの遡及を容易にし、ユーザは必要に応じてデータダウンロードを行うことができ、必要なデータを取得すると共に、冗長データのダウンロードを回避する。
【0060】
本開示の実施例によれば、例えば、UTXOモデルにおける複数の取引出力に対して、ユーザは、自分が注目していない取引出力のデータ内容をダウンロードしたり保存したりすることなく、そのデータ内容のハッシュ値のみを代替としてダウンロードしたり保存したりすることができる。
【0061】
本開示の実施例によれば、データの階層化ハッシュを保証し、一部の常用データの迅速な遡及を保証するために、S0≠Φを設定してもよい。さらに実施する場合、データ裁断モデルFによってデータに対してハッシュ裁断を行う場合、各階層の裁断プロセスにおいて、保持データセットはいずれも空セットではなく、すなわち、操作S110において保持データセットは非空データセットであるように設定してもよい。
【0062】
本開示の実施例によれば、任意選択的に、Sj⊆Sj-1であり、1≦j≦N-1(Sk
i∈Sj,j<i,1≦k≦bi)であり、ここで、Sk
iはi+1回目の裁断時の保持データセットにおける第k個のデータエレメントであり、Sjはj回目の裁断時の保持データセットである。すなわち、取引データセットはj回目の裁断プロセスにおいて初めてハッシュ裁断されると、当該取引データセットは最初のj-1回の裁断プロセスにおいていずれも保持データセットに存在し、データの遡及を容易にする。
【0063】
本開示の実施例によれば、データ裁断モデルFによってデータをハッシュ裁断するプロセスにおいて、いずれかの裁断データセットWhに含まれるデータは1つであってもよく、複数であってもよい。すなわち、本開示の実施例では、毎回のデータ裁断プロセスにおいて、いずれかの裁断データセットWhに含まれるデータは1つであってもよく、複数であってもよい。このように、複数のデータを1つの裁断データセットにパケットして一括コード及びハッシュ変換を行うことにより、作業量を減少し、作業効率を向上させる。同一階層のハッシュ裁断における裁断データセットに対する分割によって、異なる取引データに対する別々のハッシュとエンコードを実現し、後続の取引データに対する追跡及びデコードに役立つ。
【0064】
本開示の実施例によれば、当該方法はUTXOモデルでの分散式帳簿に応用する場合、取引データセットX0は、取引バージョン番号Version、取引タイムロックデータLockTime、取引入力の個数InputCount、毎回の取引に入力されたデータTxInに含まれる全てのデータエレメント、取引出力の個数OutputCount、及び毎回の取引に出力されたデータTxOutに含まれる全てのデータエレメントを含む。
【0065】
本開示の実施例によれば、各取引に入力されたデータTxInに含まれる全てのデータエレメントは、TXID、VOUT、Unlocking Script Size、Unlocking Script及びSequenceデータであり、ここでTXIDは当該入力に対応する先行取引を指定し、VOUTは当該先行取引の取引出力のソート位置を指定し、両者は共同で当該入力にかかる先行取引の出力TxOutの位置を指定し、Unlocking Scriptは当該取引出力にかかる必要があるロック解除スクリプトを記録する。取引毎に出力されたデータTxOutに含まれる全てのデータエレメントはValue、Locking Script Size及びLocking Scriptである。
【0066】
本開示の実施例によれば、任意選択的に、UTXOモデルにおける分散式帳簿に応用する場合、1回目の裁断では、取引データセットにおける各取引入力データのロック解除スクリプトエレメントは独立した裁断データセットを形成する。j回目の裁断では、各取引入力データにおけるロック解除スクリプトエレメントに関連するデータエレメントはいずれも同一の裁断データセットに属し、ここで、2≦j≦Nである。
【0067】
本開示の実施例によれば、任意選択的に、UTXOモデルにおける分散式帳簿に応用する場合、1回目の裁断では、取引データセットにおける各取引出力データのロックスクリプトエレメントは独立した裁断データセットを形成する。j回目の裁断では、各取引出力データにおけるロックスクリプトエレメントに関連するデータエレメントはいずれも同一の裁断データセットに属し、ここで、2≦j≦Nである。
【0068】
本開示の実施例によれば、UTXOモデルに応用される分散式帳簿において、取引の各入力と出力における全てのデータにおいて、ロック解除スクリプトサイズ(Unlocking Script Size)とロックスクリプトサイズ(Locking Script Size)データだけは可変長データフォーマットを使用し、そのバイト長サイズは一定ではない。任意選択的に、各Unlocking Script SizeのフォローUnlocking Scriptデータ、又はLocking Script SizeデータのフォローLocking Scriptデータを、同一の裁断可能なデータセットに入れ、今回の裁断後の出力データセットと取引入力及び出力内容に関連するデータにいずれも一定のバイト長さを有させ、取引データを迅速に分割及び解析しやすい。
【0069】
本開示の実施例によれば、例えば、ロック解除スクリプトサイズデータはロック解除スクリプトデータに対する長さ計量であり、ロック解除スクリプトサイズデータはロック解除スクリプトデータから導出することができ、そのため、ロックスクリプトサイズデータは取引データセットに記入されなくてもよく、後続の取引識別番号の算出に参加されなくてもよく、同様に、ロックスクリプトサイズデータは取引データセットに記入されなくてもよく、後続の取引識別番号の算出に参加されなくてもよい。
【0070】
本開示の実施例によれば、UTXOモデルでの分散式帳簿において、各取引入力におけるロック解除スクリプト(Unlocking Script)データは帳簿メンテナンスノードに当該取引の正当な有効性を証明するために用いられ、それは先行取引のデータ又は取引体積の大きいことをもたらすことができる他のデータを含む可能性がある。当該取引が合格に検証されて且つ分散式帳簿データベースに書き込まれた後、帳簿メンテナンスノードは基本的にこのデータを必要としない。各取引入力におけるUnlocking Scriptデータを単独でハッシュした後、後続の取引スクリプト又はノードインタラクションにおいて必要に応じて当該データ内容を裁断し、そのハッシュ値のみを保持し、当該取引における他のデータの真実な正当性を検証する。同様に、各取引出力におけるロックスクリプト(Locking Script)は当該取引出力のコスト条件を表し、当該コスト条件は異なる取引の異なる出力において同じ内容を有し、同じ取引先又は認証スクリプトコードを表現するために用いられる。当該スクリプトは、ボリュームが大きく、いくつかのシーンで複数回利用される場合がある。各出力されたロックスクリプトが単独でハッシュされることにより、一方、当該スクリプトの完全な内容を与えない場合、そのハッシュ値のみを用いて当該スクリプトがある取引における特定位置の取引出力であることを証明することができ、それにより取引スクリプト又はノード間のインタラクションデータの大きさを低減し、一方、複数の取引は同一のハッシュポインタによってこの部分の取引データを共有することができ、記憶空間を節約するという目的を達成する。
【0071】
本開示の実施例によれば、任意選択的に、取引データセットがj回目の裁断であると決定する場合、取引データセットにおける各取引入力データの任意のエレメントの間に独立した裁断データセットを形成し、取引データセットにおける各取引出力データの任意のエレメントの間に独立した裁断データセットを形成し、ここで、2≦j≦N-1である。
【0072】
本開示の実施例によれば、任意選択的に、2回目及び2回目以上のいずれ回の裁断において、2つの裁断可能なデータセットのみを設置し、1つはいずれの取引に入力された内容に関連するデータエレメントを収容するために用いられ、1つはいずれの取引に出力された内容に関連するデータエレメントを収容するために用いられる。1回目の裁断後に冗長データを削減することができ、2回目及び2回目以上の2つの裁断可能なデータセットの分割により、入力関連データと出力関連データを互いに独立させ、裁断可能なデータセットが過度に分割される状況を回避し、データのトレーサビリティがさらに容易になる。
【0073】
本開示の実施例によれば、任意選択的に、例えば、UTXOモデルにおける分散式帳簿において取引データセットX0に対して複数回の裁断を行うとき、取引バージョン番号Version、取引タイムロックデータLockTime、取引入力の個数InputCount、毎回の取引に入力されたデータTxInにおけるTXID、VOUT及びSequence、取引出力の個数OutputCount、及び毎回の取引に出力されたデータTxOutにおけるValueはいずれも保持データセットS0に属する。
【0074】
本開示の実施例によれば、任意選択的に、取引データセットX0に対して1回目の裁断を行うとき、取引データセットにおける取引入力のデータTxInにおけるUnlocking Script Size、Unlocking Script、及び取引出力のデータTxOutにおけるLocking Script SizeとLocking Scriptに対して広義のハッシュ計算を行い、冗長データを縮小する。具体的に実施するとき、裁断プロセスにおいて、最後に取引バージョン番号Version及び取引時間ロックデータLockTimeのいずれかが存在する保持データセットをSgとして表記し、G=S0-Version-LockTimeであるようにし、最後にデータセットGのいずれかのデータが存在する保持データセットをSgとして表記し、g>g′であり、すなわち、Sg⊆Sg′である。このように、ブロックチェーンに、ルートノードに最も近い取引バージョン番号Versionと取引時間ロックデータLock Timeのデータノードが存在することを保証し、取引におけるこの2つの部分のデータに対する識別が容易になる。
【0075】
以下、UTXOモデルでの分散式帳簿での3つの実施例を参照し、上記ブロックチェーンに応用するN回の裁断データのコチェイン方法について具体的に説明する。以下の実施例では、ビットコインサトシビジョン(BSV)ブロックチェーンを例とし、当業者であれば理解されるように、これは本発明の保護範囲を限定するものではなく、当該実施されたターゲットブロックチェーンはビットコイン(BTC)ブロックチェーン、ドージコイン(DOGE)ブロックチェーン、ライトコイン(LTC)ブロックチェーン、ビットコイン現金(BCH)ブロックチェーンを含む他の同類取引データエレメントを有するUTXOモデルブロックチェーンであってもよい。
【0076】
説明の便宜上、以下の3つの実施例はいずれも2入力2出力の取引を採用し、それは任意の入力数と任意の出力数の取引であってもよく、前の2つの取引入力又は取引出力に対する実施形態を同様に他の取引入力又は出力に応用すればよい。
【0077】
表1は、以下の実施例1~3における取引データセットX
0の構成である。表1に示すとおりである。
【表1】
【0078】
(実施例1)
本実施例において、表1における取引データセットX
0に対して1回の裁断を行い、裁断プロセスにおいて、保持データセットS及び裁断データセットWの区分は表2及び
図3に示す。
【0079】
本実施例では、1回目の裁断時に、取引の各入力(TxIn)のUnlocking ScriptエレメントとUnlocking Script Sizeエレメントは1つの裁断データセットを構成し、取引の各出力(TxOut)のLocking ScriptエレメントとLocking Script Sizeエレメントは1つの裁断データセットを構成する。
【0080】
図3は本開示の実施例1による取引データセットの分割概略図を概略的に示す。
【0081】
表2は取引データセットX
0に対して1回の裁断を行うとき、取引データセットX
0を、保持データセット及び裁断データセットに区分する表である。表2に示すとおりである。
【表2】
【0082】
表2に示すように、且つ
図3の概略
図300を参照し、当該実施例における取引データセットに対する裁断プロセスは式で以下のように示し、
【数11】
本実施例では、1つのノード又は契約が他のノード又はユーザの提供する当該取引のTxIn1:TXIDとTxIn1:VOUTデータの真偽を検証する必要があるとき、当該取引の取引識別番号TXIDとセット{x
1,x
2,x
3,x
4,HASH(binW
1
0),x
9,x
10,x
11,HASH(binW
2
0),x
14,x
15,HASH(binW
3
0),x
18,HASH(binW
4
0)}におけるデータを連携するだけで、ハッシュ計算により提供されたデータが当該取引における対応データであるか否かを検証することができる。データを削減するという目的を達成するために、当該プロセスでは、全ての入力されたUnlocking ScriptとUnlocking Script Sizeオリジナルデータ及び全ての出力されたLocking ScriptとLocking Script Sizeオリジナルデータはいずれも裁断されてもよい。
【0083】
本実施例では、1つのノード又は契約が他のノード又はユーザの提供する当該取引のTxOut1:Locking Scriptデータの真偽を検証する必要があるとき、当該取引の取引識別番号TXIDとセット{x1,x2,x3,x4,x5,x6,HASH(binW1
0),x9,x10,x11,HASH(binW2
0),x14,x15,x18,HASH(binW4
0)}におけるデータを連携するだけで、ハッシュ計算により提供されたデータが当該取引における対応データであるか否かを検証することができる。データを削減するという目的を達成するために、当該プロセスでは、全ての入力されたUnlocking ScriptとUnlocking Script Sizeオリジナルデータ及び2番目の出力されたLocking ScriptとLocking Script Sizeオリジナルデータはいずれも裁断されてもよい。
【0084】
本実施例では、1つのノードはTxOut1:Locking Scriptデータを多重化する必要がある場合、ハッシュポインタHASH(binW3
0)を用いて当該データを記憶することができ、他の取引も同じLocking Scriptデータを有する場合は、このハッシュポインタが指すデータを共有することができる。
【0085】
なお、本実施例では、データサイズを十分に縮小するために、他のデータに対する検証は上記方法を用いて必要な検証データを提供して検証を行うことができ、具体的には、ここで説明を省略する。
【0086】
(実施例2)
本実施例では、表1に基づいて、取引データセットX
0に対して2回目の裁断を行い、裁断プロセスにおいて、保持データセットS及び裁断データセットWの区分は次の表3及び
図4に示す。
【0087】
本実施例では、1回目の裁断時に、取引の各入力(TxIn)のUnlocking ScriptエレメントとUnlocking Script Sizeエレメントは1つの裁断データセットを構成し、取引の各出力(TxOut)のLocking ScriptエレメントとLocking Script Sizeエレメントは1つの裁断データセットを構成する。
【0088】
本実施例では、2回目の裁断中において、いずれの取引に入力された内容に関連するデータエレメントはいずれも1つの裁断データセットに属し、且ついずれの取引に出力された内容に関連するデータエレメントはいずれも他の裁断データセットに属し、例えば、
【数12】
ここで、A
jは任意のデータエレメントを含むセット又は空セットであり、f
jはハッシュ値を示し、1≦j≦kであり、R(f
j)はハッシュ値f
jの元画像を示し、元画像はデータセット又は文字列セットであり、従って、x′がいずれかの取引入力におけるデータエレメントである場合、x′、f
1、f
2、f
3、……、f
kはいずれも取引入力内容に関連するデータエレメントであり、x′がいずれかの取引出力におけるデータエレメントである場合、x′、f
1、f
2、f
3、……、f
kはいずれも取引出力内容に関連するデータエレメントである。
【0089】
具体的には、本実施例では、2回目の裁断中において、2つの裁断データセットが設置され、1つのW1
1はいずれの取引に入力された内容に関連するデータエレメントを収容するために用いられ、1つのW2
1はいずれの取引に出力された内容に関連するデータエレメントを収容するために用いられる。
【0090】
具体的に実施する場合、2回目以上のいずれの裁断において、いずれも2つの裁断データセットを設置し、1つはいずれの取引に入力された内容に関連するデータエレメントを収容するために用いられ、1つはいずれの取引に出力された内容に関連するデータエレメントを収容するために用いられる。このように、第1階層の裁断により冗長データを削減することができ、第2階層及び第2階層以上の2つの裁断可能なデータセットの分割により、入力関連データと出力関連データを互いに独立させ、裁断可能なデータセットが過度に分割される状況を回避し、データのトレーサビリティがさらに容易になる。
【0091】
図4は本開示の実施例2による取引データセットの分割概略図を概略的に示す。
【0092】
表3は取引データセットX
0に対して2回目の裁断を行うとき、取引データセットX
0を、保持データセット及び裁断データセットに区分する表である。表3に示すとおりである。
【表3】
【0093】
表3に示すように、且つ
図4の概略
図400を参照し、当該実施例における取引データセットに対する裁断プロセスは式で以下のように示し、
【数13】
【0094】
本実施例では、1つのノード又は契約が他のノード又はユーザの提供する当該取引のTxIn1:TXIDとTxIn1:VOUTデータの真偽を検証する必要があるとき、当該取引の取引識別番号TXIDとセット{x1,x2,x3,x4,HASH(binW1
0),x9,x10,x11,HASH(binW2
0),x14,HASH(binW2
1)}におけるデータを連携するだけで、ハッシュ計算により提供されたデータが当該取引における対応データであるか否かを検証することができる。データを削減するという目的を達成するために、当該プロセスでは、全ての入力されたUnlocking ScriptとUnlocking Script Sizeオリジナルデータ及び全ての出力されたデータはいずれも裁断されてもよい。
【0095】
本実施例では、1つのノード又は契約が他のノード又はユーザの提供する当該取引のTxOut1:Locking Scriptデータの真偽を検証する必要があるとき、当該取引の取引識別番号TXIDとセット{x1,x2,x3,x4,HASH(binW1
1),x15,x18,HASH(binW4
0)}におけるデータを連携するだけで、ハッシュ計算により提供されたデータが当該取引における対応データであるか否かを検証することができる。データを削減するという目的を達成するために、当該プロセスでは、全ての入力されたオリジナルデータ及び2番目の出力されたLocking ScriptとLocking Script Sizeオリジナルデータはいずれも裁断されてもよい。
【0096】
本実施例では、1つのノードはTxOut1:Locking Scriptデータを多重化する必要がある場合、ハッシュポインタHASH(binW3
0)を用いて当該データを記憶することができ、他の取引も同じLocking Scriptデータを有する場合は、このハッシュポインタが指すデータを共有することができる。
【0097】
本実施例では、1つのノード又は契約が1つのデータのハッシュ値HASH(binW2
1)を決定した後、当該データにおける各出力を示すデータセグメントが等しいバイト長さを有するため、当該データを等しいバイト数の前後2つの部分のデータに分割し続け、続いて前の部分のデータを{TxOut1:Value,HASH(binW3
0)}のコード値として、後の部分のデータを{TxOut2:Value,HASH(binW4
0)}のコード値として決定し、またデコードして対応データを得ることができる。
【0098】
なお、本実施例では、データサイズを十分に縮小するために、他のデータに対する検証は上記方法を用いて必要な検証データを提供して検証を行うことができ、具体的には、ここで説明を省略する。
【0099】
(実施例3)
本実施例では、表1に基づいて、取引データセットX0に対して2回目の裁断を行う。
【0100】
本実施例では、取引データ中の計量エレメントは、取引データ中のあるエレメントのバイト長を示すエレメントと、取引データ中のあるタイプのエレメントの個数を示すカウントエレメントとを含み、その計量のターゲットエレメントとともに裁断されない。具体的な実施において、各取引入力データにおけるUnlocking Script SizeエレメントはUnlocking Scriptエレメントと同じ裁断データセットに属しておらず、各取引出力データにおけるLocking Script SizeエレメントはLocking Scriptエレメントと同じ裁断データセットに属しておらず、InputCountエレメントは全ての取引入力データにおけるTXIDと同じ裁断データセットに属しておらず、OutputCountエレメントは全ての出力取引データにおけるValueエレメントと同じ裁断データセットに属していない。
【0101】
具体的には、本実施例では、第1階層の裁断時に、取引の各入力(TxIn)のUnlocking Scriptエレメントは独立した裁断可能なデータセットを形成し、取引の各出力(TxOut)のLocking Scriptエレメントは独立した裁断可能なデータセットを形成する。
【0102】
本実施例3における裁断プロセスにおいて、保持データセットS及び裁断データセットWの区分は次の表4及び
図5に示す。
【0103】
図5は本開示の実施例3による取引データセットの分割概略図を概略的に示す。
【0104】
表3は取引データセットX
0に対して2回目の裁断を行うとき、取引データセットX
0を、保持データセット及び裁断データセットに区分する表である。表4に示すとおりである。
【表4】
【0105】
表4に示すように、且つ
図5の概略
図500を参照し、当該実施例における取引データセットに対する裁断プロセスは式で以下のように示し、
【数14】
【0106】
本実施例では、1つのノード又は契約が他のノード又はユーザの提供する当該取引のTxIn1:TXIDとTxIn1:VOUTデータの真偽を検証する必要があるとき、当該取引の取引識別番号TXIDとセット{x1,x2,x3,x4,x7,HASH(binW1
0),x9,x10,x11,x12,HASH(binW2
0),x14,HASH(binW2
1)}におけるデータを連携するだけで、ハッシュ計算により提供されたデータが当該取引における対応データであるか否かを検証することができる。データを削減するという目的を達成するために、当該プロセスでは、全ての入力されたUnlocking Scriptオリジナルデータ及び全ての出力されたデータはいずれも裁断されてもよい。
【0107】
本実施例では、1つのノード又は契約が他のノード又はユーザの提供する当該取引のTxOut1:Locking Scriptデータの真偽を検証する必要があるとき、当該取引の取引識別番号TXIDとセット{x1,x2,x3,x4,HASH(binW1
1),x15,x16,x18,x19,HASH(binW4
0)}におけるデータを連携するだけで、ハッシュ計算により提供されたデータが当該取引における対応データであるか否かを検証することができる。データを削減するという目的を達成するために、当該プロセスでは、全ての入力されたオリジナルデータ及び2番目の出力されたLocking ScriptとLocking Script Sizeオリジナルデータはいずれも裁断されてもよい。
【0108】
本実施例では、1つのノードはTxOut1:Locking Scriptデータを多重化する必要がある場合、ハッシュポインタHASH(binW0
3)を用いて当該データを記憶することができ、他の取引も同じLocking Scriptデータを有する場合は、このハッシュポインタが指すデータを共有することができる。
【0109】
なお、本実施例では、データサイズを十分に縮小するために、他のデータに対する検証は上記方法を用いて必要な検証データを提供して検証を行うことができ、具体的には、ここで説明を省略する。
【0110】
さらに説明すべきものとして、本開示の実施例では、上記例示の方式のみで本開示の解決手段をさらに説明し、本開示の範囲を限定するものではない。
【0111】
上記ブロックチェーン取引内のデータを階層的に裁断する方法に基づき、本開示はさらにブロックチェーン取引内のデータを階層的に裁断する装置を提供する。
【0112】
図6は本開示の実施例によるブロックチェーン取引内のデータを階層的に裁断する装置の構造ブロック図を概略的に示す。
【0113】
図6に示すように、当装置600は、
取引データセットを取得するために用いられる取得モジュール610と、
データ裁断モデルに基づき、取引データセットに対してN回の裁断を行ってターゲットデータセットを得るために用いられる裁断モジュール620であって、Nは1以上の正整数である裁断モジュール620と、
ターゲットデータセットを処理してターゲット値を得るために用いられる処理モジュール630であって、ターゲット値は、ターゲットデータセットにコチェインする際に用いられる取引識別番号を指すように構成される処理モジュール630と、を含む。
【0114】
本開示の実施例によれば、裁断モジュール620は、
取引データセットを用いて保持データセット及びM個の裁断データセットを構築するために用いられる構築サブモジュール620-1であって、Mは1以上の正整数である構築サブモジュール620-1と、
裁断データセットに対して第1のシリアライズエンコードを行い、裁断データセットに対応する第1のシリアライズエンコード値を得るために用いられるシリアライズエンコードサブモジュール620-2と、
第1のシリアライズエンコード値に対してハッシュ計算を行い、第1のシリアライズエンコード値に対応する第1のハッシュ値を得るために用いられる計算サブモジュール620-3と、
第1のシリアライズエンコード値に対応するM個の第1のハッシュ値を第1のハッシュ値セットに構築し、且つ保持データセットと併合して中間取引データセットを得るために用いられる取得サブモジュール620-4と、
中間取引データセットが所定条件を満たすまで、中間取引データセットを用いて上記サブモジュールに対応する操作を循環し、ターゲットデータセットを得るために用いられる循環サブモジュール620-5と、を含む。
【0115】
本開示の実施例によれば、取得モジュール610、裁断モジュール620及び処理モジュール630における任意の複数のモジュールは1つのモジュールに併合して実現されてもよく、又はそのうちの任意の1つのモジュールは複数のモジュールに分割されてもよい。又は、これらのモジュールにおける1つ又は複数のモジュールの少なくとも一部の機能は他のモジュールの少なくとも一部の機能と組み合わせ、且つ1つのモジュールにおいて実現されてもよい。本開示の実施例によれば、取得モジュール610、裁断モジュール620及び処理モジュール630のうちの少なくとも1つは少なくとも部分的にハードウェア回路として実現されてもよく、例えばフィールドプログラマブルゲートアレイ(FPGA)、プログラマブルロジックアレイ(PLA)、システムオンチップ、基板上のシステム、パッケージ上のシステム、専用集積回路(ASIC)、又は回路を集積又はパッケージする任意の他の合理的な方式などのハードウェア又はファームウェアによって実現されてもよく、又はソフトウェア、ハードウェア及びファームウェアの3つの実現方式のうちのいずれか1つ又はそのうちの任意のいくつかの適切な組み合わせによって実現されてもよい。又は、取得モジュール610、裁断モジュール620及び処理モジュール630のうちの少なくとも1つは少なくとも部分的にコンピュータプログラムモジュールとして実現されてもよく、当該コンピュータプログラムモジュールが実行されるとき、対応する機能を実行することができる。
【0116】
図7は本開示の実施例によるブロックチェーン取引内のデータを階層的に裁断する方法を実現することに適する電子機器のブロック図を概略的に示す。
【0117】
図7に示すように、本開示の実施例の電子機器700は、プロセッサ701を含み、それは、リードオンリーメモリ(ROM)702に記憶されたプログラム、又は記憶部708からランダムアクセスメモリ(RAM)703にロードされたプログラムに従って様々な適切な動作及び処理を実行することができる。プロセッサ701は例えば汎用マイクロプロセッサ(例えばCPU)、コマンドセットプロセッサ及び/又は関連チップセット及び/又は専用マイクロプロセッサ(例えば、専用集積回路(ASIC))などを含んでもよい。プロセッサ701は、キャッシュ用のオンボードメモリをさらに含んでもよい。プロセッサ701は、本開示の実施例による方法フローに沿って異なる動作を実行するための単一の処理ユニット又は複数の処理ユニットを含んでもよい。
【0118】
RAM703には、電子機器700の操作に必要な各種のプログラムやデータも記憶されている。プロセッサ701、ROM702、及びRAM703は、バス704を介して相互に接続されている。プロセッサ701は、ROM702及び/又はRAM703のプログラムを実行することにより、本開示の実施例による方法フローの各種の操作を行う。なお、プログラムは、ROM702及びRAM703以外の1つ又は複数のメモリに記憶されていてもよい。プロセッサ701は、1つ又は複数のメモリに記憶されたプログラムを実行することにより、本開示の実施例による方法フローの各種の操作を実行してもよい。
【0119】
本開示の実施例によれば、電子機器700は、入力/出力(I/O)インタフェース705をさらに含んでもよく、入力/出力(I/O)インタフェース705もバス704に接続される。電子機器700はさらに、I/Oインタフェース705に接続された、キーボード、マウスなどを含む入力部706、陰極線管(CRT)、液晶ディスプレイ(LCD)、及びスピーカなどを含む出力部707、ハードディスクなどを含む記憶部708、LANカードやモデムなどのネットワークインタフェースカードを含む通信部709の1つ以上を含んでもよい。通信部709は、インターネットなどのネットワーク経由で通信処理を実行する。ドライブ710も必要に応じてI/Oインタフェース705に接続される。磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどの取り外し可能な媒体711が必要に応じてドライブ710にインストールされ、それにより、それらから読み出されたコンピュータプログラムが、必要に応じて記憶部708にインストールされる。
【0120】
本開示はさらに、コンピュータ読み取り可能な記憶媒体をさらに提供し、当該コンピュータ読み取り可能な記憶媒体は、上記実施例に記載の機器/装置/システムに含まれてもよく、単独で存在し、当該機器/装置/システムに組み込まれていなくてもよい。また、上記コンピュータ読み取り可能な記憶媒体は1つ又は複数のプログラムを担持し、上記1つ又は複数のプログラムが当該電子機器に実行されるとき、本開示の実施例による方法を実現する。
【0121】
本開示の実施例によれば、コンピュータ読み取り可能な記憶媒体は不揮発性のコンピュータ読み取り可能な記憶媒体であってもよく、例えば、可搬型のコンピュータ磁気ディスク、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、消去可能なプログラマブルリードオンリメモリ(EPROM又はフラッシュ)、コンパクトディスクリードオンリメモリ(CD-ROM)、光記憶デバイス、磁気記憶デバイス、或いは、これらの任意の組み合わせを含むがこれらに限定されない。本開示において、コンピュータ読み取り可能な記憶媒体はプログラムを含むか又は記憶する任意の有体媒体であってもよく、当該プログラムはコマンド実行システム、装置又はデバイスに用いられるか又はそれらと組み合わせて用いられてもよい。例えば、本開示の実施例によれば、コンピュータ読み取り可能な記憶媒体は、上記のROM702及び/又はRAM703、及び/又はROM702及びRAM703以外の1つ又は複数のメモリを含んでもよい。
【0122】
本開示の実施例はさらに、コンピュータプログラムを含むコンピュータプログラム製品を含み、当該コンピュータプログラムは、フローチャートに示される方法を実行するために用いられるプログラムコードを含む。コンピュータプログラム製品がコンピュータシステムにおいて実行されるとき、当該プログラムコードは、本開示の実施例により提供されるブロックチェーン取引内のデータを階層的に裁断する方法をコンピュータシステムに実行させる。
【0123】
当該コンピュータプログラムは、プロセッサ701によって実行されるとき、本開示の実施例のシステム/装置に限定される上記機能を実行する。本開示の実施例によれば、上記システム、装置、モジュール、ユニットなどは、コンピュータプログラムモジュールによって実現されてもよい。
【0124】
一実施例では、当該コンピュータプログラムは、光記憶デバイス、磁気記憶デバイスなどの有形記憶媒体に依存してもよい。もう1つの実施例では、当該コンピュータプログラムは、信号の形態でネットワーク媒体において伝送されて配布され、且つ通信部709経由でダウンロードしてインストールされること、及び/又は取り外し可能な媒体711からインストールされてもよい。当該コンピュータプログラムに含まれるプログラムコードは、無線、有線など、又は上述した任意の適切な組み合わせを含むが、これらに限定されない任意の適切な媒体で伝送されてもよい。
【0125】
このような実施例では、当該コンピュータプログラムは、通信部709経由でネットワークからダウンロード及びインストールされ、及び/又は取り外し可能な媒体711からインストールされてもよい。当該コンピュータプログラムがプロセッサ701によって実行されるとき、本開示の実施例のシステムに限定される上記機能を実行する。本開示の実施例によれば、上記システム、機器、装置、モジュール、ユニットなどは、コンピュータプログラムモジュールによって実現されてもよい。
【0126】
本開示の実施例によれば、1つ又は複数のプログラミング言語の任意の組み合わせで、本開示の実施例により提供されるコンピュータプログラムを実行するためのプログラムコードを記述することができ、具体的には、高級プロセス及び/又はオブジェクト指向プログラミング言語、及び/又はアセンブリ/機械語を用いてこれらのコンピューティングプログラムを実装することができる。プログラミング言語はJava、Rust、C++、python、「C」言語などのプログラミング言語を含むがそれらに限定されない。プログラムコードは、完全にユーザコンピューティングデバイス上で実行されてもよく、部分的にユーザデバイス上で、部分的にリモートコンピューティングデバイス上で実行されてもよく、又は完全にリモートコンピューティングデバイスもしくはサーバ上で実行されてもよい。リモートコンピューティングデバイスの場合、リモートコンピューティングデバイスは、ローカルエリアネットワーク(LAN)又はワイドエリアネットワーク(WAN)を含む任意の種類のネットワーク経由でユーザコンピューティングデバイスに接続されてもよく、又は、外部コンピューティングデバイス(例えば、インターネットサービスプロバイダーを使用してインターネット経由で接続する)に接続されてもよい。
【0127】
添付図面のフローチャート及びブロック図は、本開示の様々な実施例によるシステム、方法及びコンピュータプログラム製品の実現可能なアーキテクチャ、機能及び操作を示す。この点、フローチャート又はブロック図における各ブロックは1つのモジュール、プログラムセグメント、又はコードの一部を表してもよく、上記モジュール、プログラムセグメント、又はコードの一部は所定の論理機能を実現するための1つ又は複数の実行可能なコマンドを含む。なお、いくつかの代替としての実現において、ブロックに記載された機能は図面に記載された順序と異なる順序で発生してもよい。例えば、2つの連続して表示されるブロックは、実際には、基本的に並行して実行されてもよく、関連する機能に応じて、その逆の順序で実行されてもよい場合がある。なお、ブロック図又はフローチャートにおける各ブロック、及びブロック図又はフローチャートにおけるブロックの組み合わせは、所定の機能又は操作を実行する専用のハードウェアに基づくシステムで実現されてもよく、又は専用のハードウェア及びコンピュータコマンドの組み合わせで実現されてもよい。
【0128】
当業者は、本開示の様々な実施例及び/又は特許請求の範囲に記載された特徴が、本開示に明示的に記載されていなくても、様々な組み合わせ又は結合で実施されてよいことを理解するであろう。特に、本開示の様々な実施例及び/又は特許請求の範囲に記載された特徴は、本開示の精神及び教示から逸脱することなく、様々な組み合わせ及び/又は結合を行うことができる。これら全ての組み合わせ及び/又は結合は本開示の範囲に属する。
【0129】
以上、本開示の実施例について説明した。しかしながら、これらの実施例は説明のためのものであり、本開示の範囲を限定するものではないことを理解されたい。以上、各実施例を個別に説明してきたが、各実施例での対策をうまく組み合わせることができないことを意味するものではない。本開示の範囲は、添付の特許請求の範囲及びその等同物によってのみ制限される。本開示の範囲から逸脱することなく、当業者は様々な代替及び修正を行うことができ、これらの代替及び修正はいずれも本開示の範囲内にあるべきである。
【国際調査報告】