UTXO(unspent transaction output)モデルとアカウントモデルの両方は、ブロックチェーン上で取引を実行した後に誰かが持っているトークンの残りの数を表すために使用される暗号通貨の記録の方法です。これらのモデルは、ブロックチェーンアーキテクチャがプライバシーを確保しながら正確な台帳を維持するための重要な方法です。
UTXOモデルとは?
UTXOの最も簡単な例えは、物理的なフィアット通貨です。コインや紙幣がより小さな額面に分割できないのと同様に、UTXOも分割できません。UTXOは、所有者の秘密鍵によって制御される、対応するトークンの離散的な(不可分でユニークな)塊と考えることができます。
UTXOモデルは、ビットコイン(BTC)、ビットコインキャッシュ(BCH)、ライトコイン(LTC)、Zcash(ZEC)などのプロジェクトで使用されています。任意の時点で既存のUTXOをすべて集めたものをUTXOセットと呼びます。ブロックチェーン上で行われるあらゆる取引は、UTXOセットの変更とみなすことができます。
UTXOの最も簡単な例えは、物理的な不換紙幣である。コインや紙幣がより小さな額面に分割できないのと同様に、UTXOも分割できない。UTXOは、所有者の秘密鍵によって制御される、対応するトークンの離散的な(不可分でユニークな)塊と考えることができます。
UTXOモデルは、ビットコイン(BTC)、ビットコインキャッシュ(BCH)、ライトコイン(LTC)、Zcash(ZEC)などのプロジェクトで使用されています。任意の時点で既存のUTXOをすべて集めたものをUTXOセットと呼びます。ブロックチェーン上で行われるあらゆる取引は、UTXOセットの変更とみなすことができます。
UTXOトランザクションはどのように機能しますか?
UTXOモデルのブロックチェーンは、以前の取引によって生成されたUTXOを入力として使用して取引を実行し、新しい取引によって生成されたUTXOを出力として受け取ります。UTXOモデルの取引は、以下の例で理解できます。
- ボブは3枚の20ドル紙幣を持っている。各紙幣は1つのUTXOを表す。例えば、20ドル紙幣を2枚の10ドル紙幣と交換するには、ボブは20ドルを表すUTXOを消費して、それぞれ10ドルを表す2つのUTXOを得る必要がある。
- ボブは、アリスに35ドルを支払いたい。
- ボブは、アリスに20ドル札を2枚渡し、その代わりに5ドル札を1枚受け取る。
- この取引では、合計2つのUTXOが発生した。1つ目は、アリスに渡した2枚の20ドル紙幣を表し、2つ目は、ボブに返したお釣りの5ドルを表す。
物理的な通貨とは異なり、1つのUTXOは5BTC、479.2BTC、またはその中間の金額を表すことができます。ユーザーのウォレットに入っているトークンは、その人が所有するUTXOの総量を表しています。ブロックチェーンに移って、ボブがアリスに3.7BTCを送ろうとした場合にどうなるかを考えてみましょう。
- 先ほどの例の紙幣と同様に、ボブの財布には合計3つのUTXOが入っており、それぞれ3BTC、8BTC、0.6BTCの価値があります。これらのUTXOは、今回の取引の入力として使用されるが、以前の取引で出力されたものである。
- ボブは、1つのUTXOで取引をまかなうのに十分なBTCを持っていないため、3BTCと8BTCのUTXOの両方をアリスに送り、合計3.8BTCとする。
- 2 つの UTXO が消費される。アリスのウォレットは7BTCの新しいUTXOを受け取り、ボブのウォレットは残りの0.1BTCの新しいUTXOを受け取る。
UTXOモデルのトランザクションのビジュアル表現(出典:SEBA銀行調べ)
アカウントモデルとは?
アカウントモデルの最も簡単な例えは、デビットカードや銀行口座です。小さな額面に分割できない物理的な不換紙幣とは異なり、アカウントモデルは任意の量のトークンのクレジット(またはデビット)をサポートします。UTXOウォレットがユーザーのUTXOの総計を表すのに対し、アカウントモデル・ウォレットは単にユーザーの総計の残高を表します。
アカウントモデルは、Ethereum(ETH)、Ethereum Classic(ETC)、Ripple(XRP)などのプロジェクトで使用されています。UTXOモデルとは異なり、トランザクションはアカウント間の単一の資金移動を表し、追加のインプットやアウトプットは必要ありません。必要なのは、台帳の変更だけです。
アカウントモデルのトランザクションはどのように機能するのか?
各口座の残高はブロックチェーンに保存されています。アカウントモデルのブロックチェーンでは、あるアカウントの残高を減らし、それに応じて相手の残高を増やすだけで取引が実行されます。先ほどの例で、ボブがアリスに3.7ETHを送りたい場合、どのような違いがあるか見てみましょう。
- ボブのウォレットには4ETHの残高がある。
- ボブのウォレットは単一の残高なので、彼は7ETHをアリスに直接送金できる。
- 7ETHは、Bobのウォレットから差し引かれ、Aliceのウォレットに追加される。
アカウントモデルのトランザクションのビジュアル表現(出典:SEBA銀行調べ)
UTXOモデルとアカウントモデルの違いは何か
UTXOモデルとアカウントモデルは、ブロックチェーンネットワークでウォレットの残高を記録するという同じ目的を持っていますが、それぞれに明確な長所と短所があります。
- 拡張性: 1つの残高を保存するには、そのユーザーが所有するすべてのUTXOを保存するよりも、はるかに少ないメモリしか必要としないため、アカウントモデルはより効率的な方法でメモリを利用します。アカウントモデルのトランザクションは、送信者、受信者、金額、デジタル署名のみを必要とするため、サイズも小さくなります。イーサリアムの各トランザクションは約100バイトですが、UTXOモデルのトランザクションは通常その数倍になります。一方で、UTXOモデルに固有の検証メカニズムにより、ライトニングネットワークなどの決済チャネルの開発に適した設計になっています。また、UTXOのトランザクションは並列化が可能なため、UTXOベースのブロックチェーンをシャードやサイドチェーンに分割することが容易になります。UTXOモデルでは、クライアント側で出力を集約して定義することができるため、ネットワークの計算要件が軽減されます。UTXOモデルでは、クライアント側で出力を集約して定義することができるため、ネットワークの計算量を減らすことができます。
- プライバシー: UTXOモデルでは、アドレスの切り替えが容易であるため、コインの所有権を追跡することが難しくなります。新たに生成されたアドレスには公開された所有者がおらず、特定のユーザーに結びつけるためには通常、高度なチェーン分析が必要となります。アカウントモデルでは1つのアドレスの再利用が推奨されているため、このようなブロックチェーンでは取引履歴の特定が非常に容易になります。一方で、アカウントモデルはファンジビリティの点でより優れたプライバシーを提供しています。先ほどのUTXOの例で考えると、アリスのウォレットにある3.7BTCのUTXOが、ボブの3BTCと0.8BTCのUTXOから生成されたものであることを、第三者が容易に推測することができます。アカウントモデルでは、複数の取引で資金を得たウォレットは単一の残高で表されるため、そのような関連性はありません。アリスが自分のウォレットからETHを使うことがあっても、そのETHがボブから来たものなのか、他の誰かから来たものなのか、誰にもわからないのです。
- スマートコントラクト機能: アカウントベースの取引は単純で直感的なため、スマートコントラクトの機能面で大きなメリットがあります。単数の残高を検証することは、UTXOの入出力ロジックを計算するよりも計算負荷が低く、分散型アプリ(DApp)の開発者が複数の当事者間の契約や取引をプログラムすることを容易にしています。例えば、Ethereum Virtual Machine(EVM)では、複数のスマートコントラクト間の取引を、それぞれの残高を調整するだけで処理することができます。UTXOモデルは、各取引において明示的なUTXOの入力と出力を必要とするため、より多くのリソースを必要とします。UTXOモデルでプログラムされたスマートコントラクトは、組み合わせるべき入力の数や、複数の選択肢がある場合にどの入力を組み合わせるべきかを考慮する必要があります。
- セキュリティ: ビットコインなどのUTXOブロックチェーンでは、バリデータ・ノードがUTXOセットを追跡し、どのコインが流通しているか、誰が所有しているかを正確に把握します。各トランザクションは、使用される正確なUTXOを参照しなければならないため、このシステムは二重支出の問題を信頼性のある効率的な方法で解決します。アカウントモデルのブロックチェーンは、はるかに脆弱であることが証明されており、チャージバックやスマートコントラクトの過多など、他の問題に悩まされることがよくあります。UTXOモデルで使用される明確に定義された入力と出力の代わりに、アカウントモデルでは、仮想マシンによって正確さをチェックしなければならない「イベント」を使用します。例えば、Ethereum Classicプロジェクトでは、2020年にかけての一連の二重支出攻撃で数百万ドルの損失が発生しました。
まとめ
UTXOモデルとアカウントモデルの両方が、ブロックチェーンにトランザクションを記録する上で重要な役割を果たします。UXTOモデルでは、取引は(使われていない取引)出力のセットとして記録されます。アカウントモデルでは、取引はグローバルな残高のセットに記録されます。
両モデルにはそれぞれ異なる利点と欠点があるため、ブロックチェーンにおける両モデルの適用は、そのプロジェクトが何をしようとしているかによって大きく異なります。イーサリアムは強力なスマートコントラクトの展開に重点を置いているためアカウントモデルを使用し、ビットコインは電子マネーの開発に重点を置いているためUTXOを使用しています。
新しいプロジェクトでは、これらのモデルをさらに革新しようとしています。Cardano(ADA)、Tron(TRX)、Qtum(QTUM))などは、両者の利点を組み合わせて高度なハイブリッドモデルを模索しています。これらのモデルは、開発者がスマートコントラクトの力を放棄することなくUTXOを利用することを容易にします。
例えば、カルダノの拡張UTXO(Extended UTXO)モデルは、並列処理機能を維持しながらスマートコントラクトを開発する機能を提供しています。また、このモデルでは、各取引の出力にデータフィールドを追加することで、スマートコントラクトと同じように情報を連携させることができます。