mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-03-05 14:06:27 -05:00
Merge bitcoin/bitcoin#23499: multiprocess: Add interfaces::Node::broadCastTransaction method
0e0f4fdd89
multiprocess: Add interfaces::Node::broadCastTransaction method (Russell Yanofsky) Pull request description: This fixes a null pointer crash in the bitcoin-gui PSBT dialog. The bitcoin-gui interfaces::Node object has a null NodeContext pointer, and can't broadcast transactions directly. It needs to broadcast transactions through the bitcoin-node process instead. --- This PR is part of the [process separation project](https://github.com/bitcoin/bitcoin/projects/10). ACKs for top commit: lsilva01: Code Review ACK0e0f4fd
Tree-SHA512: cd2c1fe8dc15e7cecf01a21d64319d6add1124995305a9ef9cb72f8492dc692c62d4f846182567d47a5048a533178a925419250941a47cb39932467c36bea3e1
This commit is contained in:
commit
cf63d635b1
3 changed files with 10 additions and 2 deletions
|
@ -30,6 +30,7 @@ class RPCTimerInterface;
|
||||||
class UniValue;
|
class UniValue;
|
||||||
class proxyType;
|
class proxyType;
|
||||||
enum class SynchronizationState;
|
enum class SynchronizationState;
|
||||||
|
enum class TransactionError;
|
||||||
struct CNodeStateStats;
|
struct CNodeStateStats;
|
||||||
struct NodeContext;
|
struct NodeContext;
|
||||||
struct bilingual_str;
|
struct bilingual_str;
|
||||||
|
@ -183,6 +184,9 @@ public:
|
||||||
//! Get unspent outputs associated with a transaction.
|
//! Get unspent outputs associated with a transaction.
|
||||||
virtual bool getUnspentOutput(const COutPoint& output, Coin& coin) = 0;
|
virtual bool getUnspentOutput(const COutPoint& output, Coin& coin) = 0;
|
||||||
|
|
||||||
|
//! Broadcast transaction.
|
||||||
|
virtual TransactionError broadcastTransaction(CTransactionRef tx, CAmount max_tx_fee, std::string& err_string) = 0;
|
||||||
|
|
||||||
//! Get wallet client.
|
//! Get wallet client.
|
||||||
virtual WalletClient& walletClient() = 0;
|
virtual WalletClient& walletClient() = 0;
|
||||||
|
|
||||||
|
|
|
@ -276,6 +276,10 @@ public:
|
||||||
LOCK(::cs_main);
|
LOCK(::cs_main);
|
||||||
return chainman().ActiveChainstate().CoinsTip().GetCoin(output, coin);
|
return chainman().ActiveChainstate().CoinsTip().GetCoin(output, coin);
|
||||||
}
|
}
|
||||||
|
TransactionError broadcastTransaction(CTransactionRef tx, CAmount max_tx_fee, std::string& err_string) override
|
||||||
|
{
|
||||||
|
return BroadcastTransaction(*m_context, std::move(tx), err_string, max_tx_fee, /*relay=*/ true, /*wait_callback=*/ false);
|
||||||
|
}
|
||||||
WalletClient& walletClient() override
|
WalletClient& walletClient() override
|
||||||
{
|
{
|
||||||
return *Assert(m_context->wallet_client);
|
return *Assert(m_context->wallet_client);
|
||||||
|
|
|
@ -110,8 +110,8 @@ void PSBTOperationsDialog::broadcastTransaction()
|
||||||
|
|
||||||
CTransactionRef tx = MakeTransactionRef(mtx);
|
CTransactionRef tx = MakeTransactionRef(mtx);
|
||||||
std::string err_string;
|
std::string err_string;
|
||||||
TransactionError error = BroadcastTransaction(
|
TransactionError error =
|
||||||
*m_client_model->node().context(), tx, err_string, DEFAULT_MAX_RAW_TX_FEE_RATE.GetFeePerK(), /* relay */ true, /* await_callback */ false);
|
m_client_model->node().broadcastTransaction(tx, DEFAULT_MAX_RAW_TX_FEE_RATE.GetFeePerK(), err_string);
|
||||||
|
|
||||||
if (error == TransactionError::OK) {
|
if (error == TransactionError::OK) {
|
||||||
showStatus(tr("Transaction broadcast successfully! Transaction ID: %1")
|
showStatus(tr("Transaction broadcast successfully! Transaction ID: %1")
|
||||||
|
|
Loading…
Add table
Reference in a new issue