Taproot
これを見ればすべてがわかる
https://www.youtube.com/watch?v=B22ADzX67To&t=0s
シュノア署名
https://scrapbox.io/files/60d9a264d64a58001c27f851.png
楕円曲線暗号では公開鍵の加算が可能
公開鍵A + 公開鍵B = 公開鍵C
しかし、公開鍵C宛に送金した場合、公開鍵AとBの秘密鍵を足し合わせなければならなかった。
シュノア署名により署名の集約が可能になる。
Rogue Key Attack
https://scrapbox.io/files/60d9a3115faa1b00233f2620.png
公開鍵の足し算も可能だか引き算も可能
これにより自分が持っている秘密鍵から生成される公開鍵をマルチシグで使用する公開鍵として相手に渡し、送金後に自分の秘密鍵のみで署名を行い資金を奪うことができる。
Rogue Key Attackへの対策
https://scrapbox.io/files/60d9a4195d28bc00221f01de.png
事前に公開鍵のコミットメントを交換して、有効な署名を作ることができるか確認する。
シュノア署名の制限事項
https://scrapbox.io/files/60d9a4ee463a2200225a8635.png
上述は n of n の場合のみで、m of n は別の仕組みを使う
Taproot
https://scrapbox.io/files/60d9a5ada1da1d0020f449d7.png
Lightning Networkなどで使われているトランザクションのアンロック条件を秘匿化出来る。
5つアンロック可能な条件があった場合、以前まではすべての条件が開示されていたが、一つのみで良くなった。
https://scrapbox.io/files/60d9a6932adde10022fc4921.png
Key-Pathは単一の送金先の場合
Script-Pathの場合はMASTのもの
Tapscript
https://scrapbox.io/files/60d9a74e3da53b001c845fd0.png
OP_NOP2 や 3 などのタイムロック系では不要なオペオードがスタックの中に残ったままで OP_DROP が必要だったが、OP_SUCCESS系のオペコード追加により、そのオペコード出てきた時点で検証成功という条件が追加された。
Taprootでのマルチシグ
https://scrapbox.io/files/60d9a83330ae17001c17ea68.png
バッチ検証を可能にするため、マルチシグのオペコードを変更。あるかどうかの検索が省略できるようになった。