Issue Description
In AMMDelete::preflight (src/libxrpl/tx/transactors/dex/AMMDelete.cpp, lines 16–19), the function returns tesSUCCESS without any validation:
NotTEC
AMMDelete::preflight(PreflightContext const& ctx)
{
return tesSUCCESS;
}
Every other AMM transactor (AMMCreate, AMMDeposit, AMMWithdraw, AMMBid, AMMVote) calls invalidAMMAssetPair in its preflight. AMMDelete skips this, allowing trivially malformed transactions (e.g., sfAsset == sfAsset2) to pass preflight and only fail at preclaim.
Steps to Reproduce
Submit an AMMDelete transaction with sfAsset equal to sfAsset2. It will pass preflight and only be rejected at preclaim.
Expected Result
AMMDelete::preflight should call invalidAMMAssetPair (and potentially preflight2, the standard common checks) to reject malformed transactions early and avoid wasting consensus resources.
Actual Result
Malformed AMMDelete transactions pass preflight and consume consensus resources before being rejected at preclaim.
Environment
All versions with AMM support (XLS-30).
Supporting Files
N/A
Issue Description
In
AMMDelete::preflight(src/libxrpl/tx/transactors/dex/AMMDelete.cpp, lines 16–19), the function returnstesSUCCESSwithout any validation:Every other AMM transactor (
AMMCreate,AMMDeposit,AMMWithdraw,AMMBid,AMMVote) callsinvalidAMMAssetPairin itspreflight.AMMDeleteskips this, allowing trivially malformed transactions (e.g.,sfAsset == sfAsset2) to passpreflightand only fail atpreclaim.Steps to Reproduce
Submit an
AMMDeletetransaction withsfAssetequal tosfAsset2. It will passpreflightand only be rejected atpreclaim.Expected Result
AMMDelete::preflightshould callinvalidAMMAssetPair(and potentiallypreflight2, the standard common checks) to reject malformed transactions early and avoid wasting consensus resources.Actual Result
Malformed
AMMDeletetransactions passpreflightand consume consensus resources before being rejected atpreclaim.Environment
All versions with AMM support (XLS-30).
Supporting Files
N/A