On Wed, Apr 29, 2020 at 04:57:46PM +0200, Andrew Kozlik via bitcoin-dev wrote: > In order to ascertain non-ownership of an input which is claimed to be > external, the wallet needs the scriptPubKey of the previous output spent by > this input. A wallet can easily check whether a scriptPubKey contais a specific pubkey (as in P2PK/P2TR), but I think it's impractical for most wallets to check whether a scriptPubKey contains any of the possible ~two billion keys available in a specific BIP32 derivation path (and many wallets natively support multiple paths). It would seem to me that checking a list of scriptPubKeys for wallet matches would require obtaining the BIP32 derivation paths for the corresponding keys, which would have to be provided by a trusted data source. If you trust that source, you could just trust them to tell you that none of the other inputs belong to your wallet. Alternatively, there's the scheme described in the email you linked by Greg Saunders (with the scheme co-attributed to Andrew Poelstra), which seems reasonable to me.[1] It's only downside (AFAICT) is that it requires an extra one-way communication from a signing device to a coordinator. For a true offline signer, that can be annoying, but for an automated hardware wallet participating in coinjoins or LN, that doesn't seem too burdensome to me. -Dave [1] The scheme could be trivially tweaked to be compatible with BIP322 generic signed messages, which is something that could become widely adopted (I hope) and so make supporting the scheme easier.