22 int64_t creation_time =
GetTime();
26 m_wallet_descriptor = w_desc;
31 throw std::runtime_error(std::string(__func__) +
": writing descriptor failed");
42 const std::string command =
gArgs.
GetArg(
"-signer",
"");
43 if (command ==
"")
throw std::runtime_error(std::string(__func__) +
": restart bitcoind with -signer=<cmd>");
44 std::vector<ExternalSigner> signers;
46 if (signers.empty())
throw std::runtime_error(std::string(__func__) +
": No external signers found");
71 for (
const auto& input : psbt.
inputs) {
77 std::string strFailReason;
79 tfm::format(std::cerr,
"Failed to sign: %s\n", strFailReason);
const CChainParams & Params()
Return the currently selected parameters.
std::string GetArg(const std::string &strArg, const std::string &strDefault) const
Return string argument or default value.
Serialized script, used inside transaction inputs and outputs.
bool TopUp(unsigned int size=0) override
Fills internal address pool.
std::unique_ptr< SigningProvider > GetSolvingProvider(const CScript &script) const override
RecursiveMutex cs_desc_man
bool SignTransaction(CMutableTransaction &tx, const std::map< COutPoint, Coin > &coins, int sighash, std::map< int, bilingual_str > &input_errors) const override
Creates new signatures and adds them to the transaction.
TransactionError FillPSBT(PartiallySignedTransaction &psbt, const PrecomputedTransactionData &txdata, int sighash_type=1, bool sign=true, bool bip32derivs=false, int *n_signed=nullptr) const override
Adds script and derivation path information to a PSBT, and optionally signs it.
uint256 GetID() const override
Enables interaction with an external signing device or service, such as a hardware wallet.
UniValue DisplayAddress(const std::string &descriptor) const
Display address on the device.
static bool Enumerate(const std::string &command, std::vector< ExternalSigner > &signers, const std::string chain)
Obtain a list of signers.
bool DisplayAddress(const CScript scriptPubKey, const ExternalSigner &signer) const
bool SetupDescriptor(std::unique_ptr< Descriptor >desc)
Provide a descriptor at setup time Returns false if already setup or setup fails, true if setup is su...
TransactionError FillPSBT(PartiallySignedTransaction &psbt, const PrecomputedTransactionData &txdata, int sighash_type=1, bool sign=true, bool bip32derivs=false, int *n_signed=nullptr) const override
Adds script and derivation path information to a PSBT, and optionally signs it.
static ExternalSigner GetExternalSigner()
WalletStorage & m_storage
Access to the wallet database.
bool WriteDescriptor(const uint256 &desc_id, const WalletDescriptor &descriptor)
Descriptor with some wallet metadata.
virtual bool IsWalletFlagSet(uint64_t) const =0
virtual void UnsetBlankWalletFlag(WalletBatch &)=0
virtual WalletDatabase & GetDatabase() const =0
std::unique_ptr< Descriptor > InferDescriptor(const CScript &script, const SigningProvider &provider)
Find a descriptor for the specified script, using information from provider where possible.
bool PSBTInputSigned(const PSBTInput &input)
Checks whether a PSBTInput is already signed.
bool FinalizePSBT(PartiallySignedTransaction &psbtx)
Finalizes a PSBT if possible, combining partial signatures.
A version of CTransaction with the PSBT format.
std::vector< PSBTInput > inputs
int64_t GetTime()
DEPRECATED Use either GetTimeSeconds (not mockable) or GetTime<T> (mockable)
@ WALLET_FLAG_EXTERNAL_SIGNER
Indicates that the wallet needs an external signer.
@ WALLET_FLAG_DESCRIPTORS
Indicate that this wallet supports DescriptorScriptPubKeyMan.