Hi Peter,
I'm talking about this check in VerifyScript as of commit 43e71f74 in bitcoin core.
```
if ((flags & SCRIPT_VERIFY_SIGPUSHONLY) != 0 && !scriptSig.IsPushOnly()) {
return set_error(serror, SCRIPT_ERR_SIG_PUSHONLY);
}
```
In my understanding, we never set SCRIPT_VERIFY_SIGPUSHONLY, neither in MANDATORY_SCRIPT_VERIFY_FLAGS,
nor in STANDARD_SCRIPT_VERIFY_FLAGS, and this sounds okay as it's a script check pertaining to BIP62
rule 2, and BIP62 was never activated. As far as I can tell, that's more a stale check just right
there in the interpreter code paths.
We still return SCRIPT_ERR_SIG_PUSHONLY for P2SH spends, verifying the scriptSig is push-only.
All the unit tests (i.e `script_tests.cpp`) are manually setting the SCRIPT_VERIFY_SIGPUSHONLY flag
to verify the logic correctness, even it appears as never being set for block validation.
The original PR is there: https://github.com/bitcoin/bitcoin/pull/5065
Feel free to point me out if I'm missing something obvious here.
Best,
Antoine
OTS hash: 42e2e614fea49ec876539e28b323718df3ef734b3a4b247fcc649f0704ea1b61
On Fri, Feb 07, 2025 at 05:02:46AM -0800, Antoine Riard wrote:
> This might be a stylistic note, though I could point in bitcoin core code
> today implemented
> check in the script interpreter right in the crux of consensus code paths
> that is just stale
> due to a never-activated BIP (-- yes I'm starring at you SIGPUSHONLY).
What specifically do you mean by this? You mean the
SCRIPT_ERR_SIG_PUSHONLY error condition?
--
https://petertodd.org 'peter'[:-1]@petertodd.org