UTXOは以前のトランザクションで作られ、まだ使われていない金額です。Unspent Transaction Outputの略です。ウォレットには1つの残高が表示されても、その裏には別々のUTXOがあり、ポケットの現金が何枚かの紙幣でできているのに似ています。支払い時にウォレットがどれを使うか選びます。1つのアドレスが何度も支払いを受け、複数のUTXOを持つこともあります。
70 000 satと50 000 satの2つのUTXO、合計120 000 satを持っているとします。satはビットコインの最小単位です。90 000 satを払い、手数料に1 000 satを使う場合、ウォレットは両方を選べます。受取人に90 000 sat、自分へのお釣りに29 000 satの新しい出力が作られます。元の2つのUTXOは丸ごと消費され、中に一部分が残ることはありません。紙幣で払いお釣りを受け取るのに似ていますが、金額は固定の額面に限られません。新しい出力を2つ同じアドレスに送っても、別々のUTXOのままで、1つに自動統合されることはありません。 [2]
ウォレットは追跡している出力を合計しますが、すべてをすぐ使えるとは限りません。Watch-only Walletは支払いを観察するだけで、署名に必要な秘密鍵を自ら持ちません。別の出力は一定の時点までロックされているかもしれません。ブロックの最初の取引であるCoinbase Transactionからの報酬は、規定の成熟期間を満たす必要があります。また、ごく小さい金額は技術的に使えても、手数料が高いときには使う費用がその価値を上回ることがあります。利用可能か、使う権限があるか、経済的に見合うかは別の問題です。 [1]
UTXOを使うたびに入力が1つ増え、通常は取引データも増えます。同じ料率で入力の種類も同程度なら、小額をたくさん使う方が大きな1つを使うより高くなります。Coin Controlでは特定のUTXOを手動で選べます。少数の大きな金額にまとめる統合は、将来の取引を小さくできる一方、今の手数料が必要です。プライバシーにも影響します。入力をまとめると、同じ人が管理していると観察者に推測される可能性があります。確実な証拠ではありませんが、履歴を分けたい資金を自動的にまとめない理由になります。 [2] [4]
アドレスだけでは足りません。各出力は、取引の識別子txidと、その取引内の出力番号の組で識別されます。この参照がoutpointです。出力にはsatoshi単位の金額と、使用条件を記したscriptPubKeyがあります。承認済みの出力について、ノードは生成されたブロック高とCoinbase Transaction由来かどうかも保持し、成熟や時間の制約を調べます。アドレスやoutpointを知ることは記録を指し示せるだけで、資金を使えることではありません。使うには条件を満たす必要があります。 [1] [2]
承認済みUTXOの集合は、特定のブロックで終わる履歴に対応します。ノードはさらに、未承認取引の待合室であるmempoolを考慮することもあります。そこでは既知の出力がすでに使われ、新しい出力も作られています。別の有効な履歴の枝を採用する再編成でも状態は変わります。技術的な確認にはBitcoin Coreのgettxoutコマンドが使えます。include_mempoolオプションで待機中の取引を含めるか決めます。nullという応答は、その見方では出力をUTXOとして利用できないという意味にすぎず、最初から存在しなかったのか、すでに使われたのかを区別しません。比較にはノードの状態と問い合わせ方の両方が重要です。 [3]
理解を深めるには、この項目とあわせて次もお読みください トランザクション, Full Node, Private Key, ウォレット, Mempool. 次の項目からも参照されています Full Node, トランザクション, Private Key, ウォレット.
01UTXOはウォレット残高と同じですか?+
違います。UTXO は一つの具体的な出力です。ウォレットは追跡する出力の状態に応じて残高を計算します。表示額のすべてが直ちに使えるとは限りません。ネットワークは変更可能な一つの口座残高ではなく、出力とその使用条件を追跡します。
02小さなUTXOが多いと手数料が増えるのはなぜですか?+
選んだ各入力がデータを追加します。入力の種類や他の出力が同等なら、多数の小さな UTXO を使う方が、一つの大きな UTXO を使うより多くの仮想バイトを必要とします。そのため、sat/vB の手数料率が同じなら、通常は手数料の総額が高くなります。