どちらも「誰がいくら持っているか」を記録しますが、ビットコインとイーサリアムではまったく異なる方法が使われています。ビットコインは「未使用の紙幣」を一枚ずつ記録し、イーサリアムは各アカウントの残高を記録します。この違いを理解すると、一見不思議に思える現象も納得できるようになります。
$BTC はUTXOモデルを採用しており、ウォレットに表示される残高は、複数の未使用アウトプットの合計です。現在 82,516.59(24時間で+1.28%)。
■ UTXO:未使用の紙幣
ビットコインはUTXO(未使用トランザクションアウトプット)モデルを採用しています。各UTXOは額面が一定ではない紙幣のようなものだと考えられます。取引では、複数の古い紙幣を使って、受取人に渡す複数の新しい紙幣を発行します。
ウォレットに表示される残高は、あなたが所有するすべてのUTXOをウォレットが合計したものです。ブロックチェーン上に「残高」という数字があるわけではありません。
■ おつりと手数料
UTXOは一つ丸ごと使う必要があります。たとえば、1枚の「紙幣」を持っていて、0.3枚を支払う場合、取引では2つの出力が作られます。0.3枚が相手に送られ、手数料を差し引いた残りがおつりとして自分のアドレスに戻ります。多くのウォレットはおつりを新しいアドレスに送るため、ブロックエクスプローラーでは「お金が自分に戻ってきた」ように見えます。
ビットコインの取引では、手数料は個別に記録されません。すべての入力の合計からすべての出力の合計を差し引いた額が手数料となり、その差額は取引をブロックに取り込んだマイナーのものになります。
■ アカウントモデル:残高を直接記録
イーサリアムはアカウントモデルを採用しており、ブロックチェーン上に各アカウントの残高が直接記録されています。送金では、一方のアカウントから残高を差し引き、もう一方のアカウントに加算します。銀行口座に似た仕組みです。イーサリアムには、秘密鍵で管理される外部アカウントと、コードで管理されるコントラクトアカウントの2種類があります。
同じ取引が2回実行されるのを防ぐため、各外部アカウントにはnonceがあります。取引を送るたびに1ずつ増え、取引はnonceの順番どおりに実行されなければなりません。そのため、先の取引が詰まると、後続の取引も順番待ちになります。
■ それぞれに長所と短所
UTXOモデルでは、互いに関係のない取引を並行して検証できます。また、おつりを新しいアドレスで受け取ることはプライバシーの向上にも役立ちますが、複雑なコントラクトを書くのにはあまり向いていません。アカウントモデルは残高が分かりやすく、コントラクトも書きやすい一方、同じアカウントからの取引は順番待ちになります。CardanoはUTXOを拡張したeUTXOを採用し、出力にスクリプトのロジックを持たせられるようにしています。
■ まとめ
次にブロックエクスプローラーでビットコインが「自分に戻ってきた」ように見えたり、イーサリアムの取引が詰まって後続の取引もすべて順番待ちになったりしても、2つの会計方式それぞれの特徴だと分かれば、慌てずに済みます。仕組みを知るのは、値上がりや値下がりを予想するためではなく、判断する前に状況を把握しておくためです。
知りたいテーマがあれば、コメント欄で教えてください。