ビットコインVSイーサリアム
ビットコインとイーサリアムの大きな違いは、状態を更新する際に参加者同士での対話が必要かどうかである。これをVitalik Buterin氏はリッチステートフルネスと表現しており、ビットコインでそれを可能にするにはコベナンツが必要となる。(イーサリアムの特筆すべき点はチューリング完全ではない、リッチステートフルネスである!)
ビットコインでは、コインを送金するには署名が必要となるが、署名さえあればそのコイン全てを自由に操作できてしまう。例えば、1BTCのUTXOがあるとする。この1BTCの内0.7BTCをAさんへ、残りをBさんへ1か月後に送金するための契約を作ろうとしてもビットコインではできない。なぜなら、1BTCのUTXOに対応する署名は、そのコイン全てを自由に操作できてしまうからであり、AさんとBさんへいくら送金することまで制限をかけることはできないからである。
マルチシグ
BTCにはマルチシグが存在するが、これはAさんBさん両者の署名をもって1BTCの送金を可能にするような制限をかけることができる。しかし先程と同様、送金先の制限を掛けることはできない。
ライトニングネットワーク
ライトニングネットワークのようなコミットメント方式を用いることで、送金先の制限をかけることは可能である。しかし、これは二者間での対話及び署名が必要となる。また事前に署名が必要であったり、不正へのペナルティを課すために常にブロックチェーンを監視しないといけない。常にカウンターパーティーとの対話や監視が必要となる。
コベナンツ
コベナンツはBTCの送金先や数量に制限を設けることが可能である。しかし、ビットコインにはコベナンツは存在しない。ソフトフォークによりコベナンツが可能になると、Buterin氏のいうリッチステートフルネスを有するようになり、より柔軟なL2レベルでのコントラクトを構成することができる。余談だが、サイドチェーンのLiquidにはコベナンツがあり、それを活用したアプリケーションもでてきている。例えば、「FujiMoney:トークン借入れプロトコル」や「 Bitmatrix:AMMプロトコル」がある。
以上、ビットコインにはリッチステートフルネスに欠けていることを説明した。リッチステートフルネスがあることで、より簡単にコインへの制約をL1レベルで課することが可能となる。この点、イーサリアムではより簡単にスマートコントラクトを作ることができると言える。しかし、イーサリアムはブロックチェーンデータの肥大化によって分散性や非中央集権性に欠ける。ビットコインVSイーサリアムは機能面や分散性など比較対象が複数あるので、一概にどちらが優れているとは言えないのかもしれない。
追記(2023/3/20)
昨夜のビットコイン開発者ミーティングでも少し話題になったMEV※、ビットコインはMEV耐性があって、その理由はコベナンツが導入されていないから。イーサリアムのようなコントラクトに対してトランザクションを発行できてしまうとフロントランニングができてしまう。コベナンツが導入されると、誰でも署名ができ、かつ移転させるコインの数量やアドレスを制限できるようなアドレス(UTXO)を作ることができてしまう。そうなればMEVのリスクがでてくる。
※MEV(Miner/Maximal Extractable Value)とは、ブロックチェーンの待機中の取引プール(mempool)を分析して、収益性の高い取引を見つけることで獲得できる利益の一種
>1BTCの内0.7BTCをAさんへ、残りをBさんへ1か月後に送金するための契約
BさんアドレスのUTXOをOP_CSVで1ヶ月後にアンロックとすれば良いような気がする。