ブロックチェーン/レベル II · 仕組み/2.2 トランザクション/レッスン 2
インプットとアウトプット
トランザクションの構造:アウトポイント、スクリプト、暗黙の手数料
用意するものmempool.spaceやblockchain.comのようなブロックエクスプローラーサトシの値を合計するための電卓
問い
- トランザクションは、別のトランザクションが作成した価値を使用する権利があることを、どのように証明するのでしょうか?
- 手数料を示す明示的な項目がないのに、マイナーは自分が受け取る額をどのように正確に把握するのでしょうか?
- すべてのブロックの最初のトランザクションは、なぜ構造的に特殊なのでしょうか?
探究
- ビットコインのトランザクションは、バージョン番号とnLockTimeを持つデータ構造ですが、その中核はインプットとアウトプットです。インプットは価値そのものを含まず、価値を指し示します。各インプットはアウトポイントを用いて特定の過去のアウトプットを参照します。アウトポイントとは、元のトランザクションの32バイトのtxidと、そのトランザクション内のどのアウトプットを使用するかを示す4バイトのインデックスを組み合わせたものです。この参照によって、トランザクションが鎖のようにつながります。
- すべてのインプットには、ロック解除データとnSequenceフィールドも含まれます。nSequenceは、タイムロックとReplace-by-Fee(RBF)のシグナルを制御します。ロック解除データは、レガシートランザクションではscriptSigに、SegWitではウィットネス領域に格納され、参照先アウトプットの条件を満たすために必要な暗号学的証明を提供します。秘密鍵による署名はここに含まれます。
- アウトプットは価値が存在する場所です。各アウトプットは、8バイトの整数でサトシ単位の金額を指定し、後でそれを誰が使用できるかを定めるロッキングスクリプト(scriptPubKey)を持ちます。1つのトランザクションは複数のインプットとアウトプットを持てますが、インプットの合計はアウトプットの合計以上でなければなりません。
- 手数料はどこにも保存されていません。インプットが消費する価値の合計と、アウトプットが生み出す価値の合計の差として導き出されます。この差額は、そのトランザクションをブロックに含めたマイナーが受け取ります。両者の合計が等しければ手数料はゼロになり、アウトプットがインプットを上回ればトランザクションは無効になります。
- コインベーストランザクションは、この規則を裏付ける例外です。以前のアウトポイントを持たない特別なインプットが1つあり、実質的に無から新たな価値を生み出します。そのアウトプットには、ブロック報酬(現在3.125 BTC)に加え、そのブロック内の他のトランザクションから集めたすべての手数料が含まれます。あらゆるトランザクションのtxidは、ウィットネス情報を除いたシリアライズ済みデータのダブルSHA-256ハッシュです。
- ブロックエクスプローラーを開き、2009年1月12日にマイニングされたブロック170を調べてみましょう。このブロックには、コインベース以外に1件のトランザクションが含まれています。サトシ・ナカモトがハル・フィニーに10 BTCを送ったものです。その唯一のインプットは、ブロック9のコインベースアウトプットである50 BTCを使用しています。アウトプットは2つで、10 BTCがフィニーへ、40 BTCがサトシへ戻っています。インプットとアウトプットの合計はどちらも50 BTCなので、手数料はゼロです。ブロックに十分な空きがあったため、初期のトランザクションでは手数料を払わないことがよくありました。
重要な事実
- インプットは、txidとアウトプットインデックスからなるアウトポイントによって以前のアウトプットを参照します。
- トランザクション手数料は、インプットの金額の合計とアウトプットの金額の合計の差です。
- アウトプットには、サトシ単位の8バイトの値とロッキングスクリプト(scriptPubKey)が含まれます。
- インプットには、ロック解除データ(署名)と、タイムロックやRBFシグナリングに使うnSequenceフィールドが含まれます。
- コインベーストランザクションは、以前のアウトポイントを持たない特別なインプットによって新しいビットコインを生み出します。
- txidは、ウィットネスデータを除いたシリアライズ済みトランザクションのダブルSHA-256ハッシュです。
演習 九・六・三・一
9集めるブロックエクスプローラーで最近のトランザクションを9件調べてください。それぞれについて、インプット数、アウトプット数、サトシ単位の手数料を記録してください。
6まとめる9件を構造によって6つに分類してください:1インプット・1アウトプット、1インプット・2アウトプット、複数インプット・1アウトプット(統合)、1インプット・複数アウトプット(バッチ支払い)、複数インプット・複数アウトプット、その他。
3絞り込む6つのグループを、トランザクションが複数のインプットや複数のアウトプットを持つ3つの理由に絞り込んでください。
1結晶化するビットコインが手数料を明記せず暗黙のままにできる理由を、1文で説明してください。
事実確認
日付、数字、主張は、下記に記載された公表資料と照合して確認しました。