Skip to content

Commit e4dccfd

Browse files
refactor: Retire DisallowIncoming amendment (#6045)
Amendments activated for more than 2 years can be retired. This change retires the DisallowIncoming amendment.
1 parent 57f4b4e commit e4dccfd

File tree

12 files changed

+71
-168
lines changed

12 files changed

+71
-168
lines changed

include/xrpl/protocol/detail/features.macro

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,6 @@ XRPL_FEATURE(AMM, Supported::yes, VoteBehavior::DefaultNo
6363
XRPL_FEATURE(Clawback, Supported::yes, VoteBehavior::DefaultNo)
6464
XRPL_FIX (UniversalNumber, Supported::yes, VoteBehavior::DefaultNo)
6565
XRPL_FEATURE(XRPFees, Supported::yes, VoteBehavior::DefaultNo)
66-
XRPL_FEATURE(DisallowIncoming, Supported::yes, VoteBehavior::DefaultNo)
6766
XRPL_FIX (RemoveNFTokenAutoTrustLine, Supported::yes, VoteBehavior::DefaultYes)
6867
XRPL_FEATURE(FlowSortStrands, Supported::yes, VoteBehavior::DefaultYes)
6968
XRPL_FEATURE(RequireFullyCanonicalSig, Supported::yes, VoteBehavior::DefaultYes)
@@ -120,6 +119,7 @@ XRPL_RETIRE_FEATURE(CheckCashMakesTrustLine)
120119
XRPL_RETIRE_FEATURE(CryptoConditions)
121120
XRPL_RETIRE_FEATURE(DepositAuth)
122121
XRPL_RETIRE_FEATURE(DepositPreauth)
122+
XRPL_RETIRE_FEATURE(DisallowIncoming)
123123
XRPL_RETIRE_FEATURE(Escrow)
124124
XRPL_RETIRE_FEATURE(EnforceInvariants)
125125
XRPL_RETIRE_FEATURE(ExpandedSignerList)

src/test/app/Check_test.cpp

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,6 @@ class dest_tag
6767

6868
class Check_test : public beast::unit_test::suite
6969
{
70-
FeatureBitset const disallowIncoming{featureDisallowIncoming};
71-
7270
static uint256
7371
getCheckIndex(AccountID const& account, std::uint32_t uSequence)
7472
{
@@ -258,24 +256,12 @@ class Check_test : public beast::unit_test::suite
258256

259257
using namespace test::jtx;
260258

261-
// test flag doesn't set unless amendment enabled
262-
{
263-
Env env{*this, features - disallowIncoming};
264-
Account const alice{"alice"};
265-
env.fund(XRP(10000), alice);
266-
env(fset(alice, asfDisallowIncomingCheck));
267-
env.close();
268-
auto const sle = env.le(alice);
269-
uint32_t flags = sle->getFlags();
270-
BEAST_EXPECT(!(flags & lsfDisallowIncomingCheck));
271-
}
272-
273259
Account const gw{"gateway"};
274260
Account const alice{"alice"};
275261
Account const bob{"bob"};
276262
IOU const USD{gw["USD"]};
277263

278-
Env env{*this, features | disallowIncoming};
264+
Env env{*this, features};
279265

280266
STAmount const startBalance{XRP(1000).value()};
281267
env.fund(startBalance, gw, alice, bob);
@@ -2594,7 +2580,6 @@ class Check_test : public beast::unit_test::suite
25942580
{
25952581
using namespace test::jtx;
25962582
auto const sa = testable_amendments();
2597-
testWithFeats(sa - disallowIncoming);
25982583
testWithFeats(sa);
25992584
testTrustLineCreation(sa);
26002585
}

src/test/app/NFToken_test.cpp

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@ namespace ripple {
1212

1313
class NFTokenBaseUtil_test : public beast::unit_test::suite
1414
{
15-
FeatureBitset const disallowIncoming{featureDisallowIncoming};
16-
1715
// Helper function that returns the number of NFTs minted by an issuer.
1816
static std::uint32_t
1917
mintedCount(test::jtx::Env const& env, test::jtx::Account const& issuer)
@@ -2960,19 +2958,7 @@ class NFTokenBaseUtil_test : public beast::unit_test::suite
29602958

29612959
using namespace test::jtx;
29622960

2963-
// test flag doesn't set unless amendment enabled
2964-
{
2965-
Env env{*this, features - disallowIncoming};
2966-
Account const alice{"alice"};
2967-
env.fund(XRP(10000), alice);
2968-
env(fset(alice, asfDisallowIncomingNFTokenOffer));
2969-
env.close();
2970-
auto const sle = env.le(alice);
2971-
uint32_t flags = sle->getFlags();
2972-
BEAST_EXPECT(!(flags & lsfDisallowIncomingNFTokenOffer));
2973-
}
2974-
2975-
Env env{*this, features | disallowIncoming};
2961+
Env env{*this, features};
29762962

29772963
Account const issuer{"issuer"};
29782964
Account const minter{"minter"};
@@ -7624,8 +7610,8 @@ class NFTokenDisallowIncoming_test : public NFTokenBaseUtil_test
76247610
run() override
76257611
{
76267612
testWithFeats(
7627-
allFeatures - featureDisallowIncoming - fixNFTokenReserve -
7628-
featureNFTokenMintOffer - featureDynamicNFT);
7613+
allFeatures - fixNFTokenReserve - featureNFTokenMintOffer -
7614+
featureDynamicNFT);
76297615
}
76307616
};
76317617

src/test/app/PayChan_test.cpp

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@ using namespace jtx::paychan;
1414

1515
struct PayChan_test : public beast::unit_test::suite
1616
{
17-
FeatureBitset const disallowIncoming{featureDisallowIncoming};
18-
1917
static std::pair<uint256, std::shared_ptr<SLE const>>
2018
channelKeyAndSle(
2119
ReadView const& view,
@@ -242,20 +240,8 @@ struct PayChan_test : public beast::unit_test::suite
242240
testcase("Disallow Incoming Flag");
243241
using namespace jtx;
244242

245-
// test flag doesn't set unless amendment enabled
246-
{
247-
Env env{*this, features - disallowIncoming};
248-
Account const alice{"alice"};
249-
env.fund(XRP(10000), alice);
250-
env(fset(alice, asfDisallowIncomingPayChan));
251-
env.close();
252-
auto const sle = env.le(alice);
253-
uint32_t flags = sle->getFlags();
254-
BEAST_EXPECT(!(flags & lsfDisallowIncomingPayChan));
255-
}
256-
257243
using namespace std::literals::chrono_literals;
258-
Env env{*this, features | disallowIncoming};
244+
Env env{*this, features};
259245
auto const alice = Account("alice");
260246
auto const bob = Account("bob");
261247
auto const cho = Account("cho");
@@ -2127,7 +2113,6 @@ struct PayChan_test : public beast::unit_test::suite
21272113
{
21282114
using namespace test::jtx;
21292115
FeatureBitset const all{testable_amendments()};
2130-
testWithFeats(all - disallowIncoming);
21312116
testWithFeats(all);
21322117
testDepositAuthCreds();
21332118
testMetaAndOwnership(all - fixIncludeKeyletFields);

src/test/app/SetTrust_test.cpp

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@ namespace test {
99

1010
class SetTrust_test : public beast::unit_test::suite
1111
{
12-
FeatureBitset const disallowIncoming{featureDisallowIncoming};
13-
1412
public:
1513
void
1614
testTrustLineDelete()
@@ -478,25 +476,12 @@ class SetTrust_test : public beast::unit_test::suite
478476

479477
using namespace test::jtx;
480478

481-
// test flag doesn't set unless amendment enabled
482-
{
483-
Env env{*this, features - disallowIncoming};
484-
Account const alice{"alice"};
485-
env.fund(XRP(10000), alice);
486-
env(fset(alice, asfDisallowIncomingTrustline));
487-
env.close();
488-
auto const sle = env.le(alice);
489-
uint32_t flags = sle->getFlags();
490-
BEAST_EXPECT(!(flags & lsfDisallowIncomingTrustline));
491-
}
492-
493479
// fixDisallowIncomingV1
494480
{
495481
for (bool const withFix : {true, false})
496482
{
497-
auto const amend = withFix
498-
? features | disallowIncoming
499-
: (features | disallowIncoming) - fixDisallowIncomingV1;
483+
auto const amend =
484+
withFix ? features : features - fixDisallowIncomingV1;
500485

501486
Env env{*this, amend};
502487
auto const dist = Account("dist");
@@ -532,7 +517,7 @@ class SetTrust_test : public beast::unit_test::suite
532517
}
533518
}
534519

535-
Env env{*this, features | disallowIncoming};
520+
Env env{*this, features};
536521

537522
auto const gw = Account{"gateway"};
538523
auto const alice = Account{"alice"};
@@ -630,7 +615,6 @@ class SetTrust_test : public beast::unit_test::suite
630615
{
631616
using namespace test::jtx;
632617
auto const sa = testable_amendments();
633-
testWithFeats(sa - disallowIncoming);
634618
testWithFeats(sa);
635619
}
636620
};

src/test/rpc/AccountInfo_test.cpp

Lines changed: 18 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -615,33 +615,23 @@ class AccountInfo_test : public beast::unit_test::suite
615615
{"disallowIncomingTrustline",
616616
asfDisallowIncomingTrustline}}};
617617

618-
if (features[featureDisallowIncoming])
618+
for (auto& asf : disallowIncomingFlags)
619619
{
620-
for (auto& asf : disallowIncomingFlags)
621-
{
622-
// Clear a flag and check that account_info returns results
623-
// as expected
624-
env(fclear(alice, asf.second));
625-
env.close();
626-
auto const f1 = getAccountFlag(asf.first, alice);
627-
BEAST_EXPECT(f1.has_value());
628-
BEAST_EXPECT(!f1.value());
629-
630-
// Set a flag and check that account_info returns results
631-
// as expected
632-
env(fset(alice, asf.second));
633-
env.close();
634-
auto const f2 = getAccountFlag(asf.first, alice);
635-
BEAST_EXPECT(f2.has_value());
636-
BEAST_EXPECT(f2.value());
637-
}
638-
}
639-
else
640-
{
641-
for (auto& asf : disallowIncomingFlags)
642-
{
643-
BEAST_EXPECT(!getAccountFlag(asf.first, alice));
644-
}
620+
// Clear a flag and check that account_info returns results
621+
// as expected
622+
env(fclear(alice, asf.second));
623+
env.close();
624+
auto const f1 = getAccountFlag(asf.first, alice);
625+
BEAST_EXPECT(f1.has_value());
626+
BEAST_EXPECT(!f1.value());
627+
628+
// Set a flag and check that account_info returns results
629+
// as expected
630+
env(fset(alice, asf.second));
631+
env.close();
632+
auto const f2 = getAccountFlag(asf.first, alice);
633+
BEAST_EXPECT(f2.has_value());
634+
BEAST_EXPECT(f2.value());
645635
}
646636

647637
static constexpr std::pair<std::string_view, std::uint32_t>
@@ -706,12 +696,8 @@ class AccountInfo_test : public beast::unit_test::suite
706696
FeatureBitset const allFeatures{
707697
ripple::test::jtx::testable_amendments()};
708698
testAccountFlags(allFeatures);
709-
testAccountFlags(allFeatures - featureDisallowIncoming);
710-
testAccountFlags(
711-
allFeatures - featureDisallowIncoming - featureClawback);
712-
testAccountFlags(
713-
allFeatures - featureDisallowIncoming - featureClawback -
714-
featureTokenEscrow);
699+
testAccountFlags(allFeatures - featureClawback);
700+
testAccountFlags(allFeatures - featureClawback - featureTokenEscrow);
715701
}
716702
};
717703

src/xrpld/app/tx/detail/CreateCheck.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,7 @@ CreateCheck::preclaim(PreclaimContext const& ctx)
6161
auto const flags = sleDst->getFlags();
6262

6363
// Check if the destination has disallowed incoming checks
64-
if (ctx.view.rules().enabled(featureDisallowIncoming) &&
65-
(flags & lsfDisallowIncomingCheck))
64+
if (flags & lsfDisallowIncomingCheck)
6665
return tecNO_PERMISSION;
6766

6867
// Pseudo-accounts cannot cash checks. Note, this is not amendment-gated

src/xrpld/app/tx/detail/NFTokenUtils.cpp

Lines changed: 9 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -919,31 +919,21 @@ tokenOfferCreatePreclaim(
919919
return tecNO_DST;
920920

921921
// check if the destination has disallowed incoming offers
922-
if (view.rules().enabled(featureDisallowIncoming))
923-
{
924-
// flag cannot be set unless amendment is enabled but
925-
// out of an abundance of caution check anyway
926-
927-
if (sleDst->getFlags() & lsfDisallowIncomingNFTokenOffer)
928-
return tecNO_PERMISSION;
929-
}
922+
if (sleDst->getFlags() & lsfDisallowIncomingNFTokenOffer)
923+
return tecNO_PERMISSION;
930924
}
931925

932926
if (owner)
933927
{
934-
// Check if the owner (buy offer) has disallowed incoming offers
935-
if (view.rules().enabled(featureDisallowIncoming))
936-
{
937-
auto const sleOwner = view.read(keylet::account(*owner));
928+
auto const sleOwner = view.read(keylet::account(*owner));
938929

939-
// defensively check
940-
// it should not be possible to specify owner that doesn't exist
941-
if (!sleOwner)
942-
return tecNO_TARGET;
930+
// defensively check
931+
// it should not be possible to specify owner that doesn't exist
932+
if (!sleOwner)
933+
return tecNO_TARGET;
943934

944-
if (sleOwner->getFlags() & lsfDisallowIncomingNFTokenOffer)
945-
return tecNO_PERMISSION;
946-
}
935+
if (sleOwner->getFlags() & lsfDisallowIncomingNFTokenOffer)
936+
return tecNO_PERMISSION;
947937
}
948938

949939
if (view.rules().enabled(fixEnforceNFTokenTrustlineV2) && !amount.native())

src/xrpld/app/tx/detail/PayChan.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -202,8 +202,7 @@ PayChanCreate::preclaim(PreclaimContext const& ctx)
202202
auto const flags = sled->getFlags();
203203

204204
// Check if they have disallowed incoming payment channels
205-
if (ctx.view.rules().enabled(featureDisallowIncoming) &&
206-
(flags & lsfDisallowIncomingPayChan))
205+
if (flags & lsfDisallowIncomingPayChan)
207206
return tecNO_PERMISSION;
208207

209208
if ((flags & lsfRequireDestTag) && !ctx.tx[~sfDestinationTag])

src/xrpld/app/tx/detail/SetAccount.cpp

Lines changed: 19 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -595,29 +595,25 @@ SetAccount::doApply()
595595
sle->isFieldPresent(sfNFTokenMinter))
596596
sle->makeFieldAbsent(sfNFTokenMinter);
597597

598-
// Set or clear flags for disallowing various incoming instruments
599-
if (ctx_.view().rules().enabled(featureDisallowIncoming))
600-
{
601-
if (uSetFlag == asfDisallowIncomingNFTokenOffer)
602-
uFlagsOut |= lsfDisallowIncomingNFTokenOffer;
603-
else if (uClearFlag == asfDisallowIncomingNFTokenOffer)
604-
uFlagsOut &= ~lsfDisallowIncomingNFTokenOffer;
605-
606-
if (uSetFlag == asfDisallowIncomingCheck)
607-
uFlagsOut |= lsfDisallowIncomingCheck;
608-
else if (uClearFlag == asfDisallowIncomingCheck)
609-
uFlagsOut &= ~lsfDisallowIncomingCheck;
610-
611-
if (uSetFlag == asfDisallowIncomingPayChan)
612-
uFlagsOut |= lsfDisallowIncomingPayChan;
613-
else if (uClearFlag == asfDisallowIncomingPayChan)
614-
uFlagsOut &= ~lsfDisallowIncomingPayChan;
615-
616-
if (uSetFlag == asfDisallowIncomingTrustline)
617-
uFlagsOut |= lsfDisallowIncomingTrustline;
618-
else if (uClearFlag == asfDisallowIncomingTrustline)
619-
uFlagsOut &= ~lsfDisallowIncomingTrustline;
620-
}
598+
if (uSetFlag == asfDisallowIncomingNFTokenOffer)
599+
uFlagsOut |= lsfDisallowIncomingNFTokenOffer;
600+
else if (uClearFlag == asfDisallowIncomingNFTokenOffer)
601+
uFlagsOut &= ~lsfDisallowIncomingNFTokenOffer;
602+
603+
if (uSetFlag == asfDisallowIncomingCheck)
604+
uFlagsOut |= lsfDisallowIncomingCheck;
605+
else if (uClearFlag == asfDisallowIncomingCheck)
606+
uFlagsOut &= ~lsfDisallowIncomingCheck;
607+
608+
if (uSetFlag == asfDisallowIncomingPayChan)
609+
uFlagsOut |= lsfDisallowIncomingPayChan;
610+
else if (uClearFlag == asfDisallowIncomingPayChan)
611+
uFlagsOut &= ~lsfDisallowIncomingPayChan;
612+
613+
if (uSetFlag == asfDisallowIncomingTrustline)
614+
uFlagsOut |= lsfDisallowIncomingTrustline;
615+
else if (uClearFlag == asfDisallowIncomingTrustline)
616+
uFlagsOut &= ~lsfDisallowIncomingTrustline;
621617

622618
// Set or clear flags for disallowing escrow
623619
if (ctx_.view().rules().enabled(featureTokenEscrow))

0 commit comments

Comments
 (0)