Witness serialization in PSBT non-witness UTXOs

Witness serialization in PSBT non-witness UTXOs
2018-08-13 20:32 ` Achow101
  
From: Pieter Wuille @ 2018-08-13 18:56 UTC (permalink / raw)
  To: Bitcoin Dev

Hello all,

BIP174 currently specifies that non-witness UTXOs (the transactions
being spent by non-witness inputs) should be serialized in network
format.

I believe there are two issues with this.

1. Even in case the transaction whose output being spent itself has a
witness, this witness is immaterial to PSBT. It's only there to be
able to verify the txid commits to the output/amount being spent,
which can be done without witness.

2. "Network format" is a bit ambiguous. We can imagine a future
softfork that introduces a new type of witness. Network format could
be interpreted as including that new witness type, which is clearly
unnecessary (by the above argument), and would gratuitously break
compatibility with existing signers if implemented pedantically.

So my suggestion is to update the specification to state that
non-witness UTXOs must be serialized without witness. If it's too late
for that, it should instead be updated to explicitly specify with or
witnout witness, but it's safe to drop the witness.

Opinions?

Cheers,

-- 
Pieter


 permalink raw reply	[|nested]
2018-08-13 18:56 [bitcoin-dev] Witness serialization in PSBT non-witness UTXOs Pieter Wuille

  2018-08-13 20:39   ` Gregory Maxwell
  
From: Achow101 @ 2018-08-13 20:32 UTC (permalink / raw)
  To: Pieter Wuille, Bitcoin Protocol Discussion

Hi,

Since the BIP is already in proposed status, I think that we should specify the non-witness utxo to just be "witness or non-witness" serialization. This maintains compatibility with things that have already implemented but also maintains the forwards compatibility that is needed.

Andrew


‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
On August 13, 2018 11:56 AM, Pieter Wuille via bitcoin-dev <bitcoin-dev@lists•linuxfoundation.org> wrote:

> Hello all,
>
> BIP174 currently specifies that non-witness UTXOs (the transactions
> being spent by non-witness inputs) should be serialized in network
> format.
>
> I believe there are two issues with this.
>
> 1.  Even in case the transaction whose output being spent itself has a
>     witness, this witness is immaterial to PSBT. It's only there to be
>     able to verify the txid commits to the output/amount being spent,
>     which can be done without witness.
>
> 2.  "Network format" is a bit ambiguous. We can imagine a future
>     softfork that introduces a new type of witness. Network format could
>     be interpreted as including that new witness type, which is clearly
>     unnecessary (by the above argument), and would gratuitously break
>     compatibility with existing signers if implemented pedantically.
>
>     So my suggestion is to update the specification to state that
>     non-witness UTXOs must be serialized without witness. If it's too late
>     for that, it should instead be updated to explicitly specify with or
>     witnout witness, but it's safe to drop the witness.
>
>     Opinions?
>
>     Cheers,
>
>     --
>     Pieter
>
>
> bitcoin-dev mailing list
> bitcoin-dev@lists•linuxfoundation.org
> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev




 permalink raw reply	[|nested]
2018-08-13 20:32 ` Achow101

  
From: Gregory Maxwell @ 2018-08-13 20:39 UTC ( / )
  To: achow101-lists, Bitcoin Dev

An alternative is to require reading either or but also require
writing without the witness.  It's likely that two years from now,
nothing will write the witnesses, and the requirement to support
reading them could be dropped.
On Mon, Aug 13, 2018 at 8:32 PM Achow101 via bitcoin-dev
<bitcoin-dev@lists•linuxfoundation.org> wrote:
>
> Hi,
>
> Since the BIP is already in proposed status, I think that we should specify the non-witness utxo to just be "witness or non-witness" serialization. This maintains compatibility with things that have already implemented but also maintains the forwards compatibility that is needed.
>
> Andrew
>
>
> ‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
> On August 13, 2018 11:56 AM, Pieter Wuille via bitcoin-dev <bitcoin-dev@lists•linuxfoundation.org> wrote:
>
> > Hello all,
> >
> > BIP174 currently specifies that non-witness UTXOs (the transactions
> > being spent by non-witness inputs) should be serialized in network
> > format.
> >
> > I believe there are two issues with this.
> >
> > 1.  Even in case the transaction whose output being spent itself has a
> >     witness, this witness is immaterial to PSBT. It's only there to be
> >     able to verify the txid commits to the output/amount being spent,
> >     which can be done without witness.
> >
> > 2.  "Network format" is a bit ambiguous. We can imagine a future
> >     softfork that introduces a new type of witness. Network format could
> >     be interpreted as including that new witness type, which is clearly
> >     unnecessary (by the above argument), and would gratuitously break
> >     compatibility with existing signers if implemented pedantically.
> >
> >     So my suggestion is to update the specification to state that
> >     non-witness UTXOs must be serialized without witness. If it's too late
> >     for that, it should instead be updated to explicitly specify with or
> >     witnout witness, but it's safe to drop the witness.
> >
> >     Opinions?
> >
> >     Cheers,
> >
> >     --
> >     Pieter
> >
> >
> > bitcoin-dev mailing list
> > bitcoin-dev@lists•linuxfoundation.org
> > https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
>
>
> _______________________________________________
> bitcoin-dev mailing list
> bitcoin-dev@lists•linuxfoundation.org
> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev