Senior Blockchain Audior
An independent blockchain security researcher currently active in audit contests on platforms such as Code4rena, Sherlock, CodeHawks and Immunefi.
High
Total
Medium
Solo
Total
Total Earnings
#235 All Time
Payouts
1st Places
3rd Places
Top 10
All
Sherlock
Code4rena
CodeHawks
Jan '25
Dec '24
high
Slight miscalculation in maxAmountsIn for Admin Fee Logic in UpliftOnlyExample::onAfterRemoveLiquidity Causes Lock of All Funds
medium
formula Deviation from White Paper and Weighted Pool `performUpdate` unintended revert
low
Inconsistent timestamp storage when the LPNFT is transferred.
low
Liquidity Removal Reverts in `onAfterRemoveLiquidity` Callback Triggered by `removeLiquidityProportional`
Nov '24
94.59 USDC • 1 total finding • Sherlock • dany.armstrong90
Oct '24
Sep '24
high
`Listings.relist()` function doesn't set `listing.created` as `block.timestamp`.
high
`TaxCalculator.calculateCompoundedFactor()` function inflate the compounded factor by 10 times.
high
User can avoid protected listing fee.
high
User can pay less protected listing fees.
high
Attacker can lock shutdown voters' collectionTokens forever.
high
User can unlock protected listing without paying any fee.
high
Attacker can take out user's repaid protected listing NFT with only `1 ether`.
high
Attacker can lock all ethers after shutdown executed and collection liquidation completed.
medium
Attacker can disable `CollectionShutdown.preventShutdown()` function.
medium
Beneficiary will lose unclaimed fees.
medium
User may lose fund when modify listings.
Aug '24
high
Wrong calculation of supply balance and debt balance when withdraw and repay.
high
The protocol considers shares as amount when liquidation.
medium
The protocol updates interest rates of collateral wrongly when liquidation.
medium
Partial repayment is reverted because of rounding error.
medium
Allocator will not be able to withdraw all assets from pool.
high
Incorrect set up and logic of `referralInfoMap` in `SystemConfig::updateReferrerInfo` function
high
TokenManager - Unlimited withdraw
high
Native token withdrawal fails until manually approved
high
[H-4] The function `PreMarkets::listOffer` charges an incorrect collateral amount, allowing users to manipulating collateral rates and drain the protocol's funds
Jul '24
1,728.83 USDC • 9 total findings • Sherlock • dany.armstrong90
#4
high
A malicious user can use voting power doubly.
high
`Voting` is always reverted when it has `bribes` to notify.
high
Remained rewards for period which is not voted can be freezed to `BribeRewarder`.
high
Total LUM rewards may be distributed for exeeding the `_lumPerSecond`.
medium
`MlumStaking.sol#addToPosition` function has error in calculating the average lock duration.
medium
`MlumStaking.sol#harvestPositionsTo` function doesn't function properly.
medium
An attacker can acquire much share of rewards by sandwiching transaction which transfers rewards to `MlumStaking`.
medium
The `lockMultiplier` can be decreased unexpectedly by `renewLockPosition`.
medium
Anyone can create bribe rewarder.
Jun '24
high
Users won't liquidate positions because the logic used to calculate the liquidator's profit is incorrect
high
When `sellCreditMarket()` is called to sell credit for a specific cash amount, the protocol might receive a lower swapping fee than expected.
medium
Fragmentation fee is not taken if user compensates with newly created position
medium
Users can not to buy/sell minimum credit allowed due to exactAmountIn condition
May '24
252.25 USDC • 1 total finding • Sherlock • dany.armstrong90
#17
Apr '24
high
`executeWithdraw` may be blocked if any of the users are blacklisted from the `baseToken`
medium
The `TVLHelper.sol#getTVL` function is DOSed by the `under collateralized connector`, and as a result, many parts of the protocol may be DOS.
medium
Attacker can increase the length of `withdrawQueue` by withdrawing 0 amount of tokens frequently
medium
Balancer flashloan contract can be DOSed completely by sending 1 wei to it
high
It may not be consistent in calculating the Reward compensation for LPs.
high
The 5% ZVE Token is not distributed to the ITO participants.
medium
`ZivoeTranches#rewardZVEJuniorDeposit` function miscalculates the reward when the ratio traverses lower/upper bound.
medium
The `OCL_ZVE.sol#pushToLockerMulti` function call can often fail.
Mar '24
Feb '24
high
Malicious user can stake an amount which causes zero curStakeAtRisk on a loss but equal rewardPoints to a fair user on a win
high
A locked fighter can be transferred; leads to game server unable to commit transactions, and unstoppable fighters
high
Since you can reroll with a different fighterType than the NFT you own, you can reroll bypassing maxRerollsAllowed and reroll attributes based on a different fighterType
high
Fighters cannot be minted after the initial generation due to uninitialized `numElements` mapping
medium
Erroneous probability calculation in physical attributes can lead to significant issues
medium
NFTs can be transferred even if StakeAtRisk remains, so the user's win cannot be recorded on the chain due to underflow, and can recover past losses that can't be recovered(steal protocol's token)
medium
Can mint NFT with the desired attributes by reverting transaction
Jan '24
high
User can evade `liquidation` by depositing the minimum of tokens and gain time to not be liquidated
medium
THE USER WHO WITHDRAWS LIQUIDITY FROM A PARTICULAR POOL IS ABLE TO CLAIM MORE REWARDS THAN HE DULY DESERVES BY CAREFULLY SELECTING A `decreaseShareAmount` VALUE SUCH THAT THE `virtualRewardsToRemove` IS ROUNDED DOWN TO ZERO
medium
When forming POL the DAO will end up stucked with DAI and USDS tokens that cannot handle.
medium
DOS of proposals by abusing ballot names without important parameters
high
Unauthorized Access to setCurves Function
medium
Protocol and referral fee would be permanently stuck in the Curves contract when selling a token
medium
onBalanceChange causes previously unclaimed rewards to be cleared
medium
If a user sets their curve token symbol as the default one plus the next token counter instance it will render the whole default naming functionality obsolete
Dec '23
high
Users staking via the `SurplusGuildMinter` can be immediately slashed when staking into a gauge that had previously incurred a loss
medium
Re-triggering the `canOffboard[term]` flag to bypass the DAO vote of the lending term offboarding mechanism
medium
Replay attack to suddenly offboard the re-onboarded lending term
high
OlympusPrice.v2.sol#storePrice: The moving average prices are used recursively for the calculation of the moving average price.
medium
Wrong calculation of ProtocolOwnedLiquidityOhm in BunnySupply.
medium
OlympusSupply.getReservesByCategory function always revert for some categories.
medium
Incorrect calculation of the BunniTokenPrice.
medium
The check for deviation in Deviation.sol is not valid.
medium
Price can be miscalculated.
Nov '23
Oct '23
Sep '23
high
The total amount of credits per `allocator` can be exceed `maxVoiceCreditsPerAllocator` in `QVSimpleStrategy`.
medium
Allocation can be set invalid by incorrect calculation for quadratic voting strategies in QVBaseStrategy.
medium
Function `_distribute` of `RFPSimpleStrategy.sol` would be reverted due to the coding error.
Aug '23
Jul '23