Good morning Billy, > > I think we would want to have a cleanstack rule at some point > > Ah is this a rule where a script shouldn't validate if more than just a true > is left on the stack? I can see how that would prevent the non-soft-fork > version of what I'm proposing.
Yes. There was also an even stronger cleanstack rule where the stack and alt stack are totally empty. This is because a SCRIPT really just returns "valid" or "invalid", and `OP_VERIFY` can be trivially appended to a SCRIPT that leaves a single stack item to convert to a SCRIPT that leaves no stack items and retains the same behavior. > > > How large is the critical mass needed? > > Well it seems we've agreed that were we going to do this, we would want to at > least do a soft-fork to make known jet scripts lighter weight (and unknown > jet scripts not-heavier) than their non-jet counterparts. So given a > situation where this soft fork happens, and someone wants to implement a new > jet, how much critical mass would be needed for the network to get some > benefit from the jet? Well, the absolute minimum for some benefit to happen > is that two nodes that support that jet are connected. In such a case, one > node can send that jet scripted transaction along without sending the data of > what the jet stands for. The jet itself is pretty small, like 2 or so bytes. > So that does impose a small additional cost on nodes that don't support a > jet. For 100,000 nodes, that means 200,000 bytes of transmission would need > to be saved for a jet to break even. So if the jet stands for a 22 byte > script, it would break even when 10% of the network supported it. If the jet > stood for a 102 byte script, it would break even when 2% of the network > supported it. So how much critical mass is necessary for it to be worth it > depends on what the script is. The math seems reasonable. > The question I have is: where would the constants table come from? Would it > reference the original positions of items on the witness stack? The constants table would be part of the SCRIPT puzzle, and thus not in the witness solution. I imagine the SCRIPT would be divided into two parts: (1) a table of constants and (2) the actual opcodes to execute. Regards, ZmnSCPxj _______________________________________________ bitcoin-dev mailing list bitcoin-dev@lists.linuxfoundation.org https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev