mirror of
https://github.com/XRPLF/rippled.git
synced 2025-12-06 17:27:55 +00:00
Add logging for offer create.
This commit is contained in:
@@ -743,7 +743,7 @@ uint64 STAmount::getRate(const STAmount& offerOut, const STAmount& offerIn)
|
||||
|
||||
// Taker gets all taker can pay for with saTakerFunds, limited by saOfferPays and saOfferFunds.
|
||||
// --> saOfferFunds: Limit for saOfferPays
|
||||
// --> saTakerFunds: Limit for saOfferGets
|
||||
// --> saTakerFunds: Limit for saOfferGets : How much taker really wants. : Driver
|
||||
// --> saOfferPays: Request : this should be reduced as the offer is fullfilled.
|
||||
// --> saOfferGets: Request : this should be reduced as the offer is fullfilled.
|
||||
// --> saTakerPays: Total : Used to know the approximate ratio of the exchange.
|
||||
@@ -837,6 +837,23 @@ STAmount STAmount::deserialize(SerializerIterator& it)
|
||||
return ret;
|
||||
}
|
||||
|
||||
std::string STAmount::getFullText() const
|
||||
{
|
||||
if (mIsNative)
|
||||
{
|
||||
return str(boost::format("%s " SYSTEM_CURRENCY_CODE) % getText());
|
||||
}
|
||||
else
|
||||
{
|
||||
return str(boost::format("%s %s/%s %dE%d" )
|
||||
% getText()
|
||||
% getHumanCurrency()
|
||||
% NewcoinAddress::createHumanAccountID(mIssuer)
|
||||
% getMantissa()
|
||||
% getExponent());
|
||||
}
|
||||
}
|
||||
|
||||
Json::Value STAmount::getJson(int) const
|
||||
{
|
||||
Json::Value elem(Json::objectValue);
|
||||
@@ -850,7 +867,8 @@ Json::Value STAmount::getJson(int) const
|
||||
if (!mIssuer.isZero())
|
||||
elem["issuer"] = NewcoinAddress::createHumanAccountID(mIssuer);
|
||||
|
||||
}else
|
||||
}
|
||||
else
|
||||
{
|
||||
elem=getText();
|
||||
}
|
||||
|
||||
@@ -830,7 +830,8 @@ Json::Value RPCServer::doNicknameSet(const Json::Value& params)
|
||||
return obj;
|
||||
}
|
||||
|
||||
// offer_create <seed> <paying_account> <taker_pays_amount> <taker_pays_currency> <taker_pays_issuer> <takers_gets_amount> <takers_gets_currency> <takers_gets_issuer> <expires> [passive]
|
||||
// offer_create <seed> <paying_account> <takers_gets_amount> <takers_gets_currency> <takers_gets_issuer> <taker_pays_amount> <taker_pays_currency> <taker_pays_issuer> <expires> [passive]
|
||||
// *offering* for *wants*
|
||||
Json::Value RPCServer::doOfferCreate(const Json::Value ¶ms)
|
||||
{
|
||||
NewcoinAddress naSeed;
|
||||
@@ -848,22 +849,22 @@ Json::Value RPCServer::doOfferCreate(const Json::Value ¶ms)
|
||||
{
|
||||
return RPCError(rpcSRC_ACT_MALFORMED);
|
||||
}
|
||||
else if (!saTakerPays.setValue(params[2u].asString(), params[3u].asString()))
|
||||
{
|
||||
return RPCError(rpcPAYS_AMT_MALFORMED);
|
||||
}
|
||||
else if (!naTakerPaysID.setAccountID(params[4u].asString()))
|
||||
{
|
||||
return RPCError(rpcPAYS_ACT_MALFORMED);
|
||||
}
|
||||
else if (!saTakerGets.setValue(params[5u].asString(), params[6u].asString()))
|
||||
else if (!saTakerGets.setValue(params[2u].asString(), params[3u].asString()))
|
||||
{
|
||||
return RPCError(rpcGETS_AMT_MALFORMED);
|
||||
}
|
||||
else if (!naTakerGetsID.setAccountID(params[7u].asString()))
|
||||
else if (!naTakerGetsID.setAccountID(params[4u].asString()))
|
||||
{
|
||||
return RPCError(rpcGETS_ACT_MALFORMED);
|
||||
}
|
||||
else if (!saTakerPays.setValue(params[5u].asString(), params[6u].asString()))
|
||||
{
|
||||
return RPCError(rpcPAYS_AMT_MALFORMED);
|
||||
}
|
||||
else if (!naTakerPaysID.setAccountID(params[7u].asString()))
|
||||
{
|
||||
return RPCError(rpcPAYS_ACT_MALFORMED);
|
||||
}
|
||||
else if (params.size() == 10 && params[9u].asString() != "passive")
|
||||
{
|
||||
return RPCError(rpcINVALID_PARAMS);
|
||||
|
||||
@@ -261,6 +261,7 @@ public:
|
||||
SerializedTypeID getSType() const { return STI_AMOUNT; }
|
||||
std::string getText() const;
|
||||
std::string getRaw() const;
|
||||
std::string getFullText() const;
|
||||
void add(Serializer& s) const;
|
||||
|
||||
int getExponent() const { return mOffset; }
|
||||
|
||||
@@ -128,7 +128,7 @@ STAmount TransactionEngine::accountHolds(const uint160& uAccountID, const uint16
|
||||
saAmount = rippleHolds(uAccountID, uCurrency, uIssuerID);
|
||||
|
||||
Log(lsINFO) << "accountHolds: "
|
||||
<< saAmount.getText()
|
||||
<< saAmount.getFullText()
|
||||
<< " : "
|
||||
<< STAmount::createHumanCurrency(uCurrency)
|
||||
<< "/"
|
||||
@@ -1930,11 +1930,10 @@ TransactionEngineResult TransactionEngine::doInvoice(const SerializedTransaction
|
||||
return tenUNKNOWN;
|
||||
}
|
||||
|
||||
// Take as much as possible. Adjusts account balances.
|
||||
// Take as much as possible. Adjusts account balances. Charges fees on top to taker.
|
||||
// --> uBookBase: The order book to take against.
|
||||
// --> saTakerPays: What the taker wanted (w/ issuer)
|
||||
// --> saTakerPays: What the taker offers (w/ issuer)
|
||||
// --> saTakerGets: What the taker wanted (w/ issuer)
|
||||
// --> saTakerFund: What taker can afford
|
||||
// <-- saTakerPaid: What taker paid not including fees. To reduce an offer.
|
||||
// <-- saTakerGot: What taker got not including fees. To reduce an offer.
|
||||
// <-- terResult: terSUCCESS or terNO_ACCOUNT
|
||||
@@ -2017,6 +2016,12 @@ TransactionEngineResult TransactionEngine::takeOffers(
|
||||
STAmount saOfferPays = sleOffer->getIValueFieldAmount(sfTakerGets);
|
||||
STAmount saOfferGets = sleOffer->getIValueFieldAmount(sfTakerPays);
|
||||
|
||||
if (sleOffer->getIFieldPresent(sfGetsIssuer))
|
||||
saOfferPays.setIssuer(sleOffer->getIValueFieldAccount(sfGetsIssuer).getAccountID());
|
||||
|
||||
if (sleOffer->getIFieldPresent(sfPaysIssuer))
|
||||
saOfferGets.setIssuer(sleOffer->getIValueFieldAccount(sfPaysIssuer).getAccountID());
|
||||
|
||||
if (sleOffer->getIFieldPresent(sfExpiration) && sleOffer->getIFieldU32(sfExpiration) <= mLedger->getParentCloseTimeNC())
|
||||
{
|
||||
// Offer is expired. Delete it.
|
||||
@@ -2037,8 +2042,7 @@ TransactionEngineResult TransactionEngine::takeOffers(
|
||||
{
|
||||
// Get offer funds available.
|
||||
|
||||
if (sleOffer->getIFieldPresent(sfPaysIssuer))
|
||||
saOfferPays.setIssuer(sleOffer->getIValueFieldAccount(sfPaysIssuer).getAccountID());
|
||||
Log(lsINFO) << "takeOffers: saOfferPays=" << saOfferPays.getJson(0);
|
||||
|
||||
STAmount saOfferFunds = accountFunds(uOfferOwnerID, saOfferPays);
|
||||
STAmount saTakerFunds = accountFunds(uTakerAccountID, saTakerPays);
|
||||
@@ -2055,14 +2059,34 @@ TransactionEngineResult TransactionEngine::takeOffers(
|
||||
}
|
||||
else
|
||||
{
|
||||
STAmount saPay = saTakerPays - saTakerPaid;
|
||||
if (saTakerFunds < saPay)
|
||||
saPay = saTakerFunds;
|
||||
STAmount saSubTakerPaid;
|
||||
STAmount saSubTakerGot;
|
||||
|
||||
Log(lsINFO) << "takeOffers: applyOffer: saTakerPays: " << saTakerPays.getFullText();
|
||||
Log(lsINFO) << "takeOffers: applyOffer: saTakerPaid: " << saTakerPaid.getFullText();
|
||||
Log(lsINFO) << "takeOffers: applyOffer: saTakerFunds: " << saTakerFunds.getFullText();
|
||||
Log(lsINFO) << "takeOffers: applyOffer: saOfferFunds: " << saOfferFunds.getFullText();
|
||||
Log(lsINFO) << "takeOffers: applyOffer: saPay: " << saPay.getFullText();
|
||||
Log(lsINFO) << "takeOffers: applyOffer: saOfferPays: " << saOfferPays.getFullText();
|
||||
Log(lsINFO) << "takeOffers: applyOffer: saOfferGets: " << saOfferGets.getFullText();
|
||||
Log(lsINFO) << "takeOffers: applyOffer: saTakerPays: " << saTakerPays.getFullText();
|
||||
Log(lsINFO) << "takeOffers: applyOffer: saTakerGets: " << saTakerGets.getFullText();
|
||||
|
||||
bool bOfferDelete = STAmount::applyOffer(
|
||||
saOfferFunds, saTakerFunds,
|
||||
saOfferPays, saOfferGets,
|
||||
saTakerPays, saTakerGets,
|
||||
saSubTakerPaid, saSubTakerGot);
|
||||
saOfferFunds,
|
||||
saPay, // Driver XXX need to account for fees.
|
||||
saOfferPays,
|
||||
saOfferGets,
|
||||
saTakerPays,
|
||||
saTakerGets,
|
||||
saSubTakerPaid,
|
||||
saSubTakerGot);
|
||||
|
||||
Log(lsINFO) << "takeOffers: applyOffer: saSubTakerPaid: " << saSubTakerPaid.getFullText();
|
||||
Log(lsINFO) << "takeOffers: applyOffer: saSubTakerGot: " << saSubTakerGot.getFullText();
|
||||
|
||||
// Adjust offer
|
||||
if (bOfferDelete)
|
||||
@@ -2115,10 +2139,10 @@ Log(lsWARNING) << "doOfferCreate> " << txn.getJson(0);
|
||||
uint160 uGetsIssuerID = txn.getITFieldAccount(sfGetsIssuer);
|
||||
STAmount saTakerPays = txn.getITFieldAmount(sfTakerPays);
|
||||
saTakerPays.setIssuer(uPaysIssuerID);
|
||||
Log(lsWARNING) << "doOfferCreate: saTakerPays=" << saTakerPays.getJson(0);
|
||||
Log(lsWARNING) << "doOfferCreate: saTakerPays=" << saTakerPays.getFullText();
|
||||
STAmount saTakerGets = txn.getITFieldAmount(sfTakerGets);
|
||||
saTakerGets.setIssuer(uGetsIssuerID);
|
||||
Log(lsWARNING) << "doOfferCreate: saTakerGets=" << saTakerGets.getJson(0);
|
||||
Log(lsWARNING) << "doOfferCreate: saTakerGets=" << saTakerGets.getFullText();
|
||||
uint32 uExpiration = txn.getITFieldU32(sfExpiration);
|
||||
bool bHaveExpiration = txn.getITFieldPresent(sfExpiration);
|
||||
uint32 uSequence = txn.getSequence();
|
||||
@@ -2218,21 +2242,23 @@ Log(lsWARNING) << "doOfferCreate: saTakerGets=" << saTakerGets.getJson(0);
|
||||
);
|
||||
|
||||
Log(lsWARNING) << "doOfferCreate: takeOffers=" << terResult;
|
||||
Log(lsWARNING) << "doOfferCreate: takeOffers: saOfferPaid=" << saOfferPaid.getText();
|
||||
Log(lsWARNING) << "doOfferCreate: takeOffers: saOfferGot=" << saOfferGot.getText();
|
||||
Log(lsWARNING) << "doOfferCreate: takeOffers: saOfferPaid=" << saOfferPaid.getFullText();
|
||||
Log(lsWARNING) << "doOfferCreate: takeOffers: saOfferGot=" << saOfferGot.getFullText();
|
||||
Log(lsWARNING) << "doOfferCreate: takeOffers: saTakerPays=" << saTakerPays.getFullText();
|
||||
Log(lsWARNING) << "doOfferCreate: takeOffers: saTakerGets=" << saTakerGets.getFullText();
|
||||
|
||||
if (terSUCCESS == terResult)
|
||||
{
|
||||
saTakerGets -= saOfferPaid; // Reduce payout to takers by what srcAccount just paid.
|
||||
saTakerPays -= saOfferGot; // Reduce payin from takers by what offer just got.
|
||||
saTakerGets -= saOfferPaid; // Reduce payout to takers by what srcAccount just paid.
|
||||
}
|
||||
}
|
||||
|
||||
Log(lsWARNING) << "doOfferCreate: takeOffers: saTakerPays=" << saTakerPays.getText();
|
||||
Log(lsWARNING) << "doOfferCreate: takeOffers: saTakerGets=" << saTakerGets.getJson(0);
|
||||
Log(lsWARNING) << "doOfferCreate: takeOffers: saTakerGets=" << NewcoinAddress::createHumanAccountID(saTakerGets.getIssuer());
|
||||
Log(lsWARNING) << "doOfferCreate: takeOffers: saTakerPays=" << saTakerPays.getFullText();
|
||||
Log(lsWARNING) << "doOfferCreate: takeOffers: saTakerGets=" << saTakerGets.getFullText();
|
||||
Log(lsWARNING) << "doOfferCreate: takeOffers: saTakerGets=" << NewcoinAddress::createHumanAccountID(saTakerGets.getIssuer());
|
||||
Log(lsWARNING) << "doOfferCreate: takeOffers: mTxnAccountID=" << NewcoinAddress::createHumanAccountID(mTxnAccountID);
|
||||
Log(lsWARNING) << "doOfferCreate: takeOffers: funds=" << accountFunds(mTxnAccountID, saTakerGets).getText();
|
||||
Log(lsWARNING) << "doOfferCreate: takeOffers: funds=" << accountFunds(mTxnAccountID, saTakerGets).getFullText();
|
||||
|
||||
// Log(lsWARNING) << "doOfferCreate: takeOffers: uPaysIssuerID=" << NewcoinAddress::createHumanAccountID(uPaysIssuerID);
|
||||
// Log(lsWARNING) << "doOfferCreate: takeOffers: uGetsIssuerID=" << NewcoinAddress::createHumanAccountID(uGetsIssuerID);
|
||||
|
||||
Reference in New Issue
Block a user