Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 36 additions & 0 deletions src/onchain/TestArbitrage.sol
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,42 @@ contract TestArbitrage is IFlashLoanRecipient, ReentrancyGuard, Ownable, Pausabl
/// @param executor Address executing the emergency action
event EmergencyAction(string action, address token, uint256 amount, address executor);

//////////////////////////////////////////////////////////////
// MODIFIERS //
//////////////////////////////////////////////////////////////

/// @notice Restricts access to authorized traders or owner
/// @dev Prevents unauthorized trade execution
modifier onlyAuthorized() {
require(authorizedTraders[msg.sender] || msg.sender == owner(), "TestArbitrage: Not authorized to trade");
_;
}

/// @notice Validates trade parameters before execution
/// @param params Trade parameters to validate
/// @dev Comprehensive validation of all trade inputs
modifier validTradeParams(TradeParams memory params) {
require(params.routerPath.length == 2, "TestArbitrage: Must provide exactly 2 routers");
require(params.tokenPath.length == 2, "TestArbitrage: Must provide exactly 2 tokens");
require(params.tokenPath[0] != params.tokenPath[1], "TestArbitrage: Tokens must be different");
require(
params.routerPath[0] != address(0) && params.routerPath[1] != address(0),
"TestArbitrage: Invalid router addresses"
);
require(
params.tokenPath[0] != address(0) && params.tokenPath[1] != address(0),
"TestArbitrage: Invalid token addresses"
);
require(params.fee > 0 && params.fee <= 10000, "TestArbitrage: Invalid fee tier");
require(
params.minProfitBps >= MIN_PROFIT_BPS && params.minProfitBps <= MAX_BPS,
"TestArbitrage: Invalid profit threshold"
);
require(params.maxSlippageBps <= MAX_SLIPPAGE_BPS, "TestArbitrage: Slippage too high");
require(params.deadline >= block.timestamp, "TestArbitrage: Trade deadline passed");
_;
}

//////////////////////////////////////////////////////////////
// CONSTRUCTOR //
//////////////////////////////////////////////////////////////
Expand Down
Loading