Skip to content

Commit 7149e39

Browse files
Optimize function selector
1 parent e723f00 commit 7149e39

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

src/OptimizedGrimReaper.sol

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,8 @@ contract OptimizedGrimReaper {
7474
}
7575

7676
/// @notice Receive profits from contract
77-
/// @dev Function signature matches `recoverERC20(address)`. Remove calldatasize check inserted by compiler.
78-
function rev4207857931( /* address token */ ) external payable {
77+
/// @dev Function signature matches `execute_44g58pv()` = 0x00000000. Remove calldatasize check inserted by compiler.
78+
function execute_44g58pv( /* address token */ ) external payable {
7979
assembly {
8080
// only the owner of this contract is allowed to call this function
8181
if iszero(eq(caller(), OWNER)) { revert(0, 0) }

test/GrimReaper.t.sol

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,21 @@ contract OptimizedGrimReaperSolTest is GrimReaperBaseTest {
160160
{
161161
payload = abi.encodePacked(_col, _debt, _user, uint128(_debtToCover));
162162
}
163+
164+
function testRecoverERC20() public virtual override {
165+
uint256 balance = 10000;
166+
deal(address(debt), address(reaper), balance, true);
167+
168+
uint256 _before = gasleft();
169+
vm.prank(owner);
170+
(bool success,) =
171+
address(reaper).call(abi.encodeWithSelector(OptimizedGrimReaper.execute_44g58pv.selector, address(debt)));
172+
require(success, "recoverERC20 failed");
173+
console2.log("gas usage: ", _before - gasleft());
174+
175+
assertEq(debt.balanceOf(address(reaper)), 1);
176+
assertEq(debt.balanceOf(owner), balance - 1);
177+
}
163178
}
164179

165180
contract Deployer {

0 commit comments

Comments
 (0)