Open11
Taproot に lock する tx を作成する
あんまり解説しているものはなさそうなので、とりあえず rust-bitcoin を読んでいく。
p2tr の keypath にロックするには
pub fn new_v1_p2tr_tweaked(output_key: TweakedPublicKey) -> Script {
Script::new_witness_program(WitnessVersion::V1, &output_key.serialize())
}
p2wsh と全く同じで ok。
version が 1 である。
witness program がどうなるか?
定義: Taproot key path spending signature validation
keypath の場合は witness program は pubkey。
ただし署名は schnorr。
ただし output の key は TweakedPublicKey
である。
Tweaked pubkey を作成するメソッドは以下で untweakedPubkey に実装されている
untweakedPubkey は ECDSA の keypair である
なぜ tweak するのかはよくわかっていない
このあたりは参考になりそう
tweak は用途があるみたい。tweak しなければ行けないとかではないと思われる。
BDK では TweakedPublicKey が使われているが、
生成する関数の tweak は Option になっているので、なにも与えなければ untweak と実質同じ感じがする?
普通に untweak 用のメソッドがあった