Security Audit Report
</> APIFarmCompoundHelper0xc36F476cb3…f192e65E
50out of 100
3 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
- 5
- Engines
- slither
- Scanned
- Source
- Published
Findings by severity
Critical
0
High
3
Medium
1
Low
0
Informational
1
Gas
0
Findings (5)
1 check · 3 instances
A plausible path to loss of funds or control. Treat as blocking.Instance 1 of 3
Reentrancy in FarmCompoundHelper.zapAndCredit(address,address,address,uint256) (contracts/FarmCompoundHelper.sol#72-108): External call allowing reentrancy: - zapCompound.compound(token0,token1,moneyAmount) (contracts/FarmCompoundHelper.sol#84) Balance read before the call: - lpBefore = IERC20(lpToken).balanceOf(address(this)) (contracts/FarmCompoundHelper.sol#83) Possible stale balance used after the call in a condition: - require(bool,string)(lpAmount > 0,FarmCompoundHelper: zap returned 0 LP) (contracts/FarmCompoundHelper.sol#89) - stale variable `lpAmount`
Instance 2 of 3
Reentrancy in FarmCompoundHelper.zapAndCredit(address,address,address,uint256) (contracts/FarmCompoundHelper.sol#72-108): External call allowing reentrancy: - money.safeApprove(address(zapCompound),0) (contracts/FarmCompoundHelper.sol#87) Balance read before the call: - lpAmount = IERC20(lpToken).balanceOf(address(this)) - lpBefore (contracts/FarmCompoundHelper.sol#85) Possible stale balance used after the call in a condition: - require(bool,string)(lpAmount > 0,FarmCompoundHelper: zap returned 0 LP) (contracts/FarmCompoundHelper.sol#89) - stale variable `lpAmount`
Instance 3 of 3
Reentrancy in FarmCompoundHelper.zapAndCredit(address,address,address,uint256) (contracts/FarmCompoundHelper.sol#72-108): External call allowing reentrancy: - money.safeApprove(address(zapCompound),0) (contracts/FarmCompoundHelper.sol#87) Balance read before the call: - lpBefore = IERC20(lpToken).balanceOf(address(this)) (contracts/FarmCompoundHelper.sol#83) Possible stale balance used after the call in a condition: - require(bool,string)(lpAmount > 0,FarmCompoundHelper: zap returned 0 LP) (contracts/FarmCompoundHelper.sol#89) - stale variable `lpAmount`
1 check · 1 instance
Can go wrong under specific conditions worth understanding first.1 check · 1 instance
Style and convention. No effect on what the contract does.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.