Files
rippled/include/xrpl/protocol/Fees.h
2026-01-15 14:51:05 +09:00

51 lines
1.4 KiB
C++

#ifndef XRPL_PROTOCOL_FEES_H_INCLUDED
#define XRPL_PROTOCOL_FEES_H_INCLUDED
#include <xrpl/protocol/XRPAmount.h>
namespace xrpl {
/** Reflects the fee settings for a particular ledger.
The fees are always the same for any transactions applied
to a ledger. Changes to fees occur in between ledgers.
*/
struct Fees
{
XRPAmount base{0}; // Reference tx cost (drops)
XRPAmount reserve{0}; // Reserve base (drops)
XRPAmount increment{0}; // Reserve increment (drops)
explicit Fees() = default;
Fees(Fees const&) = default;
Fees&
operator=(Fees const&) = default;
/** Returns the account reserve given the owner count, in drops.
The reserve is calculated as the reserve base plus
the reserve increment times the number of increments.
*/
XRPAmount
accountReserve(
std::size_t ownerCount,
std::size_t sponsoredOwnerCount = 0,
std::size_t sponsoringOwnerCount = 0,
bool isAccountSponsored = false,
std::size_t sponsoringAccountCount = 0) const
{
auto const accountReserveUnits =
(isAccountSponsored ? 0 : 1) + sponsoringAccountCount;
auto const ownerReserveUnits =
(ownerCount - sponsoredOwnerCount) + sponsoringOwnerCount;
return (reserve * accountReserveUnits) +
(increment * ownerReserveUnits);
}
};
} // namespace xrpl
#endif