Moved CInPoint to core. Removed GetMinFee from CTransaction and made it a regular function in main.
This commit is contained in:
parent
effc2770f5
commit
788536f175
4 changed files with 23 additions and 23 deletions
15
src/core.h
15
src/core.h
|
@ -11,6 +11,8 @@
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
|
class CTransaction;
|
||||||
|
|
||||||
/** An outpoint - a combination of a transaction hash and an index n into its vout */
|
/** An outpoint - a combination of a transaction hash and an index n into its vout */
|
||||||
class COutPoint
|
class COutPoint
|
||||||
{
|
{
|
||||||
|
@ -50,4 +52,17 @@ public:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/** An inpoint - a combination of a transaction and an index n into its vin */
|
||||||
|
class CInPoint
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CTransaction* ptx;
|
||||||
|
unsigned int n;
|
||||||
|
|
||||||
|
CInPoint() { SetNull(); }
|
||||||
|
CInPoint(CTransaction* ptxIn, unsigned int nIn) { ptx = ptxIn; n = nIn; }
|
||||||
|
void SetNull() { ptx = NULL; n = (unsigned int) -1; }
|
||||||
|
bool IsNull() const { return (ptx == NULL && n == (unsigned int) -1); }
|
||||||
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
11
src/main.cpp
11
src/main.cpp
|
@ -591,13 +591,12 @@ bool CTransaction::CheckTransaction(CValidationState &state) const
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
int64 CTransaction::GetMinFee(unsigned int nBlockSize, bool fAllowFree,
|
int64 GetMinFee(const CTransaction& tx, unsigned int nBlockSize, bool fAllowFree, enum GetMinFee_mode mode)
|
||||||
enum GetMinFee_mode mode) const
|
|
||||||
{
|
{
|
||||||
// Base fee is either nMinTxFee or nMinRelayTxFee
|
// Base fee is either nMinTxFee or nMinRelayTxFee
|
||||||
int64 nBaseFee = (mode == GMF_RELAY) ? nMinRelayTxFee : nMinTxFee;
|
int64 nBaseFee = (mode == GMF_RELAY) ? tx.nMinRelayTxFee : tx.nMinTxFee;
|
||||||
|
|
||||||
unsigned int nBytes = ::GetSerializeSize(*this, SER_NETWORK, PROTOCOL_VERSION);
|
unsigned int nBytes = ::GetSerializeSize(tx, SER_NETWORK, PROTOCOL_VERSION);
|
||||||
unsigned int nNewBlockSize = nBlockSize + nBytes;
|
unsigned int nNewBlockSize = nBlockSize + nBytes;
|
||||||
int64 nMinFee = (1 + (int64)nBytes / 1000) * nBaseFee;
|
int64 nMinFee = (1 + (int64)nBytes / 1000) * nBaseFee;
|
||||||
|
|
||||||
|
@ -621,7 +620,7 @@ int64 CTransaction::GetMinFee(unsigned int nBlockSize, bool fAllowFree,
|
||||||
// To limit dust spam, require base fee if any output is less than 0.01
|
// To limit dust spam, require base fee if any output is less than 0.01
|
||||||
if (nMinFee < nBaseFee)
|
if (nMinFee < nBaseFee)
|
||||||
{
|
{
|
||||||
BOOST_FOREACH(const CTxOut& txout, vout)
|
BOOST_FOREACH(const CTxOut& txout, tx.vout)
|
||||||
if (txout.nValue < CENT)
|
if (txout.nValue < CENT)
|
||||||
nMinFee = nBaseFee;
|
nMinFee = nBaseFee;
|
||||||
}
|
}
|
||||||
|
@ -757,7 +756,7 @@ bool CTxMemPool::accept(CValidationState &state, CTransaction &tx, bool fCheckIn
|
||||||
unsigned int nSize = ::GetSerializeSize(tx, SER_NETWORK, PROTOCOL_VERSION);
|
unsigned int nSize = ::GetSerializeSize(tx, SER_NETWORK, PROTOCOL_VERSION);
|
||||||
|
|
||||||
// Don't accept it if it can't get into a block
|
// Don't accept it if it can't get into a block
|
||||||
int64 txMinFee = tx.GetMinFee(1000, true, GMF_RELAY);
|
int64 txMinFee = GetMinFee(tx, 1000, true, GMF_RELAY);
|
||||||
if (fLimitFree && nFees < txMinFee)
|
if (fLimitFree && nFees < txMinFee)
|
||||||
return error("CTxMemPool::accept() : not enough fees %s, %"PRI64d" < %"PRI64d,
|
return error("CTxMemPool::accept() : not enough fees %s, %"PRI64d" < %"PRI64d,
|
||||||
hash.ToString().c_str(),
|
hash.ToString().c_str(),
|
||||||
|
|
18
src/main.h
18
src/main.h
|
@ -253,20 +253,6 @@ struct CDiskTxPos : public CDiskBlockPos
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/** An inpoint - a combination of a transaction and an index n into its vin */
|
|
||||||
class CInPoint
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
CTransaction* ptx;
|
|
||||||
unsigned int n;
|
|
||||||
|
|
||||||
CInPoint() { SetNull(); }
|
|
||||||
CInPoint(CTransaction* ptxIn, unsigned int nIn) { ptx = ptxIn; n = nIn; }
|
|
||||||
void SetNull() { ptx = NULL; n = (unsigned int) -1; }
|
|
||||||
bool IsNull() const { return (ptx == NULL && n == (unsigned int) -1); }
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** An input of a transaction. It contains the location of the previous
|
/** An input of a transaction. It contains the location of the previous
|
||||||
|
@ -424,6 +410,8 @@ enum GetMinFee_mode
|
||||||
GMF_SEND,
|
GMF_SEND,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
int64 GetMinFee(const CTransaction& tx, unsigned int nBlockSize = 1, bool fAllowFree = true, enum GetMinFee_mode mode = GMF_BLOCK);
|
||||||
|
|
||||||
/** The basic transaction that is broadcasted on the network and contained in
|
/** The basic transaction that is broadcasted on the network and contained in
|
||||||
* blocks. A transaction can contain multiple inputs and outputs.
|
* blocks. A transaction can contain multiple inputs and outputs.
|
||||||
*/
|
*/
|
||||||
|
@ -575,8 +563,6 @@ public:
|
||||||
return dPriority > COIN * 144 / 250;
|
return dPriority > COIN * 144 / 250;
|
||||||
}
|
}
|
||||||
|
|
||||||
int64 GetMinFee(unsigned int nBlockSize=1, bool fAllowFree=true, enum GetMinFee_mode mode=GMF_BLOCK) const;
|
|
||||||
|
|
||||||
friend bool operator==(const CTransaction& a, const CTransaction& b)
|
friend bool operator==(const CTransaction& a, const CTransaction& b)
|
||||||
{
|
{
|
||||||
return (a.nVersion == b.nVersion &&
|
return (a.nVersion == b.nVersion &&
|
||||||
|
|
|
@ -1277,7 +1277,7 @@ bool CWallet::CreateTransaction(const vector<pair<CScript, int64> >& vecSend,
|
||||||
// Check that enough fee is included
|
// Check that enough fee is included
|
||||||
int64 nPayFee = nTransactionFee * (1 + (int64)nBytes / 1000);
|
int64 nPayFee = nTransactionFee * (1 + (int64)nBytes / 1000);
|
||||||
bool fAllowFree = CTransaction::AllowFree(dPriority);
|
bool fAllowFree = CTransaction::AllowFree(dPriority);
|
||||||
int64 nMinFee = wtxNew.GetMinFee(1, fAllowFree, GMF_SEND);
|
int64 nMinFee = GetMinFee(wtxNew, 1, fAllowFree, GMF_SEND);
|
||||||
if (nFeeRet < max(nPayFee, nMinFee))
|
if (nFeeRet < max(nPayFee, nMinFee))
|
||||||
{
|
{
|
||||||
nFeeRet = max(nPayFee, nMinFee);
|
nFeeRet = max(nPayFee, nMinFee);
|
||||||
|
|
Loading…
Reference in a new issue