diff --git a/include/xrpl/ledger/SponsorHelpers.h b/include/xrpl/ledger/SponsorHelpers.h new file mode 100644 index 0000000000..500f25c654 --- /dev/null +++ b/include/xrpl/ledger/SponsorHelpers.h @@ -0,0 +1,77 @@ +#pragma once + +#include +#include +#include +#include +#include +#include + +namespace xrpl { + +bool +isReserveSponsored(STTx const& tx); + +bool +isSponsorReserveCoSigning(STTx const& tx); + +std::optional +getTxReserveSponsorAccountID(STTx const& tx); + +inline std::shared_ptr +getTxReserveSponsor(ApplyView& view, STTx const& tx) +{ + auto const sponsorID = getTxReserveSponsorAccountID(tx); + if (sponsorID) + return view.peek(keylet::account(*sponsorID)); + return {}; +} + +inline std::shared_ptr +getTxReserveSponsor(ReadView const& view, STTx const& tx) +{ + auto const sponsorID = getTxReserveSponsorAccountID(tx); + if (sponsorID) + return view.read(keylet::account(*sponsorID)); + return {}; +} + +std::optional +getLedgerEntryReserveSponsorAccountID( + std::shared_ptr const& sle, + SF_ACCOUNT const& field = sfSponsor); + +inline std::shared_ptr +getLedgerEntryReserveSponsor( + ApplyView& view, + std::shared_ptr const& sle, + SF_ACCOUNT const& field = sfSponsor) +{ + auto const sponsorID = getLedgerEntryReserveSponsorAccountID(sle, field); + if (sponsorID) + return view.peek(keylet::account(*sponsorID)); + return {}; +} + +inline std::shared_ptr +getLedgerEntryReserveSponsor( + ReadView const& view, + std::shared_ptr const& sle, + SF_ACCOUNT const& field = sfSponsor) +{ + auto const sponsorID = getLedgerEntryReserveSponsorAccountID(sle, field); + if (sponsorID) + return view.read(keylet::account(*sponsorID)); + return {}; +} + +void +addSponsorToLedgerEntry( + std::shared_ptr const& sle, + std::shared_ptr const& sponsorSle, + SF_ACCOUNT const& field = sfSponsor); + +void +removeSponsorFromLedgerEntry(std::shared_ptr const& sle, SF_ACCOUNT const& field = sfSponsor); + +} // namespace xrpl diff --git a/include/xrpl/ledger/View.h b/include/xrpl/ledger/View.h index 1aa5639d72..f925b97b75 100644 --- a/include/xrpl/ledger/View.h +++ b/include/xrpl/ledger/View.h @@ -474,11 +474,11 @@ ownerCount(std::shared_ptr const& sponsorSle); XRPAmount calculateReserve(std::shared_ptr const& sle, Fees const& fees); -bool -isReserveSponsored(STTx const& tx); +// bool +// isReserveSponsored(STTx const& tx); -bool -isSponsorReserveCoSigning(STTx const& tx); +// bool +// isSponsorReserveCoSigning(STTx const& tx); TER checkInsufficientReserve( @@ -490,41 +490,6 @@ checkInsufficientReserve( std::int32_t ownerCountDelta, std::int32_t accountCountDelta = 0); -std::optional -getTxReserveSponsorAccountID(STTx const& tx); - -std::shared_ptr -getTxReserveSponsor(ApplyView& view, STTx const& tx); - -std::shared_ptr -getTxReserveSponsor(ReadView const& view, STTx const& tx); - -std::optional -getLedgerEntryReserveSponsorAccountID( - std::shared_ptr const& sle, - SF_ACCOUNT const& field = sfSponsor); - -std::shared_ptr -getLedgerEntryReserveSponsor( - ApplyView& view, - std::shared_ptr const& sle, - SF_ACCOUNT const& field = sfSponsor); - -std::shared_ptr -getLedgerEntryReserveSponsor( - ReadView const& view, - std::shared_ptr const& sle, - SF_ACCOUNT const& field = sfSponsor); - -void -addSponsorToLedgerEntry( - std::shared_ptr const& sle, - std::shared_ptr const& sponsorSle, - SF_ACCOUNT const& field = sfSponsor); - -void -removeSponsorFromLedgerEntry(std::shared_ptr const& sle, SF_ACCOUNT const& field = sfSponsor); - //------------------------------------------------------------------------------ // // Modifiers diff --git a/include/xrpl/tx/Transactor.h b/include/xrpl/tx/Transactor.h index 79b24f4ff6..cd859a16f1 100644 --- a/include/xrpl/tx/Transactor.h +++ b/include/xrpl/tx/Transactor.h @@ -2,6 +2,7 @@ #include #include +#include #include #include #include diff --git a/src/libxrpl/ledger/CredentialHelpers.cpp b/src/libxrpl/ledger/CredentialHelpers.cpp index 86ac051b1b..04a8a19123 100644 --- a/src/libxrpl/ledger/CredentialHelpers.cpp +++ b/src/libxrpl/ledger/CredentialHelpers.cpp @@ -1,4 +1,5 @@ #include +#include #include #include #include diff --git a/src/libxrpl/ledger/SponsorHelpers.cpp b/src/libxrpl/ledger/SponsorHelpers.cpp new file mode 100644 index 0000000000..d86b7bfe3c --- /dev/null +++ b/src/libxrpl/ledger/SponsorHelpers.cpp @@ -0,0 +1,65 @@ +#include +#include + +namespace xrpl { + +bool +isReserveSponsored(STTx const& tx) +{ + return tx.getFieldU32(sfSponsorFlags) & spfSponsorReserve; +} + +bool +isSponsorReserveCoSigning(STTx const& tx) +{ + if (!tx.isFieldPresent(sfSponsorSignature)) + return false; + return isReserveSponsored(tx); +} + +std::optional +getTxReserveSponsorAccountID(STTx const& tx) +{ + if (tx.isFieldPresent(sfSponsor) && isReserveSponsored(tx)) + { + return tx.getAccountID(sfSponsor); + } + return {}; +} + +std::optional +getLedgerEntryReserveSponsorAccountID( + std::shared_ptr const& sle, + SF_ACCOUNT const& field) +{ + if (sle->isFieldPresent(field)) + return sle->getAccountID(field); + return {}; +} + +void +addSponsorToLedgerEntry( + std::shared_ptr const& sle, + std::shared_ptr const& sponsorSle, + SF_ACCOUNT const& field) +{ + XRPL_ASSERT( + (sle->getType() == ltRIPPLE_STATE && (field == sfHighSponsor || field == sfLowSponsor)) || + (sle->getType() != ltRIPPLE_STATE && field == sfSponsor), + "addSponsorToLedgerEntry : Invalid field to the LedgerEntry"); + if (sponsorSle) + sle->setAccountID(field, sponsorSle->getAccountID(sfAccount)); +} + +void +removeSponsorFromLedgerEntry(std::shared_ptr const& sle, SF_ACCOUNT const& field) +{ + XRPL_ASSERT( + (sle->getType() == ltRIPPLE_STATE && (field == sfHighSponsor || field == sfLowSponsor)) || + (sle->getType() != ltRIPPLE_STATE && field == sfSponsor), + "removeSponsorFromLedgerEntry : Invalid field to the LedgerEntry"); + if (sle->isFieldPresent(field)) + sle->makeFieldAbsent(field); +} + +} // namespace xrpl diff --git a/src/libxrpl/ledger/View.cpp b/src/libxrpl/ledger/View.cpp index 085ffe4322..cdb048d0bf 100644 --- a/src/libxrpl/ledger/View.cpp +++ b/src/libxrpl/ledger/View.cpp @@ -5,6 +5,7 @@ #include #include #include +#include #include #include #include @@ -1040,20 +1041,6 @@ calculateReserve(std::shared_ptr const& sle, Fees const& fees) sle->getFieldU32(sfSponsoringAccountCount)); } -bool -isReserveSponsored(STTx const& tx) -{ - return tx.getFieldU32(sfSponsorFlags) & spfSponsorReserve; -} - -bool -isSponsorReserveCoSigning(STTx const& tx) -{ - if (!tx.isFieldPresent(sfSponsorSignature)) - return false; - return isReserveSponsored(tx); -} - TER checkInsufficientReserve( ReadView const& view, @@ -1118,93 +1105,6 @@ checkInsufficientReserve( return tesSUCCESS; } -std::optional -getTxReserveSponsorAccountID(STTx const& tx) -{ - if (tx.isFieldPresent(sfSponsor) && isReserveSponsored(tx)) - { - return tx.getAccountID(sfSponsor); - } - return {}; -} - -std::shared_ptr -getTxReserveSponsor(ApplyView& view, STTx const& tx) -{ - auto const sponsorID = getTxReserveSponsorAccountID(tx); - if (sponsorID) - return view.peek(keylet::account(*sponsorID)); - return {}; -} - -std::shared_ptr -getTxReserveSponsor(ReadView const& view, STTx const& tx) -{ - auto const sponsorID = getTxReserveSponsorAccountID(tx); - if (sponsorID) - return view.read(keylet::account(*sponsorID)); - return {}; -} - -std::optional -getLedgerEntryReserveSponsorAccountID( - std::shared_ptr const& sle, - SF_ACCOUNT const& field) -{ - if (sle->isFieldPresent(field)) - return sle->getAccountID(field); - return {}; -} - -std::shared_ptr -getLedgerEntryReserveSponsor( - ApplyView& view, - std::shared_ptr const& sle, - SF_ACCOUNT const& field) -{ - auto const sponsorID = getLedgerEntryReserveSponsorAccountID(sle, field); - if (sponsorID) - return view.peek(keylet::account(*sponsorID)); - return {}; -} - -std::shared_ptr -getLedgerEntryReserveSponsor( - ReadView const& view, - std::shared_ptr const& sle, - SF_ACCOUNT const& field) -{ - auto const sponsorID = getLedgerEntryReserveSponsorAccountID(sle, field); - if (sponsorID) - return view.read(keylet::account(*sponsorID)); - return {}; -} - -void -addSponsorToLedgerEntry( - std::shared_ptr const& sle, - std::shared_ptr const& sponsorSle, - SF_ACCOUNT const& field) -{ - XRPL_ASSERT( - (sle->getType() == ltRIPPLE_STATE && (field == sfHighSponsor || field == sfLowSponsor)) || - (sle->getType() != ltRIPPLE_STATE && field == sfSponsor), - "addSponsorToLedgerEntry : Invalid field to the LedgerEntry"); - if (sponsorSle) - sle->setAccountID(field, sponsorSle->getAccountID(sfAccount)); -} - -void -removeSponsorFromLedgerEntry(std::shared_ptr const& sle, SF_ACCOUNT const& field) -{ - XRPL_ASSERT( - (sle->getType() == ltRIPPLE_STATE && (field == sfHighSponsor || field == sfLowSponsor)) || - (sle->getType() != ltRIPPLE_STATE && field == sfSponsor), - "removeSponsorFromLedgerEntry : Invalid field to the LedgerEntry"); - if (sle->isFieldPresent(field)) - sle->makeFieldAbsent(field); -} - //------------------------------------------------------------------------------ // // Modifiers diff --git a/src/libxrpl/tx/transactors/Sponsor/SponsorshipSet.h b/src/libxrpl/tx/transactors/Sponsor/SponsorshipSet.h deleted file mode 100644 index d1cf244f8b..0000000000 --- a/src/libxrpl/tx/transactors/Sponsor/SponsorshipSet.h +++ /dev/null @@ -1,36 +0,0 @@ -#pragma once - -#include - -namespace xrpl { - -class SponsorshipSet : public Transactor -{ -public: - static constexpr ConsequencesFactoryType ConsequencesFactory{Normal}; - - explicit SponsorshipSet(ApplyContext& ctx) : Transactor(ctx) - { - } - - static std::uint32_t - getFlagsMask(PreflightContext const& ctx); - - static NotTEC - preflight(PreflightContext const& ctx); - - static NotTEC - checkPermission(ReadView const& view, STTx const& tx); - - static TER - preclaim(PreclaimContext const& ctx); - - TER - doApply() override; - - // Interface used by DeleteAccount - static TER - deleteSponsorship(ApplyView& view, std::shared_ptr const& sle, beast::Journal j); -}; - -} // namespace xrpl diff --git a/src/libxrpl/tx/transactors/Sponsor/SponsorshipTransfer.h b/src/libxrpl/tx/transactors/Sponsor/SponsorshipTransfer.h deleted file mode 100644 index 2b356556dd..0000000000 --- a/src/libxrpl/tx/transactors/Sponsor/SponsorshipTransfer.h +++ /dev/null @@ -1,26 +0,0 @@ -#pragma once - -#include - -namespace xrpl { - -class SponsorshipTransfer : public Transactor -{ -public: - static constexpr ConsequencesFactoryType ConsequencesFactory{Normal}; - - explicit SponsorshipTransfer(ApplyContext& ctx) : Transactor(ctx) - { - } - - static NotTEC - preflight(PreflightContext const& ctx); - - static TER - preclaim(PreclaimContext const& ctx); - - TER - doApply() override; -}; - -} // namespace xrpl diff --git a/src/libxrpl/tx/transactors/payment_channel/PayChanHelpers.cpp b/src/libxrpl/tx/transactors/payment_channel/PayChanHelpers.cpp index 70a53b4732..4301702b01 100644 --- a/src/libxrpl/tx/transactors/payment_channel/PayChanHelpers.cpp +++ b/src/libxrpl/tx/transactors/payment_channel/PayChanHelpers.cpp @@ -1,4 +1,5 @@ #include +#include #include #include