Bitcoin Core
21.99.0
P2P Digital Currency
src
wallet
test
scriptpubkeyman_tests.cpp
Go to the documentation of this file.
1
// Copyright (c) 2020 The Bitcoin Core developers
2
// Distributed under the MIT software license, see the accompanying
3
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
4
5
#include <
key.h
>
6
#include <
script/standard.h
>
7
#include <test/util/setup_common.h>
8
#include <
wallet/scriptpubkeyman.h
>
9
#include <
wallet/wallet.h
>
10
11
#include <boost/test/unit_test.hpp>
12
13
BOOST_FIXTURE_TEST_SUITE
(scriptpubkeyman_tests, BasicTestingSetup)
14
15
// Test LegacyScriptPubKeyMan::CanProvide behavior, making sure it returns true
16
// for recognized scripts even when keys may not be available for signing.
17
BOOST_AUTO_TEST_CASE
(CanProvide)
18
{
19
// Set up wallet and keyman variables.
20
CWallet
wallet
(
m_node
.
chain
.get(),
""
,
CreateDummyWalletDatabase
());
21
LegacyScriptPubKeyMan
& keyman = *
wallet
.GetOrCreateLegacyScriptPubKeyMan();
22
23
// Make a 1 of 2 multisig script
24
std::vector<CKey> keys(2);
25
std::vector<CPubKey> pubkeys;
26
for
(
CKey
& key : keys) {
27
key.MakeNewKey(
true
);
28
pubkeys.emplace_back(key.GetPubKey());
29
}
30
CScript
multisig_script =
GetScriptForMultisig
(1, pubkeys);
31
CScript
p2sh_script =
GetScriptForDestination
(
ScriptHash
(multisig_script));
32
SignatureData
data;
33
34
// Verify the p2sh(multisig) script is not recognized until the multisig
35
// script is added to the keystore to make it solvable
36
BOOST_CHECK
(!keyman.
CanProvide
(p2sh_script, data));
37
keyman.
AddCScript
(multisig_script);
38
BOOST_CHECK
(keyman.
CanProvide
(p2sh_script, data));
39
}
40
41
BOOST_AUTO_TEST_SUITE_END
()
CreateDummyWalletDatabase
std::unique_ptr< WalletDatabase > CreateDummyWalletDatabase()
Return object for accessing dummy database with no read/write capabilities.
Definition:
walletdb.cpp:1088
wallet.h
BOOST_AUTO_TEST_CASE
BOOST_AUTO_TEST_CASE(CanProvide)
Definition:
scriptpubkeyman_tests.cpp:17
GetScriptForDestination
CScript GetScriptForDestination(const CTxDestination &dest)
Generate a Bitcoin scriptPubKey for the given CTxDestination.
Definition:
standard.cpp:307
wallet
Definition:
interfaces.cpp:47
LegacyScriptPubKeyMan
Definition:
scriptpubkeyman.h:257
BOOST_FIXTURE_TEST_SUITE
#define BOOST_FIXTURE_TEST_SUITE(a, b)
Definition:
object.cpp:14
NodeContext::chain
std::unique_ptr< interfaces::Chain > chain
Definition:
context.h:47
scriptpubkeyman.h
SignatureData
Definition:
sign.h:60
GetScriptForMultisig
CScript GetScriptForMultisig(int nRequired, const std::vector< CPubKey > &keys)
Generate a multisig script.
Definition:
standard.cpp:317
standard.h
m_node
NodeContext & m_node
Definition:
interfaces.cpp:712
LegacyScriptPubKeyMan::AddCScript
bool AddCScript(const CScript &redeemScript) override
Definition:
scriptpubkeyman.cpp:1468
CScript
Serialized script, used inside transaction inputs and outputs.
Definition:
script.h:404
key.h
LegacyScriptPubKeyMan::CanProvide
bool CanProvide(const CScript &script, SignatureData &sigdata) override
Whether this ScriptPubKeyMan can provide a SigningProvider (via GetSolvingProvider) that,...
Definition:
scriptpubkeyman.cpp:559
CKey
An encapsulated private key.
Definition:
key.h:27
CWallet
A CWallet maintains a set of transactions and balances, and provides the ability to create new transa...
Definition:
wallet.h:638
ScriptHash
Definition:
standard.h:150
BOOST_CHECK
#define BOOST_CHECK(expr)
Definition:
object.cpp:17
BOOST_AUTO_TEST_SUITE_END
#define BOOST_AUTO_TEST_SUITE_END()
Definition:
object.cpp:16
Generated on Wed Apr 21 2021 20:03:57 for Bitcoin Core by
1.8.17