https://sherlock-files.ams3.digitaloceanspaces.com/profile_images/defaults/default_avatar_0.png

ChainProof

Security Researcher

Contact Me

High

23

Total

Medium

28

Total

$713.00

Total Earnings

#1382 All Time

5x

Payouts

regular

1x

Top 10

regular

2x

Top 25

regular

2x

Top 50

All

Sherlock

Code4rena

CodeHawks

Mar '25

Nudge.xyz

Nudge.xyz

0.06 USDC • 1 total finding • Code4rena • ChainProof

#8

medium

Unauthorized Reallocation in `NudgeCampaign::handleReallocation` and Reward Disruption Vulnerability in `NudgeCampaign::invalidateParticipations`

Feb '25

Core Contracts

Core Contracts

338.98 usdc • 48 total findings • CodeHawks • ChainProof

#63

high

Multiple Delegation by Double Spending Boosts and Lack of Delegation Tracking in BoostController Contract

high

Delegation Boost Not Usable by Delegatees

high

RAACNFT mint function receives funds to address(this) but has no way of withdrawing them

high

`BaseGauge` users can claim rewards without staking

high

Users Can Overwrite Existing Locks in veRAACToken Resulting in Permanent Loss of Funds

high

`GaugeController` does not send funds to FeeCollector disrupting fees distribution and causing loss of funds

high

Multiple issues from unnecessary balance increase calculation in DebtToken.mint

high

Reward manipulation vulnerability in StabilityPool

high

Incorrect Reward Claim Logic in FeeCollector::claimRewards Causes Denial of Service

high

RToken's transfer function lead to loss of funds due to incorrect math

high

Users can borrow more assets than they have deposited as collateral

high

Double Usage Index Scaling in StabilityPool Liquidation Inflates Required CRVUSD Balance

high

Treasury Balance Tracking Bypass in FeeCollector

high

Attackers can double voting power and veToken amount by locking and increasing

high

Gauge Voting Misallocation Vulnerability

high

Gauge rewards are not transferred to gauge when distributeRewards() is called

high

Ineffective Time-Weighted Average Implementation in Fee Distribution

high

Critical Economic Design Flaw in ZENO Zero-Coupon Bond Implementation Leads to Guaranteed User Losses

high

Gauge stakers won't get any reward due to round-down in user weight calculation

medium

Gauge reward period can be extended indefinitely

medium

Incorrect utilization rate forces protocol to issue maximum rewards indefinitely

medium

Incorrect DebtToken totalSupply Scaling Breaks Interest Rate Calculations

medium

LendingPool deposits do not work with CurveVault due to lack of funds

medium

LendingPool::getNormalizedIncome() returns stale liquidity index

medium

Liquidation Cannot Be Closed Even With Healthy Position Due To Strict Debt Check

medium

There is no logic checking for RAACNFT price staleness before minting it

medium

`RToken::calculateDustAmount` are incorrectly calculated, leading to not be able to transfer the accrued dust amount

medium

LendingPool.getUserDebt returns outdated value and can lead to liquidation failure

medium

Treasury Contract Deposit Function Can Be Frontrun To Deny Protocol Operations

medium

Workingsupply would always be overwritten in boostcontroller.sol impacting reward calculations

medium

Missing Boost State Update in extend() and withdraw()

medium

Missing Liquidity Rebalancing in Repayments and Liquidations Leading to Inefficient Liquidity Management

medium

Token Accounting Mismatch Between tick() and mintRewards() in RAACMinter

medium

Permanent boost inflation through delegation removal in Boostcontroller.sol

medium

Inconsistent Scaling in RToken Transfer Functions

medium

Wrong access control in `RAACToken::setFeeCollector`, `RAACToken::setSwapTaxRate`, `RAACToken::setBurnTaxRate`

medium

RAACToken burns less tokens than expected when feeCollector is unset

medium

Incorrect boost calculation in `BoostController#_calculateBoost()` can be exploited to gain an unfair advantage in reward distribution

medium

Flawed Boost Multiplier Calculation Always Yields Maximum Boost

medium

The `TimelockController::executeEmergencyAction()` function does not update the `_operations` mapping, which can lead to an operation being executed twice.

medium

Pending fee not cleared and overwritten by updates via updateFeeType()

low

Unauthorized Vote Casting Vulnerability

low

Emergency withdraw functionality in veRAACToken takes longer than expected

low

Incorrect Initialization of minBoost in BaseGauge Constructor Breaks Core Contract Functionality

low

Missing Checkpoint Reset in `veRAACToken::emergencyWithdraw` Function

low

`FeeCollector::updateFeeType` wrong fee share validation leads to impossible update for some fee types

low

Incorrect Timestamp Tracking in RAACHousePrice contract

low

Hardcoded Emission Values Lead to Incorrect Reward Calculations

Jan '25

Plaza Finance

Plaza Finance

15.72 USDC • 6 total findings • Sherlock • ChainProof

#71

high

Sandwich the startAuction function with flashloan

high

Calling the transferReserveToAuction will revert due to increase in currentPeriod

high

Fee is charged current reserveToken pool balance to time which is not updated

medium

Bidding can be DOSed

medium

Attacker is able to manipulate the pool balance such that the auction succeeds

medium

Shares are added even with failed auctions

Dec '24

SecondSwap

SecondSwap

189.06 USDC • 3 total findings • Code4rena • ChainProof

#19

high

In `transferVesting`, the `grantorVesting.releaseRate` is calculated incorrectly, which leads to the sender being able to unlock more tokens than were initially locked.

medium

Listing potential can not be purchased with discounted price

medium

Users can prevent being reallocated by listing to marketplace

Nov '24

Concrete

Concrete

170.16 USDC • Code4rena • ChainProof

#55