From dcd2fc9fab71fea38347627fcf17c41b8b3b1206 Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Wed, 26 Dec 2012 14:05:58 -0800 Subject: [PATCH] Begin to sanitize the fee structure. Implement load scaling. --- src/cpp/ripple/RegularKeySetTransactor.cpp | 9 +++------ src/cpp/ripple/RegularKeySetTransactor.h | 2 +- src/cpp/ripple/Transactor.cpp | 7 ++++++- src/cpp/ripple/Transactor.h | 6 +++++- 4 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/cpp/ripple/RegularKeySetTransactor.cpp b/src/cpp/ripple/RegularKeySetTransactor.cpp index f74b8f5a9..b2361c873 100644 --- a/src/cpp/ripple/RegularKeySetTransactor.cpp +++ b/src/cpp/ripple/RegularKeySetTransactor.cpp @@ -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(); } diff --git a/src/cpp/ripple/RegularKeySetTransactor.h b/src/cpp/ripple/RegularKeySetTransactor.h index 35d744c8f..775bd0e01 100644 --- a/src/cpp/ripple/RegularKeySetTransactor.h +++ b/src/cpp/ripple/RegularKeySetTransactor.h @@ -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(); diff --git a/src/cpp/ripple/Transactor.cpp b/src/cpp/ripple/Transactor.cpp index ff57daff5..07e87592b 100644 --- a/src/cpp/ripple/Transactor.cpp +++ b/src/cpp/ripple/Transactor.cpp @@ -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() diff --git a/src/cpp/ripple/Transactor.h b/src/cpp/ripple/Transactor.h index 62d2a5e45..c61878634 100644 --- a/src/cpp/ripple/Transactor.h +++ b/src/cpp/ripple/Transactor.h @@ -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;