Merge branch 'master' of https://github.com/bitcoin/bitcoin
Conflicts: src/script.cpp
This commit is contained in:
commit
b5b1d1a66b
6 changed files with 28 additions and 21 deletions
|
@ -528,7 +528,7 @@ bool CAddrDB::LoadAddresses()
|
||||||
char psz[1000];
|
char psz[1000];
|
||||||
while (fgets(psz, sizeof(psz), filein))
|
while (fgets(psz, sizeof(psz), filein))
|
||||||
{
|
{
|
||||||
CAddress addr(psz, NODE_NETWORK);
|
CAddress addr(psz, false, NODE_NETWORK);
|
||||||
addr.nTime = 0; // so it won't relay unless successfully connected
|
addr.nTime = 0; // so it won't relay unless successfully connected
|
||||||
if (addr.IsValid())
|
if (addr.IsValid())
|
||||||
AddAddress(addr);
|
AddAddress(addr);
|
||||||
|
|
|
@ -211,7 +211,7 @@ string TransactionDesc::toHTML(CWallet *wallet, CWalletTx &wtx)
|
||||||
{
|
{
|
||||||
// Offline transaction
|
// Offline transaction
|
||||||
CBitcoinAddress address;
|
CBitcoinAddress address;
|
||||||
if (ExtractAddress(txout.scriptPubKey, wallet, address))
|
if (ExtractAddress(txout.scriptPubKey, 0, address))
|
||||||
{
|
{
|
||||||
strHTML += _("<b>To:</b> ");
|
strHTML += _("<b>To:</b> ");
|
||||||
if (wallet->mapAddressBook.count(address) && !wallet->mapAddressBook[address].empty())
|
if (wallet->mapAddressBook.count(address) && !wallet->mapAddressBook[address].empty())
|
||||||
|
|
|
@ -138,7 +138,7 @@ QList<TransactionRecord> TransactionRecord::decomposeTransaction(const CWallet *
|
||||||
// Sent to Bitcoin Address
|
// Sent to Bitcoin Address
|
||||||
sub.type = TransactionRecord::SendToAddress;
|
sub.type = TransactionRecord::SendToAddress;
|
||||||
CBitcoinAddress address;
|
CBitcoinAddress address;
|
||||||
if (ExtractAddress(txout.scriptPubKey, wallet, address))
|
if (ExtractAddress(txout.scriptPubKey, 0, address))
|
||||||
{
|
{
|
||||||
sub.address = address.ToString();
|
sub.address = address.ToString();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1122,31 +1122,38 @@ bool IsMine(const CKeyStore &keystore, const CScript& scriptPubKey)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// requires either keystore==0, or a lock on keystore->cs_KeyStore
|
||||||
bool ExtractAddress(const CScript& scriptPubKey, const CKeyStore* keystore, CBitcoinAddress& addressRet)
|
bool static ExtractAddressInner(const CScript& scriptPubKey, const CKeyStore* keystore, CBitcoinAddress& addressRet)
|
||||||
{
|
{
|
||||||
vector<pair<opcodetype, valtype> > vSolution;
|
vector<pair<opcodetype, valtype> > vSolution;
|
||||||
if (!Solver(scriptPubKey, vSolution))
|
if (!Solver(scriptPubKey, vSolution))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
CRITICAL_BLOCK(keystore->cs_KeyStore)
|
BOOST_FOREACH(PAIRTYPE(opcodetype, valtype)& item, vSolution)
|
||||||
{
|
{
|
||||||
BOOST_FOREACH(PAIRTYPE(opcodetype, valtype)& item, vSolution)
|
if (item.first == OP_PUBKEY)
|
||||||
{
|
addressRet.SetPubKey(item.second);
|
||||||
uint160 hash160;
|
else if (item.first == OP_PUBKEYHASH)
|
||||||
if (item.first == OP_PUBKEY)
|
addressRet.SetHash160((uint160)item.second);
|
||||||
addressRet.SetPubKey(item.second);
|
if (keystore == NULL || keystore->HaveKey(addressRet))
|
||||||
else if (item.first == OP_PUBKEYHASH)
|
return true;
|
||||||
addressRet.SetHash160((uint160)item.second);
|
|
||||||
//if (keystore == NULL || keystore->HaveKey(addressRet))
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool ExtractAddress(const CScript& scriptPubKey, const CKeyStore* keystore, CBitcoinAddress& addressRet)
|
||||||
|
{
|
||||||
|
if (keystore)
|
||||||
|
CRITICAL_BLOCK(keystore->cs_KeyStore)
|
||||||
|
return ExtractAddressInner(scriptPubKey, keystore, addressRet);
|
||||||
|
else
|
||||||
|
return ExtractAddressInner(scriptPubKey, NULL, addressRet);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool VerifyScript(const CScript& scriptSig, const CScript& scriptPubKey, const CTransaction& txTo, unsigned int nIn, int nHashType)
|
bool VerifyScript(const CScript& scriptSig, const CScript& scriptPubKey, const CTransaction& txTo, unsigned int nIn, int nHashType)
|
||||||
{
|
{
|
||||||
vector<vector<unsigned char> > stack;
|
vector<vector<unsigned char> > stack;
|
||||||
|
|
|
@ -776,6 +776,7 @@ bool CMainFrame::InsertTransaction(const CWalletTx& wtx, bool fNew, int nIndex)
|
||||||
if (pwalletMain->IsMine(txout))
|
if (pwalletMain->IsMine(txout))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
CBitcoinAddress address;
|
||||||
string strAddress;
|
string strAddress;
|
||||||
if (!mapValue["to"].empty())
|
if (!mapValue["to"].empty())
|
||||||
{
|
{
|
||||||
|
@ -785,15 +786,14 @@ bool CMainFrame::InsertTransaction(const CWalletTx& wtx, bool fNew, int nIndex)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Sent to Bitcoin Address
|
// Sent to Bitcoin Address
|
||||||
CBitcoinAddress address;
|
if (ExtractAddress(txout.scriptPubKey, NULL, address))
|
||||||
if (ExtractAddress(txout.scriptPubKey, pwalletMain, address))
|
|
||||||
strAddress = address.ToString();
|
strAddress = address.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
string strDescription = _("To: ");
|
string strDescription = _("To: ");
|
||||||
CRITICAL_BLOCK(pwalletMain->cs_mapAddressBook)
|
CRITICAL_BLOCK(pwalletMain->cs_mapAddressBook)
|
||||||
if (pwalletMain->mapAddressBook.count(strAddress) && !pwalletMain->mapAddressBook[strAddress].empty())
|
if (pwalletMain->mapAddressBook.count(address) && !pwalletMain->mapAddressBook[address].empty())
|
||||||
strDescription += pwalletMain->mapAddressBook[strAddress] + " ";
|
strDescription += pwalletMain->mapAddressBook[address] + " ";
|
||||||
strDescription += strAddress;
|
strDescription += strAddress;
|
||||||
if (!mapValue["message"].empty())
|
if (!mapValue["message"].empty())
|
||||||
{
|
{
|
||||||
|
|
|
@ -437,7 +437,7 @@ void CWalletTx::GetAmounts(int64& nGeneratedImmature, int64& nGeneratedMature, l
|
||||||
{
|
{
|
||||||
CBitcoinAddress address;
|
CBitcoinAddress address;
|
||||||
vector<unsigned char> vchPubKey;
|
vector<unsigned char> vchPubKey;
|
||||||
if (!ExtractAddress(txout.scriptPubKey, pwallet, address))
|
if (!ExtractAddress(txout.scriptPubKey, NULL, address))
|
||||||
{
|
{
|
||||||
printf("CWalletTx::GetAmounts: Unknown transaction type found, txid %s\n",
|
printf("CWalletTx::GetAmounts: Unknown transaction type found, txid %s\n",
|
||||||
this->GetHash().ToString().c_str());
|
this->GetHash().ToString().c_str());
|
||||||
|
|
Loading…
Reference in a new issue