mirror of
https://github.com/dashpay/dash.git
synced 2024-12-26 04:22:55 +01:00
Merge pull request #4755
c1e433b
Rename scriptutils.o to wallet_ismine.o (jtimon)8b59a3d
Move CAffectedKeysVisitor to wallet.cpp (remove ExtractAffectedKeys) (jtimon)0d2fa14
Move scriptutils.o to wallet (jtimon)
This commit is contained in:
commit
fd1caa0961
@ -103,7 +103,7 @@ BITCOIN_CORE_H = \
|
|||||||
script/script.h \
|
script/script.h \
|
||||||
script/sign.h \
|
script/sign.h \
|
||||||
script/standard.h \
|
script/standard.h \
|
||||||
scriptutils.h \
|
wallet_ismine.h \
|
||||||
serialize.h \
|
serialize.h \
|
||||||
sync.h \
|
sync.h \
|
||||||
threadsafety.h \
|
threadsafety.h \
|
||||||
@ -173,6 +173,7 @@ libbitcoin_wallet_a_SOURCES = \
|
|||||||
crypter.cpp \
|
crypter.cpp \
|
||||||
rpcdump.cpp \
|
rpcdump.cpp \
|
||||||
rpcwallet.cpp \
|
rpcwallet.cpp \
|
||||||
|
wallet_ismine.cpp \
|
||||||
wallet.cpp \
|
wallet.cpp \
|
||||||
walletdb.cpp \
|
walletdb.cpp \
|
||||||
$(BITCOIN_CORE_H)
|
$(BITCOIN_CORE_H)
|
||||||
@ -216,7 +217,6 @@ libbitcoin_common_a_SOURCES = \
|
|||||||
script/script.cpp \
|
script/script.cpp \
|
||||||
script/sign.cpp \
|
script/sign.cpp \
|
||||||
script/standard.cpp \
|
script/standard.cpp \
|
||||||
scriptutils.cpp \
|
|
||||||
$(BITCOIN_CORE_H)
|
$(BITCOIN_CORE_H)
|
||||||
|
|
||||||
# util: shared between all executables.
|
# util: shared between all executables.
|
||||||
|
@ -8,9 +8,12 @@
|
|||||||
#include "script/script.h"
|
#include "script/script.h"
|
||||||
#include "script/interpreter.h"
|
#include "script/interpreter.h"
|
||||||
#include "script/sign.h"
|
#include "script/sign.h"
|
||||||
#include "scriptutils.h"
|
|
||||||
#include "uint256.h"
|
#include "uint256.h"
|
||||||
|
|
||||||
|
#ifdef ENABLE_WALLET
|
||||||
|
#include "wallet_ismine.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <boost/assign/std/vector.hpp>
|
#include <boost/assign/std/vector.hpp>
|
||||||
#include <boost/foreach.hpp>
|
#include <boost/foreach.hpp>
|
||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
@ -195,8 +198,10 @@ BOOST_AUTO_TEST_CASE(multisig_Solver1)
|
|||||||
CTxDestination addr;
|
CTxDestination addr;
|
||||||
BOOST_CHECK(ExtractDestination(s, addr));
|
BOOST_CHECK(ExtractDestination(s, addr));
|
||||||
BOOST_CHECK(addr == keyaddr[0]);
|
BOOST_CHECK(addr == keyaddr[0]);
|
||||||
|
#ifdef ENABLE_WALLET
|
||||||
BOOST_CHECK(IsMine(keystore, s));
|
BOOST_CHECK(IsMine(keystore, s));
|
||||||
BOOST_CHECK(!IsMine(emptykeystore, s));
|
BOOST_CHECK(!IsMine(emptykeystore, s));
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
vector<valtype> solutions;
|
vector<valtype> solutions;
|
||||||
@ -208,8 +213,10 @@ BOOST_AUTO_TEST_CASE(multisig_Solver1)
|
|||||||
CTxDestination addr;
|
CTxDestination addr;
|
||||||
BOOST_CHECK(ExtractDestination(s, addr));
|
BOOST_CHECK(ExtractDestination(s, addr));
|
||||||
BOOST_CHECK(addr == keyaddr[0]);
|
BOOST_CHECK(addr == keyaddr[0]);
|
||||||
|
#ifdef ENABLE_WALLET
|
||||||
BOOST_CHECK(IsMine(keystore, s));
|
BOOST_CHECK(IsMine(keystore, s));
|
||||||
BOOST_CHECK(!IsMine(emptykeystore, s));
|
BOOST_CHECK(!IsMine(emptykeystore, s));
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
vector<valtype> solutions;
|
vector<valtype> solutions;
|
||||||
@ -220,9 +227,11 @@ BOOST_AUTO_TEST_CASE(multisig_Solver1)
|
|||||||
BOOST_CHECK_EQUAL(solutions.size(), 4U);
|
BOOST_CHECK_EQUAL(solutions.size(), 4U);
|
||||||
CTxDestination addr;
|
CTxDestination addr;
|
||||||
BOOST_CHECK(!ExtractDestination(s, addr));
|
BOOST_CHECK(!ExtractDestination(s, addr));
|
||||||
|
#ifdef ENABLE_WALLET
|
||||||
BOOST_CHECK(IsMine(keystore, s));
|
BOOST_CHECK(IsMine(keystore, s));
|
||||||
BOOST_CHECK(!IsMine(emptykeystore, s));
|
BOOST_CHECK(!IsMine(emptykeystore, s));
|
||||||
BOOST_CHECK(!IsMine(partialkeystore, s));
|
BOOST_CHECK(!IsMine(partialkeystore, s));
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
vector<valtype> solutions;
|
vector<valtype> solutions;
|
||||||
@ -237,9 +246,11 @@ BOOST_AUTO_TEST_CASE(multisig_Solver1)
|
|||||||
BOOST_CHECK(addrs[0] == keyaddr[0]);
|
BOOST_CHECK(addrs[0] == keyaddr[0]);
|
||||||
BOOST_CHECK(addrs[1] == keyaddr[1]);
|
BOOST_CHECK(addrs[1] == keyaddr[1]);
|
||||||
BOOST_CHECK(nRequired == 1);
|
BOOST_CHECK(nRequired == 1);
|
||||||
|
#ifdef ENABLE_WALLET
|
||||||
BOOST_CHECK(IsMine(keystore, s));
|
BOOST_CHECK(IsMine(keystore, s));
|
||||||
BOOST_CHECK(!IsMine(emptykeystore, s));
|
BOOST_CHECK(!IsMine(emptykeystore, s));
|
||||||
BOOST_CHECK(!IsMine(partialkeystore, s));
|
BOOST_CHECK(!IsMine(partialkeystore, s));
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
vector<valtype> solutions;
|
vector<valtype> solutions;
|
||||||
|
@ -7,7 +7,10 @@
|
|||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "script/script.h"
|
#include "script/script.h"
|
||||||
#include "script/sign.h"
|
#include "script/sign.h"
|
||||||
#include "scriptutils.h"
|
|
||||||
|
#ifdef ENABLE_WALLET
|
||||||
|
#include "wallet_ismine.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
@ -95,7 +98,9 @@ BOOST_AUTO_TEST_CASE(sign)
|
|||||||
txTo[i].vin[0].prevout.n = i;
|
txTo[i].vin[0].prevout.n = i;
|
||||||
txTo[i].vin[0].prevout.hash = txFrom.GetHash();
|
txTo[i].vin[0].prevout.hash = txFrom.GetHash();
|
||||||
txTo[i].vout[0].nValue = 1;
|
txTo[i].vout[0].nValue = 1;
|
||||||
|
#ifdef ENABLE_WALLET
|
||||||
BOOST_CHECK_MESSAGE(IsMine(keystore, txFrom.vout[i].scriptPubKey), strprintf("IsMine %d", i));
|
BOOST_CHECK_MESSAGE(IsMine(keystore, txFrom.vout[i].scriptPubKey), strprintf("IsMine %d", i));
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
for (int i = 0; i < 8; i++)
|
for (int i = 0; i < 8; i++)
|
||||||
{
|
{
|
||||||
@ -189,7 +194,9 @@ BOOST_AUTO_TEST_CASE(set)
|
|||||||
txTo[i].vin[0].prevout.hash = txFrom.GetHash();
|
txTo[i].vin[0].prevout.hash = txFrom.GetHash();
|
||||||
txTo[i].vout[0].nValue = 1*CENT;
|
txTo[i].vout[0].nValue = 1*CENT;
|
||||||
txTo[i].vout[0].scriptPubKey = inner[i];
|
txTo[i].vout[0].scriptPubKey = inner[i];
|
||||||
|
#ifdef ENABLE_WALLET
|
||||||
BOOST_CHECK_MESSAGE(IsMine(keystore, txFrom.vout[i].scriptPubKey), strprintf("IsMine %d", i));
|
BOOST_CHECK_MESSAGE(IsMine(keystore, txFrom.vout[i].scriptPubKey), strprintf("IsMine %d", i));
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
for (int i = 0; i < 4; i++)
|
for (int i = 0; i < 4; i++)
|
||||||
{
|
{
|
||||||
|
@ -2086,6 +2086,39 @@ void CWallet::ListLockedCoins(std::vector<COutPoint>& vOutpts)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class CAffectedKeysVisitor : public boost::static_visitor<void> {
|
||||||
|
private:
|
||||||
|
const CKeyStore &keystore;
|
||||||
|
std::vector<CKeyID> &vKeys;
|
||||||
|
|
||||||
|
public:
|
||||||
|
CAffectedKeysVisitor(const CKeyStore &keystoreIn, std::vector<CKeyID> &vKeysIn) : keystore(keystoreIn), vKeys(vKeysIn) {}
|
||||||
|
|
||||||
|
void Process(const CScript &script) {
|
||||||
|
txnouttype type;
|
||||||
|
std::vector<CTxDestination> vDest;
|
||||||
|
int nRequired;
|
||||||
|
if (ExtractDestinations(script, type, vDest, nRequired)) {
|
||||||
|
BOOST_FOREACH(const CTxDestination &dest, vDest)
|
||||||
|
boost::apply_visitor(*this, dest);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void operator()(const CKeyID &keyId) {
|
||||||
|
if (keystore.HaveKey(keyId))
|
||||||
|
vKeys.push_back(keyId);
|
||||||
|
}
|
||||||
|
|
||||||
|
void operator()(const CScriptID &scriptId) {
|
||||||
|
CScript script;
|
||||||
|
if (keystore.GetCScript(scriptId, script))
|
||||||
|
Process(script);
|
||||||
|
}
|
||||||
|
|
||||||
|
void operator()(const CNoDestination &none) {}
|
||||||
|
};
|
||||||
|
|
||||||
void CWallet::GetKeyBirthTimes(std::map<CKeyID, int64_t> &mapKeyBirth) const {
|
void CWallet::GetKeyBirthTimes(std::map<CKeyID, int64_t> &mapKeyBirth) const {
|
||||||
AssertLockHeld(cs_wallet); // mapKeyMetadata
|
AssertLockHeld(cs_wallet); // mapKeyMetadata
|
||||||
mapKeyBirth.clear();
|
mapKeyBirth.clear();
|
||||||
@ -2121,7 +2154,7 @@ void CWallet::GetKeyBirthTimes(std::map<CKeyID, int64_t> &mapKeyBirth) const {
|
|||||||
int nHeight = blit->second->nHeight;
|
int nHeight = blit->second->nHeight;
|
||||||
BOOST_FOREACH(const CTxOut &txout, wtx.vout) {
|
BOOST_FOREACH(const CTxOut &txout, wtx.vout) {
|
||||||
// iterate over all their outputs
|
// iterate over all their outputs
|
||||||
::ExtractAffectedKeys(*this, txout.scriptPubKey, vAffected);
|
CAffectedKeysVisitor(*this, vAffected).Process(txout.scriptPubKey);
|
||||||
BOOST_FOREACH(const CKeyID &keyid, vAffected) {
|
BOOST_FOREACH(const CKeyID &keyid, vAffected) {
|
||||||
// ... and all their affected keys
|
// ... and all their affected keys
|
||||||
std::map<CKeyID, CBlockIndex*>::iterator rit = mapKeyFirstBlock.find(keyid);
|
std::map<CKeyID, CBlockIndex*>::iterator rit = mapKeyFirstBlock.find(keyid);
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
#include "key.h"
|
#include "key.h"
|
||||||
#include "keystore.h"
|
#include "keystore.h"
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "scriptutils.h"
|
#include "wallet_ismine.h"
|
||||||
#include "ui_interface.h"
|
#include "ui_interface.h"
|
||||||
#include "walletdb.h"
|
#include "walletdb.h"
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
// Distributed under the MIT/X11 software license, see the accompanying
|
// Distributed under the MIT/X11 software license, see the accompanying
|
||||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
#include "scriptutils.h"
|
#include "wallet_ismine.h"
|
||||||
|
|
||||||
#include "key.h"
|
#include "key.h"
|
||||||
#include "keystore.h"
|
#include "keystore.h"
|
||||||
@ -89,39 +89,3 @@ isminetype IsMine(const CKeyStore &keystore, const CScript& scriptPubKey)
|
|||||||
return ISMINE_WATCH_ONLY;
|
return ISMINE_WATCH_ONLY;
|
||||||
return ISMINE_NO;
|
return ISMINE_NO;
|
||||||
}
|
}
|
||||||
|
|
||||||
class CAffectedKeysVisitor : public boost::static_visitor<void> {
|
|
||||||
private:
|
|
||||||
const CKeyStore &keystore;
|
|
||||||
std::vector<CKeyID> &vKeys;
|
|
||||||
|
|
||||||
public:
|
|
||||||
CAffectedKeysVisitor(const CKeyStore &keystoreIn, std::vector<CKeyID> &vKeysIn) : keystore(keystoreIn), vKeys(vKeysIn) {}
|
|
||||||
|
|
||||||
void Process(const CScript &script) {
|
|
||||||
txnouttype type;
|
|
||||||
std::vector<CTxDestination> vDest;
|
|
||||||
int nRequired;
|
|
||||||
if (ExtractDestinations(script, type, vDest, nRequired)) {
|
|
||||||
BOOST_FOREACH(const CTxDestination &dest, vDest)
|
|
||||||
boost::apply_visitor(*this, dest);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void operator()(const CKeyID &keyId) {
|
|
||||||
if (keystore.HaveKey(keyId))
|
|
||||||
vKeys.push_back(keyId);
|
|
||||||
}
|
|
||||||
|
|
||||||
void operator()(const CScriptID &scriptId) {
|
|
||||||
CScript script;
|
|
||||||
if (keystore.GetCScript(scriptId, script))
|
|
||||||
Process(script);
|
|
||||||
}
|
|
||||||
|
|
||||||
void operator()(const CNoDestination &none) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
void ExtractAffectedKeys(const CKeyStore &keystore, const CScript& scriptPubKey, std::vector<CKeyID> &vKeys) {
|
|
||||||
CAffectedKeysVisitor(keystore, vKeys).Process(scriptPubKey);
|
|
||||||
}
|
|
@ -3,8 +3,8 @@
|
|||||||
// Distributed under the MIT/X11 software license, see the accompanying
|
// Distributed under the MIT/X11 software license, see the accompanying
|
||||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
#ifndef H_BITCOIN_SCRIPTUTILS
|
#ifndef H_BITCOIN_WALLET_ISMINE
|
||||||
#define H_BITCOIN_SCRIPTUTILS
|
#define H_BITCOIN_WALLET_ISMINE
|
||||||
|
|
||||||
#include "key.h"
|
#include "key.h"
|
||||||
#include "script/script.h"
|
#include "script/script.h"
|
||||||
@ -24,6 +24,5 @@ typedef uint8_t isminefilter;
|
|||||||
|
|
||||||
isminetype IsMine(const CKeyStore& keystore, const CScript& scriptPubKey);
|
isminetype IsMine(const CKeyStore& keystore, const CScript& scriptPubKey);
|
||||||
isminetype IsMine(const CKeyStore& keystore, const CTxDestination& dest);
|
isminetype IsMine(const CKeyStore& keystore, const CTxDestination& dest);
|
||||||
void ExtractAffectedKeys(const CKeyStore &keystore, const CScript& scriptPubKey, std::vector<CKeyID> &vKeys);
|
|
||||||
|
|
||||||
#endif // H_BITCOIN_SCRIPT
|
#endif // H_BITCOIN_SCRIPT
|
Loading…
Reference in New Issue
Block a user