Security Audit Report
</> APIPumpCopyTradeExecutor0x9499e512Fe…c0E8c798
55out of 100
6 blocking issues
At least one finding describes a plausible path to loss of funds or control. Read those findings before interacting with this contract.
- Findings
- 6
- Engines
- slither
- Scanned
- Source
- Published
Findings by severity
Critical
0
High
6
Medium
0
Low
0
Informational
0
Gas
0
Findings (6)
2 checks · 6 instances
A plausible path to loss of funds or control. Treat as blocking.Instance 1 of 2
PumpCopyTradeExecutor.executeCopyBuy(address,address,address,uint256,uint256) (contracts/PumpCopyTradeExecutor.sol#177-220) uses arbitrary from in transferFrom: money.safeTransferFrom(copier,address(this),totalPull) (contracts/PumpCopyTradeExecutor.sol#197)
Instance 2 of 2
PumpCopyTradeExecutor.executeCopySell(address,address,address,uint256,uint256) (contracts/PumpCopyTradeExecutor.sol#234-270) uses arbitrary from in transferFrom: IERC20(token).safeTransferFrom(copier,address(this),tokensIn) (contracts/PumpCopyTradeExecutor.sol#245)
Instance 1 of 4
Reentrancy in PumpCopyTradeExecutor.executeCopySell(address,address,address,uint256,uint256) (contracts/PumpCopyTradeExecutor.sol#234-270): External call allowing reentrancy: - money.safeTransfer(relayer,fee) (contracts/PumpCopyTradeExecutor.sol#259) Balance read before the call: - moneyBefore = money.balanceOf(address(this)) (contracts/PumpCopyTradeExecutor.sol#251) Possible stale balance used after the call in a condition: - require(bool,string)(netMoneyOut > 0,zero money out after fee) (contracts/PumpCopyTradeExecutor.sol#262) - stale variable `netMoneyOut`
Instance 2 of 4
Reentrancy in PumpCopyTradeExecutor.executeCopySell(address,address,address,uint256,uint256) (contracts/PumpCopyTradeExecutor.sol#234-270): External call allowing reentrancy: - money.safeTransfer(relayer,fee) (contracts/PumpCopyTradeExecutor.sol#259) Balance read before the call: - grossMoneyOut = money.balanceOf(address(this)) - moneyBefore (contracts/PumpCopyTradeExecutor.sol#253) Possible stale balance used after the call in a condition: - require(bool,string)(netMoneyOut > 0,zero money out after fee) (contracts/PumpCopyTradeExecutor.sol#262) - stale variable `netMoneyOut`
Instance 3 of 4
Reentrancy in PumpCopyTradeExecutor.executeCopyBuy(address,address,address,uint256,uint256) (contracts/PumpCopyTradeExecutor.sol#177-220): External call allowing reentrancy: - pump.buy(token,moneyIn,minOut,address(0)) (contracts/PumpCopyTradeExecutor.sol#208) Balance read before the call: - tokensBefore = IERC20(token).balanceOf(address(this)) (contracts/PumpCopyTradeExecutor.sol#207) Possible stale balance used after the call in a condition: - require(bool,string)(tokensOut > 0,zero tokens out) (contracts/PumpCopyTradeExecutor.sol#212) - stale variable `tokensOut`
Instance 4 of 4
Reentrancy in PumpCopyTradeExecutor.executeCopySell(address,address,address,uint256,uint256) (contracts/PumpCopyTradeExecutor.sol#234-270): External call allowing reentrancy: - pump.sell(token,tokensIn,minOut) (contracts/PumpCopyTradeExecutor.sol#252) Balance read before the call: - moneyBefore = money.balanceOf(address(this)) (contracts/PumpCopyTradeExecutor.sol#251) Possible stale balance used after the call in a condition: - require(bool,string)(netMoneyOut > 0,zero money out after fee) (contracts/PumpCopyTradeExecutor.sol#262) - stale variable `netMoneyOut`
Scope and limitations
This is automated static analysis, run by slither against this contract’s published source. It is not a manual audit and nobody has reviewed these results by hand.
- It finds known patterns. A novel bug, or one that depends on how this contract is used alongside another, is exactly what it does not find.
- It cannot judge intent. A contract that lets its owner mint without limit is working as written; whether that is acceptable is not a question a scanner answers.
- It says nothing about the people behind the contract, the liquidity, or whether the deployer still holds the keys.
- A high score means the analysers had few complaints. It is not a guarantee, an endorsement, or advice to interact.
Read the source yourself where it matters. This contract’s source is published.