暗号資産の残高の管理には、ビットコインに代表される「UTxOモデル」と、イーサリアムに代表される「アカウントモデル」という二つが存在します。
この記事ではそれぞれの特徴や違いについて、暗号資産初心者の方にもなるべく分かりやすく解説していきます。
UTxOモデルとアカウントモデルについて
「UTxOモデル」と「アカウントモデル」とは、それぞれ暗号資産の残高を管理するための方式です。
例えば「AさんがBさんに1BTCを送金する」という取引を行った場合、暗号資産自体が移動するわけではなく、「AさんからBさんに1BTCを送金」というデータのやり取りのみが行われます。
この時、AさんBさんのウォレットでそれぞれ残高を確認すると、Aさんの残高は1BTC減り、Bさんの残高は1BTC増えたことを確認することができるでしょう。
このように暗号資産の取引を行った時、ウォレット上で一目で残高を確認出来るようにするための方法が「UTxOモデル」と「アカウントモデル」です。
二つの方式には違いがあり、それぞれ特徴があります。
UTxOモデルとは
暗号資産の中でも最も有名なビットコインでは、「UTxO」という仕組みを使用しています。
UTxOは、「Unspent Transaction Output」の略で、日本語では「未使用トランザクションアウトプット」と言われます。
UTxOとは、「AさんからBさんに3BTC送金」や「AさんからCさんに5BTC送金」などの1つ1つの小さな取引履歴のことで、例えばビットコインでは、過去のUTxOを足したり引いたりすることで最終的な残高を計算します。
未使用トランザクションアウトプットの意味
ここでは、アウトプットを「出金」、アウトプットの反対であるインプットを「入金」に置き換えると分かりやすいかもしれません。
例えば「AさんからBさんに1BTC送金」というトランザクションがあった場合、Aさんは1BTC減ったことになるので「Aさんのアウトプット」、Bさんは1BTC増えたので「Bさんのインプット」と表現します。
実際に暗号資産が消費されるのは、アウトプットではなくインプットの時点なので、Aさんのアウトプットは誰も消費していない状態、すなわち「未使用トランザクションアウトプット」となります。
これをBさんが受け取ることでインプット(消費)され、そのトランザクションがインプットとして消費されることで新たに未使用のトランザクションアウトプットが出力され、この連鎖が続いていきます。
UTxOの仕組みと具体例
上記のようなトランザクションを経て取引されるUTxOの特徴は、計算の結果導き出された最終的な残高が記録されているわけではなく、いくつかのUTxOとして残されています。
例えば、Aさんのビットコインの残高として10BTCあったとしても、最後に受け取った時のトランザクションによって、その中身は4BTCのUTxOと6BTCのUTxOとして残っている可能性があります。
ここでAさんがBさんに対して3BTCを送金するという取引を行うとしましょう。
Aさんは10BTCを持っているので3BTCを支払うことは出来るものの、その中身は4BTCと6BTCです。
この場合UTxOモデルでは、4BTCを3BTCと1BTCに分割して3BTCだけを支払うということが出来ません。
現金の支払いで例えるならば、300円の買い物をするために500円玉を何もせずに100円玉に変換して100円玉3枚で支払いをすることが出来ないのと同じです。
そこで、4BTCのUTxOで3BTCの支払いをする場合は、支払う3BTCとおつりの1BTCの2つのアウトプットを生成し、新しいUTxOとして扱われます。
3BTCは送金先であるBさんに紐付けられ、おつりの1BTCは再び自分に紐付けられ、送金が行なわれます。
複雑に感じるかもしれませんが、例えば100円玉しか持っていない時にお店で70円のモノを買う場合、まず100円を支払い、その後お店からお釣りの30円を受け取ることを想像していただくと分かりやすいかもしれません。
アカウントモデルとは
これに対して、アカウントモデルでは、アカウントの残高をシンプルに直接データとして記録するため、UTxOモデルで行われたような複雑(に見える)取引がありません。
例えば、アカウントモデルを使用しているイーサリアムを例にあげると、10ETH持っているAさんからBさんへ3ETH送金する場合、Aさんの残高を3ETH減らして、Bさんの残高を3ETH増やすだけです。
Bさんへの一方向のインプットのみが行われるため、非常にシンプルな設計となっていることが大きな特徴です。
UTxOモデルとアカウントモデルの比較
暗号資産の残高を確認するための方式として上記二つのモデルを簡単に解説しましたが、それぞれどんな特徴があるのかについて比較を行っていきます。
プライバシーはUTxOの方が優れている
上記「UTxOの仕組みと具体例」で解説したUTxOモデルでの取引において、おつりとして自分に紐付けられるUTxOは、必ずしも元の自分のアドレスに紐付けられるわけではありません。
ビットコインに対応した多くのウォレットでは、新たにおつり用のアドレスが自動的に生成されおつりを受け取ることができます。これにより、一つのアカウントを使いまわすことなく資産の管理が可能となっていることから、プライバシーの観点に置いて優れていると言えるでしょう。
アカウントモデルでは同じアドレスが繰り返し使われるため、トランザクションが一つのアカウントにリンクされるため、プライバシーという観点においてはUTxOの方が優れていると言えるでしょう。
アカウントモデルの方がトランザクションサイズが小さい
UTxOはアドレスに紐付いたUTxOの全てを計算して残高を算出するため、アカウントモデルに比べるとネットワークに入力されるデータ量は大きくなります。
UTxOの方が並行処理が得意
UTxOは送金があった際に、それぞれのウォレットにお金を入れるだけで完了するため、都度ウォレットの残高を計算する必要がなく、たくさんの取引を並行処理することが得意です。
一方アカウントモデルでは、取引の度に必要な「送金者と受取側のウォレット残高の計算」における間違いを防ぐために、トランザクションを順番に1つずつ実行するという逐次処理を行う必要があるため、並行処理が苦手です。
まとめ
この記事では、暗号資産の残高管理の方式である「UTxOモデル」と「アカウントモデル」についてそれぞれの特徴と比較について解説させていただきました。
総合的にどちらの方が優れているかどうかという問題ではなく、その暗号資産が何を目指すのか、何を重視するのかが重要となります。
スマートコントラクトを組み込んだ暗号資産では、ウォレットデータがシンプルで管理しやすく、プログラムを組み込みやすいことからアカウントモデルが採用されたりするなど、その特徴を活かした選択がされています。
残高管理の方式を知ることは、その暗号資産の特徴を知る上での参考にもなると言えるでしょう。
計算間違いを起こさないためにトランザクションを順番に1つずつ実行するという逐次処理を行う必要があるため、並行処理が苦手です。
BTCBOXでは暗号資産塾のテーマを募集しております。記事作成の参考にさせて頂きますので、「暗号資産塾」で取り上げて欲しいテーマについて、こちらからご意見をお寄せください。