目的
この記事では、ナンスについてより深く考察し、ナンスがブロックの重複を防ぎつつ、ブロックチェーンの秩序を維持するためにどのように役立つかを説明します。
前提条件
概要
ほとんどのブロックチェーンには、「アカウント・ ナンス」と、「プルーフ・オブ・コンセンサス・ナンス」の2種類のナンスが存在します。アカウント・ ナンスは、ウォレットのアドレスに関連するトランザクションのキューとして機能します。最初に追加されたブロックのアカウント・ ナンスは1となり、2番目のブロックのアカウント・ ナンスは2となり、連続的にカウントが増えていきます。アカウント・ ナンスの記録を維持することにより、そのチェーンとやり取りするシステムは、この順序を維持する次のアカウント・ ナンスが何であるかを認識します。
プルーフ・オブ・コンセンサス・ナンス は、現在のブロックから望ましい「次の」ハッシュを作成するために計算される番号です。アカウント・ ナンスが決定された後、「前」のハッシュが記録され、トランザクションが書き込まれ、もし「次」のハッシュが0x0000のような特定の順番で始まる必要がある場合、これを達成する唯一の方法は、生成された「次のハッシュ」が要求の基準を満たすまでブロックに数字を追加していくことです。この生成された数字がプルーフ・オブ・コンセンサス・ ナンスであり、バリデータがソフトウェアを使用してブロックチェーンのトランザクションを処理する場合、チェーンに追加できるように、ブロックのナンスを決定するための必要な計算をしばしば行います。正しいナンスを求める計算が完了すると、次のブロックを発見したバリデータには、通常ブロックチェーンの暗号通貨が与えられます。
ナンスは、トラザクションの正確なコピーを作成することができないため、トラザクションのセキュリティ強化を可能にします。これはリプレイ攻撃として知られており、リプレイ攻撃では、悪質者は未遂の承認されたトラザクションをコピーし、その一部を自分に有利になるように変更します。 ブロックをチェーンに追加するにはプルーフ・オブ・コンセンサス・ ナンスを計算する必要があるため、オリジナルを最初に作成する必要があります。いったん書き込まれると、アカウント・ ナンスはそのトラザクションが唯一無二のものであることを保証し、後で再送信するためにコピーすることはできません。また、アカウント・ ナンスは二重支出として知られるトランザクションの重複も防ぎます。これは、ユーザーがトランザクションを何度も再送信して、ウォレットにある以上の支出を試みた可能性がある場合に発生します。各トランザクションには一意のアカウント・ナンスが存在するため、ブロックチェーンが何度も同じナンスを確認した場合、1つのトランザクションだけを許可し、残りは拒否されます。各トラザクションは、一意性のためのアカウント・ ナンスと、ハッシュに署名しブロックをリプレイ攻撃から保護するためのプルーフ・オブ・コンセンサス・ ナンスの両方によって安全に作られています。