ブロックチェーン/レベル II · 仕組み/2.2 トランザクション/レッスン 7
トランザクションの一生
署名から最終確定まで:トランザクションがネットワークを通過する仕組み
用意するものmempool.spaceのウェブサイト承認の深さ(承認数)を追跡するためのブロックエクスプローラー
問い
- ノードは、トランザクションがマイニングされるかどうかもわからないうちに、なぜそれを検証する必要があるのでしょうか?
- 2つのブロックが同時に現れたとき、何によって一方がもう一方より「本物」になるのでしょうか?
- 6承認がなぜ慣習になったのでしょうか?また、それが多すぎたり少なすぎたりするのはどんなときでしょうか?
探究
- その旅はウォレットソフトウェアから始まります。ユーザーは、支払額と手数料をまかなうために特定の未使用トランザクションアウトプット(UTXO)を選びます。ウォレットは新しいトランザクションオブジェクトを構築し、トランザクションIDとインデックスによって以前のアウトプットを参照するインプットと、受取人のアドレスやチェンジアドレスに価値を割り当てるアウトプットを定義します。各インプットは、そのロッキングスクリプトに対応する秘密鍵で署名され、鍵そのものを明かさずに所有権を証明するデジタル署名が生成されます。
- 完全に署名されたトランザクションはバイナリ形式にシリアライズされ、ピアツーピアネットワークを通じて接続中のピアにブロードキャストされます。受信した各ノードは、コンセンサスルールに照らして独自に検証を行います。インプットがアウトプットをまかなっていること、暗号署名が正しいこと、既存のUTXOが二重に使用されていないこと、スクリプトのロジックが正しいことを確認します。ポリシー上も有効であれば、ノードはそのトランザクションをローカルのメンプールに追加し、'inv'(インベントリ)メッセージでピアに通知します。まだそれを持っていないピアは、'getdata'でトランザクション全体を要求します。
- マイナーは、収益性の高いトランザクションを求めて自分のメンプールを絶えず監視しています。手数料率の高いトランザクションの組を選んで候補ブロックのテンプレートに含めます。このテンプレートには、現在のブロック報酬と集めた手数料を受け取るコインベーストランザクションも含まれます。続いてマイナーはプルーフ・オブ・ワーク(PoW)を行い、ネットワークの現在の難易度ターゲットを満たすハッシュが見つかるまで、ブロックヘッダーのハッシュ計算を繰り返します。このワークによって、ブロックは生成するのにコストがかかり、検証するのは安価なものになります。ハッシュが見つかると、ブロックはネットワーク全体にブロードキャストされます。
- 新しいブロックを受け取ったノードは、そのプルーフ・オブ・ワークとトランザクションの有効性を検証してから、ローカルのチェーンに追加します。このブロック内のトランザクションは、承認数1で承認されたとみなされます。それらのインプットはUTXOセット上で使用済みとなり、アウトプットは、必要なロックタイムや成熟期間が経過した後、将来の使用に利用できるようになります。同じ高さに競合するブロックが現れた場合、ノードはより多くのワークが蓄積されたブランチに従います。短いリオーグ(再編成)でブロックが置き換えられた場合、そのトランザクションは、新しいブランチにすでに含まれていない限りメンプールに戻ります。
- 承認ブロックの上にブロックが1つ追加されるごとに、セキュリティは高まります。ホワイトペーパーの表によれば、ハッシュパワーの10%を持つ攻撃者が5ブロック遅れから追いつく確率は0.1%未満です。この種の分析から、約1時間に相当する6承認が一般的な慣習となりましたが、実際のリスクは攻撃者のハッシュパワーの割合と、懸かっている金額によって異なります。少額であれば0承認の支払いを受け付ける店舗もありますが、高額の送金では、チェーンの再編成による二重支払い攻撃のリスクを抑えるため、複数の承認を待つのが一般的です。
- マイニング報酬と手数料から新しいビットコインを生み出すコインベーストランザクションには、特別な制限があります。そのアウトプットは、100承認に達するまで使用できません。このルールがあるのは、ブロックがリオーグで置き換えられると、そのコインベースアウトプットが消滅してしまうからです。この待機期間によって、そうしたコインが後続のトランザクションに広がり、それらが無効になる事態を防いでいます。通常のユーザー間の送金にはこのような待機期間はなく、承認されればアウトプットは技術的には使用可能です。ただし、さらなる承認を待つかどうかは、懸かっている金額と信頼の前提に基づくリスク管理上の判断です。
重要な事実
- ノードは、トランザクションをメンプールに追加する前に、コンセンサスルールに照らして検証します。
- ブロックの有効性は、そのプルーフ・オブ・ワークが現在の難易度ターゲットを満たしているかどうかで決まります。
- 6回の確認(約1時間)は一般的な慣習であり、プロトコル上の規則ではありません。
- コインベースのアウトプットは、使用できるようになるまで100ブロックの成熟期間が必要です。
- リオーグ(再編成)が起きると、置き換えられたブロックの通常のトランザクションは、新しいブランチと競合しない限りメンプールに戻ります。そのブロックのコインベースは消滅します。
- ノードは新しいトランザクションを'inv'メッセージで通知し、要求('getdata')に応じて送信します。
演習 九・六・三・一
9集めるトランザクションのライフサイクルにおける、作成から最終確定までの異なる段階や出来事を9つ挙げてください。
6まとめるこれら9つの段階を6つのフェーズに分類してください:構築、検証、伝播、マイニング、承認、承認後の状態。
3絞り込む6つのフェーズを、ネットワークがセキュリティやコンセンサスを強制する3つの重要なチェックポイントに絞り込んでください。
1結晶化する最も多くのワークが積み重なったチェーンに従うことで、競合するブロック間の対立がなぜ解決されるのかを、1文で説明してください。
事実確認
日付、数字、主張は、下記に記載された公表資料と照合して確認しました。