(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-10-16
(54)【発明の名称】パーミッション型ブロックチェーンでのスマート契約の並列処理のための方法及びシステム
(51)【国際特許分類】
G06F 9/48 20060101AFI20241008BHJP
H04L 9/32 20060101ALI20241008BHJP
【FI】
G06F9/48 300Z
H04L9/32 200Z
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024516836
(86)(22)【出願日】2022-08-24
(85)【翻訳文提出日】2024-04-30
(86)【国際出願番号】 US2022041305
(87)【国際公開番号】W WO2023043591
(87)【国際公開日】2023-03-23
(32)【優先日】2021-09-16
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】500041363
【氏名又は名称】マスターカード インターナシヨナル インコーポレイテツド
(74)【代理人】
【識別番号】100147485
【氏名又は名称】杉村 憲司
(74)【代理人】
【識別番号】230118913
【氏名又は名称】杉村 光嗣
(74)【代理人】
【識別番号】100224683
【氏名又は名称】齋藤 詩織
(72)【発明者】
【氏名】ドミトロ クリヴォシェイ
(57)【要約】
ブロックチェーンでのスマート契約内のディスパッチの並列実行のための方法は:ブロックチェーンネットワーク内のブロックチェーンノードによってスマート契約を受信することと;ディスパッチをスマート契約についての入力として識別することと;ディスパッチをセットに分離することであって、各セットは少なくとも1つのディスパッチを含み、各ディスパッチはブロックチェーン内の先行ブロック内の項目と関連付けられる共通の参照値を含む、ことと;所定の基準に基づいて各セットのうちの1つの有効なディスパッチを決定することと;各セットについて1つの有効なディスパッチを用いてスマート契約を実行することと;ブロックチェーンについての新規ブロックにスマート契約の実行によって生成されたブロックチェーンデータ項目を含めることと;生成された新規ブロックをブロックチェーンネットワーク内の複数の追加ノードへと送信することと、を含む。
【特許請求の範囲】
【請求項1】
ブロックチェーンでのスマート契約内のディスパッチの並列実行のための方法であって、
ブロックチェーンネットワーク内のブロックチェーンノードのレシーバによって、ブロックチェーンと関連付けられているスマート契約を受信するステップと、
前記ブロックチェーンノードのプロセッサによって、複数のディスパッチを前記スマート契約についての入力として識別するステップと、
前記ブロックチェーンノードの前記プロセッサによって、前記複数のディスパッチをディスパッチの1つ以上のセットに分離するステップであって、ディスパッチの各セットは少なくとも1つのディスパッチを含み、また、ディスパッチのセット内の各ディスパッチは前記ブロックチェーン内の先行ブロック内の項目と関連付けられている共通の参照値を含む、ステップと、
前記ブロックチェーンノードの前記プロセッサによって、所定の基準に基づいて、前記ディスパッチの1つ以上のセットの各々のうちの1つの有効なディスパッチを決定するステップと、
前記ブロックチェーンノードの前記プロセッサによって、前記ディスパッチの1つ以上のセットの各々について前記1つの有効なディスパッチを用いて、前記スマート契約を実行するステップと、
前記ブロックチェーンノードの前記プロセッサによって、前記ブロックチェーンについて新規ブロックを生成するステップであって、前記新規ブロックは1つ以上のブロックチェーンデータ項目を含み、前記1つ以上のブロックチェーンデータ項目は前記スマート契約の実行によって生成されたデータを含む、ステップと、
前記ブロックチェーンノードのトランスミッタによって、前記生成された新規ブロックを前記ブロックチェーンネットワーク内の複数の追加ノードへと送信するステップと、
を含む、方法。
【請求項2】
請求項1に記載の方法において、
前記所定の基準は各ディスパッチをディスパッチのセット内にて序列化することを含み、
ディスパッチのセットについての前記1つの有効なディスパッチは前記ディスパッチのセットの序列化後の第1のディスパッチである、方法。
【請求項3】
請求項2に記載の方法において、前記ディスパッチのセット内の各ディスパッチは前記ディスパッチそれぞれに含まれるハッシュ値に基づいて序列化される、方法。
【請求項4】
請求項1に記載の方法において、前記スマート契約は前記ディスパッチの1つ以上のセットの各々について前記1つの有効なディスパッチを用いて並列的に実行される、方法。
【請求項5】
請求項1に記載の方法において、前記ブロックチェーンはパーミッション型ブロックチェーンである、方法。
【請求項6】
請求項1に記載の方法において、前記共通の参照値は前記ブロックチェーン内におけるブロックチェーントランザクションの識別子である、方法。
【請求項7】
請求項1に記載の方法において、
前記1つの有効なディスパッチを用いて前記スマート契約を実行するステップは、資産を移転させる新たなブロックチェーントランザクションを生成することであり、
前記スマート契約の実行によって生成された前記データは、前記ディスパッチの1つ以上のセットの各々についての前記新たなブロックチェーントランザクションを含む、方法。
【請求項8】
請求項7に記載の方法において、1つの有効なディスパッチについての新たなブロックチェーントランザクションにおいて移転された前記資産は、前記1つの有効なディスパッチを含む前記ディスパッチのセット内に含まれる前記共通の参照値において識別される、方法。
【請求項9】
ブロックチェーンでのスマート契約内のディスパッチの並列実行のためのシステムであって、該システムは:
ブロックチェーンネットワークと、
前記ブロックチェーンネットワーク内に含まれるブロックチェーンノードと、
前記ブロックチェーンネットワーク内の複数の追加ノードと、を備え、
前記ブロックチェーンノードは、
ブロックチェーンと関連付けられているスマート契約を受信するレシーバと、
プロセッサであって、
複数のディスパッチを前記スマート契約についての入力として識別するステップと、
前記複数のディスパッチをディスパッチの1つ以上のセットに分離するステップであって、ディスパッチの各セットは少なくとも1つのディスパッチを含み、また、ディスパッチのセット内の各ディスパッチは前記ブロックチェーン内の先行ブロック内の項目と関連付けられている共通の参照値を含む、ステップと、
所定の基準に基づいて、前記ディスパッチの1つ以上のセットの各々のうちの1つの有効なディスパッチを決定するステップと、
前記ディスパッチの1つ以上のセットの各々について前記1つの有効なディスパッチを用いて、前記スマート契約を実行するステップと、
前記ブロックチェーンについて新規ブロックを生成するステップであって、前記新規ブロックは1つ以上のブロックチェーンデータ項目を含み、前記1つ以上のブロックチェーンデータ項目は前記スマート契約の実行によって生成されたデータを含む、ステップと、を実行する、プロセッサと、
前記生成された新規ブロックを前記複数の追加ノードへと送信するトランスミッタと、を含む、システム。
【請求項10】
請求項9に記載のシステムにおいて、
前記所定の基準は、各ディスパッチをディスパッチのセット内にて序列化することを含み、
ディスパッチのセットについての前記1つの有効なディスパッチは、前記ディスパッチのセットの序列化後の第1のディスパッチである、システム。
【請求項11】
請求項10に記載のシステムにおいて、前記ディスパッチのセット内の各ディスパッチは、前記ディスパッチそれぞれに含まれるハッシュ値に基づいて序列化される、システム。
【請求項12】
請求項9に記載のシステムにおいて、前記スマート契約は、前記ディスパッチの1つ以上のセットの各々について前記1つの有効なディスパッチを用いて並列的に実行される、システム。
【請求項13】
請求項9に記載のシステムにおいて、前記ブロックチェーンはパーミッション型ブロックチェーンである、システム。
【請求項14】
請求項9に記載のシステムにおいて、前記共通の参照値は、前記ブロックチェーン内におけるブロックチェーントランザクションの識別子である、システム。
【請求項15】
請求項9に記載のシステムにおいて、
前記1つの有効なディスパッチを用いて前記スマート契約を実行するステップは、資産を移転させる新たなブロックチェーントランザクションを生成することであり、
前記スマート契約の実行によって生成された前記データは、前記ディスパッチの1つ以上のセットの各々についての前記新たなブロックチェーントランザクションを含む、システム。
【請求項16】
請求項15に記載のシステムにおいて、1つの有効なディスパッチについて新たなブロックチェーントランザクションにおいて移転された前記資産は、前記1つの有効なディスパッチを含む前記ディスパッチのセット内に含まれる前記共通の参照値において識別される、システム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示はブロックチェーンでのスマート契約内のディスパッチの並列実行に関するのであり、特に、スマート契約に関するあらゆるディスパッチの識別及びノード間での所定の規則の使用に関するのであり、全ノード間で一貫性をもって並列的に全ディスパッチを実行してそれによって正確性及び不変性を維持できるようにすることに関する。
【0002】
関連出願の相互参照
本願は、米国特許出願第17/476,858号(2021年9月16日出願)の利益及び優先権を主張する。上記出願の開示全体は参照によってここに取り込まれる。
【背景技術】
【0003】
ブロックチェーンは当初においては、暗号通貨を用いての支払トランザクションを行うために用いる記憶機構として作られた。ブロックチェーンを用いることによって分散化、分散コンピューティング、トランザクション透明性等の幾つもの利点がもたらされる一方で、トランザクションに関与する個人又はエンティティについは匿名性がもたらされる。ブロックチェーンの比較的に選好される特性としてはその記録の不変性が挙げられる:即ち、連鎖の部分とされた全トランザクションが格納されるのであり且つ必要とされる演算力及び帯域制限故に不変性を帯びるのであり、特に連鎖が伸びてブロックチェーンネットワークがより多くのノードを追加していくとこれが強まる。
【0004】
ブロックチェーンの別の選好される特性としてはスマート契約が挙げられ、これは自己実行型の契約であり、これはブロックチェーン上に記憶されるものであり、これは基準の充足を受けて自動実行されるものであり、これは契約に対しての入力(ディスパッチとも称する)に基づいた所定の結果を伴うものである。スマート契約は融通が利きいくつかの目的のために用いることができ、例えばエスクロー用途等を挙げることができ、例えば財産又は別の資産の所有移転等の基準の充足を受けてある量の通貨又は他の資産が自動的に移転される。一部の場合では、スマート契約は、利便性又は効率性の観点から、幾十回或いは数百回と実行されるように構成され得る。そのような場合では、契約は逐次的に実行されるのであり、全ての適用可能なディスパッチが実行済みとなる迄一度に一つずつ各ディスパッチについて契約が実行される。
【0005】
伝統的なブロックチェーンシステムでは、スマート契約の実行がブロックチェーンの規約に違背し得る局面に備えてスマート契約は逐次的に実行されることを要する。例えば、スマート契約が、スマート契約実行時に同一の資産の移転を試みる複数のディスパッチを有している場合があり得る。このような場合、1つのみの実行が成功裏に完了すべきであり、既に移転済みの資産の移転を試みた故に次順位の実行については検証できないこととなる。その結果、ブロックチェーンはスマート契約についてディスパッチを逐次的に実行して、資産が二重に消費又は移転され得る局面を予防する。もっとも、スマート契約の逐次的な実行を必要とすると相当な時間を要する場合があり、特に、スマート契約について相当な量の入力を伴う場合にこれがより顕著となる。ブロックチェーンが高頻度で(例えば、約ミリ秒で)のブロックの追加を必要としている場合では、逐次的な実行はブロックチェーンにとっては遅すぎるものとなり得る。
【0006】
したがって、強力なコンピューティング資源を活用して望まれる機能を実行することを可能化できる技術的システムが必要とされており、これは制限を受けずに且つブロックチェーン内への新規ブロックの追加を遅延させずに行われるべきであり、それとともに承認されていないトランザクション及び資産の移転を防止するように行われるべきである。
【発明の概要】
【0007】
本開示は、ブロックチェーンでスマート契約内のディスパッチの並列実行のためのシステム及び方法について説明を提供する。ブロックチェーンノードがスマート契約を実行するとき、ブロックチェーンノードは先ずスマート契約を用いての実行のために全てのディスパッチを識別する。実行開始に先駆けて、ブロックチェーンノードは、各ディスパッチについての参照データを識別するのであって、これはそのディスパッチについてスマート契約の実行の一部として資産が再度移転されることとなるブロックチェーン上の先行トランザクションとされ得る。同じ参照値を有するディスパッチは全て一緒にグループ化されるのであり、また、各グループからの単一のディスパッチは各ディスパッチ内に含まれるハッシュ値の序列化等の所定の基準を用いてブロックチェーンノードによって選択される。ブロックチェーンノードは、全てのグループからの選択されたディスパッチ及び任意の単体ディスパッチを用いてスマート契約を並列的に実行するのであり、これにより逐次的実行を用いるよりは相当に高速に全ての有効なディスパッチについてスマート契約を実行することが可能となる。共通の参照値を有する全てのディスパッチについて単一のディスパッチのみが選択される故にその参照が一度を超えて用いられるリスクはないのであって、そのようなことはブロックチェーンでは禁じられている(例えば、そのようなトランザクションは検証失敗となるであろう)。その結果、ブロックチェーンの利点を犠牲とせず又は任意のブロックチェーンデータをリスクに曝さずに、スマート契約を並列実行できるのであり、処理時間を向上させることができる。
【0008】
ブロックチェーンでのスマート契約内のディスパッチの並列実行のための方法は次のステップを含む:ブロックチェーンネットワーク内のブロックチェーンノードのレシーバによって、ブロックチェーンと関連付けられているスマート契約を受信するステップと、前記ブロックチェーンノードのプロセッサによって、複数のディスパッチを前記スマート契約についての入力として識別するステップと、前記ブロックチェーンノードの前記プロセッサによって、前記複数のディスパッチをディスパッチの1つ以上のセットに分離するステップであって、ディスパッチの各セットは少なくとも1つのディスパッチを含み、また、ディスパッチのセット内の各ディスパッチは前記ブロックチェーン内の先行ブロック内の項目(entry)と関連付けられている共通の参照値を含む、ステップと、前記ブロックチェーンノードの前記プロセッサによって、所定の基準に基づいて、前記ディスパッチの1つ以上のセットの各々のうちの1つの有効なディスパッチを決定するステップと、前記ブロックチェーンノードの前記プロセッサによって、前記ディスパッチの1つ以上のセットの各々について前記1つの有効なディスパッチを用いて、前記スマート契約を実行するステップと、前記ブロックチェーンノードの前記プロセッサによって、前記ブロックチェーンについて新規ブロックを生成するステップであって、前記新規ブロックは1つ以上のブロックチェーンデータ項目を含み、前記1つ以上のブロックチェーンデータ項目は前記スマート契約の実行によって生成されたデータを含む、ステップと、前記ブロックチェーンノードのトランスミッタによって、前記生成された新規ブロックを前記ブロックチェーンネットワーク内の複数の追加ノードへと送信するステップ。
【0009】
ブロックチェーンでのスマート契約内のディスパッチの並列実行のためのシステムであって、該システムは:ブロックチェーンネットワークと;前記ブロックチェーンネットワーク内に含まれるブロックチェーンノードと;前記ブロックチェーンネットワーク内の複数の追加ノードとを備え、前記ブロックチェーンノードは:ブロックチェーンと関連付けられているスマート契約を受信するレシーバと、プロセッサであって、複数のディスパッチを前記スマート契約についての入力として識別するステップと、前記複数のディスパッチをディスパッチの1つ以上のセットに分離するステップであって、ディスパッチの各セットは少なくとも1つのディスパッチを含み、また、ディスパッチのセット内の各ディスパッチは前記ブロックチェーン内の先行ブロック内の項目と関連付けられている共通の参照値を含む、ステップと、所定の基準に基づいて、前記ディスパッチの1つ以上のセットの各々のうちの1つの有効なディスパッチを決定するステップと、前記ディスパッチの1つ以上のセットの各々について前記1つの有効なディスパッチを用いて、前記スマート契約を実行するステップと、前記ブロックチェーンについて新規ブロックを生成するステップであって、前記新規ブロックは1つ以上のブロックチェーンデータ項目を含み、前記1つ以上のブロックチェーンデータ項目は前記スマート契約の実行によって生成されたデータを含む、ステップと、を実行する、プロセッサと、前記生成された新規ブロックを前記複数の追加ノードへと送信するトランスミッタとを含む。
【図面の簡単な説明】
【0010】
本開示の範囲は、添付の図面と共に解釈されると、例示的な実施形態についての下記の詳細な記載から最も良く理解される。図面には次の図が含まれる。
【0011】
【
図1】例示的実施形態による、スマート契約内のディスパッチの並列実行のための高レベルシステムアーキテクチャを示すブロック図である。
【
図2】例示的実施形態による、
図1のスマート契約内のディスパッチの並列実行のためのシステムのブロックチェーンノードを示すブロック図である。
【
図3】例示的な実施形態による、
図2のブロックチェーンノードと
図1のシステムとを用いる、スマート契約内のディスパッチの並列実行のための処理について示す流れ図である。
【
図4】例示的な実施形態による、スマート契約内のディスパッチの並列実行のための例示的方法について示す流れ図である。
【
図5】例示的な実施形態による、コンピュータシステムアーキテクチャを示すブロック図である。
【0012】
本開示の更なる応用分野は、下記の詳細な説明から自明である。例示的実施形態の詳細な説明は、例示目的のみを意図しており、必ずしも本開示の範囲を制限することを意図していない。
【発明を実施するための形態】
【0013】
用語解説
ブロックチェーン:ブロックチェーンを基礎とした通貨の全てのトランザクションの公開台帳(public ledger)である。1つ以上のコンピューティング装置は、ブロックチェーンネットワークを含んでよく、これはブロックチェーンにおけるブロックの一部としてトランザクションを処理及び記録するよう構成されてよい。一旦ブロックが完成すると、当該ブロックはブロックチェーンへ追加され、それによってトランザクション記録が更新される。多くの実施形態では、ブロックチェーンは時系列順のトランザクションの台帳であってよいし、ブロックチェーンネットワークによる使用に適した任意の他の順序で提示されてもよい。いくつかの実施形態では、ブロックチェーンで記録されたトランザクションは、宛先アドレスと通貨額とを含んでよい。これによりブロックチェーンは、どれほどの通貨が特定のアドレスに帰属するかを記録する。いくつかの実施形態では、トランザクションは金融関連であってもそうでなくてもよいし、追加情報又は異なる情報(例えばソースアドレス、タイムスタンプ等)を含むことができる。いくつかの実施形態では、ブロックチェーンは追加的に又は代替的に、ほぼ任意の種別のデータ(これは改ざん又は改訂に対して強化された継続的に増加するデータレコードの一覧を維持する分散データベースに配置されるもの又は配置される必要のあるものである)をトランザクションの形態として含んでよい。あるいはブロックチェーンは、プルーフオブワーク(PoW)及び/又はそれに関連付けられた任意の他の適切な検証技術によってブロックチェーンネットワークによって確認及び有効化されることができる。一部の場合、所定のトランザクションについてのデータは更に、トランザクションデータに付加されたトランザクションの直接的な一部ではない追加のデータを含むことができる。一部の例では、そのようなデータをブロックチェーンに含めることは、トランザクションを構成できる。そのような一部の例では、ブロックチェーンは特定のデジタル通貨、仮想通貨、不換(fiat)通貨又は他の種別の通貨に直接的に関連付けられなくてよい。
【0014】
スマート契約の並列実行のためのシステム
図1は、グループ化及び所定の基準の使用を介してのブロックチェーンにおけるスマート契約への入力としてのディスパッチの並列実行のためのシステム100について示す。
【0015】
システム100は、1つ以上のブロックチェーンノード102を含むことができる。各ブロックチェーンノード102は、ブロックチェーンネットワーク104の一部であることができる。各ブロックチェーンノード102は、ブロックチェーンの処理及び管理に関連する機能をなすように構成された
図2及び
図5にて示されているような以下にて詳述されるコンピューティングシステムであることができ、例えば次の事項が含まれ得る:ブロックチェーンデータ値の生成、提案されているブロックチェーントランザクションの検証、デジタル署名の検証、新規ブロックの生成、新規ブロックの検証、ブロックチェーンのコピーの維持。
【0016】
ブロックチェーンは、少なくとも複数のブロックを備える分散型台帳たり得る。各ブロックは少なくともブロックヘッダ及び1つ以上のデータ値を含んでよい。各ブロックヘッダは少なくともタイムスタンプ、ブロック参照値、及びデータ参照値を含み得る。タイムスタンプは、ブロックヘッダが生成された時刻とされ得るのであり、また、任意の適切な方法を用いて表され得る(例えば、UNIXタイムスタンプ、DateTime等)。ブロック参照値は、ブロックチェーン内の先行ブロックを(例えば、タイムスタンプに基づいて)参照する値とされ得る。いくつかの実施形態では、ブロックヘッダ内のブロック参照値は、各ブロックに先行する一番最近に追加されたブロックのフロックヘッダへの参照とされ得る。例示的実施形態では、ブロック参照値は、一番最近追加されたブロックのブロックヘッダをハッシュ化することによって生成されたハッシュ値とされ得る。同様に、データ参照値は、ブロックヘッダを含むブロック内に格納されている1つ以上のデータ値への参照とされ得る。例示的実施形態では、データ参照値は、1つ以上のデータ値をハッシュ化することによって生成されたハッシュ値とされ得る。例えば、ブロック参照値は、1つ以上のデータ値を用いて生成されたマークルツリーのルートとされ得る。
【0017】
各ブロックヘッダ内にてブロック参照値及びデータ参照値を用いることの結果として、ブロックチェーンに不変性が与えられ得る。データ値に対しての変更を試みるにはそのブロックについて新たなデータ参照値の生成が要され、そのためには後続ブロックのブロック参照値を新たに生成することが要され、更には後続の各ブロックについて新たなブロック参照値を生成することを要する。このことは、変更を恒久的なものとするためには、新たなブロックの生成及びブロックチェーンへの追加前に、ブロックチェーンネットワーク104内の一つずつのブロックチェーンノード102に対して実行及び更新することを要する。演算能力及び通信能力の限界によって、そのような変更は格段に困難なこと又は無理難題となり得るのであり、故にブロックチェーンは不変性を獲得する。
【0018】
いくつかの実施形態では、ブロックチェーンは、2つの異なるブロックチェーンウォレット間にて行われたブロックチェーントランザクションに関する情報を格納するために用いられることができる。ブロックチェーンウォレットは暗号鍵ペアの秘密鍵を含み得るのであり、それはデジタル署名の生成に用いられるのであり、それはブロックチェーントランザクションに関しての支払人の承認としての役割を果たし得るのであり、該デジタル署名は暗号鍵ペアの公開鍵を用いてブロックチェーンネットワーク104によって検証されることができる。一部の場合では、「ブロックチェーンウォレット」との語は秘密鍵を特に指し得る。一部の場合では、「ブロックチェーンウォレット」との語は、ブロックチェーントランザクションにて秘密鍵を用いるためにそれを格納するコンピューティング装置(例えば、センダ装置106又はレシーバ装置108a,108b)を指し得る。例えば、各コンピューティング装置の各々は自機用の秘密鍵をそれぞれの暗号鍵ペアについて有していることができ、また、各々はブロックチェーンネットワークと関連付けられているブロックチェーンとのトランザクションにて用いるためのブロックチェーンウォレットとされることができる。コンピューティング装置は、ブロックチェーンウォレットを格納及び活用するのに適した任意のタイプの装置とすることができ、例えば、デスクトップコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、タブレットコンピュータ、携帯電話、スマートフォン、スマートウォッチ、スマートテレビ、ウェアラブルコンピューティング装置、埋込可能コンピューティング装置等とされ得る。
【0019】
ブロックチェーン内に記憶された各ブロックチェーンデータ値は、ブロックチェーントランザクション又は他のデータの記憶に適宜対応し得る。ブロックチェーントランザクションは少なくとも次の事項を備え得る:送信者の秘密鍵を用いて生成された通貨の送信者(例えば、センダ装置106)のデジタル署名、受取人の公開鍵を用いて生成された通貨の受取人(例えば、レシーバ装置108a,108b)のブロックチェーンアドレス、及び移転されるブロックチェーン通貨額又は記憶される他のデータ。ブロックチェーンが通貨とは異なるデータ記憶用途で用いられている場合には、通貨額をそのような他のデータで代替できる。一部のブロックチェーントランザクションにおいてトランザクションは次の事項をも含み得る:ブロックチェーン通貨が現在保管されている1つ以上の送信者のブロックチェーンアドレス(例えば、デジタル署名によってそのような通貨へのアクセスが立証される場合);及び送信者の公開鍵を用いて生成されたアドレスであって送信者によって保持される任意の変更のためのアドレス。将来のトランザクションにて使用可能な暗号通貨が送られたアドレスは「出力」アドレスと称されるのであって、各アドレスは先行するブロックチェーントランザクションの出力を捕捉するために以前用いられた故にそうなるのであり、「未消費トランザクション」ともこれは称されるのであってその通貨が未だ未消費である先行トランザクションにてアドレスへと送られる通貨が存する故にそうなる。一部の場合では、ブロックチェーントランザクションは、エンティティがトランザクションの検証に用いるための送信者の公開鍵を含むこともできる。ブロックチェーントランザクションの伝統的な処理のためには、そのようなデータは、送信者によって又は受取人のどちらかによって、ブロックチェーンネットワーク104内のブロックチェーンノード102へと提供され得る。ノードは送信者のウォレットの暗号鍵ペア内の公開鍵を用いてデジタル署名を検証でき、また、送信者の資金に対してのアクセスを検証できるのであり(例えば、未消費トランザクションが、未だ消費されておらず且つ送信者のウォレットと関連付けられているアドレスへと送られていた場合)、これはトランザクションの「確認」処理として知られており、またそして、ブロックチェーントランザクションは新規ブロック内に含められる。伝統的なブロックチェーン実装例では、新規ブロックに対しては、ブロックチェーンへの追加及びブロックチェーンネットワーク104内の全ブロックチェーンノード102への配布前に、ブロックチェーンネットワーク104内の他のノードによって検証がなされ得る。ブロックチェーンデータ値がブロックチェーントランザクションに関するものではなく代わりに他のタイプのデータの記憶に関するものである場合、ブロックチェーンデータ値は依然としてデジタル署名の検証を含む又は伴うことができる。
【0020】
いくつかの実施形態では、ブロックチェーンはパーミッション型ブロックチェーンとされることができる。パーミッション型ブロックチェーンとは、承認された参加者のみがブロックチェーンを用いてトランザクション(例えば、資産を送る若しくは受けること又はデータを提供すること)を行い得るものとされるブロックチェーンとすることができる。このような場合では、ブロックチェーンノード102によって承認が参加者にもたらされ得るのであり、例えば暗号鍵ペアの提供を受けること或いは自己の公開鍵を登録のためにブロックチェーンノード102に提供することによってこれがなされ得るのであり、ブロックチェーンノード102はブロックチェーンネットワーク104に提出された任意のトランザクションが承認された装置からのものであることを(例えば、既登録公開鍵を用いてトランザクションを検証することによって)担保できる。そのような実施形態では、ブロックチェーン内の任意の参加者によって実行され得る機能は、制限されてもよいし及び/又は承認の対象としてもよい。
【0021】
システム100では、スマート契約は、ブロックチェーンネットワーク104と関連付けられているブロックチェーン内にて記憶されることができる。スマート契約は自己実行型の契約であることができ、実行後のスマート契約の結果は、ブロックチェーン内にて記憶されるべき新規ブロックチェーントランザクションなどの新規ブロックチェーンデータ値とされることができる。スマート契約はディスパッチとも称される1つ以上の入力を用いて実行されることができ、そして新規ブロックチェーンデータ値が生成される。スマート契約は、自己実行型とすることができ、有効なディスパッチが識別された場合に実行を自動的に起動したり、或いは特定の基準が充足された場合に自動的に起動したりするものとすることができ、そしてその結果として特定のディスパッチが実行の入力としてスマート契約に提供されることとなる。例示的な実施形態では、スマート契約についての各ディスパッチはブロックチェーン上の先行するブロックチェーンデータ値を指すこととなり、例えば、ブロックチェーンデータ値のハッシュ値又は一意的識別値を用いることによってこれがなされ得るのでありこれはブロックチェーンデータ値と共にブロックチェーン内に記憶されている。ディスパッチが入力としてスマート契約に投入された場合、スマート契約の実行は結果としてブロックチェーントランザクション等の新たなブロックチェーンデータ値をもたらし得るのであり、一部の場合ではこれはディスパッチそれ自体に依存し得るのであり、例えばディスパッチ内の値がスマート契約の実行とは異なる出力を結果としてもたらし得る。
【0022】
例を挙げるに、スマート契約はエスクローのために用いられ得る。このような例では、センダ装置106と関連付けられている買主は、合意された通貨額で資産をレシーバ装置108aと関連付けられている売主から購入することに関して興味を有している場合がある。買主は、通貨額を、ブロックチェーントランザクションを介してエスクローのブロックチェーンウォレットへと移転できる。スマート契約はトランザクションの一部として或いはトランザクションとは別に記憶でき、スマート契約は、売主から買主への資産の所有の移転についての根拠に関してブロックチェーンを監視するのであり、例えば移転契約又はそのハッシュがブロックチェーン内に記憶されることによって行われることが含まれ得る。根拠が検出されると、スマート契約は実行することができ、それによって通貨がエスクローのブロックチェーンウォレットから指定された売主用の口座へと移転され得る。このような場合では、所有の移転の根拠がディスパッチとされ得るのであり、実行に際しての結果は、通貨がエスクローのウォレットから売主のウォレットへと移転するためのトランザクションである。
【0023】
システム100では、スマート契約は、ブロックチェーン内に記憶される、又は複数の異なるディスパッチが関連付けられ得るブロックチェーンノード102に提供されることができる。伝統的なシステムでは、ブロックチェーンノード102は、各ディスパッチについて逐次的にスマート契約を実行することとなる。システム100では、ブロックチェーンノード102は、スマート契約について全ディスパッチを並列実行するように構成されていることができる。
【0024】
ブロックチェーンノード102は、先ず、スマート契約に対して適用可能な全てのディスパッチを識別できるのであって、これらはスマート契約それ自体に含まれる情報を用いて識別されることができる。例えば、スマート契約は、全ディスパッチを明示的に列挙でき、或いは、ディスパッチを識別するためにブロックチェーンノード102によって用いられ得るデータを含むことができるのであり、これは例えば1つ以上のブロックチェーンウォレット、ブロックチェーンデータ値、トランザクション識別子等を指定することによってできる。そして、ブロックチェーンノード102は、全てのディスパッチをディスパッチのセットにグループ化することができる。ディスパッチのセット内の各ディスパッチは共通の参照値を有することができ、これはディスパッチが指すブロックチェーン内に記憶されたブロックチェーンデータ値又は他の値とされることができる。例を挙げるに、第1のディスパッチは100単位の通貨をセンダ装置106へと移転するブロックチェーントランザクションを指し得るのであり、スマート契約の実行がそれら100単位の通貨をセンダ装置106からレシーバ装置108aへと移転することとなる。例を挙げるに、第2のディスパッチは100単位の通貨をセンダ装置106へと移転する同じブロックチェーントランザクションを指し得るのであり、そのディスパッチに関してのスマート契約の実行がそれら100単位の通貨をセンダ装置106からレシーバ装置108bへと移転することとなる。このような例では、両ディスパッチは同じ参照値を活用する(例えば、100単位の通貨をセンダ装置106へと移転するブロックチェーントランザクション)。このように、両ディスパッチは、ブロックチェーンノード102によって同じセット内に入れられることとなる。
【0025】
ブロックチェーンノード102が全てのディスパッチをディスパッチのセットに編成されると(一部のディスパッチはセット内の唯一のディスパッチとし得る)、次いでブロックチェーンノード102は各セットについて単一のディスパッチを選択することができる。ブロックチェーンノード102は、任意の適切な所定の基準を用いてディスパッチのセットについて単一のディスパッチを選択できる。一例を挙げるに、ブロックチェーンノード102はセット内の全ディスパッチを序列化して、そして第1順位のディスパッチ又は当該序列における所定のディスパッチ(例えば、中間順位、後方順位等)を選択できる。ブロックチェーンノード102は任意の適切なデータを序列化に用いることができ、例えば、スマート契約の実行に際して結果としてもたらされたトランザクションのハッシュ、ディスパッチがスマート契約にて受信又は入力された時刻、スマート契約それ自体におけるディスパッチの序列、ブロックチェーンノード102によって生成されたディスパッチそれ自体のハッシュ等が用いられることができる。別の例を挙げるに、ブロックチェーンノード102はランダム又は疑似ランダムな選択についてのアルゴリズムを用いることができ、ブロックチェーンネットワーク104内の各ブロックチェーンノード102は同じアルゴリズムを同じ適用可能入力(例えば、シード、重み等)を用いて活用するのであり、あらゆるブロックチェーンノード102が同じ選択をなすようにする。ディスパッチのセットについてブロックチェーンノード102によって選択された単一のディスパッチが、処理を行うあらゆるブロックチェーンノード102に関して同じとなるようにする任意の適切な基準を用いることができる。
【0026】
単一のディスパッチが各セットについて選択されると、ブロックチェーンノード102は、そのセットについての選択された単一のディスパッチを用いて、ディスパッチのセットごとに、スマート契約を実行できる。例示的な実施形態では、ブロックチェーンノード102は、スマート契約の実行を並列で行うことができ、並列実行件数は、ブロックチェーンノード102のプロセッサコア数、利用可能コンピューティング資源、又は他の適切な基準に基づいていることができる。例えば、ブロックチェーンノード102は8つのコアを有するプロセッサを有し得るのであり、一度に8つのスマート契約実行を行い得るのであり、この結果として逐次的実行を用いる場合に比して相当に速く(例えば、約8倍速で)スマート契約の実行がなされ得る。
【0027】
ディスパッチの各セットについてのスマート契約の実行は、ディスパッチの各セットについて、新たなブロックチェーンデータ値、又はブロックチェーンデータ値内に含められるデータ、の生成を結果としてもたらし得る。そして、ブロックチェーンノード102は、ブロックチェーンノード102によって生成された新規ブロック内のブロックチェーンデータ値を用いることができ、これは伝統的な方法及びシステムを用いてなされる。生成されたブロックは、検証及び確認のためにブロックチェーンネットワーク104内の他のブロックチェーンノード102へと送信されることができ、これは伝統的な方法を用いてなされる。新規ブロックが確認されると、ブロックは、ブロックチェーンネットワーク104内の全てのブロックチェーンノード102によってブロックチェーンに追加されることができる。
【0028】
ディスパッチをディスパッチのセットに編成すること並びに各セットから単一のディスパッチのみを実行することによって、ブロックチェーンに無効なブロックチェーントランザクションが追加されないこととなる。なぜならば、どの参照値も1回を超えて用いられることがないからである。例えば、上述の例では、センダ装置106による100単位の通貨の移転事例のうち1つのみが選択される。なぜならば、いずれの移転事例もディスパッチの単一のセット内にあるからである。その結果、(例えば、セット内の単一ディスパッチの選択に用いられる基準に応じて)レシーバ装置108a又はレシーバ装置108bのみがブロックチェーンにて100単位の通貨を受け取ることになり、ブロックチェーンネットワーク104にての二重払いの可能性が否定されることになる。したがって、本開示にて説明された方法及びシステムは、ブロックチェーンのセキュリティ又は特性を何ら損なわずにスマート契約の実行に関しての処理速度を大きく向上させる。
【0029】
ブロックチェーンノード
図2は、システム100内のブロックチェーンノード102等のブロックチェーンノード102についての実施形態を示す。当業者にとって、
図2に示すブロックチェーンノード102の実施形態が、例示目的のみで提供されることと、本開示の機能を実行するのに適した、ブロックチェーンノード102の全ての可能な構成を徹底的に示したものでないこととは自明である。例えば、
図5に示され下記で一層詳細に説明されるコンピュータシステム500が、ブロックチェーンノード102の適切な構成であってよい。
【0030】
ブロックチェーンノード102は、受信装置202を含むことができる。受信装置202は1つ以上のネットワークプロトコルを介して1つ以上のネットワーク上でデータを受信するよう構成されてよい。いくつかの例では、受信装置202は無線周波数、ローカルエリアネットワーク、無線エリアネットワーク、セルラ通信ネットワーク、Bluetooth、インターネット等の1つ以上の通信方法を介して、他のブロックチェーンノード102、センダ装置106、レシーバ装置108a,108b、並びに他のシステム及びエンティティからデータを受信するように構成され得る。いくつかの実施形態では、受信装置202は複数の装置(例えば、異なるネットワーク上でデータを受信する異なる受信装置(例えばローカルエリアネットワークでデータを受信する第1の受信装置と、インターネット上でデータを受信する第2の受信装置))を含んでよい。受信装置202は送信される電子的なデータ信号を受信してよい。このとき、受信装置202によるデータ信号の受信によって、データはデータ信号上に重ねられ、復号、解析(パース)、読取り、又は取得されてよい。いくつかの実施形態では、受信装置202は、受信されたデータ信号を解析して、そこに重ねられたデータを取得するための解析モジュールを含んでよい。例えば受信装置202は、受信されたデータ信号を受信し、処理装置によって実行される機能のための利用可能な入力へと変換して本開示の方法及びシステムを実行するよう構成される解析プログラムを含んでよい。
【0031】
受信装置202は、他のブロックチェーンノード102によって電子的に送信されたデータ信号を受信するように構成可能であり、これは、重畳されているか他の態様で符号化されているブロックチェーンデータ値、データ値識別子、ブロック、ブロックチェーンデータ、確認メッセージ、スマート契約、所定の基準、ディスパッチ等とされ得る。受信装置202は、センダ装置106及び/又はレシーバ装置108a,108bによって電子的に送信されたデータ信号を受信するように構成可能であり、データ信号は、ブロックチェーンデータ値、公開鍵、デジタル署名、ブロックチェーントランザクションデータ、スマート契約、スマート契約用のディスパッチ、ブロックチェーンネットワーク104に関しての承認要求等で重畳又は符号化され得る。
【0032】
ブロックチェーンノード102は、通信モジュール204を含むこともできる。通信モジュール204は、本開示の機能を実行する際に使用するために、モジュール、エンジン、データベース、メモリ、及びブロックチェーンノード102の他の構成要素の間でデータを転送するよう構成されてよい。通信モジュール204は、1つ以上の通信種別を含んでよく、コンピューティング装置内での通信のために様々な通信方法を使用してよい。例えば、通信モジュール204はバス、接続ピンコネクタ、ワイヤ等を含んでよい。いくつかの実施形態では、通信モジュール204はまた、ブロックチェーンノード102の内部構成要素とブロックチェーンノード102の外部構成要素(例えば、外部で接続されたデータベース、表示装置、入力装置等)との間で通信するよう構成されてよい。ブロックチェーンノード102は、処理装置も含むことができる。処理装置は本開示のブロックチェーンノード102の機能を実行するよう構成されてよい。このことは、当業者にとって自明である。いくつかの実施形態では、処理装置は、処理装置の1つ以上の機能を実行するよう特別に構成された複数のエンジン及び/又はモジュール(例えばクエリモジュール214、生成モジュール216、検証モジュール218等)を含んでよい。本開示のように、「モジュール」との用語は、入力を受信し、当該入力を使用して1つ以上の処理を実行し、且つ出力を提供するよう特別にプログラムされたハードウェア上で実行されるソフトウェア又はハードウェアであってよい。様々なモジュールによってこなされる入力、出力及び処理は、本開示に基づいて、当業者にとって自明である。
【0033】
ブロックチェーンノード102はブロックチェーンデータ206を含むこともでき、これはブロックチェーンノード102のメモリ212内に記憶される又はブロックチェーンノード102内の別個の領域に記憶される又はそれによってアクセス可能とされることができる。ブロックチェーンデータ206はブロックチェーンを含むことができ、これは複数のブロックを備えることができ、ブロックチェーンネットワーク104と関連付けられていることができる。ブロックチェーンデータ206は、1つ以上のブロックチェーンウォレットと関連付けられておりブロックチェーンノード102によって用いられ得る任意のデータを追加的に又は代替的に含むことができ、これには次の事項が含まれ得る:暗号鍵ペア、未消費トランザクションの出力、デジタル資産額、ブロックチェーンネットワーク104についてのネットワーク識別子、スマート契約、署名生成アルゴリズム、暗号化アルゴリズム、トランザクション口座データ、口座残高、サードパーティ用通信情報、所定の基準、登録された参加装置、装置登録データ等。
【0034】
ブロックチェーンノード102はまた、メモリ212を含んでよい。メモリ212は、本開示の機能を実行するときにブロックチェーンノード102が使用するためのデータ(例えば公開鍵、秘密鍵、対称鍵等)を格納するよう構成されてよい。メモリ212は、適切なデータのフォーマット方法及びスキーマを用いてデータを格納するよう構成されてよく、また、任意の適切な種別のメモリ(例えば、読み取り専用メモリ、ランダムアクセスメモリ等)であってよい。メモリ212は、例えば暗号鍵及びアルゴリズム、通信プロトコル及び規格、データフォーマット規格及びプロトコル、モジュール用プログラムコード及び処理装置のアプリケーションプログラム、並びに、本開示の機能を実行する際にブロックチェーンノード102によって使用される適切な他のデータを含んでよい。このことは、本開示を読む当業者にとって自明である。いくつかの実施形態では、メモリ212は、構造化照会言語(SQL)を使用するリレーショナルデータベースを含んでよく、記憶された構造化データセットを記憶、識別、修正、更新、アクセス等してもよい。メモリ212は、例えば、暗号鍵、ソルト、ノンス、他のコンピューティングシステムのための通信情報、生成アルゴリズム、所定の基準、序列化規則等を記憶するように構成されてよい。
【0035】
ブロックチェーンノード102は、クエリモジュール214を含んでよい。クエリモジュール214は、データベース上のクエリを実行して情報を識別するよう構成されてよい。クエリモジュール214は、1つ以上のデータ値又はクエリ文字列を受信してよく、それに基づいて、示されたデータベース(例えば、ブロックチェーンノード102のメモリ212)上でクエリ列を実行して、そこに格納された情報を識別してよい。そして、クエリモジュール214は、識別された情報を、必要に応じてブロックチェーンノード102の適切なエンジン又はモジュールへ出力してよい。クエリモジュール214は、例えば、ブロックチェーンデータ206上でクエリを実行して、実行のために起動されたスマート契約についての全てのあり得るディスパッチを識別できる。
【0036】
ブロックチェーンノード102は、生成モジュール216を含むこともできる。生成モジュール216は、本開示の機能を実行するときにブロックチェーンノード102によって使用されるデータを生成するよう構成されてもよい。生成モジュール216は、入力値として命令を受信してもよいし、命令に基づいてデータを生成してもよいし、生成されたデータをブロックチェーンノード102の1つ以上のモジュールへと出力してもよい。例えば、生成モジュール216は、暗号鍵ペアを生成したり、デジタル署名を生成したり、ブロックチェーンデータ値を生成したり、新規ブロックを生成したり、選択されたディスパッチを用いてスマート契約を実行したり等するように構成されることができる。生成モジュール216は所定の基準を用いてディスパッチのセットから単一ディスパッチを選択(例えば、生成)するようにも構成されることができ、これには適用可能な規則に基づいてディスパッチのセット内の各ディスパッチを序列化すること及び所定の基準で示されるように序列化されたセットから単一ディスパッチを選択することが含まれ得る。
【0037】
ブロックチェーンノード102は、検証モジュール218を含むこともできる。検証モジュール218は、本開示の機能の一部として、ブロックチェーンノード102について検証を行うように構成されることができる。検証モジュールは、検証を行うに際して用いられるデータを含み得る命令を入力として受信でき、要求に応じて検証を行うことができ、また、検証の結果をブロックチェーンノード102の別のモジュール又はエンジンへと出力できる。検証モジュール218は、例えば次のことを実行するように構成されることができる:適切な署名生成アルゴリズム及び鍵を用いてデジタル署名を検証すること、ブロックチェーントランザクションを検証すること、スマート契約を検証すること、参加装置の適格性を検証すること等。
【0038】
ブロックチェーンノード102は、送信装置220も含むことができる。送信装置220は、1つ以上のネットワークプロトコルを介して1つ以上のネットワーク上でデータを送信するように構成されてよい。いくつかの例では、送信装置(transmitting device)220は、ローカルエリアネットワーク、無線エリアネットワーク、セルラ通信、Bluetooth、無線周波数、インターネット等の1つ以上の通信方法を介して、他のブロックチェーンノード102、センダ装置(sender device)106、レシーバ装置(receiver device)108a,108b、並びに他のエンティティへとデータを送信するように構成され得る。いくつかの実施形態では、送信装置220は複数装置(例えば、異なるネットワーク上でデータを送信するための異なる送信装置(例えば、ローカルエリアネットワーク上でデータを送信する第1の送信装置及びインターネット上でデータを送信する第2の送信装置))を含んでよい。送信装置220は、重畳されたデータであって受信コンピューティング装置によって解析されるデータを有するデータ信号を電子的に送信してよい。いくつかの実施形態では、送信装置220は、データを重畳し、符号化し、又はデータを送信に適したデータ信号へフォーマットする1つ以上のモジュールを含んでよい。
【0039】
送信装置220は、データ信号を他のブロックチェーンノード102へと電子的に送信するように構成可能であり、データ信号は、ブロックチェーンデータ値、データ値識別子、ブロック、ブロックチェーンデータ、確認メッセージ、スマート契約、所定の基準、ディスパッチ等で重畳される、又は符号化されることができる。また、送信装置220は、データ信号をセンダ装置106及び/又はレシーバ装置108a,108bへと電子的に送信するように構成されていることができ、データ信号は、スマート契約若しくはディスパッチについての要求、ブロックチェーンネットワーク104への参加のための承認データ、ブロックチェーンデータ206等で重畳されている、又は符号化されていることができる。
【0040】
スマート契約の並列実行のための処理
図3は、
図1のシステム100内のブロックチェーンノード102によって実行される、スマート契約内のディスパッチの並列実行のための処理300を示す。
【0041】
S302では、ブロックチェーンノード102の受信装置(receiving device)202は、スマート契約を実行のために受信し得る。一部の場合では、スマート契約は、例えばセンダ装置106又はレシーバ装置108a,108b等の参加装置によって提出され得る。他の場合では、スマート契約は、ブロックチェーンノード102が属するブロックチェーンネットワーク104と関連付けられているブロックチェーン内の既存のブロック内に記憶されることができる。スマート契約は(例えば、ディスパッチ又は有効期限の検出の結果として)例えば契約自体にて規定された基準等に基づいて、実行のために起動されることができる。S304では、ブロックチェーンノード102のクエリモジュール214は、ブロックチェーンデータ206上でクエリを実行して、スマート契約に適用可能な全てのディスパッチを識別できる。これは例えば、ブロックチェーン内に記憶されているスマート契約自体内のディスパッチを識別すること又はスマート契約内の基準に基づいてディスパッチを識別することによって行われる。
【0042】
S306では、ブロックチェーンノード102の生成モジュール216は、S304でブロックチェーンノードによって識別された全てのディスパッチについて、複数の異なるディスパッチのセットを生成できる。ディスパッチのセット内の各ディスパッチは共通の参照値を含み得るのであり、これは、上述の例でセンダ装置106に資産を移転するために用いられたもの等のブロックチェーン内に記憶された先行ブロックチェーンデータ値のハッシュ値とし得る。ディスパッチが任意の他のディスパッチと共有されていない参照値を有するのみである事例では、そのディスパッチはディスパッチのセット内の唯一のディスパッチとし得る。
【0043】
S308では、ブロックチェーンノード102は、セット内に複数のディスパッチを有する任意のディスパッチのセットが存在するかについて決定できる。そして複数のディスパッチを含む少なくとも1つのディスパッチのセットが存在する場合、S310では、ブロックチェーンノード102の生成モジュール216は、所定の基準を用いて各々のそのようなセットについて単一ディスパッチを選択できる。1つの例では、単一のディスパッチの選択は、セット内のディスパッチを全て序列化して、そして、所定の基準に応じて序列化されたセットから単一のディスパッチを選択することを含み得る。ディスパッチの各セットについて単一のディスパッチが識別されると、又は、1つより多いディスパッチを伴うディスパッチのセットが無かった場合、S312では、ブロックチェーンノード102の生成モジュール216は、各セットについて、単一の識別されたディスパッチ又は唯一のディスパッチを用いて、ディスパッチの各セットについてスマート契約を実行できる。ディスパッチの各セットについてのスマート契約の実行は新たなブロックチェーンデータ値を各セットについて生成することができる。例示的な実施形態では、ブロックチェーンノード102によってS312で実行されるスマート契約の実行は、並列で実行され得る。
【0044】
S314では、ブロックチェーンノード102の生成モジュール216は、スマート契約の実行の結果として生成されたブロックチェーンデータ値を用いて、新規ブロックを生成できる。新規ブロックはブロックヘッダを含み得るのであり、これは、タイムスタンプ及びブロックチェーン内の先行ブロックへの参照、並びに新規ブロックに含まれる全てのブロックチェーンデータ値への参照、及び生成されたブロックチェーンデータ値を含み得る。一部の場合では、追加のブロックチェーンデータ値も新規ブロック内に含められていることができる。これは、例えば、他のトランザクション、データの追加、スマート契約等であり、標準処理においてブロックチェーンノード102によって(例えば、受信装置202を用いて)受信され得るものが含まれ得る。S316では、ブロックチェーンノード102の送信装置220は、確認のために新規ブロックをブロックチェーンネットワーク104内の複数の他のブロックチェーンノード102へと電子的に送信することができる。他のブロックチェーンノード102は新規ブロックに関して伝統的な方法及びシステムを用いて検証及び確認を行うことができ、確認が得られた場合には、新規ブロックはブロックチェーンネットワーク104内の全てのブロックチェーンノード102内のブロックチェーンに追加されることができる。
【0045】
スマート契約の並列実行に関しての例示的方法
図4は、所定の基準を用いてのブロックチェーンにおけるスマート契約での複数のディスパッチの並列実行のための方法400について示す。
【0046】
S402では、ブロックチェーンと関連付けられているスマート契約が、ブロックをブロックチェーンネットワーク(例えば、ブロックはブロックチェーンネットワーク104)内のブロックチェーンノード(例えば、ブロックチェーンノード102)のレシーバ(receiver)(例えば、受信装置202)によって受信されることができる。S404では、複数のディスパッチは、ブロックチェーンノードのプロセッサによって(例えば、クエリモジュール214を介して)スマート契約についての入力として識別されることができる。S406では、複数のディスパッチは、ブロックチェーンノードのプロセッサによって(例えば、生成モジュール216を介して)ディスパッチの1つ以上のセットに分離されることができる。ディスパッチの各セットは少なくとも1つのディスパッチを含み、また、ディスパッチのセット内の各ディスパッチはブロックチェーン内の先行ブロック内の項目と関連付けられている共通の参照値を含む。
【0047】
S408では、1つの有効なディスパッチを、所定の基準に基づいてディスパッチの1つ以上のセットの各々におけるブロックチェーンノードのプロセッサによって(例えば、生成モジュール216を介して)決定することができる。S410では、1つの有効なディスパッチをディスパッチの1つ以上のセットの各々について1つの有効なディスパッチを用いてブロックチェーンノードのプロセッサによって(例えば、生成モジュール216を介して)スマート契約が実行される。S412では、プロセッサによって(例えば、生成モジュール216を介して)ブロックチェーンについて新規ブロックが生成されることができる。新規ブロックは1つ以上のブロックチェーンデータ項目を含み、1つ以上のブロックチェーンデータ項目はスマート契約の実行によって生成されたデータを含む。S414では、生成された新規ブロックは、ブロックチェーンノードのトランスミッタ(transmitter)(例えば、送信装置220)によってブロックチェーンネットワーク内の複数の追加のノードへと送信されることができる。
【0048】
1つの実施形態では、所定の基準は各ディスパッチをディスパッチのセット内にて序列化することを含むことができ、また、ディスパッチのセットについての1つの有効なディスパッチはディスパッチのセットの序列化後の第1のディスパッチとすることができる。さらなる実施形態では、ディスパッチのセット内の各ディスパッチは、ディスパッチそれぞれに含まれるハッシュ値に基づいて序列化されることができる。いくつかの実施形態では、スマート契約は、ディスパッチの1つ以上のセットの各々について1つの有効なディスパッチを用いて、並列的に実行されることができる。1つの実施形態では、ブロックチェーンはパーミッション型ブロックチェーンであることができる。
【0049】
いくつかの実施形態では、共通の参照値はブロックチェーン内におけるブロックチェーントランザクションの識別子とすることができる。1つの実施形態では、1つの有効なディスパッチを用いてスマート契約を実行することは、資産を移転させる新たなブロックチェーントランザクションを生成することとすることができ、また、スマート契約の実行によって生成されたデータはディスパッチの1つ以上のセットの各々について新たなブロックチェーントランザクションを含み得る。さらなる実施形態では、1つの有効なディスパッチについて新たなブロックチェーントランザクションにおいて移転された資産は、1つの有効なディスパッチを含むディスパッチのセット内に含まれる共通の参照値において識別され得る。
【0050】
コンピュータシステムアーキテクチャ
図5は、コンピュータシステム500を示す。そこにおいては、本開示の実施形態又はその一部が、コンピュータ可読コードとして実装されてよい。例えば
図1及び2のブロックチェーンノード102は、ハードウェア、格納された命令を有する非一時的なコンピュータ可読媒体、又はこれらの組合せを用いてコンピュータシステム500内に実装されてよく、1つ以上のコンピュータシステム又は他の処理システムにおいて実装されてよい。ハードウェアは、
図3及び4の方法を実施するために使用されるモジュール及びコンポーネントを具体化することができる。
【0051】
プログラマブルロジックが使用される場合、そのようなロジックは、実行可能なソフトウェアコードで構成された商業的に利用可能な処理プラットフォーム上で実行され、特定用途装置又は特別目的装置となっていてよい(例えばプログラマブルロジックアレイ(PGA)、特定用途向け集積回路(ASIC)等)。当業者は、開示された事項についての実施形態が、様々なコンピュータシステム構成で実行可能であることを理解する。当該システム構成は、マルチコアのマルチプロセッサシステムと、ミニコンピュータと、メインフレームコンピュータと、分散された機能でリンクされ又はクラスタ化されたコンピュータと、実質的に任意の装置に実装可能なパーベイシブ又はミニチュアのコンピュータとを含む。例えば、少なくとも1つのプロセッサ装置及びメモリが、上記実施形態を実装するために使用されてよい。
【0052】
本開示のプロセッサユニット又は装置は、単一のプロセッサ、複数のプロセッサ、又はこれらの組合せであってよい。プロセッサ装置は、1つ以上のプロセッサ「コア」を有してよい。本開示の「コンピュータプログラム媒体」、「非一時的コンピュータ可読媒体」及び「コンピュータ使用可能媒体」との用語は、概して、有形の媒体(例えばリムーバブル記憶域ユニット518、リムーバブル記憶域ユニット522及びハードディスクドライブ512内にインストールされたハードディスク等)を指すために使用される。
【0053】
本開示の様々な実施形態は、この例示的なコンピュータシステム500に関して記述される。本開示を読んだ後、当業者にとって、他のコンピュータシステム及び/又はコンピュータアーキテクチャを用いて本開示をどのように実装するかは自明である。動作はシーケンシャルな処理として開示されるが、いくつかの動作は実際には、並行して、同時に及び/又は分散環境で、実行されてよい。このとき、プログラムコードは、単一プロセッサの又はマルチプロセッサのマシンによってアクセスするために、ローカルに又はリモートに格納された状態である。さらに、いくつかの実施形態では、動作の順番は、開示される事項の趣旨を逸脱することなく再配置可能である。
【0054】
プロセッサ装置504は、本開示の機能を実行するよう特別に構成された特定用途又は汎用プロセッサ装置であってよい。プロセッサ装置504は、通信インフラストラクチャ506(例えばバス、メッセージキュー、ネットワーク、マルチコアメッセージパススキーム等)へ接続されてよい。ネットワークは、本開示の機能を実行するのに適した任意のネットワークであってよく、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、無線ネットワーク(例えばWifi)、モバイル通信ネットワーク、衛星ネットワーク、インターネット、光ファイバ、同軸ケーブル、赤外線、無線周波数(RF)又はこれらの任意の組合せを含んでよい。他の適切なネットワークタイプ及び構成は、当業者にとって自明である。コンピュータシステム500はまた、メインメモリ508(例えばランダムアクセスメモリ、読み取り専用メモリ等)を含んでよく、また、二次メモリ510を含んでよい。二次メモリ510は、ハードディスクドライブ512とリムーバブル記憶域ドライブ514(例えばフロッピーディスクドライブ、磁気テープドライブ、光ディスクドライブ、フラッシュメモリ等)とを含んでよい。
【0055】
リムーバブル記憶域ドライブ514は、周知の方法で、リムーバブル記憶域ユニット518から読み取りを行ってもよいし、及び/又は、そこへ書き込みを行ってもよい。リムーバブル記憶域ユニット518は、リムーバブル記憶域ドライブ514によって読み取られまた書き込まれることができる、取外し可能なストレージ媒体を含んでよい。例えばもしリムーバブル記憶域ドライブがフロッピーディスクドライブ又はUSBポートであれば、リムーバブル記憶域ユニット518はそれぞれ、フロッピーディスク又はポータブルフラッシュドライブであってよい。1つの実施形態では、リムーバブル記憶域ユニット518は非一時的な読取り可能記録媒体であってよい。
【0056】
いくつかの実施形態では、二次メモリ510は代替手段を含み、コンピュータプログラム又は他の命令がコンピュータシステム500(例えばリムーバブル記憶域ユニット522及びインタフェース520)にロードされることを可能にしてよい。そのような手段の例は、(例えばビデオゲームシステムで見られる)プログラムカートリッジ及びカートリッジインタフェース、取外し可能なメモリチップ(例えばEEPROM、PROM等)、関連ソケット、他のリムーバブル記憶域ユニット522及びインタフェース520を含んでよい。このことは当業者にとって自明である。
【0057】
コンピュータシステム500に(例えばメインメモリ508に及び/又は二次メモリ510に)格納されたデータは、任意のタイプの適切なコンピュータ読取り可能な媒体(例えば光ストレージ(コンパクトディスク、デジタル多目的ディスク、Blu-rayディスク等)又は磁気テープストレージ(例えばハードディスクドライブ))上に格納されてよい。データは任意のタイプの適切なデータベース構成(例えばリレーショナルデータベース、構造化照会言語(SQL)データベース、分散データベース、オブジェクトデータベース等)で構成されてよい。適切な構成及びストレージタイプは、当業者にとって自明である。
【0058】
コンピュータシステム500はまた、通信インタフェース524を含んでよい。通信インタフェース524は、ソフトウェア及びデータが、コンピュータシステム500と外部装置との間で送受信されることを可能にしてよい。例示的な通信インタフェース524は、モデム、ネットワークインタフェース(例えばイーサネットカード)、通信ポート、PCMCIAスロット及びカード等を含んでよい。通信インタフェース524を介して転送されるソフトウェア及びデータは信号の形態であってよい。当該信号は、電子の、電磁気の、光の、又は当業者にとって自明な他の信号のものであってよい。信号は、通信経路526を介して伝播する。当該経路は信号を搬送するよう構成され、電線、ケーブル、光ファイバ、電話線、携帯電話リンク、無線周波数リンク等を用いて実装されてよい。
【0059】
コンピュータシステム500は、ディスプレイインタフェース502を更に含んでよい。ディスプレイインタフェース502は、データが、コンピュータシステム500と外部ディスプレイ530との間で転送されることを可能にするよう構成されてよい。例示的なディスプレイインタフェース502は、高精細度マルチメディアインタフェース(HDMI)、デジタルビジュアルインタフェース(DVI)、ビデオグラフィックスアレイ(VGA)等を含んでよい。ディスプレイ530は任意の適切なタイプのディスプレイであってよく、コンピュータシステム500のディスプレイインタフェース502を介して転送されるデータを表示する。表示部830は、ブラウン管(CRT)ディスプレイ、液晶ディスプレイ(LCD)、発光ダイオード(LED)ディスプレイ、静電容量方式タッチディスプレイ、薄膜トランジスタ(TFT)ディスプレイ等を含む。
【0060】
コンピュータプログラム媒体及びコンピュータ使用可能な媒体は、メモリ(例えばメインメモリ508及び二次メモリ510)を指してよく、半導体メモリ(DRAM等)であってよい。これらのコンピュータプログラム製品は、コンピュータシステム500へソフトウェアを提供するための手段であってよい。コンピュータプログラム(例えばコンピュータ制御ロジック)は、メインメモリ508及び/又は二次メモリ510内に格納されてよい。コンピュータプログラムはまた、通信インタフェース524を介して受信されてよい。そのようなコンピュータプログラムは、実行されると、コンピュータシステム500が本開示の方法を実行することを可能にしてよい。特に、コンピュータプログラムは、実行されると、プロセッサ装置504が本明細書で説明するように、
図3及び4に示す方法を実施することを可能にすることができる。したがって、そのようなコンピュータプログラムはコンピュータシステム500のコントローラを示す。本開示はハードウェア上で実行されるソフトウェアを使用して実装され、当該ソフトウェアはコンピュータプログラム製品内に格納されていることができ、リムーバブル記憶域ドライブ514、インタフェース520、及びハードディスクドライブ512又は通信インタフェース524を用いてコンピュータシステム500内へとロードされてよい。
【0061】
プロセッサ装置504は、コンピュータシステム500の機能を実行するよう構成される1つ以上のモジュール又はエンジンを含んでよい。各モジュール又はエンジンは、ハードウェアを用いて実装されてよく、いくつかの実施形態ではハードウェア上で実行されるソフトウェア(例えば、これはメインメモリ508又は二次メモリ510に格納されるプログラムコード及び/又はプログラムに対応する)を用いてよい。そのような実施形態では、プログラムコードは、コンピュータシステム500のハードウェアによる実行前に、プロセッサ装置504によって(例えば、コンパイル用モジュール又はエンジンによって)コンパイルされてよい。例えばプログラムコードは、低レベルの言語へと翻訳されるプログラミング言語で記述されたソースコード(例えばアセンブリ言語又は機械コード)であってよい。これは、プロセッサ装置504及び/又はコンピュータシステム500の任意の追加のハードウェア構成要素によって実行するためのものである。コンパイル処理は、語彙解析と、前処理と、構文解析と、意味解析と、構文主導型翻訳と、コード生成と、コード最適化と、コンピュータシステム500の制御のためにプログラムコードを低レベルの言語へ翻訳して本開示の機能を実行するのに適した任意の他の技術との使用を含んでよい。そのような処理によってコンピュータシステム500が、上記の機能を実行するために一意にプログラムされた特別構成コンピュータシステム500になることは当業者にとって自明である。
【0062】
本開示と一致している技術は、他の特徴のなかでも、ブロックチェーンでのスマート契約内のディスパッチの並列実行のためのシステム及び方法を提供する。本開示のシステム及び方法の様々な例示的実施形態が上述されるが、それらは限定目的でなく例示目的のみで示されることを理解されたい。それは網羅的でなく、本開示を、開示された形態そのものへ限定はしない。上記の教示に照らして修正及び変形が可能である。範疇又は範囲を逸脱することなく、本開示の実装から修正及び変形が得られてよい。
【国際調査報告】