From 22873ff73de6d81a7e1118c7df4a94fc1e12fb22 Mon Sep 17 00:00:00 2001 From: Arthur Britto Date: Sat, 29 Sep 2012 18:28:05 -0700 Subject: [PATCH] Remove destination field from credit_set transaction. --- src/RPCServer.cpp | 4 +--- src/RippleCalc.cpp | 2 +- src/Transaction.cpp | 13 +++---------- src/Transaction.h | 4 ---- src/TransactionAction.cpp | 31 +++++++++++-------------------- src/TransactionFormats.cpp | 9 ++++----- 6 files changed, 20 insertions(+), 43 deletions(-) diff --git a/src/RPCServer.cpp b/src/RPCServer.cpp index ba6415daf3..ffa8d0d439 100644 --- a/src/RPCServer.cpp +++ b/src/RPCServer.cpp @@ -1544,7 +1544,6 @@ Json::Value RPCServer::doRippleLineSet(const Json::Value& params) NewcoinAddress naSrcAccountID; NewcoinAddress naDstAccountID; STAmount saLimitAmount; - bool bLimitAmount = true; bool bQualityIn = params.size() >= 6; bool bQualityOut = params.size() >= 7; uint32 uQualityIn = 0; @@ -1593,8 +1592,7 @@ Json::Value RPCServer::doRippleLineSet(const Json::Value& params) asSrc->getSeq(), theConfig.FEE_DEFAULT, 0, // YYY No source tag - naDstAccountID, - bLimitAmount, saLimitAmount, + saLimitAmount, bQualityIn, uQualityIn, bQualityOut, uQualityOut); diff --git a/src/RippleCalc.cpp b/src/RippleCalc.cpp index 7b88303bc9..3a1b1cc2f2 100644 --- a/src/RippleCalc.cpp +++ b/src/RippleCalc.cpp @@ -744,7 +744,7 @@ void RippleCalc::calcNodeRipple( { const uint160 uCurrencyID = saCur.getCurrency(); const uint160 uCurIssuerID = saCur.getIssuer(); - const uint160 uPrvIssuerID = saPrv.getIssuer(); + // const uint160 uPrvIssuerID = saPrv.getIssuer(); STAmount saCurIn = STAmount::divide(STAmount::multiply(saCur, uQualityOut, uCurrencyID, uCurIssuerID), uQualityIn, uCurrencyID, uCurIssuerID); diff --git a/src/Transaction.cpp b/src/Transaction.cpp index 526f433bf1..c6488cb8a0 100644 --- a/src/Transaction.cpp +++ b/src/Transaction.cpp @@ -256,18 +256,13 @@ Transaction::pointer Transaction::sharedCreate( Transaction::pointer Transaction::setCreditSet( const NewcoinAddress& naPrivateKey, - const NewcoinAddress& naDstAccountID, - bool bLimitAmount, const STAmount& saLimitAmount, bool bQualityIn, uint32 uQualityIn, bool bQualityOut, uint32 uQualityOut) { - mTransaction->setITFieldAccount(sfDestination, naDstAccountID); - - if (bLimitAmount) - mTransaction->setITFieldAmount(sfLimitAmount, saLimitAmount); + mTransaction->setITFieldAmount(sfLimitAmount, saLimitAmount); if (bQualityIn) mTransaction->setITFieldU32(sfQualityIn, uQualityIn); @@ -286,8 +281,6 @@ Transaction::pointer Transaction::sharedCreditSet( uint32 uSeq, const STAmount& saFee, uint32 uSourceTag, - const NewcoinAddress& naDstAccountID, - bool bLimitAmount, const STAmount& saLimitAmount, bool bQualityIn, uint32 uQualityIn, @@ -296,8 +289,8 @@ Transaction::pointer Transaction::sharedCreditSet( { pointer tResult = boost::make_shared(ttCREDIT_SET, naPublicKey, naSourceAccount, uSeq, saFee, uSourceTag); - return tResult->setCreditSet(naPrivateKey, naDstAccountID, - bLimitAmount, saLimitAmount, + return tResult->setCreditSet(naPrivateKey, + saLimitAmount, bQualityIn, uQualityIn, bQualityOut, uQualityOut); } diff --git a/src/Transaction.h b/src/Transaction.h index abe612853f..d8dc7fa7cc 100644 --- a/src/Transaction.h +++ b/src/Transaction.h @@ -74,8 +74,6 @@ private: Transaction::pointer setCreditSet( const NewcoinAddress& naPrivateKey, - const NewcoinAddress& naDstAccountID, - bool bLimitAmount, const STAmount& saLimitAmount, bool bQualityIn, uint32 uQualityIn, @@ -185,8 +183,6 @@ public: uint32 uSeq, const STAmount& saFee, uint32 uSourceTag, - const NewcoinAddress& naDstAccountID, - bool bLimitAmount, const STAmount& saLimitAmount, bool bQualityIn, uint32 uQualityIn, diff --git a/src/TransactionAction.cpp b/src/TransactionAction.cpp index 6a28a89ebc..9c4cf6a1d2 100644 --- a/src/TransactionAction.cpp +++ b/src/TransactionAction.cpp @@ -241,8 +241,17 @@ TER TransactionEngine::doCreditSet(const SerializedTransaction& txn) TER terResult = tesSUCCESS; Log(lsINFO) << "doCreditSet>"; + const STAmount saLimitAmount = txn.getITFieldAmount(sfLimitAmount); + const bool bQualityIn = txn.getITFieldPresent(sfQualityIn); + const uint32 uQualityIn = bQualityIn ? txn.getITFieldU32(sfQualityIn) : 0; + const bool bQualityOut = txn.getITFieldPresent(sfQualityOut); + const uint32 uQualityOut = bQualityIn ? txn.getITFieldU32(sfQualityOut) : 0; + const uint160 uCurrencyID = saLimitAmount.getCurrency(); + uint160 uDstAccountID = saLimitAmount.getIssuer(); + const bool bFlipped = mTxnAccountID > uDstAccountID; // true, iff current is not lowest. + bool bDelIndex = false; + // Check if destination makes sense. - uint160 uDstAccountID = txn.getITFieldAccount(sfDestination); if (!uDstAccountID) { @@ -265,23 +274,6 @@ TER TransactionEngine::doCreditSet(const SerializedTransaction& txn) return terNO_DST; } - const bool bFlipped = mTxnAccountID > uDstAccountID; // true, iff current is not lowest. - const bool bLimitAmount = txn.getITFieldPresent(sfLimitAmount); - const STAmount saLimitAmount = bLimitAmount ? txn.getITFieldAmount(sfLimitAmount) : STAmount(); - const bool bQualityIn = txn.getITFieldPresent(sfQualityIn); - const uint32 uQualityIn = bQualityIn ? txn.getITFieldU32(sfQualityIn) : 0; - const bool bQualityOut = txn.getITFieldPresent(sfQualityOut); - const uint32 uQualityOut = bQualityIn ? txn.getITFieldU32(sfQualityOut) : 0; - const uint160 uCurrencyID = saLimitAmount.getCurrency(); - bool bDelIndex = false; - - if (bLimitAmount && saLimitAmount.getIssuer() != uDstAccountID) - { - Log(lsINFO) << "doCreditSet: Malformed transaction: issuer must be destination account."; - - return temBAD_ISSUER; - } - STAmount saLimitAllow = saLimitAmount; saLimitAllow.setIssuer(mTxnAccountID); @@ -315,8 +307,7 @@ TER TransactionEngine::doCreditSet(const SerializedTransaction& txn) if (!bDelIndex) { - if (bLimitAmount) - sleRippleState->setIFieldAmount(bFlipped ? sfHighLimit: sfLowLimit, saLimitAllow); + sleRippleState->setIFieldAmount(bFlipped ? sfHighLimit: sfLowLimit, saLimitAllow); if (!bQualityIn) { diff --git a/src/TransactionFormats.cpp b/src/TransactionFormats.cpp index 3ab00f7dea..a66f36d41b 100644 --- a/src/TransactionFormats.cpp +++ b/src/TransactionFormats.cpp @@ -27,11 +27,10 @@ TransactionFormat InnerTxnFormats[]= }, { "CreditSet", ttCREDIT_SET, { { S_FIELD(Flags), STI_UINT32, SOE_FLAGS, 0 }, - { S_FIELD(Destination), STI_ACCOUNT, SOE_REQUIRED, 0 }, - { S_FIELD(SourceTag), STI_UINT32, SOE_IFFLAG, 1 }, - { S_FIELD(LimitAmount), STI_AMOUNT, SOE_IFFLAG, 2 }, - { S_FIELD(QualityIn), STI_UINT32, SOE_IFFLAG, 4 }, - { S_FIELD(QualityOut), STI_UINT32, SOE_IFFLAG, 8 }, + { S_FIELD(LimitAmount), STI_AMOUNT, SOE_REQUIRED, 0 }, + { S_FIELD(QualityIn), STI_UINT32, SOE_IFFLAG, 1 }, + { S_FIELD(QualityOut), STI_UINT32, SOE_IFFLAG, 2 }, + { S_FIELD(SourceTag), STI_UINT32, SOE_IFFLAG, 4 }, { sfInvalid, NULL, STI_DONE, SOE_NEVER, -1 } } }, /*