ZmnSCPxj [ARCHIVE] on Nostr: š
Original date posted:2019-10-01 š Original message:Good morning aj, > On Mon, ...
š
Original date posted:2019-10-01
š Original message:Good morning aj,
> On Mon, Sep 30, 2019 at 11:28:43PM +0000, ZmnSCPxj via bitcoin-dev wrote:
>
> > Suppose rather than `SIGHASH_NOINPUT`, we created a new opcode, `OP_CHECKSIG_WITHOUT_INPUT`.
>
> I don't think there's any meaningful difference between making a new
> opcode and making a new tapscript public key type; the difference is
> just one of encoding:
>
> 3301<key>AC [CHECKSIG of public key type 0x01]
> 32<key>B3 [CHECKSIG_WITHOUT_INPUT (replacing NOP4) of key]
>
> > This new opcode ignores any `SIGHASH` flags, if present, on a signature,
>
> (How sighash flags are treated can be redefined by new public key types;
> if that's not obvious already)
Thank you for this thought,
I believe under tapscript v0 we can give `OP_1` as the public key to `OP_CHECKSIG` to mean to reuse the internal Taproot pubkey, would it be possible to have some similar mechanism here, to copy the internal Taproot pubkey but also to enable new `SIGHASH` flag for this particular script only?
This seems fine, as then a Decker-Russell-Osuntokun funding tx output between nodes A, B, and C would have:
* Taproot internal key: `P = MuSig(A, B, C)`
* Script 1: leaf version 0, `<MuSig(A,B,C) + pubkeytype 1> OP_CHECKSIG`
Then, update transactions could use `MuSig(A,B,C)` for signing along the "update" path, with unique "state" keys.
And cooperative closes would sign using `P + h(P | MAST(<MuSig(A,B,C) + pubkeytype 1> OPCHECKSIG)) * G`, not revealing the fact that this was in fact a Decker-Russell-Osuntokun output.
Regards,
ZmnSCPxj
Published at
2023-06-07 18:20:47Event JSON
{
"id": "cdad0c9dda5049b7ec7711bea7e612bab56ab3d98281c508fc2946cc570f0386",
"pubkey": "4505072744a9d3e490af9262bfe38e6ee5338a77177b565b6b37730b63a7b861",
"created_at": 1686162047,
"kind": 1,
"tags": [
[
"e",
"d4024562676a2b9f9ecb0fbb42db7e27569a53d33c57a608de3e3625f31c1f56",
"",
"root"
],
[
"e",
"b4f2e6c438c92ff4ddd050b549d97109780f4865d742c2bcf3864ecd71a000ec",
"",
"reply"
],
[
"p",
"f0feda6ad58ea9f486e469f87b3b9996494363a26982b864667c5d8acb0542ab"
]
],
"content": "š
Original date posted:2019-10-01\nš Original message:Good morning aj,\n\n\n\u003e On Mon, Sep 30, 2019 at 11:28:43PM +0000, ZmnSCPxj via bitcoin-dev wrote:\n\u003e\n\u003e \u003e Suppose rather than `SIGHASH_NOINPUT`, we created a new opcode, `OP_CHECKSIG_WITHOUT_INPUT`.\n\u003e\n\u003e I don't think there's any meaningful difference between making a new\n\u003e opcode and making a new tapscript public key type; the difference is\n\u003e just one of encoding:\n\u003e\n\u003e 3301\u003ckey\u003eAC [CHECKSIG of public key type 0x01]\n\u003e 32\u003ckey\u003eB3 [CHECKSIG_WITHOUT_INPUT (replacing NOP4) of key]\n\u003e\n\u003e \u003e This new opcode ignores any `SIGHASH` flags, if present, on a signature,\n\u003e\n\u003e (How sighash flags are treated can be redefined by new public key types;\n\u003e if that's not obvious already)\n\n\nThank you for this thought,\nI believe under tapscript v0 we can give `OP_1` as the public key to `OP_CHECKSIG` to mean to reuse the internal Taproot pubkey, would it be possible to have some similar mechanism here, to copy the internal Taproot pubkey but also to enable new `SIGHASH` flag for this particular script only?\n\nThis seems fine, as then a Decker-Russell-Osuntokun funding tx output between nodes A, B, and C would have:\n\n* Taproot internal key: `P = MuSig(A, B, C)`\n* Script 1: leaf version 0, `\u003cMuSig(A,B,C) + pubkeytype 1\u003e OP_CHECKSIG`\n\nThen, update transactions could use `MuSig(A,B,C)` for signing along the \"update\" path, with unique \"state\" keys.\nAnd cooperative closes would sign using `P + h(P | MAST(\u003cMuSig(A,B,C) + pubkeytype 1\u003e OPCHECKSIG)) * G`, not revealing the fact that this was in fact a Decker-Russell-Osuntokun output.\n\nRegards,\nZmnSCPxj",
"sig": "b2993cd4cace909b02d71833638898889933b3139e2cecb384e21997cbadff2699f63df64eb0b5319c746502242f3970749d59e85ea853f3f275a1b6251b12ab"
}