LearnBitcoin

Bitcoin Dev Archive 2020

Smaller Transactions with PubRef

4 messages, 1 to 2 Aug 2020. Started by Mike Brooks.

Mike Brooks (2), ZmnSCPxj (2)

Permalink Original thread on gnusha.org

Mike Brooks permalink original

The attached BIP describes a new opcode that unlocks the ability to have transactions that are about 37% smaller than a traditional single-source segwit transaction. (Savings vary based on the number of inputs.)

The pursuit of smaller transactions is vital for Inclusive Accountability as less data needs to be recorded on chain. Frugality is improved in two ways; more transactions can be confirmed in a block, and small value inputs otherwise inaccessible can now be referenced without losing unrecoverable value due to transaction overhead.

https://github.com/TheRook/bip-pubref/blob/master/bip-PubRef.mediawiki

The variant of this technology on the ethereum side is Ditto Transactions: https://ethereum-magicians.org/t/eip-ditto-transactions/4455

ZmnSCPxj in reply to Mike Brooks permalink original

Good morning Mike,

Hard NAK.

The responses to the original posting already pointed out important problems with this:

* Encourages address reuse, hurting fungibility and privacy.
* Prevents pruning, since access to previous blocks must always be available in order to validate.
* Optimized implementation requires creating yet another index to previous block data, increasing requirements on fullnodes.
* Requires SCRIPT to be re-evaluated on transactions arriving in  newblocks, to protect against reorgs of the chaintip, and in particular `OP_PUBREF` references to near the chaintip.

None of these issues have been addressed in your current proposal. The proposal looks at clients only, without considering what validators have to implement in order to validate new blocks with this opcode.

Regards, ZmnSCPxj

Mike Brooks in reply to ZmnSCPxj permalink original

Hey ZmnSCPxj,

Re-orgs should be solved in a different way.

Best Regards, Micahel

On Sat, Aug 1, 2020 at 5:36 PM ZmnSCPxj <ZmnSCPxj@protonmail•com> wrote:

Quoted text (23 lines)
> Good morning Mike,
>
> Hard NAK.
>
> The responses to the original posting already pointed out important
> problems with this:
>
> * Encourages address reuse, hurting fungibility and privacy.
> * Prevents pruning, since access to previous blocks must always be
> available in order to validate.
> * Optimized implementation requires creating yet another index to previous
> block data, increasing requirements on fullnodes.
> * Requires SCRIPT to be re-evaluated on transactions arriving in
> newblocks, to protect against reorgs of the chaintip, and in particular
> `OP_PUBREF` references to near the chaintip.
>
> None of these issues have been addressed in your current proposal.
> The proposal looks at clients only, without considering what validators
> have to implement in order to validate new blocks with this opcode.
>
> Regards,
> ZmnSCPxj
>
ZmnSCPxj in reply to Mike Brooks permalink original

Good morning Mike,

The issue with SCRIPT re-evaluation is that reorgs cause more processing to be done by nodes.

Floating-point Nakamoto Consensus does not help here, since a node can receive the lower-scored block first, and *then* a higher-scored block, and thus will ***still*** observe a reorg since the chain tip is replaced with a higher-scored block later.

This still increases the processing load on validating fullnodes, and prevents any kind of pruning from working for validating fullnodes.

A miner can also still mount a DoS on validating fullnodes, with `OP_PUBREF` and Floating-Point Nakamoto Consensus by re-mining the same block, and broadcasting a block if it has higher score than the previous chain tip. This locks the blockchain ***and*** increases the load on fullnodes, which have to re-validate uses of `OP_PUBREF` that might refer to the chain tip.

Regards, ZmnSCPxj

Quoted text (25 lines)
> Hey  ZmnSCPxj,
>
> Re-orgs should be solved in a different way.
>
> Best Regards,
> Micahel
>
> On Sat, Aug 1, 2020 at 5:36 PM ZmnSCPxj <ZmnSCPxj@protonmail•com> wrote:
>
> > Good morning Mike,
> >
> > Hard NAK.
> >
> > The responses to the original posting already pointed out important problems with this:
> >
> > * Encourages address reuse, hurting fungibility and privacy.
> > * Prevents pruning, since access to previous blocks must always be available in order to validate.
> > * Optimized implementation requires creating yet another index to previous block data, increasing requirements on fullnodes.
> > * Requires SCRIPT to be re-evaluated on transactions arriving in  newblocks, to protect against reorgs of the chaintip, and in particular `OP_PUBREF` references to near the chaintip.
> >
> > None of these issues have been addressed in your current proposal.
> > The proposal looks at clients only, without considering what validators have to implement in order to validate new blocks with this opcode.
> >
> > Regards,
> > ZmnSCPxj