const unsigned char *vchZero = NULL;
+CScriptID::CScriptID(const CScript& in) : uint160(Hash160(in.begin(), in.end()))
+{
+}
+
void CKey::SetCompressedPubKey(bool fCompressed)
{
EC_KEY_set_conv_form(pkey, fCompressed ? POINT_CONVERSION_COMPRESSED : POINT_CONVERSION_UNCOMPRESSED);
{
public:
CScriptID() : uint160(0) { }
+ CScriptID(const CScript& in);
CScriptID(const uint160 &in) : uint160(in) { }
};
{
LOCK(cs_KeyStore);
- mapScripts[redeemScript.GetID()] = redeemScript;
+ mapScripts[CScriptID(redeemScript)] = redeemScript;
}
return true;
}
QMessageBox::warning(this, tr("Error"), tr("Redeem script exceeds size limit: %1 > %2\nReduce the number of addresses involved in the address creation.").arg(script.size()).arg(MAX_SCRIPT_ELEMENT_SIZE), QMessageBox::Ok);
return;
}
- CScriptID scriptID = script.GetID();
+ CScriptID scriptID(script);
CBitcoinAddress address(scriptID);
ui->multisigAddress->setText(address.ToString().c_str());
std::string redeemScript = ui->redeemScript->text().toStdString();
std::vector<unsigned char> scriptData(ParseHex(redeemScript));
CScript script(scriptData.begin(), scriptData.end());
- CScriptID scriptID = script.GetID();
+ CScriptID scriptID(script);
LOCK(wallet->cs_wallet);
if(!wallet->HaveCScript(scriptID))
std::vector<unsigned char> scriptData(ParseHex(redeemScript));
CScript script(scriptData.begin(), scriptData.end());
- CScriptID scriptID = script.GetID();
+ CScriptID scriptID(script);
LOCK(wallet->cs_wallet);
if(!wallet->HaveCScript(scriptID))
}
ScriptPubKeyToJSON(script, r, false);
- r.push_back(Pair("p2sh", CBitcoinAddress(script.GetID()).ToString()));
+ r.push_back(Pair("p2sh", CBitcoinAddress(CScriptID(script)).ToString()));
return r;
}
throw runtime_error(
strprintf("redeemScript exceeds size limit: %" PRIszu " > %d", inner.size(), MAX_SCRIPT_ELEMENT_SIZE));
- auto innerID = inner.GetID();
+ auto innerID = CScriptID(inner);
CBitcoinAddress address(innerID);
Object result;
strprintf("redeemScript exceeds size limit: %" PRIszu " > %d", inner.size(), MAX_SCRIPT_ELEMENT_SIZE));
pwalletMain->AddCScript(inner);
- CBitcoinAddress address(inner.GetID());
+ CBitcoinAddress address{ CScriptID(inner) }; // "most vexing parse"
pwalletMain->SetAddressBookName(address, strAccount);
return address.ToString();
auto innerData = ParseHexV(params[0], "redeemScript");
CScript inner(innerData.begin(), innerData.end());
pwalletMain->AddCScript(inner);
- CBitcoinAddress address(inner.GetID());
+ CBitcoinAddress address{ CScriptID(inner) }; // "most vexing parse"
pwalletMain->SetAddressBookName(address, strAccount);
return address.ToString();
{
printf("%s\n", ToString().c_str());
}
-
-CScriptID CScript::GetID() const
-{
- return CScriptID(Hash160(*this));
-}
void PrintHex() const;
std::string ToString(bool fShort=false) const;
void print() const;
- CScriptID GetID() const;
};
bool IsCanonicalPubKey(const std::vector<unsigned char> &vchPubKey, unsigned int flags);
* these. Do not add them to the wallet and warn. */
if (redeemScript.size() > MAX_SCRIPT_ELEMENT_SIZE)
{
- auto strAddr = CBitcoinAddress(redeemScript.GetID()).ToString();
+ auto strAddr = CBitcoinAddress(CScriptID(redeemScript)).ToString();
printf("LoadCScript() : Warning: This wallet contains a redeemScript of size %" PRIszu " which exceeds maximum size %i thus can never be redeemed. Do not use address %s.\n",
redeemScript.size(), MAX_SCRIPT_ELEMENT_SIZE, strAddr.c_str());
return true;