mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-05-12 21:00:36 +02:00
1. -maxsigcachesize is a DEBUG_ONLY option 2. Almost 7 years has passed since its semantics change in 830e3f3d027ba5c8121eed0f6a9ce99961352572 from "number of entries" to "number of mebibytes" 3. A std::new_handler was added to the codebase after the original PR which introduced this limit, which will terminate immediately instead of causing trouble by being caught somewhere unexpected.
37 lines
1.4 KiB
C++
37 lines
1.4 KiB
C++
// Copyright (c) 2009-2010 Satoshi Nakamoto
|
|
// Copyright (c) 2009-2021 The Bitcoin Core developers
|
|
// Distributed under the MIT software license, see the accompanying
|
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
|
|
#ifndef BITCOIN_SCRIPT_SIGCACHE_H
|
|
#define BITCOIN_SCRIPT_SIGCACHE_H
|
|
|
|
#include <script/interpreter.h>
|
|
#include <span.h>
|
|
#include <util/hasher.h>
|
|
|
|
#include <vector>
|
|
|
|
// DoS prevention: limit cache size to 32MB (over 1000000 entries on 64-bit
|
|
// systems). Due to how we count cache size, actual memory usage is slightly
|
|
// more (~32.25 MB)
|
|
static const unsigned int DEFAULT_MAX_SIG_CACHE_SIZE = 32;
|
|
|
|
class CPubKey;
|
|
|
|
class CachingTransactionSignatureChecker : public TransactionSignatureChecker
|
|
{
|
|
private:
|
|
bool store;
|
|
|
|
public:
|
|
CachingTransactionSignatureChecker(const CTransaction* txToIn, unsigned int nInIn, const CAmount& amountIn, bool storeIn, PrecomputedTransactionData& txdataIn) : TransactionSignatureChecker(txToIn, nInIn, amountIn, txdataIn, MissingDataBehavior::ASSERT_FAIL), store(storeIn) {}
|
|
|
|
bool VerifyECDSASignature(const std::vector<unsigned char>& vchSig, const CPubKey& vchPubKey, const uint256& sighash) const override;
|
|
bool VerifySchnorrSignature(Span<const unsigned char> sig, const XOnlyPubKey& pubkey, const uint256& sighash) const override;
|
|
};
|
|
|
|
[[nodiscard]] bool InitSignatureCache();
|
|
|
|
#endif // BITCOIN_SCRIPT_SIGCACHE_H
|