diff options
| author | Wladimir J. van der Laan <[email protected]> | 2014-05-09 16:03:34 +0200 |
|---|---|---|
| committer | Wladimir J. van der Laan <[email protected]> | 2014-05-09 16:09:20 +0200 |
| commit | 54f102248b183618ed7bd198c995232c89dc3152 (patch) | |
| tree | b07e33bf0b144389db6c2291e21881d9a211b7d9 /src/script.h | |
| parent | Merge pull request #3965 (diff) | |
| parent | Check redeemScript size does not exceed 520 byte limit (diff) | |
| download | discoin-54f102248b183618ed7bd198c995232c89dc3152.tar.xz discoin-54f102248b183618ed7bd198c995232c89dc3152.zip | |
Merge pull request #3843
787ee0c Check redeemScript size does not exceed 520 byte limit (Peter Todd)
4d79098 Increase IsStandard() scriptSig length (Peter Todd)
f80cffa Do not trigger a DoS ban if SCRIPT_VERIFY_NULLDUMMY fails (Peter Todd)
6380180 Add rejection of non-null CHECKMULTISIG dummy values (Peter Todd)
29c1749 Let tx (in)valid tests use any SCRIPT_VERIFY flag (Peter Todd)
68f7d1d Create (MANDATORY|STANDARD)_SCRIPT_VERIFY_FLAGS constants (Peter Todd)
Diffstat (limited to 'src/script.h')
| -rw-r--r-- | src/script.h | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/script.h b/src/script.h index 1742ce81f..af9c794a3 100644 --- a/src/script.h +++ b/src/script.h @@ -190,8 +190,28 @@ enum SCRIPT_VERIFY_STRICTENC = (1U << 1), // enforce strict conformance to DER and SEC2 for signatures and pubkeys SCRIPT_VERIFY_EVEN_S = (1U << 2), // enforce even S values in signatures (depends on STRICTENC) SCRIPT_VERIFY_NOCACHE = (1U << 3), // do not store results in signature cache (but do query it) + SCRIPT_VERIFY_NULLDUMMY = (1U << 4), // verify dummy stack item consumed by CHECKMULTISIG is of zero-length }; +// Mandatory script verification flags that all new blocks must comply with for +// them to be valid. (but old blocks may not comply with) Currently just P2SH, +// but in the future other flags may be added, such as a soft-fork to enforce +// strict DER encoding. +// +// Failing one of these tests may trigger a DoS ban - see CheckInputs() for +// details. +static const unsigned int MANDATORY_SCRIPT_VERIFY_FLAGS = SCRIPT_VERIFY_P2SH; + +// Standard script verification flags that standard transactions will comply +// with. However scripts violating these flags may still be present in valid +// blocks and we must accept those blocks. +static const unsigned int STANDARD_SCRIPT_VERIFY_FLAGS = MANDATORY_SCRIPT_VERIFY_FLAGS | + SCRIPT_VERIFY_STRICTENC | + SCRIPT_VERIFY_NULLDUMMY; + +// For convenience, standard but not mandatory verify flags. +static const unsigned int STANDARD_NOT_MANDATORY_VERIFY_FLAGS = STANDARD_SCRIPT_VERIFY_FLAGS & ~MANDATORY_SCRIPT_VERIFY_FLAGS; + enum txnouttype { TX_NONSTANDARD, |