mirror of
https://github.com/XRPLF/rippled.git
synced 2026-08-22 14:50:54 +00:00
Fix clang, minor refactor of createPseudoAccount
This commit is contained in:
@@ -348,7 +348,7 @@ class Vault_test : public beast::unit_test::suite
|
||||
Account issuer{"issuer"};
|
||||
Account owner{"owner"};
|
||||
Account depositor{"depositor"};
|
||||
Vault vault(env);
|
||||
Vault vault{env};
|
||||
env.fund(XRP(1000), issuer, owner, depositor);
|
||||
env.close();
|
||||
env(fset(issuer, asfAllowTrustLineClawback));
|
||||
@@ -413,7 +413,7 @@ class Vault_test : public beast::unit_test::suite
|
||||
Account depositor{"depositor"};
|
||||
env.fund(XRP(1000), issuer, owner, depositor);
|
||||
env.close();
|
||||
Vault vault(env);
|
||||
Vault vault{env};
|
||||
Asset asset = xrpIssue();
|
||||
|
||||
test(env, issuer, owner, depositor, asset, vault);
|
||||
@@ -635,7 +635,7 @@ class Vault_test : public beast::unit_test::suite
|
||||
Account depositor{"depositor"};
|
||||
env.fund(XRP(1000), issuer, owner, depositor);
|
||||
env.close();
|
||||
Vault vault(env);
|
||||
Vault vault{env};
|
||||
Asset asset = issuer["IOU"];
|
||||
|
||||
auto [tx, keylet] = vault.create({.owner = owner, .asset = asset});
|
||||
@@ -656,7 +656,7 @@ class Vault_test : public beast::unit_test::suite
|
||||
Account depositor{"depositor"};
|
||||
env.fund(XRP(1000), issuer, owner, depositor);
|
||||
env.close();
|
||||
Vault vault(env);
|
||||
Vault vault{env};
|
||||
|
||||
MPTTester mptt{env, issuer, mptInitNoFund};
|
||||
|
||||
@@ -678,7 +678,7 @@ class Vault_test : public beast::unit_test::suite
|
||||
env.fund(XRP(1000), issuer, owner, depositor);
|
||||
env.close();
|
||||
|
||||
Vault vault(env);
|
||||
Vault vault{env};
|
||||
PrettyAsset asset = issuer["IOU"];
|
||||
env.trust(asset(1000), owner);
|
||||
env(pay(issuer, owner, asset(100)));
|
||||
@@ -801,7 +801,7 @@ class Vault_test : public beast::unit_test::suite
|
||||
Account depositor{"depositor"};
|
||||
env.fund(XRP(1000), issuer, owner, depositor);
|
||||
env.close();
|
||||
Vault vault(env);
|
||||
Vault vault{env};
|
||||
|
||||
MPTTester mptt{env, issuer, mptInitNoFund};
|
||||
mptt.create({.flags = tfMPTCanTransfer | tfMPTCanLock});
|
||||
@@ -888,7 +888,7 @@ class Vault_test : public beast::unit_test::suite
|
||||
Account credIssuer1{"credIssuer1"};
|
||||
Account credIssuer2{"credIssuer2"};
|
||||
std::string const credType = "credential";
|
||||
Vault vault(env);
|
||||
Vault vault{env};
|
||||
env.fund(
|
||||
XRP(1000),
|
||||
issuer,
|
||||
@@ -1063,7 +1063,7 @@ class Vault_test : public beast::unit_test::suite
|
||||
Account const owner{"owner"};
|
||||
Account const issuer{"issuer"};
|
||||
Account const charlie{"charlie"};
|
||||
Vault vault(env);
|
||||
Vault vault{env};
|
||||
env.fund(XRP(1000), issuer, owner, charlie);
|
||||
env.close();
|
||||
|
||||
@@ -1113,12 +1113,13 @@ class Vault_test : public beast::unit_test::suite
|
||||
BEAST_EXPECT(
|
||||
keylet::vault(ownerAccount, env.seq(owner) - 1).key == keylet.key);
|
||||
|
||||
auto const vaultBalance = [&]() -> PrettyAmount {
|
||||
auto const sle = env.le(keylet::line(vaultAccount, issue));
|
||||
auto const vaultBalance = //
|
||||
[&, account = vaultAccount]() -> PrettyAmount {
|
||||
auto const sle = env.le(keylet::line(account, issue));
|
||||
BEAST_EXPECT(sle != nullptr);
|
||||
auto amount = sle->getFieldAmount(sfBalance);
|
||||
amount.setIssuer(issue.account);
|
||||
if (vaultAccount > issue.account)
|
||||
if (account > issue.account)
|
||||
amount.negate();
|
||||
return {amount, env.lookup(issue.account).name()};
|
||||
};
|
||||
|
||||
@@ -659,7 +659,7 @@ requireAuth(
|
||||
/** Enforce account has MPToken to match its authorization.
|
||||
*
|
||||
* Called from doApply - it will check for expired (and delete if found any)
|
||||
* credentials maching DomainID set in MPTIssuance. Must be called if
|
||||
* credentials matching DomainID set in MPTIssuance. Must be called if
|
||||
* requireAuth(...MPTIssue...) returned tesSUCCESS or tecEXPIRED in preclaim.
|
||||
* Will create MPToken (if needed) on the basis of any non-expired credentals
|
||||
* and delete any expried credentials (indirectly via verifyValidDomain)
|
||||
|
||||
@@ -1043,18 +1043,25 @@ createPseudoAccount(
|
||||
uint256 const& pseudoOwnerKey,
|
||||
PseudoAccountOwnerType type)
|
||||
{
|
||||
AccountID accountId;
|
||||
for (auto i = 0;; ++i)
|
||||
{
|
||||
if (i >= 256)
|
||||
return Unexpected(tecDUPLICATE);
|
||||
ripesha_hasher rsh;
|
||||
auto const hash = sha512Half(i, view.info().parentHash, pseudoOwnerKey);
|
||||
rsh(hash.data(), hash.size());
|
||||
accountId = static_cast<ripesha_hasher::result_type>(rsh);
|
||||
if (!view.read(keylet::account(accountId)))
|
||||
break;
|
||||
}
|
||||
auto const accountId = [&]() -> AccountID {
|
||||
AccountID ret = beast::zero;
|
||||
// This number must not be changed without an amendment
|
||||
constexpr int maxAccountAttempts = 256;
|
||||
for (auto i = 0; i < maxAccountAttempts; ++i)
|
||||
{
|
||||
ripesha_hasher rsh;
|
||||
auto const hash =
|
||||
sha512Half(i, view.info().parentHash, pseudoOwnerKey);
|
||||
rsh(hash.data(), hash.size());
|
||||
ret = static_cast<ripesha_hasher::result_type>(rsh);
|
||||
if (!view.read(keylet::account(ret)))
|
||||
return ret;
|
||||
}
|
||||
return ret;
|
||||
}();
|
||||
|
||||
if (accountId == beast::zero)
|
||||
return Unexpected(tecDUPLICATE);
|
||||
|
||||
// Create pseudo-account.
|
||||
auto account = std::make_shared<SLE>(keylet::account(accountId));
|
||||
|
||||
Reference in New Issue
Block a user