本文へスキップ
buybitcoinsmart

用語集 / トランザクションと手数料

トランザクション出力

別名は出力、Output、TxOutです。

トランザクション出力とは?
トランザクション出力とは、ビットコインの数量と、次に誰がそれを使用できるかを決めるロックを合わせたものであり、ビットコインが実際に存在する唯一の場所です。

2つのフィールドが1つになります。サトシ単位の8バイトの金額と、それを支出する条件を記すスクリプトです。出金フォームに貼り付けるアドレスは、そのスクリプトを人間が読める形式で符号化したものにすぎません。だからこそ、古い形式ではなくbech32を選ぶことは、保有するビットコインがどのようなロックの下に置かれるかを選ぶことになるのです。アウトプットの作成は安価で、後からアンロックするのは高くつきます。

仕組み

アウトプットは、どこにも所有者の名前が記されていない小さな記録です。

valueフィールドは8バイトで、サトシの整数を保持します。総量が2,100,000,000,000,000サトシ付近に上限設定された通貨にとって、64ビットは十分な余裕があり、小数ではなく整数を使うからこそビットコインの会計には丸め誤差がありません。続いて長さのプレフィックスと、ソースコードではscriptPubKeyと呼ばれるロックスクリプトが来ます。これは将来の支出者が満たさなければならない短いプログラムです。

スクリプトが異なれば、サイズもコストも異なります。pay-to-public-key-hashのロックはスクリプトが25バイトで、アウトプット全体は34バイトになります。ネイティブSegWitのロックは22バイトで、アウトプットは31バイトになります。Taprootのロックはスクリプトが34バイトで、合計43バイトです。見慣れたアドレスの符号化は、そのままこれらのロックに対応します。先頭が1のもの、bc1qのもの、bc1pのものです。

「ロック」という言葉は「所有者」よりも正確です。スクリプトは人を記録しません。記録するのはテストであり、そのテストに合格できる者なら誰でもコインを支出できます。秘密鍵を単なるログイン情報ではなく、保護すべきものとする理由はまさにここにあります。

もう2つ重要な性質があります。アウトプットはゼロから始まる位置で番号付けされるため、トランザクションの2番目のアウトプットのインデックスは1です。また、ダスト閾値(レガシーロックでおよそ546サトシ、ネイティブSegWitで294サトシ)を下回るアウトプットは、支出にかかるコストがその価値を上回るため、既定ではリレーされません。

どこで目にするか

アウトプットはどのブロックエクスプローラーのページでも右側の列に表示され、支出時にはほぼ常に2つあります。

1つは支払いで、もう1つはおつりですが、トランザクションのどこにもどちらがどちらかは記されていません。この推測がブロックチェーン分析の原材料であり、おつりアドレスを再利用するウォレットがそうでないウォレットより追跡しやすい理由でもあります。

アウトプットはネットワークの記憶でもあります。すべてのフルノードは未使用のアウトプットすべてのデータベースを保持します。その集合こそが、新しいトランザクションを照合する対象そのものだからです。作成したアウトプットは、誰かが支出するまで数万台のマシン上のそのデータベースに残ります。したがって、小さなアウトプットを多数作成することは高くつくうえにやや迷惑であり、それらを統合することは節約であると同時に善意でもあります。

唯一の例外は、意図的に支出不能にされたアウトプットです。OP_RETURNのアウトプットはデータを運び、決して換金できないため、ノードはそれを永久に保存するのではなく、直ちに未使用の集合から除外します。

ビットコインを購入する人にとって、実務的な要点は短いものです。将来の自分が感謝するアドレス形式へ出金し、小さな出金を多数行うより大きな出金を少数行うことを選び、ウォレットに表示される残高は、現時点でそのウォレットが管理する鍵にロックされているアウトプットの合計にすぎないことを覚えておいてください。

トランザクションアウトプットvs UTXO

アウトプットは記録であり、UTXOは誰も支出していない間だけその記録が持つ状態です。これまでに作成されたすべてのアウトプットはブロックに永久に書き込まれ、何年後でもそこから読み取れますが、後続のトランザクションがそれを参照した瞬間に未使用ではなくなり、ノードが追跡する集合から外れます。つまり、すべてのUTXOはアウトプットですが、ほとんどのアウトプットはもはやUTXOではありません。この区別には実務上の意味があります。ウォレットの残高はUTXOの合計であり、これまでに自分のアドレスへ支払われたすべての合計ではありません。また、あるアドレスで受け取った総額が大きいと表示するブロックエクスプローラーは、今も持っているお金ではなく履歴を描写しているのです。

混同しやすい用語

よくある質問

送信したトランザクションに、自分に戻ってくる出力があるのはなぜですか?

それはお釣りです。コインはまとめて支出されるため、支出したコインが支払い額と手数料の合計より大きければ、ウォレットは自身が管理するアドレスにロックされた2番目の出力を作成し、差額をあなたに戻します。

出力はアドレスと同じものですか?

いいえ。アドレスは、出力が持つロックスクリプトをテキストでエンコードしたものです。多くの出力が1つのアドレスを共有でき、出力はさらに数量と位置も保持しますが、アドレスにはそのどちらも含まれません。

次に読む

関連用語

トランザクションと手数料のその他の用語

このページを英語で読む