(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-07-29
(45)【発行日】2025-08-06
(54)【発明の名称】枝刈りされたブロックチェーンにおけるデータ保持のための方法及びシステム
(51)【国際特許分類】
H04L 9/32 20060101AFI20250730BHJP
【FI】
H04L9/32 200Z
(21)【出願番号】P 2024523547
(86)(22)【出願日】2022-09-12
(86)【国際出願番号】 US2022043211
(87)【国際公開番号】W WO2023069202
(87)【国際公開日】2023-04-27
【審査請求日】2024-06-04
(32)【優先日】2021-10-19
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】500041363
【氏名又は名称】マスターカード インターナシヨナル インコーポレイテツド
(74)【代理人】
【識別番号】100147485
【氏名又は名称】杉村 憲司
(74)【代理人】
【識別番号】230118913
【氏名又は名称】杉村 光嗣
(74)【代理人】
【識別番号】100224683
【氏名又は名称】齋藤 詩織
(72)【発明者】
【氏名】ロバート コリンズ
(72)【発明者】
【氏名】コナー マクキラン
(72)【発明者】
【氏名】ピーター ノーラン
【審査官】青木 重徳
(56)【参考文献】
【文献】米国特許出願公開第2021/0247908(US,A1)
【文献】米国特許出願公開第2020/0204376(US,A1)
【文献】米国特許出願公開第2020/0174990(US,A1)
【文献】蓑輪 正,安全性と信頼性を両立した分散ストレージシステムの提案,電子情報通信学会技術研究報告,日本,社団法人電子情報通信学会,2011年11月11日,Vol.111 No.309,pp.19-24
【文献】簑輪 正,大容量データに向けたセキュア分散ストレージシステム,2012年 暗号と情報セキュリティシンポジウム予稿集 [CD-ROM] ,日本,2012年01月30日,3E2-1,pp.1-8
【文献】Swanand Kadhe et al.,SeF: A Secure Fountain Architecture for Slashing Storage Costs in Blockchains,arXiv:1906.12140v1,[オンライン],2019年06月28日,[取得日 2025.03.26]、取得先< https://arxiv.org/pdf/1906.12140v1>
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/32
JSTPlus/JMEDPlus/JST7580(JDreamIII)
IEEE Xplore
THE ACM DIGITAL LIBRARY
(57)【特許請求の範囲】
【請求項1】
枝刈りされたブロックチェーントランザクションの検証のための方法であって、
コンピューティング装置のレシーバによって、ブロックチェーンを構成する複数のブロックに含まれるブロックのサブセットを受信するステップであって、各ブロックは1つ以上のブロックチェーンデータ値を含む、ステップと、
前記コンピューティング装置の前記レシーバによって、認証符号を受信するステップと、
前記コンピューティング装置のプロセッサによって、前記認証符号を用いてブロックの前記サブセット内の複数のデータチャンクを識別するステップであって、前記複数のデータチャンクの各データチャンクはブロックの前記サブセットのブロック内の前記1つ以上のブロックチェーンデータ値の1つに含まれている、ステップと、
前記コンピューティング装置の前記プロセッサによって、前記識別された複数のデータチャンク及び噴水符号アルゴリズムを少なくとも用いてトランザクション値を復号するステップと、
前記コンピューティング装置の前記プロセッサによって、前記復号されたトランザクション値を検証するステップと、を含む、方法。
【請求項2】
請求項1に記載の方法において、さらに、
前記コンピューティング装置とインタフェースで接続された表示装置によって、前記復号されたトランザクション値の検証についての結果を表示するステップを含む、方法。
【請求項3】
請求項1に記載の方法において、前記認証符号は、前記複数のブロックのブロック内の前記1つ以上のブロックチェーンデータ値の1つに記憶されている、方法。
【請求項4】
請求項1に記載の方法において、前記復号されたトランザクション値を検証するステップは、前記復号されたトランザクション値に含まれるデジタル署名を暗号鍵ペアの公開鍵を用いて確認することを含む、方法。
【請求項5】
請求項1に記載の方法において、
前記認証符号は製品と関連付けられている製品識別子であり、
前記復号されたトランザクション値は前記製品の保有の移転を示すデータを含む、方法。
【請求項6】
請求項1に記載の方法において、前記ブロックチェーンは枝刈りされたブロックチェーンである、方法。
【請求項7】
枝刈りされたブロックチェーン上でトランザクションについて検証可能なデータチャンクをポストするための方法であって、
コンピューティング装置のレシーバによって、トランザクション値を受信するステップと、
前記コンピューティング装置のプロセッサによって、噴水符号アルゴリズムを用いて前記トランザクション値を複数のデータチャンクに符号化するステップと、
前記コンピューティング装置の前記プロセッサによって、前記複数のデータチャンクに対応する認証符号を識別するステップであって、前記複数のデータチャンクの各データチャンクは前記認証符号の部分を含む、ステップと、
前記コンピューティング装置の前記プロセッサによって、前記枝刈りされたブロックチェーンについて少なくとも2つの新規ブロックを生成するステップであって、前記少なくとも2つの新規ブロックの各々はブロックヘッダ及び1つ以上のブロックチェーンデータ値を含み、前記複数のデータチャンク及び前記認証符号の対応する部分は前記少なくとも2つの新規ブロックの各々の前記1つ以上のブロックチェーンデータ値にわたって記憶されている、ステップと、
前記コンピューティング装置のトランスミッタによって、前記生成された少なくとも2つの新規ブロックを前記枝刈りされたブロックチェーンと関連付けられているブロックチェーンネットワーク内の複数のブロックチェーンノードへと送信するステップと、を含む、方法。
【請求項8】
請求項7に記載の方法において、前記2つの新規ブロックは前記枝刈りされたブロックチェーン内の連続するブロックではない、方法。
【請求項9】
枝刈りされたブロックチェーントランザクションの検証のためのシステムであって、
該システムはコンピューティング装置を含み、
該コンピューティング装置は、レシーバであって、
ブロックチェーンを構成する複数のブロックに含まれるブロックのサブセットであって、各ブロックは1つ以上のブロックチェーンデータ値を含む、ブロックのサブセットと、
認証符号と、を受信する、レシーバと、
プロセッサであって、
前記認証符号を用いてブロックの前記サブセット内の複数のデータチャンクを識別するステップであって、前記複数のデータチャンクの各データチャンクは、ブロックの前記サブセットのブロック内の前記1つ以上のブロックチェーンデータ値の1つに含まれている、ステップと、
前記識別された複数のデータチャンク及び噴水符号アルゴリズムを少なくとも用いてトランザクション値を復号するステップと、
前記復号されたトランザクション値を検証するステップと、を実行する、プロセッサと、を含む、システム。
【請求項10】
請求項9に記載のシステムにおいて、さらに、
前記復号されたトランザクション値の検証についての結果を表示する、前記コンピューティング装置とインタフェースで接続された表示装置を含む、システム。
【請求項11】
請求項9に記載のシステムにおいて、前記認証符号は、前記複数のブロックのブロック内の前記1つ以上のブロックチェーンデータ値の1つに記憶されている、システム。
【請求項12】
請求項9に記載のシステムにおいて、前記復号されたトランザクション値を検証するステップは、前記復号されたトランザクション値に含まれるデジタル署名を暗号鍵ペアの公開鍵を用いて確認することを含む、システム。
【請求項13】
請求項9に記載のシステムにおいて、
前記認証符号は製品と関連付けられている製品識別子であり、
前記復号されたトランザクション値は前記製品の保有の移転を示すデータを含む、システム。
【請求項14】
請求項9に記載のシステムにおいて、前記ブロックチェーンは枝刈りされたブロックチェーンである、システム。
【請求項15】
枝刈りされたブロックチェーン上でトランザクションについて検証可能なデータチャンクをポストするためのシステムであって、
コンピューティング装置と、
前記枝刈りされたブロックチェーンと関連付けられているブロックチェーンネットワークと、
前記ブロックチェーンネットワークに含まれる複数のブロックチェーンノードと、を含み、
前記コンピューティング装置は、
トランザクション値を受信するレシーバと、
プロセッサであって、
噴水符号アルゴリズムを用いて前記トランザクション値を複数のデータチャンクに符号化するステップと、
前記複数のデータチャンクに対応する認証符号を識別するステップであって、前記複数のデータチャンクの各データチャンクは前記認証符号の部分を含む、ステップと、
前記枝刈りされたブロックチェーンについて少なくとも2つの新規ブロックを生成するステップであって、前記少なくとも2つの新規ブロックの各々はブロックヘッダ及び1つ以上のブロックチェーンデータ値を含み、前記複数のデータチャンク及び前記認証符号の対応する部分は前記少なくとも2つの新規ブロックの各々の前記1つ以上のブロックチェーンデータ値にわたって記憶されている、ステップと、を実行する、プロセッサと、
前記生成された少なくとも2つの新規ブロックを前記複数のブロックチェーン
ノードへと送信するトランスミッタと、を含む、システム。
【請求項16】
請求項15に記載のシステムにおいて、前記2つの新規ブロックは前記枝刈りされたブロックチェーン内の連続するブロックではない、システム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、枝刈りされたブロックチェーンにおける過去のトランザクションについての検証に関するのであり、特に、トランザクションをブロックチェーン上に繰り返しポストすることを要せずに検証のために枝刈りされたブロックチェーントランザクションに関して復号をなし得るようにするために噴水符号アルゴリズムを用いることに関する。
【0002】
関連出願の相互参照
本願は、米国特許出願第17/451,329号(2021年10月19日出願)の利益及び優先権を主張する。上記出願の開示全体は参照によってここに取り込まれる。
【背景技術】
【0003】
ブロックチェーンは当初においては、暗号通貨を用いての支払トランザクションをなすために用いる記憶機構として作られた。ブロックチェーンを用いることによって分散化、分散コンピューティング、トランザクション透明性等の幾つもの利点がもたらされる一方で、トランザクションに関与する個人又はエンティティについては匿名性がもたらされる。ブロックチェーンの比較的に選好される特性としてはその記録の不変性が挙げられる:即ち、連鎖の部分とされた全トランザクションが格納されるのであり且つ必要とされる演算力及び帯域制限故に不変性を帯びるのであり、特に連鎖が伸びてブロックチェーンネットワークがより多くのノードを追加していくとこれが強まる。
【0004】
もっとも、より多くのトランザクションが遂行され又は他のデータがブロックチェーン上に記憶されていくと、ブロックチェーンについてのファイルサイズが大幅に増大する。多くの場合においては、古いブロックチェーントランザクションを保持しておく必要性が乏しいことがある。なぜならば、それらのトランザクションにて移転された通貨が既に再度用いられていたのであれば、それらは任意の将来のトランザクション検証にて用いられないことがあるからである。一部のブロックチェーンネットワークでは、一部のノードが、そのようなトランザクションデータを自己のストレージから除くことによって自己のブロックチェーンを枝刈り(prune)することを許されていることがある。このような場合では、ブロックチェーン自体が改変されてはおらず、むしろ枝刈りされたトランザクションについてのデータがノードから欠損しているにすぎず、ノードにおいては相当なデータサイズ削減が結果としてもたらされ得る。一部のノードではブロックチェーンに関しての自己のコピーに枝刈りを施さないのであり、必要に応じて完全な連鎖が保持され且つ利用可能とされることを担保する。
【0005】
どうであれ、一部のエンティティは、エンティティによってアクセス可能なノードから枝刈りされた過去のブロックチェーントランザクションについて検証することを望む場合があり得る。このような場合、枝刈りされたトランザクションについてのトランザクション値はブロックチェーンノードにとって(またそれ故に、トランザクションの検証をなすことを望むエンティティにとっても)完全に利用不能となっていることがある。そのようなエンティティにとっての唯一の措置は、完全なブロックチェーンが利用可能となっているノードからのブロックチェーンの完全なコピーを識別して、そして検証についてトランザクションを識別することである。このような場合、利用できるように完全なブロックチェーンをエンティティに供することを要し、枝刈りをする利点が打ち消され、また、エンティティについては相当なデータストレージ及びブロックチェーンデータの転送用の利用可能帯域が必要となる。
【0006】
よって、ブロックチェーンの完全なコピーを取得すること又はブロックチェーンを枝刈りしていないノードと通信することを要せずに、エンティティがブロックチェーンから枝刈りされた過去のブロックチェーントランザクションを検証することを可能とし得るシステムが必要とされている。
【発明の概要】
【0007】
本開示は、枝刈りされたブロックチェーン上でのトランザクションについて検証可能なデータチャンクをポストすること、並びに、検証可能なデータチャンクを用いて枝刈りされたブロックチェーントランザクションについて検証することに関してのシステム及び方法についての説明を提供する。ブロックチェーンから枝刈りされる任意のトランザクションについては、噴水符号アルゴリズムを用いてそのトランザクションについてのトランザクション値を一連のデータチャンクに復号する。それらのデータチャンクはトランザクションについての認証符号のセットを用いて識別可能であり、そして、ブロックチェーンに規則的にポストされるのであり、任意の所定のブロックに一部のデータチャンクだけをポストでき、データチャンクについて1回以上ポストすることができる。トランザクションを検証することを望んでいるエンティティは、認証符号を用いてトランザクションに関連したデータチャンクを識別でき、十分なデータチャンクが識別されたらば、噴水符号アルゴリズムをもちいてトランザクションを復号できる。そして、エンティティはトランザクション値を検証できる。噴水符号アルゴリズム及びデータチャンクを用いることにより、ブロックチェーンノードについての完全なコピーを識別又は使用することを要さない。また、ブロックチェーンを枝刈りされたままに保つことができ、枝刈りされたトランザクション値の代わりに小さなデータチャンクをポストするだけで足り、時の経過を受けてデータチャンクそれ自体を枝刈りしていくこともできる。したがって、ブロックチェーンに削減されたファイルサイズをもたらすことの利点をノードが享受しつつ、トランザクションは検証可能な状態に保たれる。
【0008】
枝刈りされたブロックチェーントランザクションの検証のための方法は:コンピューティング装置のレシーバによって、ブロックチェーンを構成する複数のブロックに含まれるブロックのサブセットを受信するステップであって、各ブロックは1つ以上のブロックチェーンデータ値を含むステップと、前記コンピューティング装置の前記レシーバによって認証符号を受信するステップと、前記コンピューティング装置のプロセッサによって、前記認証符号を用いてブロックの前記サブセット内の複数のデータチャンクを識別するステップであって、前記複数のデータチャンクの各データチャンクはブロックの前記サブセットのブロック内の前記1つ以上のブロックチェーンデータ値の1つに含まれているステップと、前記コンピューティング装置の前記プロセッサによって、前記識別された複数のデータチャンク及び噴水符号アルゴリズムを少なくとも用いてトランザクション値を復号するステップと、前記コンピューティング装置の前記プロセッサによって、前記復号されたトランザクション値を検証するステップと、を含む。
【0009】
枝刈りされたブロックチェーン上でトランザクションについて検証可能なデータチャンクをポストするための方法は:コンピューティング装置のレシーバによってトランザクション値を受信するステップと、前記コンピューティング装置のプロセッサによって、噴水符号アルゴリズムを用いて前記トランザクション値を複数のデータチャンクに符号化するステップと、前記コンピューティング装置の前記プロセッサによって前記複数のデータチャンクに対応する認証符号を識別するステップであって、前記複数のデータチャンクの各データチャンクは前記認証符号の部分を含む、ステップと、前記コンピューティング装置の前記プロセッサによって、前記枝刈りされたブロックチェーンについて少なくとも2つの新規ブロックを生成するステップであって、前記少なくとも2つの新規ブロックの各々はブロックヘッダ及び1つ以上のブロックチェーンデータ値を含み、前記複数のデータチャンク及び前記認証符号の対応する部分は前記少なくとも2つの新規ブロックの各々の前記1つ以上のブロックチェーンデータ値にわたって記憶されている、ステップと、前記コンピューティング装置のトランスミッタによって、前記生成された少なくとも2つの新規ブロックを前記枝刈りされたブロックチェーンと関連付けられているブロックチェーンネットワーク内の複数のブロックチェーンノードへと送信するステップと、を含む。
【0010】
枝刈りされたブロックチェーントランザクションの検証のためのシステムは、コンピューティング装置を含み、前記コンピューティング装置は、ブロックチェーンを構成する複数のブロックに含まれるブロックのサブセットを受信するレシーバであって、各ブロックは1つ以上のブロックチェーンデータ値、及び認証符号を含む、レシーバと、プロセッサであって、前記認証符号を用いてブロックの前記サブセット内の複数のデータチャンクを識別するステップであって、前記複数のデータチャンクの各データチャンクはブロックの前記サブセットのブロック内の前記1つ以上のブロックチェーンデータ値の1つに含まれている、ステップと、前記識別された複数のデータチャンク及び噴水符号アルゴリズムを少なくとも用いてトランザクション値を復号するステップと、前記復号されたトランザクション値を検証するステップと、を実行するプロセッサと、を含む。
【0011】
枝刈りされたブロックチェーン上でトランザクションについて検証可能なデータチャンクをポストするためのシステムは:コンピューティング装置と、前記枝刈りされたブロックチェーンと関連付けられているブロックチェーンネットワークと、前記ブロックチェーンネットワークに含まれる複数のブロックチェーンノードとを含み、前記コンピューティング装置は、トランザクション値を受信するレシーバと、プロセッサであって、噴水符号アルゴリズムを用いて前記トランザクション値を複数のデータチャンクに符号化するステップと、前記複数のデータチャンクに対応する認証符号を識別するステップであって、前記複数のデータチャンクの各データチャンクは前記認証符号の部分を含む、ステップと、前記枝刈りされたブロックチェーンについて少なくとも2つの新規ブロックを生成するステップであって、前記少なくとも2つの新規ブロックの各々はブロックヘッダ及び1つ以上のブロックチェーンデータ値を含み、前記複数のデータチャンク及び前記認証符号の対応する部分は前記少なくとも2つの新規ブロックの各々の前記1つ以上のブロックチェーンデータ値にわたって記憶されている、ステップと、を実行するプロセッサと、前記生成された少なくとも2つの新規ブロックを前記複数のブロックチェーンへと送信するトランスミッタと、を含む。
【図面の簡単な説明】
【0012】
本開示の範囲は、添付の図面と共に解釈されると、例示的な実施形態についての下記の詳細な記載から最も良く理解される。図面には次の図が含まれる。
【0013】
【
図1】例示的実施形態による、ブロックチェーンにおける枝刈りされたトランザクションの検証のための高レベルシステムアーキテクチャを示すブロック図である。
【
図2】例示的実施形態による
図1のコンピューティングシステムについてのブロック図であって、枝刈りされたブロックチェーントランザクションにおいて検証可能なデータチャンクをポストすること及びその検証をすることについてのブロック図である。
【
図3】例示的実施形態による、ブロックチェーンにおける枝刈りされたトランザクションの検証のための処理について示す流れ図である。
【
図4】例示的実施形態による、枝刈りされたブロックチェーントランザクションについての検証のための例示的方法について示す流れ図である。
【
図5】例示的実施形態による、枝刈りされたブロックチェーン上でトランザクションについて検証可能なデータチャンクをポストするための例示的方法について示す流れ図である。
【
図6】例示的な実施形態による、コンピュータシステムアーキテクチャを示すブロック図である。
【0014】
本開示の更なる応用分野は、下記の詳細な説明から自明である。例示的実施形態の詳細な説明は、例示目的のみを意図しており、必ずしも本開示の範囲を制限することを意図していない。
【発明を実施するための形態】
【0015】
用語解説
ブロックチェーン:ブロックチェーンを基礎とした通貨の全てのトランザクションの公開台帳(public ledger)である。1つ以上のコンピューティング装置は、ブロックチェーンネットワークを含んでよく、これはブロックチェーンにおけるブロックの一部としてトランザクションを処理及び記録するよう構成されてよい。一旦ブロックが完成すると、当該ブロックはブロックチェーンへ追加され、それによってトランザクション記録が更新される。多くの実施形態では、ブロックチェーンは時系列順のトランザクションの台帳であってよいし、ブロックチェーンネットワークによる使用に適した任意の他の順序で提示されてもよい。いくつかの実施形態では、ブロックチェーンで記録されたトランザクションは、宛先アドレスと通貨額とを含んでよい。これによりブロックチェーンは、どれほどの通貨が特定のアドレスに帰属するかを記録する。いくつかの実施形態では、トランザクションは金融関連であってもそうでなくてもよいし、追加情報又は異なる情報(例えばソースアドレス、タイムスタンプ等)を含むことができる。いくつかの実施形態では、ブロックチェーンは追加的に又は代替的に、ほぼ任意の種別のデータ(これは改ざん又は改訂に対して強化された継続的に増加するデータレコードの一覧を維持する分散データベースに配置されるもの又は配置される必要のあるものである)をトランザクションの形態として含んでよい。あるいはブロックチェーンは、プルーフオブワーク(PoW)及び/又はそれに関連付けられた任意の他の適切な検証技術によってブロックチェーンネットワークによって確認及び有効化されることができる。一部の場合、所定のトランザクションについてのデータは更に、トランザクションデータに付加されたトランザクションの直接的な一部ではない追加のデータを含むことができる。一部の例では、そのようなデータをブロックチェーンに含めることは、トランザクションを構成できる。そのような一部の例では、ブロックチェーンは特定のデジタル通貨、仮想通貨、不換(fiat)通貨又は他の種別の通貨に直接的に関連付けられなくてよい。
【0016】
枝刈りされたブロックチェーントランザクションの検証のためのシステム
図1は、噴水符号アルゴリズムを用いてブロックチェーンから枝刈りされたトランザクションについて検証するシステム100について示す。
【0017】
システム100は、1つ以上のブロックチェーンノード102を含むことができる。各ブロックチェーンノード102は、ブロックチェーンネットワーク104の一部であることができる。各ブロックチェーンノード102は、ブロックチェーンの処理及び管理に関連する機能を実行するように構成された
図2及び
図6にて示されているような以下にて詳述されるコンピューティングシステムであることができ、例えば次の事項が含まれ得る:ブロックチェーンデータ値の生成、提案されているブロックチェーントランザクションの検証、デジタル署名の検証、新規ブロックの生成、新規ブロックの確認(validation)、ブロックチェーンのコピーの維持。
【0018】
ブロックチェーンは、少なくとも複数のブロックを備える分散型台帳たり得る。各ブロックは少なくともブロックヘッダ及び1つ以上のデータ値を含んでよい。各ブロックヘッダは少なくともタイムスタンプ、ブロック参照値、及びデータ参照値を含んで良い。タイムスタンプは、ブロックヘッダが生成された時刻とされ得るのであり、また、任意の適切な方法を用いて表され得る(例えば、UNIXタイムスタンプ、DateTime記法等)。ブロック参照値は、ブロックチェーン内の先行ブロックを(例えば、タイムスタンプに基づいて)参照する値とされ得る。いくつかの実施形態では、ブロックヘッダ内のブロック参照値は、各ブロックに先行する一番最近に追加されたブロックのフロックヘッダへの参照とされ得る。例示的実施形態では、ブロック参照値は、一番最近追加されたブロックのブロックヘッダをハッシュすることによって生成されたハッシュ値とされ得る。同様に、データ参照値は、ブロックヘッダを含むブロック内に格納されている1つ以上のデータ値への参照とされ得る。例示的実施形態では、データ参照値は、1つ以上のデータ値をハッシュすることによって生成されたハッシュ値とされ得る。例えば、ブロック参照値は、1つ以上のデータ値を用いて生成されたマークルツリーのルートとされ得る。
【0019】
各ブロックヘッダ内にてブロック参照値及びデータ参照値を用いることの結果として、ブロックチェーンに不変性が与えられ得る。データ値に対しての変更を試みるにはそのブロックについて新たなデータ参照値の生成が要され、そのためには後続ブロックのブロック参照値を新たに生成することが要され、更には後続の各ブロックについて新たなブロック参照値を生成することを要する。これは、変更を恒久的なものとするために、新たなブロックの生成及びブロックチェーンへの追加前に、ブロックチェーンネットワーク104内の一つずつのブロックチェーンノード102に対して実行及び更新されることを要する。演算能力及び通信能力の限界によって、そのような変更は格段に困難なこと又は無理難題となり得るのであり、故にブロックチェーンは不変性を獲得する。
【0020】
いくつかの実施形態では、ブロックチェーンは、2つの異なるブロックチェーンウォレット間にて行われたブロックチェーントランザクションに関する情報を格納するために用いられることができる。ブロックチェーンウォレットは暗号鍵ペアの秘密鍵を含み得るのであり、それはデジタル署名の生成に用いられるのであり、それはブロックチェーントランザクションに関しての支払人の承認としての役割を果たし得るのであり、該デジタル署名は暗号鍵ペアの公開鍵を用いてブロックチェーンネットワーク104によって検証されることができる。一部の場合では、「ブロックチェーンウォレット」との語は秘密鍵を特に指し得る。他の場合では、「ブロックチェーンウォレット」との語は、ブロックチェーントランザクションにて秘密鍵を用いるためにそれを格納するコンピューティング装置(例えば、参加システム106)を指し得る。例えば、各コンピューティング装置の各々は自機用の秘密鍵をそれぞれの暗号鍵ペアについて有していることができ、また、各々はブロックチェーンネットワークと関連付けられているブロックチェーンとのトランザクションにて用いるためのブロックチェーンウォレットとされることができる。コンピューティング装置は、ブロックチェーンウォレットを格納及び活用するのに適した任意のタイプの装置とすることができ、例えば、デスクトップコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、タブレットコンピュータ、携帯電話、スマートフォン、スマートウォッチ、スマートテレビ、ウェアラブルコンピューティング装置、埋込可能コンピューティング装置等とされ得る。
【0021】
ブロックチェーン内に記憶された各ブロックチェーンデータ値は、ブロックチェーントランザクション又は他のデータの記憶に適宜対応し得るのであり、「トランザクション値」とも称され得る。ブロックチェーントランザクションは少なくとも次の事項を含み得る:送信者の秘密鍵を用いて生成された通貨の送信者(例えば、参加システム106)のデジタル署名、受信者の公開鍵を用いて生成された通貨の受信者(例えば、別の参加システム106)のブロックチェーンアドレス、及び移転されるブロックチェーン通貨額又は記憶される他のデータ。ブロックチェーンが通貨とは異なるデータ記憶用途で用いられている場合には、通貨額をそのような他のデータで代替できる。一部のブロックチェーントランザクションにおいてトランザクションは次の事項をも含み得る:ブロックチェーン通貨が現在保管されている送信者の1つ以上のブロックチェーンアドレス(例えば、デジタル署名によってそのような通貨へのアクセスが立証される場合);及び送信者の公開鍵を用いて生成されたアドレスであって送信者によって保持される任意の変更のためのアドレス。将来のトランザクションにて使用可能な暗号通貨が送られたアドレスは「出力」アドレスと称されるのであって、各アドレスは先行するブロックチェーントランザクションの出力を捕捉するために以前用いられた故にそうなるのであり、「未消費トランザクション」ともこれは称されるのであってその通貨が未だ未消費である先行トランザクションにてアドレスへと送られる通貨が存する故にそうなる。一部の場合では、ブロックチェーントランザクションは、エンティティがトランザクションの確認に用いるための送信者の公開鍵を含むこともできる。ブロックチェーントランザクションの伝統的な処理のためには、そのようなデータは、送信者によって又は受信者のどちらかによって、ブロックチェーンネットワーク104内のブロックチェーンノード102へと提供され得る。ノードは送信者のウォレットの暗号鍵ペア内の公開鍵を用いてデジタル署名を検証でき、また、送信者の資金に対してのアクセスを検証できるのであり(例えば、未消費トランザクションは未だ消費されておらず且つ送信者のウォレットと関連付けられているアドレスへと送られた場合)、これはトランザクションの「コンファメーション」処理として知られており、またそして、ブロックチェーントランザクションは新規ブロック内に含められる。伝統的なブロックチェーン実装例では、新規ブロックに対しては、ブロックチェーンへの追加及びブロックチェーンネットワーク104内の全ブロックチェーンノード102への配布前に、ブロックチェーンネットワーク104内の他のノードによって確認され得る。ブロックチェーンデータ値がブロックチェーントランザクションに関するものではなく代わりに他のタイプのデータの記憶に関するものである場合、ブロックチェーンデータ値は依然としてデジタル署名の確認を含むか他の態様で伴うことができる。
【0022】
いくつかの実施形態では、ブロックチェーンネットワーク104は、プロヴェナンス(provenance)ブロックチェーンを運用及び記憶することができる。プロヴェナンスブロックチェーンはサプライチェーンに関するデータを記憶するブロックチェーンであることができ、サプライチェーンにおけるイベントがそこに記憶されることができる。このようなイベントには、例えば、製品の生産、流通エンティティによる積荷、ある格納施設から別の施設への移送、小売業者への配送、小売業者による販売、消費者による再販売、製品を製品グルーピングに追加すること、製品を製品グルーピングから分離すること、製品についての入金取消し等が含まれ得る。一部の場合では、そのようなイベントについてプロヴェナンスブロックチェーンにて記憶されているブロックチェーンデータ値は、イベントに関する詳細情報を含み得る。他の場合では、ブロックチェーンデータ値は、イベントに関する詳細情報についてのハッシュ値を含み得るのであり、詳細情報は別個のデータストレージにて記憶されていることができる。一部の局面では、ドキュメント及び他のデータがブロックチェーンデータ値内に記憶されていることができ、例えば、直接的に記憶されたり、他の箇所に記憶されていることができる基礎となるデータ(例えば、執行済み契約)を検証するために用いることができるハッシュ値を介して記憶されたりすることができ、例えば執行済み契約に関与するエンティティによって保有されていたりすることができる。プロヴェナンスブロックチェーンの使用及び運用に関する追加の情報は、「ブロックチェーンのサプライチェーン用途についての一般的なプロヴェナンス解決策に関する方法及びシステム」と題される米国特許出願第16/875,154号(2020年5月15日出願、“Method and System for Generalized Provenance Solution for Blockchain Supply Chain Applications,” Steven C. Davis et al.)にあり、その全体において参照によりここに取り込まれる。
【0023】
システム100では、1つ以上のブロックチェーンノード102が自己のブロックチェーンのローカルコピーを枝刈りすることができる。ブロックチェーンの枝刈りは、ブロックチェーンノード102によって記憶されているブロックチェーンデータの総データサイズを削減するための努力の一環として1つ以上のトランザクション値をローカルデータストレージから削除することを含み得る。トランザクション値の枝刈りは、任意のブロックヘッダ又はハッシュ値への修正を要する等のブロックチェーン自体に対しての影響を何ら与えない場合がある。一部の場合では、トランザクション値は、ブロックが特定の古さ(例えば、3ヶ月、6ヶ月、1年等)に達した等の所定の期間経過後に枝刈りされ得る。他の場合では、トランザクション値は、それが所定期間にわたってアクセスされなかった際に枝刈りされ得る。例えば、トランザクション値が規則的にブロックチェーンノード102によってアクセスされる又は外部システムによってリクエストされる場合、トランザクション値は枝刈りをされないことがある。
【0024】
もっとも、検証システム108等の第三者が、トランザクション値がブロックチェーンノード102によってブロックチェーンから既に枝刈りされた後にブロックチェーントランザクションを検証することに関心がある場合があり得る。例えば、ブロックチェーンがプロヴェナンスブロックチェーンである場合、検証システム108は贅沢品を中古品として購入しようとしており且つ製品の真正性を検証することを望む消費者とすることができ、該製品は相当に昔に初回購入されたものである場合があり、その結果として該贅沢品に関するトランザクション値がブロックチェーンからブロックチェーンノード102によって枝刈り済みとなっていることがある。このような例では、検証システム108は、枝刈りされたトランザクション値を検証することを要する場合がある。
【0025】
枝刈りされたトランザクション値の検証を可能とするために、噴水符号アルゴリズムがブロックチェーンノード102によって用いられることができる。ブロックチェーンからトランザクション値が枝刈りされるとき、他のブロックチェーンノード102の代理で符号化処理を行うように構成されていることができるブロックチェーンノード102又は別個のブロックチェーンノード102は、Raptor code又はRaptorQ等の噴水符号アルゴリズムを用いてトランザクション値を複数の検証可能なデータチャンクに符号化することができ、これらの符号は、k個に等しいサイズシンボルを備えるデータについての所与のソースブロックを符号化シンボルのシーケンスに符号化する噴水符号である。任意のk個以上の符号化シンボルの受信によって、何らかの非ゼロ確率にてソースブロックの復元が可能となる。参照:Amin Shokrollahi and Michael Luby (2011). "Raptor Codes". Foundations and Trends in Communications and Information Theory. Now Publishers. 6 (3-4):213-322. doi:10.1561/0100000060。ブロックチェーンノード102は、検証可能なデータチャンクを多数生成できるのであり、これらはブロックとも称される。そして、これらのデータチャンクをブロックチェーンにポストできるのであり、ブロックチェーンデータ値は枝刈りされたトランザクション値についての1つ以上の検証可能なデータチャンクを含むことができる。一部の場合では、定期的に新たなブロックチェーンデータ値をポストできるのであり、例えば、毎時、毎日、又は毎週の頻度とすることができる。一部の局面では、ブロックチェーンデータ値にてポストされる検証可能なデータチャンクの個数は、予め定められているもの及び/又は特定のトランザクション値について新たなブロックチェーンデータ値にわたって一貫したものとされることができる。
【0026】
検証システム108は、自己が検証することを望むトランザクション値についての検証可能なデータチャンクを識別することができる。検証可能なデータチャンクが十分にブロックチェーンにて検証システム108によって識別されると、検証システム108は噴水符号アルゴリズムを用いてトランザクション値を復号することができる。例示的な実施形態では、検証システム108は、当初のトランザクション値を構成するソースシンボルのセットよりも僅かに大きな数の検証可能なデータチャンクを識別するように求められることができる。トランザクション値を取得するための検証可能なデータチャンクの復号は、用いられる噴水符号アルゴリズムに依存し得る。例えば、RaptorQが用いられる場合、符号化及び復号の両方に関してXOR演算をデータチャンクに対して用いることができる。検証システム108が当初のトランザクション値を取得すると、検証システム108はその後トランザクション値それ自体を検証することができる。例えば、上述の例では、消費者は、販売者に対する管理の連鎖を担保する等して自己が購入しようとしている贅沢品の真正性を検証することができる。
【0027】
いくつかの実施形態では、枝刈りされたブロックチェーントランザクションについてのデータチャンクは、検証システム108等からのリクエストに応じてのみポストされることができる。例えば、検証システム108は、検証のためにトランザクション値をリクエストすることができ、ブロックチェーンノード102はこれが自己のブロックチェーンデータから枝刈りされたことを識別することができる。そして、ブロックチェーンノード102は、複数の新規ブロックにわたるように、枝刈りされたトランザクションについて検証可能なデータチャンクをブロックチェーンにポストしていくことができる。完全なトランザクション値の代わりにデータチャンクをポストすることによって、トランザクション値が再度ポストされた場合等に結果として生じ得るブロックチェーンの処理におけるエラーを回避しつつ(例えば、トランザクション値が他のブロックチェーンウォレットへと既に移転されたブロックチェーン通貨を消費しているようにみえる場合)、検証システム108は、十分な数のデータチャンクが識別されるとトランザクション値を検証することが依然として可能である。また、データチャンクはブロックチェーンノード102によって枝刈りされることができ、ならびに所定期間経過後等の時間経過後にそれがなされ、及び/又はトランザクション値が成功裏に検証システム108によって復号されたことを検証システム108が示した場合にそれがなされ得る。
【0028】
いくつかの実施形態では、特定のトランザクション値に関してのデータチャンクの識別を支援するために認証符号を用いることができる。このような実施形態では、枝刈りされたブロックチェーントランザクションに関して認証符号を識別することができる。一部の場合では、認証符号は全てのブロックチェーントランザクションに関して識別されることができる。一部の場合では、トランザクション値に関して識別された認証符号は、そのブロックチェーントランザクションについてのブロックチェーンデータ値内に記憶されることができる。一部の局面では、トランザクション値がブロックチェーンデータから枝刈りされた場合、認証符号はブロックチェーンデータ内に保持されることができる。認証符号は、トランザクション値にとって一意的であり且つその識別に用い得る任意の値とされ得るのであり、例えば十分なサイズの整数又は英数型の値とし得る。ブロックチェーンがプロヴェナンスブロックチェーンである場合は、シリアル番号等の一意な製品識別子が認証符号として用いられることができる。そのような実施形態では、検証システム108は、トランザクション値又はデータチャンクをリクエストする際に認証符号を用いることができる。一部の場合では、トランザクション値から符号化されたデータチャンクを伴ってブロックチェーンにポストされるブロックチェーンデータ項目(entry)は、そのトランザクション値に関する認証符号を伴っていることができ、例えば検証システム108によるデータチャンクの識別の容易化を可能とすること等ができる。一部の局面では、検証システム108は、ブロックチェーン自体にて自己が検証したいトランザクション値に関する認証符号を識別でき、或いは、参加システム106等の外部システムからの認証符号を受信することができる。例えば、上述の例では、贅沢品の販売者は、検証システム108に認証符号(例えば、贅沢品のシリアル番号等)を提供でき、該システムは、トランザクション値をリクエストする又は認証符号を用いてトランザクション値についてのデータチャンクを識別することができる。
【0029】
いくつかの実施形態では、基礎にあるトランザクション値に復号するために検証可能なデータチャンクがブロックチェーンにポストされるとき、チャフ(chaffing)及び選り分ける(winnowing)ことをシステム100が用いることもできる。例えば、ブロックチェーンノード102は、チャフ(chaff)データチャンクを、トランザクション値を符号化することで得た検証可能なデータチャンクと共にブロックチェーンデータ項目内へと追加することができ、各データチャンクは符号部分を含む。検証可能なデータチャンクと共に含まれる符号部分はトランザクション値に関する認証符号の部分とし得るのであり、他方では、チャフデータチャンクはランダムに生成される又は認証符号に対応しない符号の部分を含むことができる。このような実施形態では、検証システム108は、認証符号を用いてブロックチェーンデータ項目内の真正データを識別することができ、それによってチャフデータパケットを無視できる。そして、検証システム108は、複数の異なるブロックチェーンデータ値から取得された真正データチャンクを用いてトランザクション値を復号できる。
【0030】
一部の局面では、トランザクション値の識別に用いられる認証符号は、チャフ(chaffing)及び選り分ける(winnowing)処理を用いて真正データチャンクを識別するために用いられる認証符号とは別個のものとすることができる。例えば、特定のトランザクション値に対応するブロックチェーンデータ項目を識別するために用いられる認証符号としてこれを用いるために、トランザクションについて識別番号を識別でき、他方では、製品のシリアル番号は識別されたブロックチェーンデータ項目において真正データチャンクを識別するために用いられることができる。
【0031】
説明されている方法及びシステムは、ブロックチェーンネットワーク104内のブロックチェーンノード102が古いトランザクション値をローカルデータストレージから枝刈りすることを可能にしつつ、検証システム108等のリクエストシステムにその検証のために枝刈りされたトランザクション値を復元するために十分なデータを提供する能力が保たれる。噴水符号アルゴリズムの使用によって、実際のトランザクション値を再度ポストせずに且つデータサイズを増大させずにトランザクション値の復元を担保できるのであり、データチャンク自体を枝刈りすることもでき、ブロックチェーンノード102のためのローカルデータストレージが常にブロックチェーンが枝刈りされていない場合よりも少ないものとなることを担保できる。したがって、説明されている方法及びシステムは、ブロックチェーンを枝刈りして全体的なデータストレージを削減することを依然として可能としつつも、ブロックチェーントランザクションに関して完全な検証を提供することができる。
【0032】
コンピュータシステム
図2は、システム100内のコンピューティングシステム200の実施形態を示す。当業者にとって、
図2に示すコンピューティングシステム200の実施形態が、例示目的のみで提供されることと、本開示の機能を実行するのに適した、コンピューティングシステム200の全ての可能な構成を徹底的に示したものでないこととは自明である。例えば、
図5に示され下記で一層詳細に説明されるコンピュータシステム600が、コンピューティングシステム200の適切な構成であってよい。
図1のシステム100内のブロックチェーンノード102、参加システム106及び検証システム108は、コンピューティングシステム200(例えば、コンピュータシステム600)として実装でき、また、
図2に示される或いは後述される1つ以上の構成要素を含むことができる。
【0033】
コンピューティングシステム200は、受信装置202を含むことができる。受信装置202は1つ以上のネットワークプロトコルを介して1つ以上のネットワーク上でデータを受信するよう構成されてよい。いくつかの例では、受信装置202は無線周波数、ローカルエリアネットワーク、無線エリアネットワーク、セルラ通信ネットワーク、Bluetooth、インターネット等の1つ以上の通信方法を介して、ブロックチェーンノード102、参加システム106、検証システム108、並びに他のシステム及びエンティティからデータを受信するように構成され得る。いくつかの実施形態では、受信装置202は複数の装置(例えば、異なるネットワーク上でデータを受信する異なる受信装置(例えばローカルエリアネットワークでデータを受信する第1の受信装置と、インターネット上でデータを受信する第2の受信装置))を含んでよい。受信装置202は送信される電子的なデータ信号を受信してよい。このとき、受信装置202によるデータ信号の受信によって、データはデータ信号上に重ねられ、復号、解析(パース)、読取り、又は取得されてよい。いくつかの実施形態では、受信装置202は、受信されたデータ信号を解析して、そこに重ねられたデータを取得するための解析モジュールを含んでよい。例えば受信装置202は、受信されたデータ信号を受信し、処理装置によって実行される機能のための利用可能な入力へと変換して本開示の方法及びシステムを実行するよう構成される解析プログラムを含んでよい。
【0034】
受信装置202は、ブロックチェーンノード102によって電子的に送信されたデータ信号を受信するように構成されていることができ、このデータ信号は、ブロックチェーンデータ値、トランザクション値、ブロック、認証符号、検証可能なデータチャンク、コンファメーションメッセージ等と重畳されている又は符号化されているとされ得る。受信装置202は、参加システム106又は検証システム108によって電子的に送信されたデータ信号を受信するように構成されていることができ、このデータ信号は、新たなトランザクション値、トランザクション値についてのリクエスト、検証可能なデータチャンクについてのリクエスト、認証符号、復号されたトランザクション値についての通知等と重畳されている又は符号化されているとされ得る。
【0035】
コンピュータシステム200はまた、通信モジュール204を含んでよい。通信モジュール204は、本開示の機能を実行する際に使用するために、モジュール、エンジン、データベース、メモリ、及びコンピューティングシステム200の他の構成要素の間でデータを転送するよう構成されてよい。通信モジュール204は、1つ以上の通信種別を含んでよく、コンピューティング装置内での通信のために様々な通信方法を使用してよい。例えば、通信モジュール204はバス、接続ピンコネクタ、ワイヤ等を含んでよい。いくつかの実施形態では、通信モジュール204はまた、コンピューティングシステム200の内部構成要素とコンピューティングシステム200の外部構成要素(例えば、外部で接続されたデータベース、表示装置、入力装置等)との間で通信するよう構成されてよい。コンピューティングシステム200はまた、処理装置を含んでよい。処理装置は本開示のコンピューティングシステム200の機能を実行するよう構成されてよい。このことは、当業者にとって自明である。いくつかの実施形態では、処理装置は、処理装置の1つ以上の機能を実行するよう特別に構成された複数のエンジン及び/又はモジュール(例えばクエリモジュール214、生成モジュール216、符号化モジュール218、確認モジュール220等)を含んでよい。本開示のように、「モジュール」との用語は、入力を受信し、当該入力を使用して1つ以上の処理を実行し、且つ出力を提供するよう特別にプログラムされたハードウェア上で実行されるソフトウェア又はハードウェアであってよい。様々なモジュールによって実行される入力、出力及び処理は、本開示に基づいて、当業者にとって自明である。
【0036】
コンピューティングシステム200はブロックチェーンデータ206を含むこともでき、これはコンピューティングシステム200のメモリ212内に記憶される又はコンピューティングシステム200内の別個の領域に記憶される又はそれによってアクセス可能とされることができる。ブロックチェーンデータ206はブロックチェーンを含むことができ、これは複数のブロックから構成されることができ、ブロックチェーンネットワーク104と関連付けられていることができる。ブロックチェーンデータ206は、1つ以上のブロックチェーンウォレットと関連付けられておりコンピューティングシステム200によって用いられ得る任意のデータを追加的に又は代替的に含むことができ、これには次の事項が含まれ得る:暗号鍵ペア、未消費トランザクション出力、デジタル資産額、ブロックチェーンネットワーク104についてのネットワーク識別子、スマート契約、署名生成アルゴリズム、暗号化アルゴリズム、トランザクション口座データ、口座残高、第三者用通信情報等。ブロックチェーンデータ206はまた、検証可能なデータチャンク、認証符号、及び枝刈りされたトランザクション値の検証にて用いられる本明細書にて述べられる他のデータを含み得る。一部の場合では、所定の間隔で、又はブロック追加時若しくはトランザクション値へのアクセス時から所定期間等の所定基準に基づいて、ブロックチェーンデータ206からブロックチェーンデータ値及び/又はトランザクション値を枝刈りすることができる。
【0037】
コンピューティングシステム200は、メモリ212も含み得る。メモリ212は、本開示の機能を実行するときにコンピューティングシステム200が使用するためのデータ(例えば公開鍵、秘密鍵、対称鍵等)を格納するよう構成されてよい。メモリ212は、適切なデータフォーマット方法及びスキーマを用いてデータを格納するよう構成されてよく、また、任意の適切な種別のメモリ(例えば、読み取り専用メモリ、ランダムアクセスメモリ等)であってよい。メモリ212は、例えば暗号鍵及びアルゴリズム、通信プロトコル及び規格、データフォーマット基準及びプロトコル、モジュール用プログラムコード及び処理装置のアプリケーションプログラム、並びに、本開示の機能を実行する際にコンピューティングシステム200によって使用される適切な他のデータを含んでよい。このことは、本開示を読む当業者にとって自明である。いくつかの実施形態では、メモリ212は、構造化照会言語(SQL)を使用するリレーショナルデータベースを含んでよく、記憶された構造化データセットを記憶、識別、修正、更新、アクセス等してよい。メモリ212は、例えば、暗号鍵、ソルト、ナンス、ブロックチェーンノード102及びブロックチェーンネットワーク104のための通信情報、アドレス生成及び検証アルゴリズム、デジタル署名生成及び検証アルゴリズム、参照値生成のためのハッシュアルゴリズム、スマート契約の生成及び実行のためのデータ、構成データ、起動データ、フォーマッティング基準、トランザクション処理規則、噴水符号アルゴリズム、チャフ(chaff)パケット生成規則等を記憶するように構成されてよい。
【0038】
コンピューティングシステム200はまた、クエリモジュール214を含んでよい。クエリモジュール214は、データベース上のクエリを実行して情報を識別するよう構成されてよい。クエリモジュール214は、1つ以上のデータ値又はクエリ文字列を受信してよく、それに基づいて、示されたデータベース(例えば、コンピューティングシステム200のメモリ212)上でクエリ列を実行して、そこに格納された情報を識別してよい。そして、クエリモジュール214は、識別された情報を、必要に応じてコンピューティングシステム200の適切なエンジン又はモジュールへ出力してよい。クエリモジュール214は、例えば、ブロックチェーンデータ206に対してクエリを実行して符号化に用いるためのトランザクション値を識別して検証可能なデータチャンクを取得できる。
【0039】
コンピューティングシステム200はまた、生成モジュール216を含んでよい。生成モジュール216は、本開示の機能を実行するときにコンピューティングシステム200によって使用されるデータを生成するよう構成されてよい。生成モジュール216は、入力値として命令を受信してよいし、命令に基づいてデータを生成してよいし、生成されたデータをコンピューティングシステム200の1つ以上のモジュールへと出力してもよい。例えば、生成モジュール216は、ブロックチェーンデータ値、新規ブロック、ブロックヘッダ、参照値、スマート契約、トランザクションメッセージ、起動イベント等を生成するように構成されていることができる。コンピューティングシステム200の生成モジュール216又は他の処理モジュールは、例えばスマート契約の実行等を介するアクション、又は、起動イベントを維持するため若しくは電子支払トランザクションを開始するために必要となり得る他のアクションを行うようにさらに構成されていることができる。
【0040】
コンピューティングシステム200はまた、符号化モジュール218を含んでよい。符号化モジュール218は、本開示の方法及びシステムの一部として符号化又は復号動作を行うように構成されていることができる。符号化モジュール218は、符号化若しくは復号のためのデータ、並びに、符号化モジュール218による実行のための命令を受信データにて受信することができる。符号化モジュール218は、命令されたように符号化又は復号動作を行って、並びに、結果として得られるデータをコンピューティングシステム200の別のモジュール又はエンジンへと出力することができる。符号化モジュール218は例えば、トランザクション値を符号化して、噴水符号アルゴリズムを用いて検証可能なデータチャンクを取得するように構成されていることができる。符号化モジュール218はまた、噴水符号アルゴリズムを用いて、識別された検証可能なデータチャンクを復号して、トランザクション値を識別するように構成されていることもできる。
【0041】
コンピューティングシステム200はまた、確認モジュール220を含んでよい。確認モジュール220は、本開示の機能の一環として、コンピューティングシステム200について確認を行うように構成されていることができる。確認モジュール220は、確認を行うに際して用いられるデータを含み得る命令を入力として受信でき、リクエストに応じて確認を行うことができ、また、確認の結果をコンピューティングシステム200の別のモジュール又はエンジンへと出力できる。確認モジュール220は、例えば次のことを実行するように構成されていることができる:適切な署名生成アルゴリズム及び鍵を用いてデジタル署名を確認すること、トランザクション値を確認すること、ブロック参照ハッシュを確認すること、データ参照ハッシュを確認すること等。
【0042】
コンピューティングシステム200はまた、送信装置222を含んでよい。送信装置222は、1つ以上のネットワークプロトコルを介して1つ以上のネットワーク上でデータを送信するよう構成されてよい。いくつかの例では、送信装置222は、ローカルエリアネットワーク、無線エリアネットワーク、セルラ通信、Bluetooth、無線周波数、インターネット等の1つ以上の通信方法を介して、ブロックチェーンノード102、参加システム106、検証システム108、並びに他のエンティティへとデータを送信するように構成され得る。いくつかの実施形態では、送信装置222は複数装置(例えば、異なるネットワーク上でデータを送信するための異なる送信装置(例えば、ローカルエリアネットワーク上でデータを送信する第1の送信装置及びインターネット上でデータを送信する第2の送信装置))を含んでよい。送信装置222は、重畳されたデータであって受信コンピューティング装置によって解析されるデータを有するデータ信号を電子的に送信してよい。いくつかの実施形態では、送信装置222は、データを重畳し、符号化し、又はデータを送信に適したデータ信号へフォーマットする1つ以上のモジュールを含んでよい。
【0043】
送信装置222は、ブロックチェーンノード102へとデータ信号を電子的に送信するように構成されていることができ、このデータ信号は、ブロックチェーンデータ値、トランザクション値、ブロック、認証符号、検証可能なデータチャンク、コンファメーションメッセージ、新たなトランザクション値、トランザクション値についてのリクエスト、検証可能なデータチャンクについてのリクエスト、認証符号、復号されたトランザクション値についての通知等と重畳されている又は符号化され得る。送信装置222は検証システム108へとデータ信号を電子的に送信するようにも構成されていることができ、このデータ信号はブロックチェーンデータ値、検証可能なデータチャンク、認証符号等と重畳されている又は符号化され得る。
【0044】
枝刈りされたトランザクション値を検証するための処理
図3は、
図1で示されており且つ上述されたシステム100における、検証可能なデータチャンクの使用を通じてブロックチェーンから枝刈りされたトランザクション値を検証する処理を示す。
【0045】
S302では、ブロックチェーンノード102は、1つ以上のトランザクション値をデータストアから除くことによって、(例えば、ブロックチェーンデータ206内に記憶された)ブロックチェーンのローカルコピーを枝刈りすることができる。ブロックチェーンノード102は、枝刈りされたブロックチェーントランザクションについてデータチャンクをポストするように命令されることができ、例えばトランザクション値がS302にて枝刈りされた時からの所定期間の経過に基づいたり、或いは、検証システム108等の外部システムからの(例えば、認証符号を介して識別される)トランザクション値に関するリクエストの受領の際にこれがなされたりできる。S304では、(例えば、符号化モジュール218を介して)ブロックチェーンノード102は、噴水符号アルゴリズムを用いてトランザクション値を符号化してトランザクション値について複数の検証可能なデータチャンクを識別することができる。
【0046】
S306では、(例えば、クエリモジュール214又は生成モジュール216を介して)ブロックチェーンノード102は、トランザクション値の復号のために、識別可能なデータチャンクの識別にて用いられる認証符号を識別することができる。認証符号は符号部分に分けることができ、各データチャンクは符号部分を伴うことができる。S308では、検証システム108は、認証符号を例えばブロックチェーンノード102から直接的に(例えば、トランザクション値についてのリクエストに対しての応答として)、又は、ブロックチェーンデータ値におけるその識別として、受信することができる。
【0047】
S310では、ブロックチェーンノード102は(例えば、生成モジュール216を介して)、伝統的な方法及びシステムを用いてブロックチェーンのための新規ブロックを生成することができ、新規ブロックは1つ以上のブロックチェーンデータ値を含むことができ、識別可能なデータチャンク及び対応する符号部分はブロックチェーンデータ値にわたって記憶されていることができる。S312では、新規ブロックは伝統的な方法及びシステムを用いてブロックチェーンに追加されることができ、例えば新規ブロックは複数の他のブロックチェーンノード102へと送信されるのであり、それによって確認でき、また、ブロックチェーンネットワーク104内のブロックチェーンノード102へと分配される。
【0048】
トランザクション値を検証するためには、S314では、検証システム108は、適宜に、トランザクション値の枝刈り時以降に追加された又はトランザクション値についてのリクエストをブロックチェーンノード102へ提出した時以降に追加された新規ブロックを識別することができる。検証システム108は、認証符号を用いて、新規ブロックのブロックチェーンデータ項目内のトランザクション値についての検証可能なデータチャンクを識別することもでき、例えば認証符号を含む符号部分を伴う検証可能データチャンクを識別する等してこれをなせる。S316では、検証システム108は(例えば、符号化モジュール218を介して)、識別されたデータチャンク及び噴水符号アルゴリズムを用いてトランザクション値を復号することができる。そして、S318では、検証システム108は(例えば、確認モジュール220を介して)、トランザクション値を検証できるのであり、例えばプロヴェナンスブロックチェーン内の製品の真正性を担保したり或いは第1のブロックチェーンウォレットから第2のブロックチェーンウォレットへと移転されたトランザクション額を確認したりすることによってこれがなされ得る。
【0049】
枝刈りされたブロックチェーントランザクションの検証のための例示的方法
図4は、噴水符号アルゴリズム及び検証可能なデータチャンクの使用を通じてブロックチェーンから枝刈りされたブロックチェーントランザクションの検証のための方法400について示す。
【0050】
S402では、ブロックチェーンを構成する複数のブロックに含まれるブロックのサブセットは、コンピューティング装置(例えば、コンピューティングシステム200、検証システム108等)のレシーバ(例えば、受信装置202)によって受信されることができる。各ブロックは1つ以上のブロックチェーンデータ値を含む。S404では、認証符号が、コンピューティング装置のレシーバによって受信されることができる。S406では、複数のデータチャンクが認証符号を用いてブロックのサブセット内にてコンピューティング装置のプロセッサ(例えば、クエリモジュール214)によって識別されることができる。複数のデータチャンクの各データチャンクはブロックのサブセットのブロック内の1つ以上のブロックチェーンデータ値の1つに含まれている。
【0051】
S408では、トランザクション値が、識別された複数のデータチャンク及び噴水符号アルゴリズムを少なくとも用いてコンピューティング装置のプロセッサ(例えば、符号化モジュール218)によって復号されることができる。S410では、復号されたトランザクション値は、コンピューティング装置のプロセッサ(例えば、確認モジュール220)によって検証されることができる。
【0052】
1つの実施形態では、方法400は、復号されたトランザクション値の検証についての結果を、コンピューティング装置とインタフェースで接続された表示装置によって表示することをさらに含むことができる。いくつかの実施形態では、認証符号は、複数のブロックのブロック内の1つ以上のブロックチェーンデータ値の1つに記憶されていることができる。いくつかの実施形態では、復号されたトランザクション値を検証することは、復号されたトランザクション値に含まれるデジタル署名を暗号鍵ペアの公開鍵を用いて確認することを含むことができる。1つの実施形態では、認証符号は製品と関連付けられている製品識別子とすることができ、また、復号されたトランザクション値は製品の保有の移転を示すデータを含むことができる。いくつかの実施形態では、ブロックチェーンは枝刈りされたブロックチェーンとすることができる。
【0053】
検証可能なデータチャンクをポストする例示的方法
図5は、枝刈りされたブロックチェーン上でトランザクションについて検証可能なデータチャンクをポストする方法500について示すのであり、これは噴水符号アルゴリズムを用いて基礎にあるトランザクション値を復号するために用いられることができる。
【0054】
S502では、トランザクション値が、コンピューティング装置(例えば、コンピューティングシステム200、ブロックチェーンノード102等)のレシーバ(例えば、受信装置202)によって受信されることができる。S504では、トランザクション値が、コンピューティング装置のプロセッサ(例えば、符号化モジュール218)によって噴水符号アルゴリズムを用いて複数のデータチャンクに符号化されることができる。S506では、複数のデータチャンクに対応する認証符号が、コンピューティング装置のプロセッサ(例えば、クエリモジュール214、生成モジュール216等)によって識別されることができる。複数のデータチャンクの各データチャンクは認証符号の部分を含む。
【0055】
S508では、枝刈りされたブロックチェーンについての少なくとも2つの新規ブロックが、コンピューティング装置のプロセッサ(例えば、生成モジュール216)によって生成されることができる。少なくとも2つの新規ブロックの各々はブロックヘッダ及び1つ以上のブロックチェーンデータ値を含み、複数のデータチャンク及び認証符号の対応する部分は少なくとも2つの新規ブロックの各々の1つ以上のブロックチェーンデータ値にわたって記憶されている。S510では、生成された少なくとも2つの新規ブロックは、コンピューティング装置のトランスミッタ(例えば、送信装置222)によって、枝刈りされたブロックチェーンと関連付けられているブロックチェーンネットワーク(例えば、ブロックチェーンネットワーク104)内の複数のブロックチェーンノード(例えば、ブロックチェーンノード102)へと送信されることができる。1つの実施形態では、2つの新規ブロックは枝刈りされたブロックチェーンにて連続していないとすることができる。
【0056】
コンピュータシステムアーキテクチャ
図6は、コンピュータシステム600を示す。そこにおいては、本開示の実施形態又はその一部が、コンピュータ可読コードとして実装されてよい。例えば、
図1のブロックチェーンノード102及び検証システム108並びに
図2のコンピューティングシステム200は、ハードウェア、格納された命令を有する非一時的なコンピュータ可読媒体、又はこれらの組合せを用いてコンピュータシステム600内に実装されてよく、1つ以上のコンピュータシステム又は他の処理システムにおいて実装されてよい。ハードウェアは、
図3~5の方法を実施するために使用されるモジュール及びコンポーネントを具現化することができる。
【0057】
プログラマブルロジックが使用される場合、そのようなロジックは、実行可能なソフトウェアコードで構成された商業的に利用可能な処理プラットフォーム上で実行され、特定用途装置又は特別目的装置となっていてよい(例えばプログラマブルロジックアレイ(PGA)、特定用途向け集積回路(ASIC)等)。当業者は、開示された事項についての実施形態が、様々なコンピュータシステム構成で実行可能であることを理解する。当該システム構成は、マルチコアのマルチプロセッサシステムと、ミニコンピュータと、メインフレームコンピュータと、分散された機能でリンクされ又はクラスタ化されたコンピュータと、実質的に殆どの任意の装置に実装可能な汎用又はミニチュアのコンピュータとを含む。例えば、少なくとも1つのプロセッサ装置及びメモリが、上記実施形態を実装するために使用されてよい。
【0058】
本開示のプロセッサユニット又は装置は、単一のプロセッサ、複数のプロセッサ、又はこれらの組合せであってよい。プロセッサ装置は、1つ以上のプロセッサ「コア」を有してよい。本開示の「コンピュータプログラム媒体」、「非一時的コンピュータ可読媒体」及び「コンピュータ使用可能媒体」との用語は、概して、有形の媒体(例えば取外し可能なストレージユニット618、取外し可能なストレージユニット622及びハードディスクドライブ612内にインストールされたハードディスク等)を指すために使用される。
【0059】
本開示の様々な実施形態は、この例示的なコンピュータシステム600に関して記述される。本開示を読んだ後、当業者にとって、他のコンピュータシステム及び/又はコンピュータアーキテクチャを用いて本開示をどのように実装するかは自明である。動作はシーケンシャルな処理として開示されるが、いくつかの動作は実際には、並行して、同時に及び/又は分散環境で、実行されてよい。このとき、プログラムコードは、単一プロセッサの又はマルチプロセッサのマシンによってアクセスするために、ローカルに又はリモートに格納された状態である。さらに、いくつかの実施形態では、動作の順番は、開示される事項の趣旨を逸脱することなく再配置可能である。
【0060】
プロセッサ装置604は、本開示の機能を実行するよう特別に構成された特定用途又は汎用プロセッサ装置であってよい。プロセッサ装置604は、通信インフラストラクチャ606(例えばバス、メッセージキュー、ネットワーク、マルチコアメッセージパススキーム等)へ接続されてよい。ネットワークは、本開示の機能を実行するのに適した任意のネットワークであってよく、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、無線ネットワーク(例えばWifi)、モバイル通信ネットワーク、衛星ネットワーク、インターネット、光ファイバ、同軸ケーブル、赤外線、無線周波数(RF)又はこれらの任意の組合せを含んでよい。他の適切なネットワークタイプ及び構成は、当業者にとって自明である。コンピュータシステム600はまた、メインメモリ608(例えばランダムアクセスメモリ、読み取り専用メモリ等)を含んでよく、また、補助記憶装置610を含んでよい。補助記憶装置610は、ハードディスクドライブ612と取外し可能なストレージドライブ614(例えばフロッピーディスクドライブ、磁気テープドライブ、光ディスクドライブ、フラッシュメモリ等)とを含んでよい。
【0061】
取外し可能なストレージドライブ614は、周知の方法で、取外し可能なストレージユニット618から読み取りを行ってもよいし、及び/又は、そこへ書き込みを行ってもよい。取外し可能なストレージユニット618は、取外し可能なストレージドライブ614によって読み取られまた書き込まれることができる、取外し可能なストレージ媒体を含んでよい。例えばもし取外し可能なストレージドライブ614がフロッピーディスクドライブ又はUSBポートであれば、取外し可能なストレージユニット618はそれぞれ、フロッピーディスク又はポータブルフラッシュドライブであってよい。1つの実施形態では、取外し可能なストレージユニット618は非一時的な読取り可能記録媒体であってよい。
【0062】
いくつかの実施形態では、補助記憶装置610は代替手段を含み、コンピュータプログラム又は他の命令がコンピュータシステム600(例えば取外し可能なストレージユニット622及びインタフェース620)にロードされることを可能にしてよい。そのような手段の例は、(例えばビデオゲームシステムで見られる)プログラムカートリッジ及びカートリッジインタフェース、取外し可能なメモリチップ(例えばEEPROM、PROM等)及び関連ソケット、他の取外し可能なストレージユニット622及びインタフェース620を含んでよい。このことは当業者にとって自明である。
【0063】
コンピュータシステム600に(例えばメインメモリ608に及び/又は補助記憶装置610に)格納されたデータは、任意のタイプの適切なコンピュータ読取り可能な媒体(例えば光ストレージ(コンパクトディスク、デジタル多目的ディスク、Blu-rayディスク等)又は磁気テープストレージ(例えばハードディスクドライブ))上に格納されてよい。データは任意のタイプの適切なデータベース構成(例えばリレーショナルデータベース、構造化照会言語(SQL)データベース、分散データベース、オブジェクトデータベース等)で構成されてよい。適切な構成及びストレージタイプは、当業者にとって自明である。
【0064】
コンピュータシステム600はまた、通信インタフェース624を含んでよい。通信インタフェース624は、ソフトウェア及びデータが、コンピュータシステム600と外部装置との間で送受信されることを可能にしてよい。例示的な通信インタフェース624は、モデム、ネットワークインタフェース(例えばイーサネットカード)、通信ポート、PCMCIAスロット及びカード等を含んでよい。通信インタフェース624を介して転送されるソフトウェア及びデータは信号形式であってよい。当該信号形式は、電子の、電磁気の、光の、又は当業者にとって自明な他の信号のものであってよい。信号は、通信経路626を介して伝播する。当該経路は信号を搬送するよう構成され、電線、ケーブル、光ファイバ、電話線、携帯電話リンク、無線周波数リンク等を用いて実装されてよい。
【0065】
コンピュータシステム600は、表示インタフェース602を更に含んでよい。表示インタフェース602は、データが、コンピュータシステム600と外部表示部630との間で転送されることを可能にするよう構成されてよい。例示的な表示インタフェース602は、高精細度マルチメディアインタフェース(HDMI)、デジタルビジュアルインタフェース(DVI)、ビデオグラフィックスアレイ(VGA)等を含んでよい。表示部630は任意の適切なタイプのディスプレイであってよく、コンピュータシステム600の表示インタフェース602を介して転送されるデータを表示するのであり、ブラウン管(CRT)ディスプレイ、液晶ディスプレイ(LCD)、発光ダイオード(LED)ディスプレイ、静電容量方式タッチディスプレイ、薄膜トランジスタ(TFT)ディスプレイ等を含む。
【0066】
コンピュータプログラム媒体及びコンピュータ使用可能な媒体は、メモリ(例えばメインメモリ608及び補助記憶装置610)を指してよく、半導体メモリ(DRAM等)であってよい。これらのコンピュータプログラム製品は、コンピュータシステム600へソフトウェアを提供するための手段であってよい。コンピュータプログラム(例えばコンピュータ制御ロジック)は、メインメモリ608及び/又は補助記憶装置610内に格納されてよい。コンピュータプログラムはまた、通信インタフェース624を介して受信されてよい。そのようなコンピュータプログラムは、実行されると、コンピュータシステム600が本開示の方法を実行することを可能にしてよい。特に、コンピュータプログラムは、実行されると、プロセッサ装置604が本明細書で説明するように、
図3~5に示す方法を実施することを可能にすることができる。したがって、そのようなコンピュータプログラムはコンピュータシステム600のコントローラを示す。本開示はソフトウェアを使用して実装される。当該ソフトウェアは、取り外し可能なストレージドライブ614、インタフェース620、及びハードディスクドライブ612又は通信インタフェース624を用いて、コンピュータプログラム製品に格納されてコンピュータシステム600へロードされてよい。
【0067】
プロセッサ装置604は、コンピュータシステム600の機能を実行するよう構成される1つ以上のモジュール又はエンジンを含んでよい。各モジュール又はエンジンは、ハードウェアを用いて実装されてよく、いくつかの実施形態ではソフトウェア(例えばこれは、メインメモリ608又は補助記憶装置610に格納されるプログラムコード又はプログラムに対応する)を用いてよい。そのような実施形態では、プログラムコードは、コンピュータシステム600のハードウェアによる実行前に、プロセッサ装置604によって(例えば、コンパイル用モジュール又はエンジンによって)コンパイルされてよい。例えばプログラムコードは、低レベルの言語へと翻訳されるプログラミング言語で記述されたソースコード(例えばアセンブリ言語又は機械コード)であってよい。これは、プロセッサ装置604及び/又はコンピュータシステム600の任意の追加のハードウェア構成要素によって実行するためのものである。コンパイル処理は、語彙解析と、前処理と、構文解析と、意味解析と、構文主導型翻訳と、符号生成と、符号最適化と、コンピュータシステム600の制御のためにプログラムコードを低レベルの言語へ翻訳して本開示の機能を実行するのに適した任意の他の技術との使用を含んでよい。そのような処理によってコンピュータシステム600が、上記の機能を実行するために一意にプログラムされた特別構成コンピュータシステム600になることは当業者にとって自明である。
【0068】
本開示と一致している技術は、他の特徴のなかでもとりわけ、枝刈りされたブロックチェーントランザクションを検証するための、及び、枝刈りされたブロックチェーン上のトランザクションについての検証可能なデータチャンクをポストするためのシステム及び方法を提供する。本開示のシステム及び方法の様々な例示的実施形態が上述されるが、それらは限定目的でなく例示目的のみで示されることを理解されたい。それは網羅的でなく、本開示を、開示された形態そのものに限定はしない。上記の教示に照らして修正例及び変形例が可能である。範疇又は範囲を逸脱することなく、本開示の実装から修正例及び変形例が得られてよい。