← Back to Bitcoin Improvement Proposals
BIPinformationaltaprootkey-managementscript

BIP 341: Fix taproot_tweak_pubkey

`lift_x` returns `None` if the input integer is not an X coordinate on the curve to indicate failure. `point_add`, on the other hand, interprets `None` as the point at infinity. Therefore, without this commit, if the internal `pubkey` is not a valid X coordinate, the function will not fail, which contradicts the specification in the "Script validation rules section". Instead, it sets `Q` to `t*G`. A test vector is being added here: https://github.com/bitcoin-core/qa-assets/pull/98 CC @sipa @aj

No reviews
jonasnick·Updated Jan 4, 2023·0 reviews·0 attestations·View source
Collections:BIPs — Merged

Specification

lift_x returns None if the input integer is not an X coordinate on the curve to indicate failure. point_add, on the other hand, interprets None as the point at infinity. Therefore, without this commit, if the internal pubkey is not a valid X coordinate, the function will not fail, which contradicts the specification in the "Script validation rules section". Instead, it sets Q to t*G.

A test vector is being added here: https://github.com/bitcoin-core/qa-assets/pull/98

CC @sipa @ajtowns

Discussion (0 threads)

Loading discussions...