(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6896879
(24)【登録日】2021年6月11日
(45)【発行日】2021年6月30日
(54)【発明の名称】システム、方法、可読媒体
(51)【国際特許分類】
G06Q 20/38 20120101AFI20210621BHJP
G06Q 20/40 20120101ALI20210621BHJP
G06F 16/182 20190101ALI20210621BHJP
【FI】
G06Q20/38 310
G06Q20/40 300
G06F16/182
【請求項の数】15
【全頁数】13
(21)【出願番号】特願2019-552899(P2019-552899)
(86)(22)【出願日】2017年4月11日
(65)【公表番号】特表2020-515961(P2020-515961A)
(43)【公表日】2020年5月28日
(86)【国際出願番号】US2017027010
(87)【国際公開番号】WO2018190809
(87)【国際公開日】20181018
【審査請求日】2019年9月25日
(73)【特許権者】
【識別番号】511076424
【氏名又は名称】ヒューレット−パッカード デベロップメント カンパニー エル.ピー.
【氏名又は名称原語表記】Hewlett‐Packard Development Company, L.P.
(74)【代理人】
【識別番号】100087642
【弁理士】
【氏名又は名称】古谷 聡
(74)【代理人】
【識別番号】100082946
【弁理士】
【氏名又は名称】大西 昭広
(74)【代理人】
【識別番号】100195693
【弁理士】
【氏名又は名称】細井 玲
(74)【代理人】
【識別番号】100099623
【弁理士】
【氏名又は名称】奥山 尚一
(74)【代理人】
【識別番号】100107319
【弁理士】
【氏名又は名称】松島 鉄男
(74)【代理人】
【識別番号】100125380
【弁理士】
【氏名又は名称】中村 綾子
(74)【代理人】
【識別番号】100142996
【弁理士】
【氏名又は名称】森本 聡二
(74)【代理人】
【識別番号】100166268
【弁理士】
【氏名又は名称】田中 祐
(74)【代理人】
【識別番号】100170379
【弁理士】
【氏名又は名称】徳本 浩一
(74)【代理人】
【識別番号】100180231
【弁理士】
【氏名又は名称】水島 亜希子
(74)【代理人】
【識別番号】100096769
【弁理士】
【氏名又は名称】有原 幸一
(72)【発明者】
【氏名】ホルムバーグ,マイク・エイ
(72)【発明者】
【氏名】ゴバック,ナタラジ・クマール
【審査官】
田中 秀樹
(56)【参考文献】
【文献】
米国特許出願公開第2016/0292672(US,A1)
【文献】
特表2018−515833(JP,A)
【文献】
中国特許出願公開第107615317(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06Q 10/00−99/00
G06F 16/00−16/958
(57)【特許請求の範囲】
【請求項1】
2つの参加者間のデータトランザクションの記録を受信し、前記データトランザクションの記録に関連付けられた台帳エントリを作成する、トランザクションエンジンと、
台帳エンジンであって、
前記2つの参加者を含む複数の参加者間の複数のデータトランザクションの記録に関連付けられたブロックチェーンに関連付けられた複数の部分台帳のサブセットに、前記台帳エントリを付加し、ここで、前記複数の部分台帳の各々は前記複数の参加者の各々に関する部分台帳であり、前記複数の部分台帳は異なる部分台帳であり、前記複数の部分台帳は複数の台帳エントリを含み、
前記ブロックチェーンに関連付けられた前記複数の部分台帳の各々に関連付けられ、前記複数の参加者の台帳エントリのロケーションを追跡することができるように構成された目次(ToC)を、前記付加された台帳エントリに関連付けて更新する
台帳エンジンと
を備える、システム。
【請求項2】
前記複数の部分台帳は各々、前記複数の参加者のうちの異なる参加者に関するものであり、前記複数の部分台帳の各々は、該参加者に関する複数の異なる台帳エントリを含む、請求項1に記載のシステム。
【請求項3】
前記複数の部分台帳の各々は、前記ブロックチェーンに関連付けられた前記台帳エントリのうちの全てよりも少ない該台帳エントリを含む、請求項2に記載のシステム。
【請求項4】
前記台帳エンジンは、前記データトランザクションにおいて参加者によって記憶された前記複数の部分台帳の前記サブセットに前記台帳エントリを付加する、請求項1に記載のシステム。
【請求項5】
前記目次は、前記複数の部分台帳の各々のロケーションのディレクトリを含む、請求項1に記載のシステム。
【請求項6】
前記目次は、前記ブロックチェーンにおける前記複数の台帳エントリが作成された順序を含む、請求項5に記載のシステム。
【請求項7】
前記目次は、前記ブロックチェーンにおける前記複数の台帳エントリの正しい作成順序に関連付けられたチェックサムを含む、請求項6に記載のシステム。
【請求項8】
前記複数の部分台帳の各々は、前記目次のコピーを含む、請求項1に記載のシステム。
【請求項9】
前記ブロックチェーンに関連付けられた前記複数の部分台帳の各々に関連付けられた前記目次に対する前記更新は、前記複数の部分台帳の各々に、前記目次の更新されたコピーを配信することを含む、請求項7に記載のシステム。
【請求項10】
前記複数の部分台帳の各々は、前記目次の信頼できるコピーへのポインタを含む、請求項1に記載のシステム。
【請求項11】
コンピューティングデバイスが、複数の参加者間の複数のトランザクションに関するブロックチェーン台帳に関連付けられた複数の部分台帳について、前記複数の参加者の台帳エントリの記録のロケーションを追跡できるように構成された目次(ToC)を作成することと、
前記コンピューティングデバイスが、前記複数の部分台帳の各々を関連ストレージデバイスに割り当てることと、
前記コンピューティングデバイスが、前記複数の部分台帳の各々の前記関連ストレージデバイスに前記目次を提供することと、
前記コンピューティングデバイスが、前記複数の参加者のうちの2つの参加者間の前記ブロックチェーン台帳に関連付けられた新たなトランザクションに応答して、該2つの参加者の一方に関連付けられた第1の部分台帳のトランザクションの記録及び該2つの参加者の他方に関連付けられた第2の部分台帳のトランザクションの記録を更新することと、
前記コンピューティングデバイスが、前記新たなトランザクションに従って、前記複数の部分台帳の各々の前記関連付けられたストレージデバイスに記憶された前記目次を、前記新たなトランザクションの記録のロケーションを追跡できるように更新することと
を含む方法。
【請求項12】
前記ブロックチェーン台帳は、複数のトランザクション参加者間の複数のトランザクションに関する情報を含む、請求項11に記載の方法。
【請求項13】
前記コンピューティングデバイスが、前記複数の部分台帳の各々を関連ストレージデバイスに割り当てることは、前記複数のトランザクションの各々における前記参加者を識別することを含む、請求項12に記載の方法。
【請求項14】
前記複数のトランザクション参加者の各々は、前記コンピューティングデバイスが、自身の関連付けられたトランザクションに関連付けられた前記部分台帳に、前記関連ストレージデバイスを提供する、請求項13に記載の方法。
【請求項15】
プロセッサによって実行可能な、
2つの参加者間のデータトランザクションの記録を受信する命令と、
前記データトランザクションの前記記録に関連付けられた台帳エントリを作成する命令と、
前記2つの参加者を含む複数の参加者間の複数のデータトランザクションの記録に関連付けられたブロックチェーンに関連付けられた複数の部分台帳のサブセットに、前記台帳エントリを付加し、ここで、前記複数の部分台帳の各々は前記複数の参加者の各々に関する部分台帳であり、前記複数の部分台帳は異なる部分台帳であり、前記複数の部分台帳は複数の台帳エントリを含むものである命令と、
前記ブロックチェーンに関連付けられた前記複数の部分台帳の各々に関連付けられ、前記複数の参加者の前記複数の台帳エントリのロケーションを追跡することができるように構成された目次(ToC)を、前記付加された台帳エントリに関連付けて更新する命令と
を記憶する、非一時的機械可読媒体。
【発明の詳細な説明】
【背景技術】
【0001】
ブロックチェーンは、絶え間なく増大する順序付けられた台帳エントリ(ledger entry)のリストを維持する分散データベースである。各エントリは、タイムスタンプと、以前のブロックへのリンクとを含む。参加者(participants)間でトランザクションが生じると、これらの参加者と、トランザクションの詳細、例えば、データ変換、権限の移転、ログ記録等とを識別する台帳エントリが作成される。
【0002】
添付図面において、同様の参照符号は、同様のコンポーネント又はブロックを指す。以下の詳細な説明は、図面を参照する。
【図面の簡単な説明】
【0003】
【
図1】一例示の分散台帳ブロックチェーンのブロック図である。
【
図3】ブロックチェーンの分散部分台帳の作成を提供する方法の一例のフローチャートである。
【
図4】部分台帳を提供する一例示のコンピューティングデバイスのブロック図である。
【発明を実施するための形態】
【0004】
いくつかの状況では、トランザクション詳細は、ブロックチェーンストレージに記録することができる。ブロックチェーンは、多くの場合、複数の参加者によって制御される複数のロケーションによって分散及び記憶される。この分散が理由で、ブロックチェーンは、データの改変に対して本質的に耐性がある。台帳エントリ内のデータは、一度記録されると、遡及的に変更することができない。ブロックチェーンデータベースは、ピアツーピアネットワーク及び分散タイムスタンプサーバの使用を通じて、自律的に管理される。それゆえ、ブロックチェーンは、二当事者間のトランザクションを、効率的に、及び、検証可能かつ永久的な方法において記録することができる分散台帳である。
【0005】
ブロックチェーン技術の実施は、ブロックチェーンコミュニティ内の各参加者が適切な権限及びトランザクションの履歴を検証(validate)することができるように、タイムスタンプ付与される共通台帳の作成を必要とする。ブロックチェーンサイズが各新たな権限者/ノード又は各新たなトランザクションとともに増大するにつれて、共通台帳の多重コピーを維持することには、より多量のデジタルストレージ空間を必要とする可能性がある。それゆえ、ブロックチェーン技術のための分散台帳要件は、データストレージ及び処理帯域幅に対し大きな負担を課す。目次(ToC:table of contents)が台帳それ自体よりも小さいため、トランザクション参加者及び/又は権限者間でToC及び部分台帳ストレージを分散させることによって、台帳ストレージの効率性を大幅に高めることができるとともに、この効率性により、データストレージボトルネックを緩和することができる。また、この手法は、ブロックチェーン技術の実施要件である、連続的な分散台帳バリデーションの能力を維持する。
【0006】
連続するトランザクションにわたってブロックチェーンのサイズが増大するにつれて、ストレージ要件は、トランザクションのブロックチェーン台帳全体の多数のコピーを維持するという要件が理由で、指数関数的に増大する。完全な複製コピーが、各ロケーションにおいて及び/又は各トランザクション参加者によって記憶されることが意図される。それゆえ、ブロックチェーンに関連付けられたトランザクションへの各新たな参加者は、全ての参加者のストレージ要件に加えられる。
【0007】
各参加者に、自身のトランザクションに関連付けられた台帳エントリのみを記憶させることによって、これらのストレージ要件は、大幅に低減される。各ストレージロケーションは、ブロックチェーン全体の完全なコピーを維持するのではなく、目次(ToC)を用いて、他のブロックチェーン参加者と、当該他のブロックチェーン参加者のトランザクション台帳エントリについてのストレージロケーションとを追跡することができる。ToCは、各部分台帳ロケーションにおいて記憶された個々のコピーを有することができ、及び/又は、
信頼できるコピー(authoritative copy)を1つ以上のロケーションに記憶することができる一方で、他の部分台帳ロケーションは、これらの
信頼できるコピーへのリンク及び/又はポインタを維持する。部分分散台帳は静的状態を維持し、どこを及びいずれのノードにおいてToCが規定するかのみが変化するので、ToCは、タイムスタンプ付与が必要な唯一のコンポーネントとすることができる。現行のブロックチェーン分散台帳は、全てのトランザクションの「誰(Who)」及び「何(What)」を覚えておく(remember)。分散部分台帳は、全てのトランザクションの「誰」を覚えておくが、「何」はその参加者に関連するので、「何」のみを記憶する。
【0008】
図1は、一例示の分散台帳ブロックチェーン100のブロック図である。ブロックチェーン100は、複数の参加者110(A)〜110(E)に関連付けることができる。参加者110(A)〜110(E)は、例えば、ユーザ、ノード、コンピューティングデバイス、プロセス、ストレージデバイス、アプリケーション等を含むことができる。参加者110(A)〜110(E)の各々は、複数の台帳エントリ120(A)〜120(D)のうちの少なくとも1つと、目次(ToC)130とを記憶することができる。各参加者110(A)〜110(E)は、各々、当該参加者に関連した台帳エントリと、完全なブロックチェーンのためのToC130とを記憶する。例えば、ノード110(A)はユーザデバイスを表すことができ、ノード110(B)はプリンタを表すことができる。ノード110(A)からノード110(B)へのプリントジョブを、ノード110(A)及び110(B)において、台帳エントリ120(A)としてブロックチェーン100に記憶することができる。目次130を更新して、ノード110(A)〜110(E)の全てにわたってこの新たな台帳エントリを反映させることができる。後続のトランザクションは、プリンタであるノード110(B)が、台帳エントリ120(A)におけるトランザクションを含むジョブのログ記録を、ノード110(D)によって表される分析プロセスにサブミットすることを含むことができる。また、このより早期のトランザクションに関連したデータの使用を、ブロックチェーン100に含めるとともに、ノード110(B)及び110(D)において記憶された台帳エントリ120(B)に記録することができる。
【0009】
同様に、ノード110(C)は第2のユーザを表すことができ、ノード110(E)は第2のプリンタを表すことができ、第2のプリントジョブがノード110(C)及び110(E)において記憶された台帳エントリ120(C)としてブロックチェーン100に記録されている。第2のプリンタノード110(E)は、同様のジョブのログ記録を、ノード110(D)によって表される分析プロセスにサブミットすることができ、このログ記録の詳細は、ノード110(D)及び110(E)において台帳エントリ120(D)に記録することができる。ここでもまた、ToC130は、台帳エントリ120(C)及び120(D)に記録されたトランザクションについて、ノード110(A)〜110(E)の全てにわたって更新される。ノード110(A)〜110(E)のうちの任意のものが、ToC130に記憶されたロケーション及び保有者詳細に従って、他のノードから台帳エントリを要求することによって、ブロックチェーン100全体を再構築することができる。ToC130は、ブロックチェーン100全体のために、チェックサム等のエラーチェック及びバリデーション情報を更に含むことができる。
【0010】
図2は、一例示の部分台帳システム200のブロック図である。システム200は、メモリ215を備えるコンピューティングデバイス210を備えることができる。コンピューティングデバイス210は、例えば、汎用コンピュータ及び/又は専用コンピュータ、サーバ、メインフレーム、デスクトップ、ラップトップ、タブレット、スマートフォン、ゲームコンソール、プリンタ、及び/又は、本明細書において記載される実施態様を提供することに整合した計算能力を提供することが可能である他の任意のシステムを含むことができる。コンピューティングデバイス210は、メモリ215に、トランザクションエンジン220と、台帳エンジン225とを記憶することができる。
【0011】
システム200のエンジン220、225の各々は、ハードウェア及びプログラミングの任意の組み合わせを含むことで、それぞれのエンジンの機能を実施することができる。本明細書において記載される例では、ハードウェア及びプログラミングのそのような組み合わせは、複数の異なる方法において実施することができる。例えば、エンジンのプログラミングは、非一時的機械可読ストレージ媒体上に記憶されたプロセッサ実行可能命令とすることができ、エンジンのハードウェアは、これらの命令を実行する処理リソースを含むことができる。そのような例では、機械可読ストレージ媒体は、処理リソースによって実行されると、エンジン220、225を実施する命令を記憶することができる。そのような例では、システム200は、命令と、命令を実行する処理リソースとを記憶する機械可読ストレージ媒体を含むことができ、又は、機械可読ストレージ媒体は、システム200及び処理リソースとは別個ではあるが、これらにとってアクセス可能であるものとすることができる。
【0012】
トランザクションエンジン220は、2つの参加者間のデータトランザクションの記録を受信し、このデータトランザクションの記録に関連付けられた台帳エントリを作成することができる。例えば、ノード110(A)及びノード110(B)は、或るトランザクションに参加することができ、その結果、トランザクション記録230がブロックチェーン100の台帳エントリ120(A)に記憶される。トランザクションエンジン220は、台帳エントリを作成するための妥当な(valid)ブロックチェーンリンクを作成するために、トランザクション記録を、以前の台帳エントリのハッシュとともにパッケージングすること等によって、ブロックチェーン100内に適切に含めるためにトランザクション記録230を処理することができる。
【0013】
台帳エンジン225は、ブロックチェーンに関連付けられた複数の部分台帳のサブセットに台帳エントリを付加し、このブロックチェーンに関連付けられた複数の部分台帳の各々に関連付けられた目次を更新することができる。例えば、ノード110(A)及び110(B)は、自身のトランザクションについて新たに作成された台帳エントリ120(A)を記憶することができる一方、ブロックチェーン100に関連付けられた他のノードはこれを記憶する場合も記憶しない場合もある。いくつかの実施態様では、トランザクション参加者は、ブロックチェーン100の全てのノードを記憶することを選好する場合がある一方、他の参加者は、自身のトランザクションに関連した台帳エントリのみを記憶する。それゆえ、各ノードは、台帳全体か、又は、ブロックチェーンに関連付けられた台帳エントリのうちの全てよりも少ない台帳エントリを含む部分台帳かのいずれかを維持することができる。
【0014】
いくつかの実施態様では、複数の部分台帳の各々は、目次のコピーを含むことができる。台帳エンジン225による、ブロックチェーンに関連付けられた複数の部分台帳の各々に関連付けられた目次に対する更新は、複数の部分台帳の各々に、目次の更新されたコピーを配信することを含むことができ、及び/又は、目次を更新するために、複数の部分台帳の各々に、新たな台帳エントリに関連付けられた情報を配信することを含むことができる。いくつかの実施態様では、複数の部分台帳の各々は、目次の
信頼できるコピーへのリンクを含む。例えば、ブロックチェーンに関連付けられた第1の参加者ノード(例えば、ノード110(A))は、目次130の
信頼できるコピーを維持することができる。いくつかの実施態様では、部分台帳を含む各ノードは、目次のリンク及び/又はコピーを維持することができ、そのコピーが目次の
信頼できるコピーに一致することを定期的に検証することができる。例えば、ノードは、
信頼できるコピーの提供を要求することができ、及び/又は、チェックサム及び/又はデジタル署名等の検証データを要求することができる。
【0015】
目次は、複数の部分台帳の各々のロケーション(例えば、デバイス210のメモリ215等のストレージロケーション)のディレクトリ、及び/又は、ブロックチェーンにおける複数の台帳エントリの順序を含むことができる。いくつかの実施態様では、目次は、ブロックチェーンにおける複数の台帳エントリの正しい順序に関連付けられたチェックサムを含むことができる。
【0016】
図2には1つのコンピューティングデバイス210が示されているものの、システム200の或る特定の実施態様は、2つ以上のコンピューティングデバイス210を含むことができる。コンピューティングデバイスのうちの少なくとも1つは、例えば、少なくとも1つのサーババンク、コンピュータバンク、データセンタ、及び/又は他の配置構成において利用及び構成することができる。例えば、複数のコンピューティングデバイスは共同して、クラウドコンピューティングリソース、グリッドコンピューティングリソース、及び/又は他の任意の分散コンピューティング配置構成を含むことができる。そのような複数のコンピューティングデバイスは、単一の設置箇所に配置することができ、及び/又は、多くの異なる地理的ロケーション間で分散させることができる。
【0017】
図3は、ブロックチェーンの分散部分台帳の作成を提供する一例示の方法300のフローチャートである。方法300の実行は、コンピューティングデバイス210を参照して以下に記載されるものの、方法300の実行のために他の適したコンポーネントを用いることができる。
【0018】
方法300は、ステージ305において開始し、コンピューティングデバイス210が複数の部分台帳についての目次(ToC)を作成することができるステージ315に移行することができる。例えば、複数のノード110(A)〜110(E)を、ブロックチェーン100の一部分を記憶する役割を担うものとして識別することができる。コンピューティングデバイス210は、ブロックチェーン100によって記録された各トランザクションについての各台帳エントリを検査し、ノード110(A)〜110(E)のうちのいずれのものが各トランザクションにおいて関与していたのかを判断することができる。
図1の例では、台帳エントリ120(A)は参加者ノード110(A)及び110(B)に割り当てることができ、台帳エントリ120(B)は参加者ノード110(B)及び110(D)に割り当てることができ、以下同様である。特定のネットワークにアタッチされたストレージデバイス及び/又はデバイス上メモリ等の、ブロックチェーン100における各参加者についてのストレージロケーションを確立することができる。その後、台帳エントリロケーション及び正しいトランザクション順序を用いて、ToCファイル、データベースエントリ、又は他の記録タイプを確立することができる。
【0019】
その後、方法300は、コンピューティングデバイス210が複数の部分台帳の各々を関連ストレージデバイスに割り当てることができるステージ320に進行することができる。ブロックチェーン100の台帳は、ノード110(A)〜110(E)によって表される複数のトランザクション参加者間の複数のトランザクションに関する情報を含むことができる。複数のトランザクション参加者の各々は、自身の関連付けられたトランザクションに関連付けられた部分台帳に、関連ストレージデバイスを提供することができる。複数の部分台帳の各々を関連ストレージデバイスに割り当てることは、複数のトランザクションの各々における参加者を識別することを含むことができる。例えば、台帳エントリ120(A)は、トランザクションにおける参加者としてのノード110(A)及び110(C)のストレージロケーションに割り当てることができ、このトランザクションの詳細が台帳エントリ120(A)に記憶されるとともにそれらのストレージロケーションに記憶される。
【0020】
その後、方法300は、コンピューティングデバイス210が、複数の部分台帳の各々の関連ストレージデバイスに目次を提供することができるステージ325に進行することができる。いくつかの実施態様では、複数の部分台帳の各々は、目次のコピーを含むことができる。目次の提供は、複数の部分台帳の各々に、目次の更新されたコピーを配信することを含むことができ、及び/又は、目次を更新するために、複数の部分台帳の各々に、新たな台帳エントリに関連付けられた情報を配信することを含むことができる。いくつかの実施態様では、複数の部分台帳の各々は、目次の
信頼できるコピーへのリンクを含む。例えば、ブロックチェーンに関連付けられた第1の参加者ノード(例えば、ノード110(A))は、目次130の
信頼できるコピーを維持することができる。いくつかの実施態様では、部分台帳を含む各ノードは、目次のリンク及び/又はコピーを維持することができ、そのコピーが目次の
信頼できるコピーに一致することを定期的に検証することができる。例えば、ノードは、
信頼できるコピーの提供を要求することができ、及び/又は、チェックサム及び/又はデジタル署名等の検証データを要求することができる。
【0021】
目次は、複数の部分台帳の各々のロケーション(例えば、デバイス210のメモリ215等のストレージロケーション)のディレクトリ、及び/又は、ブロックチェーンにおける複数の台帳エントリの順序を含むことができる。いくつかの実施態様では、目次は、ブロックチェーンにおける複数の台帳エントリの正しい順序に関連付けられたチェックサムを含むことができる。
【0022】
その後、方法300は、コンピューティングデバイス210が、ブロックチェーン台帳に関連付けられたトランザクションに応答して、第1の部分台帳及び第2の部分台帳を更新することができるステージ330に進行することができる。例えば、ノード110(A)及びノード110(B)は、或るトランザクションに参加することができ、その結果、トランザクション記録230がブロックチェーン100の台帳エントリ120(A)に記憶される。トランザクションエンジン220は、台帳エントリを作成するための妥当なブロックチェーンリンクを作成するために、トランザクション記録を、以前の台帳エントリのハッシュとともにパッケージングすること等によって、ブロックチェーン100内に適切に含めるためにトランザクション記録230を処理することができる。
【0023】
その後、方法300は、コンピューティングデバイス210が、トランザクションに従って、複数の部分台帳の各々の関連付けられたストレージデバイスに記憶された目次を更新することができるステージ335に進行することができる。台帳エンジン225による、ブロックチェーンに関連付けられた複数の部分台帳の各々に関連付けられた目次に対する更新は、複数の部分台帳の各々に、目次の更新されたコピーを配信することを含むことができ、及び/又は、目次を更新するために、複数の部分台帳の各々に、新たな台帳エントリに関連付けられた情報を配信することを含むことができる。いくつかの実施態様では、複数の部分台帳の各々は、目次の
信頼できるコピーへのリンクを含む。
【0024】
その後、方法300は、ステージ350において終了することができる。
【0025】
図4は、ブロックチェーンの部分台帳を提供する一例示のコンピューティングデバイス400のブロック図である。コンピューティングデバイス400は、プロセッサ410と、非一時的機械可読ストレージ媒体を含むメモリ415とを備えることができる。メモリ415は、データトランザクション記録受信命令432、台帳エントリ作成命令434、台帳エントリ付加命令436、及び目次更新命令438等の複数のプロセッサ実行可能命令を含むことができる。いくつかの実施態様では、命令432、434、436、438は、単一のコンピューティングデバイス400に関連付けることができ、及び/又は、例えば直接接続、バス、又はネットワークを介して、異なるコンピューティングデバイス間で通信可能に結合することができる。
【0026】
プロセッサ410は、中央処理装置(CPU)、半導体ベースマイクロプロセッサ、プログラマブルコンポーネント、例えば、コンプレックスプログラマブルロジックデバイス(CPLD)、及び/又は、フィールドプログラマブルゲートアレイ(FPGA)、又は機械可読記憶媒体420に記憶された命令の索出及び実行に適した他の任意のハードウェアデバイスを含むことができる。特に、プロセッサ110は、命令432、434、436、438を、フェッチ、復号、及び実行することができる。
【0027】
実行可能命令432、434、436、438は、機械可読記憶媒体415の任意の部分及び/又はコンポーネントに記憶されるとともに、プロセッサ410によって実行可能であるロジックを含むことができる。機械可読記憶媒体415は、揮発性及び/又は不揮発性の双方のメモリ及びデータ記憶コンポーネントを含むことができる。揮発性コンポーネントは、電力の消失時にデータ値を保持しないコンポーネントである。不揮発性コンポーネントは、電力の消失時にデータを保持するコンポーネントである。
【0028】
機械可読記憶媒体415は、例えば、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、ハードディスクドライブ、ソリッドステートドライブ、USBフラッシュドライブ、メモリカードリーダを介してアクセスされるメモリカード、関連付けられたフロッピーディスクドライブを介してアクセスされるフロッピーディスク、光学ディスクドライブを介してアクセスされる光学ディスク、適切なテープドライブを介してアクセスされる磁気テープ、及び/又は他のメモリコンポーネント、及び/又は任意の2つ以上のこれらのメモリコンポーネントの組み合わせを含むことができる。加えて、RAMは、例えば、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)、及び/又は磁気ランダムアクセスメモリ(MRAM)及び他のそのようなデバイスを含むことができる。ROMは、例えば、プログラマブルリードオンリメモリ(PROM)、消去可能プログラマブルリードオンリメモリ(EPROM)、電気的消去可能プログラマブルリードオンリメモリ(EEPROM)、及び/又は他の同様のメモリデバイスを含むことができる。
【0029】
データトランザクション記録受信命令432は、2つの参加者間のデータトランザクションの記録を受信することができる。例えば、ノード110(A)及びノード110(B)は、或るトランザクションに参加することができ、その結果、トランザクション記録230がブロックチェーン100の台帳エントリ120(A)に記憶される。トランザクションエンジン220は、台帳エントリを作成するための妥当なブロックチェーンリンクを作成するために、トランザクション記録を、以前の台帳エントリのハッシュとともにパッケージングすること等によって、ブロックチェーン100内に適切に含めるためにトランザクション記録230を処理することができる。
【0030】
台帳エントリ作成命令434は、データトランザクションの記録に関連付けられた台帳エントリを作成することができる。例えば、台帳エントリ作成命令434は、台帳エントリ120(A)等の台帳エントリを作成するための妥当なブロックチェーンリンクを作成するために、トランザクション記録を、以前の台帳エントリのハッシュとともにパッケージングすること等によって、ブロックチェーン100内に適切に含めるためにトランザクション記録230を処理することができる。
【0031】
台帳エントリ付加命令436は、ブロックチェーンに関連付けられた複数の部分台帳のサブセットに台帳エントリを付加することができる。例えば、台帳エントリは、特定の参加者のノードにおける、ブロックチェーンに関連付けられた複数の部分台帳のサブセットに追加することができる。例えば、ノード110(A)及び110(B)は、自身のトランザクションについて新たに作成された台帳エントリ120(A)を記憶することができる一方、ブロックチェーン100に関連付けられた他のノードはこれを記憶する場合も記憶しない場合もある。いくつかの実施態様では、トランザクション参加者は、ブロックチェーン100の全てのノードを記憶することを選好する場合がある一方、他の参加者は、自身のトランザクションに関連した台帳エントリのみを記憶する。それゆえ、各ノードは、台帳全体か、又は、ブロックチェーンに関連付けられた台帳エントリのうちの全てよりも少ない台帳エントリを含む部分台帳かのいずれかを維持することができる。
【0032】
目次更新命令438は、ブロックチェーンに関連付けられた複数の部分台帳の各々に関連付けられた目次を更新することができる。例えば、いくつかの実施態様では、複数の部分台帳の各々は、目次のコピーを含むことができる。台帳エンジン225による、ブロックチェーンに関連付けられた複数の部分台帳の各々に関連付けられた目次に対する更新は、複数の部分台帳の各々に、目次の更新されたコピーを配信することを含むことができ、及び/又は、目次を更新するために、複数の部分台帳の各々に、新たな台帳エントリに関連付けられた情報を配信することを含むことができる。いくつかの実施態様では、複数の部分台帳の各々は、目次の
信頼できるコピーへのリンクを含む。例えば、ブロックチェーンに関連付けられた第1の参加者ノード(例えば、ノード110(A))は、目次130の
信頼できるコピーを維持することができる。いくつかの実施態様では、部分台帳を含む各ノードは、目次のリンク及び/又はコピーを維持することができ、そのコピーが目次の
信頼できるコピーに一致することを定期的に検証することができる。例えば、ノードは、
信頼できるコピーの提供を要求することができ、及び/又は、チェックサム及び/又はデジタル署名等の検証データを要求することができる。
【0033】
目次は、複数の部分台帳の各々のロケーション(例えば、デバイス210のメモリ215等のストレージロケーション)のディレクトリ、及び/又は、ブロックチェーンにおける複数の台帳エントリの順序を含むことができる。いくつかの実施態様では、目次は、ブロックチェーンにおける複数の台帳エントリの正しい順序に関連付けられたチェックサムを含むことができる。
【0034】
開示された例は、ドキュメント要素の再位置決めのためのシステム、デバイス、コンピュータ可読記憶媒体、及び方法を含むことができる。説明のために、或る特定の例が、図面に示すコンポーネントを参照して記載されている。一方で、図示されたコンポーネントの機能は、重複している場合があり、より少数の又はより多数の要素及びコンポーネントにおいて存在する場合がある。さらに、図示された要素の機能の全て又は部分は、いくつかの地理的に分散したロケーション間に共存又は分散することができる。その上、開示された例は、種々の環境において実施することができ、図示された例には限定されない。
【0035】
その上、明細書及び添付の特許請求の範囲において用いられる場合、文脈がそうではないことを示さない限り、単数形「一(a, an)」及び「その(the)」は、複数形も含むことを意図される。加えて、種々の要素を説明するのに第1、第2等の用語が本明細書において用いられる場合があるものの、これらの要素は、これらの用語によって限定されるべきものではない。そうではなく、これらの用語は、或る要素を別の要素から区別するためにのみ用いられる。
【0036】
さらに、図面に関連して説明される一連の動作は、例であり、限定するものとは意図されない。開示される例の範囲から逸脱することなく、追加の動作若しくはより少数の動作又は動作の組み合わせを用いることができ、又はこれらの動作は変わる場合がある。したがって、本開示は、単に実施態様の可能な例に言及したものであり、説明される例に対して、多数の変形及び変更を行うことができる。全てのそのような変更及び変形は、本開示の範囲内に含まれるとともに、添付の特許請求の範囲によって保護されることを意図される。
なお、出願当初の特許請求の範囲の記載は以下の通りである。
請求項1:
トランザクションエンジンであって、
2つの参加者間のデータトランザクションの記録を受信し、
前記データトランザクションの前記記録に関連付けられた台帳エントリを作成する、トランザクションエンジンと、
台帳エンジンであって、
ブロックチェーンに関連付けられた複数の部分台帳のサブセットに前記台帳エントリを付加し、
前記ブロックチェーンに関連付けられた前記複数の部分台帳の各々に関連付けられた目次を更新する、
台帳エンジンと、
を備える、システム。
請求項2:
各部分台帳は、複数の台帳エントリを含む、請求項1に記載のシステム。
請求項3:
前記複数の部分台帳の各々は、前記ブロックチェーンに関連付けられた前記台帳エントリのうちの全てよりも少ない該台帳エントリを含む、請求項2に記載のシステム。
請求項4:
前記台帳エンジンは、前記データトランザクションにおいて参加者によって記憶された前記複数の部分台帳の前記サブセットに前記台帳エントリを付加する、請求項1に記載のシステム。
請求項5:
前記目次は、前記複数の部分台帳の各々のロケーションのディレクトリを含む、請求項1に記載のシステム。
請求項6:
前記目次は、前記ブロックチェーンにおける前記複数の台帳エントリの順序を含む、請求項5に記載のシステム。
請求項7:
前記目次は、前記ブロックチェーンにおける前記複数の台帳エントリの正しい順序に関連付けられたチェックサムを含む、請求項6に記載のシステム。
請求項8:
前記複数の部分台帳の各々は、前記目次のコピーを含む、請求項1に記載のシステム。
請求項9:
前記ブロックチェーンに関連付けられた前記複数の部分台帳の各々に関連付けられた前記目次に対する前記更新は、前記複数の部分台帳の各々に、前記目次の更新されたコピーを配信することを含む、請求項7に記載のシステム。
請求項10:
前記複数の部分台帳の各々は、前記目次の信頼できるコピーへのポインタを含む、請求項1に記載のシステム。
請求項11:
前記複数の部分台帳についての目次を作成することと、
前記複数の部分台帳の各々を関連ストレージデバイスに割り当てることと、
前記複数の部分台帳の各々の前記関連ストレージデバイスに前記目次を提供することと、
前記ブロックチェーン台帳に関連付けられたトランザクションに応答して、第1の部分台帳及び第2の部分台帳を更新することと、
前記トランザクションに従って、前記複数の部分台帳の各々の前記関連付けられたストレージデバイスに記憶された前記目次を更新することと、
を含む、方法。
請求項12:
前記ブロックチェーン台帳は、複数のトランザクション参加者間の複数のトランザクションに関する情報を含む、請求項11に記載の方法。
請求項13:
前記複数の部分台帳の各々を関連ストレージデバイスに割り当てることは、前記複数のトランザクションの各々における前記参加者を識別することを含む、請求項12に記載の方法。
請求項14:
前記複数のトランザクション参加者の各々は、自身の関連付けられたトランザクションに関連付けられた前記部分台帳に、前記関連ストレージデバイスを提供する、請求項13に記載の方法。
請求項15:
プロセッサによって実行可能な、
2つの参加者間のデータトランザクションの記録を受信することの命令と、
前記データトランザクションの前記記録に関連付けられた台帳エントリを作成することの命令と、
ブロックチェーンに関連付けられた複数の部分台帳のサブセットに前記台帳エントリを付加することの命令と、
前記ブロックチェーンに関連付けられた前記複数の部分台帳の各々に関連付けられた目次を更新することの命令と、
を記憶する、非一時的機械可読媒体。