(57)【特許請求の範囲】
【請求項１】
２つの参加者間のデータトランザクションの記録を受信し、前記データトランザクションの記録に関連付けられた台帳エントリを作成する、トランザクションエンジンと、
台帳エンジンであって、
前記２つの参加者を含む複数の参加者間の複数のデータトランザクションの記録に関連付けられたブロックチェーンに関連付けられた複数の部分台帳のサブセットに、前記台帳エントリを付加し、ここで、前記複数の部分台帳の各々は前記複数の参加者の各々に関する部分台帳であり、前記複数の部分台帳は異なる部分台帳であり、前記複数の部分台帳は複数の台帳エントリを含み、
前記ブロックチェーンに関連付けられた前記複数の部分台帳の各々に関連付けられ、前記複数の参加者の台帳エントリのロケーションを追跡することができるように構成された目次（ＴｏＣ）を、前記付加された台帳エントリに関連付けて更新する
台帳エンジンと
を備える、システム。
【請求項２】
前記複数の部分台帳は各々、前記複数の参加者のうちの異なる参加者に関するものであり、前記複数の部分台帳の各々は、該参加者に関する複数の異なる台帳エントリを含む、請求項１に記載のシステム。
【請求項３】
前記複数の部分台帳の各々は、前記ブロックチェーンに関連付けられた前記台帳エントリのうちの全てよりも少ない該台帳エントリを含む、請求項２に記載のシステム。
【請求項４】
前記台帳エンジンは、前記データトランザクションにおいて参加者によって記憶された前記複数の部分台帳の前記サブセットに前記台帳エントリを付加する、請求項１に記載のシステム。
【請求項５】
前記目次は、前記複数の部分台帳の各々のロケーションのディレクトリを含む、請求項１に記載のシステム。
【請求項６】
前記目次は、前記ブロックチェーンにおける前記複数の台帳エントリが作成された順序を含む、請求項５に記載のシステム。
【請求項７】
前記目次は、前記ブロックチェーンにおける前記複数の台帳エントリの正しい作成順序に関連付けられたチェックサムを含む、請求項６に記載のシステム。
【請求項８】
前記複数の部分台帳の各々は、前記目次のコピーを含む、請求項１に記載のシステム。
【請求項９】
前記ブロックチェーンに関連付けられた前記複数の部分台帳の各々に関連付けられた前記目次に対する前記更新は、前記複数の部分台帳の各々に、前記目次の更新されたコピーを配信することを含む、請求項７に記載のシステム。
【請求項１０】
前記複数の部分台帳の各々は、前記目次の信頼できるコピーへのポインタを含む、請求項１に記載のシステム。
【請求項１１】
コンピューティングデバイスが、複数の参加者間の複数のトランザクションに関するブロックチェーン台帳に関連付けられた複数の部分台帳について、前記複数の参加者の台帳エントリの記録のロケーションを追跡できるように構成された目次（ＴｏＣ）を作成することと、
前記コンピューティングデバイスが、前記複数の部分台帳の各々を関連ストレージデバイスに割り当てることと、
前記コンピューティングデバイスが、前記複数の部分台帳の各々の前記関連ストレージデバイスに前記目次を提供することと、
前記コンピューティングデバイスが、前記複数の参加者のうちの２つの参加者間の前記ブロックチェーン台帳に関連付けられた新たなトランザクションに応答して、該２つの参加者の一方に関連付けられた第１の部分台帳のトランザクションの記録及び該２つの参加者の他方に関連付けられた第２の部分台帳のトランザクションの記録を更新することと、
前記コンピューティングデバイスが、前記新たなトランザクションに従って、前記複数の部分台帳の各々の前記関連付けられたストレージデバイスに記憶された前記目次を、前記新たなトランザクションの記録のロケーションを追跡できるように更新することと
を含む方法。
【請求項１２】
前記ブロックチェーン台帳は、複数のトランザクション参加者間の複数のトランザクションに関する情報を含む、請求項１１に記載の方法。
【請求項１３】
前記コンピューティングデバイスが、前記複数の部分台帳の各々を関連ストレージデバイスに割り当てることは、前記複数のトランザクションの各々における前記参加者を識別することを含む、請求項１２に記載の方法。
【請求項１４】
前記複数のトランザクション参加者の各々は、前記コンピューティングデバイスが、自身の関連付けられたトランザクションに関連付けられた前記部分台帳に、前記関連ストレージデバイスを提供する、請求項１３に記載の方法。
【請求項１５】
プロセッサによって実行可能な、
２つの参加者間のデータトランザクションの記録を受信する命令と、
前記データトランザクションの前記記録に関連付けられた台帳エントリを作成する命令と、
前記２つの参加者を含む複数の参加者間の複数のデータトランザクションの記録に関連付けられたブロックチェーンに関連付けられた複数の部分台帳のサブセットに、前記台帳エントリを付加し、ここで、前記複数の部分台帳の各々は前記複数の参加者の各々に関する部分台帳であり、前記複数の部分台帳は異なる部分台帳であり、前記複数の部分台帳は複数の台帳エントリを含むものである命令と、
前記ブロックチェーンに関連付けられた前記複数の部分台帳の各々に関連付けられ、前記複数の参加者の前記複数の台帳エントリのロケーションを追跡することができるように構成された目次（ＴｏＣ）を、前記付加された台帳エントリに関連付けて更新する命令と
を記憶する、非一時的機械可読媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
ブロックチェーンは、絶え間なく増大する順序付けられた台帳エントリ（ledger entry）のリストを維持する分散データベースである。各エントリは、タイムスタンプと、以前のブロックへのリンクとを含む。参加者（participants）間でトランザクションが生じると、これらの参加者と、トランザクションの詳細、例えば、データ変換、権限の移転、ログ記録等とを識別する台帳エントリが作成される。
【０００２】
添付図面において、同様の参照符号は、同様のコンポーネント又はブロックを指す。以下の詳細な説明は、図面を参照する。
【図面の簡単な説明】
【０００３】
【図１】一例示の分散台帳ブロックチェーンのブロック図である。
【図２】一例示の部分台帳システムの図である。
【図３】ブロックチェーンの分散部分台帳の作成を提供する方法の一例のフローチャートである。
【図４】部分台帳を提供する一例示のコンピューティングデバイスのブロック図である。
【発明を実施するための形態】
【０００４】
いくつかの状況では、トランザクション詳細は、ブロックチェーンストレージに記録することができる。ブロックチェーンは、多くの場合、複数の参加者によって制御される複数のロケーションによって分散及び記憶される。この分散が理由で、ブロックチェーンは、データの改変に対して本質的に耐性がある。台帳エントリ内のデータは、一度記録されると、遡及的に変更することができない。ブロックチェーンデータベースは、ピアツーピアネットワーク及び分散タイムスタンプサーバの使用を通じて、自律的に管理される。それゆえ、ブロックチェーンは、二当事者間のトランザクションを、効率的に、及び、検証可能かつ永久的な方法において記録することができる分散台帳である。
【０００５】
ブロックチェーン技術の実施は、ブロックチェーンコミュニティ内の各参加者が適切な権限及びトランザクションの履歴を検証（validate）することができるように、タイムスタンプ付与される共通台帳の作成を必要とする。ブロックチェーンサイズが各新たな権限者／ノード又は各新たなトランザクションとともに増大するにつれて、共通台帳の多重コピーを維持することには、より多量のデジタルストレージ空間を必要とする可能性がある。それゆえ、ブロックチェーン技術のための分散台帳要件は、データストレージ及び処理帯域幅に対し大きな負担を課す。目次（ＴｏＣ：table of contents）が台帳それ自体よりも小さいため、トランザクション参加者及び／又は権限者間でＴｏＣ及び部分台帳ストレージを分散させることによって、台帳ストレージの効率性を大幅に高めることができるとともに、この効率性により、データストレージボトルネックを緩和することができる。また、この手法は、ブロックチェーン技術の実施要件である、連続的な分散台帳バリデーションの能力を維持する。
【０００６】
連続するトランザクションにわたってブロックチェーンのサイズが増大するにつれて、ストレージ要件は、トランザクションのブロックチェーン台帳全体の多数のコピーを維持するという要件が理由で、指数関数的に増大する。完全な複製コピーが、各ロケーションにおいて及び／又は各トランザクション参加者によって記憶されることが意図される。それゆえ、ブロックチェーンに関連付けられたトランザクションへの各新たな参加者は、全ての参加者のストレージ要件に加えられる。
【０００７】
各参加者に、自身のトランザクションに関連付けられた台帳エントリのみを記憶させることによって、これらのストレージ要件は、大幅に低減される。各ストレージロケーションは、ブロックチェーン全体の完全なコピーを維持するのではなく、目次（ＴｏＣ）を用いて、他のブロックチェーン参加者と、当該他のブロックチェーン参加者のトランザクション台帳エントリについてのストレージロケーションとを追跡することができる。ＴｏＣは、各部分台帳ロケーションにおいて記憶された個々のコピーを有することができ、及び／又は、信頼できるコピー（authoritative copy）を１つ以上のロケーションに記憶することができる一方で、他の部分台帳ロケーションは、これらの信頼できるコピーへのリンク及び／又はポインタを維持する。部分分散台帳は静的状態を維持し、どこを及びいずれのノードにおいてＴｏＣが規定するかのみが変化するので、ＴｏＣは、タイムスタンプ付与が必要な唯一のコンポーネントとすることができる。現行のブロックチェーン分散台帳は、全てのトランザクションの「誰（Who）」及び「何（What）」を覚えておく（remember）。分散部分台帳は、全てのトランザクションの「誰」を覚えておくが、「何」はその参加者に関連するので、「何」のみを記憶する。
【０００８】
図１は、一例示の分散台帳ブロックチェーン１００のブロック図である。ブロックチェーン１００は、複数の参加者１１０（Ａ）〜１１０（Ｅ）に関連付けることができる。参加者１１０（Ａ）〜１１０（Ｅ）は、例えば、ユーザ、ノード、コンピューティングデバイス、プロセス、ストレージデバイス、アプリケーション等を含むことができる。参加者１１０（Ａ）〜１１０（Ｅ）の各々は、複数の台帳エントリ１２０（Ａ）〜１２０（Ｄ）のうちの少なくとも１つと、目次（ＴｏＣ）１３０とを記憶することができる。各参加者１１０（Ａ）〜１１０（Ｅ）は、各々、当該参加者に関連した台帳エントリと、完全なブロックチェーンのためのＴｏＣ１３０とを記憶する。例えば、ノード１１０（Ａ）はユーザデバイスを表すことができ、ノード１１０（Ｂ）はプリンタを表すことができる。ノード１１０（Ａ）からノード１１０（Ｂ）へのプリントジョブを、ノード１１０（Ａ）及び１１０（Ｂ）において、台帳エントリ１２０（Ａ）としてブロックチェーン１００に記憶することができる。目次１３０を更新して、ノード１１０（Ａ）〜１１０（Ｅ）の全てにわたってこの新たな台帳エントリを反映させることができる。後続のトランザクションは、プリンタであるノード１１０（Ｂ）が、台帳エントリ１２０（Ａ）におけるトランザクションを含むジョブのログ記録を、ノード１１０（Ｄ）によって表される分析プロセスにサブミットすることを含むことができる。また、このより早期のトランザクションに関連したデータの使用を、ブロックチェーン１００に含めるとともに、ノード１１０（Ｂ）及び１１０（Ｄ）において記憶された台帳エントリ１２０（Ｂ）に記録することができる。
【０００９】
同様に、ノード１１０（Ｃ）は第２のユーザを表すことができ、ノード１１０（Ｅ）は第２のプリンタを表すことができ、第２のプリントジョブがノード１１０（Ｃ）及び１１０（Ｅ）において記憶された台帳エントリ１２０（Ｃ）としてブロックチェーン１００に記録されている。第２のプリンタノード１１０（Ｅ）は、同様のジョブのログ記録を、ノード１１０（Ｄ）によって表される分析プロセスにサブミットすることができ、このログ記録の詳細は、ノード１１０（Ｄ）及び１１０（Ｅ）において台帳エントリ１２０（Ｄ）に記録することができる。ここでもまた、ＴｏＣ１３０は、台帳エントリ１２０（Ｃ）及び１２０（Ｄ）に記録されたトランザクションについて、ノード１１０（Ａ）〜１１０（Ｅ）の全てにわたって更新される。ノード１１０（Ａ）〜１１０（Ｅ）のうちの任意のものが、ＴｏＣ１３０に記憶されたロケーション及び保有者詳細に従って、他のノードから台帳エントリを要求することによって、ブロックチェーン１００全体を再構築することができる。ＴｏＣ１３０は、ブロックチェーン１００全体のために、チェックサム等のエラーチェック及びバリデーション情報を更に含むことができる。
【００１０】
図２は、一例示の部分台帳システム２００のブロック図である。システム２００は、メモリ２１５を備えるコンピューティングデバイス２１０を備えることができる。コンピューティングデバイス２１０は、例えば、汎用コンピュータ及び／又は専用コンピュータ、サーバ、メインフレーム、デスクトップ、ラップトップ、タブレット、スマートフォン、ゲームコンソール、プリンタ、及び／又は、本明細書において記載される実施態様を提供することに整合した計算能力を提供することが可能である他の任意のシステムを含むことができる。コンピューティングデバイス２１０は、メモリ２１５に、トランザクションエンジン２２０と、台帳エンジン２２５とを記憶することができる。
【００１１】
システム２００のエンジン２２０、２２５の各々は、ハードウェア及びプログラミングの任意の組み合わせを含むことで、それぞれのエンジンの機能を実施することができる。本明細書において記載される例では、ハードウェア及びプログラミングのそのような組み合わせは、複数の異なる方法において実施することができる。例えば、エンジンのプログラミングは、非一時的機械可読ストレージ媒体上に記憶されたプロセッサ実行可能命令とすることができ、エンジンのハードウェアは、これらの命令を実行する処理リソースを含むことができる。そのような例では、機械可読ストレージ媒体は、処理リソースによって実行されると、エンジン２２０、２２５を実施する命令を記憶することができる。そのような例では、システム２００は、命令と、命令を実行する処理リソースとを記憶する機械可読ストレージ媒体を含むことができ、又は、機械可読ストレージ媒体は、システム２００及び処理リソースとは別個ではあるが、これらにとってアクセス可能であるものとすることができる。
【００１２】
トランザクションエンジン２２０は、２つの参加者間のデータトランザクションの記録を受信し、このデータトランザクションの記録に関連付けられた台帳エントリを作成することができる。例えば、ノード１１０（Ａ）及びノード１１０（Ｂ）は、或るトランザクションに参加することができ、その結果、トランザクション記録２３０がブロックチェーン１００の台帳エントリ１２０（Ａ）に記憶される。トランザクションエンジン２２０は、台帳エントリを作成するための妥当な（valid）ブロックチェーンリンクを作成するために、トランザクション記録を、以前の台帳エントリのハッシュとともにパッケージングすること等によって、ブロックチェーン１００内に適切に含めるためにトランザクション記録２３０を処理することができる。
【００１３】
台帳エンジン２２５は、ブロックチェーンに関連付けられた複数の部分台帳のサブセットに台帳エントリを付加し、このブロックチェーンに関連付けられた複数の部分台帳の各々に関連付けられた目次を更新することができる。例えば、ノード１１０（Ａ）及び１１０（Ｂ）は、自身のトランザクションについて新たに作成された台帳エントリ１２０（Ａ）を記憶することができる一方、ブロックチェーン１００に関連付けられた他のノードはこれを記憶する場合も記憶しない場合もある。いくつかの実施態様では、トランザクション参加者は、ブロックチェーン１００の全てのノードを記憶することを選好する場合がある一方、他の参加者は、自身のトランザクションに関連した台帳エントリのみを記憶する。それゆえ、各ノードは、台帳全体か、又は、ブロックチェーンに関連付けられた台帳エントリのうちの全てよりも少ない台帳エントリを含む部分台帳かのいずれかを維持することができる。
【００１４】
いくつかの実施態様では、複数の部分台帳の各々は、目次のコピーを含むことができる。台帳エンジン２２５による、ブロックチェーンに関連付けられた複数の部分台帳の各々に関連付けられた目次に対する更新は、複数の部分台帳の各々に、目次の更新されたコピーを配信することを含むことができ、及び／又は、目次を更新するために、複数の部分台帳の各々に、新たな台帳エントリに関連付けられた情報を配信することを含むことができる。いくつかの実施態様では、複数の部分台帳の各々は、目次の信頼できるコピーへのリンクを含む。例えば、ブロックチェーンに関連付けられた第１の参加者ノード（例えば、ノード１１０（Ａ））は、目次１３０の信頼できるコピーを維持することができる。いくつかの実施態様では、部分台帳を含む各ノードは、目次のリンク及び／又はコピーを維持することができ、そのコピーが目次の信頼できるコピーに一致することを定期的に検証することができる。例えば、ノードは、信頼できるコピーの提供を要求することができ、及び／又は、チェックサム及び／又はデジタル署名等の検証データを要求することができる。
【００１５】
目次は、複数の部分台帳の各々のロケーション（例えば、デバイス２１０のメモリ２１５等のストレージロケーション）のディレクトリ、及び／又は、ブロックチェーンにおける複数の台帳エントリの順序を含むことができる。いくつかの実施態様では、目次は、ブロックチェーンにおける複数の台帳エントリの正しい順序に関連付けられたチェックサムを含むことができる。
【００１６】
図２には１つのコンピューティングデバイス２１０が示されているものの、システム２００の或る特定の実施態様は、２つ以上のコンピューティングデバイス２１０を含むことができる。コンピューティングデバイスのうちの少なくとも１つは、例えば、少なくとも１つのサーババンク、コンピュータバンク、データセンタ、及び／又は他の配置構成において利用及び構成することができる。例えば、複数のコンピューティングデバイスは共同して、クラウドコンピューティングリソース、グリッドコンピューティングリソース、及び／又は他の任意の分散コンピューティング配置構成を含むことができる。そのような複数のコンピューティングデバイスは、単一の設置箇所に配置することができ、及び／又は、多くの異なる地理的ロケーション間で分散させることができる。
【００１７】
図３は、ブロックチェーンの分散部分台帳の作成を提供する一例示の方法３００のフローチャートである。方法３００の実行は、コンピューティングデバイス２１０を参照して以下に記載されるものの、方法３００の実行のために他の適したコンポーネントを用いることができる。
【００１８】
方法３００は、ステージ３０５において開始し、コンピューティングデバイス２１０が複数の部分台帳についての目次（ＴｏＣ）を作成することができるステージ３１５に移行することができる。例えば、複数のノード１１０（Ａ）〜１１０（Ｅ）を、ブロックチェーン１００の一部分を記憶する役割を担うものとして識別することができる。コンピューティングデバイス２１０は、ブロックチェーン１００によって記録された各トランザクションについての各台帳エントリを検査し、ノード１１０（Ａ）〜１１０（Ｅ）のうちのいずれのものが各トランザクションにおいて関与していたのかを判断することができる。図１の例では、台帳エントリ１２０（Ａ）は参加者ノード１１０（Ａ）及び１１０（Ｂ）に割り当てることができ、台帳エントリ１２０（Ｂ）は参加者ノード１１０（Ｂ）及び１１０（Ｄ）に割り当てることができ、以下同様である。特定のネットワークにアタッチされたストレージデバイス及び／又はデバイス上メモリ等の、ブロックチェーン１００における各参加者についてのストレージロケーションを確立することができる。その後、台帳エントリロケーション及び正しいトランザクション順序を用いて、ＴｏＣファイル、データベースエントリ、又は他の記録タイプを確立することができる。
【００１９】
その後、方法３００は、コンピューティングデバイス２１０が複数の部分台帳の各々を関連ストレージデバイスに割り当てることができるステージ３２０に進行することができる。ブロックチェーン１００の台帳は、ノード１１０（Ａ）〜１１０（Ｅ）によって表される複数のトランザクション参加者間の複数のトランザクションに関する情報を含むことができる。複数のトランザクション参加者の各々は、自身の関連付けられたトランザクションに関連付けられた部分台帳に、関連ストレージデバイスを提供することができる。複数の部分台帳の各々を関連ストレージデバイスに割り当てることは、複数のトランザクションの各々における参加者を識別することを含むことができる。例えば、台帳エントリ１２０（Ａ）は、トランザクションにおける参加者としてのノード１１０（Ａ）及び１１０（Ｃ）のストレージロケーションに割り当てることができ、このトランザクションの詳細が台帳エントリ１２０（Ａ）に記憶されるとともにそれらのストレージロケーションに記憶される。
【００２０】
その後、方法３００は、コンピューティングデバイス２１０が、複数の部分台帳の各々の関連ストレージデバイスに目次を提供することができるステージ３２５に進行することができる。いくつかの実施態様では、複数の部分台帳の各々は、目次のコピーを含むことができる。目次の提供は、複数の部分台帳の各々に、目次の更新されたコピーを配信することを含むことができ、及び／又は、目次を更新するために、複数の部分台帳の各々に、新たな台帳エントリに関連付けられた情報を配信することを含むことができる。いくつかの実施態様では、複数の部分台帳の各々は、目次の信頼できるコピーへのリンクを含む。例えば、ブロックチェーンに関連付けられた第１の参加者ノード（例えば、ノード１１０（Ａ））は、目次１３０の信頼できるコピーを維持することができる。いくつかの実施態様では、部分台帳を含む各ノードは、目次のリンク及び／又はコピーを維持することができ、そのコピーが目次の信頼できるコピーに一致することを定期的に検証することができる。例えば、ノードは、信頼できるコピーの提供を要求することができ、及び／又は、チェックサム及び／又はデジタル署名等の検証データを要求することができる。
【００２１】
目次は、複数の部分台帳の各々のロケーション（例えば、デバイス２１０のメモリ２１５等のストレージロケーション）のディレクトリ、及び／又は、ブロックチェーンにおける複数の台帳エントリの順序を含むことができる。いくつかの実施態様では、目次は、ブロックチェーンにおける複数の台帳エントリの正しい順序に関連付けられたチェックサムを含むことができる。
【００２２】
その後、方法３００は、コンピューティングデバイス２１０が、ブロックチェーン台帳に関連付けられたトランザクションに応答して、第１の部分台帳及び第２の部分台帳を更新することができるステージ３３０に進行することができる。例えば、ノード１１０（Ａ）及びノード１１０（Ｂ）は、或るトランザクションに参加することができ、その結果、トランザクション記録２３０がブロックチェーン１００の台帳エントリ１２０（Ａ）に記憶される。トランザクションエンジン２２０は、台帳エントリを作成するための妥当なブロックチェーンリンクを作成するために、トランザクション記録を、以前の台帳エントリのハッシュとともにパッケージングすること等によって、ブロックチェーン１００内に適切に含めるためにトランザクション記録２３０を処理することができる。
【００２３】
その後、方法３００は、コンピューティングデバイス２１０が、トランザクションに従って、複数の部分台帳の各々の関連付けられたストレージデバイスに記憶された目次を更新することができるステージ３３５に進行することができる。台帳エンジン２２５による、ブロックチェーンに関連付けられた複数の部分台帳の各々に関連付けられた目次に対する更新は、複数の部分台帳の各々に、目次の更新されたコピーを配信することを含むことができ、及び／又は、目次を更新するために、複数の部分台帳の各々に、新たな台帳エントリに関連付けられた情報を配信することを含むことができる。いくつかの実施態様では、複数の部分台帳の各々は、目次の信頼できるコピーへのリンクを含む。
【００２４】
その後、方法３００は、ステージ３５０において終了することができる。
【００２５】
図４は、ブロックチェーンの部分台帳を提供する一例示のコンピューティングデバイス４００のブロック図である。コンピューティングデバイス４００は、プロセッサ４１０と、非一時的機械可読ストレージ媒体を含むメモリ４１５とを備えることができる。メモリ４１５は、データトランザクション記録受信命令４３２、台帳エントリ作成命令４３４、台帳エントリ付加命令４３６、及び目次更新命令４３８等の複数のプロセッサ実行可能命令を含むことができる。いくつかの実施態様では、命令４３２、４３４、４３６、４３８は、単一のコンピューティングデバイス４００に関連付けることができ、及び／又は、例えば直接接続、バス、又はネットワークを介して、異なるコンピューティングデバイス間で通信可能に結合することができる。
【００２６】
プロセッサ４１０は、中央処理装置（ＣＰＵ）、半導体ベースマイクロプロセッサ、プログラマブルコンポーネント、例えば、コンプレックスプログラマブルロジックデバイス（ＣＰＬＤ）、及び／又は、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、又は機械可読記憶媒体４２０に記憶された命令の索出及び実行に適した他の任意のハードウェアデバイスを含むことができる。特に、プロセッサ１１０は、命令４３２、４３４、４３６、４３８を、フェッチ、復号、及び実行することができる。
【００２７】
実行可能命令４３２、４３４、４３６、４３８は、機械可読記憶媒体４１５の任意の部分及び／又はコンポーネントに記憶されるとともに、プロセッサ４１０によって実行可能であるロジックを含むことができる。機械可読記憶媒体４１５は、揮発性及び／又は不揮発性の双方のメモリ及びデータ記憶コンポーネントを含むことができる。揮発性コンポーネントは、電力の消失時にデータ値を保持しないコンポーネントである。不揮発性コンポーネントは、電力の消失時にデータを保持するコンポーネントである。
【００２８】
機械可読記憶媒体４１５は、例えば、ランダムアクセスメモリ（ＲＡＭ）、リードオンリメモリ（ＲＯＭ）、ハードディスクドライブ、ソリッドステートドライブ、ＵＳＢフラッシュドライブ、メモリカードリーダを介してアクセスされるメモリカード、関連付けられたフロッピーディスクドライブを介してアクセスされるフロッピーディスク、光学ディスクドライブを介してアクセスされる光学ディスク、適切なテープドライブを介してアクセスされる磁気テープ、及び／又は他のメモリコンポーネント、及び／又は任意の２つ以上のこれらのメモリコンポーネントの組み合わせを含むことができる。加えて、ＲＡＭは、例えば、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、及び／又は磁気ランダムアクセスメモリ（ＭＲＡＭ）及び他のそのようなデバイスを含むことができる。ＲＯＭは、例えば、プログラマブルリードオンリメモリ（ＰＲＯＭ）、消去可能プログラマブルリードオンリメモリ（ＥＰＲＯＭ）、電気的消去可能プログラマブルリードオンリメモリ（ＥＥＰＲＯＭ）、及び／又は他の同様のメモリデバイスを含むことができる。
【００２９】
データトランザクション記録受信命令４３２は、２つの参加者間のデータトランザクションの記録を受信することができる。例えば、ノード１１０（Ａ）及びノード１１０（Ｂ）は、或るトランザクションに参加することができ、その結果、トランザクション記録２３０がブロックチェーン１００の台帳エントリ１２０（Ａ）に記憶される。トランザクションエンジン２２０は、台帳エントリを作成するための妥当なブロックチェーンリンクを作成するために、トランザクション記録を、以前の台帳エントリのハッシュとともにパッケージングすること等によって、ブロックチェーン１００内に適切に含めるためにトランザクション記録２３０を処理することができる。
【００３０】
台帳エントリ作成命令４３４は、データトランザクションの記録に関連付けられた台帳エントリを作成することができる。例えば、台帳エントリ作成命令４３４は、台帳エントリ１２０（Ａ）等の台帳エントリを作成するための妥当なブロックチェーンリンクを作成するために、トランザクション記録を、以前の台帳エントリのハッシュとともにパッケージングすること等によって、ブロックチェーン１００内に適切に含めるためにトランザクション記録２３０を処理することができる。
【００３１】
台帳エントリ付加命令４３６は、ブロックチェーンに関連付けられた複数の部分台帳のサブセットに台帳エントリを付加することができる。例えば、台帳エントリは、特定の参加者のノードにおける、ブロックチェーンに関連付けられた複数の部分台帳のサブセットに追加することができる。例えば、ノード１１０（Ａ）及び１１０（Ｂ）は、自身のトランザクションについて新たに作成された台帳エントリ１２０（Ａ）を記憶することができる一方、ブロックチェーン１００に関連付けられた他のノードはこれを記憶する場合も記憶しない場合もある。いくつかの実施態様では、トランザクション参加者は、ブロックチェーン１００の全てのノードを記憶することを選好する場合がある一方、他の参加者は、自身のトランザクションに関連した台帳エントリのみを記憶する。それゆえ、各ノードは、台帳全体か、又は、ブロックチェーンに関連付けられた台帳エントリのうちの全てよりも少ない台帳エントリを含む部分台帳かのいずれかを維持することができる。
【００３２】
目次更新命令４３８は、ブロックチェーンに関連付けられた複数の部分台帳の各々に関連付けられた目次を更新することができる。例えば、いくつかの実施態様では、複数の部分台帳の各々は、目次のコピーを含むことができる。台帳エンジン２２５による、ブロックチェーンに関連付けられた複数の部分台帳の各々に関連付けられた目次に対する更新は、複数の部分台帳の各々に、目次の更新されたコピーを配信することを含むことができ、及び／又は、目次を更新するために、複数の部分台帳の各々に、新たな台帳エントリに関連付けられた情報を配信することを含むことができる。いくつかの実施態様では、複数の部分台帳の各々は、目次の信頼できるコピーへのリンクを含む。例えば、ブロックチェーンに関連付けられた第１の参加者ノード（例えば、ノード１１０（Ａ））は、目次１３０の信頼できるコピーを維持することができる。いくつかの実施態様では、部分台帳を含む各ノードは、目次のリンク及び／又はコピーを維持することができ、そのコピーが目次の信頼できるコピーに一致することを定期的に検証することができる。例えば、ノードは、信頼できるコピーの提供を要求することができ、及び／又は、チェックサム及び／又はデジタル署名等の検証データを要求することができる。
【００３３】
目次は、複数の部分台帳の各々のロケーション（例えば、デバイス２１０のメモリ２１５等のストレージロケーション）のディレクトリ、及び／又は、ブロックチェーンにおける複数の台帳エントリの順序を含むことができる。いくつかの実施態様では、目次は、ブロックチェーンにおける複数の台帳エントリの正しい順序に関連付けられたチェックサムを含むことができる。
【００３４】
開示された例は、ドキュメント要素の再位置決めのためのシステム、デバイス、コンピュータ可読記憶媒体、及び方法を含むことができる。説明のために、或る特定の例が、図面に示すコンポーネントを参照して記載されている。一方で、図示されたコンポーネントの機能は、重複している場合があり、より少数の又はより多数の要素及びコンポーネントにおいて存在する場合がある。さらに、図示された要素の機能の全て又は部分は、いくつかの地理的に分散したロケーション間に共存又は分散することができる。その上、開示された例は、種々の環境において実施することができ、図示された例には限定されない。
【００３５】
その上、明細書及び添付の特許請求の範囲において用いられる場合、文脈がそうではないことを示さない限り、単数形「一（a, an）」及び「その（the）」は、複数形も含むことを意図される。加えて、種々の要素を説明するのに第１、第２等の用語が本明細書において用いられる場合があるものの、これらの要素は、これらの用語によって限定されるべきものではない。そうではなく、これらの用語は、或る要素を別の要素から区別するためにのみ用いられる。
【００３６】
さらに、図面に関連して説明される一連の動作は、例であり、限定するものとは意図されない。開示される例の範囲から逸脱することなく、追加の動作若しくはより少数の動作又は動作の組み合わせを用いることができ、又はこれらの動作は変わる場合がある。したがって、本開示は、単に実施態様の可能な例に言及したものであり、説明される例に対して、多数の変形及び変更を行うことができる。全てのそのような変更及び変形は、本開示の範囲内に含まれるとともに、添付の特許請求の範囲によって保護されることを意図される。
なお、出願当初の特許請求の範囲の記載は以下の通りである。
請求項１：
トランザクションエンジンであって、
２つの参加者間のデータトランザクションの記録を受信し、
前記データトランザクションの前記記録に関連付けられた台帳エントリを作成する、トランザクションエンジンと、
台帳エンジンであって、
ブロックチェーンに関連付けられた複数の部分台帳のサブセットに前記台帳エントリを付加し、
前記ブロックチェーンに関連付けられた前記複数の部分台帳の各々に関連付けられた目次を更新する、
台帳エンジンと、
を備える、システム。
請求項２：
各部分台帳は、複数の台帳エントリを含む、請求項１に記載のシステム。
請求項３：
前記複数の部分台帳の各々は、前記ブロックチェーンに関連付けられた前記台帳エントリのうちの全てよりも少ない該台帳エントリを含む、請求項２に記載のシステム。
請求項４：
前記台帳エンジンは、前記データトランザクションにおいて参加者によって記憶された前記複数の部分台帳の前記サブセットに前記台帳エントリを付加する、請求項１に記載のシステム。
請求項５：
前記目次は、前記複数の部分台帳の各々のロケーションのディレクトリを含む、請求項１に記載のシステム。
請求項６：
前記目次は、前記ブロックチェーンにおける前記複数の台帳エントリの順序を含む、請求項５に記載のシステム。
請求項７：
前記目次は、前記ブロックチェーンにおける前記複数の台帳エントリの正しい順序に関連付けられたチェックサムを含む、請求項６に記載のシステム。
請求項８：
前記複数の部分台帳の各々は、前記目次のコピーを含む、請求項１に記載のシステム。
請求項９：
前記ブロックチェーンに関連付けられた前記複数の部分台帳の各々に関連付けられた前記目次に対する前記更新は、前記複数の部分台帳の各々に、前記目次の更新されたコピーを配信することを含む、請求項７に記載のシステム。
請求項１０：
前記複数の部分台帳の各々は、前記目次の信頼できるコピーへのポインタを含む、請求項１に記載のシステム。
請求項１１：
前記複数の部分台帳についての目次を作成することと、
前記複数の部分台帳の各々を関連ストレージデバイスに割り当てることと、
前記複数の部分台帳の各々の前記関連ストレージデバイスに前記目次を提供することと、
前記ブロックチェーン台帳に関連付けられたトランザクションに応答して、第１の部分台帳及び第２の部分台帳を更新することと、
前記トランザクションに従って、前記複数の部分台帳の各々の前記関連付けられたストレージデバイスに記憶された前記目次を更新することと、
を含む、方法。
請求項１２：
前記ブロックチェーン台帳は、複数のトランザクション参加者間の複数のトランザクションに関する情報を含む、請求項１１に記載の方法。
請求項１３：
前記複数の部分台帳の各々を関連ストレージデバイスに割り当てることは、前記複数のトランザクションの各々における前記参加者を識別することを含む、請求項１２に記載の方法。
請求項１４：
前記複数のトランザクション参加者の各々は、自身の関連付けられたトランザクションに関連付けられた前記部分台帳に、前記関連ストレージデバイスを提供する、請求項１３に記載の方法。
請求項１５：
プロセッサによって実行可能な、
２つの参加者間のデータトランザクションの記録を受信することの命令と、
前記データトランザクションの前記記録に関連付けられた台帳エントリを作成することの命令と、
ブロックチェーンに関連付けられた複数の部分台帳のサブセットに前記台帳エントリを付加することの命令と、
前記ブロックチェーンに関連付けられた前記複数の部分台帳の各々に関連付けられた目次を更新することの命令と、
を記憶する、非一時的機械可読媒体。
【図１】
0006896879.tif 000002
【図２】
0006896879.tif 000003
【図３】
0006896879.tif 000004
【図４】
0006896879.tif 000005