mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-10 20:03:34 -03:00
7a172c76d2
CTxDestination is really our internal representation of an address and doesn't really have anything to do with standard script types, so move them to their own file.
54 lines
1.6 KiB
C++
54 lines
1.6 KiB
C++
// Copyright (c) 2009-2010 Satoshi Nakamoto
|
|
// Copyright (c) 2009-2022 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_OUTPUTTYPE_H
|
|
#define BITCOIN_OUTPUTTYPE_H
|
|
|
|
#include <addresstype.h>
|
|
#include <script/signingprovider.h>
|
|
|
|
#include <array>
|
|
#include <optional>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
enum class OutputType {
|
|
LEGACY,
|
|
P2SH_SEGWIT,
|
|
BECH32,
|
|
BECH32M,
|
|
UNKNOWN,
|
|
};
|
|
|
|
static constexpr auto OUTPUT_TYPES = std::array{
|
|
OutputType::LEGACY,
|
|
OutputType::P2SH_SEGWIT,
|
|
OutputType::BECH32,
|
|
OutputType::BECH32M,
|
|
};
|
|
|
|
std::optional<OutputType> ParseOutputType(const std::string& str);
|
|
const std::string& FormatOutputType(OutputType type);
|
|
|
|
/**
|
|
* Get a destination of the requested type (if possible) to the specified key.
|
|
* The caller must make sure LearnRelatedScripts has been called beforehand.
|
|
*/
|
|
CTxDestination GetDestinationForKey(const CPubKey& key, OutputType);
|
|
|
|
/** Get all destinations (potentially) supported by the wallet for the given key. */
|
|
std::vector<CTxDestination> GetAllDestinationsForKey(const CPubKey& key);
|
|
|
|
/**
|
|
* Get a destination of the requested type (if possible) to the specified script.
|
|
* This function will automatically add the script (and any other
|
|
* necessary scripts) to the keystore.
|
|
*/
|
|
CTxDestination AddAndGetDestinationForScript(FillableSigningProvider& keystore, const CScript& script, OutputType);
|
|
|
|
/** Get the OutputType for a CTxDestination */
|
|
std::optional<OutputType> OutputTypeFromDestination(const CTxDestination& dest);
|
|
|
|
#endif // BITCOIN_OUTPUTTYPE_H
|