add account index/counter and continue with xahaugenesis test cases

This commit is contained in:
Richard Holland
2023-08-17 14:28:34 +00:00
parent 0f83256ffa
commit d4a6854835
6 changed files with 101 additions and 11 deletions

View File

@@ -1169,10 +1169,11 @@ Import::doApply()
// get xahau genesis start ledger, or just assume the current ledger is the start seq if it's not set.
uint32_t curLgrSeq = view().info().seq;
uint32_t startLgrSeq = curLgrSeq;
auto sleFees = view().read(keylet::fees());
auto sleFees = view().peek(keylet::fees());
if (sleFees && sleFees->isFieldPresent(sfXahauActivationLgrSeq))
startLgrSeq = sleFees->getFieldU32(sfXahauActivationLgrSeq);
uint32_t elapsed = curLgrSeq - startLgrSeq;
bool const create = !sle;
@@ -1234,6 +1235,12 @@ Import::doApply()
sle->setFieldU32(sfSequence, seqno);
sle->setFieldU32(sfOwnerCount, 0);
if (sleFees)
{
uint64_t accIdx = sleFees->isFieldPresent(sfAccountCount) ? sleFees->getFieldU64(sfAccountCount) : 0;
sle->setFieldU64(sfAccountIndex, accIdx);
sleFees->setFieldU64(sfAccountCount, accIdx + 1);
}
if (ctx_.tx.getSigningPubKey().empty() ||
calcAccountID(PublicKey(makeSlice(ctx_.tx.getSigningPubKey()))) != id)
@@ -1249,7 +1256,11 @@ Import::doApply()
sle->setFieldAmount(sfBalance, finalBal);
if (create)
{
view().insert(sle);
if (sleFees)
view().update(sleFees);
}
else
view().update(sle);