19 TxInputStream(
int nVersionIn,
const unsigned char *txTo,
size_t txToLen) :
20 m_version(nVersionIn),
27 if (dst.
size() > m_remaining) {
28 throw std::ios_base::failure(std::string(__func__) +
": end of data");
31 if (dst.
data() ==
nullptr) {
32 throw std::ios_base::failure(std::string(__func__) +
": bad destination buffer");
35 if (m_data ==
nullptr) {
36 throw std::ios_base::failure(std::string(__func__) +
": bad source buffer");
39 memcpy(dst.
data(), m_data, dst.
size());
40 m_remaining -= dst.
size();
51 int GetVersion()
const {
return m_version; }
54 const unsigned char* m_data;
65 struct ECCryptoClosure
70 ECCryptoClosure instance_of_eccryptoclosure;
80 const unsigned char *txTo ,
unsigned int txToLen,
89 if (nIn >= tx.
vin.size())
98 return VerifyScript(tx.
vin[nIn].scriptSig,
CScript(scriptPubKey, scriptPubKey + scriptPubKeyLen), &tx.
vin[nIn].scriptWitness,
flags,
TransactionSignatureChecker(&tx, nIn, amount, txdata,
MissingDataBehavior::FAIL),
nullptr);
99 }
catch (
const std::exception&) {
105 const unsigned char *txTo ,
unsigned int txToLen,
114 const unsigned char *txTo ,
unsigned int txToLen,
unsigned int bitcoinconsensus_version()
bool VerifyScript(const CScript &scriptSig, const CScript &scriptPubKey, const CScriptWitness *witness, unsigned int flags, const BaseSignatureChecker &checker, ScriptError *serror)
void Unserialize(Stream &, char)=delete
constexpr deserialize_type deserialize
constexpr std::size_t size() const noexcept
static int verify_script(const unsigned char *scriptPubKey, unsigned int scriptPubKeyLen, CAmount amount, const unsigned char *txTo, unsigned int txToLen, unsigned int nIn, unsigned int flags, bitcoinconsensus_error *err)
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)
Returns 1 if the input nIn of the serialized transaction pointed to by txTo correctly spends the scri...
QDataStream & operator>>(QDataStream &in, BitcoinUnit &unit)
const std::vector< CTxIn > vin
size_t GetSerializeSize(const T &t, int nVersion=0)
#define BITCOINCONSENSUS_API_VER
int64_t CAmount
Amount in satoshis (Can be negative)
Users of this module must hold an ECCVerifyHandle.
enum bitcoinconsensus_error_t bitcoinconsensus_error
Just act as if the signature was invalid.
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)
constexpr C * data() const noexcept
Serialized script, used inside transaction inputs and outputs.
static const int PROTOCOL_VERSION
network protocol versioning
A Span is an object that can refer to a contiguous sequence of objects.
The basic transaction that is broadcasted on the network and contained in blocks. ...
static bool verify_flags(unsigned int flags)
Check that all specified flags are part of the libconsensus interface.