@ -75,7 +75,7 @@ struct CompareValueOnly
@@ -75,7 +75,7 @@ struct CompareValueOnly
std : : string COutput : : ToString ( ) const
{
return strprintf ( " COutput(%s, %d, %d) [ % s ] " , tx->GetHash().ToString(), i, nDepth, FormatMoney(tx->vout[i].nValue)) ;
return strprintf ( " COutput(%s, %d, %d) [ % s ] " , tx->GetHash().ToString(), i, nDepth, FormatMoney(tx->tx-> vout[i].nValue)) ;
}
const CWalletTx * CWallet : : GetWalletTx ( const uint256 & hash ) const
@ -400,7 +400,7 @@ set<uint256> CWallet::GetConflicts(const uint256& txid) const
@@ -400,7 +400,7 @@ set<uint256> CWallet::GetConflicts(const uint256& txid) const
std : : pair < TxSpends : : const_iterator , TxSpends : : const_iterator > range ;
BOOST_FOREACH ( const CTxIn & txin , wtx . vin )
BOOST_FOREACH ( const CTxIn & txin , wtx . tx - > vin )
{
if ( mapTxSpends . count ( txin . prevout ) < = 1 )
continue ; // No conflict if zero or one spends
@ -552,7 +552,7 @@ void CWallet::AddToSpends(const uint256& wtxid)
@@ -552,7 +552,7 @@ void CWallet::AddToSpends(const uint256& wtxid)
if ( thisTx . IsCoinBase ( ) ) // Coinbases don't spend anything!
return ;
BOOST_FOREACH ( const CTxIn & txin , thisTx . vin )
BOOST_FOREACH ( const CTxIn & txin , thisTx . tx - > vin )
AddToSpends ( txin . prevout , wtxid ) ;
}
@ -795,7 +795,7 @@ bool CWallet::GetAccountPubkey(CPubKey &pubKey, std::string strAccount, bool bFo
@@ -795,7 +795,7 @@ bool CWallet::GetAccountPubkey(CPubKey &pubKey, std::string strAccount, bool bFo
for ( map < uint256 , CWalletTx > : : iterator it = mapWallet . begin ( ) ;
it ! = mapWallet . end ( ) & & account . vchPubKey . IsValid ( ) ;
+ + it )
BOOST_FOREACH ( const CTxOut & txout , ( * it ) . second . vout )
BOOST_FOREACH ( const CTxOut & txout , ( * it ) . second . tx - > vout )
if ( txout . scriptPubKey = = scriptPubKey ) {
bForceNew = true ;
break ;
@ -954,7 +954,7 @@ bool CWallet::LoadToWallet(const CWalletTx& wtxIn)
@@ -954,7 +954,7 @@ bool CWallet::LoadToWallet(const CWalletTx& wtxIn)
wtx . BindWallet ( this ) ;
wtxOrdered . insert ( make_pair ( wtx . nOrderPos , TxPair ( & wtx , ( CAccountingEntry * ) 0 ) ) ) ;
AddToSpends ( hash ) ;
BOOST_FOREACH ( const CTxIn & txin , wtx . vin ) {
BOOST_FOREACH ( const CTxIn & txin , wtx . tx - > vin ) {
if ( mapWallet . count ( txin . prevout . hash ) ) {
CWalletTx & prevtx = mapWallet [ txin . prevout . hash ] ;
if ( prevtx . nIndex = = - 1 & & ! prevtx . hashUnset ( ) ) {
@ -993,7 +993,7 @@ bool CWallet::AddToWalletIfInvolvingMe(const CTransaction& tx, const CBlockIndex
@@ -993,7 +993,7 @@ bool CWallet::AddToWalletIfInvolvingMe(const CTransaction& tx, const CBlockIndex
if ( fExisted & & ! fUpdate ) return false ;
if ( fExisted | | IsMine ( tx ) | | IsFromMe ( tx ) )
{
CWalletTx wtx ( this , tx ) ;
CWalletTx wtx ( this , MakeTransactionRef ( tx ) ) ;
// Get merkle branch if transaction was found in a block
if ( posInBlock ! = - 1 )
@ -1052,7 +1052,7 @@ bool CWallet::AbandonTransaction(const uint256& hashTx)
@@ -1052,7 +1052,7 @@ bool CWallet::AbandonTransaction(const uint256& hashTx)
}
// If a transaction changes 'conflicted' state, that changes the balance
// available of the outputs it spends. So force those to be recomputed
BOOST_FOREACH ( const CTxIn & txin , wtx . vin )
BOOST_FOREACH ( const CTxIn & txin , wtx . tx - > vin )
{
if ( mapWallet . count ( txin . prevout . hash ) )
mapWallet [ txin . prevout . hash ] . MarkDirty ( ) ;
@ -1113,7 +1113,7 @@ void CWallet::MarkConflicted(const uint256& hashBlock, const uint256& hashTx)
@@ -1113,7 +1113,7 @@ void CWallet::MarkConflicted(const uint256& hashBlock, const uint256& hashTx)
}
// If a transaction changes 'conflicted' state, that changes the balance
// available of the outputs it spends. So force those to be recomputed
BOOST_FOREACH ( const CTxIn & txin , wtx . vin )
BOOST_FOREACH ( const CTxIn & txin , wtx . tx - > vin )
{
if ( mapWallet . count ( txin . prevout . hash ) )
mapWallet [ txin . prevout . hash ] . MarkDirty ( ) ;
@ -1148,8 +1148,8 @@ isminetype CWallet::IsMine(const CTxIn &txin) const
@@ -1148,8 +1148,8 @@ isminetype CWallet::IsMine(const CTxIn &txin) const
if ( mi ! = mapWallet . end ( ) )
{
const CWalletTx & prev = ( * mi ) . second ;
if ( txin . prevout . n < prev . vout . size ( ) )
return IsMine ( prev . vout [ txin . prevout . n ] ) ;
if ( txin . prevout . n < prev . tx - > vout . size ( ) )
return IsMine ( prev . tx - > vout [ txin . prevout . n ] ) ;
}
}
return ISMINE_NO ;
@ -1163,9 +1163,9 @@ CAmount CWallet::GetDebit(const CTxIn &txin, const isminefilter& filter) const
@@ -1163,9 +1163,9 @@ CAmount CWallet::GetDebit(const CTxIn &txin, const isminefilter& filter) const
if ( mi ! = mapWallet . end ( ) )
{
const CWalletTx & prev = ( * mi ) . second ;
if ( txin . prevout . n < prev . vout . size ( ) )
if ( IsMine ( prev . vout [ txin . prevout . n ] ) & filter )
return prev . vout [ txin . prevout . n ] . nValue ;
if ( txin . prevout . n < prev . tx - > vout . size ( ) )
if ( IsMine ( prev . tx - > vout [ txin . prevout . n ] ) & filter )
return prev . tx - > vout [ txin . prevout . n ] . nValue ;
}
}
return 0 ;
@ -1380,14 +1380,14 @@ void CWalletTx::GetAmounts(list<COutputEntry>& listReceived,
@@ -1380,14 +1380,14 @@ void CWalletTx::GetAmounts(list<COutputEntry>& listReceived,
CAmount nDebit = GetDebit ( filter ) ;
if ( nDebit > 0 ) // debit>0 means we signed/sent this transaction
{
CAmount nValueOut = GetValueOut ( ) ;
CAmount nValueOut = tx - > GetValueOut ( ) ;
nFee = nDebit - nValueOut ;
}
// Sent/received.
for ( unsigned int i = 0 ; i < vout . size ( ) ; + + i )
for ( unsigned int i = 0 ; i < tx - > vout . size ( ) ; + + i )
{
const CTxOut & txout = vout [ i ] ;
const CTxOut & txout = tx - > vout [ i ] ;
isminetype fIsMine = pwallet - > IsMine ( txout ) ;
// Only need to handle txouts if AT LEAST one of these is true:
// 1) they debit from us (sent)
@ -1573,7 +1573,7 @@ set<uint256> CWalletTx::GetConflicts() const
@@ -1573,7 +1573,7 @@ set<uint256> CWalletTx::GetConflicts() const
CAmount CWalletTx : : GetDebit ( const isminefilter & filter ) const
{
if ( vin . empty ( ) )
if ( tx - > vin . empty ( ) )
return 0 ;
CAmount debit = 0 ;
@ -1663,11 +1663,11 @@ CAmount CWalletTx::GetAvailableCredit(bool fUseCache) const
@@ -1663,11 +1663,11 @@ CAmount CWalletTx::GetAvailableCredit(bool fUseCache) const
CAmount nCredit = 0 ;
uint256 hashTx = GetHash ( ) ;
for ( unsigned int i = 0 ; i < vout . size ( ) ; i + + )
for ( unsigned int i = 0 ; i < tx - > vout . size ( ) ; i + + )
{
if ( ! pwallet - > IsSpent ( hashTx , i ) )
{
const CTxOut & txout = vout [ i ] ;
const CTxOut & txout = tx - > vout [ i ] ;
nCredit + = pwallet - > GetCredit ( txout , ISMINE_SPENDABLE ) ;
if ( ! MoneyRange ( nCredit ) )
throw std : : runtime_error ( " CWalletTx::GetAvailableCredit() : value out of range " ) ;
@ -1706,11 +1706,11 @@ CAmount CWalletTx::GetAvailableWatchOnlyCredit(const bool& fUseCache) const
@@ -1706,11 +1706,11 @@ CAmount CWalletTx::GetAvailableWatchOnlyCredit(const bool& fUseCache) const
return nAvailableWatchCreditCached ;
CAmount nCredit = 0 ;
for ( unsigned int i = 0 ; i < vout . size ( ) ; i + + )
for ( unsigned int i = 0 ; i < tx - > vout . size ( ) ; i + + )
{
if ( ! pwallet - > IsSpent ( GetHash ( ) , i ) )
{
const CTxOut & txout = vout [ i ] ;
const CTxOut & txout = tx - > vout [ i ] ;
nCredit + = pwallet - > GetCredit ( txout , ISMINE_WATCH_ONLY ) ;
if ( ! MoneyRange ( nCredit ) )
throw std : : runtime_error ( " CWalletTx::GetAvailableCredit() : value out of range " ) ;
@ -1758,23 +1758,23 @@ bool CWalletTx::IsTrusted() const
@@ -1758,23 +1758,23 @@ bool CWalletTx::IsTrusted() const
return false ;
// Trusted if all inputs are from us and are in the mempool:
BOOST_FOREACH ( const CTxIn & txin , vin )
BOOST_FOREACH ( const CTxIn & txin , tx - > vin )
{
// Transactions not sent by us: not trusted
const CWalletTx * parent = pwallet - > GetWalletTx ( txin . prevout . hash ) ;
if ( parent = = NULL )
return false ;
const CTxOut & parentOut = parent - > vout [ txin . prevout . n ] ;
const CTxOut & parentOut = parent - > tx - > vout [ txin . prevout . n ] ;
if ( pwallet - > IsMine ( parentOut ) ! = ISMINE_SPENDABLE )
return false ;
}
return true ;
}
bool CWalletTx : : IsEquivalentTo ( const CWalletTx & tx ) const
bool CWalletTx : : IsEquivalentTo ( const CWalletTx & _ tx) const
{
CMutableTransaction tx1 = * this ;
CMutableTransaction tx2 = tx ;
CMutableTransaction tx1 = * this - > tx ;
CMutableTransaction tx2 = * _tx . tx ;
for ( unsigned int i = 0 ; i < tx1 . vin . size ( ) ; i + + ) tx1 . vin [ i ] . scriptSig = CScript ( ) ;
for ( unsigned int i = 0 ; i < tx2 . vin . size ( ) ; i + + ) tx2 . vin [ i ] . scriptSig = CScript ( ) ;
return CTransaction ( tx1 ) = = CTransaction ( tx2 ) ;
@ -1957,10 +1957,10 @@ void CWallet::AvailableCoins(vector<COutput>& vCoins, bool fOnlyConfirmed, const
@@ -1957,10 +1957,10 @@ void CWallet::AvailableCoins(vector<COutput>& vCoins, bool fOnlyConfirmed, const
if ( nDepth = = 0 & & ! pcoin - > InMempool ( ) )
continue ;
for ( unsigned int i = 0 ; i < pcoin - > vout . size ( ) ; i + + ) {
isminetype mine = IsMine ( pcoin - > vout [ i ] ) ;
for ( unsigned int i = 0 ; i < pcoin - > tx - > vout . size ( ) ; i + + ) {
isminetype mine = IsMine ( pcoin - > tx - > vout [ i ] ) ;
if ( ! ( IsSpent ( wtxid , i ) ) & & mine ! = ISMINE_NO & &
! IsLockedCoin ( ( * it ) . first , i ) & & ( pcoin - > vout [ i ] . nValue > 0 | | fIncludeZeroValue ) & &
! IsLockedCoin ( ( * it ) . first , i ) & & ( pcoin - > tx - > vout [ i ] . nValue > 0 | | fIncludeZeroValue ) & &
( ! coinControl | | ! coinControl - > HasSelected ( ) | | coinControl - > fAllowOtherInputs | | coinControl - > IsSelected ( COutPoint ( ( * it ) . first , i ) ) ) )
vCoins . push_back ( COutput ( pcoin , i , nDepth ,
( ( mine & ISMINE_SPENDABLE ) ! = ISMINE_NO ) | |
@ -2043,7 +2043,7 @@ bool CWallet::SelectCoinsMinConf(const CAmount& nTargetValue, int nConfMine, int
@@ -2043,7 +2043,7 @@ bool CWallet::SelectCoinsMinConf(const CAmount& nTargetValue, int nConfMine, int
continue ;
int i = output . i ;
CAmount n = pcoin - > vout [ i ] . nValue ;
CAmount n = pcoin - > tx - > vout [ i ] . nValue ;
pair < CAmount , pair < const CWalletTx * , unsigned int > > coin = make_pair ( n , make_pair ( pcoin , i ) ) ;
@ -2130,7 +2130,7 @@ bool CWallet::SelectCoins(const vector<COutput>& vAvailableCoins, const CAmount&
@@ -2130,7 +2130,7 @@ bool CWallet::SelectCoins(const vector<COutput>& vAvailableCoins, const CAmount&
{
if ( ! out . fSpendable )
continue ;
nValueRet + = out . tx - > vout [ out . i ] . nValue ;
nValueRet + = out . tx - > tx - > vout [ out . i ] . nValue ;
setCoinsRet . insert ( make_pair ( out . tx , out . i ) ) ;
}
return ( nValueRet > = nTargetValue ) ;
@ -2150,9 +2150,9 @@ bool CWallet::SelectCoins(const vector<COutput>& vAvailableCoins, const CAmount&
@@ -2150,9 +2150,9 @@ bool CWallet::SelectCoins(const vector<COutput>& vAvailableCoins, const CAmount&
{
const CWalletTx * pcoin = & it - > second ;
// Clearly invalid input, fail
if ( pcoin - > vout . size ( ) < = outpoint . n )
if ( pcoin - > tx - > vout . size ( ) < = outpoint . n )
return false ;
nValueFromPresetInputs + = pcoin - > vout [ outpoint . n ] . nValue ;
nValueFromPresetInputs + = pcoin - > tx - > vout [ outpoint . n ] . nValue ;
setPresetCoins . insert ( make_pair ( pcoin , outpoint . n ) ) ;
} else
return false ; // TODO: Allow non-wallet inputs
@ -2208,10 +2208,10 @@ bool CWallet::FundTransaction(CMutableTransaction& tx, CAmount& nFeeRet, bool ov
@@ -2208,10 +2208,10 @@ bool CWallet::FundTransaction(CMutableTransaction& tx, CAmount& nFeeRet, bool ov
return false ;
if ( nChangePosInOut ! = - 1 )
tx . vout . insert ( tx . vout . begin ( ) + nChangePosInOut , wtx . vout [ nChangePosInOut ] ) ;
tx . vout . insert ( tx . vout . begin ( ) + nChangePosInOut , wtx . tx - > vout [ nChangePosInOut ] ) ;
// Add new txins (keeping original txin scriptSig/order)
BOOST_FOREACH ( const CTxIn & txin , wtx . vin )
BOOST_FOREACH ( const CTxIn & txin , wtx . tx - > vin )
{
if ( ! coinControl . IsSelected ( txin . prevout ) )
{
@ -2351,7 +2351,7 @@ bool CWallet::CreateTransaction(const vector<CRecipient>& vecSend, CWalletTx& wt
@@ -2351,7 +2351,7 @@ bool CWallet::CreateTransaction(const vector<CRecipient>& vecSend, CWalletTx& wt
}
BOOST_FOREACH ( PAIRTYPE ( const CWalletTx * , unsigned int ) pcoin , setCoins )
{
CAmount nCredit = pcoin . first - > vout [ pcoin . second ] . nValue ;
CAmount nCredit = pcoin . first - > tx - > vout [ pcoin . second ] . nValue ;
//The coin age after the next block (depth+1) is used instead of the current,
//reflecting an assumption the user would accept a bit more delay for
//a chance at a free transaction.
@ -2466,10 +2466,10 @@ bool CWallet::CreateTransaction(const vector<CRecipient>& vecSend, CWalletTx& wt
@@ -2466,10 +2466,10 @@ bool CWallet::CreateTransaction(const vector<CRecipient>& vecSend, CWalletTx& wt
BOOST_FOREACH ( const PAIRTYPE ( const CWalletTx * , unsigned int ) & coin , setCoins )
{
bool signSuccess ;
const CScript & scriptPubKey = coin . first - > vout [ coin . second ] . scriptPubKey ;
const CScript & scriptPubKey = coin . first - > tx - > vout [ coin . second ] . scriptPubKey ;
SignatureData sigdata ;
if ( sign )
signSuccess = ProduceSignature ( TransactionSignatureCreator ( this , & txNewConst , nIn , coin . first - > vout [ coin . second ] . nValue , SIGHASH_ALL ) , scriptPubKey , sigdata ) ;
signSuccess = ProduceSignature ( TransactionSignatureCreator ( this , & txNewConst , nIn , coin . first - > tx - > vout [ coin . second ] . nValue , SIGHASH_ALL ) , scriptPubKey , sigdata ) ;
else
signSuccess = ProduceSignature ( DummySignatureCreator ( this ) , scriptPubKey , sigdata ) ;
@ -2494,16 +2494,16 @@ bool CWallet::CreateTransaction(const vector<CRecipient>& vecSend, CWalletTx& wt
@@ -2494,16 +2494,16 @@ bool CWallet::CreateTransaction(const vector<CRecipient>& vecSend, CWalletTx& wt
}
// Embed the constructed transaction data in wtxNew.
* static_cast < CTransaction * > ( & wtxNew ) = CTransaction ( txNew ) ;
wtxNew . SetTx ( MakeTransactionRef ( std : : move ( txNew ) ) ) ;
// Limit size
if ( GetTransactionWeight ( txNew ) > = MAX_STANDARD_TX_WEIGHT )
if ( GetTransactionWeight ( w txNew) > = MAX_STANDARD_TX_WEIGHT )
{
strFailReason = _ ( " Transaction too large " ) ;
return false ;
}
dPriority = wtxNew . ComputePriority ( dPriority , nBytes ) ;
dPriority = wtxNew . tx - > ComputePriority ( dPriority , nBytes ) ;
// Allow to override the default confirmation target over the CoinControl instance
int currentConfirmationTarget = nTxConfirmTarget ;
@ -2555,7 +2555,7 @@ bool CWallet::CommitTransaction(CWalletTx& wtxNew, CReserveKey& reservekey, CCon
@@ -2555,7 +2555,7 @@ bool CWallet::CommitTransaction(CWalletTx& wtxNew, CReserveKey& reservekey, CCon
{
{
LOCK2 ( cs_main , cs_wallet ) ;
LogPrintf ( " CommitTransaction: \n %s " , wtxNew . ToString ( ) ) ;
LogPrintf ( " CommitTransaction: \n %s " , wtxNew . tx - > ToString ( ) ) ;
{
// Take key pair from key pool so it won't be used again
reservekey . KeepKey ( ) ;
@ -2565,7 +2565,7 @@ bool CWallet::CommitTransaction(CWalletTx& wtxNew, CReserveKey& reservekey, CCon
@@ -2565,7 +2565,7 @@ bool CWallet::CommitTransaction(CWalletTx& wtxNew, CReserveKey& reservekey, CCon
AddToWallet ( wtxNew ) ;
// Notify that old coins are spent
BOOST_FOREACH ( const CTxIn & txin , wtxNew . vin )
BOOST_FOREACH ( const CTxIn & txin , wtxNew . tx - > vin )
{
CWalletTx & coin = mapWallet [ txin . prevout . hash ] ;
coin . BindWallet ( this ) ;
@ -2939,15 +2939,15 @@ std::map<CTxDestination, CAmount> CWallet::GetAddressBalances()
@@ -2939,15 +2939,15 @@ std::map<CTxDestination, CAmount> CWallet::GetAddressBalances()
if ( nDepth < ( pcoin - > IsFromMe ( ISMINE_ALL ) ? 0 : 1 ) )
continue ;
for ( unsigned int i = 0 ; i < pcoin - > vout . size ( ) ; i + + )
for ( unsigned int i = 0 ; i < pcoin - > tx - > vout . size ( ) ; i + + )
{
CTxDestination addr ;
if ( ! IsMine ( pcoin - > vout [ i ] ) )
if ( ! IsMine ( pcoin - > tx - > vout [ i ] ) )
continue ;
if ( ! ExtractDestination ( pcoin - > vout [ i ] . scriptPubKey , addr ) )
if ( ! ExtractDestination ( pcoin - > tx - > vout [ i ] . scriptPubKey , addr ) )
continue ;
CAmount n = IsSpent ( walletEntry . first , i ) ? 0 : pcoin - > vout [ i ] . nValue ;
CAmount n = IsSpent ( walletEntry . first , i ) ? 0 : pcoin - > tx - > vout [ i ] . nValue ;
if ( ! balances . count ( addr ) )
balances [ addr ] = 0 ;
@ -2969,16 +2969,16 @@ set< set<CTxDestination> > CWallet::GetAddressGroupings()
@@ -2969,16 +2969,16 @@ set< set<CTxDestination> > CWallet::GetAddressGroupings()
{
CWalletTx * pcoin = & walletEntry . second ;
if ( pcoin - > vin . size ( ) > 0 )
if ( pcoin - > tx - > vin . size ( ) > 0 )
{
bool any_mine = false ;
// group all input addresses with each other
BOOST_FOREACH ( CTxIn txin , pcoin - > vin )
BOOST_FOREACH ( CTxIn txin , pcoin - > tx - > vin )
{
CTxDestination address ;
if ( ! IsMine ( txin ) ) /* If this input isn't mine, ignore it */
continue ;
if ( ! ExtractDestination ( mapWallet [ txin . prevout . hash ] . vout [ txin . prevout . n ] . scriptPubKey , address ) )
if ( ! ExtractDestination ( mapWallet [ txin . prevout . hash ] . tx - > vout [ txin . prevout . n ] . scriptPubKey , address ) )
continue ;
grouping . insert ( address ) ;
any_mine = true ;
@ -2987,7 +2987,7 @@ set< set<CTxDestination> > CWallet::GetAddressGroupings()
@@ -2987,7 +2987,7 @@ set< set<CTxDestination> > CWallet::GetAddressGroupings()
// group change with input addresses
if ( any_mine )
{
BOOST_FOREACH ( CTxOut txout , pcoin - > vout )
BOOST_FOREACH ( CTxOut txout , pcoin - > tx - > vout )
if ( IsChange ( txout ) )
{
CTxDestination txoutAddr ;
@ -3004,11 +3004,11 @@ set< set<CTxDestination> > CWallet::GetAddressGroupings()
@@ -3004,11 +3004,11 @@ set< set<CTxDestination> > CWallet::GetAddressGroupings()
}
// group lone addrs by themselves
for ( unsigned int i = 0 ; i < pcoin - > vout . size ( ) ; i + + )
if ( IsMine ( pcoin - > vout [ i ] ) )
for ( unsigned int i = 0 ; i < pcoin - > tx - > vout . size ( ) ; i + + )
if ( IsMine ( pcoin - > tx - > vout [ i ] ) )
{
CTxDestination address ;
if ( ! ExtractDestination ( pcoin - > vout [ i ] . scriptPubKey , address ) )
if ( ! ExtractDestination ( pcoin - > tx - > vout [ i ] . scriptPubKey , address ) )
continue ;
grouping . insert ( address ) ;
groupings . insert ( grouping ) ;
@ -3275,7 +3275,7 @@ void CWallet::GetKeyBirthTimes(std::map<CKeyID, int64_t> &mapKeyBirth) const {
@@ -3275,7 +3275,7 @@ void CWallet::GetKeyBirthTimes(std::map<CKeyID, int64_t> &mapKeyBirth) const {
if ( blit ! = mapBlockIndex . end ( ) & & chainActive . Contains ( blit - > second ) ) {
// ... which are already in a block
int nHeight = blit - > second - > nHeight ;
BOOST_FOREACH ( const CTxOut & txout , wtx . vout ) {
BOOST_FOREACH ( const CTxOut & txout , wtx . tx - > vout ) {
// iterate over all their outputs
CAffectedKeysVisitor ( * this , vAffected ) . Process ( txout . scriptPubKey ) ;
BOOST_FOREACH ( const CKeyID & keyid , vAffected ) {