Mark Friedenbach [ARCHIVE] on Nostr: š
Original date posted:2017-09-18 š Original message:As some of you may know, ...
š
Original date posted:2017-09-18
š Original message:As some of you may know, the MAST proposal I sent to the mailing list
on September 6th was discussed that the in-person CoreDev meetup in
San Francisco. In this email I hope to summarize the outcome of that
discussion. As chatham house rules were in effect, I will refrain from
attributing names to this summary..
* An introductory overview of the BIPs was presented, for the purpose
of familiarizing the audience with what they are attempting to
accomplish and how they do so.
* There was a discussion of a single vs multi-element MBV opcode. It
was put forward that there should perhaps be different opcodes for
the sake of script analysis, since a multi-element MBV will
necessarily consume a variable number of inputs. However it was
countered that if the script encodes the number of elements as an
integer push to the top of the stack immediately before the opcode,
then static analyzability is maintained in such instances. I took
the action item to investigate what an ideal serialization format
would be for a multi-element proof, which is the only thing holding
back a multi-element MBV proposal.
* It was pointed out that the non-clean-stack tail-call semantics is
not compatible with segwit's consensus-enforcement of the clean
stack rule. Some alternatives were suggested, such as changing
deployment mechanisms. After the main discussion session it was
observed that tail-call semantics could still be maintained if the
alt stack is used for transferring arguments to the policy script. I
will be updating the BIP and example implementation accordingly.
* The observation was made that single-layer tail-call semantics can
be thought of as really being P2SH with user-specified hashing. If
the P2SH script template had been constructed slightly differently
such as to not consume the script, it would even have been fully
compatible with tail-call semantics.
* It was mentioned that using script versioning to deploy a MAST
template allows for saving 32 bytes of witness per input, as the
root hash is contained directly in the output being spent. The
downside however is losing the permissionless innovation that comes
with a programmable hashing mechanism.
* The discussion generally drifted into a wider discussion about
script version upgrades and related issues, such as whether script
versions should exist in the witness as well, and the difference in
meaning between the two. This is an important subject, but only of
relevance in far as using a script version upgrade to deploy MAST
would add significant delay from having to sort through these issues
first.
This feedback led to some minor tweaks to the proposal, which I will
be making, as well as the major feature request of a multi-element
MERKLE-BLOCK-VERIFY opcode which requires a little bit more effort to
accomplish. I will report back to this list again when that work is
done.
Sincerely,
Mark Friedenbach
Published at
2023-06-07 18:05:37Event JSON
{
"id": "67d56edbc325a6594fd6e749cd3fe0f1e84b84656836a25ee778037273f6cd8a",
"pubkey": "1c61d995949cbfaf14f767784e166bde865c7b8783d7aa3bf0a1d014b70c0069",
"created_at": 1686161137,
"kind": 1,
"tags": [
[
"e",
"0d97933d6393537f8afa1f55574e0ec2278e08b49a828e8a6bf1f6fff59c2613",
"",
"root"
],
[
"e",
"6b99249743592da3959cf85097c8be80f93c3e8e18a3e487603bb2c2dc6e488f",
"",
"reply"
],
[
"p",
"42c901fccda418477337afb5eb8e517266652306539ab9ced7196d4f3477bd14"
]
],
"content": "š
Original date posted:2017-09-18\nš Original message:As some of you may know, the MAST proposal I sent to the mailing list\non September 6th was discussed that the in-person CoreDev meetup in\nSan Francisco. In this email I hope to summarize the outcome of that\ndiscussion. As chatham house rules were in effect, I will refrain from\nattributing names to this summary..\n\n* An introductory overview of the BIPs was presented, for the purpose\n of familiarizing the audience with what they are attempting to\n accomplish and how they do so.\n\n* There was a discussion of a single vs multi-element MBV opcode. It\n was put forward that there should perhaps be different opcodes for\n the sake of script analysis, since a multi-element MBV will\n necessarily consume a variable number of inputs. However it was\n countered that if the script encodes the number of elements as an\n integer push to the top of the stack immediately before the opcode,\n then static analyzability is maintained in such instances. I took\n the action item to investigate what an ideal serialization format\n would be for a multi-element proof, which is the only thing holding\n back a multi-element MBV proposal.\n\n* It was pointed out that the non-clean-stack tail-call semantics is\n not compatible with segwit's consensus-enforcement of the clean\n stack rule. Some alternatives were suggested, such as changing\n deployment mechanisms. After the main discussion session it was\n observed that tail-call semantics could still be maintained if the\n alt stack is used for transferring arguments to the policy script. I\n will be updating the BIP and example implementation accordingly.\n\n* The observation was made that single-layer tail-call semantics can\n be thought of as really being P2SH with user-specified hashing. If\n the P2SH script template had been constructed slightly differently\n such as to not consume the script, it would even have been fully\n compatible with tail-call semantics.\n\n* It was mentioned that using script versioning to deploy a MAST\n template allows for saving 32 bytes of witness per input, as the\n root hash is contained directly in the output being spent. The\n downside however is losing the permissionless innovation that comes\n with a programmable hashing mechanism.\n\n* The discussion generally drifted into a wider discussion about\n script version upgrades and related issues, such as whether script\n versions should exist in the witness as well, and the difference in\n meaning between the two. This is an important subject, but only of\n relevance in far as using a script version upgrade to deploy MAST\n would add significant delay from having to sort through these issues\n first.\n\nThis feedback led to some minor tweaks to the proposal, which I will\nbe making, as well as the major feature request of a multi-element\nMERKLE-BLOCK-VERIFY opcode which requires a little bit more effort to\naccomplish. I will report back to this list again when that work is\ndone.\n\nSincerely,\nMark Friedenbach",
"sig": "a36f05b9114c7c69d0e72df624fade01ce458ea6855cfe65458b2cc57ba316346b412ac277fd4dc9a7e925da8ac4de8afd5c1ef6390c66b50cd9d1e03b95fd1f"
}