JP-2026514980-A - ブロックチェーン同期プロトコル
Abstract
ブロックチェーンノードがブロックチェーンの同期ビューを有するか否かを判定するコンピュータ実装方法であり、方法が、第1のブロックチェーンノードによって実行され、i)第1のブロックチェーンノードによって格納されたブロックチェーンの最新のブロックに対応する第1のブロック高と、ii)第1のブロックチェーンノードによって保持された現在時刻に対応する第1のタイムスタンプとを、第2のブロックチェーンノードに送信するステップと、i)第2のブロックチェーンノードによって格納されたブロックチェーンの最新のブロックに対応する第2のブロック高と、ii)第2のブロックチェーンノードによって保持された現在時刻に対応する第2のタイムスタンプとを、第2のブロックチェーンノードから受信するステップと、第1のブロックチェーンノードおよび第2のブロックチェーンノードが、第1のブロック高および第2のブロック高と第1のタイムスタンプおよび第2のタイムスタンプとに基づいてブロックチェーンの同期ビューを有するか否かを判定するステップとを備える。
Inventors
- アレッシオ・パガーニ
- クレイグ・スティーヴン・ライト
Assignees
- エヌチェーン ライセンシング アーゲー
Dates
- Publication Date
- 20260513
- Application Date
- 20240328
- Priority Date
- 20230425
Claims (20)
- ブロックチェーンノードがブロックチェーンの同期ビューを有するか否かを判定するコンピュータ実装方法であって、方法が、第1のブロックチェーンノードによって実行され、 i)前記第1のブロックチェーンノードによって格納された前記ブロックチェーンの最新のブロックに対応する第1のブロック高と、ii)前記第1のブロックチェーンノードによって保持された現在時刻に対応する第1のタイムスタンプとを、第2のブロックチェーンノードに送信するステップと、 i)前記第2のブロックチェーンノードによって格納された前記ブロックチェーンの最新のブロックに対応する第2のブロック高と、ii)前記第2のブロックチェーンノードによって保持された現在時刻に対応する第2のタイムスタンプとを、前記第2のブロックチェーンノードから受信するステップと、 前記第1のブロックチェーンノードおよび第2のブロックチェーンノードが、前記第1のブロック高および前記第2のブロック高と前記第1のタイムスタンプおよび前記第2のタイムスタンプとに基づいて前記ブロックチェーンの同期ビューを有するか否かを判定するステップと を備える、方法。
- 前記第1のブロック高が前記第2のブロック高未満である場合、 前記ブロックチェーンの前記第2のブロックチェーンノードのビューが1つまたは複数のブロック分だけ異なると決定するステップと、 前記第2のブロックチェーンノードに前記1つまたは複数のブロックを要求するステップと を備える、請求項1に記載の方法。
- 前記第1のブロック高が前記第2のブロック高より大きい場合、 前記ブロックチェーンの前記第1のブロックチェーンノードのビューが1つまたは複数のブロック分だけ異なると決定するステップと、 前記第2のブロックチェーンノードに、前記第2のブロックチェーンノードが前記1つまたは複数のブロックを欠いていることを通知するステップ、および/または前記第2のブロックチェーンノードに、前記1つまたは複数のブロックを送信するステップと を備える、請求項1または請求項2に記載の方法。
- 前記第1のタイムスタンプおよび前記第2のタイムスタンプの間の時間オフセットを決定するステップと、 前記第1のブロックチェーンノードおよび前記第2のブロックチェーンノードが前記時間オフセットに基づいて時間の同期ビューを有するか否かを判定するステップと を備える、請求項1~3のいずれか一項に記載の方法。
- 前記時間オフセットが所定のしきい値より大きい場合、前記時間オフセットに基づいて前記第1のブロックチェーンノードの現在時刻を更新するステップを備える、請求項4に記載の方法。
- 前記更新するステップは、前記ブロックチェーンの新しいブロックを生成する間に実行され、前記方法が、前記更新された現在時刻で、前記新しいブロックに含まれるタイムスタンプを更新するステップを有する、請求項5に記載の方法。
- 前記第1のブロックチェーンノードおよび前記第2のブロックチェーンノードが前記ブロックチェーンの同期ビューを有すると決定するステップと、 前記第1のブロックチェーンノードおよび前記第2のブロックチェーンノードが前記ブロックチェーンの同期ビューを有することを示す第1のメッセージに署名するステップと、 前記署名された第1のメッセージを前記第2のブロックチェーンノードに送信するステップと を備える、請求項1~6のいずれか一項に記載の方法。
- 前記第1のブロックチェーンノードおよび前記第2のブロックチェーンノードが前記時間の同期ビューを有すると決定するステップと、 前記第1のブロックチェーンノードおよび前記第2のブロックチェーンノードが前記時間の同期ビューを有することを示す第2のメッセージに署名するステップと、 前記署名された第2のメッセージを前記第2のブロックチェーンノードに送信するステップと を備える、請求項4または請求項4に従属する請求項のいずれか一項に記載の方法。
- 前記第1のメッセージおよび前記第2のメッセージが同一である、請求項7および請求項8に記載の方法。
- 前記第1のブロック高および前記第1のタイムスタンプを送信するステップが、前記第1のブロック高および前記第1のタイムスタンプを含むメッセージを前記第2のブロックチェーンノードに送信するステップを有し、前記第2のブロックチェーンノードが、前記第2のブロックチェーンノードが前記メッセージを受け取った時刻に対応する第3のタイムスタンプ、前記第2のブロック高、および前記第2のタイムスタンプを含むように、前記メッセージを更新するように構成され、前記第2のブロック高および前記第2のタイムスタンプを受信するステップが、前記メッセージを前記第2のブロックチェーンノードから受信するステップを有する、請求項1~9のいずれか一項に記載の方法。
- 前記第1のブロックチェーンノードが前記メッセージを受け取った時刻に対応する第4のタイムスタンプを含むように、前記メッセージを更新するステップと、 前記メッセージに署名するステップと、 前記署名したメッセージを前記第2のブロックチェーンノードに送信するステップと を備える、請求項9および請求項10に記載の方法。
- 前記メッセージが前記第1のメッセージである、請求項9および請求項11に記載の方法。
- 新しいブロックを前記ブロックチェーンに公開するステップを備え、前記新しいブロックが前記署名されたメッセージを含む、請求項11または請求項12に記載の方法。
- 現在時刻および/または現在のブロック高について要求元デバイスから要求を受信するステップと、 前記現在時刻および/または前記現在のブロック高を前記要求元デバイスに送信するステップと を備える、請求項1~13のいずれか一項に記載の方法。
- 前記第2のブロックチェーンノードによって公開されたターゲットブロックを検出するステップであって、前記ターゲットブロックが、前記第2のブロック高より大きいターゲットブロック高に関連付けられている、および/または前記ターゲットブロックが前記署名された第1のメッセージを有さない、ステップと、 前記第2のブロックチェーンノードがセルフィッシュマイニングの処理を実行していると決定するステップ、 アラートを1つまたは複数のブロックチェーンノードに送信するステップ、 前記ターゲットブロックを拒否するステップ の1つまたは複数を実行するステップとを備える、請求項7に記載の方法。
- ブロックチェーンノードがブロックチェーンの同期ビューを有するか否かを判定するコンピュータ実装方法であって、方法が、第2のブロックチェーンノードによって実行され、 i)第1のブロックチェーンノードによって格納された前記ブロックチェーンの最新のブロックに対応する第1のブロック高と、ii)前記第1のブロックチェーンノードによって保持された現在時刻に対応する第1のタイムスタンプとを、第1のブロックチェーンノードから受信するステップと、 i)前記第2のブロックチェーンノードによって格納された前記ブロックチェーンの最新のブロックに対応する第2のブロック高と、ii)前記第2のブロックチェーンノードによって保持された現在時刻に対応する第2のタイムスタンプとを、前記第1のブロックチェーンノードに送信するステップと を備える、方法。
- 前記第1のブロックチェーンノードから1つまたは複数のブロックについての要求を受信するステップと、 前記第1のブロックチェーンノードに前記1つまたは複数のブロックを送信するステップと を備える、請求項16に記載の方法。
- 前記第2のブロックチェーンノードが1つまたは複数のブロックを欠いているという通知を前記第1のブロックチェーンノードから受信するステップ、および/または前記第1のブロックチェーンノードから前記1つまたは複数のブロックを受信するステップを備える、請求項16または請求項17に記載の方法。
- 前記第1のブロックチェーンノードおよび前記第2のブロックチェーンノードが前記ブロックチェーンの同期ビューを有することを示す署名された第1のメッセージを受信するステップと、 前記第1のブロックチェーンノードおよび前記第2のブロックチェーンノードが前記ブロックチェーンの同期ビューを有すると決定するステップと、 第1の署名されたメッセージに署名するステップと、 前記署名された第1のメッセージを前記第1のブロックチェーンノードに送信するステップと を備える、請求項16または請求項16に従属する請求項のいずれかに記載の方法。
- 前記第1のブロックチェーンノードおよび前記第2のブロックチェーンノードが時間の同期ビューを有することを示す署名された第2のメッセージを受信するステップと、 前記第1のブロックチェーンノードおよび前記第2のブロックチェーンノードが前記時間の同期ビューを有すると決定するステップと、 第2の署名されたメッセージに署名するステップと、 前記署名された第2のメッセージを前記第1のブロックチェーンノードに送信するステップと を備える、請求項16または請求項16に従属する請求項のいずれかに記載の方法。
Description
本発明は、ブロックチェーンノードがブロックチェーンのビューを同期させる方法に関する。 ネットワークタイムプロトコル(NTP)は、分散されたタイムサーバとクライアント間のシステムクロックを同期するために広く使用されているプロトコルである。TCP/IPスイートのアプリケーション層の一部であるNTPは、協定世界時(UTC)から数ミリ秒以内で、参加しているすべてのデバイスの同期を可能にする。基盤となる同期アルゴリズムはネットワーク遅延を軽減し、1ミリ秒以下の精度(理想的な条件下で)を実現する。NTPは、クライアントサーバ型とピアツーピア型の両方のアーキテクチャをサポートしている。 クライアントは定期的にNTPサーバまたは他のクライアントに問い合わせを行い、時刻差を計算する。通信を開始するクライアントは、要求を受信したクライアントと時刻を同期する(つまり、受信側と同期するためにローカル時刻を変更する)。 NTPパケットには4つのタイムスタンプを表す4つのフィールドが含まれている。 クライアントはtOを満たし、パケットをサーバに送信する。サーバはt1とt2を満たし、それをクライアントに送り返す。クライアントはt3を満たす。この時点で、クライアントは時間オフセットToffsetを計算するために必要な情報を持っている。 Toffset=((t1-tO)+(t2-t3))/2 Toffsetが正の場合、サーバ時間はクライアント時間よりも大きくなる。Toffsetが負の場合、クライアント時間はサーバ時間よりも大きくなる。 同期アルゴリズムは定期的に再実行され、複数のToffsetを計算し、外れ値(一時的な帯域幅の低下による不正確な時刻など)をフィルタリングする。最適な候補を用いて最終的な時間オフセットを計算し、この推定値に基づいてクライアントのクロック周波数を段階的に調整し、時間オフセットを除去する。 セルフィッシュマイニングとは、ブロックチェーンネットワークに対する攻撃の一種であり、マイニングノード(マイナー)が正当な取り分よりも大きな収益を得る攻撃である。ビットコインのホワイトペーパーによると、ノードはハッシュパズルの有効な解を見つけるとすぐにブロックをブロードキャストする必要がある。これにより、他のノードはブロックの有効性を検証し、承認された場合は、そのブロックの上に新しいブロックの構築を開始できる。一方、セルフィッシュマイナーは、発見したばかりの有効なブロックを保持し、その結果、このマイナーは他のノードよりも長いチェーンを持つことになる。ネットワーク内の他のノードは、最後に公開されたブロックの上に構築を継続するが、セルフィッシュマイナーは、発見したブロックの上に構築を継続する。正直なノードは、共有されたブロックチェーンの上に構築を継続するが、セルフィッシュマイナーは、異なるブロックセットを持つプライベートフォークを作成する。セルフィッシュマイナーが他のノードよりも多くの有効なブロックを生成できた場合(例えば、運や高いハッシュパワーなどにより)、いつでもプライベートチェーンを公開できる。マイナーは最も蓄積されたプルーフオブワーク(Proof-of-Work)を持つチェーンを有効なものとして受け入れると予想されるため、新しい有効なチェーンはセルフィッシュマイナーによって作成されたものになる。 1つまたは複数のノードまたはマイニングプールが、セルフィッシュマイニング技術を用いてネットワークを攻撃する可能性がある。この攻撃は、セルフィッシュマイナーに不公平な優位性をもたらし、予想以上に多くのブロック報酬と取引手数料を徴収することを可能にする。また、他のノードにとっては、発見したブロックが破棄されるため、リソースの無駄遣いとなる。さらに、セルフィッシュマイナーが発見したブロックに挿入されたトランザクションは、他のノードが発見したブロックに挿入されたトランザクションと異なる場合がある。これは、公開されたトランザクションの一部が取り消される、または二重支払いのリスクにさらされる可能性があることを意味し、ブロックチェーンネットワークにトランザクションを送信するユーザにとってリソースの無駄遣いとなる。 したがって、ブロックチェーンノードがセルフィッシュマイニングを防止、または少なくとも軽減できるようにするプロトコルを実装することが望ましいと考えられる。 ネットワークノードが、ある時点で最新の公開ブロックについて合意し、次に予想されるブロックの高さについても合意に達することができれば、セルフィッシュマイニングを回避できる。例えば、ネットワークノードの大多数が、時刻t0において最新の公開ブロックの高さがxであると認識した場合、次に予想されるブロックの高さはx+1となる。ブロックx+2を処理するには、ノードは以下のことを行う必要がある。 1. t1(>t0)でブロックx+1をブロードキャストする。 2. 隣接ノード(または少なくともその大多数)が、時刻t1の時点で最新のブロックの高さがx+1であり(つまり、コンセンサスに達し)、次の予想されるブロックがx+2であることに同意するのを待つ。 このアプローチを採用した場合、新しいブロック高のブロックを処理するには必ずネットワークのコンセンサスが必要となるため、セルフィッシュマイナーはプライベートフォークを作成できない。言い換えれば、時刻t1(>t0)に有効なブロックx+1を発見したセルフィッシュマイナーは、それを保持してブロックx+2を秘密裏に処理することはできない。なぜなら、ネットワーク内の他のノードは、コンセンサスに達する前にブロックx+1を認識し、ブロックx+2を期待する必要があるからである。 これを実現するには、ブロックチェーンネットワークに、次の2つの機能に基づく新しいコンセンサスメカニズムが必要である。 1)ノードクロックを同期して共通のネットワーク時間を作成するメカニズム。 2)最新のブロックの高さを合意し、それをネットワーク時間と関連付ける技術。 本明細書に開示される一態様によれば、ブロックチェーンノードがブロックチェーンの同期ビューを有するか否かを判定するコンピュータ実装方法が提供される。この方法は、第1のブロックチェーンノードによって実行され、 i)第1のブロックチェーンノードによって格納されたブロックチェーンの最新のブロックに対応する第1のブロック高と、ii)第1のブロックチェーンノードによって保持された現在時刻に対応する第1のタイムスタンプとを、第2のブロックチェーンノードに送信するステップと、 i)第2のブロックチェーンノードによって格納されたブロックチェーンの最新のブロックに対応する第2のブロック高と、ii)第2のブロックチェーンノードによって保持された現在時刻に対応する第2のタイムスタンプとを、第2のブロックチェーンノードから受信するステップと、 第1のブロックチェーンノードおよび第2のブロックチェーンノードが、第1のブロック高および第2のブロック高と第1のタイムスタンプおよび第2のタイムスタンプとに基づいてブロックチェーンの同期ビューを有するか否かを判定するステップとを備える。 本明細書に開示される一態様によれば、ブロックチェーンノードがブロックチェーンの同期ビューを有するか否かを判定するためのコンピュータ実装方法が提供され、この方法は、第2のブロックチェーンノードによって実行され、 i)第1のブロックチェーンノードによって格納されたブロックチェーンの最新のブロックに対応する第1のブロック高と、ii)第1のブロックチェーンノードによって保持された現在時刻に対応する第1のタイムスタンプとを、第1のブロックチェーンノードから受信するステップと、 i)第2のブロックチェーンノードによって格納されたブロックチェーンの最新のブロックに対応する第2のブロック高と、ii)第2のブロックチェーンノードによって保持された現在時刻に対応する第2のタイムスタンプとを、第1のブロックチェーンノードに送信するステップとを備える。 本開示の実施形態は、接続された2つのブロックチェーンノードの時刻とブロック高を同期させる技術を提供する。この技術、またはプロトコルは、ブロックチェーン時刻・ブロック高プロトコル(BTHP)と呼ばれることがある。いくつかの実施形態では、BTHPネットワーク同期プロセスは、隣接ノードが特定のノードが特定の時刻に知っていた最新のブロック高を認識していることの証明(例えば、署名されたBTHPパケット)を作成することを含む。この証明は、セルフィッシュマイニング攻撃を検出するための警告システムとして、またブロックの承認/拒否の追加の基準として機能し得る。 BTHPは、ノードが特定の時点で特定の高さのブロックを生成するためにハッシュパワーを使用していることを他のノードが知っていたことを証明することを可能にする。セルフィッシュマイナーはこのような証明を提供できない。ノードは、既に保有しているブロックに署名されたパケットが多数含まれている場合、既に保有している同じ高さのブロックを置き換えようとする1つまたは複数のブロックを拒否することができる。代替チェーンが長い場合でも、セルフィッシュマイニングの試みの証拠となるため、このケースに当てはまることがある。 全体として、BTHPはブロックチェーンネットワークの同期性を高め、より正確なタイムスタンプサービスを提供する。これは、ネットワークに接続するデバイスの時刻源として使用できる。 本開示のいくつかの実施形態を用いた例として、セルフィッシュマイナーがブロックのチェーンを作成し、それを公開せずに維持する(「セルフィッシュチェーン」)。一方、他のノードは代替チェーンを構築し、ブロックを共有し、BTHPを用いて特定の時点における現在の高さについて合意している。セルフィッシュマイナーは、自身のバージョンのブロックチェーンを公開することでネットワークを攻撃することを決定する。セルフィッシュチェーンのプルーフオブワークがより高い場合、ネットワーク内のノードは、現在保有しているブロックチェーンの最新ブロックを破棄し、セルフィッシュチェーンに置き換えて、その上に構築を継続するであろう。しかし、(署名された)BTHPパケットを使用することで、マイナーは攻撃を検知し、セルフィッシュチェーンのブロックを拒否することができる。 本開示のいくつかの実施形態を用いた別の例として、リソースが限られたポータブルデバイスがブロックチェーントランザクションをブロードキャストする必要があるとする。このデバイスはシンプルなブロックチェーンウォレットを実行しているが、ハードウェアとソフトウェアの機能は限られている。例えば、内部クロックが存在せず、クロックを同期するためのネットワークレベルプロトコルも実行できない(例えば、NTPを実行してインターネットサーバと時刻を同期することができない)。トランザクションをブロードキャストする際に、デバイスはブロックチェーンノードに現在時刻を要求し、自身のクロックをブロックチェーンクロックと同期させることができる。加えて、または代わりに、デバイスはブロックチェーンノードに現在のブロック高を要求して、ブロックチェーンの最新ビューを確認することができる。これは、特に二重支払いの試みを回避するのに役立つ。 本開示の実施形態の理解を助け、そのような実施形態がどのように実施されるかを示すために、添付の図面を例として参照する。 ブロックチェーンを実装するためのシステムの概略ブロック図であり、ブロックチェーンに記録され得るトランザクションの例を概略的に示す図である。同期プロトコルを実装するためのシステムの概略ブロック図である。 1. ブロックチェーン同期プロトコル 本開示の実施形態は、ブロックチェーンノード104が、