ビットコインのトランザクション・UTXOと残高計算

ブロックチェーンのトランザクションとビットコインの残高の集計方法についてザックリとした解説をします。

トランザクションとは

ビットコインには銀行と同じように取引履歴があります。

「AさんがBさんへ1BTC送金しました」といった取引履歴。取引明細といったほうがいいかもしれませんね。

この取引明細のことを「トランザクション」と呼びます。

インプットとアプトプット

このトランザクションには「インプット」と「アウトプット」があります。

インプット

「AさんがBさんへ0.1BTC送金した」を例にすると、インプットはAさんです。例えばAさんが1BTCもっていたとしたら、「Aさんの1BTC」がインプットになります。

アウトプット

アウトプットは送金後の残高です。Bさんの入金された0.1BTCです。そして手数料0.001BTCをひいた残りの金額0.899BTCがAさんの残高となります。

図ではイメージしやすくするために手数料をアウトプットに明記しましたが、実際の手数料はアウトプットには含まれていません。

なのでインプットとアウトプットの合計金額は一致しません。差額が手数料ということになります。ここではイメージしやすくするために、アウトプットに含めています。

手数料

手数料はマイナーへの手数料となります。

銀行でお金を送金すると銀行へ送金手数料を支払います。ビットコインでも同じです。ビットコインではマイナーと呼ばれる人に手数料を支払わないと送金してもらえません。

なので0.1BTCを送金する場合は、0.1BTCに手数料を含めたビットコインを送金しないといけません。ここでは0.001BTCをマイナーへの手数料としました。

この手数料は自分で決めます。そこが銀行とは違うところですね。ただしマイナーは手数料が高いものから順番に送金します。手数料を安く設定してしまうと、いつまでたっても送金されない可能性があります。

このように取引明細をインプットとアウトプットでまとめたのが「トランザクション」です。

UTXOとは

UTXOは正式には「unspent transaction output」で、訳すと「未使用アウトプット」です。

未使用アウトプットとはまだ使われていないアウトプット、つまり「残高」のことです。

ビットコインの残高計算

ビットコインの残高が知りたい場合、どうするのでしょうか?

ビットコインはビットコインネットワーク、つまりブロックチェーンに過去の取引履歴がすべて記録されています。この中から自分の取引履歴だけを取り出して計算すれば残高がわかります。

未使用の残高計算

どこを計算するのかというと、前述したビットコインの「残高」、つまりUTXOです。UTXOは未使用のアウトプット、残高でした。

ここで重要なのが、「未使用か?」です。アウトプットにはすでに使用済みのBTCもあります。これを集計してしまったら問題ですからね。

でもアウトプットが未使用かどうかは、ブロックチェーンをすべて追わないとわかりません。そんなことをしたら時間がかかってしまいますね。

そのために、ビットコインのブロックチェーンをすべて保持するフルノードがUTXOのデータベースをもっています。このデータベースはブロックチェーンとは別です。

このデータベースにUTXOがあるので、残高が知りたい場合は、フルノードに問い合わせすればわかります。ビットコインの残高はフルノードのUTXOデータベースを参照すればわかるということでした。

ビットコインのトランザクション・UTXOと残高計算まとめ

ここまでをまとめます。

  • ビットコインの取引明細をトランザクションと呼ぶ
  • トランザクションはインプットとアウトプットがある
  • 送金手数料をマイナーへ支払う必要がある
  • UTXOは残高のこと
  • ビットコインの残高はフルノードのUTXOデータベースにある

以上、ビットコインのトランザクション・UTXOと残高計算についてでした。

コメント