- 0.8.3 dosn't have custome error
- 0.8.25 have
MCopyopcode which most of the chain not support that like Mantle push0is not supported by all chains- https://www.evmdiff.com/features?feature=opcodes
-
Can rewards be delayed in payout, or claimed too early?
-
Can rewards be improperly reduced or increased? In the worse case, can the user be prevented from receiving any reward?
-
Can people claim principal or rewards that don’t belong to them, in the worst case draining the protocol?
-
Can deposited assets get stuck in the protocol (partially or fully) or be improperly delayed in withdrawal?
-
Conversely, if staking requires a time commitment, can users withdraw before the commitment time?
-
If the payout is in a different asset or currency, can the value of it be manipulated within the scope of the smart contract in question? This is relevant if the protocol mints its own tokens to reward liquidity providers or stakers.
-
If there is an expected and disclosed element of risk of losing principal staking, can that risk be improperly manipulated?
-
Do key parameters of the protocol have admin, centralization, or governance risk?
-
The key areas to look are the areas of the code that touch the “money exit” portions of the code.
-
There is a “money entrance” vulnerability to look for too.
-
A corner case can be something like someone trying to claim a reward, but having nothing staked. This is valid, we should just give them zero reward. Similarly, we generally want to divide up rewards evenly, but what if there is only one recipient, and technically no division should happen?
-
Can users who have a right to participate in staking assets in the protocol be improperly prevented from doing so?
- Is there any check to prevent a user from voting again in the same Epoch?
- while swap ETH the swap router may return some ETH so their shold be a reciver/callback funciton to store that other wise rever will happen Link
- The buyer’s collateral cannot be liquidated when the loan is not paid back or the collateral drops below the threshold.
- If collateral is drained from the protocol, then both the lender and borrower lose out, since the borrower has no incentive to pay back the loan, and the borrower loses the principal.
- Lack of slippage protection in liquidations exposes liquidators to losses Link
- 5% is not enough incintive for liquidator Link
- if they using the new address for a pool attacker can create a pool in uniswap and prevent that from creating
- CREATE2 address collision during pool deployment allows for complete draining of the pool
LibClonelibrary, is incompatible with ZKsync. link to a report- [L-06] Protocol is using a vulnerable library version link to a report
- SafeTransferLib shouldn't be used as it doesn't check for account existence
- what happens if you call the same function multiple times with smaller amounts (applies to any kind of math, not just swaps).Link
- is it already created?
- Is it possible to give a flashloan and then call the deposit function to increase the balance mapping
- when abi.encodepacked is using for hashing is have Sparator ?
when abi.encodePacked dosn't have spaarator it can produce same hash with diffrient value fromChain = 123, chain = 456 fromChain = 123456, chain = 0 both are same so use
abi.encodeinstead
- AaveV2 forked projects often have a price manipulation vulnerability when the pool are deployed with empty liquidity.