Bitcoin Core  26.99.0
P2P Digital Currency
Functions
descriptor.cpp File Reference
#include <script/descriptor.h>
#include <hash.h>
#include <key_io.h>
#include <pubkey.h>
#include <script/miniscript.h>
#include <script/script.h>
#include <script/signingprovider.h>
#include <script/solver.h>
#include <uint256.h>
#include <common/args.h>
#include <span.h>
#include <util/bip32.h>
#include <util/check.h>
#include <util/spanparsing.h>
#include <util/strencodings.h>
#include <util/vector.h>
#include <memory>
#include <numeric>
#include <optional>
#include <string>
#include <vector>
Include dependency graph for descriptor.cpp:

Go to the source code of this file.

Functions

bool CheckChecksum (Span< const char > &sp, bool require_checksum, std::string &error, std::string *out_checksum=nullptr)
 Check a descriptor checksum, and update desc to be the checksum-less part. More...
 
std::unique_ptr< DescriptorParse (const std::string &descriptor, FlatSigningProvider &out, std::string &error, bool require_checksum)
 Parse a descriptor string. More...
 
std::string GetDescriptorChecksum (const std::string &descriptor)
 Get the checksum for a descriptor. More...
 
std::unique_ptr< DescriptorInferDescriptor (const CScript &script, const SigningProvider &provider)
 Find a descriptor for the specified script, using information from provider where possible. More...
 
uint256 DescriptorID (const Descriptor &desc)
 Unique identifier that may not change over time, unless explicitly marked as not backwards compatible. More...
 

Function Documentation

◆ CheckChecksum()

bool CheckChecksum ( Span< const char > &  sp,
bool  require_checksum,
std::string &  error,
std::string *  out_checksum = nullptr 
)

Check a descriptor checksum, and update desc to be the checksum-less part.

Definition at line 1988 of file descriptor.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DescriptorID()

uint256 DescriptorID ( const Descriptor desc)

Unique identifier that may not change over time, unless explicitly marked as not backwards compatible.

This is not part of BIP 380, not guaranteed to be interoperable and should not be exposed to the user.

Definition at line 2047 of file descriptor.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetDescriptorChecksum()

std::string GetDescriptorChecksum ( const std::string &  descriptor)

Get the checksum for a descriptor.

  • If it already has one, and it is correct, return the checksum in the input.
  • If it already has one that is wrong, return "".
  • If it does not already have one, return the checksum that would need to be added.

Definition at line 2033 of file descriptor.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ InferDescriptor()

std::unique_ptr<Descriptor> InferDescriptor ( const CScript script,
const SigningProvider provider 
)

Find a descriptor for the specified script, using information from provider where possible.

A non-ranged descriptor which only generates the specified script will be returned in all circumstances.

For public keys with key origin information, this information will be preserved in the returned descriptor.

  • If all information for solving script is present in provider, a descriptor will be returned which is IsSolvable() and encapsulates said information.
  • Failing that, if script corresponds to a known address type, an "addr()" descriptor will be returned (which is not IsSolvable()).
  • Failing that, a "raw()" descriptor is returned.

Definition at line 2042 of file descriptor.cpp.

Here is the caller graph for this function:

◆ Parse()

std::unique_ptr<Descriptor> Parse ( const std::string &  descriptor,
FlatSigningProvider out,
std::string &  error,
bool  require_checksum = false 
)

Parse a descriptor string.

Included private keys are put in out.

If the descriptor has a checksum, it must be valid. If require_checksum is set, the checksum is mandatory - otherwise it is optional.

If a parse error occurs, or the checksum is missing/invalid, or anything else is wrong, nullptr is returned.

Definition at line 2023 of file descriptor.cpp.

Here is the call graph for this function: