Begin to sanitize the fee structure. Implement load scaling.

This commit is contained in:
JoelKatz
2012-12-26 14:05:58 -08:00
parent fa109a1aee
commit dcd2fc9fab
4 changed files with 15 additions and 9 deletions

View File

@@ -5,17 +5,14 @@
SETUP_LOG();
void RegularKeySetTransactor::calculateFee()
uint64_t RegularKeySetTransactor::calculateBaseFee()
{
Transactor::calculateFee();
if ( !(mTxnAccount->getFlags() & lsfPasswordSpent) &&
(mSigningPubKey.getAccountID() == mTxnAccountID))
{ // flag is armed and they signed with the right account
mSourceBalance = mTxnAccount->getFieldAmount(sfBalance);
if(mSourceBalance < mFeeDue) mFeeDue = 0;
return 0;
}
return Transactor::calculateBaseFee();
}

View File

@@ -2,7 +2,7 @@
class RegularKeySetTransactor : public Transactor
{
void calculateFee();
uint64_t calculateBaseFee();
public:
RegularKeySetTransactor(const SerializedTransaction& txn,TransactionEngineParams params, TransactionEngine* engine) : Transactor(txn,params,engine) {}
TER checkFee();

View File

@@ -42,7 +42,12 @@ Transactor::Transactor(const SerializedTransaction& txn,TransactionEngineParams
void Transactor::calculateFee()
{
mFeeDue = theConfig.FEE_DEFAULT;
mFeeDue = STAmount(mEngine->getLedger()->scaleFeeLoad(calculateBaseFee()));
}
uint64_t Transactor::calculateBaseFee()
{
return theConfig.FEE_DEFAULT;
}
TER Transactor::payFee()

View File

@@ -24,7 +24,11 @@ protected:
TER checkSeq();
TER payFee();
virtual void calculateFee();
void calculateFee();
// Returns the fee, not scaled for load (Should be in fee units. FIXME)
virtual uint64_t calculateBaseFee();
virtual TER checkSig();
virtual TER doApply()=0;