refactor: Use SeqProxy instead of uint32 for all sequence-based keylets (#7890)

Co-authored-by: xrplf-ai-reviewer[bot] <266832837+xrplf-ai-reviewer[bot]@users.noreply.github.com>
This commit is contained in:
Mayukha Vadari
2026-08-07 17:29:11 -04:00
committed by GitHub
parent 798e889ec4
commit 0fb92c3194
72 changed files with 1026 additions and 679 deletions

View File

@@ -51,6 +51,7 @@
#include <xrpl/protocol/Protocol.h>
#include <xrpl/protocol/SField.h>
#include <xrpl/protocol/STAmount.h>
#include <xrpl/protocol/SeqProxy.h>
#include <xrpl/protocol/SystemParameters.h>
#include <xrpl/protocol/TER.h>
#include <xrpl/protocol/TxFlags.h>
@@ -3125,7 +3126,7 @@ class Vault_test : public beast::unit_test::Suite
Vault const vault{env};
env.fund(XRP(1000), owner);
auto const keylet = keylet::vault(owner.id(), env.seq(owner));
auto const keylet = keylet::vault(owner.id(), SeqProxy::rawSequence(env.seq(owner)));
for (int i = 0; i < 256; ++i)
{
AccountID const accountId = xrpl::pseudoAccountAddress(*env.current(), keylet.key);
@@ -3947,7 +3948,8 @@ class Vault_test : public beast::unit_test::Suite
BEAST_EXPECT(env.balance(d.depositor, d.shares) == d.share(1000));
// Create a loan broker backed by this vault
auto const brokerKeylet = keylet::loanBroker(d.owner.id(), env.seq(d.owner));
auto const brokerKeylet =
keylet::loanBroker(d.owner.id(), SeqProxy::rawSequence(env.seq(d.owner)));
env(set(d.owner, d.keylet.key));
env.close();
@@ -4461,12 +4463,13 @@ class Vault_test : public beast::unit_test::Suite
env.close();
auto const& sharesAvailable = vaultShareBalance(vaultKeylet);
auto const& brokerKeylet = keylet::loanBroker(owner.id(), env.seq(owner));
auto const& brokerKeylet =
keylet::loanBroker(owner.id(), SeqProxy::rawSequence(env.seq(owner)));
env(set(owner, vaultKeylet.key));
env.close();
auto const& loanKeylet = keylet::loan(brokerKeylet.key, 1);
auto const& loanKeylet = keylet::loan(brokerKeylet.key, SeqProxy::rawSequence(1));
// Create a simple Loan for the full amount of Vault assets
env(set(depositor, brokerKeylet.key, asset(100).value()),
@@ -4854,7 +4857,8 @@ class Vault_test : public beast::unit_test::Suite
PrettyAsset const shares = MPTIssue(vaultSle->at(sfShareMPTID));
// Create a loan broker backed by this vault
auto const brokerKeylet = keylet::loanBroker(owner.id(), env.seq(owner));
auto const brokerKeylet =
keylet::loanBroker(owner.id(), SeqProxy::rawSequence(env.seq(owner)));
env(set(owner, vaultKeylet.key));
env.close();
@@ -4912,7 +4916,8 @@ class Vault_test : public beast::unit_test::Suite
PrettyAsset const shares = MPTIssue(vaultSle->at(sfShareMPTID));
// Create a loan broker backed by this vault
auto const brokerKeylet = keylet::loanBroker(owner.id(), env.seq(owner));
auto const brokerKeylet =
keylet::loanBroker(owner.id(), SeqProxy::rawSequence(env.seq(owner)));
env(set(owner, vaultKeylet.key));
env.close();
@@ -4967,7 +4972,8 @@ class Vault_test : public beast::unit_test::Suite
PrettyAsset const shares = MPTIssue(vaultSle->at(sfShareMPTID));
// Create a loan broker backed by this vault
auto const brokerKeylet = keylet::loanBroker(owner.id(), env.seq(owner));
auto const brokerKeylet =
keylet::loanBroker(owner.id(), SeqProxy::rawSequence(env.seq(owner)));
env(set(owner, vaultKeylet.key));
env.close();
@@ -5021,7 +5027,8 @@ class Vault_test : public beast::unit_test::Suite
return;
PrettyAsset const shares = MPTIssue(vaultSle->at(sfShareMPTID));
auto const brokerKeylet = keylet::loanBroker(owner.id(), env.seq(owner));
auto const brokerKeylet =
keylet::loanBroker(owner.id(), SeqProxy::rawSequence(env.seq(owner)));
env(set(owner, vaultKeylet.key));
env.close();
@@ -5069,7 +5076,8 @@ class Vault_test : public beast::unit_test::Suite
return;
PrettyAsset const shares = MPTIssue(vaultSle->at(sfShareMPTID));
auto const brokerKeylet = keylet::loanBroker(owner.id(), env.seq(owner));
auto const brokerKeylet =
keylet::loanBroker(owner.id(), SeqProxy::rawSequence(env.seq(owner)));
env(set(owner, vaultKeylet.key));
env.close();
@@ -5176,7 +5184,8 @@ class Vault_test : public beast::unit_test::Suite
PrettyAsset const shares = MPTIssue(vaultSle->at(sfShareMPTID));
// Create a loan broker backed by this vault
auto const brokerKeylet = keylet::loanBroker(owner.id(), env.seq(owner));
auto const brokerKeylet =
keylet::loanBroker(owner.id(), SeqProxy::rawSequence(env.seq(owner)));
env(set(owner, vaultKeylet.key));
env.close();
@@ -5310,7 +5319,7 @@ class Vault_test : public beast::unit_test::Suite
"invalidParamsField 'tx_json.AssetsMaximum' has invalid data.");
}
auto const newKeylet = keylet::vault(owner.id(), env.seq(owner));
auto const newKeylet = keylet::vault(owner.id(), SeqProxy::rawSequence(env.seq(owner)));
try
{
auto const insertAt = maxInt64Plus2.size() - 3;
@@ -5378,7 +5387,7 @@ class Vault_test : public beast::unit_test::Suite
"invalidParamsField 'tx_json.AssetsMaximum' has invalid data.");
}
auto const newKeylet = keylet::vault(owner.id(), env.seq(owner));
auto const newKeylet = keylet::vault(owner.id(), SeqProxy::rawSequence(env.seq(owner)));
try
{
auto const insertAt = maxInt64Plus2.size() - 1;
@@ -5450,7 +5459,8 @@ class Vault_test : public beast::unit_test::Suite
// These values will be rounded to 15 significant digits
{
auto const newKeylet = keylet::vault(owner.id(), env.seq(owner));
auto const newKeylet =
keylet::vault(owner.id(), SeqProxy::rawSequence(env.seq(owner)));
try
{
auto const insertAt = maxInt64Plus2.size() - 1;
@@ -5474,7 +5484,8 @@ class Vault_test : public beast::unit_test::Suite
}
{
tx[sfAssetsMaximum] = "9223372036854775807e40"; // max int64 * 10^40
auto const newKeylet = keylet::vault(owner.id(), env.seq(owner));
auto const newKeylet =
keylet::vault(owner.id(), SeqProxy::rawSequence(env.seq(owner)));
env(tx);
env.close();
@@ -5488,7 +5499,8 @@ class Vault_test : public beast::unit_test::Suite
}
{
tx[sfAssetsMaximum] = "9223372036854775807e-40"; // max int64 * 10^-40
auto const newKeylet = keylet::vault(owner.id(), env.seq(owner));
auto const newKeylet =
keylet::vault(owner.id(), SeqProxy::rawSequence(env.seq(owner)));
env(tx);
env.close();
@@ -5502,7 +5514,8 @@ class Vault_test : public beast::unit_test::Suite
}
{
tx[sfAssetsMaximum] = "9223372036854775807e-100"; // max int64 * 10^-100
auto const newKeylet = keylet::vault(owner.id(), env.seq(owner));
auto const newKeylet =
keylet::vault(owner.id(), SeqProxy::rawSequence(env.seq(owner)));
env(tx);
env.close();
@@ -6088,7 +6101,8 @@ class Vault_test : public beast::unit_test::Suite
env.close();
// Loan broker: no cover, no management fee, debt cap 10x principal.
f.brokerID = keylet::loanBroker(f.lender.id(), env.seq(f.lender)).key;
f.brokerID =
keylet::loanBroker(f.lender.id(), SeqProxy::rawSequence(env.seq(f.lender))).key;
{
using namespace loan_broker;
env(set(f.lender, vaultKeylet.key),
@@ -6100,7 +6114,8 @@ class Vault_test : public beast::unit_test::Suite
auto const sleBroker = env.le(keylet::loanBroker(f.brokerID));
if (!BEAST_EXPECT(sleBroker))
return f;
f.loanKeylet = keylet::loan(f.brokerID, sleBroker->at(sfLoanSequence));
f.loanKeylet =
keylet::loan(f.brokerID, SeqProxy::rawSequence(sleBroker->at(sfLoanSequence)));
{
using namespace loan;
@@ -7587,7 +7602,7 @@ class Vault_test : public beast::unit_test::Suite
Vault const vault{env};
auto const keylet = keylet::vault(owner.id(), 1);
auto const keylet = keylet::vault(owner.id(), SeqProxy::rawSequence(1));
auto delTx = vault.del({.owner = owner, .id = keylet.key});
// Test VaultDelete with featureLendingProtocolV1_1 disabled
@@ -7619,7 +7634,7 @@ class Vault_test : public beast::unit_test::Suite
{
testcase("VaultDelete memo data featureLendingProtocolV1_1 enabled no vault");
auto const keylet = keylet::vault(owner.id(), env.seq(owner));
auto const keylet = keylet::vault(owner.id(), SeqProxy::rawSequence(env.seq(owner)));
// Recreate the transaction as the vault keylet changed
auto delTx = vault.del({.owner = owner, .id = keylet.key});