UTXOとは?ビットコインの残高管理方法の仕組みやメリット、デメリットを解説!
「UTXOってなに?」
と悩んでいる方も多いかと思います。
そこでこの記事では、画像を使いながらUTXOの仕組みやメリット、デメリットなどをわかりやすく解説しています。
この記事を読めば、ビットコインで採用されているUTXOについて詳しくなることができます。
- ビットコインの残高管理方法
- プライバシーが守られる
- リプレイアタックのリスクが低い
UTXOとは
UTXOとは「unspent transaction output」の略で、和訳すると未使用のトランザクションアウトプットです。
これはブロックチェーン上にあるトランザクションの取引データのみに基づいて計算し、アドレス(ウォレット)の残高を管理する方法です。
通帳のようなユーザーの残高をそのままデータとして管理する銀行などのシステムとは異なり、取引データのみから残高を計算します。
世界初の暗号資産(仮想通貨)であるビットコイン(BTC)やクアンタム(QTUM)などでUTXOは採用されています。
UTXOの仕組み
UTXOの仕組み①トランザクションのinputとoutput
ビットコインで取引が発生すると取引記録はブロックチェーン上にトランザクションが生成され、そのトランザクションのinputとoutputの二つに記録されます。
ビットコインの着金がinputに記録され、送金はoutputに記録されます。
例えば、AさんがBさんのアドレスに5BTC送信したとしましょう。
そうするとブロックチェーン上にトランザクション①として記録されます。
5BTCのinput(入金)情報と共にoutput(送金)情報も記録されますが、Bさんはまだ誰にも送金していないのでトランザクション①のoutputは未使用の状態です。
このトランザクション①のoutputは、UTXOでありBさんのアドレスの残高を表しています。
次にBさんはCさんのアドレスに5BTC送金します。
するとその取引はトランザクション②のinputとoutputに記録されます。
この時トランザクション①のoutputが未使用から使用済みになるため、UTXOではなくなります。
今度はトランザクション②のoutputが未使用のトランザクションのoutput=UTXOということでCさんのアドレスの残高を表しています。
まだoutput(送金)されてない=未使用のトランザクションのoutputの記録1つ1つがUTXOというわけです。
取引が膨大になればなるほどブロックチェーン上にあるUTXOを全て集めて残高を計算しなければならないため処理が複雑になってしまいます。
UTXOの仕組み②coinbase
各ブロックの一番初めはcoinbaseという特別なトランザクションになっています。
この部分はマイニングに成功したマイナーに支払われる報酬として、そのマイナーによって一番初めに配置されます。
インプット部分がなく、アウトプットのみになっています。
UTXOのメリット
UTXOのメリット①プライバシーや匿名性が保たれる
UTXOでは個人を追跡しようとするが困難なため、プライバシーの保護に優れています。
プライバシーが保護されていることにより、誰がどの程度資産を所持しているのかが判別しづらくなります。
その結果、富の集中がわからないため、ハッキングに狙われにくくなります。
これはイーサリアムなどの通貨で採用されている、直接残高をブロックチェーンに記録するアカウントベースよりも優れている点です。
UTXOのメリット②リプレイアタックのリスクが低い
リプレイアタックとは、ハードフォークを実施した通貨を繰り返し出金することで、ハードフォーク後の通貨を盗む行為です。
UTXOでは、このリプレイアタックへのリスクが低いです。
その理由として、それぞれのアドレスの残高はUTXOから計算されているので、ハードフォーク後にUTXOが区別されれば、同一に残高を計算することができないからです。
実際、ビットコインではリプレイアタックの被害にあったことはありませんが、アカウントベースを採用しているイーサリアムではThe DAO事件が起きています。
UTXOのデメリット
UTXOのデメリット①計算が複雑
残高を算出する際、すべてのUTXOを計算する必要があります。
またトランザクションのサイズを小さくし、取引手数料を抑えるため、送金の際はUTXOを最適化する必要があります。
スマートコントラクトのようなプログラムを実装するとなるとさらに膨大な計算量が必要になるため、UTXOには向いていません。
UTXOまとめ
- ビットコインの残高管理方法
- プライバシーが守られる
- リプレイアタックのリスクが低い
UTXOベースは、トランザクションの取引データから計算してウォレット(アドレス)の残高を管理する方法です。
直接ブロックチェーンに残高を管理するアカウントベースと比較して、メリットもありますがデメリットもあります。
今後、どちらの方法が主流となっていくか注目しましょう!