From 568bf3c49b65d156312028eafd2f58271fe48bda Mon Sep 17 00:00:00 2001 From: malgus01 Date: Tue, 7 Oct 2025 07:56:48 -0700 Subject: [PATCH 1/5] feat: Add onlyAuthorized Modifier --- src/onchain/TestArbitrage.sol | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/onchain/TestArbitrage.sol b/src/onchain/TestArbitrage.sol index 95aee21..2809136 100644 --- a/src/onchain/TestArbitrage.sol +++ b/src/onchain/TestArbitrage.sol @@ -207,6 +207,14 @@ contract TestArbitrage is IFlashLoanRecipient, ReentrancyGuard, Ownable, Pausabl /// @param executor Address executing the emergency action event EmergencyAction(string action, address token, uint256 amount, address executor); + modifier onlyAuthorized() { + require( + authorizedTraders[msg.sender] || msg.sender == owner(), + "TestArbitrage: Not authorized to trade" + ); + _; + } + ////////////////////////////////////////////////////////////// // CONSTRUCTOR // ////////////////////////////////////////////////////////////// From 0b137a0214fccbf33cc919029d08ce9f58b56986 Mon Sep 17 00:00:00 2001 From: malgus01 Date: Tue, 7 Oct 2025 07:57:24 -0700 Subject: [PATCH 2/5] feat: Add onlyAuthorized Modifier Natspec Comments & Modifier Natspec Header Section --- src/onchain/TestArbitrage.sol | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/onchain/TestArbitrage.sol b/src/onchain/TestArbitrage.sol index 2809136..1ac7e9e 100644 --- a/src/onchain/TestArbitrage.sol +++ b/src/onchain/TestArbitrage.sol @@ -207,6 +207,12 @@ 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(), From 06b4c4260113275a8714e8a1497f7ee26df3682f Mon Sep 17 00:00:00 2001 From: malgus01 Date: Tue, 7 Oct 2025 07:57:50 -0700 Subject: [PATCH 3/5] feat: Add validTradeParams Modifier --- src/onchain/TestArbitrage.sol | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/onchain/TestArbitrage.sol b/src/onchain/TestArbitrage.sol index 1ac7e9e..af85f9c 100644 --- a/src/onchain/TestArbitrage.sol +++ b/src/onchain/TestArbitrage.sol @@ -221,6 +221,19 @@ contract TestArbitrage is IFlashLoanRecipient, ReentrancyGuard, Ownable, Pausabl _; } + 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 // ////////////////////////////////////////////////////////////// From 7d60df29b1508ece441d866c29a99f147daf461f Mon Sep 17 00:00:00 2001 From: malgus01 Date: Tue, 7 Oct 2025 07:58:07 -0700 Subject: [PATCH 4/5] feat: Add validTradeParams Modifier Natspec Comments --- src/onchain/TestArbitrage.sol | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/onchain/TestArbitrage.sol b/src/onchain/TestArbitrage.sol index af85f9c..19490d0 100644 --- a/src/onchain/TestArbitrage.sol +++ b/src/onchain/TestArbitrage.sol @@ -221,6 +221,9 @@ contract TestArbitrage is IFlashLoanRecipient, ReentrancyGuard, Ownable, Pausabl _; } + /// @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"); From 596ed3fe64b0accc1c84f0be1a8722278890a606 Mon Sep 17 00:00:00 2001 From: malgus01 Date: Tue, 7 Oct 2025 07:58:16 -0700 Subject: [PATCH 5/5] feat: forge fmt --- src/onchain/TestArbitrage.sol | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/onchain/TestArbitrage.sol b/src/onchain/TestArbitrage.sol index 19490d0..6d60451 100644 --- a/src/onchain/TestArbitrage.sol +++ b/src/onchain/TestArbitrage.sol @@ -214,24 +214,30 @@ contract TestArbitrage is IFlashLoanRecipient, ReentrancyGuard, Ownable, Pausabl /// @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" - ); + 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) { + 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.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.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"); _;