PSBT_GLOBAL_XPUB: Version bytes in xpub

PSBT_GLOBAL_XPUB: Version bytes in xpub
2019-11-16  4:54 ` Andrew Chow
  
From: Ian Kroozbi @ 2019-11-15 22:29 UTC (permalink / raw)
  To: bitcoin-dev

[-- Attachment #1: Type: text/plain, Size: 1119 bytes --]

What’s the rational for including the version bytes in the xpub in the
GLOBAL_XPUB field? This was briefly touched upon in an earlier email from
Stepan, but I don’t think it was every fully addressed.

I am not sure if we need the whole xpub or keeping chain_code and
> public_key is enough, but I would suggest to keep other data
> just in case. For example, keeping prefix that defines if the key is used
> for testnet or mainnet may be useful.
>

The version bytes seem to be superfluous data considering the transaction
format and the rest of the PSBT key-values are network agnostic. If we
wanted to attach network data to the PSBT then I think that would be better
served by using a new key.

There is also a potential issue where we could have conflicting versions on
different xpubs in the PSBT. If we remove the version bytes then we can
eliminate this possibility.

I haven’t formed an opinion on whether or not the other data outside of the
public key and chain code should be included, but I think it would be good
to discuss any rational for either including it or omitting it.

[-- Attachment #2: Type: text/html, Size: 1278 bytes --]

 permalink raw reply	[|nested]
2019-11-15 22:29 [bitcoin-dev] PSBT_GLOBAL_XPUB: Version bytes in xpub Ian Kroozbi

  
From: Andrew Chow @ 2019-11-16  4:54 UTC ( / )
  To: Ian Kroozbi, Bitcoin Protocol Discussion



The rationale was that xpubs was already a predefined standard which many software already have serialization code for. It's simpler to just reuse what has been defined before.

IMO, the version bytes don't matter and should be ignored. In the proposed implementation to Bitcoin Core, the version bytes are ignored.

Andrew

On 11/15/19 5:29 PM, Ian Kroozbi via bitcoin-dev wrote:

> What’s the rational for including the version bytes in the xpub in the GLOBAL_XPUB field? This was briefly touched upon in an earlier email from Stepan, but I don’t think it was every fully addressed.
>
>> I am not sure if we need the whole xpub or keeping chain_code and
>> public_key is enough, but I would suggest to keep other data
>> just in case. For example, keeping prefix that defines if the key is used
>> for testnet or mainnet may be useful.
>
> The version bytes seem to be superfluous data considering the transaction format and the rest of the PSBT key-values are network agnostic. If we wanted to attach network data to the PSBT then I think that would be better served by using a new key.
>
> There is also a potential issue where we could have conflicting versions on different xpubs in the PSBT. If we remove the version bytes then we can eliminate this possibility.
>
> I haven’t formed an opinion on whether or not the other data outside of the public key and chain code should be included, but I think it would be good to discuss any rational for either including it or omitting it.