Cherry-pick XRPFees bugfix

This commit is contained in:
Alex Kremer
2024-03-20 16:34:39 +00:00
parent 8575f786a8
commit 26ed78fc05
18 changed files with 377 additions and 49 deletions

View File

@@ -94,7 +94,7 @@ CreateLedgerInfo(std::string_view ledgerHash, ripple::LedgerIndex seq, std::opti
}
ripple::STObject
CreateFeeSettingLedgerObject(
CreateLegacyFeeSettingLedgerObject(
uint64_t base,
uint32_t reserveInc,
uint32_t reserveBase,
@@ -112,10 +112,34 @@ CreateFeeSettingLedgerObject(
return obj;
}
ripple::Blob
CreateFeeSettingBlob(uint64_t base, uint32_t reserveInc, uint32_t reserveBase, uint32_t refFeeUnit, uint32_t flag)
ripple::STObject
CreateFeeSettingLedgerObject(
ripple::STAmount base,
ripple::STAmount reserveInc,
ripple::STAmount reserveBase,
uint32_t flag
)
{
auto lo = CreateFeeSettingLedgerObject(base, reserveInc, reserveBase, refFeeUnit, flag);
ripple::STObject obj(ripple::sfFee);
obj.setFieldU16(ripple::sfLedgerEntryType, ripple::ltFEE_SETTINGS);
obj.setFieldAmount(ripple::sfBaseFeeDrops, base);
obj.setFieldAmount(ripple::sfReserveBaseDrops, reserveBase);
obj.setFieldAmount(ripple::sfReserveIncrementDrops, reserveInc);
obj.setFieldU32(ripple::sfFlags, flag);
return obj;
}
ripple::Blob
CreateLegacyFeeSettingBlob(uint64_t base, uint32_t reserveInc, uint32_t reserveBase, uint32_t refFeeUnit, uint32_t flag)
{
auto lo = CreateLegacyFeeSettingLedgerObject(base, reserveInc, reserveBase, refFeeUnit, flag);
return lo.getSerializer().peekData();
}
ripple::Blob
CreateFeeSettingBlob(ripple::STAmount base, ripple::STAmount reserveInc, ripple::STAmount reserveBase, uint32_t flag)
{
auto lo = CreateFeeSettingLedgerObject(base, reserveInc, reserveBase, flag);
return lo.getSerializer().peekData();
}

View File

@@ -66,10 +66,33 @@ GetAccountKey(ripple::AccountID const& acc);
CreateLedgerInfo(std::string_view ledgerHash, ripple::LedgerIndex seq, std::optional<uint32_t> age = std::nullopt);
/*
* Create a FeeSetting ledger object
* Create a Legacy (pre XRPFees amendment) FeeSetting ledger object
*/
[[nodiscard]] ripple::STObject
CreateLegacyFeeSettingLedgerObject(
uint64_t base,
uint32_t reserveInc,
uint32_t reserveBase,
uint32_t refFeeUnit,
uint32_t flag
);
/*
* Create a FeeSetting ledger object
*/
ripple::STObject
CreateFeeSettingLedgerObject(
ripple::STAmount base,
ripple::STAmount reserveInc,
ripple::STAmount reserveBase,
uint32_t flag
);
/*
* Create a Legacy (pre XRPFees amendment) FeeSetting ledger object and return its blob
*/
[[nodiscard]] ripple::Blob
CreateLegacyFeeSettingBlob(
uint64_t base,
uint32_t reserveInc,
uint32_t reserveBase,
@@ -80,8 +103,8 @@ CreateFeeSettingLedgerObject(
/*
* Create a FeeSetting ledger object and return its blob
*/
[[nodiscard]] ripple::Blob
CreateFeeSettingBlob(uint64_t base, uint32_t reserveInc, uint32_t reserveBase, uint32_t refFeeUnit, uint32_t flag);
ripple::Blob
CreateFeeSettingBlob(ripple::STAmount base, ripple::STAmount reserveInc, ripple::STAmount reserveBase, uint32_t flag);
/*
* Create a payment transaction object