類似の参照番号および様々な図面内の記号は類似の要素を示す。
本明細書は、台帳システムにおいてトラストポイントを管理するための技術を説明している。これらの技術は、ブロックチェーンのデータ構造および/またはブロックチェーンに類似したデータ構造を採用して、台帳システムに記憶されているデータの不変性、信頼性、信用性、トレーサビリティ、および検証可能性を活用する、台帳システム(例えば、ブロックチェーンベースの中央集権型台帳システム)を一般的に含む。台帳システムは、トランザクションまたはブロックなどの一連のデータレコード(レコードとも称する)としてデータを記憶し得る。いくつかの実施形態においては、一連のレコードは、保存されているデータの不正な変更を避けるために共に連結され得るまたは繋がれ得る。例えば、レコードは、レコードの直前にある先行レコードの一意な識別子(例えば、それぞれのハッシュ)を記憶し得る、その結果、先行レコードの任意の変更が、一意な識別子の変更という結果をもたらし、ひいては、レコードに記憶されている一意な識別子に対する不一致という結果をもたらし得る。このようなブロックチェーンに類似したデータ構造は、台帳システムに記憶されているレコードの信用性を検証するためのスキームを提供している。例えば、レコードの信用性は、そのレコードに先行するすべてのレコードを始原または最初のレコード(例えば、台帳システムにおけるジェネシストランザクションまたはブロックチェーンにおけるジェネシスブロック)まで信頼に足る形で後方にトレースすることができるかどうかをチェックすることによって検証され得る。
本明細書で使用しているように、「AがBまで信頼するに足る形でトレース可能である」ということは、AがBまでトレース可能な情報を含むとともにBが変更されていないことをその情報が認証する、または、BがAまでトレース可能な情報を含むとともにAが変更されていないことをその情報が認証する、シナリオを含んでいる。例えば、Aは、Bのハッシュを含み得る。Bのハッシュは、例えば、検証機構(verifier)によって独立して計算され、Aに記憶されているハッシュと比較され得る。2つのハッシュが一致している場合には、Bが認証されたと決定され得る。それゆえ、Aは、Bまで信頼するに足る形でトレース可能である。同様に、Bがハッシュを含んでいるまたはAが変更されていないことを認証するAについての他の検証可能な情報を含んでいる場合には、AはBまで信頼するに足る形でトレース可能であるとみなされる。いくつかの実施形態においては、AがBまで信頼するに足る形でトレース可能であるということはまた、AとBとが中間データを経由して互いまで信頼するに足る形でトレース可能であるシナリオを含んでいる。例えば、AがCまで信頼するに足る形でトレース可能であるとともに、CがBまで信頼するに足る形でトレース可能である場合には、Aは、Bまで信頼するに足る形でトレース可能であるとみなされる。追加のシナリオも考えられ得る。
台帳システムは、一連のレコードにおけるトラストポイントを確立し得る。例えば、トラストポイントは、一連のレコードにおけるトラストポイントの前に記憶されているすべてのレコードが信頼するに足るものであることを示す、一連のレコードのうちのレコード(例えば、ブロックチェーンのブロック内のトランザクションまたはブロックチェーン内のブロック)であり得る。そのため、トラストポイント以後に記憶されたデータの信用性の検証は、始原または最初のレコード(例えば、台帳システムにおけるジェネシストランザクションまたはブロックチェーンにおけるジェネシスブロック)またはトラストポイントに先行する任意のデータまで後方にトレースする必要なく、トラストポイントまで信頼するに足る形でトレースすることによって検証され得る。それゆえ、検証プロセスを単純化および計算効率を改善し得る。いくつかの実施形態においては、台帳システムは、台帳システム(例えば、第三者のグローバルに承認されたタイム統括機関)から独立したトラストタイムサーバからトラストタイムスタンプ情報を取得し得る。台帳システムは、トラストタイマサーバによって提供されるタイムスタンプ情報に対する確立された信頼を活用し、保存されているデータおよび/または確立されたトラストポイントについて台帳システムにトラストタイムスタンプ情報を統合し得るし、このことは、保存されているデータの信頼性、信用性、可監査性、および正当性をさらに向上させることを可能としている。
例示のみを目的として、本開示においては、トランザクションをレコードの例として説明している。
本明細書において説明した技法は、いくつかの技術的効果生み出す。いくつかの実施形態においては、台帳システムは、タイムクリティカルな監査を有する(否認防止および改竄防止を有する)暗号的に検証可能な状態非依存データ台帳ストレージを提供することができるブロックチェーンベースの中央集権型台帳システムであり得る。いくつかの実施形態においては、台帳システムは、信頼性および中立性を有する中央集権型の承認を特徴とするクラウドプラットフォームに基づいた台帳サービスを提供し得る。台帳システムは、監査要件、トレーサビリティ、およびトラッキングを有する様々なタイプのデータおよびログを処理することについて、ブロックチェーンシステムの高い信頼性と中央集権型システムの高パフォーマンスおよび低レイテンシとの両方を活用することによって、高度に信頼性があり高パフォーマンスな監査可能ストリーミング台帳サービスを提供し得る。
いくつかの実施形態においては、台帳システムは、ブロックチェーンデータ構造のブロックに記憶されている、透過的で、変更不可能で、暗号学的に検証可能なデータを提供する、集中型高信頼性統括機関を含み得る。いくつかの実施形態においては、保存されているデータは、例えば、トランザクションログのためだけでなく他のトランザクションデータおよびブロックデータのためを含むログフォーマットであり得る。集中型高信頼性統括機関の存在により、台帳システムは、信頼を確立するためにコンセンサスプロセスを行う必要がなくなり、このことが大幅な時間的およびコスト的な節約をもたらし得る。いくつかの実施形態においては、台帳システムは、典型的なブロックチェーンベースの分散型または非中央集権型台帳システムと比較して、より効率的となり得る。いくつかの実施形態においては、台帳システムは、信頼性、効率、およびストレージパフォーマンスが向上したクラウドベースのストレージサービスを提供し得る。
いくつかの実施形態においては、台帳システムは、台帳システムに保存されているデータの信頼性、可監査性、および正当性を向上させることを可能としている。例えば、台帳システムは、トラストタイムサーバと連動し、トラストタイムサーバのトラストタイムスタンプ情報を台帳システムのクライアントに提供し得る。トラストタイムサーバは、台帳システムから独立している。トラストタイムサーバは、正確な時間サービスを提供する第三者トラストタイム統括機関に関連付けられ得るし、例えば、公的な監査エンティティ(企業、機関、または組織など)および/または法的エンティティ(法廷または政府など)によってグローバルに承認または信任され得る。トラストタイムサーバによって提供されるタイムスタンプ情報の信用性が承認されているので、トラストタイムサーバのタイムスタンプ情報の保存されているデータのための台帳システムへの統合が、台帳システムに記憶されているデータの信頼性、可監査性、および正当性をさらに向上させることを可能としている。
いくつかの実施形態においては、台帳システムは、台帳システムの関係者または関与者のそれぞれの権限を特徴としている。例えば、台帳システムのクライアントは、台帳システムにトランザクションデータを記憶するための署名を提供する権限を有し得る、その結果、クライアントは、トランザクションデータを否認することはできない。いくつかの実施形態においては、台帳システムは、トランザクションデータの記憶を承認するための署名を提供する権限を有しており、その結果、台帳システムは、トランザクションデータを記憶することを否定することはできない。いくつかの実施形態においては、トラストタイムサーバは、台帳システムに記憶されているトランザクションデータについてのトラストタイムスタンプ情報のための署名を提供する権限を有しており、その結果、トラストタイムサーバは、トラストタイムスタンプ情報を否定することはできない。いくつかの実施形態においては、3つの関係者(クライアント、台帳システム、およびトラストタイムサーバ)の3つのそれぞれの権限は互いに独立している。3つの権限の統合ならびにそれらのそれぞれの否認防止および改竄防止の特性は、台帳システムに記憶されているトランザクションデータの信頼性および可監査性をさらに向上させることを可能としている。
いくつかの実施形態においては、台帳システムは、台帳システムに記憶されているトランザクションデータの改善された規律性および信頼性を提供し得る。例えば、台帳システムは、台帳システムに記憶されているトランザクションデータのためのトラストタイムスタンプ要求をトラストタイムサーバに送信し得るし、トラストタイムサーバは、例えば、トランザクションデータの時間を認証するまたはトランザクションデータの時間を承認するために、タイムスタンプおよび関連する署名などのトラストタイムスタンプ情報を提供し得る。台帳システムは、台帳システムに、例えば、トランザクションとして、トラストタイムスタンプ情報を記憶し得る。
いくつかの実施形態においては、トラストタイムサーバからのトラストタイムスタンプ情報を記憶するトランザクションをタイムスタンプトランザクションと称し得る。いくつかの実施形態においては、一連のトランザクションは、各トランザクションがトランザクションの直前にある先行トランザクションのそれぞれのハッシュを記憶することによって、共に連結され得るまたは繋がれ得る。タイムスタンプトランザクションはまた、タイムスタンプトランザクションの直前にある先行トランザクションのハッシュを記憶し得る。そのため、トラストタイムスタンプ情報が、台帳システムに記憶されているトランザクションの規律性および信頼性を検証するために使用され得るし、ひいては、台帳システムに記憶されているトランザクションの改善された信頼性、可監査性および正当性を提供し得る。
いくつかの実施形態においては、台帳システムは、直前の先行タイムスタンプトランザクションの後に台帳システムに追加されるユニット内の2つ以上のトランザクションについてのトラストタイムスタンプ情報を要求し得る。台帳システムは、例えば、ユニット内のトランザクションのハッシュについてのハッシュダイジェストといったトランザクションの情報を含む、タイムスタンプ要求を送信し得る。タイムスタンプ要求に対するトラストタイムスタンプ情報を受信した後に、台帳システムは、ユニット内の最終トランザクションでもあるユニット内の新たなタイムスタンプトランザクションとしてトラストタイムスタンプ情報を記憶し得る。ユニット内のトランザクションは、新たなタイムスタンプトランザクションと同一のトラストタイムスタンプを有するとみなされ得る。そのような方法で、台帳システムは、トラストタイムサーバからのトラストタイムスタンプを要求する総合的なコストを低減し得る。
いくつかの実施形態においては、本明細書に記載したこれらの技術は、台帳システムに記憶されているデータレコード(例えば、トランザクション)の改善された不変性、信頼性、信用性、およびトレーサビリティを提供するとともに、データレコードについてのそれらのセキュリティ特徴を検証するより効率的な方法を提供し得る。いくつかの実施形態においては、台帳システムは、台帳システムに記憶されている一連のトランザクションにおけるトラストポイントを確立し得る。トラストポイントは、トラストポイントに先行するトランザクションが信頼するに足るものであることを示す。一連のトランザクションにおけるトランザクションが検証されることになる場合には、台帳システムは、そのトランザクションに先行する最近傍のトラストポイントを特定し得るし、最近傍のトラストポイントに先行するトランザクションなどの過去のトランザクションを検証することなく、トランザクションが最近傍のトラストポイントまで信頼するに足る形でトレース可能でありうるかどうかを検証するだけで、トランザクションが検証され得るかどうかを決定し得る。このことは、トランザクション検証速度、効率、および一連のトランザクションにおける精度を大幅に向上させることを可能としている。例えば、台帳システムは、多数のトランザクション、例えば、1000個のトランザクションを含み得る。多数のトランザクションに確立されたトラストポイントが存在しない場合には、直近のトランザクション、例えば、第1000番目のトランザクションを検証するために、台帳システムは、例えば、直近のトランザクションから始原のトランザクションまでの各トランザクションがその直前にある先行トランザクションのそれぞれのハッシュを含んでいるかどうかを検証することによって、トランザクションが始原トランザクションまたはジェネシストランザクション(例えば、最初のトランザクション)まで信頼するに足る形でトレース可能であり得るかどうかを検証する必要がある。すなわち、台帳システムは、約1000倍の検証を行う必要がある。しかしながら、例えば、10個のトランザクションあたり1個のトラストポイントといったある数のトランザクションごとに台帳システムが多数のトラストポイントを確立している場合には、直近のトランザクションを検証するために、台帳システムは、直近のトランザクションに先行する最近傍のトラストポイント、例えば、第990番目のトランザクションを特定し得る。その後、台帳システムは、直近のトランザクションが、最近傍のトラストポイントの前にある過去のトランザクションを検証することなく、最近傍のトラストポイント、例えば、第990番目のトランザクションまで信頼するに足る形で後方にトレースされ得るかどうかを検証し得る。すなわち、台帳システムは、約10倍の検証を行うことだけが必要となる。そのため、検証計算効率を大幅に改善し得る。計算を非常に低減しつつ、検証精度を増大もし得る。
いくつかの実施形態においては、説明した技術は、トラストタイムサーバからのトラストタイムスタンプ情報を記憶しているタイムスタンプトランザクションに対してトラストポイントを確立し得る。トラストタイムスタンプ情報は、保存されているデータ(例えば、トランザクション)の時間を認証して保存されているデータの不正な変更をさらに防ぐトラストタイムサーバからのトラストについての追加のレイヤを提供する。それゆえ、トラストタイムスタンプ情報を有していないトラストポイントと比較して、確立されたトラストポイントは、トラストタイムサーバからのタイムスタンプ情報に基づいた改善された信頼性または承認を有し得る。トラストポイントであると決定された指定のトランザクションがタイムスタンプトランザクションではない場合には、台帳システムは、指定のトランザクションまで信頼するに足る形でトレース可能である指定のトランザクションに隣接するタイムスタンプトランザクションに対してトラストポイントを確立し得る。指定のトランザクションがタイムスタンプトランザクションであると決定されているがトラストポイントではない場合には、台帳システムは、指定のトランザクションに隣接するとともにタイムスタンプトランザクションの前にある先行トラストポイントまで信頼するに足る形でトレース可能であるタイムスタンプトランザクションを特定し、隣接するタイムスタンプトランザクションに対して新たなトラストポイントを確立し得る。
いくつかの実施形態においては、タイムスタンプトランザクションは、指定のトランザクションを含むトランザクションのユニット内の最終トランザクションまたは指定のトランザクションを含むユニットの直前にある先行ユニット内の最終トランザクションであり得る。そのような方法で、指定のトランザクションのトラストポイントを確立するために隣接タイムスタンプトランザクションを設置することをより容易かつより高速にすることを可能にしている。結果として、台帳システムに記憶されているトランザクションの信頼性、信用性、および正当性を検証する際の効率および精度をさらに向上させることを可能としている。
いくつかの実施形態においては、台帳システムは、(1)指定のトランザクションが一連のトランザクションにおける別のトラストポイントまで信頼するに足る形でトレース可能である、および、(2)特定のトランザクションがトラストタイムサーバからのトラストタイムスタンプ情報を記憶しているタイムスタンプトランザクションであるといった両方の条件を満足している場合に、トラストポイントとして指定のトランザクションを確立し得る。いくつかの実施形態においては、台帳システムはまず、順にまたは同時に2つの条件を検証し得る。例えば、台帳システムは、例えば、特定のトランザクションが別のトラストポイントまで信頼するに足る形でトレース可能であり得ることを検証することによって、特定のトランザクションがトラストポイントであることを検証し、その後、指定のトランザクションがタイムスタンプトランザクションであるかどうかを決定し得る。いくつかの実施形態においては、台帳システムは、指定のトランザクションがタイムスタンプトランザクションであるかどうかをまず決定し、その後、特定のトランザクションが別のトラストポイントまで信頼するに足る形でトレース可能であり得るかどうかを決定し得る。指定のトランザクションが2つの条件の一方を満足していると台帳システムが決定すると、台帳システムは、指定のトランザクションが候補トラストポイントであると決定し得る。指定のトランザクションが2つの条件の両方を満足していると台帳システムが決定した後のみ、台帳システムは、指定のトランザクションがトラストポイントであると決定し得る。
本明細書の実施形態についてのさらなる状況をあげるとすれば、上述したように、コンセンサスネットワーク(例えば、ピア・ツー・ピアノードで構成される)およびブロックチェーンネットワークとも称し得る、分散型台帳システム(DLS)は、関与エンティティが安全かつ変更不可能な形でトランザクションを実施しデータを記憶することを可能にする。ブロックチェーンという用語は、特定のネットワークおよび/またはユースケースに一般的に関連付けられているが、ブロックチェーンは、任意の特定のユースケースを指すわけではなくDLSを一般的に指すために本明細書では使用している。
ブロックチェーンは、トランザクションが変更不可能となる方法でトランザクションを記憶するデータ構造である。そのため、ブロックチェーン上に記録されるトランザクションは、信頼性のあるものおよび信頼するに足るものとなる。ブロックチェーンは、1つまたは複数のブロックを含む。チェーン内の各ブロックは、前段のブロックのハッシュを含むことによって、チェーンにおいてその直前にある前段のブロックに連結されている。各ブロックはまた、(例えば、ブロックを生成するコンピューティングデバイスまたはブロックチェーンを管理するコンピューティングシステムによって提供される)ローカルタイムスタンプ、それ自身のハッシュ、および1つまたは複数のトランザクションを含む。例えば、ブロックは、ブロックヘッダおよびブロック本体を含み得る。ブロックヘッダは、ローカルタイムスタンプ、それ自身のハッシュ、および前段のブロックのハッシュを含み得る。ブロック本体は、1つまたは複数のトランザクション(またはトランザクションデータ)などのペイロード情報を含み得る。ブロックチェーンネットワークのノードによって既に検証されているトランザクションは、ハッシュ化され、Merkleツリーに符号化される。Merkleツリーは、ツリーのリーフノードにおけるデータがハッシュ化され、ツリーの各ブランチにおけるすべてのハッシュがブランチのルートにおいて連結されるデータ構造である。このプロセスは、ツリー全体のルートまでツリーの上方へと進行し続け、ツリー全体のルートは、ツリー内のすべてのデータを表すハッシュを記憶している。ツリーに記憶されているトランザクションであることを意味するハッシュは、それがツリーの構造と整合性を有しているかどうかを決定することによって素早く検証され得る。
ブロックチェーンは、トランザクションを記憶するための分散化されたまたは少なくとも部分的に分散化されたデータ構造である一方で、ブロックチェーンネットワークは、トランザクションをブロードキャストすること、検証すること、および有効性を確認することなどによって、1つまたは複数のブロックチェーンを管理、更新、およびメンテナンスするコンピューティングノードのネットワークである。上述したように、ブロックチェーンネットワークは、パブリックブロックチェーンネットワーク、プライベートブロックチェーンネットワーク、またはコンソーシアムブロックチェーンネットワークとして提供され得る。
一般に、コンソーシアムブロックチェーンネットワークは、関与エンティティの間でプライベートなものとなっている。コンソーシアムブロックチェーンネットワークにおいては、コンセンサスプロセスは、コンセンサスノードとも称し得る、権限を与えられたノードのセットによって制御され、1つまたは複数のコンセンサスノードがそれぞれのエンティティ(例えば、金融機関、保険会社)に管理される。例えば、十(10)のコンソーシアムエンティティ(例えば、金融機関、保険会社)がコンソーシアムブロックチェーンネットワークを管理してもよく、その各々がコンソーシアムブロックチェーンネットワーク内の少なくとも1つのノードを管理する。いくつかの例においては、コンソーシアムブロックチェーンネットワーク内で、グローバルブロックチェーンが、すべてのノードにわたって複製されるブロックチェーンとして提供される。すなわち、すべてのコンセンサスノードは、グローバルブロックチェーンに関する完全状態コンセンサスにある。コンセンサス(例えば、ブロックチェーンへのブロックの追加に対する合意)を得るために、コンセンサスプロトコルがコンソーシアムブロックチェーンネットワーク内で実施される。例えば、コンソーシアムブロックチェーンネットワークは、以下でさらに詳細に説明している、実用的Byzantineフォールトトレランス(PBFT)コンセンサスを実施し得る。
いくつかの実施形態においては、中央集権型台帳システムはまた、ブロックチェーン上に記憶されているデータの不変性、信頼性、および信用性を活用するためにブロックチェーンのデータ構造を採用し得る。いくつかの実施形態においては、そのような中央集権型台帳システムをブロックチェーンベースの中央集権型台帳システムまたは汎用監査可能台帳サービスシステムと称し得る。いくつかの実施形態においては、ブロックチェーンベースの中央集権型台帳システムは、ブロックチェーンデータ構造のブロックに記憶されている、透過的で、変更不可能で、暗号学的に検証可能なデータを提供する、集中型高信頼性統括機関を含み得る。保存されているデータは、例えば、トランザクションログのためだけでなく他のトランザクションデータおよびブロックデータのためを含むログフォーマットであり得る。集中型高信頼性統括機関の存在により、ブロックチェーンベースの中央集権型台帳システムは、信頼を確立するためにコンセンサスプロセスを行う必要がない。いくつかの実施形態においては、ブロックチェーンベースの中央集権型台帳システムは、典型的なブロックチェーンベース分散型または非中央集権型台帳システムと比較して、より効率的となり得る。いくつかの実施形態においては、ブロックチェーンベースの中央集権型台帳システムは、信頼性、効率、およびストレージパフォーマンスが向上したクラウドベースのストレージサービスを提供し得る。
いくつかの実施形態においては、中央集権型台帳システムは、ブロックチェーンネットワークのノードであり得る。例えば、中央集権型台帳システムは、ブロックチェーンネットワーク内の非コンセンサスノードであり得るし、ブロックチェーンネットワーク内のコンセンサスノードもしくは他の非コンセンサスノードに、またはブロックチェーンネットワークの外部にあるエンティティに、高度に信頼性があり高パフォーマンスな監査可能ストリーミング台帳サービスを提供し得る。
図1は、本明細書の実施形態を実行するために使用され得る環境100の例を示している図である。いくつかの例においては、環境100は、エンティティがコンソーシアムブロックチェーンネットワーク102に関与することを可能にする。環境100は、コンピューティングシステム106、108、およびネットワーク110を含む。いくつかの例においては、ネットワーク110は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、インターネット、またはその組合せを含み、ウェブサイト、ユーザデバイス(例えば、コンピューティングデバイス)、およびバックエンドシステムを接続する。いくつかの例においては、ネットワーク110は、有線および/または無線通信リンクを介してアクセスされ得る。いくつかの例においては、ネットワーク110は、コンソーシアムブロックチェーンネットワーク102との通信およびコンソーシアムブロックチェーンネットワーク102内の通信を可能にする。一般に、ネットワーク110は、1つまたは複数の通信ネットワークを表す。いくつかのケースにおいては、コンピューティングシステム106、108は、クラウドコンピューティングシステムのノード(図示せず)であり得る、または、コンピューティングシステム106、108の各々は、ネットワークによって相互接続され分散処理システムとして機能する多数のコンピュータを含む別個のクラウドコンピューティングシステムであり得る。
図示した例においては、コンピューティングシステム106、108の各々は、コンソーシアムブロックチェーンネットワーク102内のノードとしての関与を可能にする任意の適切なコンピューティングシステムを含み得る。コンピューティングシステムの例は、サーバ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピューティングデバイス、およびスマートフォンを含むがこれらに限定されない。いくつかの例においては、コンピューティングシステム106、108は、コンソーシアムブロックチェーンネットワーク102とやりとりするための1つまたは複数のコンピュータ実施サービスをホストする。例えば、コンピューティングシステム106は、第1のエンティティが1つまたは複数の他のエンティティ(例えば、他のユーザ)とのトランザクションを管理するために使用するトランザクション管理システムなどといった、第1のエンティティ(例えば、ユーザA)のコンピュータ実施サービスをホストすることができる。コンピューティングシステム108は、第2のエンティティが1つまたは複数の他のエンティティ(例えば、他のユーザ)とのトランザクションを管理するために使用するトランザクション管理システムなどといった、第2のエンティティ(例えば、ユーザB)のコンピュータ実施サービスをホストすることができる。図1の例においては、コンソーシアムブロックチェーンネットワーク102を、ノードからなるピア・ツー・ピアネットワークとして表しており、コンピューティングシステム106、108は、コンソーシアムブロックチェーンネットワーク102に関与する、第1のエンティティおよび第2のエンティティのノードをそれぞれ提供する。
図2は、本明細書の実施形態による、機構200の例を図示している図である。例示的な概念的機構200は、関与者A、関与者B、および関与者Cにそれぞれ対応する関与者システム202、204、206を含む。各関与者(例えば、ユーザ、企業)は、少なくともそのいくつかがブロックチェーン216に情報を変更不可能な形で記録する複数のノード214を含むピア・ツー・ピアネットワークとして提供されたブロックチェーンネットワーク212に関与する。単一のブロックチェーン216をブロックチェーンネットワーク212内に概略的に図示しているが、本明細書でさらに詳細に説明しているように、ブロックチェーン216の複数のコピーが、提供され、ブロックチェーンネットワーク212にわたって維持管理される。
図示した例においては、関与者システム202、204、206の各々は、関与者A、関与者B、および関与者Cによってまたはそれらの代わりにそれぞれ提供され、ブロックチェーンネットワーク内のそれぞれのノード214として機能する。本明細書で使用しているように、ノードは、ブロックチェーンネットワーク212に接続されている個々のシステム(例えば、コンピュータ、サーバ)を一般的に指し、それぞれの関与者がブロックチェーンネットワークに関与することを可能にする。図2の例においては、関与者は、各ノード214に対応する。しかしながら、関与者がブロックチェーンネットワーク212内の複数のノード214を処理し得ることおよび/または複数の関与者がノード214を共有し得ることも考えられる。いくつかの例においては、関与者システム202、204、206は、あるプロトコル(例えば、ハイパーテキスト・トランスファー・プロトコル・セキュア(HTTPS))を使用して、および/またはリモートプロシージャコール(RPC)を使用して、ブロックチェーンネットワーク212と通信するまたはブロックチェーンネットワーク212を介して通信する。
ノード214は、ブロックチェーンネットワーク212内の関与についての様々な度合いを有し得る。例えば、いくつかのノード214が、コンセンサスプロセスに(例えば、ブロックをブロックチェーン216に追加するマイナーノードとして)関与し得る一方で、他のノード214が、コンセンサスプロセスに関与することはない。別の例としては、いくつかのノード214がブロックチェーン216の完全なコピーを記憶する一方で、他のノード214はブロックチェーン216の一部のコピーのみを記憶する。例えば、データアクセス権は、それぞれの関与者がそのそれぞれのシステムに記憶しているブロックチェーンデータに制限し得る。図2の例においては、関与者システム202、204、および206は、ブロックチェーン216の完全なコピー216'、216''、および216'''をそれぞれ記憶している。
ブロックチェーン(例えば、図2のブロックチェーン216)は、各ブロックがデータを記憶しているブロックのチェーンで構成される。データの例としては、2つ以上の関与者間のトランザクションを表すトランザクションデータを含む。トランザクションデータをブロックチェーンに記憶されているデータレコードの例として使用している。トランザクションの例は、価値のあるもの(例えば、資産、製品、サービス、通貨)の交換を含み得るがこれに限定されない。いくつかの実施形態においては、台帳システムにおいて実行される1つまたは複数のオペレーションがブロックチェーン内のトランザクションデータとして記憶され得る。例えば、トランザクションデータは、ブロックチェーンに記憶されているデータについての1つまたは複数のオペレーションもしくは操作、外部リソースから取得した情報(例えば、タイムスタンプ情報)、またはブロックチェーン(例えば、文書、画像、ビデオ、オーディオ)に記憶され得る任意の適切なデータを含み得る。トランザクションデータは、ブロックチェーン内に変更不可能な形で記憶される。すなわち、トランザクションデータを変更することはできない。
ブロックに記憶する前に、トランザクションデータはハッシュ化される。ハッシュ化は、トランザクションデータ(文字列データとして提供される)を固定長のハッシュ値(文字列データとしても提供される)に変換するプロセスである。ハッシュ値を逆ハッシュ化してトランザクションデータを取得することはできない。ハッシュ化は、トランザクションデータにおけるわずかな変化でさえも完全に異なるハッシュ値という結果になることを保証している。さらに、上述したように、ハッシュ値は固定長である。すなわち、トランザクションデータのサイズに関係なく、ハッシュ値の長さは固定される。ハッシュ化は、ハッシュ関数によってトランザクションデータを処理してハッシュ値を生成することを含む。ハッシュ関数の例は、256ビットハッシュ値を出力するセキュアなハッシュアルゴリズム(SHA)-256を含むがこれに限定されない。
複数のトランザクションのトランザクションデータがハッシュ化されブロックに記憶される。例えば、2つのトランザクションのハッシュ値が提供されると、それら自身がハッシュ化され別のハッシュを提供する。このプロセスは、すべてのトランザクションがブロックに記憶されるように、単一のハッシュ値が提供されるまで繰り返される。このようなハッシュ値は、Merkleルートハッシュと称され、ブロックのヘッダに記憶される。トランザクションについての何らかの変化は、そのハッシュ値における変化、最終的に、Merkleルートハッシュにおける変化をもたらすことになる。
ブロックは、コンセンサスプロトコルを介してブロックチェーンに追加される。ブロックチェーンネットワーク内の複数のノードは、コンセンサスプロトコルに関与し、ブロックがブロックチェーンに追加されるようにする作業を行う。そのようなノードをコンセンサスノードと称する。上述したように、PBFTは、コンセンサスプロトコルの非限定的な例として使用される。コンセンサスノードは、コンセンサスプロトコルを実行してトランザクションをブロックチェーンに追加し、ブロックチェーンネットワークの総合的な状態を更新する。
さらに詳細には、コンセンサスノードは、ブロックヘッダを生成し、ブロック内のトランザクションのすべてをハッシュ化し、単一のハッシュ値がブロック内のすべてのトランザクションに対して提供される(Merkleルートハッシュ)まで、ハッシュ値がペアになるように組み合わせてさらなるハッシュ値を生成する。このハッシュがブロックヘッダに追加される。コンセンサスノードはまた、ブロックチェーン内の最新ブロック(すなわち、ブロックチェーンに追加された最終ブロック)のハッシュ値を決定する。コンセンサスノードはまた、ノンス値およびタイムスタンプをブロックヘッダに追加する。
一般に、PBFTは、Byzantine障害(例えば、正常に動作していないノード、不正ノード)に耐性がある実用的Byzantineステートマシンの複製を提供する。このことは、障害が生じるであろうことを想定すること(例えば、独立したノードの故障の存在および/またはコンセンサスノードによって送信される操作メッセージを想定すること)によってPBFTでは実現される。PBFTでは、コンセンサスノードは、プライマリコンセンサスノードおよびバックアップコンセンサスノードを含むシーケンスにおいて提供される。プライマリコンセンサスノードは、定期的に変更され、トランザクションは、ブロックチェーンネットワークの系全体状態に関して合意に至ったブロックチェーンネットワーク内のすべてのコンセンサスノードによってブロックチェーンに追加される。このプロセスにおいては、メッセージは、コンセンサスノード間で送信され、各コンセンサスノードは、メッセージが指定のピアノードから受信されたことを証明し、メッセージが送信中に変更されなかったことを検証する。
PBFTでは、多様な局面において、コンセンサスプロトコルが、同じ状態で開始するすべてのコンセンサスノードに提供される。はじめに、クライアントは、サービスオペレーションを発動する(例えば、ブロックチェーンネットワーク内のトランザクションを実行する)ためにプライマリコンセンサスノードに要求を送信する。要求を受信したことに応答して、プライマリコンセンサスノードは、バックアップコンセンサスノードに要求をマルチキャストする。バックアップコンセンサスノードが要求を実行し、各々がクライアントに応答を送信する。クライアントは、閾値数の応答が受信されるまで待機する。いくつかの例においては、クライアントは、f+1個の応答が受信されるまで待機する、ここで、fは、ブロックチェーンネットワークにおいて許容され得る、障害のあるコンセンサスノードの最大数である。目標達成は、ブロックチェーンに追加されることになるレコードの順で十分な数のコンセンサスノードが合意に至ることであり、レコードは、受理されるか拒否される。
いくつかのブロックチェーンネットワークにおいては、暗号化がトランザクションのプライバシーを保持するために実施される。例えば、ブロックチェーンネットワーク内の他のノードがトランザクションの詳細を理解することができないように、2つのノードがトランザクションをプライベートな状態を維持することを望む場合には、ノードはトランザクションデータを暗号化し得る。暗号化の例は、対称暗号化および非対称暗号化を含むがこれらに限定されない。対称暗号化とは、暗号化(平文から暗号文を生成すること)および復号(暗号文から平文を生成すること)の両方に関して単一の鍵を使用する暗号化プロセスを指す。対称暗号化においては、同一の鍵が複数のノードで利用可能であるため、各ノードがトランザクションデータを暗号化/復号し得る。
非対称暗号化は、各々が秘密鍵と公開鍵とを含む鍵ペアを使用しており、秘密鍵はそれぞれのノードにのみに対して既知となっており、公開鍵はブロックチェーンネットワーク内の他のノードのいずれかまたはすべてに対して既知となっている。あるノードは、別のノードの公開鍵を使用してデータを暗号化し、暗号化されたデータは、他のノードの秘密鍵を使用して復号され得る。例えば、図2を再び参照すれば、関与者Aは、関与者Bの公開鍵を使用してデータを暗号化し、暗号化されたデータを関与者Bに送信し得る。関与者Bは、その秘密鍵を使用して、暗号化されたデータ(暗号文)を復号し、元のデータ(平文)を抽出し得る。ノードの公開鍵で暗号化されたメッセージのみが、ノードの秘密鍵を使用して復号され得る。
非対称暗号化は、トランザクション内の関与者がトランザクション内の他の関与者だけでなくトランザクションの有効性を確認することを可能にするデジタル署名を提供するために使用される。例えば、あるノードは、メッセージをデジタル的に署名し得るし、別のノードは、関与者Aのデジタル署名に基づいてメッセージがそのノードによって送信されたことを確認し得る。デジタル署名はまた、メッセージが送信中に改竄されていないことを保証するために使用され得る。例えば、図2を再び参照すれば、関与者Aは、メッセージを関与者Bに送信しようとしている。関与者Aは、メッセージのハッシュを生成し、その後、その秘密鍵を使用して、ハッシュを暗号化して、暗号化したハッシュとしてデジタル署名を提供する。関与者Aは、デジタル署名をメッセージに付け加え、デジタル署名付きのメッセージを関与者Bに送信する。関与者Bは、関与者Aの公開鍵を使用してデジタル署名を復号し、ハッシュを抽出する。関与者Bは、メッセージをハッシュ化し、ハッシュを比較する。ハッシュが同一である場合には、関与者Bは、メッセージが確かに関与者Aからのものであり改竄されていないことを確認することができる。
図3は、本明細書の実施形態による、環境300の例を図示している図である。環境300は、台帳システム310におけるトラストタイムスタンプサービスを実施する。例示のみを目的として、ブロックチェーンベースの中央集権型台帳システムを台帳システム310の例として説明している。ブロックチェーンベースの中央集権型台帳システム310は、ブロックチェーン上に記憶されているデータの不変性、信頼性、および信用性を活用するためにブロックチェーンのデータ構造を採用している。中央集権型台帳システム310はまた、ブロックチェーン上に記憶されているデータについて中央集権型台帳システム310から独立しているトラストタイムサーバ350からのトラストタイムスタンプ情報を統合し得るし、このことが保存されているデータの信頼性、可監査性、および正当性を大幅に向上させることを可能としている。
いくつかの実施形態においては、中央集権型台帳システム310は、ネットワークによって相互接続された1つまたは複数のコンピュータを含むクラウドコンピューティングシステムであり得る。中央集権型台帳システム310は、任意の適切なコンピューティングデバイスを含み得る。コンピューティングデバイスの例は、サーバ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピューティングデバイス、およびスマートフォンを含むがこれらに限定されない。
いくつかの例においては、中央集権型台帳システム310は、1つまたは複数の台帳サーバ320-1から320-n(ここでは、まとめて「320」と称する)を含む。各台帳サーバ320は、少なくとも1つのクライアント、例えば、クライアント1またはクライアントmとのインタラクションを行うために1つまたは複数のコンピュータ実施サービスをホストし得る。クライアントは、個人、企業、組織、金融機関、保険会社、または任意の他のタイプのエンティティであり得る。いくつかのケースにおいては、クライアントは、1つまたは複数の台帳サーバに関連付けられ得る。いくつかのケースにおいては、台帳サーバは、1つまたは複数のクライアントに関連付けられ得る。
台帳サーバ320は、クライアント、例えば、クライアント1またはクライアントmに台帳サービスを提供するためにトランザクション管理システムをホストし得るし、クライアントは、1つまたは複数の関連デバイス、例えば、クライアントデバイス340-1または340-m(ここでは、まとめて「340」と称する)を使用して、台帳サービスを使用するためにトランザクション管理システムにアクセスし得る。クライアントデバイス340は、任意の適切なコンピューティングデバイスを含み得る。
台帳サーバ320によって提供される台帳サービスは、クライアントが、透過的で、変更不可能で、暗号学的に検証可能なブロックチェーンデータ構造、例えば、ブロックチェーンにそのデータを記憶することを可能にし得る。各台帳サーバ、例えば、320-1または320-nは、それぞれのブロックチェーン、例えば、322-1から322-n(ここでは、まとめて「322」と称する)を維持管理し得る。いくつかの実施形態においては、各台帳サーバ320は、ブロックチェーンネットワーク内のブロックチェーンネットワークノード(例えば、図1のコンピューティングシステム106もしくは108または図2のコンピューティングシステム202、204もしくは206)のものと同様の機能を実施し得る。例えば、各台帳サーバ320は、ブロックを生成し、ブロックをブロックチェーン322に追加し得る。いくつかの実施形態においては、各台帳サーバ320は、集中型高信頼性統括機関として機能し得るため、信頼を確立するために他のノード(例えば、他のクライアントデバイスまたは他の台帳サーバ)とコンセンサスプロセスを行う必要がない。例えば、各台帳サーバ320は、ブロックチェーンネットワークの非コンセンサスノードのものと同様の機能を実施し得る。いくつかの実施形態においては、各台帳サーバ320は、ブロックチェーン322を作成および/または管理する単一のノードであり得る。
いくつかの実施形態においては、各クライアントは、それぞれのブロックチェーンに関連付けられ得る。いくつかの実施形態においては、1つまたは複数のクライアントは、同一のブロックチェーンに関連付けられ得る。いくつかの実施形態においては、ブロックチェーンは、1つまたは複数のクライアントに関連付けられ得る。
いくつかの例においては、クライアント1は、個人、企業、または組織である。クライアント1に関連付けられたクライアントデバイス340-1は、中央集権型台帳システム310の台帳サービスを取得するために、台帳サーバ320-1とインタラクションを行い得る。例えば、クライアントデバイス340-1は、台帳サーバ320-1を介してクライアント1に関連付けられたトランザクションデータを読み出し記憶するために、ブロックチェーン322-1にアクセスし得る。クライアントデバイス340-1は、例えば、任意の適切なコンピュータ、モジュール、サーバ、または本明細書に記載の方法を行うようにプログラムされたコンピューティング要素を含み得る。いくつかの実施形態においては、クライアントデバイス340-1は、パーソナルコンピュータ、スマートフォン、タブレット、または他のハンドヘルドデバイスなどのユーザデバイスを含み得る。
いくつかの例においては、クライアントmは、保険会社または多数の個人ユーザを有する銀行などの金融機関である。クライアントmに関連付けられたクライアントデバイス340-mは、中央集権型台帳システム310の台帳サービスをクライアントmの個人ユーザに提供するために、台帳サーバ320-nとインタラクションを行い得る。例えば、クライアントデバイス340-mは、台帳サーバ320-nを介してクライアントmに関連付けられたトランザクションデータを読み出し記憶するために、ブロックチェーン322-nにアクセスし得る。いくつかのケースにおいては、クライアントmのユーザは、クライアントデバイス340-mを介して中央集権型台帳システム310の台帳サービスを要求し得る。
ブロックチェーンに記憶されているデータは、例えば、トランザクションログのためだけでなく他のトランザクションデータおよびブロックデータのためを含むログフォーマットであり得る。各ブロックチェーンは、データが変更不可能となっており変更することも修正することもできない方法でデータを記憶している。暗号化の使用が、保存されているデータに対する意図していない修正が存在していないことについての検証を可能にし得る。そのため、ブロックチェーン上に記録されているデータは、信頼性のあるものおよび信頼するに足るものとなる。
ブロックチェーンは、1つまたは複数のブロックを含み得る。ブロックチェーン内の各ブロックは、前段のブロックのハッシュを含むことによって、チェーンにおいてその直前にある前段のブロックに連結されている。各ブロックはまた、ローカルタイムスタンプ、それ自身のハッシュ、および1つまたは複数のトランザクションまたはトランザクションデータを含む。例えば、ブロックは、ブロックヘッダおよびブロック本体を含み得る。ブロックヘッダは、ローカルタイムスタンプ、それ自身のハッシュ、および前段のブロックのハッシュを含み得る。ブロック本体は、1つまたは複数のトランザクションまたはトランザクションデータなどのペイロード情報を含み得る。ローカルタイムスタンプは、ブロックが生成されたおよび/またはブロックチェーンに追加された時点またはインスタンスを示している。ローカルタイムスタンプは、台帳サーバ320、中央集権型台帳システム310、または中央集権型台帳システム310に関連付けられた集中型高信頼性統括機関によって内部的に提供され得る。
いくつかの実施形態においては、台帳サーバ320は、クライアントに関連付けられた一連のトランザクションを順次受信し、その後、ブロックチェーンのブロックにトランザクションを記憶する。いくつかの実施形態においては、台帳サーバ320は、1つまたは複数のトランザクションを、例えば、1つまたは複数のクライアントデバイス340から受信し得る。受信したトランザクションは、データバッファに記憶され得る。台帳サーバ320は、例えば、譲渡先および譲渡元のアカウント、トランザクション量、または他のタイプのトランザクションの情報を含む、トランザクションを記憶するために、ブロックを生成し得る。
いくつかの実施形態においては、台帳サーバ320は、ストリーム、アレイ、または別のデータ構造(トランザクションストレージストリームと称する)にトランザクションを記憶し得る。例えば、トランザクションは、トランザクションの生起時間に従ってトランザクションストレージストリームに順次記憶され得る。各トランザクションは、例えば、その生起時間に従って、トランザクションストレージストリームにおけるそれぞれのトランザクション識別子を有し得る。台帳サーバ320は、多数のトランザクションまたはトランザクションについての多数のハッシュを含むようにブロックを生成し得る。いくつかの実施形態においては、トランザクションまたはトランザクションについてのハッシュは、ハッシュの値に従って記憶される代わりに、対応するトランザクションの生起時間に従って記憶され得る。いくつかの実施形態においては、トランザクションについてのハッシュは、トランザクションのハッシュまたはトランザクションのそれぞれのトランザクション識別子のハッシュであり得る。ブロックは、ブロックチェーン(またはブロックストレージストリーム)を形成するようにブロックが互いに繋がれるように、その直前にある前段のブロックのハッシュを含み得る。そのような方法で、ブロックがトランザクションの詳細を記憶することはない。トランザクションの詳細は、台帳サーバ320内のトランザクションストレージストリームにまたは中央集権型台帳システム310内の別個のリポジトリに記憶され得る。
台帳サーバ320はまた、クライアントにトラストタイムスタンプサービスを提供し得る。いくつかの実施形態においては、台帳サーバ320は、台帳サーバ320に記憶されているデータのためのトラストタイムサーバ350からのトラストタイムスタンプを要求し得るし、このことが保存されているデータの信頼性、可監査性、および正当性を向上させることを可能としている。トラストタイムサーバ350は、中央集権型台帳システム310から独立している。トラストタイムサーバ350は、正確な(または正しい)時間サービスを提供する第三者トラストタイム統括機関に関連付けられ得るし、例えば、公的な監査エンティティ(企業、機関、または組織など)、および/または法的エンティティ(法廷または政府など)によってグローバルに承認または信任され得る。トラストタイムサーバ350によって提供されるトラストタイムスタンプ情報は、公証および/または法廷の識別無しで、正当性のあるものとして承認され得るまたはみなされ得る。例えば、トラストタイムサーバ350は、UTC(Coordinated Universal Time)/GMT(Greenwich Mean Time)時間サービスを提供するUTC/GMTであり得る。トラストタイムサーバ350はまた、国または地域に基準時間を提供するトラスト統括機関のタイムサーバであり得る。
中央集権型台帳システム310は、ネットワーク、例えば、図1のネットワーク110を介してトラストタイムサーバ350と通信し得る。顧客、例えば、台帳サーバ320からのタイムスタンプ要求を受信したことに応答して、トラストタイムサーバ350は、タイムスタンプ要求を受信した時点を示すタイムスタンプを生成し得る。トラストタイムサーバ350は、(例えば、タイムスタンプ要求のテキスト形式または画像形式のコピーといった)タイムスタンプおよびタイムスタンプ要求を認証することになる署名を生成し得る。例えば、トラストタイムサーバ350は、その秘密鍵を使用して署名することができ、そのため、タイムスタンプおよびタイムスタンプ要求を暗号学的に暗号化している。トラストタイムサーバ350は、タイムスタンプおよび関連する署名を含むデジタルタイムスタンプ証明書を生成し、顧客にタイムスタンプ証明書を含むタイムスタンプ情報を送信し得る。トラストタイムサーバ350は、例えば、タイムスタンプ要求あたり$1といったコストでトラストタイムスタンプサービスを提供し得る。
いくつかの実施形態においては、台帳サーバ320は、トラストタイムサーバ350にブロックチェーン内のブロックの時間を認証するためのタイムスタンプ要求を送信する。タイムスタンプ要求は、ブロックの情報、例えば、ブロックのハッシュを含み得る。タイムサーバ350は、ブロックについてのタイムスタンプおよび関連する署名またはタイムスタンプのハッシュおよび関連する署名を含むタイムスタンプ情報を生成および送信し得る。トラストタイムサーバ350からタイムスタンプ情報を受信した後に、台帳サーバ320は、タイムスタンプ情報またはタイムスタンプ情報のハッシュをブロックチェーン内のブロックの直後にある後続ブロックに記憶し得る。いくつかの実施形態においては、タイムスタンプ情報は、後続ブロックにトランザクションとして記憶され得る。タイムスタンプ情報を記憶しているブロックをタイムスタンプ付きブロックと称し得る。タイムスタンプ付きブロックは、タイムスタンプ情報のみを含むブロック、または、タイムスタンプ情報に加えて他のトランザクションも含むブロックであり得る。ブロックチェーン内のタイムスタンプ付きブロックが、ブロックチェーン内で互いに繋がれ得るまたは連結され得る。
いくつかの実施形態においては、台帳サーバ320は、所定のトリガ期間でトラストタイムサーバ350にブロックチェーン内のタイムスタンプが付与されていないブロックについてのタイムスタンプ要求を定期的に送信し得る。例えば、台帳サーバ320は、第1のタイムスタンプ要求を送信した以後の時間をカウントするタイマを含み得る。タイマが所定のトリガ期間をカウントすると、台帳サーバ320は、第1のタイムスタンプ要求の直後にある第2のタイムスタンプ要求を送信するようにトリガされ得る。中央集権型台帳システム310または台帳サーバ320は、異なるトリガ期間に対応する異なるコストでタイムスタンプサービスを提供し得る。トリガ期間は、ブロックチェーンまたは台帳サーバ320に関連付けられたクライアント(またはユーザ)によって事前に決定され得る。例えば、クライアントは、それぞれのコストおよびそれぞれのトリガ期間に対応するタイムスタンプサービスを選択し得る。
いくつかの実施形態においては、台帳サーバ320は、定期的にトラストタイムサーバ350にタイムスタンプ要求を送信しなくてもよい。例えば、台帳サーバ320は、オンデマンドでまたは台帳サーバ320によって生成されたブロックの数に基づいてタイムスタンプ要求を送信し得る。例えば、台帳サーバ320は、クライアントから命令を受信すると、または、所定の数のブロックがブロックチェーン322に直近で追加されると、ブロックのタイムスタンプ要求を送信し得る。
いくつかの実施形態においては、台帳サーバ320は、ブロック生成についての所定の期間で定期的にブロックを生成し得る。所定のトリガ期間は、ブロック生成についての期間と同一または異なり得る。例えば、トラストタイムサーバ350からタイムスタンプを取得するコストに起因して、すべてのブロックにタイムスタンプが付けられないように、所定のトリガ期間は、ブロック生成についての期間より長くなり得る。いくつかの実施形態においては、台帳サーバ320は、定期的にブロックを生成しなくてもよい。例えば、台帳サーバ320は、オンデマンドでまたは台帳サーバ320によって受信されたトランザクションの数に基づいてブロックを生成し得る。例えば、台帳サーバ320は、所定の数のトランザクションを受信すると新たなブロックを生成し得る。
いくつかの実施形態においては、台帳サーバ320は、トラストタイムサーバ350と通信するように構成された1つまたは複数のアプリケーションプログラミングインターフェース(API)を含み得る。APIは、サブルーチン定義、通信プロトコル、およびソフトウェアを構築するためのツールのセットを含み得るし、プログラムによって提供される機能性(モジュール、ライブラリ)を定義しており、厳密にどのようにして本機能性を実施するかということからの抽象化を可能にしている。ソフトウェアコンポーネントは、APIを介して互いとインタラクションを行う。いくつかの実施形態においては、台帳サーバ320は、タイムスタンプ要求をトラストタイムサーバ350に送信すること、または、トラストタイムサーバ350によって送信されたトラストタイムスタンプ情報、例えば、デジタルタイムスタンプ証明書またはタイムスタンプおよび関連する署名を受信することといった、タイムスタンプ要求に対する入力としてタイムスタンプが付与されていないブロックのハッシュを受信する機能性を実施し得る1つまたは複数のAPIを含み得る。
台帳サーバ320は、クライアントに関連付けられたクライアントデバイス340と通信するように構成された1つまたは複数のAPIを含み得る。1つまたは複数のAPIは、クライアントデバイス340からタイムスタンプサービスのための要求を受信すること、異なるコストおよび異なるトリガ期間で異なるタイムスタンプサービスをリスト化すること、クライアントデバイス340からタイムスタンプサービスの選択を受信すること、およびクライアントデバイス340に対応するトリガ期間を有する対応するコストを送信または表示することなどといった、機能性を実施し得る。いくつかの実施形態においては、1つまたは複数のAPIはまた、クライアントに関連付けられたブロックチェーン上に記憶されたトランザクションを検証または監査するための要求を受信すること、およびクライアントデバイス340に検証または監査結果を送信することなどといった、機能性を実施し得る。図4Aおよび図4Bにおいてさらに詳細に記載しているように、1つまたは複数のAPIはまた、クライアントデバイス340からトランザクションまたはトランザクションデータおよびクライアント署名を受信すること、ならびにトランザクションもしくはトランザクションデータおよび/またはクライアント署名についての受信または記憶に対する承認を示す台帳の署名を送信することなどといった、他の機能性を実施し得る。
いくつかの実施形態においては、中央集権型台帳システム310は、中央集権型サーバ330を含む。中央集権型サーバ330は、中央集権型台帳システム310内の多数の台帳サーバ320と通信し得る。いくつかの実施形態においては、台帳サーバ320は、中央集権型サーバ330を介してクライアントデバイス340と通信する。例えば、中央集権型サーバ330は、クライアントデバイス340からデータを受信し、クライアントデバイス340に対応する(または割り当てられた)台帳サーバ320にデータを送信し得る。
いくつかの実施形態においては、中央集権型サーバ330は、中央集権型台帳システム310のための標準タイムサーバを維持管理し得るし、台帳サーバ320に内部タイムスタンプ(および/または関連する署名)を提供し得る。例えば、台帳サーバ320が新たなブロックを生成する場合には、台帳サーバ320は、中央集権型サーバ330から内部タイムスタンプ(および/または関連する署名)を取得し、内部タイムスタンプ(および/または関連する署名)を新たなブロックに記憶し得る。
いくつかの実施形態においては、台帳サーバ320の各々は、中央集権型サーバ330を介してトラストタイムサーバ350と通信する。例えば、台帳サーバ320は、中央集権型サーバ330に始原のタイムスタンプ要求を送信し得るし、中央集権型サーバ330は、例えば、中央集権型サーバ330内の中央集権型APIを介して、トラストタイムサーバ350に始原のタイムスタンプ要求またはタイムスタンプ要求に関連付けられた中央集権型サーバタイムスタンプ要求を送信し得る。中央集権型サーバ330は、台帳サーバ320にトラストタイムサーバ350から取得したトラストタイムスタンプ情報を提供し得る。いくつかの他の実施形態においては、上述したように、台帳サーバ320の各々は、中央集権型サーバ330を用いることなく直接、トラストタイムサーバ350と通信し得る。
図4Aは、本明細書の実施形態による、単一のクライアントに関連付けられた単一の台帳サーバにおいてトラストタイムスタンプサービスを実施するためのブロックチェーンベースの中央集権型台帳システム400などの台帳システムの例を図示している図である。ブロックチェーンベースの中央集権型台帳システム400は、クライアントデバイス410に関連付けられた単一のクライアントに台帳サービスを提供することに充てられた単一の台帳サーバ420を含み得る。ブロックチェーンベースの中央集権型台帳システム400は、図3の中央集権型台帳システム310の一例であり得る。例えば、台帳サーバ420は、図3の台帳サーバ320-1の一例であり得る。クライアントデバイス410は、図3のクライアントデバイス340-1の一例であり得る。クライアントは、ブロックチェーンベースの中央集権型台帳システム400において、クライアントデバイス410を使用して、台帳サーバ420によって提供される台帳サービスにアクセスする。台帳サーバ420はまた、例えば、図3のトラストタイムサーバ350であり得る、トラストタイムサーバ430と通信することによってクライアントにトラストタイムスタンプサービスを提供し得る。
台帳サーバ420は、クライアントに排他的に台帳サービスおよびトラストタイムスタンプサービスを提供し得る。台帳サーバ420は、そのクライアントに対して排他的におよび中央集権型台帳システム400内の他のクライアントとは独立して(または分離して)ブロックチェーンにクライアントに関連付けられたトランザクションデータを記憶し得る。台帳サーバ420は、台帳サーバ420内のブロックチェーンに記憶されているクライアントに関連付けられたトランザクションデータに対して排他的にトラストタイムスタンプ情報を要求および記憶し得る。クライアントは、ブロックチェーン内のトランザクションを記憶するための管理者権限を有し得る。いくつかのケースにおいては、クライアントは、第三者に、第三者がクライアントに関連付けられたブロックチェーンにトランザクションを記憶することを許可する二次的な台帳権限を提供し得る。
いくつかの実施形態においては、クライアントに関連付けられたトランザクション(またはトランザクションデータ)が台帳サーバ420に記憶されている場合には、クライアントは、クライアントデバイス410を使用して、クライアント署名を台帳サーバ420に送信し得る。クライアント署名は、トランザクションが完了したことおよび/または台帳サーバ420に記憶されることをクライアントが承認したことを示し得る。そのため、クライアントは、トランザクションを否認することはできない。
いくつかの実施形態においては、トランザクション(またはトランザクションデータ)を受信および/または台帳サーバ420に(例えば、ブロックチェーンに)記憶した後に、台帳サーバ420は、台帳の署名をクライアントデバイス410に送信し得る。台帳の署名は、トランザクションの受信および/または記憶を台帳サーバ420が承認したことを示し得る。そのため、台帳サーバ420は、トランザクションを記憶したことを否定することはできない。
いくつかの実施形態においては、台帳サーバ420は、クライアントと関連しているとともに台帳サーバ420に記憶されているトランザクションについてのタイムスタンプ要求をトラストタイムサーバ430に送信し得る。トラストタイムサーバ430は、トランザクションについてのタイムスタンプおよび関連する署名を台帳サーバ420に提供し得る。タイムスタンプ署名は、トランザクションの情報を含み得る。そのため、トラストタイムサーバ430は、トランザクションの時間についてのその承認およびトランザクションについてのタイムスタンプが信頼するに足るものであることを否定することはできない。
いくつかの実施形態においては、3つの関係者(クライアント、台帳サーバ、およびトラストタイムサーバ)の3つのそれぞれの権限は互いに独立しており、このことが中央集権型台帳システムに記憶されているトランザクションデータの信頼性および可監査性を向上させることを可能としている。
図4Bは、本明細書の実施形態による、統合台帳サーバが複数のクライアントにトラストタイムスタンプサービスを提供するためのブロックチェーンベースの中央集権型台帳システム450などの台帳システムの例を図示している図である。ブロックチェーンベースの中央集権型台帳システム450は、クライアント1からクライアントnといった複数のクライアントに台帳サービスを提供するための単一の統合台帳サーバ470を含み得る。ブロックチェーンベースの中央集権型台帳システム450は、図3の中央集権型台帳システム310の別の例であり得る。例えば、統合台帳サーバ470は、図3の台帳サーバ320の一例であり得る。各クライアント、クライアント1からクライアントnは、460-1から460-nといったそれぞれのクライアントデバイスと関連付けられ得る。いくつかの実施形態においては、クライアントデバイス460-1から460-nは、図3のクライアントデバイス340-1または340-mの一例であり得る。各クライアントは、そのそれぞれのクライアントデバイス460を使用して、ブロックチェーンベースの中央集権型台帳システム450において、台帳サーバ420によって提供される台帳サービスにアクセスし得る。例として、クライアントは、顧客銀行などの複数の金融機関を含み得る。
各クライアントは、その関連クライアントデバイスを使用して、他のクライアントと共有している統合ブロックチェーンにトランザクション(またはトランザクションデータ)を記憶し得る。図4Aと同様に、各クライアントは、それぞれのクライアント署名を台帳サーバ470に送信し得るし、台帳サーバ470は、対応する台帳の署名をクライアントに返信し得る。台帳サーバ470は、統合ブロックチェーンに記憶されているトランザクションについてのタイムスタンプ要求をトラストタイムサーバ430に送信し、トランザクションについてのタイムスタンプ情報を受信して統合ブロックチェーンに記憶し得る。
図5A〜5Cは、本明細書の実施形態による、トラストポイントを管理するための台帳システムの例を図示している概略図である。台帳システムは、図1のコンソーシアムブロックチェーンネットワーク102もしくは図2のブロックチェーンネットワーク212、または図3のブロックチェーンベースの中央集権型台帳システム310、図4Aのブロックチェーンベースの中央集権型台帳システム400、もしくは図5Bのブロックチェーンベースの中央集権型台帳システム450などのブロックチェーンベースの台帳システムであり得る。台帳システムは、ブロックチェーンを用いない台帳システムでもあり得る。台帳システムは、一連のレコードを記憶する。各レコードは、台帳システム内のトランザクションまたはブロックチェーン内のブロックを含み得る。例示を目的として、トランザクションをレコードの例として説明している。
図5Aに図示しているように、例えば、TXi-5からTXi+3、ここでは、iは5より大きい整数といった、一連のトランザクション(TX)が台帳システムに記憶され得る。各トランザクションは、例えば、TXiに対するiといった、それぞれのトランザクション識別子を有し得るし、台帳システムに一連のトランザクションの形でシーケンシャルに追加(または記憶)され得る。一連のトランザクションは、それぞれのトランザクション識別子に従って台帳システムに順に記憶され得る。トランザクションは、共に連結され得るまたは繋がれ得る。例えば、各トランザクションは、例えば、先行トランザクションの信用性を検証するためのトランザクションの直前にある先行トランザクションの、例えば、それぞれのハッシュといった、情報を記憶し得る。
いくつかの実施形態においては、各トランザクションは、トランザクションヘッダおよびトランザクション本体を含む。トランザクションヘッダは、ローカルタイムスタンプ、それ自身のハッシュ、および/または直前の先行トランザクションのハッシュを含み得る。トランザクション本体は、譲渡関与者、譲渡額、および/または譲渡時刻もしくは場所などのトランザクションのペイロード情報を含み得る。ローカルタイムスタンプは、トランザクションが生成されたおよび/または台帳システムに追加された時点またはインスタンスを示している。ローカルタイムスタンプは、台帳システムに関連付けられたサーバまたは台帳システムに関連付けられた集中型高信頼性統括機関によって内部的に提供され得る。
いくつかの実施形態においては、台帳システムは、一連のトランザクションにおけるトラストポイントを確立し得る。トラストポイントは、一連のトランザクションにおけるトラストポイントの前にあるトランザクションが信頼するに足るものであることを示す。一連のトランザクションにおけるトランザクションが検証されることになる場合には、台帳システムは、一連のトランザクションにおける隣接トラストポイントに先行するトランザクションを検証することなく、トランザクションに先行する隣接(例えば、最近傍)トラストポイントまでトランザクションをトレースすることによって、トランザクションが信頼するに足る形で検証されることを決定し得る。例えば、図5Aに図示しているように、トランザクションTXiは、台帳システムによって確立されたトラストポイントである。台帳システムがトランザクションTXi+3が信頼するに足るものであるかどうかを検証する際、台帳システムは、一連のトランザクションにおけるトランザクションTXi+3がTXi-1、TXi-2、…、TXi-5、またはより以前のトランザクションまで信頼するに足る形で後方にトレース可能であるかどうかを検証することなく、トランザクションTXi+3がトラストポイントTXiまで信頼するに足る形で後方にトレース可能であるかどうかを検証することだけが必要となり得る。
台帳システムは、例えば、指定のトランザクションが先行トラストポイントまで信頼するに足る形でトレース可能であり得ることを検証することによって、一連のトランザクションにおける指定のトランザクション(例えば、検討中のトランザクションまたは関心のあるトランザクション)がトラストポイントであるかどうかを決定し得る。先行トラストポイントは、一連のトランザクションにおける指定のトランザクションの前にある最近傍のトラストポイント、指定のトランザクションの前にある任意の他の先行トラストポイント、または一連のトランザクションにおけるトラストポイントのすべてにとっての大元となる始原のトランザクションであり得る。
いくつかの実施形態においては、台帳システムは、指定のトランザクションがトラストポイントまでトレース可能な情報を含んでいることを検証することによって、指定のトランザクションがトラストポイントまで信頼するに足る形でトレース可能であることを検証し得る。トレース可能な情報は、例えば、直前の先行トランザクションのハッシュ、直前の先行トランザクションのトランザクション識別子のハッシュ、または直前の先行トランザクションの信頼性を検証するために使用され得る任意の他のタイプの情報を含み得る。例えば、台帳システムは、一連のトランザクションにおける指定のトランザクションから先行トラストポイントまでの各トランザクションがトランザクションの直前にある先行トランザクションのそれぞれのハッシュを含んでいることを検証し得る。図5A中の例を使用すれば、トランザクションTXi+3が指定のトランザクションであるならば、台帳システムは、最近傍のトラストポイントであるトランザクションTXiを特定し、トランザクションTXi+3がトランザクションTXi+2まで信頼するに足る形で後方にトレース可能であり、トランザクションTXi+2がトランザクションTXi+1まで信頼するに足る形で後方にトレース可能であり、トランザクションTXi+1がトランザクションTXiまで信頼するに足る形で後方にトレース可能であるかどうかを検証することによって、ただし、トランザクションTXi+3がTXi-1、TXi-2、…、TXi-5まで信頼するに足る形で後方にトレース可能であるかどうかを検証することなく、トランザクションTXi+3が信頼するに足るものであることを検証し得る。検証は、例えば、一連のトランザクションにおける指定のトランザクションから先行トラストポイントまで後方にトレースすることによって、または、一連のトランザクションにおける先行トラストポイントから指定のトランザクションまで前方にトレースすることによって、前方に、後方に、または双方向に行われ得る。
いくつかの実施形態においては、台帳システムは、例えば、1時間、1日、1週、1ヶ月、または1年といった期間で、一連のトランザクションにおけるトラストポイントを定期的に確立し得る。期間は、クライアントの要求またはニーズごとに決定され得る。例えば、台帳システムは、異なる期間に対応する異なるコストでトラストポイントサービスを提供し得る。期間は、台帳システムに関連付けられたクライアント(またはユーザ)によって事前に決定され得る。クライアントは、それぞれのコストに対応するそれぞれの期間でトラストポイントサービスを選択し得る。
いくつかの実施形態においては、台帳システムは、定期的にトラストポイントを確立しなくてもよい。例えば、台帳システムは、オンデマンドでまたは台帳システムによって受信されたトランザクションの数に基づいてトラストポイントを確立し得る。例えば、台帳システムは、クライアントから要求を受信して、指定のトランザクションがトラストポイントであるかどうかおよび/または指定のトランザクション上にもしくは指定のトランザクションに隣接するトランザクション上にトラストポイントを確立しているかどうかを決定し得る。いくつかの実施形態においては、台帳システムはまた、トラストポイントが所定の数のトランザクションおきに存在するように、所定の数のトランザクションを受信すると新たなトラストポイントを確立し得る。
いくつかの実施形態においては、台帳システムは、トラストタイムサーバからの記憶されているトランザクションについてのトラストタイムスタンプ情報を要求し得る。トラストタイムサーバは、台帳システムから独立しており、正確な時間サービスを提供する第三者トラストタイム統括機関に関連付けられ得るし、例えば、公的な監査エンティティ(企業、機関、または組織など)および/または法的エンティティ(法廷または政府など)によってグローバルに承認または信任され得る。トラストタイムサーバは、例えば、図3のタイムサーバ350または図4A〜4Bのタイムサーバ430であり得る。トラストタイムサーバによって提供されるタイムスタンプ情報の信用性が承認されているので、記憶されているトランザクションについての台帳システムへのトラストタイムサーバのタイムスタンプ情報の統合が、台帳システムに記憶されているトランザクションの信頼性、可監査性、および正当性をさらに向上させることを可能としている。
台帳システムは、タイムスタンプ要求をトラストタイムサーバに送信し得る。いくつかの例においては、タイムスタンプ要求は、台帳システムによってトラストタイムサーバに送信される複数のタイムスタンプ要求のうちのタイムスタンプ要求の識別子を含む。いくつかの例においては、タイムスタンプ要求は、一連のトランザクションに記憶されている直近のトランザクションの識別子またはハッシュを含む。いくつかの例においては、複数のトランザクションは、ユニットまたはグループとみなされ得るし、台帳システムは、ユニット内のトランザクションについてのトラストタイムスタンプ情報を要求し得る。タイムスタンプ要求は、ユニット内のトランザクションのハッシュについてのハッシュダイジェストを含み得る。
トラストタイムサーバから、例えば、トラストタイムスタンプ(TS)および関連する署名といった、タイムスタンプ要求に対するトラストタイムスタンプ情報を受信した後に、台帳システムは、例えば、新たなトランザクションとして、トラストタイムスタンプ情報を記憶し得る、または、一連のトランザクションにおける別のトランザクションに追加され得る。新たなトランザクションは、一連のトランザクションにおける直近のトランザクションのハッシュを記憶することによって、一連のトランザクションに連結され得るまたは繋がれ得る。トラストタイムスタンプ情報を記憶する新たなトランザクションが、一連のトランザクションにおける新たなタイムスタンプトランザクションとしてラベル付けされ得るまたはマークされ得る。新たなタイムスタンプトランザクションは、一連のトランザクションにおける直近のトランザクションの直後に記憶される。
いくつかの実施形態においては、台帳システムは、ユニットに複数のトランザクションをグループ化し、ユニット内の最終トランザクションとしてタイムスタンプトランザクションを含み得る。いくつかの事例においては、タイムスタンプトランザクションは、ユニット内のトランザクションのすべてに対する承認されたトラストタイムスタンプ情報を含んでいるものとしてみなされ得る。
例えば、図5Bに図示しているように、トランザクションTXi-4、TXi-3、およびTXi-2はユニットとしてみなされ得る。いくつかの実施形態においては、台帳システムは、ユニット内の3つのトランザクションのハッシュを計算し、ハッシュのハッシュダイジェストを生成し得る。台帳システムは、その後、ユニット内のトランザクションのハッシュについてのハッシュダイジェストを含むタイムスタンプ要求を送信し得る。タイムスタンプ要求に対するトラストタイムスタンプおよび関連する署名を受信した後に、台帳システムは、直近のトランザクションTXi-2の直後に記憶される新たなトランザクションTXi-1にトラストタイムスタンプおよび関連する署名を記憶する。トランザクションTXi-1は、トラストタイムサーバからのトラストタイムスタンプ情報を記憶しているタイムスタンプトランザクションであり得る。トランザクションTXi-1は、最終トランザクションとしてユニットに含まれるとともに、直前の先行トランザクションTXi-2のハッシュを記憶することによってトランザクションに連結されている。いくつかの実施形態においては、タイムスタンプトランザクションTXi-1はまた、ユニット内のトランザクション、すなわち、TXi-4、TXi-3、およびTXi-2のハッシュについてのハッシュダイジェストを記憶し得るし、ユニット内のトランザクションは、タイムスタンプトランザクションと同一のトラストスタンプを有しているとみなされ得る。
同様に、トランザクションTXi、TXi+1、TXi+2もユニットとしてみなされ得る。台帳システムは、トラストタイムサーバからユニットについてのトラストタイムスタンプ情報を取得し、一連のトランザクションにおけるTXi+2の直後にあるトランザクションTXi+3にトラストタイムスタンプ情報を記憶し得る。トランザクションTXi+3は、新たなタイムスタンプトランザクションであり、トランザクションTXi、TXi+1、およびTXi+2を含むユニット内の最終トランザクションとして含まれる。
いくつかの実施形態においては、2つの隣接タイムスタンプトランザクション間のトランザクションは、2つの隣接タイムスタンプトランザクションのうちの後者と同一のトラストタイムスタンプを有しているとみなされる。トランザクションおよび後者のタイムスタンプトランザクションは、ユニット内の最終トランザクションとして後者のタイムスタンプトランザクションを有するユニットとしてみなされ得る。
いくつかの実施形態においては、台帳システムは、第1のタイムスタンプトランザクション後に一連のトランザクションに記憶されているトランザクションを収集し、例えば、収集されたトランザクションのハッシュについてのハッシュダイジェストといった収集されたトランザクションの情報を含むタイムスタンプ要求をトラストタイムサーバに送信し得る。トラストタイムサーバからトラストタイムスタンプおよび関連する署名を受信した後に、台帳システムは、第2のタイムスタンプトランザクションとして新たなトランザクションにトラストタイムスタンプおよび関連する署名を記憶する。第1のタイムスタンプトランザクションの後にある収集されたトランザクションは、第2のタイムスタンプトランザクションと同一のトラストタイムスタンプを有しているとみなされ得る。収集されたトランザクションおよび第2のタイムスタンプトランザクションはユニットとしてみなされ得る。
いくつかの実施形態においては、台帳システムは、あるトリガ期間でトラストタイムサーバにタイムスタンプ要求を定期的に送信し得る。台帳システムは、第1のタイムスタンプ要求を送信した以後の時間をカウントするタイマを含み得る。タイマがトリガ期間までカウントすると、台帳システムは、第2のタイムスタンプ要求をトラストタイムサーバに送信するようにトリガされ得る。
いくつかの実施形態においては、台帳システムは、定期的にトラストタイムサーバにタイムスタンプ要求を送信しなくてもよい。例えば、台帳システムは、クライアントから命令を受信すると、または、所定の数のトランザクションが前回のタイムスタンプ要求後に一連のトランザクションに直近で追加されると、タイムスタンプ要求を送信し得る。例えば、図5Bに図示しているように、台帳システムは、3つのトランザクションごとについての、例えば、TXi-4、TXi-3、およびTXi-2についての、または、TXi、TXi+1、およびTXi+2についてのタイムスタンプ要求を送信し、3つのトランザクションごとについてのタイムスタンプトランザクション、例えば、トランザクションTXi-5、TXi-1、およびTXi+3を生成し得る。
図5Cは、本明細書の実施形態による、タイムスタンプトランザクションに対するトラストポイントを管理する台帳システムの例を示している。いくつかの実施形態においては、台帳システムは、指定のトランザクションに対するトラストポイントを確立するための要求を受信し得る。指定のトランザクションは、トラストポイントであってもなくてもよい。いくつかの実施形態においては、台帳システムは、(1)指定のトランザクションが一連のトランザクションにおける別のトラストポイントまで信頼するに足る形でトレース可能である、および、(2)特定のトランザクションがトラストタイムサーバからのトラストタイムスタンプ情報を記憶しているタイムスタンプトランザクションであるといった両方の条件を満足している場合に、トラストポイントとして指定のトランザクションを確立し得る。いくつかの実施形態においては、台帳システムはまず、順にまたは同時に2つの条件を検証し得る。例えば、台帳システムは、例えば、特定のトランザクションが別のトラストポイントまで信頼するに足る形でトレース可能であり得ることを検証することによって、特定のトランザクションがトラストポイントであることを検証し、その後、指定のトランザクションがタイムスタンプトランザクションであるかどうかを決定し得る。いくつかの実施形態においては、台帳システムは、指定のトランザクションがタイムスタンプトランザクションであるかどうかをまず決定し、その後、特定のトランザクションが別のトラストポイントまで信頼するに足る形でトレース可能であり得るかどうかを決定し得る。指定のトランザクションが2つの条件の一方を満足していると台帳システムが決定すると、台帳システムは、指定のトランザクションが候補トラストポイントであると決定し得る。指定のトランザクションが2つの条件の両方を満足していると台帳システムが決定した後のみ、台帳システムは、指定のトランザクションがトラストポイントであると決定し得る。
いくつかの実施形態においては、指定のトランザクションがタイムスタンプトランザクションであるかどうかを決定するために、台帳システムは、(例えば、それぞれのトランザクション識別子をリスト化することによって)一連のトランザクションにおけるタイムスタンプトランザクションをリスト化するテーブルまたは別の適切なデータ構造を記憶している。台帳システムは、指定のトランザクションがタイムスタンプトランザクションのリストに存在しているかどうかを決定するためにテーブルを検索し得る。いくつかの実施形態においては、台帳システムは、テーブルまたは別の適切なデータ構造に、例えば、各ユニット内のトランザクションのトランザクション識別子といった、ユニットの情報を記憶し得る。台帳システムは、指定のトランザクションのトランザクション識別子が対応するユニット内の最終トランザクション識別子であることを決定することによって、指定のトランザクションがタイムスタンプトランザクションであるかどうかを決定し得る。
指定のトランザクションがタイムスタンプトランザクションであると台帳システムが決定した場合には、台帳システムは、トラストポイントとして指定のトランザクションをマークし、トラストポイントとして指定のトランザクションを確立し得る。台帳システムはまた、一連のトランザクションにおけるトラストポイントをリスト化するテーブルまたは別の適切なデータ構造を記憶し得る。
指定のトランザクションがタイムスタンプトランザクションではないと台帳システムが決定した場合には、台帳システムは、トラストポイントとして指定のトランザクションをマークしなくてもよい。台帳システムは、指定のトランザクションに隣接するタイムスタンプトランザクションを特定し、指定のトランザクションについてのトラストポイントとしてタイムスタンプトランザクションをマークし得る。指定のトランザクションに隣接するタイムスタンプトランザクションは、指定のトランザクションに先行するまたは後続するタイムスタンプトランザクションであり得る。例えば、台帳システムは、タイムスタンプトランザクションとなる指定のトランザクションを含むユニット内の最終トランザクションを特定することによって、または、タイムスタンプトランザクションとなる指定のトランザクションを含むユニットの直前にある先行ユニット内の最終トランザクションを特定することによって、隣接タイムスタンプトランザクションを特定し得る。例えば、図5Cに図示しているように、トランザクションTXiがトラストポイントであるがタイムスタンプトランザクションではないと台帳システムが決定した後に、台帳システムは、トランザクションTXiと同一のユニット内の隣接タイムスタンプトランザクションTXi+3または直前の先行ユニット内の隣接タイムスタンプトランザクションTXi-1を特定し得る。
いくつかの実施形態においては、指定のトランザクションに対して最近傍のタイムスタンプトランザクションが、指定のトランザクションについての候補トラストポイントとして特定され得る。例えば、台帳システムは、指定のトランザクションについてのトランザクション識別子に最も近いトランザクション識別子に関連付けられたタイムスタンプトランザクションを特定することによって、一連のトランザクションにおけるタイムスタンプトランザクションのうちの隣接タイムスタンプトランザクションを特定し得る。
指定のトランザクションについての候補トラストポイントとして指定のトランザクションに隣接するタイムスタンプトランザクションを特定した後に、台帳システムは、さらに、例えば、タイムスタンプトランザクションが指定のトランザクションまでトレース可能である情報を含んでいるかどうかを決定することによって、タイムスタンプトランザクションが指定のトランザクションまで信頼するに足る形でトレース可能であるかどうかを決定する。いくつかの実施形態においては、台帳システムは、一連のトランザクションにおけるタイムスタンプトランザクションから指定のトランザクションまでの各トランザクションがトランザクションの直前にある先行トランザクションのそれぞれのハッシュを含んでいることを検証することによって、タイムスタンプトランザクションが指定のトランザクションまで信頼するに足る形でトレース可能であると決定する。例えば、図5Cに示しているように、トランザクションTXiがタイムスタンプトランザクションTXi-1まで信頼するに足る形でトレース可能であるかどうかを決定するために、台帳システムは、トランザクションTXiが、例えば、トランザクションTXiのヘッダに、タイムスタンプトランザクションTXi-1のハッシュを含んでいるかどうかを決定し得る。タイムスタンプトランザクションTXi+3がトランザクションTXiまでトレース可能であるかどうかを決定するために、台帳システムは、トランザクションTXi+3がトランザクションTXi+2のハッシュを含んでいるかどうか、トランザクションTXi+2がトランザクションTXi+1のハッシュを含んでいるかどうか、およびトランザクションTXi+1がトランザクションTXiのハッシュを含んでいるかどうかを検証し得る。いくつかの実施形態においては、複数のトランザクションのユニットを設定する場合には、台帳システムは、タイムスタンプトランザクションが指定のトランザクションと同一のユニット内の最終トランザクションであることによって、または、タイムスタンプトランザクションが直前の先行ユニット内の最終トランザクションであることを検証することによって、タイムスタンプトランザクションが指定のトランザクションまで信頼するに足る形でトレース可能であると決定する。
タイムスタンプトランザクションが指定のトランザクションまで信頼するに足る形でトレース可能であると台帳システムが決定すると、台帳システムは、指定のトランザクションについてのトラストポイントとして、指定のトランザクションではなく、タイムスタンプトランザクションをマークし、タイムスタンプトランザクション上にトラストポイントを確立し得る。タイムスタンプトランザクションが指定のトランザクションまで信頼するに足る形でトレース可能ではないと台帳システムが決定すると、台帳システムは、別の隣接タイムスタンプトランザクションを検索することを継続し、上記の工程を繰り返し得る。
いくつかの実施形態においては、台帳システムは、ブロックチェーン内の一連のトランザクションを記憶し得る。例えば、台帳システムは、図3の台帳システム310であり得る。台帳システムは、台帳サーバ、例えば、図3の台帳サーバ320、図4Aの台帳サーバ320、または図4Bの台帳サーバ470を含み得る。例として、ブロックチェーンは、図3のブロックチェーン322であり得る。台帳システムは、ブロックチェーン内のトランザクションを記憶するブロックをシーケンシャルに生成し得る。ブロックの各々は、1つまたは複数のトランザクションを記憶し得る。各ブロックは、例えば、ブロックチェーン内のブロックの直前にある先行ブロックのハッシュを記憶することによって、共に連結され得るまたは繋がれ得る。台帳システムは、所定の期間で定期的に、または非定期的に(例えば、オンデマンドでまたは所定の数のトランザクションに基づいて)、ブロックチェーン内のブロックを生成し得る。
台帳システムによるブロックの生成は、台帳システムにおいてトラストポイントを確立することから独立し得る。台帳システムによるブロックの生成はまた、トラストタイムサーバにタイムスタンプ要求を送信することおよび/または台帳システムに記憶されることになるタイムスタンプトランザクションを生成することから独立し得る。すなわち、ブロックの生成は、トラストタイムサーバからトラストタイムスタンプ情報を取得するためにユニットをグループ化することから独立し得る。例えば、台帳システムが、ユニットとしてトランザクションTXi-4、TXi-3、TXi-2、およびTXi-1をグループ化し得る一方で、台帳システムは、トランザクションTXi-5、TXi-4、およびTXi-3を記憶するブロックを生成し得る。いくつかの実施形態においては、ブロックの生成は、トラストタイムサーバにタイムスタンプ要求を送信することおよびタイムスタンプトランザクションを生成することに関連付けられ得る。例えば、台帳システムが、ユニット内のトランザクションについてのタイムスタンプトランザクションを生成した後に、ブロックを生成し得る、ここで、ブロックは、ユニット内のトランザクションおよびタイムスタンプトランザクションを記憶している。例として、台帳システムは、トランザクションTXi-4、TXi-3、TXi-2、およびTXi-1を記憶するブロックを生成し得る。
いくつかの実施形態においては、台帳システムによるトラストポイントの決定(または確立)は、タイムスタンプトランザクションのタイムスタンプ要求の送信および/またはタイムスタンプトランザクションの生成から独立し得る。いくつかの実施形態においては、台帳システムによるトラストポイントの決定は、タイムスタンプ要求の送信およびタイムスタンプトランザクションの生成に関連付けられ得る。例えば、台帳システムはまず、タイムスタンプトランザクションを生成し、その後、タイムスタンプトランザクションをトラストポイントとして確立し得るかどうかを決定し得る。
図6は、本明細書の実施形態に従って実行され得るタイムスタンプサービスの実施形態のためのプロセス600の例を図示しているフローチャートである。便宜上、プロセス600は、1つまたは複数のロケーションに位置する1つまたは複数のコンピュータのシステムによって行われるように記載しており、本明細書に従って適切にプログラムされることになる。例えば、台帳システムは、プロセス600を行い得る。台帳システムは、図1のコンソーシアムブロックチェーンネットワーク102もしくは図2のブロックチェーンネットワーク212、または図3のブロックチェーンベースの中央集権型台帳システム310、またはブロックチェーンを用いない台帳システムなどのブロックチェーンベースの台帳システムであり得る。
601において、例えば、台帳システム内のコンピューティングデバイスによって、台帳システムに記憶されている一連のトランザクションにおける指定のトランザクションに対するトラストポイントを確立するための要求を取得する。指定のトランザクションは、検討中のまたは関心のある特定されたトランザクションであり得る。例えば、指定のトランザクションは、一連のトランザクションにおける最新のトランザクションであり得る。指定のトランザクションを、特定し得る、例えば、指定のトランザクションに対するトラストポイントを特定する機能を呼び出すためのスマートコントラクトに指定のトランザクションの識別子を入力し得る。
トラストポイントは、一連のトランザクションにおけるトラストポイントの前にあるトランザクションが信頼するに足るものであることを示す。そのため、一連のトランザクションにおける検証対象のトランザクションの信頼性の検証には、検証対象のトランザクションの信頼性とその最近傍の先行トラストポイントとの間のトランザクションの信頼性を検証することだけが必要となり得る。
いくつかの実施形態においては、一連のトランザクションにおける各トランザクションは、それぞれのトランザクション識別子に関連付けられており、一連のトランザクションは、それぞれのトランザクション識別子に従って順番に記憶されている。一連のトランザクションは、例えば、一連のトランザクションにおけるトランザクションの直前にある先行トランザクションのそれぞれのハッシュを記憶している各トランザクションによって、共に連結され得るまたは繋がれ得る。
いくつかの実施形態においては、トラストポイントを確立するための要求は、オンデマンドでクライアントによって生成される明示的な要求、または、所定の期間の経過後もしくはある数のトランザクションの受信後などといったトリガイベント時の暗示的な要求であり得る。
いくつかの実施形態においては、図5Cに関して説明したことと同様に、指定のトランザクションに対するトラストポイントを確立するための要求は、602に関して説明しているように、(1)指定のトランザクションが一連のトランザクションにおける別のトラストポイントまで信頼するに足る形でトレース可能である、および、604から610に関して説明しているような、(2)特定のトランザクションがトラストタイムサーバからのトラストタイムスタンプ情報を記憶しているタイムスタンプトランザクションまで信頼するに足る形でトレース可能であるといった2つの条件を必要とし得る。いくつかの実施形態においては、2つの条件は、順にまたは同時に検証され得る。指定のトランザクションが2つの条件のうちの1つを満足すると台帳システムが決定すると、台帳システムは、指定のトランザクションが候補トラストポイントであると決定し得る。指定のトランザクションが2つの条件の両方を満足していると台帳システムが決定した後のみ、台帳システムは、指定のトランザクションがトラストポイントであると決定し得る。
602において、指定のトランザクションが別のトラストポイントまで信頼するに足る形でトレース可能であるかどうかを決定する。換言すれば、指定のトランザクションそのものが候補トラストポイントであるかどうかを決定する。いくつかの実施形態においては、台帳システムは、例えば、一連のトランザクションにおける指定のトランザクションから先行トラストポイントまでの各トランザクションがトランザクションの直前にある先行トランザクションのそれぞれのハッシュを含んでいるかどうかを検証することによって、指定のトランザクションが候補トラストポイントであるかどうかを決定する。台帳システムは、一連のトランザクションにおける指定のトランザクションから先行トラストポイントまで後方にトレースすること、または、先行トラストポイントから指定のトランザクションまでトレースすることのうちの少なくとも1つによって、指定のトランザクションが先行トラストポイントまで信頼するに足る形でトレース可能であるかどうかを検証し得る。先行トラストポイントは、一連のトランザクションにおける指定のトランザクションの直前にあるトラストポイント、または、一連のトランザクションにおけるトラストポイントにとっての大元となる最初のトランザクション(または始原のトランザクション)であり得る。
台帳システムは、一連のトランザクションにおけるトランザクションに対するトラストポイントを定期的に確立し得る。台帳システムはまた、オンデマンドでまたは直前の先行トラストポイントから追加されたトランザクションの数に従ってトラストポイントを確立し得る。台帳システムはまた、一連のトランザクションにおけるトランザクションがトラストポイントであるかどうかを要求ごとに検証し得る。
いくつかの実施形態においては、台帳システムは、複数のブロックを含むブロックチェーン内の一連のトランザクションを記憶している。ブロックの各々は、1つまたは複数のトランザクションを記憶し得るし、ブロックチェーンに直前の先行ブロックのハッシュを記憶することによって共に連結されるまたは繋がれている。ブロックの生成は、トラストポイントの確立または指定のトランザクションがトラストポイントであるとの決定から独立し得る。
603において、指定のトランザクションが候補トラストポイントではないと決定したことに応答して、プロセス600を終了する。台帳システムは、指定のトランザクションをトラストポイントとして確立することができないことを示すメッセージを生成し得る。メッセージは、クライアントデバイスに返送され得る、または、スクリーン上に表示され得る。
604において、指定のトランザクションが候補トラストポイントであると決定したことに応答して、台帳システムが、指定のトランザクションがトラストタイムサーバからのトラストタイムスタンプ情報を記憶しているタイムスタンプトランザクションであるかどうかを決定する。トラストタイムサーバは、台帳システムから独立しており、第三者トラストタイム統括機関に関連付けられ得る。
いくつかの実施形態においては、台帳システムは、タイムスタンプ要求をトラストタイムサーバに送信し得る。タイムスタンプ要求は、トラストタイムサーバに送信されるタイムスタンプ要求のうちのタイムスタンプ要求の識別子を含み得る。タイムスタンプ要求は、一連のトランザクションにおける直近のトランザクションのトランザクション識別子またはハッシュを含み得る。タイムスタンプ要求はまた、ユニット内のトランザクションのハッシュについてのハッシュダイジェストを含み得る。ユニットは、直前の先行タイムスタンプトランザクションから一連のトランザクションに記憶されているトランザクションを収集する。
トラストタイムサーバからタイムスタンプ要求に対するトラストタイムスタンプおよび関連する署名を受信した後に、台帳システムは、一連のトランザクションにおけるトランザクションとしてトラストタイムスタンプおよび関連する署名を記憶し得る。トラストタイムサーバからのトラストタイムスタンプおよび関連する署名を記憶しているトランザクションが、新たなタイムスタンプトランザクションとしてマークされ得る。新たなタイムスタンプトランザクションは、タイムスタンプ要求が送信された際の一連のトランザクションにおける直近のトランザクションの直前に記憶され得る。新たなタイムスタンプトランザクションは、直近のトランザクションのハッシュを記憶することによって一連のトランザクションに連結され得る。いくつかの実施形態においては、新たなタイムスタンプトランザクションは、直近のトランザクションを含むユニット内のトランザクションのハッシュについてのハッシュダイジェストを記憶し得る。ユニット内のトランザクションは、新たなタイムスタンプトランザクションと同一のトラストタイムスタンプを有するとみなされ得る。新たなタイムスタンプトランザクションは、最終トランザクションとしてユニットに含まれ得る。
いくつかの実施形態においては、台帳システムは、所定のトリガ期間でトラストタイムサーバにタイムスタンプ要求を定期的に送信し得る。台帳システムはまた、非定期的に、例えば、オンデマンドでまたは直前の先行タイムスタンプ要求の後に収集された所定の数のトランザクションに基づいて、トラストタイムサーバにタイムスタンプ要求を送信し得る。タイムスタンプ要求の送信は、ブロックの生成および/またはトラストポイントの確立から独立し得る。
606において、指定のトランザクションがタイムスタンプトランザクションであると決定したことに応答して、台帳システムが、トラストポイントとして指定のトランザクションをマークする、すなわち、台帳システムが、指定のトランザクション上にトラストポイントを確立する。
608において、指定のトランザクションがタイムスタンプトランザクションではないと決定したことに応答して、台帳システムが、一連のトランザクションにおける指定のトランザクションに隣接するタイムスタンプトランザクションを特定する。いくつかの実施形態においては、台帳システムは、タイムスタンプトランザクションとなる指定のトランザクションを含むユニット内の最終トランザクションを特定することによって、または、タイムスタンプトランザクションとなる指定のトランザクションを含むユニットの直前にある先行ユニット内の最終トランザクションを特定することによって、タイムスタンプトランザクションを特定し得る。いくつかの実施形態においては、台帳システムは、一連のトランザクションにおけるタイムスタンプトランザクションのトランザクション識別子をリスト化するテーブルを記憶している。台帳システムは、一連のトランザクションにおける任意の他のタイムスタンプトランザクションに関連付けられた任意の他のトランザクション識別子より指定のトランザクションのトランザクション識別子により近いトランザクション識別子に関連付けられたタイムスタンプトランザクションを特定することによって、指定のトランザクションに隣接するタイムスタンプトランザクションを特定し得る。
610において、台帳システムが、タイムスタンプトランザクションが指定のトランザクションまで信頼するに足る形でトレース可能であるかどうかを決定する。いくつかの実施形態においては、台帳システムは、タイムスタンプトランザクションが一連のトランザクションにおける指定のトランザクションに後続する場合にタイムスタンプトランザクションが指定のトランザクションの情報を含んでいるかどうかを検証し得る、または、タイムスタンプトランザクションが一連のトランザクションにおける指定のトランザクションに先行している場合に指定のトランザクションがタイムスタンプトランザクションの情報を含んでいるかどうかを検証し得る。いくつかの実施形態においては、台帳システムは、一連のトランザクションにおけるタイムスタンプトランザクションから指定のトランザクションまでの各トランザクションがトランザクションの直前にある先行トランザクションのそれぞれのハッシュを含んでいるかどうかを検証し得る。一連のトランザクションにおけるタイムスタンプトランザクションから指定のトランザクションまでの各トランザクションがトランザクションの直前にある先行トランザクションのそれぞれのハッシュを含んでいると台帳システムが検証した場合には、台帳システムは、タイムスタンプトランザクションが指定のトランザクションまで信頼するに足る形でトレース可能であると決定し得る。一連のトランザクションにおけるタイムスタンプトランザクションから指定のトランザクションまでの各トランザクションがトランザクションの直前にある先行トランザクションのそれぞれのハッシュを含んでいると台帳システムが検証できなかった場合には、台帳システムは、タイムスタンプトランザクションが指定のトランザクションまで信頼するに足る形でトレース可能ではないと決定し得る。
タイムスタンプトランザクションが指定のトランザクションまで信頼するに足る形でトレース可能ではないと決定したことに応答して、プロセス600は、ステップ608に戻り、台帳システムは、指定のトランザクションまで信頼するに足る形でトレース可能であり得る隣接タイムスタンプトランザクションを継続して特定し得る。
612において、タイムスタンプトランザクションが指定のトランザクションまで信頼するに足る形でトレース可能であると決定したことに応答して、台帳システムが、一連のトランザクションにおけるトラストポイントとしてタイムスタンプトランザクションをマークする。すなわち、台帳システムは、指定のトランザクションについてのトラストポイントとしてタイムスタンプトランザクションを確立する。
614において、台帳システムが、一連のトランザクションにおける検証対象のトランザクションを検証することになる要求を受信する。例えば、要求は、クライアントから受信され得る。検証対象のトランザクションは、クライアントにとって関心があるものであり得る。検証対象のトランザクションは、一連のトランザクションにおける指定のトランザクションの前または後に記憶されているトランザクションであり得る。
616において、台帳システムが、トランザクションが一連のトランザクションにおけるトランザクションの前にある最近傍のトラストポイントまで信頼するに足る形でトレース可能であることを検証することによって、トランザクションが検証されたと決定する。最近傍のトラストポイントが信頼するに足るものであるので、トランザクションが検証されたと決定することは、一連のトランザクションにおける最近傍のトラストポイントに先行するトランザクションを検証する必要はない。例えば、検証対象のトランザクションが一連のトランザクションにおける指定のトランザクションの後にあるトランザクションである場合には、台帳システムは、一連のトランザクションにおけるタイムスタンプトランザクションに先行するトランザクションを検証することなく、検証対象のトランザクションがトラストポイントとしてマークされたタイムスタンプトランザクションまで信頼するに足る形でトレース可能であることを検証することによって、検証対象のトランザクションが検証されたと決定し得る。
図7は、本明細書の実施形態による、装置700のモジュールの例を図示している。装置700は、台帳システムに記憶されているトランザクションデータに対する台帳サービス、トラストタイムスタンプサービス、およびトラストポイントサービスを提供するように構成された台帳システムの実施形態の一例であり得る。装置700は、上記で説明した実施形態に対応し得るし、装置700は、台帳システム内のコンピューティングデバイスによって、台帳システムに記憶されている一連のレコードにおける指定のレコードに対するトラストポイントを確立するための要求を取得する、取得モジュール701であって、トラストポイントは、一連のレコードにおけるトラストポイントの前にあるレコードが信頼するに足るものであることを示す、取得モジュール701と、台帳システムに記憶されている一連のレコードにおける指定のレコードが候補トラストポイントであるかどうかを決定する、第1の決定モジュール702と、コンピューティングデバイスによって、指定のレコードがトラストタイムサーバからのトラストタイムスタンプ情報を含むタイムスタンプレコードであるかどうかを決定する、第2の決定モジュール704であって、トラストタイムサーバは、トラストタイム統括機関に関連付けられており、台帳システムから独立している、第2の決定モジュール704と、指定のレコードがタイムスタンプレコードではないと決定したことに応答して、一連のレコードにおけるタイムスタンプレコードのうちの指定のレコードに隣接するタイムスタンプレコードを特定する、特定モジュール706と、コンピューティングデバイスによって、タイムスタンプレコードが指定のレコードまで信頼するに足る形でトレース可能であるかどうかを決定する、第3の決定モジュール708と、タイムスタンプレコードが指定のレコードまで信頼するに足る形でトレース可能であることを決定したことに応答して、一連のレコードにおけるトラストポイントとなるタイムスタンプレコードをマークする、マーク処理モジュール710とを含む。
いくつかの実施形態においては、装置700は、一連のレコードにおける検証対象のレコードを検証することになる要求を受信する、受信モジュール712と、一連のレコードにおける最近傍のトラストポイントに先行するレコードを検証することなく、検証対象のレコードが検証対象のレコードに先行する最近傍のトラストポイントまで信頼するに足る形でトレース可能であることを決定することによって、検証対象のレコードが検証されたと決定する、第4の決定モジュール714とをさらに含む。いくつかの実施形態においては、第1の決定モジュール702、第2の決定モジュール704、第3の決定モジュール708、および第4の決定モジュール714のうちの1つまたは複数が単一のモジュールとして実装され得る。
いくつかの実施形態においては、一連のレコードの各レコードは、それぞれのトランザクションを含む。いくつかの実施形態においては、一連のレコードの各レコードは、それぞれのブロックを含み、一連のレコードは、ブロックチェーンを形成する。
いくつかの実施形態においては、一連のレコードの各レコードは、一連のレコードにおけるレコードの直前にある先行レコードのそれぞれのハッシュを含む。
いくつかの実施形態においては、第3の決定モジュール708は、タイムスタンプレコードが指定のレコードまでトレース可能であるとともに指定のレコードを認証する情報を含んでいることを検証すること、または、指定のレコードがタイムスタンプレコードまでトレース可能であるとともにタイムスタンプレコードを認証する情報を含んでいることを検証することのうちの少なくとも1つによって、タイムスタンプレコードが指定のレコードまで信頼するに足る形でトレース可能であることを決定するように構成される。
いくつかの実施形態においては、第3の決定モジュール708は、一連のレコードにおけるタイムスタンプレコードから指定のレコードまでの各レコードがレコードの直前にある先行レコードのそれぞれのハッシュを含んでいることを検証することよって、タイムスタンプレコードが指定のレコードまで信頼するに足る形でトレース可能であることを決定するように構成される。
いくつかの実施形態においては、第1の決定モジュール702は、指定のレコードが一連のレコードにおける指定のレコードの前にある先行トラストポイントまで信頼するに足る形でトレース可能であることを検証することによって、一連のレコードにおける指定のレコードがトラストポイントであると決定するように構成される。
いくつかの実施形態においては、装置700は、一連のレコードにおける指定のレコードから先行トラストポイントまでの各レコードがレコードの直前にある先行レコードのそれぞれのハッシュを含んでいることを検証することによって、指定のレコードが指定のレコードの前にある先行トラストポイントまで信頼するに足る形でトレース可能であることを検証するように構成される、検証モジュールを含む。
いくつかの実施形態においては、先行トラストポイントは、一連のレコードにおける指定のレコードの直前にあるトラストポイント、および一連のレコードにおけるトラストポイントにとっての大元となる第1のレコードのうちの1つである。
随意的な実施形態においては、検証モジュールは、一連のレコードにおける指定のレコードから先行トラストポイントまで後方にトレースすること、または、一連のレコードにおける先行トラストポイントから指定のレコードまで前方にトレースすることのうち少なくとも1つによって、指定のレコードが一連のレコードにおける指定のレコードの前にある先行トラストポイントまで信頼するに足る形でトレース可能であることを検証するように構成される。
いくつかの実施形態においては、装置700は、トラストタイムサーバにタイムスタンプ要求を送信する、送信モジュールと、トラストタイムサーバからタイムスタンプ要求に対するトラストタイムスタンプおよび関連する署名を受信する、第2の受信モジュールと、一連のレコードにおけるレコードとしてトラストタイムスタンプおよび関連する署名を記憶する、記憶モジュールとをさらに含む。トラストタイムサーバからのトラストタイムスタンプおよび関連する署名を記憶しているレコードは、一連のレコードにおける新たなタイムスタンプレコードであり、新たなタイムスタンプレコードは、タイムスタンプ要求が送信されると、一連のレコードに記憶されている直近のレコードの直後に記憶され、直近のレコードのハッシュを含む。
いくつかの実施形態においては、一連のレコードにおける新たなタイムスタンプレコードと新たなタイムスタンプレコードの直前にある先行タイムスタンプレコードとの間にあるレコードが、ユニットにグループ化され、新たなタイムスタンプレコードは、ユニットにおける最終レコードとして含まれる。
いくつかの実施形態においては、タイムスタンプ要求は、トラストタイムサーバに送信されるタイムスタンプ要求のうちのタイムスタンプ要求の識別子、直近のレコードの識別子もしくはハッシュ、または、ユニット内のレコードのハッシュについてのハッシュダイジェストのうちの少なくとも1つを含む。
いくつかの実施形態においては、特定モジュール706は、タイムスタンプレコードとなる指定のレコードを含むユニット内の最終レコードを特定することによって、または、タイムスタンプレコードとなる指定のレコードを含むユニットの直前にある先行ユニット内の最終レコードを特定することによって、タイムスタンプレコードを特定するように構成される。
いくつかの実施形態においては、第1の決定モジュール702は、一連のレコードにおける第2のレコードが第2のトラストポイントであることを決定し、第2の決定モジュール704は、第2のレコードが一連のレコードにおけるタイムスタンプレコードであることを決定し、マーク処理モジュール710は、一連のレコードにおける第2のトラストポイントとなる第2のレコードをマークする。
いくつかの実施形態においては、新たなタイムスタンプレコードは、ユニット内のレコードのハッシュについてのハッシュダイジェストを含む。
いくつかの実施形態においては、装置700は、タイムスタンプ要求についての所定の期間でトラストタイムサーバにタイムスタンプ要求を定期的に送信する、送信モジュールをさらに含む。
いくつかの実施形態においては、装置700は、ブロックチェーンに一連のレコードを記憶するブロックを順次生成する、生成モジュールであって、ブロックの各々が1つまたは複数のレコードを記憶しているとともにブロックチェーンにおいて一緒に連結されている、生成モジュールをさらに含む。ブロックチェーンにブロックを生成することは、指定のレコードがトラストポイントであることを決定することから独立しているとともに、タイムスタンプ要求をトラストタイムサーバに送信することから独立している。
いくつかの実施形態においては、一連のレコードにおける各レコードは、それぞれのレコード識別子に関連付けられており、一連のレコードは、それぞれのレコード識別子に従って順に記憶されており、特定モジュール706は、一連のレコードにおける指定のレコードについてのレコード識別子に最も近いレコード識別子に関連付けられたタイムスタンプレコードを特定することによって、一連のレコードにおけるタイムスタンプレコードのうちの指定のレコードに隣接するタイムスタンプレコードを特定する。
いくつかの実施形態においては、台帳システムに記憶されている一連のレコードにおける指定のレコードが候補トラストポイントであることを決定することは、タイムスタンプ要求をトラストタイムサーバに送信することから独立している。
いくつかの実施形態においては、指定のレコードがトラストタイムサーバからのトラストタイムスタンプ情報を含むタイムスタンプレコードではないと決定したことに応答して、一連のレコードにおけるトラストポイントとして指定のレコードをマークすることはしない。
上記の実施形態において示したシステム、装置、モジュール、またはユニットは、コンピュータチップまたはエンティティを使用して実装され得る、または、ある機能を有する製品を使用して実装され得る。典型的な実施デバイスは、コンピュータ(コンピュータはパーソナルコンピュータであり得る)、ラップトップコンピュータ、セルラ電話、カメラ電話、スマートフォン、携帯情報端末、メディアプレーヤ、ナビゲーションデバイス、電子メール送受信デバイス、ゲームコンソール、タブレットコンピュータ、ウェアラブルデバイス、またはこれらのデバイスの任意の組合せである。
装置内の各モジュールの機能およびロールについての実施プロセスについては、上記の方法における対応するステップについての実施プロセスを参照されたい。簡潔にするために詳細はここでは省略する。
装置の実施形態は方法の実施形態に基本的に対応しているため、関連する部分については、方法の実施形態における関連する説明を参照されたい。上記で説明した装置の実施形態は一例に過ぎない。別個の部分として説明したモジュールは、物理的に分離され得るしまたはされ得ない。モジュールとして図示した部分は、物理ユニットであり得るしまたはあり得ないし、1つの位置にあり得るし、または多数のネットワークモジュールに分散され得る。モジュールの一部またはすべては、本明細書のソリューションの目的を達成するための実際の要求に基づいて選択され得る。当業者は、創造的努力無しで本出願の実施形態を理解および実施できよう。
図7を参照すれば、台帳実施装置の内部機能モジュールおよび構造を図示しているものとして解釈され得る。台帳実施装置は、台帳システムに記憶されているレコード(例えば、トランザクションデータ)に対する台帳サービス、トラストタイムスタンプサービス、およびトラストポイントサービスを提供するように構成された台帳システムの一例であり得る。本質的な実行の主体は、電子デバイスであり得るし、および電子デバイスは、1つまたは複数のプロセッサと、1つまたは複数のプロセッサの実行可能命令を記憶するように構成される、1つまたは複数のコンピュータ可読メモリとを含む。いくつかの実施形態においては、1つまたは複数のコンピュータ可読メモリは、1つまたは複数のプロセッサに結合されるとともに、本明細書に記載しているような、アルゴリズム、方法、関数、プロセス、フロー、およびプロシージャを行うように1つまたは複数のプロセッサによって実行可能であるプログラミング命令を記憶している。本明細書はまた、1つまたは複数のプロセッサに結合されるとともに命令を記憶している1つまたは複数の非一時的コンピュータ可読記憶媒体を提供しており、命令は、1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサに本明細書で提供した方法の実施形態による動作を行わせる。
本明細書は、本明細書で提供している方法を実施するためのシステムをさらに提供している。システムは、1つまたは複数のプロセッサと、1つまたは複数のプロセッサに結合されるとともに命令を記憶しているコンピュータ可読記憶媒体とを含み、命令は、1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサに本明細書で提供した方法の実施形態による動作を行わせる。
発明特定事項の実施形態ならびに本明細書において説明したアクションおよび動作は、デジタル電子回路の形で、有形に具現化されたコンピュータソフトウェアまたはファームウェアの形で、本明細書において開示した構造およびそれらの構造的均等物を含むコンピュータハードウェアの形で、またはそれらの組合せのうちの1つまたは複数で実装され得る。本明細書において説明した発明特定事項の実施形態は、データ処理装置による実行のためにまたはデータ処理装置の処理を制御するために、コンピュータプログラムキャリア上に符号化された、例えばコンピュータプログラム命令の1つまたは複数のモジュールといった1つまたは複数のコンピュータプログラムとして実装され得る。例えば、コンピュータプログラムキャリアは、そこに符号化または記憶されている命令を有する1つまたは複数のコンピュータ可読記憶媒体を含み得る。キャリアは、磁気ディスク、光磁気ディスク、もしくは光ディスク、ソリッドステートドライブ、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、または他のタイプの媒体などといった、有形非一時的コンピュータ可読媒体であり得る。あるいはまたは加えて、キャリアは、データ処理装置による実行に適した受信機装置への送信のために情報を符号化するために生成された、人為的に生成した伝搬信号、例えば、機械生成された電気信号、光信号、または電磁気信号であり得る。コンピュータ記憶媒体は、機械可読ストレージデバイス、機械可読ストレージ回路基板、ランダムもしくはシリアルアクセスメモリデバイス、またはそれらのうちの1つまたは複数の組合せであり得るもしくは一部であり得る。コンピュータ記憶媒体は伝搬信号ではない。
プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリ、モジュール、ソフトウェアモジュール、エンジン、スクリプト、またはコードとも称し得るまたは記述し得る、コンピュータプログラムは、コンパイル型もしくはインタプリタ型言語、または宣言型もしくは手続き型言語を含む、任意の形式のプログラミング言語で書かれ得るし、スタンドアロンプログラムとして、またはモジュール、コンポーネント、エンジン、サブルーチン、もしくはコンピューティング環境における実行に適した他のユニットとして、といったことを含む任意の形式で、デプロイされ得る。環境は、1つまたは複数のロケーションにおいてデータ通信ネットワークによって相互接続される1つまたは複数のコンピュータを含み得る。
コンピュータプログラムは、ファイルシステム内のファイルに対応し得るが、必ずしも必要ではない。コンピュータプログラムは、例えば、マークアップ言語ドキュメントに記憶されている1つまたは複数のスクリプトといった、他のプログラムまたはデータを保持するファイルの一部に、当該プログラム専用の単一のファイルに、または、例えば、1つまたは複数のモジュール、サブプログラム、またはコードの一部を記憶するファイルといった、複数の協調ファイルに、記憶され得る。
コンピュータプログラムの実行のためのプロセッサは、例として、汎用および特殊用途マイクロプロセッサの両方、ならびに任意の種類のデジタルコンピュータの任意の1つまたは複数のプロセッサを含む。一般的に、プロセッサは、プロセッサに結合されている非一時的コンピュータ可読媒体からデータだけでなく実行のためのコンピュータプログラムの命令も受信することになる。
「データ処理装置」という用語は、例として、プログラマブルプロセッサ、コンピュータ、または複数のプロセッサもしくはコンピュータを含む、データを処理するためのあらゆる種類の装置、デバイス、およびマシンを含む。データ処理装置は、特殊用途ロジック回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)、ASIC(特定用途向け集積回路)、またはGPU(グラフィック処理ユニット)を含み得る。装置はまた、ハードウェアに加えて、コンピュータプログラムのための実行環境を作成するコード、例えば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはそれらのうちの1つまたは複数の組合せを構成するコードを含み得る。
本明細書において説明したプロセスおよびロジックフローは、1つまたは複数のコンピュータプログラムを実行し、入力データを処理して出力を生成することによって処理を行う、1つまたは複数のコンピュータもしくはプロセッサによって行われ得る。プロセスおよびロジックフローはまた、例えばFPGA、ASIC、またはGPUといった特殊用途ロジック回路によって、または、特殊用途ロジック回路と1つまたは複数のプログラマブルコンピュータとの組合せによって、実装され得る。
コンピュータプログラムの実行に適したコンピュータは、汎用もしくは特殊用途マイクロプロセッサもしくはその両方、または任意の他の種類の中央処理ユニットに基づき得る。一般的に、中央処理ユニットは、リードオンリーメモリまたはランダムアクセスメモリまたはその両方から命令およびデータを受信することになる。コンピュータの要素は、命令を実行するための中央処理ユニットと、命令およびデータを記憶するための1つまたは複数のメモリデバイスとを含み得る。中央処理ユニットおよびメモリは、特殊用途ロジック回路によって補完され得る、またはそれに組み込まれ得る。
一般的に、コンピュータは、1つまたは複数の記憶デバイスを含むことになる、または、1つまたは複数の記憶デバイスからデータを受信もしくは1つまたは複数の記憶デバイスにデータを送信することが動作可能なように結合されることになる。記憶デバイスは、例えば、磁気ディスク、光磁気ディスク、もしくは光ディスク、ソリッドステートドライブ、または任意の他のタイプの非一時的コンピュータ可読媒体であり得る。しかしながら、コンピュータは、そのようなデバイスを必ずしも有する必要はない。そのため、コンピュータは、ローカルおよび/またはリモートにある1つまたは複数のメモリなどといった、1つまたは複数の記憶デバイスに結合され得る。例えば、コンピュータは、コンピュータの統合コンポーネントである1つまたは複数のローカルメモリを含み得る、または、コンピュータは、クラウドネットワークにある1つまたは複数のリモートメモリに結合され得る。さらに、コンピュータは、数例挙げるとすれば、例えば、モバイル電話、携帯情報端末(PDA)、モバイルオーディオもしくはビデオプレーヤ、ゲームコンソール、Global Positioning System(GPS)受信機、または例えばユニバーサルシリアルバス(USB)フラッシュドライブなどのポータブルストレージデバイスといった別のデバイスに組み込まれ得る。
コンポーネントは、直接または1つまたは複数の中間コンポーネントを介して互いに電気的または光学的などといった通信可能なように接続することによって互いに「結合」され得る。コンポーネントは、コンポーネントの1つが他のものに統合されている場合も互いに「結合」され得る。例えば、プロセッサ(例えば、L2キャッシュコンポーネント)に統合されている記憶コンポーネントは、プロセッサに「結合」される。
ユーザとのインタラクションを提供するために、本明細書において説明した発明特定事項の実施形態は、ユーザに情報を表示するための、例えば、LCD(液晶ディスプレイ)モニタといった、表示デバイスと、例えば、キーボード、および例えば、マウス、トラックボールまたはタッチパッドなどのポインティングデバイスといった、ユーザがコンピュータに入力を提供することができる、入力デバイスとを有するコンピュータ上で実装され得る、または、そのようなコンピュータと通信するように構成され得る。同様に、他の種類のデバイスがユーザとのインタラクションを提供するために使用され得る。例えば、ユーザに提供されるフィードバックは、例えば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックといった任意の形式の感覚フィードバックであり得るし、ユーザからの入力は、音響、音声、または触覚入力を含む任意の形式で受信され得る。加えて、コンピュータは、ユーザによって使用されるデバイスにドキュメントを送信することおよびユーザによって使用されるデバイスからドキュメントを受信することによって、例えば、ユーザのデバイス上のウェブブラウザから受信した要求に応答してウェブブラウザにウェブページを送信することによって、または、例えばスマートフォンもしくは電子タブレットといったユーザデバイス上で動作するアプリとのインタラクションを行うことによって、ユーザとのインタラクションを行い得る。また、コンピュータは、メッセージングアプリケーションを動作する例えばスマートフォンといったパーソナルデバイスにテキストメッセージまたは他の形式のメッセージを送信し、その返信としてユーザから応答メッセージを受信することによって、ユーザとのインタラクションを行い得る。
本明細書は、システム、装置、およびコンピュータプログラムコンポーネントに関連して「ように構成される」という用語を使用している。特定の処理またはアクションを行うように構成される1つまたは複数のコンピュータのシステムとは、処理においてシステムに処理またはアクションを行わせるソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せがインストールされているシステムを意味する。特定の処理またはアクションを行うように構成される1つまたは複数のコンピュータプログラムとは、データ処理装置によって実行されると装置に処理またはアクションを行わせる命令を含む1つまたは複数のプログラムを意味する。特定の処理またはアクションを行うように構成される特殊用途ロジック回路とは、処理またはアクションを行う電子ロジックを有する回路を意味する。
本明細書は、多くの特定の実施形態の詳細を含んでいるが、これらは、特許請求の範囲に定義された、請求していることについての、範囲に対する限定として解釈するべきではなく、むしろ、特定の実施形態に固有のものであり得る特徴についての説明として解釈されるべきである。別個の実施形態に即して本明細書において説明したある特徴もまた、組み合わせることで単一の実施形態で実現され得る。反対に、単一の実施形態に即して説明した様々な特徴もまた、別々に複数の実施形態でまたは任意の適切なサブコンビネーションで実現され得る。さらに、ある組合せで動作するものとして特徴を上記で説明している場合があるが、たとえ最初はそのように主張していたとしても、いくつかのケースにおいては、主張した組合せのうちの1つまたは複数の特徴をその組合せから削除し得るし、主張したものをサブコンビネーションまたはサブコンビネーションの変形とし得る。
同様に、処理を特定の順序で図面に図示するとともに特許請求の範囲に記載しているが、このことを、示した特定の順序でもしくは一連の順序でそのような処理を行う必要があると理解すべきではないし、または、望ましい結果を達成するために図示した処理のすべてを行う必要があると理解すべきではない。ある環境においては、マルチタスク処理および並行処理が有利となり得る。さらに、上記で説明した実施形態における様々なシステムモジュールおよびコンポーネントの分離がすべての実施形態においてそのような分離を必要とすると理解すべきではなく、説明したプログラムコンポーネントおよびシステムは一般的に単一のソフトウェア製品に一緒に統合され得るまたは複数のソフトウェア製品にパッケージ化され得ると理解されたい。
発明特定事項の具体的な実施形態を説明してきた。他の実施形態も以下の特許請求の範囲の範囲内にある。例えば、特許請求の範囲に記載のアクションは、異なる順序で行われ得るし、それでも望ましい結果を達成し得る。一例として、添付の図面に図示したプロセスは、望ましい結果を達成するために示した特定の順序または一連の順序を必ずしも必要とするわけではない。いくつかのケースにおいては、マルチタスク処理およびパラレル処理が有利となり得る。