(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-11-19
(54)【発明の名称】データ保持及び記憶域のスケーラビリティ目的においてブロックチェーンからブロックを枝刈りする方法及びシステム
(51)【国際特許分類】
G06F 16/182 20190101AFI20241112BHJP
【FI】
G06F16/182
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024525549
(86)(22)【出願日】2022-09-12
(85)【翻訳文提出日】2024-06-17
(86)【国際出願番号】 US2022043210
(87)【国際公開番号】W WO2023075941
(87)【国際公開日】2023-05-04
(32)【優先日】2021-10-27
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】500041363
【氏名又は名称】マスターカード インターナシヨナル インコーポレイテツド
(74)【代理人】
【識別番号】100147485
【氏名又は名称】杉村 憲司
(74)【代理人】
【識別番号】230118913
【氏名又は名称】杉村 光嗣
(74)【代理人】
【識別番号】100224683
【氏名又は名称】齋藤 詩織
(72)【発明者】
【氏名】スティーヴン ヒギンス
(57)【要約】
ブロックチェーンにおける新たな現在のジェネシスブロックの構成について確認する方法であって、該ブロックチェーンは新たな現在のジェネシスブロックの前で枝刈りすることを可能とするように構成されている、方法であって:ブロックチェーンネットワーク内のブロックチェーンノードによって、ネットワーク内の別のノードからジェネシス応答メッセージを受信するステップであって、メッセージは構成値及び序数値を含む、ステップと;序数値に先行する数値を含む先行するジェネシスブロックに後行して追加されている、ブロックチェーン内の複数の標準ブロックを識別するステップと;識別された複数の標準ブロックの各々からスマート契約の状態変更を集約するステップと;受信されたジェネシス応答メッセージ内に含まれる構成値を、集約されたスマート契約の状態変更に基づいて検証するステップとを含む。
【特許請求の範囲】
【請求項1】
ブロックチェーンにおける新たなジェネシスブロックの構成について確認する方法であって、該ブロックチェーンは前記新たなジェネシスブロックの前で枝刈りすることを可能とするように構成されている、方法であって、
ブロックチェーンネットワーク内のブロックチェーンノードのレシーバによって、前記ブロックチェーンネットワーク内の別のノードからジェネシス応答メッセージを受信するステップであって、前記ジェネシス応答メッセージは少なくとも構成値及び序数値を含む、ステップと、
前記ブロックチェーンノード内のプロセッサによって、前記序数値に先行する数値を含む先行するジェネシスブロックに後行して追加されている、前記ブロックチェーン内の複数のブロックを識別するステップと、
前記ブロックチェーンノードの前記プロセッサ又は同じ前記ブロックチェーン内の別のブロックチェーンノードのプロセッサによって、前記識別された複数のブロックの各々から状態変更を集約するステップと、
前記ブロックチェーンノードの前記プロセッサによって、前記受信されたジェネシス応答メッセージ内に含まれる前記構成値を、前記集約された状態変更に基づいて検証するステップと、を含む、方法。
【請求項2】
請求項1に記載の方法において、さらに、
前記ブロックチェーンノードの前記プロセッサによって、前記集約された状態変更を、前記ブロックチェーンノードのメモリ内に記憶されている前記ブロックチェーンと関連付けられている状態データベース内の1つ以上の対応するスマート契約に、適用するステップを含む、方法。
【請求項3】
請求項1に記載の方法において、さらに、
前記ブロックチェーンノードの前記プロセッサによって、前記集約された状態変更を用いてマークルルートを生成するステップを含み、
前記構成値を検証するステップは、一致に関して、前記構成値を、前記生成されたマークルルートと比較することを含む、方法。
【請求項4】
ブロックチェーンにおける新たなジェネシスブロックの構成について確認するシステムであって、該ブロックチェーンは現在のジェネシスブロックに先行して枝刈りすることを可能とするように構成されている、システムであって、
ブロックチェーンネットワークと、
前記ブロックチェーンネットワーク内の別のノードと、
前記ブロックチェーンネットワーク内のブロックチェーンノードであって、
前記ブロックチェーンネットワーク内の別のノードからジェネシス応答メッセージを受信するレシーバであって、前記ジェネシス応答メッセージは少なくとも構成値及び序数値を含む、レシーバと、
プロセッサであって、
前記序数値に先行する数値を含む先行するジェネシスブロックに後行して追加されている、前記ブロックチェーン内の複数のブロックを識別するステップと、
前記識別された複数のブロックの各々から状態変更を集約するステップと、
前記受信されたジェネシス応答メッセージ内に含まれる前記構成値を、前記集約された状態変更に基づいて検証するステップと、を実行するプロセッサと、を含む、ブロックチェーンノードと、
を含む、システム。
【請求項5】
請求項4に記載のシステムにおいて、前記ブロックチェーンノードの前記プロセッサは、さらに、前記集約された状態変更を、前記ブロックチェーンノードのメモリ内に記憶されている前記ブロックチェーンと関連付けられている状態データベース内の1つ以上の対応するスマート契約に適用する、システム。
【請求項6】
請求項4に記載のシステムにおいて、
前記ブロックチェーンノードの前記プロセッサは、さらに、前記集約された状態変更を用いてマークルルートを生成し、
前記構成値を検証するステップは、一致に関して、前記構成値を、前記生成されたマークルルートと比較することを含む、システム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ブロックチェーンの枝刈りに関するのであり、特に現在のジェネシスブロック、構成値、及び状態データベースを用いて不変性、スマート契約、及びトランザクション検証に影響を与えずにブロックチェーンにおけるブロックの連続的枝刈り(pruning)を可能とすることに関する。
【0002】
関連出願の相互参照
本願は、米国特許出願第17/452,492号(2021年10月27日出願)の利益及び優先権を主張する。上記出願の開示全体は参照によってここに取り込まれる。
【背景技術】
【0003】
ブロックチェーンは当初においては、暗号通貨を用いての支払トランザクションをなすために用いる記憶機構として作られた。ブロックチェーンを用いることによって分散化、分散コンピューティング、トランザクション透明性等の幾つもの利点がもたらされる一方で、トランザクションに関与する個人又はエンティティについてはある程度の匿名性がもたらされる。ブロックチェーンの比較的に選好される特性としてはその記録の不変性が挙げられる:即ち、チェーンの部分である全トランザクションが格納されるのであり且つ必要とされる演算力及び帯域制限故に不変性を帯びるのであり、特にチェーンが伸びてブロックチェーンネットワークがより多くのノードを追加していくとこれが強まる。
【0004】
もっとも、これらの属性故にブロックチェーンが相当に大きなデータサイズに達することがあり、送信又はローカルでの記憶が非効率又は不可能となってしまう場合がある。例えば、十分に多数のブロックを有するブロックチェーン又は複数のブロックが相当量のデータを記憶している場合、ギガバイト級の領域を消費し得るのであり、時間の経過を受けてこれは非現実的となり得る。伝統的なブロックチェーンでは、不変性故に、何らかの有意な態様でデータサイズを削減することは多くの場合不可能である。その結果、一部のノードについて記憶域からブロックを除くことを可能とし得るいくつかの方法が開発されている。もっとも、これらの方法は、少なくとも一部のノードがブロックチェーンの完全なコピーを検証に使用するために保持していることに多くの場合頼っており、完全なコピーを保持していないノードは、枝刈りされたブロック上で入力を発見できなかったトランザクションの検証を行えない場合がある。このような方法では、削減されたデータサイズは、多くの場合では結果としては役に立たず、他の場合では非現実的となり得る。
【0005】
したがって、ブロックチェーンに対しては技術的な進歩をもたらして、任意のノードがブロックチェーンの完全なコピーを保持することを要さずに、全ての新規トランザクションを全てのノードが検証できるように保ちつつブロックの枝刈りを可能とすることが必要となっている。
【発明の概要】
【0006】
本開示は、新規ブロックチェーントランザクションを処理すること及びブロックチェーン内の任意の与えられたジェネシスブロックの後方で枝刈りをすることを可能とするように構成されたブロックチェーンでの新たなジェネシスブロックを確認することを実行するためのシステム及び方法についての説明を提供する。ブロックチェーンでは定期的に新しい現在のジェネシスブロックが選ばれるのであり、現在のジェネシスブロックが選ばれたらば、スマート契約の現在の状態についての或いは一部の場合では未消費トランザクション出力についての集約たる構成値を含み得る。本明細書にて開示される方法を用いると、現在のジェネシスブロックによって新規トランザクション又はスマート契約の実行に関して成功裏に検証及び処理をすることが可能となるのであり、これは先行する任意のブロックを要することなくなされ、全てのブロックチェーンノードがそれらのブロックを枝刈りすることが可能となる。一部の場合では、ブロックチェーンノードは状態データベースを維持でき、これは未消費トランザクション出力及び関連するデータを記憶でき、これによってブロックチェーンノードがトランザクション(その入力は枝刈りされたブロック内のトランザクションの出力に対応し得る)を検証することを可能とすることができるのであり、その結果としてそのようなトランザクションが成功裏に検証されてブロックチェーンに追加されることができるのであって、これは新たなジェネシスブロックの構成データにそのようなデータを含めることを要しないものとできる。いずれの場合においても、ブロックチェーンネットワーク内の全てのブロックチェーンノードで古いブロックの枝刈りを行えるのであり、新規トランザクションの検証及びスマート契約の実行をなす能力に悪影響を及ぼさずにこれをなすことができ、全てのノードでファイルサイズに関しての相当な削減をもたらすことができ、これは関連する機能性の何らの毀損をも伴わずにしてなせる。
【0007】
ブロックチェーンにおける新規ブロックチェーントランザクションについて処理する方法であって、該ブロックチェーンは現在のジェネシスブロックに先行して枝刈りすることを可能とするように構成されている、方法であって:ブロックチェーンネットワーク内のブロックチェーンノードのレシーバによって新規ブロックチェーントランザクションを受信するステップであって、該新規ブロックチェーントランザクションは少なくとも1つ以上のトランザクション入力及び1つ以上のトランザクション出力を含むステップと;前記ブロックチェーンノードのプロセッサによって前記新規ブロックチェーントランザクションを検証するステップであって、前記新規ブロックチェーントランザクションを検証することは前記1つ以上のトランザクション入力の各々が未消費であると検証することを含むステップと;前記ブロックチェーンノードの前記プロセッサによって新規ブロックを生成するステップであって、該新規ブロックは少なくともブロックヘッダ及び1つ以上のブロックチェーンデータ値を含み、該1つ以上のブロックチェーンデータ値の1つは新規ブロックチェーントランザクションを含むステップと;前記ブロックチェーンノードのトランスミッタによって、前記生成された新規ブロックを前記ブロックチェーンネットワーク内の複数の追加ノードへと送信するステップと;前記ブロックチェーンノードのメモリにて、前記1つ以上のトランザクション出力を前記ブロックチェーンと関連付けられている状態データベースにて記憶するステップとを含む。
【0008】
ブロックチェーンにおける新たな現在のジェネシスブロックの構成について確認する方法であって、該ブロックチェーンは前記新たな現在のジェネシスブロックの前で枝刈りをすることを可能とするように構成されている、方法であって:ブロックチェーンネットワーク内のブロックチェーンノードのレシーバによって、前記ブロックチェーンネットワーク内の別のノードからのジェネシス応答メッセージを受信するステップであって、前記ジェネシス応答メッセージは少なくとも構成値及び序数値を含む、ステップと;前記ブロックチェーンノード内のプロセッサによって、序数値に先行する数値を含む先行するジェネシスブロックに後行して追加されている、前記ブロックチェーン内の複数の標準ブロックを識別するステップと;ブロックチェーンノードのプロセッサによって、前記識別された複数の標準ブロックの各々からスマート契約の状態変更を集約するステップと;前記ブロックチェーンノードの前記プロセッサによって、前記受信されたジェネシス応答メッセージ内に含まれる前記構成値を集約されたスマート契約の状態変更に基づいて検証するステップとを含む。スマート契約の状態についての集約は、新たな現在のジェネシスブロックを構成する前記ブロックチェーンノードの前記プロセッサによって又は別のブロックチェーンノードによってなされることができる。
【0009】
ブロックチェーンにおける新規ブロックチェーントランザクションについて処理するシステムであって、該ブロックチェーンは現在のジェネシスブロックを超えて枝刈りすることを可能とするように構成されている、システムであって:ブロックチェーンネットワークと、前記ブロックチェーンネットワーク内の複数の追加ノードとを含み;前記ブロックチェーンネットワーク内のブロックチェーンノードは、新規ブロックチェーントランザクションを受信するレシーバであって該新規ブロックチェーントランザクションは少なくとも1つ以上のトランザクション入力及び1つ以上のトランザクション出力を含むレシーバと、前記新規ブロックチェーントランザクションを検証するプロセッサであって、前記新規ブロックチェーントランザクションを検証することは前記1つ以上のトランザクション入力の各々が未消費であると検証すること、及び新規ブロックを生成することを含み、該新規ブロックは少なくともブロックヘッダ及び1つ以上のブロックチェーンデータ値を含み、該1つ以上のブロックチェーンデータ値の1つは新規ブロックチェーントランザクションを含む、プロセッサと、前記生成された新規ブロックを前記ブロックチェーンネットワーク内の複数の追加ノードへと送信するトランスミッタと、前記1つ以上のトランザクション出力を前記ブロックチェーンと関連付けられている状態データベース内に記憶するメモリと、を含む。
【0010】
ブロックチェーンにおける新たな現在のジェネシスブロックの構成について確認するシステムであって、該ブロックチェーンは前記新たな現在のジェネシスブロックの前で枝刈りすること可能とするように構成されている、システムであって:ブロックチェーンネットワークと、前記ブロックチェーンネットワーク内の別のノードと、前記ブロックチェーンネットワーク内のブロックチェーンノードであって、前記ブロックチェーンネットワーク内の別のノードからのジェネシス応答メッセージを受信するレシーバであって前記ジェネシス応答メッセージは少なくとも構成値及び序数値を含むレシーバと、プロセッサであって、前記序数値に先行する数値を含む先行するジェネシスブロックに後行して追加されている、前記ブロックチェーン内の複数の標準ブロックを識別するステップと、前記識別された複数の標準ブロックの各々からスマート契約の状態変更を集約するステップと、前記受信されたジェネシス応答メッセージ内に含まれる前記構成値を前記集約されたスマート契約の状態変更に基づいて検証するステップと、を実行するプロセッサと、を含む、ブロックチェーンノードと、を含む。
【図面の簡単な説明】
【0011】
本開示の範囲は、添付の図面と共に解釈されると、例示的な実施形態についての下記の詳細な記載から最も良く理解される。図面には次の図が含まれる。
【0012】
【
図1】例示的実施形態による、枝刈りされたブロックチェーンにおけるジェネシスブロックの検証及び新規トランザクションの処理のための高レベルシステムアーキテクチャを示すブロック図である。
【
図2】例示的実施形態による、枝刈りされたブロックチェーンにおけるジェネシスブロックの検証及び新規トランザクションの処理のための
図1のシステムのブロックチェーンノードを示すブロック図である。
【
図3】例示的実施形態による、
図1のシステム内の枝刈りされたブロックチェーンにおける新規ブロックチェーントランザクションを処理するための処理について示す流れ図である。
【
図4】例示的実施形態による、枝刈りされたブロックチェーンにおけるジェネシスブロックの検証のための処理について示す流れ図である。
【
図5】例示的実施形態による、現在のジェネシスブロックに先行して枝刈りすることを可能とするように構成されているブロックチェーンにおいて新規ブロックチェーントランザクションを処理するための例示的方法について示す流れ図である。
【
図6】例示的実施形態による、新たなジェネシスブロックの前で枝刈りすることを可能とするように構成されているブロックチェーンにおける新たなジェネシスブロックの構成について確認するための例示的方法について示す流れ図である。
【
図7】例示的な実施形態による、コンピュータシステムアーキテクチャを示すブロック図である。
【0013】
本開示の更なる応用分野は、下記の詳細な説明から自明である。例示的実施形態の詳細な説明は、例示目的のみを意図しており、必ずしも本開示の範囲を制限することを意図していない。
【発明を実施するための形態】
【0014】
用語解説
ブロックチェーン:ブロックチェーンを基礎としたあらゆるトランザクションについての共有台帳であって、通貨、来歴、法的若しくは医療記録、又は他のほとんどの任意の形態のトランザクションが含まれ得る。1つ以上のコンピューティング装置は、ブロックチェーンネットワークを含んでよく、これはブロックチェーンにおけるブロックの一部としてトランザクションを処理及び記録するよう構成されてよい。一旦ブロックが完成すると、当該ブロックはブロックチェーンへ追加され、それによってトランザクション記録が更新される。多くの実施形態では、ブロックチェーンは時系列順のトランザクションの台帳であってよいし、ブロックチェーンネットワークによる使用に適した任意の他の順序で提示されてもよい。いくつかの実施形態では、ブロックチェーンで記録されたトランザクションは、宛先アドレスと通貨額とを含んでよい。これによりブロックチェーンは、どれほどの通貨が特定のアドレスに帰属するかを記録する。いくつかの実施形態では、トランザクションは金融関連であってもそうでなくてもよいし、追加情報又は異なる情報(例えばソースアドレス、タイムスタンプ等)を含むことができる。いくつかの実施形態では、ブロックチェーンは追加的に又は代替的に、ほぼ任意の種別のデータ(これは改ざん又は改訂に対して強化された継続的に増加するデータレコードの一覧を維持する分散データベースに配置されるもの又は配置される必要のあるものである)をトランザクションの形態として含んでよい。あるいはブロックチェーンは、プルーフオブワーク(PoW)及び/又はそれに関連付けられた任意の他の適切な検証技術によってブロックチェーンネットワークによって確認及び有効化されることができる。一部の場合、所定のトランザクションについてのデータは更に、トランザクションデータに付加されたトランザクションの直接的な一部ではない追加のデータを含むことができる。一部の例では、そのようなデータをブロックチェーンに含めることは、トランザクションを構成できる。そのような一部の例では、ブロックチェーンは特定のデジタル通貨、仮想通貨、不換(fiat)通貨又は他の種別の通貨に直接的に関連付けられなくてよく、むしろ広範なデータトランザクションが想定される。
【0015】
枝刈りされたブロックチェーンを維持及び活用するシステム
図1は、状態データベース及び構成値を用いることを介して、枝刈りされたブロックチェーンにおける、ジェネシスブロックの検証及び新規ブロックチェーントランザクションの処理のためのシステム100について示す。
【0016】
システム100は、ブロックチェーンネットワーク104を含むことができる。各ブロックチェーンネットワーク104は、複数の異なるブロックチェーンノード102を備えることができる。いくつかの実施形態では、1つ以上のブロックチェーンノード102は、1つ以上のブロックチェーンネットワーク104におけるノードであることができる。各ブロックチェーンノードは、ブロックチェーンの処理及び管理に関連する機能をなすように構成された
図2及び
図7にて示されているような以下にて詳述されるコンピューティングシステムであることができ、例えば次の事項が含まれ得る:ブロックチェーンデータ値の生成、提案されているブロックチェーントランザクションの検証、デジタル署名の検証、新規ブロックの生成、新規ブロックの検証、ブロックチェーンのコピーの維持。
【0017】
ブロックチェーンは、少なくとも複数のブロックを備える分散型台帳とすることができる。各ブロックは少なくともブロックヘッダ及び1つ以上のデータ値を含んでよい。各ブロックヘッダは少なくともタイムスタンプ、ブロック参照値、及びデータ参照値を含んで良い。タイムスタンプは、ブロックヘッダが生成された時刻とされ得るのであり、また、任意の適切な方法を用いて表すことができる(例えば、UNIXタイムスタンプ、DateTime記法等)。ブロック参照値は、ブロックチェーン内の先行ブロックを(例えば、タイムスタンプに基づいて)参照する値とすることができる。いくつかの実施形態では、ブロックヘッダ内のブロック参照値は、各ブロックに先行する一番最近に追加されたブロックのブロックヘッダへの参照とすることができる。例示的実施形態では、ブロック参照値は、一番最近追加されたブロックのブロックヘッダをハッシュ化することによって生成されたハッシュ値とすることができる。同様に、データ参照値は、ブロックヘッダを含むブロック内に格納されている1つ以上のデータ値への参照とすることができる。例示的実施形態では、データ参照値は、1つ以上のデータ値をハッシュ化することによって生成されたハッシュ値とすることができる。例えば、データ参照値は、1つ以上のデータ値を用いて生成されたマークルツリーのルートとすることができる。
【0018】
各ブロックヘッダ内にてブロック参照値及びデータ参照値を用いることの結果として、ブロックチェーンに不変性が与えられ得る。データ値に対しての変更を試みるにはそのブロックについて新たなデータ参照値の生成が必要とされ、そのためには後続ブロックのブロック参照値を新たに生成することが必要とされ、更には後続の各ブロックについて新たなブロック参照値を生成することが必要とされる。変更を恒久的なものとするためには、新たなブロックの生成及びブロックチェーンへの追加前に、先の事柄をブロックチェーンネットワーク104内の一つずつのブロックチェーンノード102に対して実行及び更新することを要する。演算能力及び通信能力の限界によって、そのような変更は格段に困難なこと又は無理難題となり得るのであり、故にブロックチェーンは不変性を獲得する。
【0019】
いくつかの実施形態では、ブロックチェーンは、2つの異なるブロックチェーンウォレット間にてなされたブロックチェーントランザクションに関する情報を格納するために用いられることができる。ブロックチェーンウォレットは暗号鍵ペアの秘密鍵を含み得るのであり、それはデジタル署名の生成に用いられるのであり、それはブロックチェーントランザクションに関しての支払人の承認としての役割を果たし得るのであり、該デジタル署名は暗号鍵ペアの公開鍵を用いてブロックチェーンネットワーク104によって検証できる。一部の場合では、「ブロックチェーンウォレット」との語は秘密鍵を特に指し得る。他の場合では、「ブロックチェーンウォレット」との語は、ブロックチェーントランザクションにて秘密鍵を用いるためにそれを格納するコンピューティング装置(例えば、参加システム106)を指し得る。例えば、各コンピューティング装置の各々は自機用の秘密鍵をそれぞれの暗号鍵ペアについて有していることができ、また、各々はブロックチェーンネットワーク104と関連付けられているブロックチェーンとのトランザクションにて用いるためのブロックチェーンウォレットとされることができる。コンピューティング装置は、ブロックチェーンウォレットを格納及び活用するのに適した任意のタイプの装置とすることができ、例えば、デスクトップコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、タブレットコンピュータ、携帯電話、スマートフォン、スマートウォッチ、スマートテレビ、ウェアラブルコンピューティング装置、埋込可能コンピューティング装置等とされ得る。
【0020】
ブロックチェーン内に記憶された各ブロックチェーンデータ値は、ブロックチェーントランザクション又は他のデータの記憶に適宜対応し得る。ブロックチェーントランザクションは少なくとも次の事項を備え得る:送信者の秘密鍵を用いて生成された通貨の送信者(例えば、第1の参加システム106)のデジタル署名、受取人の公開鍵を用いて生成された通貨の受取人(例えば、第2の参加システム106)のブロックチェーンアドレス、及び移転されるブロックチェーン通貨額又は記憶される他のデータ。ブロックチェーンが通貨とは異なるデータ記憶用途で用いられている場合には、通貨額をそのような他のデータで代替できる。一部のブロックチェーントランザクションにおいてトランザクションは次の事項をも含み得る:ブロックチェーン通貨が現在保管されている1つ以上の送信者ブロックチェーンアドレス(例えば、デジタル署名によってそのような通貨へのアクセスが立証される場合);及び送信者の公開鍵を用いて生成されたアドレスであって送信者によって保持されるべき任意の変更のためのアドレス。将来のトランザクションにて使用可能な暗号通貨が送られたアドレスは「出力」アドレスと称されるのであって、各アドレスは先行するブロックチェーントランザクションの出力を捕捉するために以前用いられた故にそうなるのであり、「未消費トランザクション」ともこれは称されるのであってその通貨が未だ未消費である先行トランザクションにてアドレスへと送られる通貨が存する故にそうなる。一部の場合では、ブロックチェーントランザクションは、エンティティがトランザクションの検証に用いるための送信者の公開鍵を含むこともできる。ブロックチェーントランザクションの伝統的な処理のためには、そのようなデータは、送信者によって又は受取人のどちらかによって、ブロックチェーンネットワーク104内のブロックチェーンノード102へと提供され得る。ノードは送信者のウォレットの暗号鍵ペア内の公開鍵を用いてデジタル署名を検証でき、また、送信者の資金に対してのアクセスを検証できるのであり(例えば、未消費トランザクションは未だ消費されておらず且つ送信者のウォレットと関連付けられているアドレスへと送られた場合)、これはトランザクションの「確認」処理として知られており、またそして、ブロックチェーントランザクションは新規ブロック内に含められる。伝統的なブロックチェーン実装例では、新規ブロックに対しては、ブロックチェーンへの追加及びブロックチェーンネットワーク104内の全ブロックチェーンノード102への配布前に、ブロックチェーンネットワーク104内の他のノード102によって検証がなされ得る。ブロックチェーンデータ値がブロックチェーントランザクションに関するものではなく代わりに他のタイプのデータの記憶に関するものである場合、ブロックチェーンデータ値は依然としてデジタル署名の検証を含むか他の態様で伴うことができる。
【0021】
いくつかの実施形態では、ブロックチェーンはスマート契約を活用することができる。このような実施形態では、スマート契約は、ブロックチェーンネットワーク104と関連付けられているブロックチェーン内にて記憶されることができる。スマート契約は自己実行型の契約であることができ、実行後のスマート契約の結果は、ブロックチェーン内にて記憶される、新規ブロックチェーントランザクションなどの新規ブロックチェーンデータ値とすることができる。スマート契約はディスパッチとも称される1つ以上の入力を用いて実行されることができ、そして新規ブロックチェーンデータ値が生成される。スマート契約は自己実行型とすることができ、スマート契約は、有効なディスパッチが識別された場合に自動的に実行を起動することになる、或いは特定の基準が充足された場合に自動的に起動することになる。そしてその結果として特定のディスパッチが実行の入力としてスマート契約に提供されることとなる。例示的な実施形態では、スマート契約についての各ディスパッチはブロックチェーン上の先行するブロックチェーンデータ値を参照することとなり、例えば、ブロックチェーンデータ値のハッシュ値又は一意的識別値を用いることによってこれがなされ得るのであり、これはブロックチェーンデータ値と共にブロックチェーン内に記憶されている。ディスパッチが入力としてスマート契約に投入された場合、スマート契約の実行は結果としてブロックチェーントランザクション等の新たなブロックチェーンデータ値をもたらし得るのであり、一部の場合ではこれはディスパッチそれ自体に依存し得るのであり、例えばディスパッチ内の値がスマート契約の実行とは異なる出力を結果としてもたらし得る。
【0022】
システム100では、ブロックチェーンネットワーク104内のブロックチェーンノード102は、ブロックチェーンを枝刈りするように構成されていることができる。ブロックチェーンの枝刈りは、ブロックチェーンの現在の運用に影響を与えずに、ブロックチェーン内のより古いブロックをローカルデータストレージから削除することを含むことができる。より詳しく後述するように、ブロックチェーンネットワーク104は、複数のジェネシスブロックを活用し並びに構成値及び状態データベースを用いて、将来のトランザクションの検証を可能とし、また、枝刈りされたブロックを伴ってもブロックチェーンの不変性を維持することができる。伝統的には、ジェネシスブロックはブロックチェーン内の初めてのブロックであり、ヌルブロック参照値又は先行ブロックのハッシュ値を表さない他の値を有するブロックヘッダを含むことができる。一部の場合では、ジェネシスブロックは任意のブロックチェーンデータ値を含まないことができる。システム100では、新たなジェネシスブロックが作成されて、確認されて、そしてブロックチェーンに追加されることができるのであって、ブロックチェーン内の新たなジェネシスブロックに先行する任意のブロックはブロックチェーンノード102によって枝刈りされることができる。枝刈りされたブロックからの未消費トランザクション出力を活用することを試みる場合であっても新規トランザクションが成功裏に確認されることができることを担保するために、システム100内のブロックチェーンノード102は状態データベースを活用することができる。
【0023】
状態データベースは、ブロックチェーンノード102内に記憶されている又はそれによってアクセス可能なローカルデータベースとされることができ、ブロックチェーン内の現在の未消費トランザクション出力を含む。ブロックチェーンにブロックが追加されるとき、ブロックチェーンノード102は、そこにて(例えば、ブロック内のブロックチェーンデータ値内にて)記憶されている新規ブロックチェーントランザクションの各々を分析して、消費されるに至った未消費トランザクション出力及び新たに生成されたトランザクション出力に関して自己の状態データベースを更新することができる。ブロックチェーンノード102は、新規ブロックチェーントランザクションを分析でき、ある場合には含まれている未消費トランザクション出力を自己の状態データベースから除くことができ、或いは、未消費トランザクション出力の状態を既消費として更新することができる。ブロックチェーンノード102はまた、各新規ブロックチェーントランザクションを分析して、トランザクションの結果生じる何らかの新たな未消費トランザクション出力を自己の状態データベースに追加できる。一部の場合では、トランザクション出力が未消費であることを示す状態値は、トランザクション出力に付随するデータベースにて記憶されていることもできる。いくつかの実施形態では、トランザクション出力に移転される通貨額は、トランザクション出力と共に状態データベースにて記憶されていることもできる。
【0024】
いくつかの実施形態では、状態データベース内の未消費トランザクションについての項目(entry)は、未消費トランザクションが作成されるに至ったブロックを指定することもできる。例えば、ブロックチェーン内の各ブロックはそれ自体と関連付けられている識別番号を有することができ、これはランダムとされたり、疑似ランダムとされたり、例えばチェーンにおける第15番目のブロックが識別番号15を与えられる(例えば、代替的には当初のジェネシスブロックが識別番号ゼロである場合には識別番号14)等の連番とされたりすることができる。未消費トランザクションが状態データベース内に記憶されている場合、未消費トランザクションが作成された又は最後に更新された際のブロックの識別番号は、未消費トランザクションと共に状態データベース内にて記憶されることができる。そのような値は、未消費トランザクションがブロックチェーンから枝刈りされたブロックにて作成されたのかを決定するために用いることができ、又はそのチェーン自体での未消費トランザクションのより速い識別のために用いることができる。
【0025】
新規ブロックチェーントランザクションが、検証及びブロックチェーン内の新規ブロックへの包含のために、ブロックチェーンノード102によって受信された場合、ブロックチェーンノード102は、上述のようにトランザクションを検証することができる。新規ブロックチェーントランザクション内の未消費トランザクション出力がブロックチェーンから枝刈りされた前のブロックにて記憶されていた場合(例えば、状態データベース内のブロックの識別値を用いて識別したもの)、ブロックチェーンノード102は状態データベースを活用することができる。ブロックチェーンノード102は状態データベースに対してクエリを発して、新規ブロックチェーントランザクションにてトランザクション入力として参照されている未消費トランザクション出力が、状態データベースにて存在しているか、並びに、該当する場合には未消費のものであると示されているかを決定できる。通貨額が状態データベースにて記憶されている場合、ブロックチェーンノード102はさらに、各未消費トランザクション出力が、新規ブロックチェーントランザクションにて示されている通貨額と関連付けられているかを検証することができる。1つ以上の未消費トランザクション出力が状態データベースを用いて検証できない場合、トランザクションは検証されず、また、それ故にブロックチェーンに追加されない。一部の場合では、ブロックチェーンノード102は、ブロックチェーントランザクションを提出した参加システム106に対して通知を提供して、検証の失敗について示し得る。未消費トランザクション出力の各々が状態データベースにて見つかり、ブロックチェーンノード102によってトランザクション出力が依然として未消費であることが確認された場合、トランザクションは確認されることができる。そして、ブロックチェーンノード102は、新規ブロックチェーントランザクションを、生成されてブロックチェーンネットワーク104内の他のブロックチェーンノード102へと配信される新規ブロックに含めることができ、これを確認してブロックチェーンに追加できる。そして、ブロックチェーンノード102は、上述のように自己の状態データベースを適宜更新できる。
【0026】
状態データベースを用いることによって、トランザクションが枝刈りされたブロックからのトランザクション出力を利用しようとする場合であっても、全ての新規ブロックチェーントランザクションが成功裏に確認及び検証されることを担保できる。未消費トランザクション出力に関する情報を保持することのみによって、状態データベースのファイルサイズは一貫して小さいまま推移して経時的に成長しないで済むのであり、また、ブロックチェーンそれ自体の継続的な枝刈りによってブロックチェーンのファイルサイズが適切な値に留まることを担保できる。例示的な実施形態では、ブロックチェーンネットワーク104内の各ブロックチェーンノード102は、自己のための状態データベースを有していることができ、チェーンが全てのブロックチェーンノード102にわたって不変的且つ一貫的である故に状態データベースはそれぞれ同じデータを記憶しているべきである。例えば、状態データベースは、新規ブロックが確認された際に各ブロックチェーンノード102にて更新され、また、新規ブロックがブロックチェーン内の全ノードへと配信される故に、状態データベースは全ブロックチェーンノード102に亘って一貫性を有しているべきである。
【0027】
ブロックチェーンネットワーク104にて枝刈りが望まれる場合には、新たなジェネシスブロックを選択することができ、その識別についてブロックチェーンネットワークの全ノードに対して一斉通信を行い、それが記録に記憶されるのであり、これは「ジェネシスブロック記録」と称され、ブロックチェーンノード102に記憶される。ジェネシスブロック記録は、チェーン内のどのブロックが現在のジェネシスブロックであるかを示す記録とし得る。記録は、チェーンを介して更新されることができる(例えば、チェーン内のブロック内にトランザクションが現れた場合に、どのブロックが新たな現在のジェネシスブロックとして選択されたのかをブロックチェーンノードに対して識別する)。一部の場合では、新たなジェネシスブロック記録は定期的に生成又は選択されることができる(例えば、特定の時間経過後、所定のブロック個数後、所定のトランザクション個数後、又はブロックチェーンが所定のファイルサイズに達した時等)。ジェネシスブロック記録は序数値を含むことができ、これは全ての過去のジェネシスブロックとの関係におけるジェネシスブロックの数値を示すことができる(例えば、ブロックチェーンに追加された第50番目のジェネシスブロックは序数値として50又は51を持っていることができる)。序数値はブロックチェーンについての適切な序列化を担保するために用いることができ、ブロックチェーンノード102に亘る枝刈りの一貫性を担保することができ、また、新たなブロックチェーンノード102がブロックチェーンネットワーク104に参加できるようにすることができ、ブロックチェーン全体を取得することを必要とせずに現在の状態データベースを伴った適切なジェネシスブロックで開始させることによってこれをなし得る。
【0028】
新たなジェネシスブロックが作成又は選択された場合、ブロックチェーンノード102は、ジェネシスブロック記録を複数の他のブロックチェーンノード102へと確認及びブロックチェーンへの追加のために配信でき、適切な方法及びシステムを用いてこれをなし得る。現在のジェネシスブロックは標準ブロックと同じ処理を用いて確認及び追加されていることができる(例えば、標準ブロックは、ジェネシスブロック記録においてジェネシスブロックとしての役目を果たすものとして選択されていないブロックとすることができる)。一部の場合では、標準ブロックはジェネシスブロック記録としての役割を果たすものとして選択されることができる。このような場合では、標準ブロックは、例えば序数値等のジェネシスブロック記録について示すデータをブロックヘッダにて含んでいることができる。例えば、その標準ブロックについてのブロックヘッダを生成するに際して、序数値がブロックヘッダ内に含まれることができ、ジェネシスブロックとして選択されていることを表すことができる。そのような場合の一部においては、ジェネシスブロック記録ではないブロックはゼロ又はヌル値をブロックヘッダ内の序数値にて記憶していることができ、非ゼロの値を序数値として有している任意のブロックがブロックチェーンについてのジェネシスブロック記録としての役目を果たし得る。新たなジェネシスブロック記録の確認の一部として、ブロックチェーンノード102は、序数値が正しいことを担保することができる。ジェネシスブロック記録が確認されてブロックチェーンのノードに追加されると、ブロックチェーンノード102は、そのジェネシスブロック記録に先行する任意のブロックを自己のローカルデータストアから枝刈りすることを自由にし得る。いくつかの実施形態では、ブロックチェーンネットワーク104は、最新の又は現在(newest or current)のジェネシスブロック記録から所定の距離のブロックを保持するように構成されていることができる(例えば、現在のジェネシスブロックへと遡及していく際の全てのブロック、ジェネシスブロックチェーン記録にて識別される現在のジェネシスブロックより前の序数値5等)。
【0029】
いくつかの実施形態では、ジェネシスブロック記録は構成値を含み得る。構成値は、ジェネシスブロックに先行するブロックの枝刈り後のブロックチェーンの運用を保つために必要とされ得る任意のデータを含み得る。1つの例を挙げるに、構成値はジェネシスブロック記録(又は別個の状態データベース)にての全ての現在の未消費トランザクション出力を含み得るのであり、例えば自己の状態データベースを用いてジェネシスブロック記録を生成するブロックチェーンノード102によって識別されることができる。ブロックチェーンがスマート契約を用いるように構成されている場合、構成値はブロックチェーン上に存在するスマート契約についての状態情報を含み得る。例えば、スマート契約及びその現在の入力情報若しくはディスパッチは、ジェネシスブロック記録内の構成値内にて記憶されていることができる。一部の場合では、構成値はそのようなデータについてのハッシュ値であることができ、例えば未消費トランザクション出力又は係属中のスマート契約についての状態構成データ等を挙げ得る。
【0030】
いくつかの実施形態では、各ブロックチェーンノード102は自己の状態データベースを用いて、ブロックチェーン内にてスマート契約に関する状態情報を未消費(unspent)トランザクション出力に加えて記憶することができる。そのような実施形態では、新規ブロックがブロックチェーンに追加されるとき、ブロックチェーンノード102はその中のブロックチェーンデータ値を分析して、何らかのスマート契約の状態変更が加えられているかを決定することができ、例えばブロックチェーンに入力トランザクションが追加されること、ブロックチェーンにスマート契約の出力が追加されること、スマート契約に対しての更新が追加されること等が含まれ得る。ブロックチェーンノード102は任意のそのような場面を識別でき、また、適宜その状態データベース内のスマート契約の状態を更新することができる。例を挙げるに、スマート契約をエスクローとして用いることができ、この場合、参加者Aからエスクローウォレットへと支払がなされ、参加者Bによって実行された契約がブロックチェーンに追加される迄そこに留まるのであり、契約が追加されるとエスクローウォレットから参加者Bへと支払がなされ、或いは契約を追加するための期間が満了した場合、支払は参加者Aへと返還される。ブロックチェーンノード102は、スマート契約に関するイベントが生じるに従ってスマート契約についての状態情報を記憶できるのであり、例えば、参加者Aからエスクローウォレットへの支払について待機していることを反映したり、参加者Aからエスクローウォレットへの支払に関するトランザクション識別子若しくはブロックチェーンデータ項目を含めたりする等できる。ブロックチェーンが参加者Aからエスクローウォレットへの支払についてのブロックチェーンデータ項目を含むブロック迄枝刈りされた場合、自己の状態データベースを用いてブロックチェーンノード102は支払の成功について依然として決定し得るのであり、例えば参加者Bによって実行された契約がブロックチェーンに追加された際にスマート契約を実行して参加者Bへの支払を促進できる。
【0031】
いくつかの実施形態では、新たなジェネシスブロック記録が生成された際には、構成値は、先行するジェネシスブロック記録が選択されてからブロックチェーンにて生じた全てのスマート契約の状態変更についての集約を構成するかそれを含むことができる。一部の場合では、構成値は各状態変更についての序列化リストを含み得る。他の場合では、構成値は状態変更についてのマークルツリーのルートを含み得るのであり、状態変更は既知の態様で(例えば、時的序列化を用いて)マークルツリー内にて序列化されていることができる。新たなジェネシスブロック記録が生成されて他のブロックチェーンノード102に配信される際には、新たなジェネシスブロック記録の検証の一部は構成値の検証を含むことができる。提案されている新たなジェネシスブロック記録を受信したブロックチェーンノード102は、最近の(most recent)ジェネシスブロック記録より後のスマート契約についての全ての状態変更を識別でき、また、識別された状態変更の集約を用いて構成値を生成できる。生成された構成値は、提案されているジェネシスブロック記録内の構成値と比較されることができる。構成値が一致する場合、ブロックチェーンノード102によって新たなジェネシスブロック記録は有効であるものと決定されることができ、ブロックチェーンノード102は確認メッセージと共に提案されているジェネシスブロック記録に応答することができる。構成値が一致しない場合、ブロックチェーンノード102は提案されているブロックチェーンノード102を棄却することができる。その結果、構成値は、ブロックチェーンノード102のそれぞれに亘って全ての係属中のスマート契約の状態が最新版となっていることを担保するために用いられることができる。
【0032】
いくつかの実施形態では、構成値は、スマート契約とは別個にブロックチェーン内の他のデータの内の状態変更について用いられることができる。例えば、一部の場合では、構成値は、新たなジェネシスブロック記録が生成された際にブロックチェーンノード102の現在の状態データベースの集約を記憶するためにも用いられることができる。そのような場合の一部では、構成値は、スマート契約の状態変更の集約と現在の状態データベースの集約とを別個に含むことができる。そのような場合の他の態様では、両方の集約はさらに集約されて、結果として得られる単一の値とすることができ、提案されているジェネシスブロック記録を受信する任意のブロックチェーンノード102によって確認されることができる。ブロックチェーンに関連する構成値にて記憶され得る他の状態情報には例えばジェネシスブロック記録データ、序数番号付けデータ、ノード許可データ等が含まれ得る。
【0033】
本明細書にて説明される方法及びシステムは、ブロックチェーンノード102がブロックチェーンにて古いブロックを定期的に枝刈りすることを可能とし得るのであり、これによってブロックチェーンネットワーク104にてブロックチェーンノード102によって用いられるファイルサイズ及び帯域が劇的に削減され得る。状態データベースを用いることによって、任意のブロックチェーントランザクションに関しての二重消費(double spend)の可能性を排すると共に、どのノードも何らの枝刈り済みブロックを保持することを必要とせずに、ブロックチェーンの継続的な運用を続けていくことができる。序数値を伴う新たなジェネシスブロック記録の使用によって、全てのブロックチェーンノード102を定期的に最新に保てることが担保されるのであり、また、伝統的なブロックチェーンを用いるよりは迅速に新たなブロックチェーンノード102を追加することが促進される。スマート契約の状態変更についての集約を含むジェネシスブロック記録にて構成値を用いることによって、上述のような枝刈りを伴うブロックチェーンにて依然としてスマート契約を活用可能とすることも担保される。したがって、本明細書にて説明される方法及びシステムは、既存のブロックチェーンのあらゆる機能性を提供するのであり、その一方では相当な枝刈りを可能としてブロックチェーンデータサイズを劇的に削減できる。
【0034】
ブロックチェーンノード
図2は、システム100内のブロックチェーンノード102等のブロックチェーンノード102についての実施形態を示す。当業者にとって、
図2に示すブロックチェーンノード102の実施形態が、例示目的のみで提供されることと、本開示の機能を実行するのに適した、ブロックチェーンノード102の全ての可能な構成を網羅的に示したものでないこととは自明である。例えば、
図7に示され下記で一層詳細に説明されるコンピュータシステム700が、ブロックチェーンノード102の適切な構成であってよい。
【0035】
ブロックチェーンノード102は、受信装置202を含むことができる。受信装置202は1つ以上のネットワークプロトコルを介して1つ以上のネットワーク上でデータを受信するよう構成されてよい。いくつかの例では、受信装置202は無線周波数、ローカルエリアネットワーク、無線エリアネットワーク、セルラ通信ネットワーク、Bluetooth、インターネット等の1つ以上の通信方法を介して、他のブロックチェーンノード102、参加システム106、並びに他のシステム及びエンティティからデータを受信するように構成され得る。いくつかの実施形態では、受信装置202は複数の装置(例えば、異なるネットワーク上でデータを受信する異なる受信装置(例えばローカルエリアネットワークでデータを受信する第1の受信装置と、インターネット上でデータを受信する第2の受信装置))を含んでよい。受信装置202は送信される電子的なデータ信号を受信してよい。このとき、受信装置202によるデータ信号の受信によって、データはデータ信号上に重ねられ、復号、解析(パース)、読取り、又は取得されてよい。いくつかの実施形態では、受信装置202は、受信されたデータ信号を解析して、そこに重ねられたデータを取得するための解析モジュールを含んでよい。例えば受信装置202は、受信されたデータ信号を受信し、処理装置によって実行される機能のための利用可能な入力へと変換して本開示の方法及びシステムを実行するよう構成される解析プログラムを含んでよい。
【0036】
受信装置202は、ブロックチェーンノード102によって電子的に送信されたデータ信号を受信するように構成されていることができ、このデータ信号は、ブロックチェーンデータ値、ブロック、ブロックチェーントランザクションデータ、提案されているジェネシスブロック記録、状態データベースデータ、スマート契約の状態データ、確認メッセージ等と重畳されている又は符号化され得る。また、受信装置202は、新たなブロックチェーンデータ値、スマート契約等と重畳されている又は符号化されていることができる、参加システム106によって電子的に送信されたデータ信号を受信するように構成されていることもできる。
【0037】
ブロックチェーンノード102は、通信モジュール204を含むこともできる。通信モジュール204は、本開示の機能を実行する際に使用するために、モジュール、エンジン、データベース、メモリ、及びブロックチェーンノード102の他の構成要素の間でデータを転送するよう構成されてよい。通信モジュール204は、1つ以上の通信種別を含んでよく、コンピューティング装置内での通信のために様々な通信方法を使用してよい。例えば、通信モジュール204はバス、接続ピンコネクタ、ワイヤ等を含んでよい。いくつかの実施形態では、通信モジュール204はまた、ブロックチェーンノード102の内部構成要素とブロックチェーンノード102の外部構成要素(例えば、外部で接続されたデータベース、表示装置、入力装置等)との間で通信するよう構成されてよい。ブロックチェーンノード102は、処理装置も含むことができる。処理装置は本開示のブロックチェーンノード102の機能を実行するよう構成されてよい。このことは、当業者にとって自明である。いくつかの実施形態では、処理装置は、処理装置の1つ以上の機能を実行するよう特別に構成された複数のエンジン及び/又はモジュール(例えばクエリモジュール214、生成モジュール216、検証モジュール218等)を含んでよい。本開示のように、「モジュール」との用語は、入力を受信し、当該入力を使用して1つ以上の処理を実行し、且つ出力を提供するよう特別にプログラムされたソフトウェア又はハードウェアであってよい。様々なモジュールによってこなされる入力、出力及び処理は、本開示に基づいて、当業者にとって自明である。
【0038】
ブロックチェーンノード102は、状態データベース206を含むことができる。状態データベース206は、ブロックチェーンにての未消費トランザクション出力についての状態情報と、該当する場合にはスマート契約の状態情報を記憶するように構成されていることができ、適切なデータ記憶フォーマット及びスキーマを用いてこれがなされることができる。状態データベース206は、構造化クエリ言語を使用するリレーショナルデータベースであって、記憶された構造化データセットを格納、識別、修正、更新、アクセス等するデータベースであってよい。状態情報には、未消費トランザクション出力、関連通貨額、トランザクション出力の状態変更、スマート契約についての入力値、スマート契約についての出力、スマート契約ディスパッチデータ等が含まれてよい。
【0039】
ブロックチェーンノード102はブロックチェーンデータ210を含むこともでき、これはブロックチェーンノード102のメモリ212内に記憶される又はブロックチェーンノード102内の別個の領域に記憶される又はそれによってアクセス可能とされることができる。ブロックチェーンデータ210はブロックチェーンを含むことができ、これは複数のブロックを備えることができ、ブロックチェーンネットワーク104と関連付けられていることができる。ブロックチェーンデータ210は、1つ以上のブロックチェーンウォレットと関連付けられておりブロックチェーンノード102によって用いられ得る任意のデータを追加的に又は代替的に含むことができ、これには次の事項が含まれ得る:暗号鍵ペア、未消費トランザクション出力、デジタル資産額、ブロックチェーンネットワーク104についてのネットワーク識別子、スマート契約、署名生成アルゴリズム、暗号化アルゴリズム、サードパーティ用通信情報等。ブロックチェーンデータ210は、状態データベース206内のデータの集約に関するデータ、新たなジェネシスブロック記録の生成のためのデータ等も含むことができる。
【0040】
ブロックチェーンノード102はまた、メモリ212を含んでよい。メモリ212は、本開示の機能を実行するときにブロックチェーンノード102が使用するためのデータ(例えば公開鍵、秘密鍵、対称鍵等)を格納するよう構成されてよい。メモリ212は、適切なデータ整形方法及びスキーマを用いてデータを格納するよう構成されてよく、また、任意の適切な種別のメモリ(例えば、読み取り専用メモリ、ランダムアクセスメモリ等)であってよい。メモリ212は、例えば暗号鍵及びアルゴリズム、通信プロトコル及び規格、データフォーマット規格及びプロトコル、モジュール用プログラムコード及び処理装置のアプリケーションプログラム、並びに、本開示の機能を実行する際にブロックチェーンノード102によって使用される適切な他のデータを含んでよい。このことは、本開示を読む当業者にとって自明である。いくつかの実施形態では、メモリ212は、構造化クエリ言語(SQL)を使用するリレーショナルデータベースを含んでよく、記憶された構造化データセットを記憶、識別、修正、更新、アクセス等してよい。メモリ212は、例えば、暗号鍵、ソルト、ノンス、他のコンピューティングシステムのための通信情報、生成アルゴリズム、暗号鍵ペア、通貨額の計算のためのアルゴリズム等を記憶するように構成されてよい。
【0041】
ブロックチェーンノード102は、クエリモジュール214を含んでよい。クエリモジュール214は、データベース上のクエリを実行して情報を識別するよう構成されてよい。クエリモジュール214は、1つ以上のデータ値又はクエリ文字列を受信してよく、それに基づいて、示されたデータベース(例えば、ブロックチェーンノード102の状態データベース206)上でクエリ列を実行して、そこに格納された情報を識別してよい。そして、クエリモジュール214は、識別された情報を、必要に応じてブロックチェーンノード102の適切なエンジン又はモジュールへ出力してよい。クエリモジュール214は、例えば、状態データベース206上でクエリを実行して、受信され提案されたブロックチェーントランザクション内の未消費トランザクション出力を探して、トランザクションが検証され得るのかを決定できる。
【0042】
ブロックチェーンノード102は、生成モジュール216を含むこともできる。生成モジュール216は、本開示の機能を実行するときにブロックチェーンノード102によって使用されるデータを生成するよう構成されてよい。生成モジュール216は、入力値として命令を受信してよいし、命令に基づいてデータを生成してよいし、生成されたデータをブロックチェーンノード102の1つ以上のモジュールへと出力してもよい。例えば、生成モジュール216は、暗号鍵ペアを生成したり、デジタル署名を生成したり、ブロックチェーンデータ値を生成したり、新規ブロックを生成したり、ブロック及びデータ参照値を生成したり、状態変更を集約したり、ジェネシスブロック記録を生成したり等するように構成されていることができる。
【0043】
ブロックチェーンノード102は、検証モジュール218を含むこともできる。検証モジュール218は、本開示の機能の一環として、ブロックチェーンノード102について検証を行うように構成されていることができる。検証モジュールは、検証を行うに際して用いられるべきデータが含まれ得る命令を入力として受信でき、要求に応じて検証を行うことができ、また、検証の結果をブロックチェーンノード102の別のモジュール又はエンジンへと出力できる。検証モジュール218は、例えば次のことをなすように構成されていることができる:適切な署名生成アルゴリズム及び鍵を用いてデジタル署名を検証すること、新規ブロックチェーントランザクションを検証すること、スマート契約を検証すること、提案されたジェネシスブロック記録における構成値を検証すること等。
【0044】
ブロックチェーンノード102は、送信装置220も含むことができる。送信装置220は、1つ以上のネットワークプロトコルを介して1つ以上のネットワーク上でデータを送信するよう構成されてよい。いくつかの例では、送信装置220は、ローカルエリアネットワーク、無線エリアネットワーク、セルラ通信、Bluetooth、無線周波数、インターネット等の1つ以上の通信方法を介して、他のブロックチェーンノード102、参加システム106、並びに他のエンティティへとデータを送信するように構成され得る。いくつかの実施形態では、送信装置220は複数装置(例えば、異なるネットワーク上でデータを送信するための異なる送信装置(例えば、ローカルエリアネットワーク上でデータを送信する第1の送信装置及びインターネット上でデータを送信する第2の送信装置))を含んでよい。送信装置220は、重畳されたデータであって受信コンピューティング装置によって解析されるデータを有するデータ信号を電子的に送信してよい。いくつかの実施形態では、送信装置220は、データを重畳し、符号化し、又はデータを送信に適したデータ信号へフォーマットする1つ以上のモジュールを含んでよい。
【0045】
送信装置220は、他のブロックチェーンノードへとデータ信号を電子的に送信するように構成されていることができ、このデータ信号は、ブロックチェーンデータ値、ブロック、ブロックチェーントランザクションデータ、提案されているジェネシスブロック記録、状態データベースデータ、スマート契約の状態データ、確認メッセージ等と重畳されている又は符号化され得る。送信装置220は、参加システム106へとデータ信号を電子的に送信するようにも構成されていることができ、このデータ信号はトランザクション通知、トランザクション識別子等と重畳されている又は符号化され得る。
【0046】
新規ブロックチェーントランザクションを処理するための処理
図3は、枝刈りされたブロックチェーンにおけるブロックチェーンノード102によるシステム100で新規ブロックチェーントランザクションを処理するための処理300について示す。
【0047】
S302では、ブロックチェーンノード102の受信装置202は、新規ブロックチェーントランザクションを参加システム106から受信できる。新規ブロックチェーントランザクションは、新規ブロックチェーントランザクションに関しての入力として少なくとも1つの未消費トランザクション出力と、1つ以上の出力アドレスと、各出力アドレスについての対応する通貨額とを含み得る。一部の場合では、各未消費トランザクション出力は、対応する通貨額を含むこともできる。他の場合では、未消費トランザクション出力と関連付けられている全ての通貨はブロックチェーントランザクションの一部として移転されることとなるので、未消費トランザクション出力についての対応する通貨額は含まれないとされ得る。S304では、ブロックチェーンノード102は、新規ブロックチェーントランザクション内の未消費トランザクション出力がローカルで記憶されているブロックチェーンのコピー内に含まれているかを決定することができる(例えば、枝刈りされたブロックに含まれていないか)。該決定には、トランザクション識別子又は状態データベース206内の情報を活用することができる。
【0048】
S304でブロックチェーンノード102によって未消費トランザクション出力がブロックチェーンから枝刈りされたブロックに含まれていたと決定されてそれ故に枝刈りされたチェーン上に記憶されていないとされた場合、S306にてブロックチェーンノード102のクエリモジュール214はブロックチェーンノード102の状態データベース206上でクエリを実行して、その中の未消費トランザクション出力の各々を識別して、及び/又は、各トランザクション出力がその記憶された状態情報によれば依然として未消費であるかを識別することができる。S304でブロックチェーンノード102によって未消費出力がブロックチェーンから枝刈りされたブロックに含まれていなかったと決定されてそれ故に枝刈りされたチェーン上に記憶されているとされた場合、処理300はS306を飛ばして、S308へと直接的に進む。S308では、ブロックチェーンノード102の検証モジュール218はトランザクション出力を検証して、それぞれが依然として未消費であるかについて決定して、トランザクションを検証して、新規ブロックチェーントランザクションにて示されているトランザクション出力を許容するに十分なブロックチェーン通貨がトランザクション入力に関連付けられていることを担保することができる。S310では、ブロックチェーンノード102は、トランザクションが有効であるかを決定できるのであって、これはS308で実行された検証の結果としてなされることができる。1つ以上の検証が失敗した場合(例えば、十分な通貨が利用可能ではない場合、1つ以上の入力が既に消費済みの場合、デジタル署名が成功裏に検証されていない場合等)、S312では、ブロックチェーンノード102は新規ブロックチェーントランザクションを却下でき、そして処理300は完了される。一部の場合では、ブロックチェーンノード102の送信装置220は、トランザクションを提出した参加システム106に通知メッセージを電子的に送信して、それらに検証について情報提供できるのであり、一部の場合では検証の失敗原因について情報提供できる。
【0049】
ブロックチェーントランザクションの検証が成功した場合、S314にて、ブロックチェーンノード102の生成モジュール216は検証されたブロックチェーントランザクションを含む新規ブロックを生成することができ、また、ブロックチェーンノード102の送信装置220は新規ブロックをブロックチェーンネットワーク104内の複数の追加のノード102へと電子的に送信することができる。追加のブロックチェーンノード102は新規ブロックを検証することができ、また、ブロックが成功裏に検証される場合、確認メッセージがブロックチェーンノード102へと返される。S316では、ブロックチェーンノード102は、新規ブロックが追加ブロックチェーンノード102の多数によって確認されたかを決定することができるのであり、これは受信された確認メッセージの件数に基づいて決定されることができる。新規ブロックが成功裏に確認されなかった場合、処理300は終了することができ、また、ブロックチェーンノード102は新規ブロックを生成することができ、或いは確認のために別のブロックチェーンノード102からの新規ブロックを待つことができる。新規ブロックが成功裏に確認される場合、S318にて、ブロックチェーンノード102のクエリモジュール214は、1つ以上のクエリを状態データベース206上で実行して、状態データベースを更新して、確認されたブロック内のブロックチェーントランザクションの各々の入力として用いられたトランザクション出力の消費について除外して或いは示して、確認されたブロック内のブロックチェーントランザクションの各々のトランザクション出力を追加することができる。そして、処理300は完了されることができる。
【0050】
新たなジェネシスブロック記録を検証するための処理
図4は、システム100におけるブロックチェーンノード102によるブロックチェーンネットワーク104内の新たなジェネシスブロック記録についての検証のための処理400について示す。
【0051】
S402では、ブロックチェーンノード102の受信装置202は、ジェネシスブロック記録応答メッセージをブロックチェーンネットワーク104内の別のブロックチェーンノード102から受信できる。応答メッセージは新たなジェネシスブロック記録又は新たなジェネシスブロック記録に含めるデータを含むのであり、これにはジェネシスブロック記録の序数値及び構成値が少なくとも含まれる。S404では、ブロックチェーンノード102のクエリモジュール214は、ブロックチェーンノード102のブロックチェーンデータ210上でクエリを実行して、(例えば、序数値に応じて)最近のジェネシスブロック記録と新たに提案されているジェネシスブロック記録との間にてブロックチェーンに追加された任意の介在ブロックを識別することができる。
【0052】
S406では、ブロックチェーンノード102の生成モジュール216は、介在ブロックにて示されているようにブロックチェーン内の全スマート契約の状態変化について識別及び集約を行うことができる。生成モジュール216は集約された状態変更を用いることができ、また、テスト構成値をそれから生成することができ、例えば状態変更を用いてマークルツリーを生成することによってこれをなすことができる。ここでテスト構成値はマークルツリーのルートとする。S408では、ブロックチェーンノード102の検証モジュール218は、テスト構成値を用いて、ジェネシス応答メッセージにおいて受信された構成値の検証を試みることができる。テスト構成値と受信された構成値とが一致しない場合、処理400は終了されることができる。一部の場合では、ブロックチェーンノード102の送信装置220は、検証が失敗したことを示す通知を、応答メッセージを提出したブロックチェーンノード102に返すことができる。テスト構成値と受信された構成値とが一致した場合、S410にて、ブロックチェーンノード102のクエリモジュール214は、1つ以上のクエリを状態データベース206上にて実行して、識別された状態変更を適用して、スマート契約の状態情報を記憶することができる。そのようにしてジェネシスブロック記録は確認されることができるのであり、また、ブロックチェーンノード102はブロックチェーンデータ210を適宜必要に応じて更新することもできる。
【0053】
新規ブロックチェーントランザクションを処理する例示的方法
図5は、現在のジェネシスブロックに先行して枝刈りすることを可能とするように構成されているブロックチェーンにおいて新規ブロックチェーントランザクションを処理するための方法500について示す。
【0054】
S502では、ブロックチェーンネットワーク(例えば、ブロックチェーンネットワーク104)内のブロックチェーンノード(例えば、ブロックチェーンノード102)のレシーバ(例えば、受信装置202)によって新規ブロックチェーントランザクションが受信されることができる。新規ブロックチェーントランザクションは1つ以上のトランザクション入力及び1つ以上のトランザクション出力を少なくとも含む。S504では、新規ブロックチェーントランザクションはブロックチェーンノードのプロセッサ(例えば、検証モジュール218)によって検証されることができる。新規ブロックチェーントランザクションを検証することは1つ以上のトランザクション入力の各々が未消費であると検証することを含む。
【0055】
S506では、ブロックチェーンノードのプロセッサ(例えば、生成モジュール216)によって新規ブロックが生成されることができる。該新規ブロックは少なくともブロックヘッダ及び1つ以上のブロックチェーンデータ値を含み、該1つ以上のブロックチェーンデータ値の1つは新規ブロックチェーントランザクションを含む。S508では、生成された新規ブロックは、ブロックチェーンノードのトランスミッタ(例えば、送信装置220)によってブロックチェーンネットワーク内の複数の追加のノード(例えば、ブロックチェーンノード102)へと送信されることができる。S510では、1つ以上のトランザクション出力は、ブロックチェーンノードのメモリ(例えば、メモリ212)、ブロックチェーンと関連付けられている状態データベース(例えば、状態データベース206)にて記憶されることができる。
【0056】
1つの実施形態では、方法500はさらに、ブロックチェーンノードのレシーバによって、1つ以上のトランザクション出力を記憶する前に複数の追加のノードの多数から確認メッセージを受信することを含むことができる。いくつかの実施形態では、1つ以上のトランザクション入力の各々がブロックチェーン内の対応する通貨額と関連付けられていることについて検証することは、1つ以上のトランザクション出力を含むブロックチェーン内の1つ以上の先行ブロックにて記憶されている1つ以上の先行するブロックチェーンデータ値を識別することを含み得る。1つの実施形態では、1つ以上のトランザクション入力の各々がブロックチェーン内の対応する通貨額と関連付けられていることについて検証することは、状態データベースにて1つ以上のトランザクション入力の各々及び対応する通貨額を識別することを含むことができる。いくつかの実施形態では、1つ以上のトランザクション入力の各々がブロックチェーン内の対応する通貨額と関連付けられていることについて検証することは、ブロックチェーン内の最近のジェネシスブロック内の構成値にて1つ以上のトランザクション入力の各々及び対応する通貨額を識別することを含むことができる。
【0057】
ブロックチェーンにおいて構成を確認する例示的方法
図6は、新たなジェネシスブロックの前で枝刈りすることを可能とするように構成されているブロックチェーンにおける新たなジェネシスブロックの構成について確認する方法600について示す。
【0058】
S602では、ブロックチェーンネットワーク(例えば、ブロックチェーンネットワーク104)内のブロックチェーンノード(例えば、ブロックチェーンノード102)のレシーバ(例えば、受信装置202)によって、ブロックチェーンネットワーク内の別のノードからジェネシス応答メッセージが受信されることができる。該ジェネシス応答メッセージは少なくとも構成値及び序数値を含む。S604では、先行するジェネシスブロックに後行して追加されている複数の標準ブロックが、プロセッサ(例えば、クエリモジュール214)によってブロックチェーンノードにおいて識別されることができるのであり、これは序数値に先行する数値を含む。
【0059】
S606では、プロセッサ(例えば、生成モジュール216)によってスマート契約の状態変更が、識別された複数の標準ブロックの各々から集約されることができる。S608では、受信されたジェネシス応答メッセージ内に含まれる構成値は、集約されたスマート契約の状態変更に基づいて、ブロックチェーンノードのプロセッサ(例えば、検証モジュール218)によって検証されることができる。
【0060】
1つの実施形態では、方法600はさらに、集約されたスマート契約の状態変更を、ブロックチェーンノードのプロセッサによって、ブロックチェーンノードのメモリ(例えば、メモリ212)内にて記憶されたブロックチェーンと関連付けられている状態データベース(例えば、状態データベース206)内の1つ以上の対応するスマート契約に適用することを含むことができる。いくつかの実施形態では、方法600はさらに、集約されたスマート契約の状態変更を用いてブロックチェーンノードのプロセッサによってマークルルートを生成することを含むことができる。構成値を検証することは、一致に関して、構成値を、生成されたマークルルートと比較することを含む。
【0061】
コンピュータシステムアーキテクチャ
図7は、コンピュータシステム700を示す。そこにおいては、本開示の実施形態又はその一部が、コンピュータ可読コードとして実装されてよい。例えば
図1及び2のブロックチェーンノード102は、ハードウェア、格納された命令を有する非一時的なコンピュータ可読媒体、これらの組合せを用いてコンピュータシステム700内に実装されてよく、1つ以上のコンピュータシステム又は他の処理システムにおいて実装されてよい。ハードウェアは、
図3~6の方法を実施するために使用されるモジュール及びコンポーネントを具体化することができる。
【0062】
プログラマブルロジックが使用される場合、そのようなロジックは、実行可能なソフトウェアコードで構成された商業的に利用可能な処理プラットフォーム上で実行され、特定用途装置又は特別目的装置となっていてよい(例えばプログラマブルロジックアレイ(PGA)、特定用途向け集積回路(ASIC)等)。当業者は、開示された事項についての実施形態が、様々なコンピュータシステム構成で実行可能であることを理解する。当該システム構成は、マルチコアのマルチプロセッサシステムと、ミニコンピュータと、メインフレームコンピュータと、分散された機能でリンクされ又はクラスタ化されたコンピュータと、実質的に殆どの任意の装置に実装可能な汎用又はミニチュアのコンピュータとを含む。例えば、少なくとも1つのプロセッサ装置及びメモリが、上記実施形態を実装するために使用されてよい。
【0063】
本開示のプロセッサユニット又は装置は、単一のプロセッサ、複数のプロセッサ、又はこれらの組合せであってよい。プロセッサ装置は、1以上のプロセッサ「コア」を有してよい。本開示の「コンピュータプログラム媒体」、「非一時的なコンピュータ可読媒体」及び「コンピュータ使用可能な媒体」との用語は、概して、有形の媒体(例えば取り外し可能なストレージユニット718、取り外し可能なストレージユニット722及びハードディスクドライブ712にインストールされたハードディスク等)を指すために使用される。
【0064】
本開示の様々な実施形態は、この例示的なコンピュータシステム700に関して記述される。本開示を読んだ後、当業者にとって、他のコンピュータシステム及び/又はコンピュータアーキテクチャを用いて本開示をどのように実装するかは自明である。動作はシーケンシャルな処理として開示されるが、いくつかの動作は実際には、並行して、同時に及び/又は分散環境で、実行されてよい。このとき、プログラムコードは、単一プロセッサの又はマルチプロセッサのマシンによってアクセスするために、ローカルに又はリモートに格納された状態である。さらに、いくつかの実施形態では、動作の順番は、開示される事項の趣旨を逸脱することなく再配置可能である。
【0065】
プロセッサ装置704は、本開示の機能を実行するよう特別に構成された特定用途又は汎用プロセッサ装置であってよい。プロセッサ装置704は、通信インフラストラクチャ706(例えばバス、メッセージキュー、ネットワーク、マルチコアメッセージパススキーム等)へ接続されてよい。ネットワークは、本開示の機能を実行するのに適した任意のネットワークであってよく、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、無線ネットワーク(例えばWifi)、モバイル通信ネットワーク、衛星ネットワーク、インターネット、光ファイバ、同軸ケーブル、赤外線、無線周波数(RF)又はこれらの任意の組合せを含んでよい。他の適切なネットワークタイプ及び構成は、当業者にとって自明である。コンピュータシステム700はまた、メインメモリ708(例えばランダムアクセスメモリ、読み取り専用メモリ等)を含んでよく、また、補助記憶装置710を含んでよい。補助記憶装置710は、ハードディスクドライブ712と取外し可能なストレージドライブ714(例えばフロッピーディスクドライブ、磁気テープドライブ、光ディスクドライブ、フラッシュメモリ等)とを含んでよい。
【0066】
取外し可能なストレージドライブ714は、周知の方法で、取外し可能なストレージユニット718から読み取りを行ってもよいし、及び/又は、そこへ書き込みを行ってもよい。取外し可能なストレージユニット718は、取外し可能なストレージドライブ714によって読み取られまた書き込まれることができる、取外し可能なストレージ媒体を含んでよい。例えばもし取外し可能なストレージドライブ714がフロッピーディスクドライブ又はUSBポートであれば、取外し可能なストレージユニット718はそれぞれ、フロッピーディスク又はポータブルフラッシュドライブであってよい。1つの実施形態では、取外し可能なストレージユニット718は非一時的な読取り可能記録媒体であってよい。
【0067】
いくつかの実施形態では、補助記憶装置710は代替手段を含み、コンピュータプログラム又は他の命令がコンピュータシステム700(例えば取り外し可能なストレージユニット722及びインタフェース720)にロードされることを可能にしてよい。そのような手段の例は、(例えばビデオゲームシステムで見られる)プログラムカートリッジ及びカートリッジインタフェース、取外し可能なメモリチップ(例えばEEPROM、PROM等)、関連ソケット、他の取り外し可能なストレージユニット722及びインタフェース720を含んでよい。このことは当業者にとって自明である。
【0068】
コンピュータシステム700に(例えばメインメモリ708に及び/又は補助記憶装置710に)格納されたデータは、任意のタイプの適切なコンピュータ読取り可能な媒体(例えば光ストレージ(コンパクトディスク、デジタル多目的ディスク、Blu-rayディスク等)又は磁気テープストレージ(例えばハードディスクドライブ))上に格納されてよい。データは任意のタイプの適切なデータベース構成(例えばリレーショナルデータベース、構造化クエリ言語(SQL)データベース、分散データベース、オブジェクトデータベース等)で構成されてよい。適切な構成及びストレージタイプは、当業者にとって自明である。
【0069】
コンピュータシステム700はまた、通信インタフェース724を含んでよい。通信インタフェース724は、ソフトウェア及びデータが、コンピュータシステム700と外部装置との間で送受信されることを可能にしてよい。例示的な通信インタフェース724は、モデム、ネットワークインタフェース(例えばイーサネットカード)、通信ポート、PCMCIAスロット及びカード等を含んでよい。通信インタフェース724を介して転送されるソフトウェア及びデータは信号形式であってよい。当該信号形式は、電子の、電磁気の、光の、又は当業者にとって自明な他の信号のものであってよい。信号は、通信経路726を介して伝播する。当該経路は信号を搬送するよう構成され、電線、ケーブル、光ファイバ、電話線、携帯電話リンク、無線周波数リンク等を用いて実装されてよい。
【0070】
コンピュータシステム700は、表示インタフェース702を更に含んでよい。表示インタフェース702は、データが、コンピュータシステム700と外部ディスプレイ730との間で転送されることを可能にするよう構成されてよい。例示的な表示インタフェース702は、高精細度マルチメディアインタフェース(HDMI)、デジタルビジュアルインタフェース(DVI)、ビデオグラフィックスアレイ(VGA)等を含んでよい。ディスプレイ730は任意の適切なタイプのディスプレイであってよく、コンピュータシステム700の表示インタフェース702を介して転送されるデータを表示するのであり、ブラウン管(CRT)ディスプレイ、液晶ディスプレイ(LCD)、発光ダイオード(LED)ディスプレイ、静電容量方式タッチディスプレイ、薄膜トランジスタ(TFT)ディスプレイ等を含む。
【0071】
コンピュータプログラム媒体及びコンピュータ使用可能な媒体は、メモリ(例えばメインメモリ708及び補助記憶装置710)を指してよく、半導体メモリ(DRAM等)であってよい。これらのコンピュータプログラム製品は、コンピュータシステム700へソフトウェアを提供するための手段であってよい。コンピュータプログラム(例えばコンピュータ制御ロジック)は、メインメモリ708及び/又は補助記憶装置710内に格納されてよい。コンピュータプログラムはまた、通信インタフェース724を介して受信されてよい。そのようなコンピュータプログラムは、実行されると、コンピュータシステム700が本開示の方法を実行することを可能にしてよい。特に、コンピュータプログラムは、実行されると、プロセッサ装置704が本明細書で説明するように、
図3~6に示す方法を実施することを可能にすることができる。したがって、そのようなコンピュータプログラムはコンピュータシステム700のコントローラを示す。本開示はソフトウェアを使用して実装される。当該ソフトウェアは、取り外し可能なストレージドライブ714、インタフェース720、及びハードディスクドライブ712又は通信インタフェース724を用いて、コンピュータプログラム製品に格納されてコンピュータシステム700へロードされてよい。
【0072】
プロセッサ装置704は、コンピュータシステム700の機能を実行するよう構成される1つ以上のモジュール又はエンジンを含んでよい。各モジュール又はエンジンは、ハードウェアを用いて実装されてよく、いくつかの実施形態ではソフトウェア(例えばこれは、メインメモリ708又は補助記憶装置710に格納されるプログラムコード又はプログラムに対応する)を用いてよい。そのような実施形態では、プログラムコードは、コンピュータシステム700のハードウェアによる実行前に、プロセッサ装置704によって(例えば、コンパイル用モジュール又はエンジンによって)コンパイルされてよい。例えばプログラムコードは、低レベルの言語へと翻訳されるプログラミング言語で記述されたソースコード(例えばアセンブリ言語又は機械コード)であってよい。これは、プロセッサ装置704及び/又はコンピュータシステム700の任意の追加のハードウェア構成要素によって実行するためのものである。コンパイル処理は、語彙解析と、前処理と、構文解析と、セマンティック解析と、構文主導型翻訳と、コード生成と、コード最適化と、コンピュータシステム700の制御のためにプログラムコードを低レベルの言語へ翻訳して本開示の機能を実行するのに適した任意の他の技術との使用を含んでよい。そのような処理によってコンピュータシステム700が、上記の機能を実行するために一意にプログラムされた特別構成コンピュータシステム700になることは当業者にとって自明である。
【0073】
本開示に沿う技術は、他の特徴もあるも、新規ブロックチェーントランザクションを処理し並びに現在のジェネシスブロックに先行して枝刈りすることを可能とするように構成されているブロックチェーン内にて新たなジェネシスブロックの構成について確認するシステム及び方法を提供する。本開示のシステム及び方法の様々な例示的実施形態が上述されるが、それらは限定目的でなく例示目的のみで示されることを理解されたい。それは網羅的でなく、本開示を、開示された形態そのものに限定はしない。上記の教示に照らして修正例及び変形例が可能である。範疇又は範囲を逸脱することなく、本開示の実装から修正例及び変形例が得られてよい。
【国際調査報告】