Good morning Billy,

> It sounds like the primary benefit of op_fold is bandwidth savings. 
> Programming as compression. But as you mentioned, any common script could be 
> implemented as a Simplicity jet. In a world where Bitcoin implements jets, 
> op_fold would really only be useful for scripts that can't use jets, which 
> would basically be scripts that aren't very often used. But that inherently 
> limits the usefulness of the opcode. So in practice, I think it's likely that 
> jets cover the vast majority of use cases that op fold would otherwise have.

I suppose the point would be --- how often *can* we add new jets?
Are new jets consensus critical?
If a new jet is released but nobody else has upgraded, how bad is my security 
if I use the new jet?
Do I need to debate `LOT` *again* if I want to propose a new jet?

> A potential benefit of op fold is that people could implement smaller scripts 
> without buy-in from a relay level change in Bitcoin. However, even this could 
> be done with jets. For example, you could implement a consensus change to add 
> a transaction type that declares a new script fragment to keep a count of, 
> and if the script fragment is used enough within a timeframe (eg 10000 
> blocks) then it can thereafter be referenced by an id like a jet could be. 
> I'm sure someone's thought about this kind of thing before, but such a thing 
> would really relegate the compression abilities of op fold to just the most 
> uncommon of scripts. 
>
> > * We should provide more *general* operations. Users should then combine 
> > those operations to their specific needs.
> > * We should provide operations that *do more*. Users should identify their 
> > most important needs so we can implement them on the blockchain layer.
>
> That's a useful way to frame this kind of problem. I think the answer is, as 
> it often is, somewhere in between. Generalization future-proofs your system. 
> But at the same time, the boundary conditions of that generalized 
> functionality should still be very well understood before being added to 
> Bitcoin. The more general, the harder to understand the boundaries. So imo we 
> should be implementing the most general opcodes that we are able to reason 
> fully about and come to a consensus on. Following that last constraint might 
> lead to not choosing very general opcodes.

Yes, that latter part is what I am trying to target with `OP_FOLD`.
As I point out, given the restrictions I am proposing, `OP_FOLD` (and any 
bounded loop construct with similar restrictions) is implementable in current 
Bitcoin SCRIPT, so it is not an increase in attack surface.

Regards,
ZmnSCPxj
_______________________________________________
bitcoin-dev mailing list
bitcoin-dev@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev

Reply via email to