mirror of
https://github.com/kvazar-network/kevacoin.git
synced 2025-01-09 22:57:56 +00:00
5ca8ef299a
Makes it an error to use flags that have not been defined on the libconsensus API. There has been some confusion as to what pass to libconsensus, and (combined with mention in the release notes) this should clear it up. Using undocumented flags is a risk because their meaning, and what combinations are allowed, changes from release to release. E.g. it is no longer possible to pass (CLEANSTACK | P2SH) without running into an assertion after the segwit changes.
84 lines
3.6 KiB
C
84 lines
3.6 KiB
C
// Copyright (c) 2009-2010 Satoshi Nakamoto
|
|
// Copyright (c) 2009-2016 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_BITCOINCONSENSUS_H
|
|
#define BITCOIN_BITCOINCONSENSUS_H
|
|
|
|
#include <stdint.h>
|
|
|
|
#if defined(BUILD_BITCOIN_INTERNAL) && defined(HAVE_CONFIG_H)
|
|
#include "config/bitcoin-config.h"
|
|
#if defined(_WIN32)
|
|
#if defined(DLL_EXPORT)
|
|
#if defined(HAVE_FUNC_ATTRIBUTE_DLLEXPORT)
|
|
#define EXPORT_SYMBOL __declspec(dllexport)
|
|
#else
|
|
#define EXPORT_SYMBOL
|
|
#endif
|
|
#endif
|
|
#elif defined(HAVE_FUNC_ATTRIBUTE_VISIBILITY)
|
|
#define EXPORT_SYMBOL __attribute__ ((visibility ("default")))
|
|
#endif
|
|
#elif defined(MSC_VER) && !defined(STATIC_LIBBITCOINCONSENSUS)
|
|
#define EXPORT_SYMBOL __declspec(dllimport)
|
|
#endif
|
|
|
|
#ifndef EXPORT_SYMBOL
|
|
#define EXPORT_SYMBOL
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define BITCOINCONSENSUS_API_VER 1
|
|
|
|
typedef enum bitcoinconsensus_error_t
|
|
{
|
|
bitcoinconsensus_ERR_OK = 0,
|
|
bitcoinconsensus_ERR_TX_INDEX,
|
|
bitcoinconsensus_ERR_TX_SIZE_MISMATCH,
|
|
bitcoinconsensus_ERR_TX_DESERIALIZE,
|
|
bitcoinconsensus_ERR_AMOUNT_REQUIRED,
|
|
bitcoinconsensus_ERR_INVALID_FLAGS,
|
|
} bitcoinconsensus_error;
|
|
|
|
/** Script verification flags */
|
|
enum
|
|
{
|
|
bitcoinconsensus_SCRIPT_FLAGS_VERIFY_NONE = 0,
|
|
bitcoinconsensus_SCRIPT_FLAGS_VERIFY_P2SH = (1U << 0), // evaluate P2SH (BIP16) subscripts
|
|
bitcoinconsensus_SCRIPT_FLAGS_VERIFY_DERSIG = (1U << 2), // enforce strict DER (BIP66) compliance
|
|
bitcoinconsensus_SCRIPT_FLAGS_VERIFY_NULLDUMMY = (1U << 4), // enforce NULLDUMMY (BIP147)
|
|
bitcoinconsensus_SCRIPT_FLAGS_VERIFY_CHECKLOCKTIMEVERIFY = (1U << 9), // enable CHECKLOCKTIMEVERIFY (BIP65)
|
|
bitcoinconsensus_SCRIPT_FLAGS_VERIFY_CHECKSEQUENCEVERIFY = (1U << 10), // enable CHECKSEQUENCEVERIFY (BIP112)
|
|
bitcoinconsensus_SCRIPT_FLAGS_VERIFY_WITNESS = (1U << 11), // enable WITNESS (BIP141)
|
|
bitcoinconsensus_SCRIPT_FLAGS_VERIFY_ALL = bitcoinconsensus_SCRIPT_FLAGS_VERIFY_P2SH | bitcoinconsensus_SCRIPT_FLAGS_VERIFY_DERSIG |
|
|
bitcoinconsensus_SCRIPT_FLAGS_VERIFY_NULLDUMMY | bitcoinconsensus_SCRIPT_FLAGS_VERIFY_CHECKLOCKTIMEVERIFY |
|
|
bitcoinconsensus_SCRIPT_FLAGS_VERIFY_CHECKSEQUENCEVERIFY | bitcoinconsensus_SCRIPT_FLAGS_VERIFY_WITNESS
|
|
};
|
|
|
|
/// Returns 1 if the input nIn of the serialized transaction pointed to by
|
|
/// txTo correctly spends the scriptPubKey pointed to by scriptPubKey under
|
|
/// the additional constraints specified by flags.
|
|
/// If not NULL, err will contain an error/success code for the operation
|
|
EXPORT_SYMBOL int bitcoinconsensus_verify_script(const unsigned char *scriptPubKey, unsigned int scriptPubKeyLen,
|
|
const unsigned char *txTo , unsigned int txToLen,
|
|
unsigned int nIn, unsigned int flags, bitcoinconsensus_error* err);
|
|
|
|
EXPORT_SYMBOL int bitcoinconsensus_verify_script_with_amount(const unsigned char *scriptPubKey, unsigned int scriptPubKeyLen, int64_t amount,
|
|
const unsigned char *txTo , unsigned int txToLen,
|
|
unsigned int nIn, unsigned int flags, bitcoinconsensus_error* err);
|
|
|
|
EXPORT_SYMBOL unsigned int bitcoinconsensus_version();
|
|
|
|
#ifdef __cplusplus
|
|
} // extern "C"
|
|
#endif
|
|
|
|
#undef EXPORT_SYMBOL
|
|
|
|
#endif // BITCOIN_BITCOINCONSENSUS_H
|