|
|
@ -47,49 +47,35 @@ QList<TransactionRecord> TransactionRecord::decomposeTransaction(const CWallet * |
|
|
|
//
|
|
|
|
//
|
|
|
|
// Credit
|
|
|
|
// Credit
|
|
|
|
//
|
|
|
|
//
|
|
|
|
TransactionRecord sub(hash, nTime); |
|
|
|
BOOST_FOREACH(const CTxOut& txout, wtx.vout) |
|
|
|
|
|
|
|
|
|
|
|
sub.credit = nNet; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (wtx.IsCoinBase()) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
// Generated
|
|
|
|
|
|
|
|
sub.type = TransactionRecord::Generated; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (nCredit == 0) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
int64 nUnmatured = 0; |
|
|
|
|
|
|
|
BOOST_FOREACH(const CTxOut& txout, wtx.vout) |
|
|
|
|
|
|
|
nUnmatured += wallet->GetCredit(txout); |
|
|
|
|
|
|
|
sub.credit = nUnmatured; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
{ |
|
|
|
{ |
|
|
|
bool foundAddress = false; |
|
|
|
if(wallet->IsMine(txout)) |
|
|
|
// Received by Bitcoin Address
|
|
|
|
|
|
|
|
BOOST_FOREACH(const CTxOut& txout, wtx.vout) |
|
|
|
|
|
|
|
{ |
|
|
|
{ |
|
|
|
if(wallet->IsMine(txout)) |
|
|
|
TransactionRecord sub(hash, nTime); |
|
|
|
|
|
|
|
CBitcoinAddress address; |
|
|
|
|
|
|
|
sub.idx = parts.size(); // sequence number
|
|
|
|
|
|
|
|
sub.credit = txout.nValue; |
|
|
|
|
|
|
|
if (wtx.IsCoinBase()) |
|
|
|
{ |
|
|
|
{ |
|
|
|
CBitcoinAddress address; |
|
|
|
// Generated
|
|
|
|
if (ExtractAddress(txout.scriptPubKey, address) && wallet->HaveKey(address)) |
|
|
|
sub.type = TransactionRecord::Generated; |
|
|
|
{ |
|
|
|
|
|
|
|
sub.type = TransactionRecord::RecvWithAddress; |
|
|
|
|
|
|
|
sub.address = address.ToString(); |
|
|
|
|
|
|
|
foundAddress = true; |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
else if (ExtractAddress(txout.scriptPubKey, address) && wallet->HaveKey(address)) |
|
|
|
if(!foundAddress) |
|
|
|
{ |
|
|
|
{ |
|
|
|
// Received by Bitcoin Address
|
|
|
|
// Received by IP connection, or other non-address transaction like OP_EVAL
|
|
|
|
sub.type = TransactionRecord::RecvWithAddress; |
|
|
|
sub.type = TransactionRecord::RecvFromOther; |
|
|
|
sub.address = address.ToString(); |
|
|
|
sub.address = mapValue["from"]; |
|
|
|
} |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
// Received by IP connection (deprecated features), or a multisignature or other non-simple transaction
|
|
|
|
|
|
|
|
sub.type = TransactionRecord::RecvFromOther; |
|
|
|
|
|
|
|
sub.address = mapValue["from"]; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
parts.append(sub); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
parts.append(sub); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
else |
|
|
|
{ |
|
|
|
{ |
|
|
|