mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-11-12 23:18:14 +01:00
Add CMutableTransaction and make CTransaction immutable.
In addition, introduce a cached hash inside CTransaction, to prevent recalculating it over and over again.
This commit is contained in:
@@ -349,7 +349,7 @@ Value createrawtransaction(const Array& params, bool fHelp)
|
||||
Array inputs = params[0].get_array();
|
||||
Object sendTo = params[1].get_obj();
|
||||
|
||||
CTransaction rawTx;
|
||||
CMutableTransaction rawTx;
|
||||
|
||||
BOOST_FOREACH(const Value& input, inputs)
|
||||
{
|
||||
@@ -554,11 +554,11 @@ Value signrawtransaction(const Array& params, bool fHelp)
|
||||
|
||||
vector<unsigned char> txData(ParseHexV(params[0], "argument 1"));
|
||||
CDataStream ssData(txData, SER_NETWORK, PROTOCOL_VERSION);
|
||||
vector<CTransaction> txVariants;
|
||||
vector<CMutableTransaction> txVariants;
|
||||
while (!ssData.empty())
|
||||
{
|
||||
try {
|
||||
CTransaction tx;
|
||||
CMutableTransaction tx;
|
||||
ssData >> tx;
|
||||
txVariants.push_back(tx);
|
||||
}
|
||||
@@ -572,7 +572,7 @@ Value signrawtransaction(const Array& params, bool fHelp)
|
||||
|
||||
// mergedTx will end up with all the signatures; it
|
||||
// starts as a clone of the rawtx:
|
||||
CTransaction mergedTx(txVariants[0]);
|
||||
CMutableTransaction mergedTx(txVariants[0]);
|
||||
bool fComplete = true;
|
||||
|
||||
// Fetch previous transactions (inputs):
|
||||
@@ -713,7 +713,7 @@ Value signrawtransaction(const Array& params, bool fHelp)
|
||||
SignSignature(keystore, prevPubKey, mergedTx, i, nHashType);
|
||||
|
||||
// ... and merge in other signatures:
|
||||
BOOST_FOREACH(const CTransaction& txv, txVariants)
|
||||
BOOST_FOREACH(const CMutableTransaction& txv, txVariants)
|
||||
{
|
||||
txin.scriptSig = CombineSignatures(prevPubKey, mergedTx, i, txin.scriptSig, txv.vin[i].scriptSig);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user