#include "TransactionBundle.h" #include using namespace std; bool gTransactionSorter(const newcoin::Transaction& lhs, const newcoin::Transaction& rhs) { return lhs.seconds() < rhs.seconds(); } TransactionBundle::TransactionBundle() { } bool TransactionBundle::isEqual(newcoin::Transaction& t1,newcoin::Transaction& t2) { return(t1.transid()==t2.transid()); } bool TransactionBundle::hasTransaction(newcoin::Transaction& t) { BOOST_FOREACH(newcoin::Transaction& trans,mTransactions) { if( t.transid()==trans.transid()) return(true); } BOOST_FOREACH(newcoin::Transaction& trans,mDisacrdedTransactions) { if( t.transid()==trans.transid()) return(true); } return(false); } void TransactionBundle::addTransactionsToPB(newcoin::FullLedger* ledger) { BOOST_FOREACH(newcoin::Transaction& trans,mTransactions) { newcoin::Transaction* newTrans=ledger->add_transactions(); newTrans->operator=(trans); } } void TransactionBundle::addDiscardedTransaction(newcoin::Transaction& trans) { mDisacrdedTransactions.push_back(trans); mDisacrdedTransactions.sort(gTransactionSorter); } void TransactionBundle::addTransaction(const newcoin::Transaction& trans) { mTransactions.push_back(trans); mTransactions.sort(gTransactionSorter); } uint64 TransactionBundle::getTotalTransAmount(newcoin::Transaction& trans) { uint64 total=0; int numInputs=trans.inputs_size(); for(int n=0; n::iterator iter=mTransactions.begin(); iter != mTransactions.end(); ) { newcoin::Transaction& trans=(*iter); if(trans.seconds()>endTime) break; if(trans.seconds()>=startTime) { if(trans.dest()==address) { startAmount += getTotalTransAmount(trans); }else { // check all the inputs to see if they are from this address int numInputs=trans.inputs_size(); for(int n=0; n& moneyMap) { BOOST_FOREACH(newcoin::Transaction& trans, mTransactions) { uint64 total=0; int numInputs=trans.inputs_size(); for(int n=0; n