refactor: Retire ImmediateOfferKilled amendment (#5973)

Amendments activated for more than 2 years can be retired. This change retires the ImmediateOfferKilled amendment.
This commit is contained in:
Jingchen
2025-11-03 17:26:12 +00:00
committed by GitHub
parent 12c4b5a632
commit 8ac8a47c99
3 changed files with 8 additions and 56 deletions

View File

@@ -82,7 +82,6 @@ XRPL_FIX (NonFungibleTokensV1_2, Supported::yes, VoteBehavior::DefaultNo
XRPL_FIX (UniversalNumber, Supported::yes, VoteBehavior::DefaultNo) XRPL_FIX (UniversalNumber, Supported::yes, VoteBehavior::DefaultNo)
XRPL_FEATURE(XRPFees, Supported::yes, VoteBehavior::DefaultNo) XRPL_FEATURE(XRPFees, Supported::yes, VoteBehavior::DefaultNo)
XRPL_FEATURE(DisallowIncoming, Supported::yes, VoteBehavior::DefaultNo) XRPL_FEATURE(DisallowIncoming, Supported::yes, VoteBehavior::DefaultNo)
XRPL_FEATURE(ImmediateOfferKilled, Supported::yes, VoteBehavior::DefaultNo)
XRPL_FIX (RemoveNFTokenAutoTrustLine, Supported::yes, VoteBehavior::DefaultYes) XRPL_FIX (RemoveNFTokenAutoTrustLine, Supported::yes, VoteBehavior::DefaultYes)
XRPL_FIX (TrustLinesToSelf, Supported::yes, VoteBehavior::DefaultNo) XRPL_FIX (TrustLinesToSelf, Supported::yes, VoteBehavior::DefaultNo)
XRPL_FEATURE(NonFungibleTokensV1_1, Supported::yes, VoteBehavior::DefaultNo) XRPL_FEATURE(NonFungibleTokensV1_1, Supported::yes, VoteBehavior::DefaultNo)
@@ -149,6 +148,7 @@ XRPL_RETIRE(Escrow)
XRPL_RETIRE(EnforceInvariants) XRPL_RETIRE(EnforceInvariants)
XRPL_RETIRE(FeeEscalation) XRPL_RETIRE(FeeEscalation)
XRPL_RETIRE(FlowCross) XRPL_RETIRE(FlowCross)
XRPL_RETIRE(ImmediateOfferKilled)
XRPL_RETIRE(MultiSign) XRPL_RETIRE(MultiSign)
XRPL_RETIRE(PayChan) XRPL_RETIRE(PayChan)
XRPL_RETIRE(SortedDirectories) XRPL_RETIRE(SortedDirectories)

View File

@@ -855,9 +855,7 @@ public:
// No cross: // No cross:
{ {
TER const expectedCode = features[featureImmediateOfferKilled] TER const expectedCode = tecKILLED;
? static_cast<TER>(tecKILLED)
: static_cast<TER>(tesSUCCESS);
env(offer(alice, XRP(1000), USD(1000)), env(offer(alice, XRP(1000), USD(1000)),
txflags(tfImmediateOrCancel), txflags(tfImmediateOrCancel),
ter(expectedCode)); ter(expectedCode));
@@ -5289,34 +5287,12 @@ public:
testFillOrKill(features); testFillOrKill(features);
} }
void FeatureBitset const allFeatures{jtx::testable_amendments()};
run(std::uint32_t instance, bool last = false)
{
using namespace jtx;
static FeatureBitset const all{testable_amendments()};
static FeatureBitset const immediateOfferKilled{
featureImmediateOfferKilled};
FeatureBitset const fillOrKill{fixFillOrKill};
FeatureBitset const permDEX{featurePermissionedDEX};
static std::array<FeatureBitset, 5> const feats{
all - immediateOfferKilled - permDEX,
all - immediateOfferKilled - fillOrKill - permDEX,
all - fillOrKill - permDEX,
all - permDEX,
all};
if (BEAST_EXPECT(instance < feats.size()))
{
testAll(feats[instance]);
}
BEAST_EXPECT(!last || instance == feats.size() - 1);
}
void void
run() override run() override
{ {
run(0); testAll(allFeatures - featurePermissionedDEX);
testFalseAssert(); testFalseAssert();
} }
}; };
@@ -5326,25 +5302,7 @@ class OfferWOSmallQOffers_test : public OfferBaseUtil_test
void void
run() override run() override
{ {
OfferBaseUtil_test::run(1); testAll(allFeatures - fixFillOrKill - featurePermissionedDEX);
}
};
class OfferWOFillOrKill_test : public OfferBaseUtil_test
{
void
run() override
{
OfferBaseUtil_test::run(2);
}
};
class OfferWOPermDEX_test : public OfferBaseUtil_test
{
void
run() override
{
OfferBaseUtil_test::run(3);
} }
}; };
@@ -5353,7 +5311,7 @@ class OfferAllFeatures_test : public OfferBaseUtil_test
void void
run() override run() override
{ {
OfferBaseUtil_test::run(4, true); testAll(allFeatures);
} }
}; };
@@ -5364,12 +5322,9 @@ class Offer_manual_test : public OfferBaseUtil_test
{ {
using namespace jtx; using namespace jtx;
FeatureBitset const all{testable_amendments()}; FeatureBitset const all{testable_amendments()};
FeatureBitset const immediateOfferKilled{featureImmediateOfferKilled};
FeatureBitset const fillOrKill{fixFillOrKill}; FeatureBitset const fillOrKill{fixFillOrKill};
FeatureBitset const permDEX{featurePermissionedDEX}; FeatureBitset const permDEX{featurePermissionedDEX};
testAll(all - immediateOfferKilled - permDEX);
testAll(all - immediateOfferKilled - fillOrKill - permDEX);
testAll(all - fillOrKill - permDEX); testAll(all - fillOrKill - permDEX);
testAll(all - permDEX); testAll(all - permDEX);
testAll(all); testAll(all);
@@ -5378,8 +5333,6 @@ class Offer_manual_test : public OfferBaseUtil_test
BEAST_DEFINE_TESTSUITE_PRIO(OfferBaseUtil, app, ripple, 2); BEAST_DEFINE_TESTSUITE_PRIO(OfferBaseUtil, app, ripple, 2);
BEAST_DEFINE_TESTSUITE_PRIO(OfferWOSmallQOffers, app, ripple, 2); BEAST_DEFINE_TESTSUITE_PRIO(OfferWOSmallQOffers, app, ripple, 2);
BEAST_DEFINE_TESTSUITE_PRIO(OfferWOFillOrKill, app, ripple, 2);
BEAST_DEFINE_TESTSUITE_PRIO(OfferWOPermDEX, app, ripple, 2);
BEAST_DEFINE_TESTSUITE_PRIO(OfferAllFeatures, app, ripple, 2); BEAST_DEFINE_TESTSUITE_PRIO(OfferAllFeatures, app, ripple, 2);
BEAST_DEFINE_TESTSUITE_MANUAL_PRIO(Offer_manual, app, ripple, 20); BEAST_DEFINE_TESTSUITE_MANUAL_PRIO(Offer_manual, app, ripple, 20);

View File

@@ -789,9 +789,8 @@ CreateOffer::applyGuts(Sandbox& sb, Sandbox& sbCancel)
if (bImmediateOrCancel) if (bImmediateOrCancel)
{ {
JLOG(j_.trace()) << "Immediate or cancel: offer canceled"; JLOG(j_.trace()) << "Immediate or cancel: offer canceled";
if (!crossed && sb.rules().enabled(featureImmediateOfferKilled)) if (!crossed)
// If the ImmediateOfferKilled amendment is enabled, any // Any ImmediateOrCancel offer that transfers absolutely no funds
// ImmediateOrCancel offer that transfers absolutely no funds
// returns tecKILLED rather than tesSUCCESS. Motivation for the // returns tecKILLED rather than tesSUCCESS. Motivation for the
// change is here: https://github.com/ripple/rippled/issues/4115 // change is here: https://github.com/ripple/rippled/issues/4115
return {tecKILLED, false}; return {tecKILLED, false};