Utreexo
しくみ
Fullnode validation の目的は、最新の UTXO を知ること = それが Bitcoin の現在の状態だから そのためには、各 Block における UTXO の状態を Tx で更新していくしかない(同時に Tx が正しいか validate する)
UTXO の変化は Tx によってしか起きない
送金者が自分が消費する UTXO が最新の UTXO set に含まれていることを証明する必要がある
自分の UTXO と hash tree の path? を示すことで、validator は markle root を生成し検証できる
Utreexo の markle root をもっているだけで、Full node と同じレベレの検証ができる
それに加えて、自分が関心がある=自分のUTXO を保持していれば ok
従来は、validator がすべての UTXO をもっているので、送金側が proove する必要はない
しかし UTXO は数GB のサイズがあるので full node の負担は大きい
leaf の順番大事だよね?
実際の IBD のプロセスがイメージできていない...
Pros
full node が数キロバイトで済む
utxo がメモリに全部載っているのと同じことだから?
Cons
archive ノードの容量は増加
full node はすべての tx を自分のデータだけで検証できる?
現在の UTXOs を得るためにはすべてのブロックを検証して、いまの UTXO の状態を得る必要がある
ほかの full node から Tx をダウンロードして、検証して、Block ごとの UTXO set をつくっていく
Block 1 の UTXO set ができた
Block 2 の Tx をもらう
Input が Block 1 の Utxo set に含まれていることを検証する
だから utxo set が必要
コスト
disk I/O
disk size
正しい Utreexo markle root だけをもっていれば、Tx をもらって、tree を構成すれば検証できる
正しい Utreexo root であることは?
最新の root がもっとも hash power がのった chain の root であれば ok ということ?
root だけ持てばいい utreexo の場合は、小さいのでメモリにおいておけるから高速化できる
ただし、proof 分?ダウロードするデータは増加する
Light client のセキュリティが向上する?理由
full node は少なくともすべての UTXOs を持つ必要があった
UTXOs を持っていないとリレーされてきた tx が正しいか検証できない
しかし、utreexo ではルートをもっていれば、proof と utxo が送られてくれば、自身の root に対して検証ができる いままで通り自分の utxos
proof
proof はブロックごとに変わる可能性がある?絶対かわる?
proof をもつことで proof がない場合と比べてなにがいいのか?
exchange がもつ大量の utxos もコストをかけてマネージしている
自分のだけ管理がいいよね