JP6955026B2 - 並列処理ブロックチェーントランザクションのためのシステムおよび方法 - Google Patents

並列処理ブロックチェーントランザクションのためのシステムおよび方法 Download PDF

Info

Publication number
JP6955026B2
JP6955026B2 JP2019553286A JP2019553286A JP6955026B2 JP 6955026 B2 JP6955026 B2 JP 6955026B2 JP 2019553286 A JP2019553286 A JP 2019553286A JP 2019553286 A JP2019553286 A JP 2019553286A JP 6955026 B2 JP6955026 B2 JP 6955026B2
Authority
JP
Japan
Prior art keywords
transaction
blockchain
data structure
transactions
block
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.)
Active
Application number
JP2019553286A
Other languages
English (en)
Other versions
JP2020519983A (ja
Inventor
コイルー シエ
コイルー シエ
ニン シア
ニン シア
Original Assignee
アドバンスド ニュー テクノロジーズ カンパニー リミテッド
アドバンスド ニュー テクノロジーズ カンパニー リミテッド
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 アドバンスド ニュー テクノロジーズ カンパニー リミテッド, アドバンスド ニュー テクノロジーズ カンパニー リミテッド filed Critical アドバンスド ニュー テクノロジーズ カンパニー リミテッド
Publication of JP2020519983A publication Critical patent/JP2020519983A/ja
Application granted granted Critical
Publication of JP6955026B2 publication Critical patent/JP6955026B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9027Trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • 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
    • 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/04Payment circuits
    • G06Q20/06Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
    • G06Q20/065Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
    • 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/08Payment architectures
    • G06Q20/10Payment architectures specially adapted for electronic funds transfer [EFT] systems; specially adapted for home banking systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • 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
    • G06Q2220/00Business processing using cryptography
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/56Financial cryptography, e.g. electronic payment or e-cash
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/80Wireless
    • H04L2209/805Lightweight hardware, e.g. radio-frequency identification [RFID] or sensor

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Accounting & Taxation (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Software Systems (AREA)
  • Finance (AREA)
  • General Engineering & Computer Science (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Development Economics (AREA)
  • Economics (AREA)
  • Power Engineering (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Description

本出願は、一般に並列処理ブロックチェーントランザクションのための方法およびデバイスに関する。
ブロックチェーンは、主要な情報を検証し、信頼を築く、より迅速で安全なやり方を提供するためにインターネットの開放性と暗号の安全性とを組み合わせる。しかし、ブロックチェーントランザクションのソフトウェアおよびハードウェア性能は、様々なパラメータにおいて従来の分散システムに依然として遅れを取っている。現在の技術において、複数のトランザクションを実行するために、状態ツリーは、更新のためにロックされ、更新後にアンロックされ、トランザクションは、更新中は直列に処理される。この直列処理方式はブロックチェーンのTPS(トランザクション件数:transaction per second)性能を制限する。例えば、毎秒7つのビットコイントランザクションしか実行することができない。したがって、より大量のトランザクションに対処するための実行効率などのブロックチェーンシステム性能を改善することが望ましい。
本明細書の様々な実施形態は、並列処理ブロックチェーントランザクションのためのシステム、方法、および非一時的コンピュータ可読媒体を含むが、それらに限定されない。
いくつかの実施形態において、並列処理ブロックチェーントランザクションのためのコンピュータ実装方法が、ブロックチェーンに追加するための複数の候補トランザクションを取得するステップと、候補トランザクションを1つまたは複数のトランザクショングループにグループ化するステップと、ブロックチェーンの最新ブロックのデータ構造の少なくとも一部分の1つまたは複数の複写を作成するステップと、1つまたは複数のトランザクショングループをそれぞれデータ構造の1つまたは複数の複写に関連付けるステップと、トランザクショングループのそれぞれにおける候補トランザクションを実行し、データ構造の関連付けられた複写を更新するステップと、ブロックチェーンに追加するべき新たなブロックの新たなデータ構造の少なくとも一部分を取得するために、データ構造の更新された複写をマージするステップと、を含む。
他の実施形態において、1つまたは複数のトランザクショングループは、独立したトランザクショングループである。
さらに他の実施形態において、候補トランザクションを1つまたは複数のトランザクショングループにグループ化するステップは、それぞれに1つまたは複数のトランザクショングループのうちの同じトランザクショングループの下で少なくとも1つの共通のトランザクションアカウントが関与する候補トランザクションのうちの2つ以上をグループ化するステップを含む。
さらに他の実施形態において、候補トランザクションを1つまたは複数のトランザクショングループにグループ化するステップは、1つまたは複数のトランザクショングループのうちの異なるトランザクショングループの下で任意の共通のトランザクションアカウントが関与しない候補トランザクションのうちの2つ以上をグループ化するステップを含む。
いくつかの実施形態において、ブロックチェーンは、アカウント/残高モデルに基づいており、データ構造は、最新ブロックに記憶された単一の状態ルートノードと、最新ブロックに記憶されていない複数の中間ノードおよびリーフノードと、を備えるマークルパトリシアツリーを備える。
他の実施形態において、トランザクショングループのそれぞれにおける候補トランザクションを実行し、データ構造の関連付けられた複写を更新するステップは、並列に、トランザクショングループのそれぞれにおける候補トランザクションを実行し、データ構造の関連付けられた複写を更新するステップを含む。
さらに他の実施形態において、対応するトランザクショングループにおける候補トランザクションを実行するステップは、対応するトランザクショングループにおける候補トランザクションをマルチコアプロセッサによって実行するステップを含む。
さらに他の実施形態において、データ構造の関連付けられた複写を更新するステップは、データ構造の関連付けられた複写のうちの1つにおけるトランザクションアカウントの残高を更新するステップ、トランザクションアカウントを除去するステップ、または新たなトランザクションアカウントを追加するステップのうちの少なくとも1つを含む。
いくつかの実施形態において、データ構造の更新された複写をマージするステップは、データ構造の更新された複写において行われた更新を組み合わせ、組み込むことによってブロックチェーンの最新ブロックのデータ構造の少なくとも一部分を更新するステップを含む。
他の実施形態において、方法は、新たなブロックをブロックチェーンに追加するステップであって、新たなデータ構造の一部分は、新たな状態ルートノードを備え、新たなブロックは、新たな状態ルートノードを備える、追加するステップをさらに含む。
さらに他の実施形態において、並列処理ブロックチェーントランザクションのためのシステムが、1つまたは複数のプロセッサと、1つまたは複数のプロセッサに結合され、前述の実施形態のうちのいずれかの方法を実施するために1つまたは複数のプロセッサによって実行可能である命令を記憶させた1つまたは複数のコンピュータ可読メモリと、を備える。
さらに他の実施形態において、並列処理ブロックチェーントランザクションのための装置が、前述の実施形態のうちのいずれかの方法を実施するための複数のモジュールを備える。
いくつかの実施形態において、非一時的コンピュータ可読媒体が、デバイスのプロセッサによって実行されたとき、デバイスに前述の実施形態のうちのいずれかの方法を実施させる命令を記憶させている。
他の実施形態において、並列処理ブロックチェーントランザクションのためのシステムが、1つまたは複数のプロセッサと、1つまたは複数のプロセッサに結合され、以下を含む動作をシステムに実施させる、1つまたは複数のプロセッサによって実行可能な命令を用いて構成された1つまたは複数の非一時的コンピュータ可読メモリと、を備える。すなわち、ブロックチェーンに追加するための複数の候補トランザクションを取得するステップと、候補トランザクションを1つまたは複数のトランザクショングループにグループ化するステップと、ブロックチェーンの最新ブロックのデータ構造の少なくとも一部分の1つまたは複数の複写を作成するステップと、1つまたは複数のトランザクショングループをそれぞれデータ構造の1つまたは複数の複写に関連付けるステップと、トランザクショングループのそれぞれにおける候補トランザクションを実行し、データ構造の関連付けられた複写を更新するステップと、ブロックチェーンに追加するべき新たなブロックの新たなデータ構造の少なくとも一部分を取得するためにデータ構造の更新された複写をマージするステップと、である。
さらに他の実施形態において、プロセッサは、マルチコアプロセッサを備える。
さらに他の実施形態において、非一時的コンピュータ可読記憶媒体が、以下を含む動作を1つまたは複数のプロセッサに実施させる、1つまたは複数のプロセッサによって実行可能な命令を用いて構成される。すなわち、ブロックチェーンに追加するための複数の候補トランザクションを取得するステップと、候補トランザクションを1つまたは複数のトランザクショングループにグループ化するステップと、ブロックチェーンの最新ブロックのデータ構造の少なくとも一部分の1つまたは複数の複写を作成するステップと、1つまたは複数のトランザクショングループをそれぞれデータ構造の1つまたは複数の複写に関連付けるステップと、トランザクショングループのそれぞれにおける候補トランザクションを実行し、データ構造の関連付けられた複写を更新するステップと、ブロックチェーンに追加するべき新たなブロックの新たなデータ構造の少なくとも一部分を取得するためにデータ構造の更新された複写をマージするステップと、である。
いくつかの実施形態によれば、並列処理ブロックチェーントランザクションのための装置が、ブロックチェーンに追加するための複数の候補トランザクションを取得するための取得モジュールと、候補トランザクションを1つまたは複数のトランザクショングループにグループ化するためのグループ化モジュールと、ブロックチェーンの最新ブロックのデータ構造の少なくとも一部分の1つまたは複数の複写を作成するための作成モジュールと、1つまたは複数のトランザクショングループをそれぞれデータ構造の1つまたは複数の複写に関連付けるための関連付けモジュールと、トランザクショングループのそれぞれにおける候補トランザクションを実行し、データ構造の関連付けられた複写を更新するための実行モジュールと、ブロックチェーンに追加するべき新たなブロックの新たなデータ構造の少なくとも一部分を取得するためにデータ構造の更新された複写をマージするためのマージモジュールと、を備える。
本明細書に開示する実施形態は、1つまたは複数の技術的効果を有する。いくつかの実施形態において、コンセンサス検証(マイニング)の後は候補トランザクションのプールを、および実行の前は候補トランザクションを、様々な独立したグループにグループ化することができる。他の実施形態において、候補トランザクションのグループは、状態ツリーの複写を更新するマルチコアプロセッサ(例えば、CPU)によって同時に実行することができる。さらに他の実施形態において、状態ツリーデータ構造の複写を作成することによって、候補トランザクションの独立したグループは、データ構造をロックする必要なしに複写において並列に処理することができる。さらに他の実施形態において、すべての独立したグループが更新された後、状態ツリーデータ構造の複写は、新たなブロックの新たなデータ構造を取得するためにマージすることができ、したがって、新たなブロックの効率的なマイニングを実現することができる。いくつかの実施形態において、TPSおよび他の処理効率測定値などのブロックチェーン性能を顕著に改善することができる。
本明細書に開示するシステム、方法、および非一時的コンピュータ可読媒体のこれらのおよび他の特徴、ならびに動作の方法および構造の関連した要素の機能および部分の組合せおよび製造の経済性は、そのすべてが本明細書の一部を構成し、同じ参照番号が様々な図における対応する部分を指定する、添付の図面を参照して以下の説明および添付の特許請求の範囲を検討することにより、より明らかとなるであろう。しかし、図面は、例示および説明だけのためであり、限定することが意図されていないことを明確に理解されたい。
様々な実施形態による、並列処理ブロックチェーントランザクションのための例示的なシステムを示す。 様々な実施形態による、ブロックチェーンおよび対応する状態ツリーの2つの例示的なブロックを示す。 様々な実施形態による、並列処理ブロックチェーントランザクションのための例示的な方法の流れ図を示す。 様々な実施形態による、状態ツリーの2つの複写の例示的なマージを示す。 様々な実施形態による、並列処理ブロックチェーントランザクションのための例示的な方法の流れ図を示す。 様々な実施形態による、並列処理ブロックチェーントランザクションのための例示的な装置の流れ図を示す。 本明細書に説明する実施形態のうちのいずれかを実装することができる、例示的なコンピュータシステムのブロック図を示す。
ブロックチェーンは、動作がネットワークにおける様々なノード(例えば、コンピューティングデバイス)によって実施されるので、一般に分散台帳と称される、非集中データベースとみなすことができる。任意の情報は、ブロックチェーンに書き込み、それからセーブまたは読み込むことができる。誰でもサーバをセットアップし、ブロックチェーンネットワークに参加して、ノードとなることができる。任意のノードは、現在のブロックチェーンにブロックを追加するためにハッシュ計算などの複雑な計算を実施することによってブロックチェーンを維持するのに計算能力を提供することができ、追加されたブロックは、様々な種類のデータまたは情報を含むことができる。追加されたブロックのために計算能力を提供したノードは、代用貨幣(例えば、デジタル通貨単位)が報酬として与えられる可能性がある。ブロックチェーンは中心ノードを何も有さないので、各ノードは等しく、ブロックチェーンデータベース全体を保持する。
ノードは、例えば、ブロックチェーンネットワークをサポートし、それを順調に動かし続けるコンピューティングデバイスまたは大型コンピュータシステムである。例示的な「プルーフオブワーク」システムにおいて、フルノードと軽量ノードの2種類のノードがある。フルノードは、ブロックチェーンの完全な複写を保持する。ブロックチェーンネットワーク上のフルノードは、それらが受け取るトランザクションおよびブロックの妥当性を検査し、それらを、トランザクションのコンセンサス検証を提供するために、接続されたピアに中継する。他方、軽量ノードは、ブロックチェーンのほんのわずかだけダウンロードする。例えば、軽量ノードは、デジタル通貨トランザクションに使用される。軽量ノードは、取引したいとき、フルノードと通信する。
この非集中化特性により、管理センタの制御された位置における出現が防止されるのに役立つ場合がある。例えば、ビットコイン/イーサリアムブロックチェーンの維持は、運営領域におけるビットコイン/イーサリアムソフトウェアの通信ノードのネットワークによって実施される。すなわち、従来の意味における銀行、団体、または管理者の代わりに、コンピュータサーバの形態でビットコイン/イーサリアムソフトウェアを実行する複数の仲介人が存在する。これらのコンピュータサーバは、インターネットを介して接続されたネットワークを形成し、誰でも潜在的にネットワークに参加することができる。ネットワークによって対処されるトランザクションは、「ユーザAがZビットコイン/イーサをユーザBに送りたい」形態であることができ、トランザクションは、すぐに利用できるソフトウェアアプリケーションを使用してネットワークに同報通信される。これらの金融トランザクションの妥当性を検査するように作動するビットコイン/イーサリアムサーバとしてのコンピュータサーバの機能は、それらの記録をそれらの台帳の複写に追加し、次いで、ネットワークの他のサーバへのこれらの台帳の追加を同報通信する。本明細書は、例として、ビットコインおよびイーサリアムなどの、1つまたは複数のブロックチェーンまたはデジタル通貨を使用する。本明細書に開示する技術的解決策は、他の種類のブロックチェーンおよびデジタル通貨を使用し、またはそれに適用することができることを当業者は理解されたい。
図1は、様々な実施形態による、様々な開示するステップおよび方法を実施するための例示的なシステム100を示す。図示するように、ブロックチェーンネットワークが、複数のブロックチェーンノード(例えば、ノード1、ノード2、...、およびノードi)を備えることができる。ブロックチェーンノードは、サーバ、コンピュータなどに実装することができる。各ブロックチェーンノードは、TCP/IPなどの様々な種類の通信方法を介して互いに結合された1つまたは複数の物理的ハードウェアデバイスまたは仮想デバイスに対応することができる。分類により、ブロックチェーンノードは、フルノード、Gethノード、コンセンサスノードなどを備えることができる。一例において、「プルーフオブワーク」システムの下で、ブロックチェーンノードは、それらのハードウェアまたは計算能力を適用して、ブロックチェーンのブロックを検証し、報酬を受け取るマイナーのデバイスを備えることができる。そのような検証を実施しないブロックチェーンノードは、軽量ノードを備える。別の例において、「プルーフオブステーク/サービス」システムの下で、あるレベルの議決権を有するブロックチェーンノードは、コンセンサス/マスターノードと称する場合があり、それは、非コンセンサスノードとは対照的に、トランザクション検証の責任を負う。コンセンサスノードは、新たなブロックチェーンブロックを生成し、そのブロックチェーンのために、例えば、ブロックチェーンのサービス料を設定する判断をすることができる。コンセンサスノードは、大量の暗号通貨に関連付け、相互に合意した、あるコンセンサスルールに基づいて新たなトランザクションを検証することができる。本明細書において、上記のまたは別のブロックチェーンシステムにおけるフルノード、コンセンサスノード、または他の同等のノードは、ブロックチェーンノードとしてトランザクションを検証することができる。
また、図1に示すように、ユーザAは、ユーザAのアカウントにおけるいくらかの資産をユーザBのアカウントに移転させることによってユーザBと取引したいと思うことができる。ユーザAおよびユーザBは、トランザクションのために適当なブロックチェーンソフトウェア(例えば、暗号通貨ウォレット)がインストールされた対応するデバイスを使用することができる。ユーザAのデバイスは、受領者ノードBと称するユーザBのデバイスとトランザクションを開始するイニシエータノードAと称することができる。ノードAは、ノード1との通信を通じてブロックチェーンにアクセスすることができ、ノードBは、ノード2との通信を通じてブロックチェーンにアクセスすることができる。例えば、ノードAおよびノードBは、トランザクションをブロックチェーンに追加することを要求するためにノード1およびノード2を通じてトランザクションをブロックチェーンに提出することができる。ブロックチェーン外では、ノードAおよびノードBは、通信(例えば、ノード1および2を経由しない通常のインターネット通信)の他のチャネルを有することができる。いくつかの実施形態において、ノードA上のブロックチェーンソフトウェアは、ブロックチェーンノード1のフロントエンドとみなすことができ、ブロックチェーンノード1は、ブロックチェーンソフトウェアのバックエンドを実行する。
図1のノードのそれぞれは、プロセッサ(例えば、マルチコアプロセッサ)と、本明細書に説明する並列処理ブロックチェーントランザクションのための様々なステップをノード(例えば、プロセッサ)に実施させる、プロセッサによって実行可能な命令を用いて構成された非一時的コンピュータ可読記憶媒体と、を備えることができる。各ノードは、他のノードおよび/または他のデバイスと通信するソフトウェア(例えば、トランザクションプログラム)および/またはハードウェア(例えば、電線、無線接続)をインストールすることができる。例えば、ノードAおよびノードBなどのユーザデバイスは、暗号通貨ウォレットなどのユーザエンドソフトウェアをインストールすることができ、ブロックチェーンノードは、ブロックチェーントランザクション処理ソフトウェアをインストールすることができる。ノードハードウェアおよびソフトウェアのさらなる詳細は、図6を参照して後で説明する。
ブロックチェーンノードは、それぞれメモリ08に結合することができる。いくつかの実施形態において、メモリ08は、プールデータベースを記憶することができる。プールデータベースは、分散方式で複数のブロックチェーンノードにアクセス可能であってもよい。例えば、プールデータベースは、それぞれ、ブロックチェーンノードのメモリに記憶させることができる。プールデータベースは、ユーザによって動作されるノードAおよびBなどの1つまたは複数のユーザデバイスによって提出された複数のトランザクションを記憶することができる。
いくつかの実施形態において、未確認トランザクションのトランザクション要求を受け取った後、未確認トランザクションは、プールデータベースに記憶させることができる。1つまたは複数のブロックチェーンノードは、未確認トランザクションを検証するためにコンセンサス検証を実施することができる。検証に成功すると、ブロックチェーンノードは、ブロックチェーンに追加するべきトランザクションをパックすることができる。検証が失敗した場合、未確認トランザクションは拒絶される。
トランザクションを検証し、ブロックチェーンに追加することは、「マイニング」と称され、そのような維持管理を行う者には、新たに作成されたビットコイン/イーサおよびトランザクション手数料が報酬として与えられる。例えば、ブロックチェーンノードは、ブロックチェーンネットワークが合意したコンセンサスルールの組に基づいてトランザクションが有効であるかどうかを判定することができる。マイナーは、どの大陸にも位置することができ、各トランザクションを有効として検証し、それをブロックチェーンに追加することによって支払いを処理することができる。そのような検証は、複数のマイナーによって与えられたコンセンサスを介して実現され、体系的な共謀が何もないと仮定する。結局、計算結果が有効であるべきある要件を満たさなければならないので、すべてのデータは一貫しており、すべてのブロックチェーンノードは、ブロックチェーンが一貫していることを確実にするために同期される。したがって、データは、ブロックチェーンノードの分散システムに一貫して記憶させることができる。
マイニングプロセスを通じて、資産移転などのトランザクションは検証され、ネットワークノードによるブロックチェーンの増大するブロックのチェーンに追加される。ブロックチェーン全体を詳しく検討することによって、検証は、例えば、支払い側当事者が移転する資産を利用できるのかどうか、資産が前に使用されたことがあるのかどうか、移転する金額が正しいのかどうかなどを含むことができる。例えば、イニシエータノードなどの送り手によって署名して締結され、結合されたブロックチェーンノードに提出された仮想トランザクションにおいて、結合されたブロックチェーンノードは、ブロックチェーンノードをマイニングするために、提案されたトランザクションをブロックチェーンネットワークに同報通信することができる。マイナーは、トランザクションがブロックチェーン履歴により実行すべき資格があるのかどうかを確認する必要がある。送り手のウォレット残高が既存のブロックチェーン履歴により十分な資金を有する場合、トランザクションは、有効とみなされ、ブロックに追加することができる。検証されると、資産移転は、ブロックチェーンに追加するべき次のブロックに含めることができる。
ブロックはデータベースレコードとほぼ同じである。データを書くたびに、ブロックが作成される。これらのブロックは、リンクされ、暗号を使用して保護されて、相互接続ネットワークとなる。各ブロックは、前のブロックに接続され、それは「ブロックチェーン」という名称の起源でもある。各ブロックは、通常前のブロック、世代時間、および実際のデータの暗号学的ハッシュを含む。例えば、各ブロックは、現在のブロックの特徴量を記録するブロックヘッダと、実際のデータ(例えば、トランザクションデータ)を記録するボディと、の2つの部分を含む。ブロックのチェーンはブロックヘッダを介してリンクされる。各ブロックヘッダは、バージョン、前のブロックハッシュ、マークルルート、タイムスタンプ、難易度ターゲット、およびプルーフオブワークナンス(または略してナンス)などの複数の特徴量を含むことができる。前のブロックハッシュは、前のブロックのアドレスだけでなく、前のブロック内のデータのハッシュも含み、したがって、ブロックチェーンを変更不可能にする。ナンスとは、含まれたとき、指定先行ゼロビット数を有するハッシュを生じさせる数のことである。
マイニングでは、新たなブロックのコンテンツのハッシュは、ブロックチェーンノードによって取られる。ナンス(例えば、ランダムな文字列)は、新たな文字列を取得するためにハッシュに加えられる。新たな文字列は再度ハッシュされる。次いで、最終ハッシュは、難易度ターゲット(例えばレベル)と比較され、最終ハッシュが実際に難易度ターゲット未満であるか否かが判定される。「いいえ」である場合、ナンスは変更され、プロセスが再度繰り返される。「はい」である場合、ブロックがチェーンに追加され、公共台帳が更新され、追加が知らされる。追加の成功に関与したブロックチェーンノードには、例えば、それ自体に報酬トランザクションを追加して新たなブロックにすることによってビットコイン/イーサが報酬として与えられる。さらに、または代替案として、トランザクションイニシエータは、トランザクションを首尾よくマイニングして、新たに追加されたブロックとするブロックチェーンノードに報酬を与えるためにトランザクション手数料を含むことができる。
すなわち、出力「Y」ごとに、kが高いminエントロピーを有する分散から選択された場合、H(k|x)=Yであるように入力xを見つけることは実行不可能であり、ここで、kはナンスであり、xはブロックのハッシュであり、Yは難易度ターゲットであり、「|」は連結を表す。暗号学的ハッシュが本質的にランダムであるために、それらの出力をそれらの入力から予測することはできないという意味において、ナンスを見つけるには1つの周知のやり方だけがある。すなわち、整数を例えば1、次いで2、次いで3などと、順々に試してみることであり、これは総当たり攻撃と呼ばれる場合がある。先行ゼロの数が大きければ大きいほど、必須のナンスYを見つけるのに要する時間が平均して長くなる。一例において、ビットコインシステムは、先行ゼロの数を絶えず調整し、したがって、ナンスを見つける平均時間は、約10分である。そのように、コンピューティングハードウェアの処理能力が時間とともに長年にわたって増加するにつれて、ビットコインプロトコルは、マイニングを実装するのに約10分の持続時間を常に要させるために、より多くの先行ゼロビットを単純に必要とする。
説明したように、ハッシングは、ブロックチェーンにとって重要な要石である。ハッシュアルゴリズムは、任意の長さのメッセージを固定長のメッセージダイジェストに圧縮する機能として理解することができる。より一般的に使用されるのはMD5およびSHAである。いくつかの実施形態において、ブロックチェーンのハッシュ長は256ビットであり、それは元のコンテンツが何であるかにかかわらず、256ビットの2進数が最後に計算されることを意味する。また、元のコンテンツが異なる限り、対応するハッシュが一意であることを保証することができる。例えば、文字列「123」のハッシュは、a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0(16進数)であり、それは2値に変換されたとき256ビットを有し、「123」だけがこのハッシュを有する。ブロックチェーンにおけるハッシュアルゴリズムは、不可逆であり、すなわち、前進計算が容易であり(「123」からa8fdc205a9f19cc1c7507a60c4f01b1c7507a60c4f01b13d11d7fd0への)、すべてのコンピューティング資源が使い尽くされた場合、逆計算を行うことができない。したがって、ブロックチェーンの各ブロックのハッシュは一意である。
さらに、ブロックのコンテンツが変化した場合、そのハッシュは変化する。ブロックおよびハッシュは、1対1対応にあり、各ブロックのハッシュは、具体的にブロックヘッダに対して計算される。すなわち、ブロックヘッダの特徴量は、接続されて、長い文字列を形成し、次いで、ハッシュが文字列に対して計算される。例えば、「Hash=SHA256(ブロックヘッダ)」は、ブロックハッシュ計算式であり、SHA256は、ブロックヘッダに適用されるブロックチェーンハッシュアルゴリズムである。ハッシュは、ブロックボディではなく、ブロックヘッダによって一意に決定さる。上述のように、ブロックヘッダは、現在のブロックのハッシュおよび前のブロックのハッシュを含む、たくさんのコンテンツを含む。これは現在のブロックのコンテンツが変化した場合、または前のブロックのハッシュが変化した場合、それにより、現在のブロックにおけるハッシュが変化することを意味する。ハッカーがブロックを変更した場合、ブロックのハッシュが変化する。後のブロックが変更されたブロックに接続するために、ハッカーは、すべての後続のブロックを次々に変更しなければならない。何故なら、次のブロックが前のブロックのハッシュを含んでいなければならないからである。そうでない場合、変更されたブロックは、ブロックチェーンから取り外される。設計上の理由により、ハッシュ計算は、時間がかかり、ハッカーがネットワーク全体の計算能力の51%超を使いこなさない限り、短時間に複数のブロックを変更することはほとんど不可能である。したがって、ブロックチェーンは、それ自体の信頼性を保証し、いったんデータが書かれると、それを改ざんすることができない。
マイナーは、新たなブロックに対してハッシュ(すなわち、適格な署名または解答)を見つけると、この署名をすべての他のマイナー(ブロックチェーンノード)に同報通信する。次に、他のマイナーは、それらの番になってその解答が送り手のブロックの問題に対応するかどうかを検証する(すなわち、ハッシュ入力が実際に結果としてその署名となっているかどうかを判定する)。解答が有効である場合、他のマイナーは解答を確認し、新たなブロックをブロックチェーンに追加することができることに合意する。したがって、新たなブロックのコンセンサスが得られる。これは「プルーフオブワーク」とも呼ばれる。コンセンサスが得られたブロックは、次にブロックチェーンに追加することができ、その署名とともに、ネットワーク上のすべてのブロックチェーンノードに同報通信される。ブロックチェーンノードは、ブロックを受け入れ、ブロック内のトランザクションがその時点の現在のウォレット残高(トランザクション履歴)に正しく対応する限り、それをそれらのトランザクションデータにセーブする。このブロックに加えて新たなブロックが追加されるごとに、その追加はまたそれの前のブロックの別の「確認」とみなされる。例えば、トランザクションがブロック502に含まれる場合、ブロックチェーンは長さが507ブロックであり、それはトランザクションが5つの確認(ブロック507から502に対応する)を有することを意味する。トランザクションが有する確認がより多ければ多いほど、攻撃者にとっては改変することがより困難になる。
図示するように、ブロックチェーンは、共有状態を有する、暗号学的に安全なトランザクショナルシングルトンマシンである。「暗号学的に安全な」とは、デジタル通貨の作成が、破るのが途方もなく困難である複雑な数学アルゴリズムによって確保されることを示す可能性がある。それらはシステムを欺くこと(例えば、偽のトランザクションを作成し、トランザクションを消去するなど)をほぼ不可能にする。「トランザクショナルシングルトンマシン」とは、システムにおいて作成されたすべてのトランザクションに関与するマシンの単一の標準インスタンスがあることを示す可能性がある。言い換えれば、あらゆる人が信じる単一のグローバル真実がある。「共有状態を有する」とは、このマシンに記憶された状態が共有され、あらゆる人に開放されていることを示す可能性がある。ビットコインおよびイーサリアムは、両方とも、ブロックチェーンパラダイムを実装するが、ブロックチェーントランザクションの文脈で以下に論じる異なるモデルに基づく。説明するモデルは、単に例示的に過ぎず、開示するシステムおよびモデルは、他のモデルに基づいて実装することができる。
いくつかの実施形態において、ある資産をユーザBに移転するために、ユーザAは、ブロックチェーンノードを通じてトランザクションに関する情報を含む記録を構築することができる。トランザクションの主題は、例えば、通貨、代用貨幣、デジタル通貨、コントラクト、証書、医療記録、顧客詳細、株、債権、株主資本またはデジタル形態で説明することができる任意の他の資産を含むことができる。記録はユーザAの署名鍵(秘密鍵)を用いて署名することができ、ユーザAの公開検証鍵およびユーザBの公開検証鍵を含む。新たなブロックにおいて同じ時間窓で行われた他の記録にバンドルされた記録は、フルノードに同報通信することができる。記録を受け取り次第、フルノードは、ブロックチェーンシステムにおいてかつて行われたすべてのトランザクションの台帳に記録を組み込むことに取り組むことができ、上記のマイニングプロセスを通じて新たなブロックを前に受け入れたブロックチェーンに追加し、新たなブロックをネットワークのコンセンサスルールに対して妥当性を検査する。
ビットコインは、UTXO(未使用トランザクション出力)モデルに基づいている。UTXOの下で、資産は使用されなかったブロックチェーントランザクションの出力によって表され、それは新たなトランザクションにおいて入力として使用することができる。出力は、各トランザクションに対する入力以上でもよい。例えば、移転すべきユーザAの資産は、UTXOの形態でもよい。資産を使用する(取引する)ために、ユーザAは、秘密鍵を用いて署名して締結しなければならない。ビットコインは、UTXOモデルを使用するデジタル通貨の例である。有効なブロックチェーントランザクションの場合、未使用出力は、さらにトランザクションを実施するのに使用することができる。いくつかの実施形態において、二重支払いおよび詐欺を防止するために、未使用の出力だけを他のトランザクションに使用することができる。この理由から、ブロックチェーン上の入力は、トランザクションが行われたとき削除されるが、同時に、UTXOの形態で出力が作成される。これらの未使用のトランザクション出力を今後のトランザクションのために使用することができる(秘密鍵の所持人、例えば、デジタル通貨ウォレットを有する人によって)。
イーサリアムは、アカウント/残高モデル(またはアカウントベースのトランザクションモデルと称される)に基づいており、それは各アカウントの残高をグローバル状態として追跡する。トランザクションにおいて、アカウントの残高は、それが、使用するトランザクション金額以上であることを確実にするために確認される。アカウント/残高モデルがイーサリアムにおいてどのように働くのかを示す例が提供される。すなわち、
1.アリスがマイニングを通じて5イーサを獲得する。アリスが5イーサを有することがシステムに記録される。
2.アリスは、ボブに1イーサを与えたいと思い、したがって、システムがまず1イーサをアリスのアカウントから差し引き、したがって、アリスが今は4イーサを有する。
3.次いで、システムは、ボブのアカウントを1イーサだけ増加させる。システムはボブが最初に2イーサを有することを知っており、したがって、ボブの残高は3イーサに増加される。
イーサリアムブロックチェーンは、トランザクションベースの状態マシンとみなすことができる。コンピュータ科学において、状態マシンとは、一連の入力を読み取り、それらの入力に基づいて、新たな状態に移行するものを表す。アカウント/残高モデルの下で、ブロックチェーン(例えば、イーサリアムブロックチェーン)は、ブロックチェーンのまったく最初のブロック(ジェネシスブロック)に対応する「ジェネシス状態」から寿命が開始する。この時点(ブロック0におけるジェネシス状態)から、トランザクション、コントラクト、およびマイニングなどの活動がブロックチェーンの「状態」を絶えず変化させる。例えば、トランザクションが実行されたとき、このジェネシス状態は、より多くのトランザクションが実行されたときなど、状態1に、次いで、状態2に移行する。イーサリアムの状態は、「ブロック」にグループ化された数百万のトランザクションを有する。ブロックは、一連のトランザクションを含み、各ブロックは、前に説明したように、その前のブロックと一緒にチェーンでつながれる。1つの状態から次の状態への移行を生じさせるために、トランザクションは有効でなければならない。トランザクションが有効であるとみなされるために、それは、前に説明したように、マイニングと呼ばれる妥当性検査プロセスを経由する。上述の「共有状態を有するトランザクショナルシングルトンマシン」に対応して、正しい現在の状態は、あらゆるブロックチェーンノードが受け入れなければならない単一のグローバル真実である。
イーサリアムのグローバル状態は、アカウントアドレスとアカウント状態とのマッピングを含む。アカウントは、メッセージ受け渡しフレームワークを通じて互いに作用することができる。各アカウントは、それと、20バイトのアドレスとに関連付けられた状態を有する。イーサリアムにおけるアドレスは、任意のアカウントを識別するのに使用される160ビットの識別子である。秘密鍵によって管理され、それらに関連付けられたコードは何も有さない外部所有アカウントと、それらのコントラクトコードによって管理され、それらに関連付けられたコードを有するコントラクトアカウントとの2種類のアカウントがある。外部所有アカウントは、その秘密鍵を使用してトランザクションを作成し、署名することによって、メッセージを他の外部所有アカウントに、または他のコントラクトアカウントに送ることができる。2つの外部所有アカウント間のメッセージは、単純に価値移転である。しかし、外部所有アカウントからコントラクトアカウントへのメッセージは、コントラクトアカウントのコードを作動させ、それが様々な処置(例えば、代用貨幣の移転、内部記憶装置への書込み、新たな代用貨幣の鋳造、何らかの計算の実施、新たなコントラクトの作成など)を実施することが可能になる。外部所有アカウントとは異なり、コントラクトアカウントは、それら自体で新たなトランザクションを開始することができない。その代わり、コントラクトアカウントは、それらが受け取った他のトランザクションに応答して(外部所有アカウントから、または他のコントラクトアカウントから)、トランザクションだけを始動させることができる。したがって、イーサリアムブロックチェーン上で行われる任意の処置は、外部管理アカウントから始動されたトランザクションによって発動させることができる。
アカウント状態は、アカウントナンス、残高、storageRoot、およびcodeHashの4つの構成要素を含むことができ、それらはアカウントの種類にかかわらず存在する。アカウントナンスでは、アカウントが外部所有アカウントである場合、この数は、アカウントのアドレスから送られたトランザクションの数を表す。アカウントがコントラクトアカウントである場合、ナンスは、アカウントによって作成されたコントラクトの数である。残高は、このアドレスによって所有されるWeiの数である。1イーサ当たり1e+18Weiがある。StorageRootは、マークルパトリシアツリー(MPT:Merkle Patricia tree)の状態ルートノードのハッシュである。このツリーは、このアカウントのストレージコンテンツのハッシュをエンコードし、デフォルト設定により空である。CodeHashは、このアカウントのEVM(イーサリアム仮想マシン:Ethereum Virtual Machine)コードのハッシュである。コントラクトアカウントでは、これは、ハッシュされ、codeHashとして記憶されたコードである。外部所有アカウントでは、codeHashフィールドは、空の文字列のハッシュである。
アカウントアドレスとアカウント状態との間のマッピングは、マークルパトリシアツリー(MPT)と呼ばれるデータ構造に記憶される。マークルパトリシアツリーは、マークルツリー(または「マークルトライ」とも称される)の種類であり、マークルツリーは、状態ツリーの種類であり、状態ツリーは、データ構造の種類である。マークルツリーは、基礎データを含む、ツリーの底部の多数のリーフノードと、そのそれぞれがその2つの子ノードのハッシュである中間ノードの組と、その2つの子ノードのハッシュからやはり形成され、ツリーの頂部を表す単一の状態ルートノードとを有するノードの組を含むバイナリツリーである。ツリーの底部のデータは、記憶するべきデータをチャンクに分割し,次いで、チャンクをバケットに分割し、次いで、各バケットのハッシュを取り、残っているハッシュの総数がただ1つ、すなわち、ルートハッシュになるまで同じプロセスを繰り返すことによって生成される。このツリーは、それの内側に記憶されたあらゆる値に対する鍵を有する必要がある。ツリーの状態ルートノードから開始して、鍵は、リーフノードに記憶された対応する値に達するのにどの子ノードに従うべきなのかを示すべきである。イーサリアムにおいて、状態ツリーに対する鍵/値マッピングは、各アカウントの残高、ナンス、codeHash、およびstorageRoot(その場合、storageRootはそれ自体ツリーである)を含む、アドレスとそれらの関連付けられたアカウントとの間にある。この同じツリー構造は、トランザクションおよび受領を記憶するのにも使用される。例えば、あらゆるブロックは、状態ツリー、トランザクションツリー、受領ツリーを含む、3つの異なるマークルツリー構造の状態ルートノードのハッシュを記憶する「ヘッダ」を有する。状態ツリーは、例として使用されるが、様々な他のツリーおよびデータ構造は、開示するシステムおよび方法に使用することができる。
図2を参照すると、図2は、様々な実施形態による、例示的なブロックチェーンおよび対応する状態ツリーにおける2つのブロック(ブロックNおよびブロックN+1)を示す。図2に示すノードは、ブロックチェーンノードと呼ばれるデバイスであるノード1およびノードAなどとは対照的に、データ構造におけるノードを表すことができる。図示するように、各ブロックは、前のブロックのハッシュを含み、ブロックのチェーンを作成する。ブロックN(および任意のブロック)における状態ルートノードは、ブロックチェーンシステム全体におけるすべてのアカウント(外部およびコントラクト)の状態の概要を含む。状態ルートノードは、ルートハッシュによって表すことができる。各ブロックは、ルートハッシュを記憶することができ、状態ツリーは、ルートハッシュに基づいてデータベースに問合せを行うことによって取得することができ、ブロックは、状態ツリー全体を記憶しなくてもよい。
例えば、アカウントAは、トランザクションに参加したアカウントのうちの1つであり、アカウントAは、ブロックNの状態ルートノードの下の、ある場所において見いだすことができる。新たなブロックN+1が追加される前に、ブロックNは、ブロックチェーンの最新ノードである。アカウントAのノードは、アカウントの情報、例えば、10イーサの残高を記憶した様々なノードに分岐する。新たなブロックN+1がマイニングされ、ブロックチェーンに加えられるときまでに、システムには1つの変化、すなわち、アカウントAへの5イーサの追加しかなかったと仮定する。変化は、ブロックN+1の新たな状態ルートノードに至る新たに計算されたハッシュによって示される(ブロックN+1の状態ツリーにおける)が、他の子ノードは、前のブロックからマッピングされる。トランザクションの後、アカウントAのアカウント残高は、状態ルートノードの下の同じノードの場所において15イーサに更新される。次に、MPT構造は、ツリー全体を計算する必要なく変化後の状態ツリールートの迅速な計算が可能になるので、その有用性を示す。
この新たなブロックを受け入れ、その中のトランザクションを確認することの一部として状態ルートノードをブロックに設けることによって、ブロックチェーンシステムを備えるすべてのブロックチェーンノードは、システム全体の状態の同じ表示に到達しなければならない。したがって、マイニングされたブロックの妥当性を検査してからそれをブロックチェーンに含めることの一部として、システムにおける各ブロックチェーンノードは、独立して新たなトランザクションおよび計算を受け(これらのトランザクションのいくつかがコントラクトを対象としている場合)、すべてのアカウントの個々の状態を更新し、同じ最終結果に到達しなければならない。
マークルパトリシアツリーを使用することの別の利点は、この構造の状態ルートノードがツリーに記憶されたデータに暗号学的に依存しており、したがって、状態ルートノードのハッシュをこのデータの安全な同一性として使用することができることである。イーサリアムにおけるツリーに対して実施されるあらゆる関数(配置、変更、および削除)は、決定論的暗号学的ハッシュを利用する。ブロックヘッダが状態、トランザクション、および受領ツリーのルートハッシュを含むので、任意のブロックチェーンノードは、状態全体を記憶する必要なく、イーサリアムの状態の小さな部分の妥当性を検査することができ、それにより、潜在的にサイズが無限であることができる。ツリーの状態ルートノードの固有の暗号学的ハッシュは、ツリーが改ざんされていない証拠として使用することができる。さらに、ツリーを更新することは効率的である。例えば、ブロックチェーンノードがリーフを追加、変更、または削除したい場合、ブロックチェーンノードは、同じツリーにおける経路の関連した部分を変更しなくても、リーフを変更し、次いで、それからツリーのルートまでの経路上のあらゆるノードを更新することができる。
トランザクションにおいて、ヘッダの状態は、頻繁に更新する必要がある。例えば、アカウントの残高およびナンスは、しばしば変更され、新たなアカウントが、頻繁に挿入され、記憶装置における鍵が、頻繁に挿入され、削除される。トランザクションの実行は、状態ツリーを更新することによって実現される。実行が成功した場合、状態ツリーの更新が提出され、それ以上の変更は行われない。実行が失敗した場合、状態ツリーは、実行前の元の状態に戻る。
図3Aは、様々な実施形態による、並列処理ブロックチェーントランザクションのための例示的なステップ300を示す。ステップ300は、図1のシステム100の1つまたは複数の構成要素(例えば、ノードA、ノード1、ノードAとノード1との組合せ、ノード2、ノードi)によって実装することができる。図3Aのあるステップを示すために、図3Bが、様々な実施形態による、状態ツリーの2つの複写の例示的なマージを示す。以下に提示する動作は、例示的であることが意図されている。実装形態により、例示的なステップは、様々な順序でまたは並列に実施される追加の、より少ない、または代替のステップを含むことができる。
ステップ301において、複数の候補トランザクションをマイニングのために提出することができる。候補トランザクションは、プールデータベースに記憶させることができる。
ステップ302において、候補トランザクションは、様々な独立したグループにグループ化することができる(例えば、トランザクショングループG1、G2、・・・、GN)。「独立した」とは、グループが互いに妨害しないことを示す可能性がある。いくつかの実施形態において、それぞれに少なくとも1つの共通のトランザクションアカウントが関与する候補トランザクションのうちの任意の2つ以上は、同じ(トランザクション)グループの下でグループ化することができ、任意の共通のトランザクションアカウントが関与しない候補トランザクションのうちの任意の2つ以上は、異なる(トランザクション)グループの下でグループ化することができる。例えば、候補トランザクションのプールでは、Aが何かをBに送り、Bが何かをCに送り、Dが何かをEに送り、AとBとの間のトランザクションおよびBとCとの間のトランザクションは、Bが両方のトランザクションに関与する共通のトランザクションアカウントであるので、第1のグループの下で一緒にグループ化することができ、DとEとの間のトランザクションは、CおよびDが第1のグループにおける2つのトランザクションのいずれかに関与していないので、第2のグループに配置することができる。
ステップ303において、現在のブロック(ブロックチェーンの最新ブロック)の状態ツリーの少なくとも一部分の複写を作成することができる。現在のブロックの状態ツリーは、T0と表すことができ、複写は、T1、T2、...、TNと表すことができる。複写の数は、独立したグループの数に対応することができる。例えば、状態ツリーのルートハッシュの複写を作成することができ、ルートハッシュの複写に基づいてデータベースに問合せを行うことを通じて、状態ツリーの複写を取得することができる。
ステップ304において、独立したグループは、それぞれ、複写に関連付けることができる。例えば、G1は、(G1、T)を有するためにT1に関連付けられる。同様に、(G2、T2)...(GN、TN)を取得することができる。
ステップ305において、各独立したグループGiにおけるトランザクションは、関連付けられた複写Tiに基づいて実行される。実行により、状態ツリーの関連付けられた複写は、グループに対して更新される。各トランザクションが各グループ内で実行されたとき、状態ツリーの対応する複写は、更新され(成功トランザクションの場合)、または元の状態に戻される(失敗したトランザクションの場合)。ツリー構造において、親ノードは、その子ノードに基づいて更新することができる。図3Aおよび図3Bにおいて、同じ複写の背景は、トランザクション実行の完了を示すために薄黒くなっている。
いくつかの実施形態において、更新は、上位レベルのノードではなく、下位レベルのノードに適用することができる(異なるレベルのノードについては図2参照)。下位レベルのノードは、アカウントに対するいずれかの追加、削除、および変更などのアカウント変化、および残高変化などのアカウント内の変化を捉えることができる。状態ルートノードに至る上位レベルのノードは、次のステップにおいて更新することができる。例えば、図3Bを参照すると、G1が複写1に関連付けられ、G2が複写2に関連付けられる。図3Bは、それぞれG1およびG2に基づいて更新されたそれらの状態ツリーの複写を有する複写1および複写2を示す。薄黒くなったセルは、トランザクション実行において更新されたノードを表す。複写1および複写2において、ノードK1、ノードK2、および状態ルートノードは、マージステップまで更新する必要がない可能性がある上位レベルのノードである。複写1において、アカウントBは350から300に更新されており、アカウントAは更新されていない。複写2において、アカウントAは10から15に更新されており、アカウントBは更新されていない。リーフノードにおける更新は、上方に伝搬して、上にあるノードを更新することができる。複写1および2はマージされて、次のステップ306において、マージされた状態ツリーを取得する。マージされた状態ツリーにおいて、アカウントAおよびアカウントBの更新は組み合わされる。さらに、K1がK3に更新され、K2がK4に更新され、状態ルートノードが新たな状態ルートノードに更新されるので、上位レベルのノードへの更新は、伝搬することができる。
代替案として、いくつかの実施形態において、複写の状態ルートノードを含む上位レベルのノードは、更新することができ、上位レベルのノードは、次のマージステップの間に再度更新することができる。例えば、複写1および複写2の状態ツリーの複写を、それぞれ、G1およびG2に基づいて状態ルートノードまでずっと更新することができ、複写1に対して更新された状態ルートノード1および複写2に対して更新された状態ルートノード2を取得することができる。更新された状態ルートノード1および更新された状態ルートノード2(および、より多くのトランザクショングループがあるとき同様の更新された状態ルートノード)を次のステップに使用して、データベースに問合せを行うことによってそれらのそれぞれのリーフノードを取得し、次いで、リーフノードを組み合わせ、上方に伝搬して、新たな状態ルートノードを取得することができる。
ステップ306において、すべてのNグループが実行された後、状態ツリーの更新された複写は、新たな状態ツリーT0にマージされる。一例において、状態ツリーの更新された複写をマージするために、ステップ305において更新されたノード(例えば、リーフノードおよび/または中間ノード)は、状態ツリーT0に組み込むことができる(例えば、古いノード値の更新、新たなノード/アカウントの追加、古いノード/アカウントの削除)。元のグループ化はグループが独立していることを確実にするので、マージは、ステップ305において実施された更新を変化させない。マージ後、リーフノードは、新たな状態ルートノードに達するまで上方に伝搬して、親ノードを取得するなどすることができる。例えば、上位レベルのノードは、ブロックチェーンに追加するべき次のブロックの状態ルートノードを生成するように更新することができる。新たな状態ツリー全体は、新たな状態ルートノードに基づいてデータベースに問合せを行うことによって取得することもできる。状態ツリーがMPTであるので、状態ルートノードは、ノード値に基づいて決定され、データ更新の順序には無関係である。グループ化が正しい限り、次のブロックの状態ルートノードは、正確におよび迅速に取得することができる。
図4は、様々な実施形態による、リプレーアタックを検知するための例示的な方法400の流れ図を示す。方法400は、図1のシステム100の1つまたは複数の構成要素(例えば、ノードA、ノード1、ノードAとノード1との組合せ、ノード2、ノードi)によって実装することができる。方法400は、1つまたは複数のブロックチェーンノードによって実装することができる。方法400は、システムまたはデバイス(例えば、コンピュータ、サーバ)によって実装することができる。システムまたはデバイスは、1つまたは複数のプロセッサと、1つまたは複数のプロセッサに結合され、システムまたはデバイス(例えば、プロセッサ)に方法400を実施させる、1つまたは複数のプロセッサによって実行可能な命令を用いて構成された1つまたは複数の非一時的コンピュータ可読記憶媒体(例えば、1つまたは複数のメモリ)と、を備えることができる。以下に提示する方法400の動作は、例示的であることが意図されている。実装形態により、例示的な方法400は、様々な順序でまたは並列に実施される追加の、より少ない、または代替のステップを含むことができる。
ブロック441は、ブロックチェーンに追加するための複数の候補トランザクションを取得するステップを含む。例えば、様々な軽量ノードは、候補トランザクションを様々なフルノードに提出して、検証およびブロックチェーンへの追加を要求することができる。
ブロック442は、候補トランザクションを1つまたは複数のトランザクショングループにグループ化するステップを含む。いくつかの実施形態において、1つまたは複数のトランザクショングループは、独立したトランザクショングループである。いくつかの実施形態において、候補トランザクションを1つまたは複数のトランザクショングループにグループ化するステップは、それぞれに1つまたは複数のトランザクショングループのうちの同じトランザクショングループの下で少なくとも1つの共通のトランザクションアカウントが関与する候補トランザクションのうちの2つ以上をグループ化するステップを含む。例えば、独立したトランザクショングループのうちの1つまたは複数のそれぞれは、別の独立したトランザクショングループにおける別の候補トランザクションによって影響される候補トランザクションを含まない。例えば、それぞれに同じトランザクションアカウントが関与する任意の2つの候補トランザクションは、同じトランザクショングループの下でグループ化することができる。いくつかの実施形態において、候補トランザクションを1つまたは複数のトランザクショングループにグループ化するステップは、1つまたは複数のトランザクショングループのうちの異なるトランザクショングループの下で任意の共通のトランザクションアカウントが関与しない候補トランザクションのうちの2つ以上をグループ化するステップを含む。例えば、独立したトランザクショングループのうちの1つまたは複数のそれぞれは、完全に異なるトランザクションアカウントが関与する2つの候補トランザクションを含まない。例えば、完全に異なるトランザクションアカウントが関与する任意の2つの候補トランザクションは、異なるトランザクショングループの下でグループ化することができる。
ブロック443は、ブロックチェーンの最新ブロックのデータ構造(例えば、状態ツリー)の少なくとも一部分の1つまたは複数の複写を作成するステップを含む。いくつかの実施形態において、データ構造は、状態ツリーまたは別の同様のデータ構造を備えることができる。データ構造の一部分は、状態ツリーの状態ルートノードを備えることができ、または状態ツリーの下位レベルのノードを備えることができる。状態ツリーでは、状態ツリーを表すのに状態ルートノードを使用することができる。状態ツリーの中間およびリーフノードは、状態ルートノードに基づいてデータベースに問合せを行うことによって取得することができる。したがって、データ構造の複写またはデータ構造の一部分は、(1)状態ルートノードの複写、(2)状態ルートノードの複写およびデータ構造の別の部分、(3)データ構造の完全な複写などを表すことができる。
いくつかの実施形態において、ブロックチェーンは、アカウント/残高モデルに基づいており、データ構造は、最新ブロックに記憶された単一の状態ルートノードと、最新ブロックに記憶されていない複数の中間ノードおよびリーフノードと、を備えるマークルパトリシアツリーを備える。
ブロック444は、1つまたは複数のトランザクショングループをそれぞれデータ構造(例えば、状態ツリー)の1つまたは複数の複写に関連付けるステップを含む。例えば、トランザクショングループは、それぞれ、最新ブロックの状態ルートノードの複写に関連付けることができる。完全な複写の状態ツリーは、データベースに問合せを行うことによって取得することができる。
ブロック445は、トランザクショングループのそれぞれにおける候補トランザクションを実行し、データ構造(例えば、状態ツリー)の関連付けられた複写を更新するステップを含む。例えば、データ構造(例えば、状態ツリー)の関連付けられた複写は、トランザクショングループのそれぞれにおける候補トランザクションを実行するように更新することができる。いくつかの実施形態において、トランザクショングループのそれぞれにおける候補トランザクションを実行し、データ構造の関連付けられた複写を更新するステップは、並列に、トランザクショングループのそれぞれにおける候補トランザクションを実行し、データ構造の関連付けられた複写を更新するステップを含む。
いくつかの実施形態において、対応するトランザクショングループにおける候補トランザクションを実行するステップは、対応するトランザクショングループにおける候補トランザクションをマルチコアプロセッサによって実行するステップを含む。すなわち、トランザクショングループは、並列に、例えば、マルチコアプロセッサによって処理することができる。各コアには、1つのトランザクショングループを処理する権限が委譲される可能性がある。各トランザクショングループを処理するステップは、データ構造の関連付けられた複写を更新することによってトランザクショングループにおける候補トランザクションを処理するステップを含むことができる。したがって、トランザクショングループを並列に処理するステップは、全体の処理速度を顕著に増加させることができる。
いくつかの実施形態において、データ構造の関連付けられた複写を更新するステップは、データ構造の関連付けられた複写のうちの1つにおけるトランザクションアカウントの残高を更新するステップ、トランザクションアカウントを除去するステップ、および/または新たなトランザクションアカウントを追加するステップを含む。更新は、本明細書に開示する様々なデータ構造ノードの様々な他の変化を含むことができる。
ブロック446は、ブロックチェーンに追加するべき新たなブロックの新たなデータ構造(例えば、新たな状態ツリー)の少なくとも一部分を取得するためにデータ構造の更新された複写をマージするステップを含む。例えば、新たなデータ構造の一部分は、新たな状態ルートノードを備えることができる。取得した新たなデータ構造は、ブロックチェーンに追加するための新たなブロックに含めるために新たな状態ルートノードを有する。いくつかの実施形態において、データ構造の更新された複写をマージするステップは、データ構造の更新された複写において行われた更新の少なくとも一部分を組み合わせ、組み込むことによって、ブロックチェーンの最新ブロックのデータ構造の少なくとも一部分を更新するステップを含む。図3Aおよび図3Bを参照して論じたように、データ構造の様々な複写の変化は、新たなデータ構造の少なくとも一部分を生成するためにマージすることができる。リーフノードから中間ノードおよび上方に更新することによって、新たな状態ルートノードを取得することができる。
任意選択のブロック447は、新たなブロックをブロックチェーンに追加するステップを含む。新たなデータ構造の一部分は、新たな状態ルートノードを備え、新たなブロックは、新たな状態ルートノードを備える。
図5は、いくつかの実施形態による、ブロックチェーンコントラクトを実行するためのシステム510のブロック図を示す。システム510(例えば、コンピュータシステム)は、ノード1、ノード2、ノードA、ノードBの実装形態の例、または同様のデバイス、またはノードのうちのいずれかと追加のデバイス(例えば、ノード1およびノードA)との組合せでもよい。例えば、方法400は、システム510によって実装することができる。システム510は、1つまたは複数のプロセッサと、1つまたは複数のプロセッサに結合され、システムまたはデバイス(例えば、プロセッサ)に上記の方法および動作、例えば、方法400を実施させる、1つまたは複数のプロセッサによって実行可能な命令を用いて構成された1つまたは複数の非一時的コンピュータ可読記憶媒体(例えば、1つまたは複数のメモリ)と、を備えることができる。システム510は、命令(例えば、ソフトウェア命令)に対応する様々なユニット/モジュールを備えることができる。
いくつかの実施形態において、システム510は、並列処理ブロックチェーントランザクションのための装置と称することができる。装置は、ブロックチェーンに追加するための複数の候補トランザクションを取得するための取得モジュール511と、候補トランザクションを1つまたは複数のトランザクショングループにグループ化するためのグループ化モジュール512と、ブロックチェーンの最新ブロックのデータ構造の少なくとも一部分の1つまたは複数の複写を作成するための作成モジュール513と、1つまたは複数のトランザクショングループをそれぞれデータ構造の1つまたは複数の複写に関連付けるための関連付けモジュール514と、トランザクショングループのそれぞれにおける候補トランザクションを実行し、データ構造の関連付けられた複写を更新するための実行モジュール515と、ブロックチェーンに追加するべき新たなブロックの新たなデータ構造の少なくとも一部分を取得するためにデータ構造の更新された複写をマージするためのマージングモジュール516と、を備える。任意選択で、装置は、新たなブロックをブロックチェーンに追加するための追加モジュール517をさらに備えることができ、新たなデータ構造の一部分は、新たな状態ルートノードを備え、新たなブロックは、新たな状態ルートノードを備える。
本明細書に説明する技法は、1つまたは複数の専用コンピューティングデバイスによって実装される。専用コンピューティングデバイスは、デスクトップコンピュータシステム、サーバコンピュータシステム、ポータブルコンピュータシステム、ハンドヘルドデバイス、ネットワーキングデバイスまたは任意の他のデバイスまたは技法を実装するために配線および/またはプログラム論理を組み込んだデバイスの組合せでもよい。専用コンピューティングデバイスは、パーソナルコンピュータ、ラップトップ、携帯電話、カメラ付き携帯電話、スマートフォン、パーソナルデジタルアシスタント、メディアプレーヤー、ナビゲーションデバイス、電子メールデバイス、ゲーム機、タブレットコンピュータ、ウェアラブルデバイス、またはその組合せとして実装することができる。コンピューティングデバイスは、一般に、オペレーティングシステムソフトウェアによって制御され、調整される。従来のオペレーティングシステムは、とりわけ、実行のためにコンピュータプロセスを制御し、スケジュールし、メモリ管理を実施し、ファイルシステム、ネットワーキング、I/Oサービスを提供し、グラフィカルユーザインターフェース(「GUI」)などのユーザインターフェース機能を提供する。本明細書に説明する様々なシステム、装置、記憶媒体、モジュール、およびユニットは、専用コンピューティングデバイス、または1つまたは複数の専用コンピューティングデバイスの1つまたは複数のコンピューティングチップに実装することができる。いくつかの実施形態において、本明細書に説明する命令は、専用コンピューティングデバイス上の仮想マシンに実装することができる。実行されたとき、命令により、専用コンピューティングデバイスは、本明細書に説明する様々な方法を実施することができる。仮想マシンは、ソフトウェア、ハードウェア、またはその組合せを含むことができる。
図6は、本明細書に説明する実施形態のいずれかを実装することができるコンピュータシステム600を示すブロック図である。システム600は、本明細書に説明する方法のうちのいずれか(例えば、方法400)を実施することができる。システム600は、本明細書に説明するシステムのうちのいずれか(例えば、システム100または510)に実装することができる。システム600は、本明細書に説明するノードのうちのいずれかに実装し、並列処理ブロックチェーントランザクションのための対応するステップを実施するように構成することができる。コンピュータシステム600は、バス602または情報を通信するための他の通信機構、情報を処理するためにバス602に結合された1つまたは複数のハードウェアプロセッサ604を含む。ハードウェアプロセッサ604は、例えば、1つまたは複数の汎用マイクロプロセッサでもよい。
コンピュータシステム600は、プロセッサ604によって実行可能な情報および命令を記憶するためにバス602に結合されたランダムアクセスメモリ(RAM)、キャッシュおよび/または他の動的記憶デバイスなどのメインメモリ606も含む。メインメモリ606は、プロセッサ604によって実行可能な命令の実行中に一時変数または他の中間情報を記憶するために使用することもできる。そのような命令は、プロセッサ604にアクセス可能な記憶媒体に記憶されたとき、コンピュータシステム600を、命令に指定された動作を実施するようにカスタマイズされる専用マシンにする。コンピュータシステム600は、プロセッサ604のために静的情報および命令を記憶するためのバス602に結合された読出し専用メモリ(ROM)608または他の静的記憶デバイスをさらに含む。磁気ディスク、光ディスク、またはUSBサムドライブ(フラッシュドライブ)などの記憶装置610が、提供され、情報および命令を記憶するためにバス602に結合される。
コンピュータシステム600は、コンピュータシステムと組み合わせて、コンピュータシステム600を専用マシンにさせる、またはそのようにプログラムする、カスタマイズされた配線論理、1つまたは複数のASICもしくはFPGA、ファームウェアおよび/またはプログラム論理を使用して本明細書に説明する技法を実装することができる。一実施形態によれば、本明細書に説明する動作、方法、およびプロセスは、メインメモリ606に含まれる1つまたは複数の命令の1つまたは複数のシーケンスを実行するプロセッサ604に応答してコンピュータシステム600によって実施される。そのような命令は、記憶装置610などの別の記憶媒体からメインメモリ606に読み込むことができる。メインメモリ606に含まれる命令のシーケンスの実行により、プロセッサ604は、本明細書に説明するプロセスステップを実施する。代替実施形態において、配線回路をソフトウェア命令の代わりにまたはそれと組み合わせて使用することができる。
メインメモリ606、ROM608、および/または記憶装置610は、非一時的記憶媒体を含むことができる。「非一時的媒体」という用語および同様の用語は、本明細書では、マシンに具体的なやり方で動作させるデータおよび/または命令を記憶する媒体を表し、媒体は一時的信号を除外する。そのような非一時的媒体は、不揮発性媒体および/または揮発性媒体を含むことができる。不揮発性媒体は、例えば、記憶装置610などの光または磁気ディスクを含む。揮発性媒体は、メインメモリ606などの動的メモリを含む。非一時的媒体の共通の形態は、例えば、フロッピディスク、フレキシブルディスク、ハードディスク、半導体ドライブ、磁気テープ、もしくは任意の他の磁気データ記憶媒体、CD−ROM、任意の他の光データ記憶媒体、穿孔パターンを有する任意の物理的媒体、RAM、PROM、およびEPROM、FLASH−EPROM、NVRAM、任意の他のメモリチップもしくはカートリッジ、およびそのネットワーク化されたバージョンを含む。
コンピュータシステム600は、バス602に結合されたネットワークインターフェース618も含む。ネットワークインターフェース618は、1つまたは複数のローカルネットワークに接続される1つまたは複数のネットワークリンクに結合する双方向データ通信を提供する。例えば、ネットワークインターフェース618は、総合デジタル通信網(ISDN)カード、ケーブルモデム、衛星モデム、または対応する種類の電話線とのデータ通信接続を提供するモデムでもよい。別の例として、ネットワークインターフェース618は、互換性のあるLAN(またはWANと通信するWAN構成要素)とのデータ通信接続を提供するローカルエリアネットワーク(LAN)カードでもよい。無線リンクを実装することもできる。任意のそのような実装形態において、ネットワークインターフェース618は、様々な種類の情報を表すデジタルデータストリームを搬送する電気、電磁気、または光信号を送り、受け取る。
コンピュータシステム600は、ネットワーク、ネットワークリンクおよびネットワークインターフェース618を通じてメッセージを送り、プログラムコードを含むデータを受け取ることができる。インターネット例において、サーバが、インターネット、ISP、ローカルネットワークおよびネットワークインターフェース618を通じてアプリケーションプログラムのための要求されたコードを伝送する可能性がある。
受け取ったコードは、受け取ったときに、プロセッサ604によって実行し、および/または後で実行するために記憶装置610、または他の不揮発性記憶装置に記憶することができる。
前節に説明したプロセス、方法、およびアルゴリズムのそれぞれは、コンピュータハードウェアを備える1つまたは複数のコンピュータシステムまたはコンピュータプロセッサによって実行されるコードモジュールにおいて具現化し、およびそれによって完全にまたは部分的に自動化することができる。プロセスおよびアルゴリズムは、特定用途向け回路に部分的にまたは全体的に実装することができる。
上記の様々な特徴およびプロセスは、互いに独立して使用することができ、または様々なやり方で組み合わせることができる。すべての可能な組合せおよび部分的組合せは、本明細書の範囲内に含まれることが意図されている。さらに、ある方法またはプロセスブロックは、いくつかの実装形態において省略することができる。本明細書に説明する方法およびプロセスは、やはり任意の特定のシーケンスに限定されず、それに関連したブロックまたは状態は、適当である他のシーケンスで実施することができる。例えば、説明したブロックまたは状態は、具体的に開示したもの以外の順序で実施することができ、または複数のブロックもしくは状態は、単一のブロックもしくは状態で組み合わせることができる。ブロックもしくは状態の例は、直列に、並列に、または何らかの他のやり方で実施することができる。ブロックもしくは状態は、開示した実施形態に追加し、またはそれから除去することができる。本明細書に説明したシステムおよび構成要素の例は、説明したのとは異なって構成することができる。例えば、要素は、開示した実施形態に追加し、それから除去し、またはそれと比較して再配列することができる。
本明細書に説明した方法の様々な動作は、少なくとも部分的に、関連動作を実施するために一時的に構成される(例えば、ソフトウェアによって)または恒久的に構成される1つまたは複数のプロセッサによって実施することができる。一時的に構成されるか、または恒久的に構成されるかにかかわらず、そのようなプロセッサは、本明細書に説明した1つまたは複数の動作または機能を実施するように動作するプロセッサ実装エンジンを構成することができる。
同様に、本明細書に説明した方法は、少なくとも部分的にプロセッサに実装することができ、特定のプロセッサは、ハードウェアの例である。例えば、方法の動作の少なくともいくつかは、1つまたは複数のプロセッサまたはプロセッサ実装エンジンによって実施することができる。さらに、1つまたは複数のプロセッサは、「クラウドコンピューティング」環境における、または「サービスとしてのソフトウェア」(SaaS)としての関連動作の性能をサポートするように動作することもできる。例えば、動作のうちの少なくともいくつかは、コンピュータのグループ(プロセッサを含むマシンの例として)によって実施することができ、これらの動作は、ネットワーク(例えば、インターネット)を介して、および1つまたは複数の適当なインターフェース(例えば、アプリケーションプログラムインターフェース(API))を介して利用可能である。
動作のうちのいくつかの性能は、単一のマシン内に常駐するだけでなく、いくつかのマシンにわたって配備して、プロセッサ間で分散させることができる。いくつかの実施形態において、プロセッサまたはプロセッサ実装エンジンは、単一の地理的場所(例えば、家庭環境、オフィス環境、またはサーバファーム内)に配置することができる。他の実施形態において、プロセッサまたはプロセッサ実装エンジンは、いくつかの地理的場所にわたって分散させることができる。
本明細書全体を通して、複数のインスタンスは、単一のインスタンスとして説明した構成要素、動作、または構造を実装することができる。1つまたは複数の方法の個々の動作を別々の動作として示し、説明したが、個々の動作のうちの1つまたは複数は、同時に実施することができ、示した順序で動作が実施されることは必要としない。構成において別々の構成要素として提示した構造および機能は、組み合わせた構造または構成要素として実装することができる。同様に、単一の構成要素として提示した構造および機能は、別々の構成要素として実装することができる。これらのおよび他の変形、変更、追加、および改善は、本明細書における主題の範囲内に含まれる。さらに、本明細書に使用した、関連した用語(「第1の(first)」、「第2の(second)」、「第3の(third)」など)は、任意の順序、高さ、または重要性を表さず、むしろ、1つの要素を別の要素と区別するのに使用される。さらに、「1つの(a)」、「1つの(an)」、および「複数(plurality)」という用語は、本明細書における数量の制限を表さず、むしろ、記述した物品の少なくとも1つの存在を表す。
主題の概要を具体的な実施形態を参照して説明してきたが、本明細書の実施形態のより広い範囲から逸脱することなく、様々な変更および変化をこれらの実施形態に加えることができる。詳細な説明は、限定的な意味で理解してはならず、様々な実施形態の範囲は、添付の特許請求の範囲が権利を有する同等物の全範囲とともに、そのような特許請求の範囲だけによって定義される。

Claims (12)

  1. 並列処理ブロックチェーントランザクションのためのコンピュータ実装方法であって、
    ブロックチェーンに追加するための複数の候補トランザクションを取得するステップと、
    前記候補トランザクションを1つまたは複数の独立したトランザクショングループにグループ化するステップと、
    前記ブロックチェーンの最新ブロックの状態ツリーデータ構造の少なくとも一部分の1つまたは複数の複写を作成するステップと、
    前記1つまたは複数の独立したトランザクショングループをそれぞれ前記ブロックチェーンの最新ブロックの前記状態ツリーデータ構造の前記1つまたは複数の複写に関連付けるステップと、
    前記独立したトランザクショングループのそれぞれにおける前記候補トランザクションを実行し、それぞれ前記ブロックチェーンの最新ブロックの前記状態ツリーデータ構造の前記関連付けられた複写を更新することによって、並列に、前記1つまたは複数の独立したトランザクショングループを生成するステップと
    状態ツリーデータ構造の前記更新された複写をマージすることによって、新たなブロックの新たな状態ルートノードを生成し、前記新たな状態ルートノードに更新を伝搬させるステップと、
    を含む、方法。
  2. 前記候補トランザクションを1つまたは複数の独立したトランザクショングループにグループ化するステップが、
    それぞれに前記1つまたは複数の独立したトランザクショングループのうちの同じトランザクショングループの下で少なくとも1つの共通のトランザクションアカウントが関与する前記候補トランザクションのうちの2つ以上をグループ化するステップを含む、請求項1に記載の方法。
  3. 前記候補トランザクションを1つまたは複数の独立したトランザクショングループにグループ化するステップが、
    前記1つまたは複数の独立したトランザクショングループのうちの異なるトランザクショングループの下で任意の共通のトランザクションアカウントが関与しない前記候補トランザクションのうちの2つ以上をグループ化するステップを含む、請求項1または2に記載の方法。
  4. 状態ツリーデータ構造が、最新ブロックに記憶された単一の状態ルートノードと、最新ブロックに記憶されていない複数の中間ノードおよびリーフノードと、を備えるマークルパトリシアツリーを備える、請求項1からのいずれかに記載の方法。
  5. 前記独立したトランザクショングループのそれぞれにおける前記候補トランザクションを実行し、前記状態ツリーデータ構造の前記関連付けられた複写を更新するステップが、
    並列に、前記独立したトランザクショングループのそれぞれにおける前記候補トランザクションを実行し、前記状態ツリーデータ構造の前記関連付けられた複写を更新するステップを含む、請求項1からのいずれかに記載の方法。
  6. 対応する独立したトランザクショングループにおける前記候補トランザクションを実行するステップが、
    対応するトランザクショングループにおける前記候補トランザクションをマルチコアプロセッサによって実行するステップを含む、請求項1からのいずれかに記載の方法。
  7. 前記状態ツリーデータ構造の前記関連付けられた複写を更新するステップが、
    前記状態ツリーデータ構造の前記関連付けられた複写のうちの1つにおけるトランザクションアカウントの残高を更新するステップ、
    前記トランザクションアカウントを除去するステップ、または
    新たなトランザクションアカウントを追加するステップのうちの少なくとも1つを含む、請求項1からのいずれかに記載の方法。
  8. 前記状態ツリーデータ構造の前記更新された複写をマージするステップが、
    前記状態ツリーデータ構造の前記更新された複写において行われた更新を組み合わせ、組み込むことによって前記ブロックチェーンの最新ブロックの前記状態ツリーデータ構造の前記少なくとも一部分を更新するステップを含む、請求項1からのいずれかに記載の方法。
  9. 前記新たなブロックを前記ブロックチェーンに追加するステップをさらに備える、請求項1からのいずれかに記載の方法。
  10. 並列処理ブロックチェーントランザクションのためのシステムであって、
    1つまたは複数のプロセッサと、
    前記1つまたは複数のプロセッサに結合され、請求項1からのいずれかに記載の方法を実施するために前記1つまたは複数のプロセッサによって実行可能である命令を記憶させた1つまたは複数のコンピュータ可読メモリと、を備える、システム。
  11. 並列処理ブロックチェーントランザクションのための装置であって、請求項1からのいずれかに記載の方法を実施するための複数のモジュールを備える、装置。
  12. 非一時的コンピュータ可読媒体であって、デバイスのプロセッサによって実行されたとき、デバイスに請求項1からのいずれかに記載の方法を実施させる命令を記憶させた、媒体。
JP2019553286A 2019-03-28 2019-03-28 並列処理ブロックチェーントランザクションのためのシステムおよび方法 Active JP6955026B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/080036 WO2019120320A2 (en) 2019-03-28 2019-03-28 System and method for parallel-processing blockchain transactions

Publications (2)

Publication Number Publication Date
JP2020519983A JP2020519983A (ja) 2020-07-02
JP6955026B2 true JP6955026B2 (ja) 2021-10-27

Family

ID=66994287

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019553286A Active JP6955026B2 (ja) 2019-03-28 2019-03-28 並列処理ブロックチェーントランザクションのためのシステムおよび方法

Country Status (10)

Country Link
US (2) US11310032B2 (ja)
EP (1) EP3610450A4 (ja)
JP (1) JP6955026B2 (ja)
KR (1) KR102315473B1 (ja)
CN (1) CN110869967B (ja)
AU (1) AU2019204722B2 (ja)
CA (1) CA3055108C (ja)
SG (1) SG11201908294TA (ja)
TW (1) TWI721699B (ja)
WO (1) WO2019120320A2 (ja)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3679683A4 (en) * 2017-09-08 2021-08-25 Uledger, Inc. SYSTEMS AND PROCEDURES FOR PROVIDING IMMUTABLE RECORDINGS
WO2019070938A1 (en) * 2017-10-04 2019-04-11 Silvio Micali INTELLIGENT DECLARATIVE CONTRACTS
WO2020042150A1 (zh) * 2018-08-31 2020-03-05 重庆小雨点小额贷款有限公司 区块链系统、信息共享方法及相关设备
SG11201910057QA (en) 2019-04-12 2019-11-28 Alibaba Group Holding Ltd Performing parallel execution of transactions in a distributed ledger system
CA3060790C (en) * 2019-04-12 2021-06-08 Alibaba Group Holding Limited Performing parallel execution of transactions in a distributed ledger system
CN111767337B (zh) * 2019-05-24 2024-04-05 北京沃东天骏信息技术有限公司 区块的验证方法、装置及设备
US10764062B2 (en) * 2019-06-03 2020-09-01 Alibaba Group Holding Limited Blockchain ledger compression
WO2019179539A2 (en) 2019-07-11 2019-09-26 Alibaba Group Holding Limited Shared blockchain data storage
SG11202001975SA (en) * 2019-07-11 2020-04-29 Alibaba Group Holding Ltd Shared blockchain data storage
CN111448781B (zh) 2019-07-11 2022-08-26 创新先进技术有限公司 一种计算机实现的用于通信共享的区块链数据的方法
CN110445627B (zh) * 2019-08-12 2021-10-26 腾讯科技(深圳)有限公司 群组更新方法、装置、计算机设备以及计算机存储介质
US10992459B2 (en) * 2019-08-30 2021-04-27 Advanced New Technologies Co., Ltd. Updating a state Merkle tree
US10831452B1 (en) * 2019-09-06 2020-11-10 Digital Asset Capital, Inc. Modification of in-execution smart contract programs
CN110599169B (zh) * 2019-09-16 2021-03-26 腾讯科技(深圳)有限公司 数据处理方法、装置、终端及介质
JP2021057887A (ja) * 2019-09-29 2021-04-08 工藤 健司 データ構造
KR102335058B1 (ko) * 2019-11-19 2021-12-06 한양대학교 산학협력단 상호 의존성을 가지는 병렬 트랜잭션들을 선형화하는 방법, 이를 이용하는 블록체인 노드 및 프로그램
US11520776B1 (en) * 2020-02-11 2022-12-06 Two Six Labs, LLC Consensus protocol for blockchain structure
CN111343177B (zh) * 2020-02-25 2022-11-29 百度在线网络技术(北京)有限公司 轻量级节点的监管方法、装置、设备和介质
WO2021184325A1 (en) * 2020-03-19 2021-09-23 Wang Chau Tyler Kot Ethereum state data storage optimization method, ethereum system and storage medium
CN111432009B (zh) * 2020-03-30 2023-04-07 深圳壹账通智能科技有限公司 一种区块链数据的同步方法、装置及电子设备、存储介质
CN111506783B (zh) * 2020-04-08 2023-12-22 百度在线网络技术(北京)有限公司 区块链中事务请求处理方法、装置、设备和介质
SG11202102371QA (en) * 2020-04-15 2021-04-29 Alipay Hangzhou Inf Tech Co Ltd Distributed blockchain data storage under account model
EP3844642A4 (en) 2020-04-20 2021-08-25 Alipay (Hangzhou) Information Technology Co., Ltd. STORING BLOCKCHAIN DATA DISTRIBUTED UNDER AN ACCOUNT MODEL
CN111640020B (zh) * 2020-05-22 2023-09-19 百度在线网络技术(北京)有限公司 区块链中事务请求处理方法、装置、设备和介质
CN111651790B (zh) * 2020-06-11 2023-04-11 上海分布信息科技有限公司 一种开放区块链中隐私信息的保护方法及系统
CN111861744A (zh) * 2020-06-30 2020-10-30 上海简苏网络科技有限公司 一种实现区块链交易并行化的方法及区块链节点
US11563559B2 (en) 2020-07-29 2023-01-24 International Business Machines Corporation Parallel processing of blockchain procedures
CN111935315B (zh) * 2020-09-25 2021-01-12 支付宝(杭州)信息技术有限公司 区块同步方法及装置
KR102473672B1 (ko) * 2020-10-20 2022-12-02 주식회사 커먼컴퓨터 트리 구조의 상태 데이터베이스를 포함하는 블록체인에 대한 상태 관리 방법 및 시스템
KR102378377B1 (ko) * 2020-11-13 2022-03-24 고려대학교 산학협력단 스마트 컨트랙트 내의 취약 트랜잭션 시퀀스 획득 장치 및 방법
CN113077344B (zh) * 2021-04-15 2023-06-30 恒生电子股份有限公司 基于区块链的交易方法、装置、电子设备及存储介质
CN113256417B (zh) * 2021-05-14 2022-07-12 杭州链网科技有限公司 一种基于交易共享的共识出块方法及系统
CN113592639B (zh) * 2021-05-21 2023-10-13 上海简苏网络科技有限公司 一种区块链交易删除方法及系统
KR102309503B1 (ko) * 2021-05-28 2021-10-07 주식회사 바스스토어 블록체인을 이용한 트랜잭션 방법, 노드 장치 및 컴퓨터 판독 가능한 기록 매체
US11790353B2 (en) * 2021-06-16 2023-10-17 Song Hwan KIM System and method for online/offline payment with virtual currency for nodes included in mobile-based blockchain distributed network
CN113704917A (zh) * 2021-08-27 2021-11-26 清华大学 基于本体的机械产品数字孪生模型演化管理方法及装置
US11936794B2 (en) * 2021-09-16 2024-03-19 Masterard International Incorporated Method and system for parallel processing of smart contracts in permissioned blockchains
US11854009B2 (en) * 2021-10-07 2023-12-26 Chia Network Inc. Method for pooling in a proof-of-space-based blockchain via singletons
CN114500433B (zh) * 2022-01-21 2024-04-19 北京送好运信息技术有限公司 基于区块链与默克尔树的多邮件数据保全方法
GB2615598A (en) * 2022-02-15 2023-08-16 Nchain Licensing Ag Attesting to a set of unconsumed transaction outputs

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9594644B2 (en) * 2014-09-19 2017-03-14 Sybase, Inc. Converting a serial transaction schedule to a parallel transaction schedule
US10042782B2 (en) 2015-06-02 2018-08-07 ALTR Solutions, Inc. Immutable datastore for low-latency reading and writing of large data sets
US10193696B2 (en) 2015-06-02 2019-01-29 ALTR Solutions, Inc. Using a tree structure to segment and distribute records across one or more decentralized, acylic graphs of cryptographic hash pointers
US10075298B2 (en) 2015-06-02 2018-09-11 ALTR Solutions, Inc. Generation of hash values within a blockchain
US10121019B2 (en) 2015-06-02 2018-11-06 ALTR Solutions, Inc. Storing differentials of files in a distributed blockchain
US9881176B2 (en) 2015-06-02 2018-01-30 ALTR Solutions, Inc. Fragmenting data for the purposes of persistent storage across multiple immutable data structures
US10114970B2 (en) 2015-06-02 2018-10-30 ALTR Solutions, Inc. Immutable logging of access requests to distributed file systems
US10089489B2 (en) 2015-06-02 2018-10-02 ALTR Solutions, Inc. Transparent client application to arbitrate data storage between mutable and immutable data repositories
US10366247B2 (en) 2015-06-02 2019-07-30 ALTR Solutions, Inc. Replacing distinct data in a relational database with a distinct reference to that data and distinct de-referencing of database data
JP6923946B2 (ja) * 2015-12-21 2021-08-25 コチャバ インコーポレイテッドKochava Inc. 自己規制取引システム、その方法、プログラム、データ処理デバイスシステム、コンピュータ読み取り可能な記憶媒体システム、コンピュータプログラム製品およびコンピュータプログラム製品
US10255108B2 (en) * 2016-01-26 2019-04-09 International Business Machines Corporation Parallel execution of blockchain transactions
KR101735708B1 (ko) 2016-02-02 2017-05-15 주식회사 코인플러그 파일에 대한 노터리 서비스를 제공하고 상기 노터리 서비스를 사용하여 기록된 파일에 대한 검증을 수행하는 방법 및 서버
US10417217B2 (en) 2016-08-05 2019-09-17 Chicago Mercantile Exchange Inc. Systems and methods for blockchain rule synchronization
CN106330431A (zh) * 2016-08-29 2017-01-11 北京瑞卓喜投科技发展有限公司 基于区块链技术的数据处理方法、装置及系统
DE112017006701T5 (de) 2016-12-30 2019-09-19 Intel Corporation Internet der Dinge
US20190079998A1 (en) * 2017-01-31 2019-03-14 Thomas Jay Rush Blockchain data-processing engine
US20180247191A1 (en) 2017-02-03 2018-08-30 Milestone Entertainment Llc Architectures, systems and methods for program defined entertainment state system, decentralized cryptocurrency system and system with segregated secure functions and public functions
CN106980649B (zh) * 2017-02-28 2020-07-10 创新先进技术有限公司 写入区块链业务数据的方法和装置及业务子集合确定方法
US10762479B2 (en) * 2017-04-05 2020-09-01 Samsung Sds Co., Ltd. Method and system for processing blockchain-based real-time transaction
US11481360B2 (en) 2017-04-07 2022-10-25 Hwa-Shang CHANG Blockchain network and method of operation thereof
WO2018215951A1 (en) 2017-05-26 2018-11-29 nChain Holdings Limited Script based blockchain interaction
EP3631742A4 (en) * 2017-06-01 2020-09-30 Etoro Group Ltd. INTELLIGENT CONTRACT FOR THE COPY TRADE
WO2018223042A1 (en) * 2017-06-01 2018-12-06 Schvey, Inc. d/b/a/ Axoni Distributed privately subspaced blockchain data structures with secure access restriction management
CN109146677B (zh) * 2017-06-14 2021-07-23 深圳区块链金融服务有限公司 并行构建区块链视图的方法、计算机系统和可读存储介质
CN107423961B (zh) 2017-07-11 2024-06-14 北京泛融科技有限公司 一种基于随机相关性分析的优化共识方法
US10761877B2 (en) 2017-07-21 2020-09-01 Intel Corporation Apparatuses, methods, and systems for blockchain transaction acceleration
US20190065593A1 (en) 2017-08-28 2019-02-28 Forward Blockchain, LLC Distributed Ledger Registry System
WO2019055585A1 (en) * 2017-09-12 2019-03-21 Kadena Llc PARALLEL CHAIN ARCHITECTURE FOR BLOCK CHAIN SYSTEMS
CN107678865A (zh) * 2017-09-20 2018-02-09 中国银行股份有限公司 基于交易分组的区块链的验证方法以及系统
CN108846659B (zh) * 2018-06-13 2021-09-14 深圳前海微众银行股份有限公司 基于区块链的转账方法、装置及存储介质
US11070360B2 (en) * 2018-08-13 2021-07-20 International Business Machines Corporation Parallel transaction validation and block generation in a blockchain
CN108932348B (zh) * 2018-08-16 2020-06-30 北京京东尚科信息技术有限公司 区块链的合并处理方法、装置、区块链节点及存储介质

Also Published As

Publication number Publication date
WO2019120320A3 (en) 2020-02-06
US20200145197A1 (en) 2020-05-07
JP2020519983A (ja) 2020-07-02
AU2019204722A1 (en) 2019-06-27
EP3610450A4 (en) 2020-06-10
CN110869967B (zh) 2024-04-16
WO2019120320A2 (en) 2019-06-27
CA3055108C (en) 2021-10-05
KR20200116011A (ko) 2020-10-08
CA3055108A1 (en) 2019-06-27
SG11201908294TA (en) 2019-10-30
TWI721699B (zh) 2021-03-11
US20200044824A1 (en) 2020-02-06
KR102315473B1 (ko) 2021-10-21
CN110869967A (zh) 2020-03-06
US10700852B2 (en) 2020-06-30
TW202037108A (zh) 2020-10-01
AU2019204722B2 (en) 2020-10-29
EP3610450A2 (en) 2020-02-19
US11310032B2 (en) 2022-04-19

Similar Documents

Publication Publication Date Title
JP6955026B2 (ja) 並列処理ブロックチェーントランザクションのためのシステムおよび方法
CN110089069B (zh) 用于信息保护的系统和方法
KR102150814B1 (ko) 정보 보호를 위한 시스템 및 방법
CA3037833C (en) System and method for information protection
US10892888B2 (en) System and method for information protection
KR20210003234A (ko) 분할된 블록체인 네트워크에서 블록체인의 블록을 유지하는 것
TW202020710A (zh) 用於資訊保護的系統和方法
BR112019007907A2 (pt) sistema e método para proteção de informações
AU2019101607A4 (en) System and method for parallel-processing blockchain transactions
Zhang et al. Deconstructing Blockchains: Concepts, Systems, and Insights.
AU2019101581A4 (en) System and method for information protection
CN118216122A (zh) 用于分布式区块链功能的方法和系统

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200115

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191111

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201030

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20201221

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210126

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210426

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: 20210831

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210930

R150 Certificate of patent or registration of utility model

Ref document number: 6955026

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150