Fix utxo selection

This commit is contained in:
jl777
2018-08-09 20:24:33 -11:00
parent 0d84fb208e
commit 2b6315fd13

View File

@@ -266,16 +266,22 @@ int64_t AddNormalinputs(CMutableTransaction &mtx,CPubKey mypk,int64_t total,int3
{ {
txid = out.tx->GetHash(); txid = out.tx->GetHash();
vout = out.i; vout = out.i;
for (i=0; i<mtx.vin.size(); i++) if ( mtx.vin.size() > 0 )
if ( txid == mtx.vin[i].prevout.hash && vout == mtx.vin[i].prevout.n ) {
break; for (i=0; i<mtx.vin.size(); i++)
if ( i != mtx.vin.size() ) if ( txid == mtx.vin[i].prevout.hash && vout == mtx.vin[i].prevout.n )
continue; break;
for (i=0; i<n; i++) if ( i != mtx.vin.size() )
if ( txid == utxos[i].txid && vout == utxos[i].vout ) continue;
break; }
if ( i != n ) if ( n > 0 )
continue; {
for (i=0; i<n; i++)
if ( txid == utxos[i].txid && vout == utxos[i].vout )
break;
if ( i != n )
continue;
}
if ( myIsutxo_spentinmempool(txid,vout) == 0 ) if ( myIsutxo_spentinmempool(txid,vout) == 0 )
{ {
up = &utxos[n++]; up = &utxos[n++];
@@ -308,11 +314,11 @@ int64_t AddNormalinputs(CMutableTransaction &mtx,CPubKey mypk,int64_t total,int3
return(0); return(0);
} }
up = &utxos[ind]; up = &utxos[ind];
utxos[ind] = utxos[--n];
memset(&utxos[n],0,sizeof(utxos[n]));
mtx.vin.push_back(CTxIn(up->txid,up->vout,CScript())); mtx.vin.push_back(CTxIn(up->txid,up->vout,CScript()));
totalinputs += up->nValue; totalinputs += up->nValue;
remains -= up->nValue; remains -= up->nValue;
utxos[ind] = utxos[--n];
memset(&utxos[n],0,sizeof(utxos[n]));
if ( totalinputs >= total || (i+1) >= maxinputs ) if ( totalinputs >= total || (i+1) >= maxinputs )
break; break;
} }