JP2022547956A - ブロックチェーンデータをインデックスする方法およびブロックチェーンデータを格納する方法 - Google Patents

ブロックチェーンデータをインデックスする方法およびブロックチェーンデータを格納する方法 Download PDF

Info

Publication number
JP2022547956A
JP2022547956A JP2022515743A JP2022515743A JP2022547956A JP 2022547956 A JP2022547956 A JP 2022547956A JP 2022515743 A JP2022515743 A JP 2022515743A JP 2022515743 A JP2022515743 A JP 2022515743A JP 2022547956 A JP2022547956 A JP 2022547956A
Authority
JP
Japan
Prior art keywords
transaction
index
note
query
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2022515743A
Other languages
English (en)
Other versions
JP7407912B2 (ja
Inventor
▲ウェイ▼▲偉▼ 邱
▲偉▼ 李
▲亮▼ 蔡
方蕾 黄
▲暁▼▲敏▼ ▲馬▼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Qulian Technology Co Ltd
Original Assignee
Hangzhou Qulian Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou Qulian Technology Co Ltd filed Critical Hangzhou Qulian Technology Co Ltd
Publication of JP2022547956A publication Critical patent/JP2022547956A/ja
Application granted granted Critical
Publication of JP7407912B2 publication Critical patent/JP7407912B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2272Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/389Keeping log of transactions for guaranteeing non-repudiation of a transaction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Business, Economics & Management (AREA)
  • Computer Security & Cryptography (AREA)
  • Accounting & Taxation (AREA)
  • Computing Systems (AREA)
  • Finance (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本出願は、ブロックチェーンデータをインデックスする方法およびブロックチェーンデータを格納する方法を開示する。当該方法では、まず、ブロックをブロックファイルに永続化し、1層目インデックスデータをインデックスデータベースに永続化し、次に照会条件に応じて、合致した取引位置を取得し、最後にブロックファイルから完全な取引を得る。本出願では、ブロックチェーンデータの格納処理プロセスを拡張し、ブロックチェーンインデックスデータを独立したインデックスデータベースに格納し、かつマルチデータベーストランザクションの原子性を確保することで、ビジネス情報を取引ノートフィールドにカスタマイズし、次に取引ノートインデックスフィールドをカスタマイズすることによって取引とビジネス情報を関連付け、最後に取引キー情報に基づいて完全な取引のデータインデックスを取得する仕組みが確立され、それに、ブロックチェーン上のブロックを再トラバースして解析することなく、特定の取引を迅速にインデックスすることができるため、ブロックチェーン取引のトレーサビリティーの効率が大幅に向上し、同時に、データの信頼性が確保され、取引データのトレーサビリティーの基礎が築かれる。

Description

本出願は、ブロックチェーンの技術分野に属し、特に、ブロックチェーンデータをインデックスする方法およびブロックチェーンデータを格納する方法に関する。
[関連出願の相互参照]
本出願は、2020年05月18日に提出され、「ブロックチェーンデータをインデックスする方法」と題された中国特許出願第202010419364.9号の優先権を主張し、そのすべての内容は参照により本出願に組み込まれている。
ブロックチェーン技術の急速な発展と普及に伴い、ブロックチェーンの技術研究およびその派生応用も爆発的な成長を呈している。ブロックチェーンデータは、改ざん防止、データの検証、データの追跡が可能であり、スマート・ガバメント、スマート・ヘルスケア、チャリティ・トラッキングやエビデンス・トレーサビリティを実現するための中核的な最先端技術となっている。既存のブロックチェーンシステムでは、一般的にKey-Value型のデータベースストレージエンジンとファイルストレージのハイブリッドストレージアーキテクチャを採用しており、ブロックや取引などの連続したデータはファイルに、その他のデータはKey-Value型のNoSQLデータベースに格納されている。そのため、データの検索において、Key値に基づいた粗視化照会しかできず、Valueの構造化されたデータを検索することができない。例えば、ある口座の取引をすべて照会したい場合、ブロックチェーン全体をトラバースし、ブロック番号をKeyとして対応するValueを取得し、ブロックの内容をデシリアライズした上で、取引送信者と取引受信者が両方とも指定された口座の取引をスクリーニングする必要がある。このような照会方法は効率が極めて低いため、実用性を有しない。別の例として、特定のビジネスアプリケーションに関連する取引をスクリーニングしたいユーザーは、ビジネスデータではなく、取引受信者(つまり契約アドレス)のみに基づいて行うことができ、これはユーザーにとって十分に直感的ではない。
この問題を解決するために、既存の解決手段には次の2つがある:1.リレーショナルデータベースをオフチェーンで展開して、ブロックチェーン上のデータをリアルタイムに同期させ、ブロックチェーンから同期したデータを構造化して格納する。2.基盤となるブロックチェーンシステムのストレージアーキテクチャとしてリレーショナルデータベースを使用する。前者は、データの同期効率が悪く、リアルタイム性に欠け、余分な冗長ストレージオーバーヘッドを追加し、かつオフチェーンデータベースからの照会は、既にブロックチェーンから外れており、データの信頼性を有しない。後者は、ブロックチェーンブロックデータ、取引データを構造化し、リレーショナルデータベースに格納するが、既存のKey-Value型に基づくストレージアーキテクチャでは、改良のコストが高く、NoSQLほどの性能を発揮できない。
どのようにして既存のストレージアーキテクチャを拡張し、冗長ストレージオーバーヘッドを最小限に抑え、システムのスループットへの影響を軽減することを前提に、既存のブロックチェーンシステムに、Valueに基づく照会をサポートさせ、さらに特定のビジネスに関連する取引への高速検索をサポートさせるかは、ブロックチェーンをトレーサビリティのシナリオで広く応用するために関心する必要がある重要な問題となっている。本出願は、従来技術の欠陥に対応するために、ブロックチェーンデータをインデックスする方法およびブロックチェーンデータを格納する方法を提供することを目的とする。
本出願の目的は、以下の技術的解決手段によって達成される。つまり、ブロックチェーンデータをインデックスする方法であり、
(1)ブロックチェーンクライアントが、ブロックチェーン取引を生成して検証ノードに送信するステップと、ここで、前記ブロックチェーン取引は、取引送信者、取引受信者、取引生成時間、取引ノートおよび取引ノートインデックスを含み、前記取引ノートインデックスのデータタイプは、数値、文字列または配列であり、前記配列は、数値、文字列のうちの少なくとも1つで構成され、配列の要素は順序付けられており、
(2)検証ノードがステップ(1)で送信された取引を受信すると、コンセンサス生成ブロックがブロックを生成した後にブロックを実行し、次にブロックに含まれる各取引の取引キー情報を抽出して取引キー情報リストを構成し、1層目インデックスデータを構築するステップと、ここで、前記1層目インデックスデータは、ブロック番号および取引キー情報リストを含み、前記取引キー情報は、取引送信者、取引受信者、取引生成時間、取引ノートインデックス、およびブロックにおける取引の位置を含み、
(3)検証ノードは、ステップ(2)で生成されたブロックをブロックファイルに永続化し、ステップ(2)で構築された1層目インデックスデータをインデックスデータベースに永続化するステップと、
(4)クライアントが、照会条件と検索モードを含む照会要求を検証ノードに送信するステップと、ここで、前記照会条件は、指定された取引送信者、取引受信者、取引生成時間、取引ノートインデックスのうちの1つ以上で構成され、前記検索モードは、複数条件AND照会、複数条件OR照会、取引ノートインデックスに基づく順次正確な照会、取引ノートインデックスに基づく非順次正確な照会、および取引ノートインデックスに基づく非順次一致照会を含み、
(5)検証ノードは、ステップ(4)でクライアントが送信した照会要求の検索モードに応じて、ステップ(3)で得られたインデックスデータベースから、照会条件に合致する取引キー情報に対応するブロック番号およびブロックにおける取引の位置を取得し、ステップ(3)で得られたブロックファイルに照会して完全な取引を取得し、クライアントに返信するステップと、を含む。
さらに、照会条件が取引ノートインデックスのみを含み、かつ指定された配列である場合、前記検索モードは、取引ノートインデックスに基づく順次正確な照会、取引ノートインデックスに基づく非順次正確な照会または取引ノートインデックスに基づく非順次一致照会から選択され、照会条件がそれ以外の場合、前記検索モードは、複数条件AND照会、または複数条件OR照会から選択される。
さらに、前記複数条件AND照会は、検証ノードがインデックスデータベースから検索して得られた特定の取引の取引キー情報が照会条件のすべての項目に合致するものであり、前記複数条件OR照会は、検証ノードがインデックスデータベースから検索して得られた特定の取引の取引キー情報が照会条件の少なくとも1項目に合致するものであり、ここで、特定の取引の取引キー情報に含まれる取引送信者、取引受信者または取引生成時間が、照会条件で指定された取引送信者、取引受信者または取引生成時間と同様である場合、当該取引の取引キー情報が照会条件の対応する1項目に合致することを示し、照会条件で指定された取引ノートインデックスが配列である場合、特定の取引の取引キー情報に含まれる取引ノートインデックスが、照会条件で指定された取引ノートインデックスの要素およびその順序と同様であれば、当該取引の取引キー情報が照会条件中の当該項目に合致することを示し、照会条件で指定された取引ノートインデックスが配列ではない場合、特定の取引の取引キー情報に含まれる取引ノートインデックスが、照会条件で指定された取引ノートインデックスの数値または文字列と同様であれば、当該取引の取引キー情報が照会条件中の当該項目に合致することを示す。
さらに、前記取引ノートインデックスに基づく順次正確な照会は、検証ノードがインデックスデータベースから検索して得られた特定の取引の取引キー情報に含まれる取引ノートインデックスが、照会条件で指定された取引ノートインデックスの要素およびその順序と同様であるということであり、前記取引ノートインデックスに基づく非順次正確な照会は、検証ノードがインデックスデータベースから検索して得られた特定の取引の取引キー情報に含まれる取引ノートインデックスが、照会条件で指定された取引ノートインデックスの要素と同様であるということであり、前記取引ノートインデックスに基づく非順次一致照会は、検証ノードがインデックスデータベースから検索して得られた特定の取引の取引キー情報に含まれる取引ノートインデックスが、照会条件で指定された取引ノートインデックスの要素の少なくとも1つを含むということである。
さらに、ステップ(3)で得られたインデックスデータベースにおける1層目インデックスデータに含まれる特定のフィールドに対して、ネイティブデータベースインデックスを2層目インデックスとして作成し、検証ノードが新規取引で構築された1層目インデックスデータをインデックスデータベースに永続化する際に、2層目インデックスを自動的に更新する。
さらに、前記2層目インデックスは、全インデックスまたは部分インデックスであり、前記全インデックスとは、インデックスデータベースにおける各1層目インデックスデータの特定のフィールドに対してネイティブデータベースインデックスを作成することを意味し、前記部分インデックスとは、1層目インデックスデータの特定のフィールドに対して、インデックスデータベースにおける1層目インデックスデータの一部を選択してその特定のフィールドのネイティブデータベースインデックスを作成し、つまり、部分インデックスを作成する際に、どの1層目のインデックスデータに対して2層目インデックスを作成し、どの1層目のインデックスデータに対して2層目インデックスを作成しないかを指定するためのフィルタ式を追加することを意味する。
さらに、前記取引ノートは、ブロックチェーンクライアントによってカスタマイズされた任意の取引関連データであり、前記取引ノートインデックスは、ブロックチェーンクライアントによってカスタマイズされた任意の取引関連インデックスである。
さらに、前記配列の要素は、30個以下である。
さらに、前記文字列は、1024ビット以下である。
さらに、前記ブロックファイルは、Key-Value型照会をサポートし、前記インデックスデータベースは、SQL様照会をサポートする非リレーショナルデータベースを使用する。
ブロックチェーンデータを格納する方法であって、前記格納方法が検証ノードに適用され、前記格納方法は、
取引送信者、取引受信者、取引生成時間、取引ノートおよび取引ノートインデックスを含むブロックチェーン取引を取得することと、
前記ブロックチェーン取引に応じて、コンセンサス生成ブロックがブロックを生成した後に前記ブロックを実行することと、
前記ブロックのブロック番号を取得し、かつ前記ブロックにおける各取引の、取引送信者、取引受信者、取引生成時間、取引ノートインデックス、ブロックにおける取引の位置を含む取引キー情報を抽出することと、
前記取引キー情報および前記ブロック番号に応じて、1層目インデックスデータを構築することと、
前記1層目インデックスデータをインデックスデータベースに永続化することと、
前記ブロックをブロックファイルに永続化することと、を含む。
本出願では、ブロックチェーンデータの格納処理プロセスを拡張し、ブロックチェーンインデックスデータを独立したインデックスデータベースに格納し、かつマルチデータベーストランザクションの原子性を確保することで、ビジネス情報を取引ノートフィールドにカスタマイズし、次に取引ノートインデックスフィールドをカスタマイズすることによって取引とビジネス情報を関連付け、最後に取引キー情報に基づいて完全な取引のデータインデックスを取得する仕組みが確立される。ブロックチェーン上のブロックを再トラバースして解析することなく、特定の取引を迅速にインデックスすることができるため、ブロックチェーン取引のトレーサビリティーの効率が大幅に向上し、また、データはブロックチェーン以外のデータベースではなく、ブロックチェーンの台帳から由来するため、データの信頼性が確保され、取引データのトレーサビリティーの基礎が築かれる。
本出願の技術的解決手段をより明確に説明するために、以下では、実施例または従来技術の説明で使用される図面を簡単に紹介する。当然のことながら、以下の説明における図面は、本出願のいくつかの実施例に過ぎず、当業者であれば、創造的労働を要することなく、これらの図面に基づく他の図面を得ることができる。
本出願の実施例が提供するブロックチェーンデータをインデックスする方法のフロー図である。 本出願の実施例が提供するブロックチェーンデータをインデックスする方法における1層目インデックスデータの構造を示す概略図である。 本出願の実施例が提供するブロックチェーンデータをインデックスする方法におけるデータの流れを示す概略図である。 本出願の実施例が提供するブロックチェーンに基づく銀行間振込サービスシステムのアーキテクチャ図である。
以下では、図面および具体的な実施例に基づいて本出願を詳細に説明することで、本出願の目的と効果がより明らかになる。
[実施例1]
ブロックチェーンデータをインデックスする方法であって、具体的には、図1に示すように、以下のステップS1、S2、S3、S4を含む。
S1、ブロックチェーンクライアントが、ブロックチェーン取引を生成して検証ノードに送信する。
前記ブロックチェーン取引は、取引送信者と取引受信者を含む取引参加者、取引生成時間、取引ノート情報および取引ノートインデックス情報を含む。ここで、取引ノート情報フィールドと取引ノートインデックス情報フィールドは、本出願が既存の取引データの構造を拡張したものである。
前記取引ノート情報フィールドは、クライアントによってカスタマイズされた任意のビジネス関連データ、例えば、デポジットハッシュ、商品情報、著作権情報などである。
前記取引ノートインデックス情報フィールドは、クライアントによってカスタマイズされた任意のビジネス関連インデックス情報であり、そのデータタイプは、数値、文字列(1024ビット以下)または配列であり、前記配列は、数値、文字列の少なくとも1つで構成され、ブロックチェーン取引が複数の取引ノートインデックス情報を有することを示し、配列に含まれる要素(数値、文字列)は30個以下であり、当該インデックス情報は、取引ノート情報フィールドに対応しても対応しなくてもよく、クライアントがどのように定義されるかによって決められる。取引ノートインデックス情報フィールドに応じて、1つ以上の特定の取引を迅速に検索し、取引で定義された完全なビジネスデータを得ることができ、例えば、取引ノートインデックスフィールドで定義された商品IDに応じて、取引ノートフィールドで定義された商品詳細を得る、取引ノートインデックスフィールドで定義された商品IDおよび商品追加/削除/修正/検査操作コードに応じて、取引ノートフィールドで定義された操作詳細を得る、取引ノートインデックスフィールドに格納された前回のビジネス操作に関連する取引ハッシュに応じて、前の取引をトレースするなどがある。これらの2つのフィールドの内容は完全にクライアントによって自由に定義され、ノードはその内容を気にする必要がなく、DDoS攻撃を防ぐためにこれらの2つのフィールドのサイズを制限するだけでよい。この設計により、クライアントはブロックチェーンの特性を利用して、所望のアプリケーションを柔軟に開発することができる。
S2、検証ノードがステップS1で送信された取引を受信すると、コンセンサス生成ブロックがブロックを生成した後にブロックを実行し、次にブロックデータと取引データに応じてブロックに含まれる各取引のキー情報を抽出し、1層目インデックスデータを構築する。
図2に示すように、前記1層目インデックスデータは、ブロックを単位とし、ブロック番号と取引キー情報リストの2つのフィールドを含む。前記取引キー情報リストに含まれる各取引は、いずれも取引参加者、取引生成時間、取引ノートインデックス情報、ブロックにおける取引の位置情報を含む。
S3、検証ノードは、ステップS2で生成されたブロックをブロックファイルに永続化し、ステップS2で構築された1層目インデックスデータをインデックスデータベースに永続化する。
図3に示すように、1層目インデックスデータおよび対応するブロックが、同じ検証ノードの異なるデータベースに格納される。前記ブロックは、Key-Value型照会をサポートするブロックファイルに格納され、ここで、Keyはブロック番号であり、Valueはブロック詳細であり、ブロックファイルは、ブロック番号に基づいてブロック詳細を得て、さらにブロック番号およびブロックにおける取引の位置に基づいて取引詳細を得ることのみをサポートしている。前記1層目インデックスデータは、インデックスデータベースに格納され、インデックスデータベースは、SQL様照会をサポートする非リレーショナルデータベース、例えばMongoDBである。1層目インデックスデータは、取引キー情報だけであり、インデックスデータベースに格納されるが、取引の完全な詳細情報および取引ノート情報はブロックファイルに格納されることで、インデックスデータベースの過剰な冗長格納が効果的に回避される。
インデックスデータベースとブロックファイルのデータ挿入は、トランザクションの原子性を有し、前記トランザクションの原子性とは、ノードがブロックを1つ生成するたびにデータ挿入トランザクションを生成することを意味し、複数のデータベースへの挿入は、すべてのデータベースへの新規データの挿入を成功させるか、新規データを挿入しないか、トランザクションの原子性を確保する必要がある。ブロックファイルに対するブロックの書き込みが成功し、インデックスデータベースへのデータ挿入が失敗した場合、ブロックファイルをロールバックする。インデックスデータベースに対するインデックスデータの挿入が成功し、ブロックファイルへの書き込みが失敗した場合、インデックスデータベースをロールバックする。したがって、ノードで新しいブロックが生成および格納されると、対応するインデックスデータが生成され、インデックスデータベースに格納されると考えられる。
S4、図3に示すように、クライアントが検証ノードに照会要求を送信するすると、検証ノードは、クライアントから送信された照会条件に応じて、ステップS3のインデックスデータベースから照会条件に合致する取引を取得し、当該取引が位置するブロックの番号およびブロックにおける取引の位置情報を得て、さらにブロック番号およびブロックにおける取引の位置情報に応じて、ステップS3のブロックファイルからO(1)時間計算量で照会して完全な取引を得て、クライアントに返信する。
前記照会要求は、照会条件および検索モードを含む。
前記照会条件は、取引送信者、取引受信者、取引生成時間、取引ノートインデックス情報条件のいずれか1つ以上で構成され、ここで、取引ノートインデックス情報が配列である場合、その中の数値または文字列は対応する順序を有する。
前記検索モードは、複数条件AND照会、複数条件OR照会、取引ノートインデックス情報に基づく順次正確な照会、取引ノートインデックス情報に基づく非順次正確な照会、および取引ノートインデックス情報に基づく非順次一致照会を含む。照会条件が取引ノートインデックス情報のみを含み、かつ配列である場合、検索モードは、取引ノートインデックス情報に基づく順次正確な照会、取引ノートインデックス情報に基づく非順次正確な照会、または取引ノートインデックス情報に基づく非順次一致照会から選択され、照会条件がそれ以外の場合、検索モードは、複数条件AND照会または複数条件OR照会から選択される。
前記複数条件AND照会は、検証ノードが、取引情報が照会条件に完全に合致する取引をインデックスデータベースから検索するものであり、すなわち、照会条件が取引送信者、取引受信者または取引生成時間を含む場合、それに対応して、検索された取引情報に含まれる取引送信者フィールド、取引受信者フィールド、および取引生成時間フィールドの値が、照会条件で指定された取引送信者、取引受信者および取引生成時間の値と等しくなり、照会条件が取引ノートインデックス情報条件を含む場合、それに対応して、検索された取引情報に含まれる取引ノートインデックスフィールドが、照会条件で指定された取引ノートインデックス値と等しくなり、それに対応して、照会条件で指定された取引ノートインデックス値が配列である場合、検索された取引情報の取引ノートインデックスフィールド値も配列であり、かつ配列の要素値および要素順序が照会条件で指定された配列と完全に一致する。
前記複数条件OR照会は、検証ノードが、取引情報の一部または全部が同じ照会条件に完全に合致する取引をインデックスデータベースから検索するものであり、すなわち、検索された取引情報が少なくとも照会条件のうちの1つに合致し、ここで、検索された取引情報が取引ノートインデックス情報条件の指定値およびその順序を含む場合にのみ、当該取引情報が照会条件の取引ノートインデックス情報条件に合致すると考えられる。
前記取引ノートインデックス情報に基づく順次正確な照会は、検証ノードが、取引ノートインデックスフィールドが照会条件で指定された取引ノートインデックスフィールドに完全に合致する取引をインデックスデータベースから検索するものであり、照会条件で指定された取引ノートインデックス情報のデータタイプが配列である場合、インデックスデータベースから検索された取引に含まれる取引ノートインデックスフィールドが必ず配列であり、かつ配列の要素および順序が、照会条件で指定された取引ノートインデックスフィールドで指定された値および順序と完全に等しくなることが求められる。
前記取引ノートインデックス情報に基づく非順次正確な照会は、検証ノードが、取引ノートインデックスフィールドが照会条件で指定された取引ノートインデックス情報の全部を含む取引をインデックスデータベースから検索するものであり、このような検索モードでは、照会条件で指定された取引ノートインデックス情報のデータタイプが配列でなければならず、インデックスデータベースから検索された取引に含まれる取引ノートインデックスフィールドが必ず配列であり、かつ照会条件で指定された取引ノートインデックス情報配列のすべての値を含むことが求められ、配列の値の順序は問われない。
前記取引ノートインデックス情報に基づく非順次一致照会は、検証ノードが、取引ノートインデックスフィールドが照会条件で指定された取引ノートインデックス情報の一部または全部を含む取引をインデックスデータベースから検索するものであり、このような検索モードでは、照会条件で指定された取引ノートインデックス情報のデータタイプが配列でなければならず、インデックスデータベースから検索された取引に含まれる取引ノートインデックスフィールドは、照会条件配列の任意の値を含むか、またはそれと等しい限り、配列でも非配列でもよい。検索された取引ノートインデックスフィールドが配列であり、かつ配列が複数の照会条件で指定された取引ノートインデックス情報配列で指定された複数の値を含む場合、配列内のこれらの値の順序が照会条件配列と一致するかどうかにかかわらず、照会条件に合致する取引であると考えられる。
データ量の飛躍的な増加に伴い、インデックスデータベースの検索効率にも影響が出てきて、データ検索効率をさらに高めるために、照会条件の使用率が高く、かつ照会効率が低い場合、インデックスデータベースの1層目インデックスに含まれるブロック番号、取引参加者、取引生成時間、取引ノートインデックス情報などのフィールドのいずれかに対してインデックス、すなわち2層目インデックスを作成することで、インデックスデータベースの照会効率を向上させる。検証ノードが2層目インデックスを作成した場合、ステップS3で1層目インデックスデータをインデックスデータベースに永続化する際に、インデックスデータベースの2層目インデックスを自動的に更新する。
前記2層目インデックスとは、インデックスデータベース内の1層目インデックスに含まれる特定のフィールドに対して作成したネイティブデータベースインデックスを意味し、その目的はインデックスデータベース内のデータ照会効率を高めることである。ブロックチェーンネットワークでは複数の分散型アプリケーションが実行されており、ブロックチェーンノード照会条件の使用率は、ブロックチェーン上の異なるアプリケーションシナリオに依存することが多く、異なるアプリケーションシナリオで生成される取引構造はすべて同様である。ブロックチェーン上で複数の分散型アプリケーション(DApp)が実行されていることを想定し、ここで、DApp Aは、取引ノートインデックス情報に応じて完全な取引詳細を照会するニーズが高く、当該照会条件の使用率が高く、当該照会条件でのDapp Aの照会効率を向上させるために、インデックスデータベース内の取引ノートインデックスフィールドに対して2層目インデックスを作成することは一般的である。しかし、他のDAppの場合、当該照会条件の使用率があまり高くないが、これらのDAppに関連する取引も、対応する2層目インデックスデータを生成することで、ノード格納スペースを浪費している。
したがって、前記2層目インデックスは、全インデックスと部分インデックスに分ける必要がある。前記全インデックスとは、インデックスデータベース内のすべての1層目インデックスに含まれる特定のフィールドに対してネイティブデータベースインデックスを作成することを意味する。前記部分インデックスとは、インデックスデータベース内の一部の1層目インデックスに含まれる特定のフィールドに対してネイティブデータベースインデックスをフィルタ式によって作成し、すなわち、2層目インデックスを作成する際に、どの1層目インデックスの特定のフィールドに対して2層目インデックスを作成するか、どの1層目インデックスの特定のフィールドに対して2層目インデックスを作成しないかを指定するためにフィルタ式を追加することである。部分インデックスは、格納圧力を軽減し、2層目インデックスの作成や2層目インデックスの更新に伴う性能の低下を抑えることができる。ブロックチェーンの取引構造では、口座アドレスとして、内部口座アドレスと外部口座アドレスがあり、内部口座アドレスは通常の振込のための口座アドレス、外部口座アドレスは契約アドレスを指し、取引構造における取引受信者は、内部口座アドレスまたは外部口座アドレスのいずれかである。したがって、各DAppのために外部口座アドレスを初期化し、その後取引受信者アドレスによって異なるDAppを区別することができる。さらに、引き続いて前述の例で説明する。DApp Aに対して部分インデックスを作成することで、それが取引ノートインデックス情報に基づいて完全な取引詳細を照会する照会効率を高め、かつ当該部分インデックスのフィルタ式を指定することができ、取引受信者アドレスがDApp Aアドレスである。このやり方によって、ノードは、取引受信者アドレスがDApp Aアドレスである取引に対してのみ2層目インデックスを作成し、それ以外の取引に対して2層目インデックスを作成しないようになる。
具体的には、読者がブロックチェーンデータのインデックス方法の有益な効果をさらに理解しやすいために、以下は例を挙げて、ブロックチェーンデータのインデックス方法を詳細に説明する。
例示的に、ブロックチェーンに基づく銀行間振込サービスシステムであって、全体的なシステムアーキテクチャは図4に示すとおりであり、銀行AとBは、それぞれ2つのブロックチェーン検証ノードが配備され、かつそれぞれのサービスシステムを有する。
銀行Aのユーザーから銀行Bのユーザーへの振込を想定した場合、銀行間振込流れとして、振込者が振込依頼を開始し、次に銀行Aと銀行Bが当該依頼に対して、ユーザー口座が正当であるか否か、口座が凍結されているか否か、残高が十分であるか否かを検証するという承認を行い、承認が得られた後に振込を行う。これにより、振込流れは、複数のステップで構成されており、各ステップはそれぞれ、振込流れの状態を記録するためのブロックチェーン取引に対応している。サービスシステムは、ユーザーの銀行間振込が成功したか否かを知るために、振込流れの状態を照会する必要がある。このようなビジネスでは、各振込を唯一に識別するための振込流れIDを必要とし、かつ振込流れIDを照会条件として、当該振込流れに関連するブロックチェーン取引を検証ノードから照会して取得することができる。したがって、振込流れIDを取引ノートインデックスフィールドに定義し、その後、取引ノートインデックス情報の照会条件および取引ノートインデックスに基づく順次正確な照会検索モードで構成される照会要求により、検証ノードから必要なブロックチェーン取引データを照会して取得する必要がある。
例示的に、ブロックチェーンに基づく音楽著作権情報追跡システムであって、本出願が提供する技術により、音楽著作権情報の開放性と透明性、侵害のトレーサビリティーを容易に実現する。例えば、曲の所有者が、作詞者、作曲者、歌手、著作権所有者などを含む曲の著作権情報をブロックチェーン上に公開した場合、曲の利用者が商業的利益のためにその曲を利用し、かつ著作権の所有者に属さなければ、当該利用者が権利を侵害していると考えられる。曲の著作権が変更されるたびに、最新の著作権情報を記録するためのブロックチェーン取引が対応して生成される。このようなビジネスでは、曲の著作権情報が取引ノートフィールドに定義され、曲のオーディオファイルハッシュが取引ノートインデックスフィールドに定義され、その後、取引ノートインデックス情報を含む照会条件と取引ノートインデックスに基づく順次正確な照会検索モードで構成される照会要求により、条件に合致するブロックチェーン取引データを検証ノードから照会して取得し、さらに取引ノートフィールドに定義された詳細な曲著作権情報を得る。
例示的に、3つの検索モード、すなわち、取引ノートインデックス情報に基づく順次正確な照会、取引ノートインデックス情報に基づく非順次正確な照会、および取引ノートインデックス情報に基づく非順次一致照会の例を以下に示すが、それによって、このような検索モードへの読者の理解を容易にし、さらにブロックチェーンに基づく望ましいサービスシステムを開発することに役立つ。
取引ノートフィールドの名称が「EXTRA」で、取引ノートインデックスフィールドの名称が「EXTRA_ID」であると想定し、さらに、現在、ブロックチェーン上には、EXTRA_IDがそれぞれ[123, ”abc”]、[”abc”, 123]、[123, ”efg”, ”abc”]、[123]、[”abc”]、123、”abc」である7つの取引があると想定する。
検索モードが、取引ノートインデックス情報に基づく順次正確な照会である場合には、
照会条件が{ ”EXTRA_ID”: [123] }であれば、照会条件に合致するEXTRA_IDは[123]の1つしか存在しない。
照会条件が{ ”EXTRA_ID”: ”abc” }であれば、照会条件に合致するEXTRA_IDは”abc”の1つしか存在しない。
照会条件が{ ”EXTRA_ID”: [123, ”abc”] }であれば、照会条件に合致するEXTRA_IDは[123, ”abc”]の1つしか存在しない。
検索モードが、取引ノートインデックス情報に基づく非順次正確な照会である場合には、
照会条件が{ ”EXTRA_ID”: 123 } または { ”EXTRA_ID”: ”abc” }であれば、エラーを返す。その理由として、この検索モードでは、照会条件が配列タイプである必要がある。
照会条件が { ”EXTRA_ID”: [123] }であれば、照会条件に合致するEXTRA_IDは、[123, ”abc”]、[”abc”, 123]、[123, ”efg”, ”abc”]、[123]の4つがある。
照会条件が{ ”EXTRA_ID”: [123, ”abc”] }であれば、照会条件に合致するEXTRA_IDは、[123, ”abc”]、[”abc”, 123]、[123, ”efg”, ”abc”]の3つがある。
検索モードが、取引ノートインデックス情報に基づく非順次一致照会である場合には、
照会条件が{ ”EXTRA_ID”: 123 } または { ”EXTRA_ID”: ”abc” }であれば、エラーを返す。その理由として、この検索モードでは、照会条件が配列タイプである必要がある。
照会条件が{ ”EXTRA_ID”: [123] }であれば、照会条件に合致するEXTRA_IDは、[123, ”abc”]、[”abc”, 123]、[123, ”efg”, ”abc”]、[123]、123の5つがある。
照会条件が{ ”EXTRA_ID”: [123, ”abc”] }であれば、すべてのEXTRA_ID、すなわち、[123, ”abc”]、[”abc”, 123]、[123, ”efg”, ”abc”]、[123]、[”abc”]、123、”abc”が照会条件に合致する。
[実施例2]
本出願の実施例はさらに、ブロックチェーンデータを格納する方法を提供し、格納方法は検証ノードに応用され、当該格納方法は、以下のステップS101、ステップS102、ステップS103、ステップS104、ステップS105、ステップS106を含む。
ステップS101、ブロックチェーン取引を取得する。
ここで、ブロックチェーン取引は、取引送信者、取引受信者、取引生成時間、取引ノートおよび取引ノートインデックスを含み、当該ブロックチェーン取引は、ブロックチェーンクライアントによって生成され、かつ検証ノードに送信され得る。
選択的に、取引ノートインデックスのデータタイプは、数値、文字列または配列であり、配列は、数値、文字列のうちの少なくとも1つで構成され、配列の要素は順序付けられている。
ここで、配列の要素は30個以下であり、文字列は、1024ビット以下である。
選択的に、取引ノートは、ブロックチェーン取引を送信するブロックチェーンクライアントによってカスタマイズされた任意の取引関連データであり、取引ノートインデックスは、ブロックチェーン取引を送信するブロックチェーンクライアントによってカスタマイズされた任意の取引関連インデックスである。
ステップS102、ブロックチェーン取引に応じて、コンセンサス生成ブロックがブロックを生成した後にブロックを実行する。
ここで、検証ノードがブロックチェーン取引を受信すると、自身のコンセンサス生成ブロックがブロックを生成し、かつ当該ブロックを実行する。
ステップS103、ブロックのブロック番号を取得し、かつブロックに含まれる各取引の取引キー情報を抽出する。
ここで、ブロックに含まれる各取引の取引キー情報に応じてキー情報リストを生成し、キー情報リストに含まれる各取引の取引キー情報は、取引送信者、取引受信者、取引生成時間、取引ノートインデックス、ブロックにおける取引の位置を含む。
ステップS104、取引キー情報およびブロック番号に応じて、1層目インデックスデータを構築する。
ここで、1層目インデックスデータは、ブロックを単位とし、1単位はブロック番号および取引キー情報リスト(すなわち、各取引の取引キー情報)を含む。
選択的に、取引キー情報およびブロック番号に応じて、1層目インデックスデータを構築するステップの後、さらに、
1層目インデックスデータに含まれる目標フィールドに対して、2層目インデックスを作成し、新しい取引で構築された1層目インデックスデータをインデックスデータベースに永続化する際に、2層目インデックスを自動的に更新することを含み、目標フィールドが1層目インデックスデータに含まれる特定のフィールドである。
ここで、2層目インデックスとは、インデックスデータベース内の1層目インデックスに含まれる特定のフィールドに対して作成したネイティブデータベースインデックスを意味し、その目的はインデックスデータベース内のデータ照会効率を高めることである。ブロックチェーンネットワークでは複数の分散型アプリケーションが実行されており、ブロックチェーンノード照会条件の使用率は、ブロックチェーン上の異なるアプリケーションシナリオに依存することが多く、異なるアプリケーションシナリオで生成される取引構造はすべて同様である。ブロックチェーン上で複数の分散型アプリケーション(DApp)が実行されていることを想定し、ここで、DApp Aは、取引ノートインデックス情報に応じて完全な取引詳細を照会するニーズが高く、当該照会条件の使用率が高く、当該照会条件でのDapp Aの照会効率を向上させるために、インデックスデータベース内の取引ノートインデックスフィールドに対して2層目インデックスを作成することは一般的である。しかし、他のDAppの場合、当該照会条件の使用率があまり高くないが、これらのDAppに関連する取引も、対応する2層目インデックスデータを生成することで、ノード格納スペースを浪費している。
選択的に、2層目インデックスは、全インデックスまたは部分インデックスであり、全インデックスとは、インデックスデータベースにおける各1層目インデックスデータの特定のフィールドに対してネイティブデータベースインデックスを作成することを意味し、部分インデックスとは、1層目インデックスデータの特定のフィールドに対して、インデックスデータベースにおける1層目インデックスデータの一部を選択してその特定のフィールドのネイティブデータベースインデックスを作成し、つまり、部分インデックスを作成する際に、どの1層目インデックスデータに対して2層目インデックスを作成し、どの1層目インデックスデータに対して2層目インデックスを作成しないかを指定するためのフィルタ式を追加することを意味する。
ここで、部分インデックスは、格納圧力を軽減し、2層目インデックスの作成や2層目インデックスの更新に伴う性能の低下を抑えることができる。ブロックチェーンの取引構造では、口座アドレスとして、内部口座アドレスと外部口座アドレスがあり、内部口座アドレスは通常の振込のための口座アドレス、外部口座アドレスは契約アドレスを指し、取引構造における取引受信者は、内部口座アドレスまたは外部口座アドレスのいずれかである。したがって、各DAppのために外部口座アドレスを初期化し、その後取引受信者アドレスによって異なるDAppを区別することができる。さらに、引き続いて前述の例で説明する。DApp Aに対して部分インデックスを作成することで、それが取引ノートインデックス情報に基づいて完全な取引詳細を照会する照会効率を高め、かつ当該部分インデックスのフィルタ式を指定することができ、取引受信者アドレスがDApp Aアドレスである。このやり方によって、ノードは、取引受信者アドレスがDApp Aアドレスである取引に対してのみ2層目インデックスを作成し、それ以外の取引に対して2層目インデックスを作成しないようになる。
ステップS105、1層目インデックスデータをインデックスデータベースに永続化する。
ここで、1層目インデックスデータおよび対応するブロックが、同じ検証ノードの異なるデータベースに格納される。1層目インデックスデータは、インデックスデータベースに格納され、インデックスデータベースは、SQL様照会をサポートする非リレーショナルデータベース、例えばMongoDBである。1層目インデックスデータは、取引キー情報だけであり、インデックスデータベースに格納されるが、取引の完全な詳細情報および取引ノート情報はブロックファイルに格納されることで、インデックスデータベースの過剰な冗長格納が効果的に回避される。
ステップS106、ブロックをブロックファイルに永続化する。
ここで、ブロックは、Key-Value型照会をサポートするブロックファイルに格納され、ここで、Keyはブロック番号であり、Valueはブロック詳細であり、ブロックファイルは、ブロック番号に基づいてブロック詳細を得て、さらにブロック番号およびブロックにおける取引の位置に基づいて取引詳細を得ることのみをサポートしている。
インデックスデータベースとブロックファイルのデータ挿入は、トランザクションの原子性を有し、トランザクションの原子性とは、ノードがブロックを1つ生成するたびにデータ挿入トランザクションを生成することを意味し、複数のデータベースへの挿入は、すべてのデータベースへの新規データの挿入を成功させるか、新規データを挿入しないか、トランザクションの原子性を確保する必要がある。ブロックファイルに対するブロックの書き込みが成功し、インデックスデータベースへのデータ挿入が失敗した場合、ブロックファイルをロールバックする。インデックスデータベースに対するインデックスデータの挿入が成功し、ブロックファイルへの書き込みが失敗した場合、インデックスデータベースをロールバックする。したがって、ノードで新しいブロックが生成および格納されると、対応するインデックスデータが生成され、インデックスデータベースに格納されると考えられる。
選択的に、当該格納方法は、さらに、
ブロックチェーンクライアントが送信した照会要求を取得することと、
照会要求の検索モードに応じて、インデックスデータベースから、照会要求の照会条件に合致する取引キー情報に対応するブロック番号およびブロックにおける取引の位置を取得することと、
ブロック番号および位置に応じて、ブロックファイルに照会して完全な取引を取得することと、を含む。
ここで、照会要求は、照会条件および検索モードを含み、照会条件は、取引送信者、取引受信者、取引生成時間、取引ノートインデックス情報条件のいずれか1つ以上で構成され、ここで、取引ノートインデックス情報が配列である場合、その中の数値または文字列は対応する順序を有する。
選択的に、照会条件が取引ノートインデックスのみを含み、かつ指定された配列である場合、検索モードは、取引ノートインデックスに基づく順次正確な照会、取引ノートインデックスに基づく非順次正確な照会、または取引ノートインデックスに基づく非順次一致照会から選択され、照会条件がそれ以外の場合、検索モードは、複数条件AND照会または複数条件OR照会から選択される。
選択的に、複数条件AND照会は、検証ノードがインデックスデータベースから検索して得られた特定の取引の取引キー情報が照会条件のすべての項目に合致するものであり、複数条件OR照会は、検証ノードがインデックスデータベースから検索して得られた特定の取引の取引キー情報が照会条件の少なくとも1項目に合致するものであり、ここで、特定の取引の取引キー情報に含まれる取引送信者、取引受信者または取引生成時間が、照会条件で指定された取引送信者、取引受信者または取引生成時間と同様である場合、当該取引の取引キー情報が照会条件の対応する1項目に合致することを示し、照会条件で指定された取引ノートインデックスが配列である場合、特定の取引の取引キー情報に含まれる取引ノートインデックスが、照会条件で指定された取引ノートインデックスの要素およびその順序と同様であれば、当該取引の取引キー情報が照会条件中の当該項目に合致することを示し、照会条件で指定された取引ノートインデックスが配列ではない場合、特定の取引の取引キー情報に含まれる取引ノートインデックスが、照会条件で指定された取引ノートインデックスの数値または文字列と同様であれば、当該取引の取引キー情報が照会条件中の当該項目に合致することを示す。
ここで、複数条件AND照会は、検証ノードがインデックスデータベースから検索して得られた特定の取引の取引キー情報が照会条件のすべての項目に合致するものであり、すなわち、複数条件AND照会は、検証ノードが、取引情報が照会条件に完全に合致する取引をインデックスデータベースから検索するものであり、照会条件が取引送信者、取引受信者または取引生成時間を含む場合、それに対応して、検索された取引情報に含まれる取引送信者フィールド、取引受信者フィールド、および取引生成時間フィールドの値が、照会条件で指定された取引送信者、取引受信者および取引生成時間の値と等しくなり、照会条件が取引ノートインデックス情報条件を含む場合、それに対応して、検索された取引情報に含まれる取引ノートインデックスフィールドが、照会条件で指定された取引ノートインデックス値と等しくなり、それに対応して、照会条件で指定された取引ノートインデックス値が配列である場合、検索された取引情報の取引ノートインデックスフィールド値も配列であり、かつ配列の要素値および要素順序が照会条件で指定された配列と完全に一致する。
複数条件OR照会は、検証ノードがインデックスデータベースから検索して得られた特定の取引の取引キー情報が照会条件の少なくとも1項目に合致するものであり、すなわち、複数条件OR照会は、検証ノードが、取引情報の一部または全部が同じ照会条件に完全に合致する取引をインデックスデータベースから検索するものであり、検索された取引情報が少なくとも照会条件のうちの1つに合致し、ここで、検索された取引情報が取引ノートインデックス情報条件の指定値およびその順序を含む場合にのみ、当該取引情報が照会条件の取引ノートインデックス情報条件に合致すると考えられる。
選択的に、取引ノートインデックスに基づく順次正確な照会は、検証ノードがインデックスデータベースから検索して得られた特定の取引の取引キー情報に含まれる取引ノートインデックスが、照会条件で指定された取引ノートインデックスの要素およびその順序と同様であるということであり、取引ノートインデックスに基づく非順次正確な照会は、検証ノードがインデックスデータベースから検索して得られた特定の取引の取引キー情報に含まれる取引ノートインデックスが、照会条件で指定された取引ノートインデックスの要素と同様であるということであり、取引ノートインデックスに基づく非順次一致照会は、検証ノードがインデックスデータベースから検索して得られた特定の取引の取引キー情報に含まれる取引ノートインデックスが、照会条件で指定された取引ノートインデックスの要素の少なくとも1つを含むということである。
ここで、取引ノートインデックスに基づく順次正確な照会は、検証ノードが、取引ノートインデックスフィールドが照会条件で指定された取引ノートインデックスフィールドに完全に合致する取引をインデックスデータベースから検索するものであり、照会条件で指定された取引ノートインデックス情報のデータタイプが配列である場合、インデックスデータベースから検索された取引に含まれる取引ノートインデックスフィールドが必ず配列であり、かつ配列の要素および順序が、照会条件で指定された取引ノートインデックスフィールドで指定された値および順序と完全に等しくなることが求められる。
取引ノートインデックスに基づく非順次正確な照会は、検証ノードが、取引ノートインデックスフィールドが照会条件で指定された取引ノートインデックス情報の全部を含む取引をインデックスデータベースから検索するものであり、このような検索モードでは、照会条件で指定された取引ノートインデックス情報のデータタイプが配列でなければならず、インデックスデータベースから検索された取引に含まれる取引ノートインデックスフィールドが必ず配列であり、かつ照会条件で指定された取引ノートインデックス情報配列のすべての値を含むことが求められ、配列の値の順序は問われない。
取引ノートインデックスに基づく非順次一致照会は、検証ノードが、取引ノートインデックスフィールドが照会条件で指定された取引ノートインデックス情報の一部または全部を含む取引をインデックスデータベースから検索するものであり、このような検索モードでは、照会条件で指定された取引ノートインデックス情報のデータタイプが配列でなければならず、インデックスデータベースから検索された取引に含まれる取引ノートインデックスフィールドは、照会条件配列の任意の値を含むか、またはそれと等しい限り、配列でも非配列でもよい。検索された取引ノートインデックスフィールドが配列であり、かつ配列が複数の照会条件で指定された取引ノートインデックス情報配列で指定された複数の値を含む場合、配列内のこれらの値の順序が照会条件配列と一致するかどうかにかかわらず、照会条件に合致する取引であると考えられる。
上述した実施例は、本出願の技術的解決手段を説明するためのものに過ぎず、これらを限定するためのものではない。前記の実施例を参照しながら本出願を詳細に説明したが、当業者であれば、前記の各実施例に記載された技術的解決手段を修正したり、それらの技術的特徴の一部を等価的に置き換えたりすることができることを理解すべきである。これらの修正や置き換えは、対応する技術的解決手段の本質を本出願の各実施例の技術的解決手段の要旨および範囲から逸脱させることなく、いずれも本出願の保護の範囲に含まれるものとする。

Claims (20)

  1. ブロックチェーンクライアントが、ブロックチェーン取引を生成して検証ノードに送信するステップ(1)であって、前記ブロックチェーン取引は、取引送信者、取引受信者、取引生成時間、取引ノートおよび取引ノートインデックスを含み、前記取引ノートインデックスのデータタイプは、数値、文字列または配列であり、前記配列は、数値、文字列のうちの少なくとも1つで構成され、配列の要素は順序付けられている、ステップ(1)と、
    検証ノードがステップ(1)で送信された取引を受信すると、コンセンサス生成ブロックがブロックを生成した後にブロックを実行し、次にブロックに含まれる各取引の取引キー情報を抽出して取引キー情報リストを構成し、1層目インデックスデータを構築するステップ(2)であって、前記1層目インデックスデータは、ブロック番号および取引キー情報リストを含み、前記取引キー情報は、取引送信者、取引受信者、取引生成時間、取引ノートインデックス、およびブロックにおける取引の位置を含む、ステップ(2)と、
    検証ノードは、ステップ(2)で生成されたブロックをブロックファイルに永続化し、ステップ(2)で構築された1層目インデックスデータをインデックスデータベースに永続化するステップ(3)と、
    クライアントが、照会条件と検索モードを含む照会要求を検証ノードに送信するステップ(4)であって、前記照会条件は、指定された取引送信者、取引受信者、取引生成時間、取引ノートインデックスのうちの1つ以上で構成され、前記検索モードは、複数条件AND照会、複数条件OR照会、取引ノートインデックスに基づく順次正確な照会、取引ノートインデックスに基づく非順次正確な照会、および取引ノートインデックスに基づく非順次一致照会を含む、ステップ(4)と、
    検証ノードは、ステップ(4)でクライアントが送信した照会要求の検索モードに応じて、ステップ(3)で得られたインデックスデータベースから、照会条件に合致する取引キー情報に対応するブロック番号およびブロックにおける取引の位置を取得し、ステップ(3)で得られたブロックファイルに照会して完全な取引を取得し、クライアントに返信するステップ(5)と、を含む、ことを特徴とするブロックチェーンデータをインデックスする方法。
  2. 照会条件が取引ノートインデックスのみを含み、かつ指定された配列である場合、前記検索モードは、取引ノートインデックスに基づく順次正確な照会、取引ノートインデックスに基づく非順次正確な照会または取引ノートインデックスに基づく非順次一致照会から選択され、照会条件がそれ以外の場合、前記検索モードは、複数条件AND照会、または複数条件OR照会から選択される、ことを特徴とする請求項1に記載のブロックチェーンデータをインデックスする方法。
  3. 前記複数条件AND照会は、検証ノードがインデックスデータベースから検索して得られた特定の取引の取引キー情報が照会条件のすべての項目に合致するものであり、前記複数条件OR照会は、検証ノードがインデックスデータベースから検索して得られた特定の取引の取引キー情報が照会条件の少なくとも1項目に合致するものであり、ここで、特定の取引の取引キー情報に含まれる取引送信者、取引受信者または取引生成時間が、照会条件で指定された取引送信者、取引受信者または取引生成時間と同様である場合、当該取引の取引キー情報が照会条件の対応する1項目に合致することを示し、照会条件で指定された取引ノートインデックスが配列である場合、特定の取引の取引キー情報に含まれる取引ノートインデックスが、照会条件で指定された取引ノートインデックスの要素およびその順序と同様であれば、当該取引の取引キー情報が照会条件中の当該項目に合致することを示し、照会条件で指定された取引ノートインデックスが配列ではない場合、特定の取引の取引キー情報に含まれる取引ノートインデックスが、照会条件で指定された取引ノートインデックスの数値または文字列と同様であれば、当該取引の取引キー情報が照会条件中の当該項目に合致することを示す、ことを特徴とする請求項2に記載のブロックチェーンデータをインデックスする方法。
  4. 前記取引ノートインデックスに基づく順次正確な照会は、検証ノードがインデックスデータベースから検索して得られた特定の取引の取引キー情報に含まれる取引ノートインデックスが、照会条件で指定された取引ノートインデックスの要素およびその順序と同様であるということであり、前記取引ノートインデックスに基づく非順次正確な照会は、検証ノードがインデックスデータベースから検索して得られた特定の取引の取引キー情報に含まれる取引ノートインデックスが、照会条件で指定された取引ノートインデックスの要素と同様であるということであり、前記取引ノートインデックスに基づく非順次一致照会は、検証ノードがインデックスデータベースから検索して得られた特定の取引の取引キー情報に含まれる取引ノートインデックスが、照会条件で指定された取引ノートインデックスの要素の少なくとも1つを含むことを示す、ことを特徴とする請求項2に記載のブロックチェーンデータをインデックスする方法。
  5. ステップ(3)で得られたインデックスデータベースにおける1層目インデックスデータに含まれる特定のフィールドに対して、ネイティブデータベースインデックスを2層目インデックスとして作成し、検証ノードが新規取引で構築された1層目インデックスデータをインデックスデータベースに永続化する際に、2層目インデックスを自動的に更新する、ことを特徴とする請求項1に記載のブロックチェーンデータをインデックスする方法。
  6. 前記2層目インデックスは、全インデックスまたは部分インデックスであり、前記全インデックスとは、インデックスデータベースにおける各1層目インデックスデータの特定のフィールドに対してネイティブデータベースインデックスを作成することを意味し、前記部分インデックスとは、1層目インデックスデータの特定のフィールドに対して、インデックスデータベースにおける1層目インデックスデータの一部を選択してその特定のフィールドのネイティブデータベースインデックスを作成し、つまり、部分インデックスを作成する際に、どの1層目インデックスデータに対して2層目インデックスを作成し、どの1層目インデックスデータに対して2層目インデックスを作成しないかを指定するためのフィルタ式を追加することを意味する、ことを特徴とする請求項5に記載のブロックチェーンデータをインデックスする方法。
  7. 前記取引ノートは、ブロックチェーンクライアントによってカスタマイズされた任意の取引関連データであり、前記取引ノートインデックスは、ブロックチェーンクライアントによってカスタマイズされた任意の取引関連インデックスである、ことを特徴とする請求項1に記載のブロックチェーンデータをインデックスする方法。
  8. 前記配列の要素は、30個以下である、ことを特徴とする請求項1に記載のブロックチェーンデータをインデックスする方法。
  9. 前記文字列は、1024ビット以下である、ことを特徴とする請求項1に記載のブロックチェーンデータをインデックスする方法。
  10. 前記ブロックファイルは、Key-Value型照会をサポートし、前記インデックスデータベースは、SQL様照会をサポートする非リレーショナルデータベースを使用する、ことを特徴とする請求項1に記載のブロックチェーンデータをインデックスする方法。
  11. 前記格納方法が検証ノードに適用され、前記格納方法は、
    取引送信者、取引受信者、取引生成時間、取引ノートおよび取引ノートインデックスを含むブロックチェーン取引を取得することと、
    前記ブロックチェーン取引に応じて、コンセンサス生成ブロックがブロックを生成した後に前記ブロックを実行することと、
    前記ブロックのブロック番号を取得し、かつ前記ブロックにおける各取引の、取引送信者、取引受信者、取引生成時間、取引ノートインデックス、ブロックにおける取引の位置を含む取引キー情報を抽出することと、
    前記取引キー情報および前記ブロック番号に応じて、1層目インデックスデータを構築することと、
    前記1層目インデックスデータをインデックスデータベースに永続化することと、
    前記ブロックをブロックファイルに永続化することと、を含む、ことを特徴とするブロックチェーンデータを格納する方法。
  12. 上述した前記取引キー情報および前記ブロック番号に応じて、1層目インデックスデータを構築するステップの後、さらに、
    前記1層目インデックスデータに含まれる目標フィールドに対して、2層目インデックスを作成し、新しい取引で構築された1層目インデックスデータをインデックスデータベースに永続化する際に、2層目インデックスを自動的に更新することを含み、前期目標フィールドが前期1層目インデックスデータに含まれる特定のフィールドである、ことを特徴とする請求項11に記載の格納方法。
  13. 前記2層目インデックスは、全インデックスまたは部分インデックスであり、
    前記全インデックスとは、前記インデックスデータベースにおける各1層目インデックスデータの特定のフィールドに対してネイティブデータベースインデックスを作成することを意味し、
    前記部分インデックスとは、1層目インデックスデータの特定のフィールドに対して、前記インデックスデータベースにおける1層目インデックスデータの一部を選択してその特定のフィールドのネイティブデータベースインデックスを作成し、つまり、部分インデックスを作成する際に、どの1層目インデックスデータに対して2層目インデックスを作成し、どの1層目インデックスデータに対して2層目インデックスを作成しないかを指定するためのフィルタ式を追加することを意味する、ことを特徴とする請求項12に記載の格納方法。
  14. 前記格納方法はさらに、
    ブロックチェーンクライアントが送信した照会要求を取得することと、
    前記照会要求の検索モードに応じて、前記インデックスデータベースから、前記照会要求の照会条件に合致する取引キー情報に対応するブロック番号およびブロックにおける取引の位置を取得することと、
    前記ブロック番号および前記位置に応じて、前記ブロックファイルに照会して完全な取引を取得することとを含む、ことを特徴とする請求項11に記載の格納方法。
  15. 前記照会条件が取引ノートインデックスのみを含み、かつ指定された配列である場合、前記検索モードは、前記取引ノートインデックスに基づく順次正確な照会、前記取引ノートインデックスに基づく非順次正確な照会または前記取引ノートインデックスに基づく非順次一致照会から選択され、照会条件がそれ以外の場合、前記検索モードは、複数条件AND照会、または複数条件OR照会から選択される、ことを特徴とする請求項14に記載の格納方法。
  16. 前記複数条件AND照会は、検証ノードが前記インデックスデータベースから検索して得られた特定の取引の取引キー情報が照会条件のすべての項目に合致するものであり、
    前記複数条件OR照会は、検証ノードが前記インデックスデータベースから検索して得られた特定の取引の取引キー情報が照会条件の少なくとも1項目に合致するものであり、
    ここで、特定の取引の取引キー情報に含まれる取引送信者、取引受信者または取引生成時間が、照会条件で指定された取引送信者、取引受信者または取引生成時間と同様である場合、当該取引の取引キー情報が照会条件の対応する一項目に合致することを示し、
    照会条件で指定された取引ノートインデックスが配列である場合、特定の取引の取引キー情報に含まれる取引ノートインデックスが、照会条件で指定された取引ノートインデックスの要素およびその順序と同様であれば、当該取引の取引キー情報が照会条件中の当該項目に合致することを示し、
    照会条件で指定された取引ノートインデックスが配列ではない場合、特定の取引の取引キー情報に含まれる取引ノートインデックスが、照会条件で指定された取引ノートインデックスの数値または文字列と同様であれば、当該取引の取引キー情報が照会条件中の当該項目に合致することを示す、ことを特徴とする請求項15に記載の格納方法。
  17. 上述した前記取引ノートインデックスに基づく順次正確な照会は、検証ノードが前記インデックスデータベースから検索して得られた特定の取引の取引キー情報に含まれる取引ノートインデックスが、照会条件で指定された取引ノートインデックスの要素およびその順序と同様であるということであり、
    上述した取引ノートインデックスに基づく非順次正確な照会は、検証ノードが前記インデックスデータベースから検索して得られた特定の取引の取引キー情報に含まれる取引ノートインデックスが、照会条件で指定された取引ノートインデックスの要素と同様であるということであり、
    上述した取引ノートインデックスに基づく非順次一致照会は、検証ノードが前記インデックスデータベースから検索して得られた特定の取引の取引キー情報に含まれる取引ノートインデックスが、照会条件で指定された取引ノートインデックスの要素の少なくとも1つを含むということである、ことを特徴とする請求項15に記載の格納方法。
  18. 前記取引ノートインデックスのデータタイプは、数値、文字列または配列であり、前記配列は、数値、文字列のうちの少なくとも1つで構成され、配列の要素は順序付けられている、ことを特徴とする請求項11に記載の格納方法。
  19. 前記取引ノートは、前記ブロックチェーン取引を送信するブロックチェーンクライアントによってカスタマイズされた任意の取引関連データであり、前記取引ノートインデックスは、前記ブロックチェーン取引を送信するブロックチェーンクライアントによってカスタマイズされた任意の取引関連インデックスである、ことを特徴とする請求項18に記載の格納方法。
  20. 前記ブロックファイルは、Key-Value型照会をサポートし、前記インデックスデータベースは、SQL様照会をサポートする非リレーショナルデータベースを使用する、ことを特徴とする請求項11に記載の格納方法。
JP2022515743A 2020-05-18 2020-12-28 ブロックチェーンデータをインデックスする方法およびブロックチェーンデータを格納する方法 Active JP7407912B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN202010419364.9A CN111339106B (zh) 2020-05-18 2020-05-18 一种区块链数据索引的方法
CN202010419364.9 2020-05-18
PCT/CN2020/140251 WO2021232804A1 (zh) 2020-05-18 2020-12-28 一种区块链数据索引的方法和区块链数据的存储方法

Publications (2)

Publication Number Publication Date
JP2022547956A true JP2022547956A (ja) 2022-11-16
JP7407912B2 JP7407912B2 (ja) 2024-01-04

Family

ID=71186479

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022515743A Active JP7407912B2 (ja) 2020-05-18 2020-12-28 ブロックチェーンデータをインデックスする方法およびブロックチェーンデータを格納する方法

Country Status (5)

Country Link
US (1) US20220414090A1 (ja)
EP (1) EP4155966A1 (ja)
JP (1) JP7407912B2 (ja)
CN (1) CN111339106B (ja)
WO (1) WO2021232804A1 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111339106B (zh) * 2020-05-18 2020-08-28 杭州趣链科技有限公司 一种区块链数据索引的方法
CN111782656B (zh) * 2020-06-30 2024-04-12 京东科技信息技术有限公司 数据读写方法及装置
CN112035466B (zh) * 2020-07-29 2024-04-19 北京智融云河科技有限公司 一种区块链查询外置索引开发框架
CN112087439B (zh) * 2020-09-02 2022-05-17 杭州趣链科技有限公司 区块链交易查询方法、系统、计算机设备和存储介质
CN114372051A (zh) * 2020-10-16 2022-04-19 华为技术有限公司 一种数据处理系统、基于区块链的数据处理方法及设备
CN112966126B (zh) * 2021-02-26 2021-09-17 南京审计大学 一种面向海量非结构化数据内容可查询可追溯的高可靠知识库构建方法
CN113064901A (zh) * 2021-04-06 2021-07-02 北京瑞卓喜投科技发展有限公司 在链上合约中形成数据微型索引的方法、装置和电子设备
CN113342832B (zh) * 2021-08-04 2021-11-02 北京快立方科技有限公司 一种数据库索引方法
CN113627937A (zh) * 2021-08-24 2021-11-09 上海点融信息科技有限责任公司 一种区块存储方法、装置、设备和存储介质
CN113821549B (zh) * 2021-09-23 2023-08-08 广东科学技术职业学院 一种基于云存储的区块链数据检索系统及方法
CN114020737A (zh) * 2021-10-20 2022-02-08 大连理工江苏研究院有限公司 一种区块链数据高效可信索引方法
CN114338719A (zh) * 2021-12-27 2022-04-12 杭州趣链科技有限公司 基于联盟链的证据处理方法、装置及电子设备
CN114896280A (zh) * 2022-03-22 2022-08-12 杭州未名信科科技有限公司 一种数据查询方法和系统
CN115408474B (zh) * 2022-11-03 2023-01-24 青岛理工大学 面向多源数据库的区块链海量数据存证系统及存证方法
CN115687276A (zh) * 2022-11-18 2023-02-03 抖音视界有限公司 一种文件处理方法、装置、电子设备及存储介质
CN116595024B (zh) * 2023-07-17 2023-09-26 中博信息技术研究院有限公司 一种海量数据区块链应用的处理方法及装置

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001236358A (ja) * 2000-02-23 2001-08-31 Ricoh Co Ltd 文書検索方法および装置
JP2013077205A (ja) * 2011-09-30 2013-04-25 Toshiba Corp データベース要求処理装置及びプログラム
JP2018132931A (ja) * 2017-02-15 2018-08-23 富士通株式会社 承認システム、承認方法および承認プログラム
US20180268504A1 (en) * 2017-03-15 2018-09-20 Factom Indexing Mortgage Documents via Blockchains
JP2019176458A (ja) * 2018-03-28 2019-10-10 マクロジェン・インコーポレイテッドMacrogen, Inc. 複数のブロックチェーンに基づいたデータ共有方法
US20200050595A1 (en) * 2017-05-09 2020-02-13 Accenture Global Solutions Limited Data storage layer index for efficient information retrieval
JP2020509690A (ja) * 2017-02-22 2020-03-26 アリババ・グループ・ホールディング・リミテッドAlibaba Group Holding Limited 業務検証方法および装置
JP2020057221A (ja) * 2018-10-02 2020-04-09 株式会社ユナイテッドスマイルズ 情報処理方法、情報処理装置及びプログラム

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107239954B (zh) * 2017-06-07 2021-01-22 北京汇通金财信息科技有限公司 一种提高区块产生速度的方法及装置
US11281644B2 (en) * 2017-07-28 2022-03-22 Hitachi, Ltd. Blockchain logging of data from multiple systems
US20190095585A1 (en) * 2017-09-27 2019-03-28 International Business Machines Corporation Blockchain based proactive chromosomal determination
CN108170857B (zh) * 2018-01-22 2019-10-18 广州市中智软件开发有限公司 一种电子证照跨域互联服务的建立方法和调用方法
CN108897758A (zh) * 2018-05-15 2018-11-27 深圳市网心科技有限公司 一种区块链交易查询方法、装置、系统和存储介质
CN110022298B (zh) * 2019-03-04 2021-04-06 创新先进技术有限公司 基于区块链的证据验证的方法、装置、电子设备
CN110750541B (zh) * 2019-10-18 2023-05-02 天津理工大学 一种基于区块链的数据存储索引系统及方法
CN111104386B (zh) * 2019-11-04 2023-09-01 京东科技信息技术有限公司 一种文件存储方法、终端及存储介质
CN110874365B (zh) * 2019-11-20 2023-11-17 深圳市迅雷网络技术有限公司 一种信息查询方法及其相关设备
CN111339106B (zh) * 2020-05-18 2020-08-28 杭州趣链科技有限公司 一种区块链数据索引的方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001236358A (ja) * 2000-02-23 2001-08-31 Ricoh Co Ltd 文書検索方法および装置
JP2013077205A (ja) * 2011-09-30 2013-04-25 Toshiba Corp データベース要求処理装置及びプログラム
JP2018132931A (ja) * 2017-02-15 2018-08-23 富士通株式会社 承認システム、承認方法および承認プログラム
JP2020509690A (ja) * 2017-02-22 2020-03-26 アリババ・グループ・ホールディング・リミテッドAlibaba Group Holding Limited 業務検証方法および装置
US20180268504A1 (en) * 2017-03-15 2018-09-20 Factom Indexing Mortgage Documents via Blockchains
US20200050595A1 (en) * 2017-05-09 2020-02-13 Accenture Global Solutions Limited Data storage layer index for efficient information retrieval
JP2019176458A (ja) * 2018-03-28 2019-10-10 マクロジェン・インコーポレイテッドMacrogen, Inc. 複数のブロックチェーンに基づいたデータ共有方法
JP2020057221A (ja) * 2018-10-02 2020-04-09 株式会社ユナイテッドスマイルズ 情報処理方法、情報処理装置及びプログラム

Also Published As

Publication number Publication date
US20220414090A1 (en) 2022-12-29
JP7407912B2 (ja) 2024-01-04
CN111339106A (zh) 2020-06-26
EP4155966A1 (en) 2023-03-29
WO2021232804A1 (zh) 2021-11-25
CN111339106B (zh) 2020-08-28

Similar Documents

Publication Publication Date Title
JP7407912B2 (ja) ブロックチェーンデータをインデックスする方法およびブロックチェーンデータを格納する方法
US20190258625A1 (en) Data partitioning and ordering
US7702640B1 (en) Stratified unbalanced trees for indexing of data items within a computer system
CN103020315B (zh) 一种基于主从分布式文件系统的海量小文件存储方法
CN111597015B (zh) 事务处理方法、装置、计算机设备及存储介质
US10275400B1 (en) Systems and methods for forming a fault-tolerant federated distributed database
KR20220012353A (ko) 블록체인 트랜잭션의 데이터 필드의 검증
WO2005036403A1 (en) Database management system, data structure generating method for database management system, and storage medium therefor
CN103023982A (zh) 一种云存储客户端的低延迟元数据访问方法
CN102890678A (zh) 一种基于格雷编码的分布式数据布局方法及查询方法
US11868328B2 (en) Multi-record index structure for key-value stores
CN101082935B (zh) 一种内存数据的非唯一索引检索方法
CN111444027A (zh) 事务处理方法、装置、计算机设备及存储介质
CN111949315A (zh) 用于区块链账本数据的管理装置和方法
CN101963993B (zh) 一种数据库单表记录快速查找的方法
CN111522791A (zh) 一种分布式文件重复数据删除系统及方法
US8005844B2 (en) On-line organization of data sets
CN110928923A (zh) 一种基于区块链的数据存储方法及系统
CN113535803B (zh) 一种基于关键字索引的区块链高效检索及可靠性验证方法
CN102597969A (zh) 带属性的键值存储的数据库管理装置及其键值存储结构的高速缓存装置
Mbinkeu et al. Reducing disk storage with sqlite into bitcoin architecture
CN106484379B (zh) 一种应用的处理方法及装置
CN116663053A (zh) 一种支持丰富检索的区块链高效可验证查询方法
WO2023160040A1 (zh) 基于区块链的数据处理方法、装置、设备及可读存储介质
Kong et al. WST+ iMPT: A High-performance Incremental Verification World State Model for Massive Accounts

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220309

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230421

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230605

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230810

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20231120

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20231219

R150 Certificate of patent or registration of utility model

Ref document number: 7407912

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150