UTXO ベースモデルのアセットプロトコルのスケーラビリティ改善手法
Bitcoin の上で Bitcoin 以外のアセットのトークンを発行する UTXO ベースモデルのアセットプロトコルの概要をこの記事で説明した。
そのとき、特定のアセット UTXO が正しいものであることをチェックするためには、当該 アセット UTXO から、その起源である genesis output (Bitcoin の coinbase トランザクションと同じ働きをする)までの全てのトランザクションが正しく行われたことを検証しなければいけないことを指摘した。
(Bitcoin と同じく)アセットの量の分割 / 結合が可能な可分トークンの場合、検証しなければいけない転送履歴は準指数関数的に増加すると考えられ、これはアセットプロトコルの重大なスケーラビリティ上の問題となる。ここではこの問題に対するすでに提案されているいくつかの改善手法(案)について列挙する。
Lightning Network 対応
アセットプロトコルが Lightning Network に対応すれば、channel を開設する Funding Transaction までは上記の検証を行わないといけないが、channel 内のトランザクションについては転送履歴が増加しない。まだ実現されていないが例えば。
確率的検証を行う
完全なトランザクショングラフを検証するのではなく、一部のみを検証する。残念ながら私はその手法をちゃんと理解していないし、それが実用的なのか理解していない。
不可分トークンにする
トークンを不可分にすれば転送履歴の増加は線形になり増加は抑えられる。額面が定まっている硬貨や紙幣のようなものである。
しかし、一回の支払いで額面を満たすため、多くの不可分トークンを転送しなくてはいけないだろう。
検証を信頼できる主体に委譲する
軽量なウォレットアプリケーションは転送履歴を自分で検証するのをあきらめて、信頼できる外部の主体に委譲する。例えば、当該アセットの UTXO アキュムレータ(utreexo 等)を運用するサーバに、アセット UTXO が正しいか問い合わせる。
しかし、Client side validation モデルのプロトコルでは、通常二者間のトランザクションの内容は公開されない。サーバはクライアントからトランザクションの証明を収集する必要がある。