#ifndef XRPL_PROTOCOL_FEES_H_INCLUDED #define XRPL_PROTOCOL_FEES_H_INCLUDED #include namespace ripple { constexpr std::uint32_t MICRO_DROPS_PER_DROP{1'000'000}; /** 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) std::uint32_t extensionComputeLimit{ 0}; // Extension compute limit (instructions) std::uint32_t extensionSizeLimit{0}; // Extension size limit (bytes) std::uint32_t gasPrice{0}; // price of WASM gas (micro-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) const { return reserve + ownerCount * increment; } }; } // namespace ripple #endif