mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-06 10:18:44 -05:00
bd0dbe8763
After refactoring general-purpose PSBT and transaction code out of RPC code, for use in the GUI, it's no longer appropriate to throw exceptions. Instead we now return bools for success, and take an output parameter for an error object. We still use JSONRPCError() for the error objects, since only RPC callers actually care about the error codes.
42 lines
1.3 KiB
C++
42 lines
1.3 KiB
C++
// Copyright (c) 2017-2018 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_NODE_TRANSACTION_H
|
|
#define BITCOIN_NODE_TRANSACTION_H
|
|
|
|
#include <primitives/transaction.h>
|
|
#include <uint256.h>
|
|
|
|
enum class TransactionError {
|
|
OK = 0,
|
|
UNKNOWN_ERROR,
|
|
|
|
MISSING_INPUTS,
|
|
ALREADY_IN_CHAIN,
|
|
P2P_DISABLED,
|
|
MEMPOOL_REJECTED,
|
|
MEMPOOL_ERROR,
|
|
INVALID_PSBT,
|
|
SIGHASH_MISMATCH,
|
|
|
|
ERROR_COUNT
|
|
};
|
|
|
|
#define TRANSACTION_ERR_LAST TransactionError::ERROR_COUNT
|
|
|
|
const char* TransactionErrorString(const TransactionError error);
|
|
|
|
/**
|
|
* Broadcast a transaction
|
|
*
|
|
* @param[in] tx the transaction to broadcast
|
|
* @param[out] &txid the txid of the transaction, if successfully broadcast
|
|
* @param[out] &error reference to UniValue to fill with error info on failure
|
|
* @param[out] &err_string reference to std::string to fill with error string if available
|
|
* @param[in] allowhighfees whether to allow fees exceeding maxTxFee
|
|
* return true on success, false on error (and fills in `error`)
|
|
*/
|
|
bool BroadcastTransaction(CTransactionRef tx, uint256& txid, TransactionError& error, std::string& err_string, bool allowhighfees = false);
|
|
|
|
#endif // BITCOIN_NODE_TRANSACTION_H
|