mirror of
https://github.com/XRPLF/rippled.git
synced 2026-06-07 10:47:05 +00:00
chore: Set ColumnLimit to 120 in clang-format (#6288)
This change updates the ColumnLimit from 80 to 120, and applies clang-format to reformat the code.
This commit is contained in:
@@ -27,8 +27,7 @@ AMM::initialTokens()
|
||||
if (!env_.enabled(fixAMMv1_3))
|
||||
{
|
||||
auto const product = number(asset1_) * number(asset2_);
|
||||
return (IOUAmount)(product.mantissa() >= 0 ? root2(product)
|
||||
: root2(-product));
|
||||
return (IOUAmount)(product.mantissa() >= 0 ? root2(product) : root2(-product));
|
||||
}
|
||||
return getLPTokensBalance();
|
||||
}
|
||||
@@ -59,10 +58,7 @@ AMM::AMM(
|
||||
, msig_(ms)
|
||||
, fee_(fee)
|
||||
, ammAccount_(create(tfee, flags, seq, ter))
|
||||
, lptIssue_(xrpl::ammLPTIssue(
|
||||
asset1_.issue().currency,
|
||||
asset2_.issue().currency,
|
||||
ammAccount_))
|
||||
, lptIssue_(xrpl::ammLPTIssue(asset1_.issue().currency, asset2_.issue().currency, ammAccount_))
|
||||
, initialLPTokens_(initialTokens())
|
||||
{
|
||||
}
|
||||
@@ -75,39 +71,12 @@ AMM::AMM(
|
||||
ter const& ter,
|
||||
bool log,
|
||||
bool close)
|
||||
: AMM(env,
|
||||
account,
|
||||
asset1,
|
||||
asset2,
|
||||
log,
|
||||
0,
|
||||
0,
|
||||
std::nullopt,
|
||||
std::nullopt,
|
||||
std::nullopt,
|
||||
ter,
|
||||
close)
|
||||
: AMM(env, account, asset1, asset2, log, 0, 0, std::nullopt, std::nullopt, std::nullopt, ter, close)
|
||||
{
|
||||
}
|
||||
|
||||
AMM::AMM(
|
||||
Env& env,
|
||||
Account const& account,
|
||||
STAmount const& asset1,
|
||||
STAmount const& asset2,
|
||||
CreateArg const& arg)
|
||||
: AMM(env,
|
||||
account,
|
||||
asset1,
|
||||
asset2,
|
||||
arg.log,
|
||||
arg.tfee,
|
||||
arg.fee,
|
||||
arg.flags,
|
||||
arg.seq,
|
||||
arg.ms,
|
||||
arg.err,
|
||||
arg.close)
|
||||
AMM::AMM(Env& env, Account const& account, STAmount const& asset1, STAmount const& asset2, CreateArg const& arg)
|
||||
: AMM(env, account, asset1, asset2, arg.log, arg.tfee, arg.fee, arg.flags, arg.seq, arg.ms, arg.err, arg.close)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -134,8 +103,7 @@ AMM::create(
|
||||
|
||||
if (!ter || env_.ter() == tesSUCCESS)
|
||||
{
|
||||
if (auto const amm = env_.current()->read(
|
||||
keylet::amm(asset1_.issue(), asset2_.issue())))
|
||||
if (auto const amm = env_.current()->read(keylet::amm(asset1_.issue(), asset2_.issue())))
|
||||
{
|
||||
return amm->getAccountID(sfAccount);
|
||||
}
|
||||
@@ -163,52 +131,36 @@ AMM::ammRpcInfo(
|
||||
if (issue1 || issue2)
|
||||
{
|
||||
if (issue1)
|
||||
jv[jss::asset] =
|
||||
STIssue(sfAsset, *issue1).getJson(JsonOptions::none);
|
||||
jv[jss::asset] = STIssue(sfAsset, *issue1).getJson(JsonOptions::none);
|
||||
if (issue2)
|
||||
jv[jss::asset2] =
|
||||
STIssue(sfAsset2, *issue2).getJson(JsonOptions::none);
|
||||
jv[jss::asset2] = STIssue(sfAsset2, *issue2).getJson(JsonOptions::none);
|
||||
}
|
||||
else if (!ammAccount)
|
||||
{
|
||||
jv[jss::asset] =
|
||||
STIssue(sfAsset, asset1_.issue()).getJson(JsonOptions::none);
|
||||
jv[jss::asset2] =
|
||||
STIssue(sfAsset2, asset2_.issue()).getJson(JsonOptions::none);
|
||||
jv[jss::asset] = STIssue(sfAsset, asset1_.issue()).getJson(JsonOptions::none);
|
||||
jv[jss::asset2] = STIssue(sfAsset2, asset2_.issue()).getJson(JsonOptions::none);
|
||||
}
|
||||
if (ammAccount)
|
||||
jv[jss::amm_account] = to_string(*ammAccount);
|
||||
}
|
||||
auto jr =
|
||||
(apiVersion == RPC::apiInvalidVersion
|
||||
? env_.rpc("json", "amm_info", to_string(jv))
|
||||
: env_.rpc(apiVersion, "json", "amm_info", to_string(jv)));
|
||||
if (jr.isObject() && jr.isMember(jss::result) &&
|
||||
jr[jss::result].isMember(jss::status))
|
||||
(apiVersion == RPC::apiInvalidVersion ? env_.rpc("json", "amm_info", to_string(jv))
|
||||
: env_.rpc(apiVersion, "json", "amm_info", to_string(jv)));
|
||||
if (jr.isObject() && jr.isMember(jss::result) && jr[jss::result].isMember(jss::status))
|
||||
return jr[jss::result];
|
||||
return Json::nullValue;
|
||||
}
|
||||
|
||||
std::tuple<STAmount, STAmount, STAmount>
|
||||
AMM::balances(
|
||||
Issue const& issue1,
|
||||
Issue const& issue2,
|
||||
std::optional<AccountID> const& account) const
|
||||
AMM::balances(Issue const& issue1, Issue const& issue2, std::optional<AccountID> const& account) const
|
||||
{
|
||||
if (auto const amm =
|
||||
env_.current()->read(keylet::amm(asset1_.issue(), asset2_.issue())))
|
||||
if (auto const amm = env_.current()->read(keylet::amm(asset1_.issue(), asset2_.issue())))
|
||||
{
|
||||
auto const ammAccountID = amm->getAccountID(sfAccount);
|
||||
auto const [asset1Balance, asset2Balance] = ammPoolHolds(
|
||||
*env_.current(),
|
||||
ammAccountID,
|
||||
issue1,
|
||||
issue2,
|
||||
FreezeHandling::fhIGNORE_FREEZE,
|
||||
env_.journal);
|
||||
auto const lptAMMBalance = account
|
||||
? ammLPHolds(*env_.current(), *amm, *account, env_.journal)
|
||||
: amm->getFieldAmount(sfLPTokenBalance);
|
||||
auto const [asset1Balance, asset2Balance] =
|
||||
ammPoolHolds(*env_.current(), ammAccountID, issue1, issue2, FreezeHandling::fhIGNORE_FREEZE, env_.journal);
|
||||
auto const lptAMMBalance =
|
||||
account ? ammLPHolds(*env_.current(), *amm, *account, env_.journal) : amm->getFieldAmount(sfLPTokenBalance);
|
||||
return {asset1Balance, asset2Balance, lptAMMBalance};
|
||||
}
|
||||
return {STAmount{}, STAmount{}, STAmount{}};
|
||||
@@ -221,25 +173,16 @@ AMM::expectBalances(
|
||||
IOUAmount const& lpt,
|
||||
std::optional<AccountID> const& account) const
|
||||
{
|
||||
auto const [asset1Balance, asset2Balance, lptAMMBalance] =
|
||||
balances(asset1.issue(), asset2.issue(), account);
|
||||
return asset1 == asset1Balance && asset2 == asset2Balance &&
|
||||
lptAMMBalance == STAmount{lpt, lptIssue_};
|
||||
auto const [asset1Balance, asset2Balance, lptAMMBalance] = balances(asset1.issue(), asset2.issue(), account);
|
||||
return asset1 == asset1Balance && asset2 == asset2Balance && lptAMMBalance == STAmount{lpt, lptIssue_};
|
||||
}
|
||||
|
||||
IOUAmount
|
||||
AMM::getLPTokensBalance(std::optional<AccountID> const& account) const
|
||||
{
|
||||
if (account)
|
||||
return accountHolds(
|
||||
*env_.current(),
|
||||
*account,
|
||||
lptIssue_,
|
||||
FreezeHandling::fhZERO_IF_FROZEN,
|
||||
env_.journal)
|
||||
.iou();
|
||||
if (auto const amm =
|
||||
env_.current()->read(keylet::amm(asset1_.issue(), asset2_.issue())))
|
||||
return accountHolds(*env_.current(), *account, lptIssue_, FreezeHandling::fhZERO_IF_FROZEN, env_.journal).iou();
|
||||
if (auto const amm = env_.current()->read(keylet::amm(asset1_.issue(), asset2_.issue())))
|
||||
return amm->getFieldAmount(sfLPTokenBalance).iou();
|
||||
return IOUAmount{0};
|
||||
}
|
||||
@@ -247,58 +190,45 @@ AMM::getLPTokensBalance(std::optional<AccountID> const& account) const
|
||||
bool
|
||||
AMM::expectLPTokens(AccountID const& account, IOUAmount const& expTokens) const
|
||||
{
|
||||
if (auto const amm =
|
||||
env_.current()->read(keylet::amm(asset1_.issue(), asset2_.issue())))
|
||||
if (auto const amm = env_.current()->read(keylet::amm(asset1_.issue(), asset2_.issue())))
|
||||
{
|
||||
auto const lptAMMBalance =
|
||||
ammLPHolds(*env_.current(), *amm, account, env_.journal);
|
||||
auto const lptAMMBalance = ammLPHolds(*env_.current(), *amm, account, env_.journal);
|
||||
return lptAMMBalance == STAmount{expTokens, lptIssue_};
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool
|
||||
AMM::expectAuctionSlot(
|
||||
std::uint32_t fee,
|
||||
std::optional<std::uint8_t> timeSlot,
|
||||
IOUAmount expectedPrice) const
|
||||
AMM::expectAuctionSlot(std::uint32_t fee, std::optional<std::uint8_t> timeSlot, IOUAmount expectedPrice) const
|
||||
{
|
||||
return expectAuctionSlot([&](std::uint32_t slotFee,
|
||||
std::optional<std::uint8_t> slotInterval,
|
||||
IOUAmount const& slotPrice,
|
||||
auto const&) {
|
||||
return slotFee == fee &&
|
||||
// Auction slot might be expired, in which case slotInterval is
|
||||
// 0
|
||||
((!timeSlot && slotInterval == 0) || slotInterval == timeSlot) &&
|
||||
slotPrice == expectedPrice;
|
||||
});
|
||||
return expectAuctionSlot(
|
||||
[&](std::uint32_t slotFee, std::optional<std::uint8_t> slotInterval, IOUAmount const& slotPrice, auto const&) {
|
||||
return slotFee == fee &&
|
||||
// Auction slot might be expired, in which case slotInterval is
|
||||
// 0
|
||||
((!timeSlot && slotInterval == 0) || slotInterval == timeSlot) && slotPrice == expectedPrice;
|
||||
});
|
||||
}
|
||||
|
||||
bool
|
||||
AMM::expectAuctionSlot(std::vector<AccountID> const& authAccounts) const
|
||||
{
|
||||
return expectAuctionSlot([&](std::uint32_t,
|
||||
std::optional<std::uint8_t>,
|
||||
IOUAmount const&,
|
||||
STArray const& accounts) {
|
||||
for (auto const& account : accounts)
|
||||
{
|
||||
if (std::find(
|
||||
authAccounts.cbegin(),
|
||||
authAccounts.cend(),
|
||||
account.getAccountID(sfAccount)) == authAccounts.end())
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
return expectAuctionSlot(
|
||||
[&](std::uint32_t, std::optional<std::uint8_t>, IOUAmount const&, STArray const& accounts) {
|
||||
for (auto const& account : accounts)
|
||||
{
|
||||
if (std::find(authAccounts.cbegin(), authAccounts.cend(), account.getAccountID(sfAccount)) ==
|
||||
authAccounts.end())
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
bool
|
||||
AMM::expectTradingFee(std::uint16_t fee) const
|
||||
{
|
||||
auto const amm =
|
||||
env_.current()->read(keylet::amm(asset1_.issue(), asset2_.issue()));
|
||||
auto const amm = env_.current()->read(keylet::amm(asset1_.issue(), asset2_.issue()));
|
||||
return amm && (*amm)[sfTradingFee] == fee;
|
||||
}
|
||||
|
||||
@@ -306,8 +236,7 @@ bool
|
||||
AMM::ammExists() const
|
||||
{
|
||||
return env_.current()->read(keylet::account(ammAccount_)) != nullptr &&
|
||||
env_.current()->read(keylet::amm(asset1_.issue(), asset2_.issue())) !=
|
||||
nullptr;
|
||||
env_.current()->read(keylet::amm(asset1_.issue(), asset2_.issue())) != nullptr;
|
||||
}
|
||||
|
||||
bool
|
||||
@@ -319,23 +248,18 @@ AMM::expectAmmRpcInfo(
|
||||
std::optional<std::string> const& ledger_index,
|
||||
std::optional<AccountID> const& ammAccount) const
|
||||
{
|
||||
auto const jv = ammRpcInfo(
|
||||
account, ledger_index, std::nullopt, std::nullopt, ammAccount);
|
||||
auto const jv = ammRpcInfo(account, ledger_index, std::nullopt, std::nullopt, ammAccount);
|
||||
return expectAmmInfo(asset1, asset2, balance, jv);
|
||||
}
|
||||
|
||||
bool
|
||||
AMM::expectAmmInfo(
|
||||
STAmount const& asset1,
|
||||
STAmount const& asset2,
|
||||
IOUAmount const& balance,
|
||||
Json::Value const& jvres) const
|
||||
AMM::expectAmmInfo(STAmount const& asset1, STAmount const& asset2, IOUAmount const& balance, Json::Value const& jvres)
|
||||
const
|
||||
{
|
||||
if (!jvres.isMember(jss::amm))
|
||||
return false;
|
||||
auto const& jv = jvres[jss::amm];
|
||||
if (!jv.isMember(jss::amount) || !jv.isMember(jss::amount2) ||
|
||||
!jv.isMember(jss::lp_token))
|
||||
if (!jv.isMember(jss::amount) || !jv.isMember(jss::amount2) || !jv.isMember(jss::lp_token))
|
||||
return false;
|
||||
STAmount asset1Info;
|
||||
if (!amountFromJsonNoThrow(asset1Info, jv[jss::amount]))
|
||||
@@ -349,28 +273,21 @@ AMM::expectAmmInfo(
|
||||
// ammRpcInfo returns unordered assets
|
||||
if (asset1Info.issue() != asset1.issue())
|
||||
std::swap(asset1Info, asset2Info);
|
||||
return asset1 == asset1Info && asset2 == asset2Info &&
|
||||
lptBalance == STAmount{balance, lptIssue_};
|
||||
return asset1 == asset1Info && asset2 == asset2Info && lptBalance == STAmount{balance, lptIssue_};
|
||||
}
|
||||
|
||||
void
|
||||
AMM::setTokens(
|
||||
Json::Value& jv,
|
||||
std::optional<std::pair<Issue, Issue>> const& assets)
|
||||
AMM::setTokens(Json::Value& jv, std::optional<std::pair<Issue, Issue>> const& assets)
|
||||
{
|
||||
if (assets)
|
||||
{
|
||||
jv[jss::Asset] =
|
||||
STIssue(sfAsset, assets->first).getJson(JsonOptions::none);
|
||||
jv[jss::Asset2] =
|
||||
STIssue(sfAsset, assets->second).getJson(JsonOptions::none);
|
||||
jv[jss::Asset] = STIssue(sfAsset, assets->first).getJson(JsonOptions::none);
|
||||
jv[jss::Asset2] = STIssue(sfAsset, assets->second).getJson(JsonOptions::none);
|
||||
}
|
||||
else
|
||||
{
|
||||
jv[jss::Asset] =
|
||||
STIssue(sfAsset, asset1_.issue()).getJson(JsonOptions::none);
|
||||
jv[jss::Asset2] =
|
||||
STIssue(sfAsset, asset2_.issue()).getJson(JsonOptions::none);
|
||||
jv[jss::Asset] = STIssue(sfAsset, asset1_.issue()).getJson(JsonOptions::none);
|
||||
jv[jss::Asset2] = STIssue(sfAsset, asset2_.issue()).getJson(JsonOptions::none);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -402,16 +319,7 @@ AMM::deposit(
|
||||
std::optional<ter> const& ter)
|
||||
{
|
||||
return deposit(
|
||||
account,
|
||||
tokens,
|
||||
asset1In,
|
||||
std::nullopt,
|
||||
std::nullopt,
|
||||
flags,
|
||||
std::nullopt,
|
||||
std::nullopt,
|
||||
std::nullopt,
|
||||
ter);
|
||||
account, tokens, asset1In, std::nullopt, std::nullopt, flags, std::nullopt, std::nullopt, std::nullopt, ter);
|
||||
}
|
||||
|
||||
IOUAmount
|
||||
@@ -425,16 +333,7 @@ AMM::deposit(
|
||||
{
|
||||
assert(!(asset2In && maxEP));
|
||||
return deposit(
|
||||
account,
|
||||
std::nullopt,
|
||||
asset1In,
|
||||
asset2In,
|
||||
maxEP,
|
||||
flags,
|
||||
std::nullopt,
|
||||
std::nullopt,
|
||||
std::nullopt,
|
||||
ter);
|
||||
account, std::nullopt, asset1In, asset2In, maxEP, flags, std::nullopt, std::nullopt, std::nullopt, ter);
|
||||
}
|
||||
|
||||
IOUAmount
|
||||
@@ -527,16 +426,7 @@ AMM::withdraw(
|
||||
std::optional<std::uint32_t> const& flags,
|
||||
std::optional<ter> const& ter)
|
||||
{
|
||||
return withdraw(
|
||||
account,
|
||||
tokens,
|
||||
asset1Out,
|
||||
std::nullopt,
|
||||
std::nullopt,
|
||||
flags,
|
||||
std::nullopt,
|
||||
std::nullopt,
|
||||
ter);
|
||||
return withdraw(account, tokens, asset1Out, std::nullopt, std::nullopt, flags, std::nullopt, std::nullopt, ter);
|
||||
}
|
||||
|
||||
IOUAmount
|
||||
@@ -548,16 +438,7 @@ AMM::withdraw(
|
||||
std::optional<ter> const& ter)
|
||||
{
|
||||
assert(!(asset2Out && maxEP));
|
||||
return withdraw(
|
||||
account,
|
||||
std::nullopt,
|
||||
asset1Out,
|
||||
asset2Out,
|
||||
maxEP,
|
||||
std::nullopt,
|
||||
std::nullopt,
|
||||
std::nullopt,
|
||||
ter);
|
||||
return withdraw(account, std::nullopt, asset1Out, asset2Out, maxEP, std::nullopt, std::nullopt, std::nullopt, ter);
|
||||
}
|
||||
|
||||
IOUAmount
|
||||
@@ -608,15 +489,7 @@ IOUAmount
|
||||
AMM::withdraw(WithdrawArg const& arg)
|
||||
{
|
||||
return withdraw(
|
||||
arg.account,
|
||||
arg.tokens,
|
||||
arg.asset1Out,
|
||||
arg.asset2Out,
|
||||
arg.maxEP,
|
||||
arg.flags,
|
||||
arg.assets,
|
||||
arg.seq,
|
||||
arg.err);
|
||||
arg.account, arg.tokens, arg.asset1Out, arg.asset2Out, arg.maxEP, arg.flags, arg.assets, arg.seq, arg.err);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -649,16 +522,12 @@ AMM::vote(VoteArg const& arg)
|
||||
Json::Value
|
||||
AMM::bid(BidArg const& arg)
|
||||
{
|
||||
if (auto const amm =
|
||||
env_.current()->read(keylet::amm(asset1_.issue(), asset2_.issue())))
|
||||
if (auto const amm = env_.current()->read(keylet::amm(asset1_.issue(), asset2_.issue())))
|
||||
{
|
||||
assert(
|
||||
!env_.current()->rules().enabled(fixInnerObjTemplate) ||
|
||||
amm->isFieldPresent(sfAuctionSlot));
|
||||
assert(!env_.current()->rules().enabled(fixInnerObjTemplate) || amm->isFieldPresent(sfAuctionSlot));
|
||||
if (amm->isFieldPresent(sfAuctionSlot))
|
||||
{
|
||||
auto const& auctionSlot =
|
||||
static_cast<STObject const&>(amm->peekAtField(sfAuctionSlot));
|
||||
auto const& auctionSlot = static_cast<STObject const&>(amm->peekAtField(sfAuctionSlot));
|
||||
lastPurchasePrice_ = auctionSlot[sfPrice].iou();
|
||||
}
|
||||
}
|
||||
@@ -666,8 +535,7 @@ AMM::bid(BidArg const& arg)
|
||||
bidMax_ = std::nullopt;
|
||||
|
||||
Json::Value jv;
|
||||
jv[jss::Account] =
|
||||
arg.account ? arg.account->human() : creatorAccount_.human();
|
||||
jv[jss::Account] = arg.account ? arg.account->human() : creatorAccount_.human();
|
||||
setTokens(jv, arg.assets);
|
||||
auto getBid = [&](auto const& bid) {
|
||||
if (std::holds_alternative<int>(bid))
|
||||
@@ -711,10 +579,7 @@ AMM::bid(BidArg const& arg)
|
||||
}
|
||||
|
||||
void
|
||||
AMM::submit(
|
||||
Json::Value const& jv,
|
||||
std::optional<jtx::seq> const& seq,
|
||||
std::optional<ter> const& ter)
|
||||
AMM::submit(Json::Value const& jv, std::optional<jtx::seq> const& seq, std::optional<ter> const& ter)
|
||||
{
|
||||
if (log_)
|
||||
std::cout << jv.toStyledString();
|
||||
@@ -744,16 +609,12 @@ AMM::submit(
|
||||
bool
|
||||
AMM::expectAuctionSlot(auto&& cb) const
|
||||
{
|
||||
if (auto const amm =
|
||||
env_.current()->read(keylet::amm(asset1_.issue(), asset2_.issue())))
|
||||
if (auto const amm = env_.current()->read(keylet::amm(asset1_.issue(), asset2_.issue())))
|
||||
{
|
||||
assert(
|
||||
!env_.current()->rules().enabled(fixInnerObjTemplate) ||
|
||||
amm->isFieldPresent(sfAuctionSlot));
|
||||
assert(!env_.current()->rules().enabled(fixInnerObjTemplate) || amm->isFieldPresent(sfAuctionSlot));
|
||||
if (amm->isFieldPresent(sfAuctionSlot))
|
||||
{
|
||||
auto const& auctionSlot =
|
||||
static_cast<STObject const&>(amm->peekAtField(sfAuctionSlot));
|
||||
auto const& auctionSlot = static_cast<STObject const&>(amm->peekAtField(sfAuctionSlot));
|
||||
if (auctionSlot.isFieldPresent(sfAccount))
|
||||
{
|
||||
// This could fail in pre-fixInnerObjTemplate tests
|
||||
@@ -761,12 +622,10 @@ AMM::expectAuctionSlot(auto&& cb) const
|
||||
// the failure scenarios. Access as optional
|
||||
// to avoid the failure.
|
||||
auto const slotFee = auctionSlot[~sfDiscountedFee].value_or(0);
|
||||
auto const slotInterval = ammAuctionTimeSlot(
|
||||
env_.app().timeKeeper().now().time_since_epoch().count(),
|
||||
auctionSlot);
|
||||
auto const slotInterval =
|
||||
ammAuctionTimeSlot(env_.app().timeKeeper().now().time_since_epoch().count(), auctionSlot);
|
||||
auto const slotPrice = auctionSlot[sfPrice].iou();
|
||||
auto const authAccounts =
|
||||
auctionSlot.getFieldArray(sfAuthAccounts);
|
||||
auto const authAccounts = auctionSlot.getFieldArray(sfAuthAccounts);
|
||||
return cb(slotFee, slotInterval, slotPrice, authAccounts);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user