https://sherlock-files.ams3.digitaloceanspaces.com/twitter_images/e5fc1c53-6a0c-46a5-bc07-2c1f606d1071.jpg

joestakey

Security Researcher

Web3 dev, Solidity/Cairo ZK enthusiast

Contact Me

High

22

Total

Medium

74

Total

$44.50K

Total Earnings

#197 All Time

94x

Payouts

silver

1x

2nd Places

regular

16x

Top 10

regular

47x

Top 25

All

Sherlock

Code4rena

Jun '23

Llama

Llama

128.38 USDC • 1 total finding • Code4rena • joestakey

#18

medium

It is not possible to execute actions that require ETH (or other protocol token)

May '23

Chainlink Cross-Chain Services: CCIP and ARM Network

Chainlink Cross-Chain Services: CCIP and ARM Network

665.09 USDC • Code4rena • joestakey

#30

Venus Protocol Isolated Pools

Venus Protocol Isolated Pools

56.63 USDC • Code4rena • joestakey

#42

Apr '23

Frankencoin

Frankencoin

176.12 USDC • 3 total findings • Code4rena • joestakey

#36

medium

No slippage control when minting and redeeming FPS

medium

need alternative ways for fund transfer in `end()` to prevent DoS

medium

function `restructureCapTable()` in Equity.sol not functioning as expected

Caviar Private Pools

Caviar Private Pools

5.98 USDC • 1 total finding • Code4rena • joestakey

#73

medium

`changeFeeQuote` will fail for low decimal ERC20 tokens

Rubicon v2

Rubicon v2

284.46 USDC • 9 total findings • Code4rena • joestakey

#38

high

Reward accounting is incorrect in BathBuddy contract

high

DOS of market operations with malicious offers

high

Some offers can't be cancelled

medium

Use of `block.number` leads to incorrect interest calculations

medium

Fee inclusivity calculations are inaccurate in RubiconMarket

medium

Incorrect fee handling in Position.sol's Market Buy/Sell functions

medium

Zero reward rate calculation impedes low-decimals token distributions

medium

Attack on rounding errors to get risk free profit

medium

Calling `Position._marketBuy` and `Position._marketSell` functions that calculate `_fee` by dividing by `10000` can cause incorrect calculations

Mar '23

Gitcoin

Gitcoin

99.66 USDC • Sherlock • joestakey

#31

Asymmetry contest

Asymmetry contest

236.49 USDC • 1 total finding • Code4rena • joestakey

#27

high

Price of sfrxEth derivative is calculated incorrectly

Canto Identity Subprotocols contest

Canto Identity Subprotocols contest

22.77 USDC • Code4rena • joestakey

#27

Polynomial Protocol contest

Polynomial Protocol contest

527.41 USDC • Code4rena • joestakey

#19

Y2K

Y2K

247.43 USDC • 2 total findings • Sherlock • joestakey

#42

high

An attacker can DOS `Carousel.mintDepositQueue()`, freezing tokens of all the previous deposits.

high

`Carousel.enlistRollover` always overwrite the `_receiver` `ownerToRollOverQueueIndex` mapping, breaking the delisting process.

zkSync Era System Contracts contest

zkSync Era System Contracts contest

2,079.11 USDC • Code4rena • joestakey

#8

Neo Tokyo contest

Neo Tokyo contest

2,849.36 USDC • 1 total finding • Code4rena • joestakey

#6

high

Updating a pool's total points doesn't affect existing stake positions for rewards calculation

Feb '23

Surge

Surge

275.03 USDC • 2 total findings • Sherlock • joestakey

#7

high

Borrowers can get undercollateralized loans if loan and collateral tokens have different decimals

medium

Interest will not accrue properly for low decimal tokens

OlympusDAO

OlympusDAO

290.51 USDC • 3 total findings • Sherlock • joestakey

#20

high

Incorrect update of `cachedUserRewards` breaks tracking of rewards, leading to users able to claim more than expected

medium

If a reward token is added with distribution starting in the future, the vault is broken until that point.

medium

Wrong update of `ohmRemoved` in `withdraw()` means users can bypass `LIMIT`

Ethos Reserve contest

Ethos Reserve contest

61.26 USDC • Code4rena • joestakey

#33

GMX

GMX

878.93 USDC • 4 total findings • Sherlock • joestakey

#19

high

Incorrect check in `claimCollateral` leads to the function always reverting

medium

Incorrect adjusted amount calculation in `getAdjustedLongAndShortTokenAmounts()` always reverts

medium

Variable subtracted where it should be assigned leads to `getAdjustedLongAndShortTokenAmounts()` reverting.

medium

Incorrect funding amount due to precision loss in `getNextFundingAmountPerSize()` for markets with low open interest

OpenQ

OpenQ

104.51 USDC • 3 total findings • Sherlock • joestakey

#33

high

`refundDeposit` can be DOS

high

Attackers can DOS claims of `USDC` blacklisted claimers

medium

refund logic is unfair to funders.

Jan '23

Popcorn contest

Popcorn contest

931.95 USDC • 4 total findings • Code4rena • joestakey

#27

high

Any user can drain the entire reward fund in MultiRewardStaking due to incorrect calculation of `supplierDelta`

medium

DOS any Staking contract with Arithmetic Overflow

medium

Accrued perfomance fee calculation takes wrong assumptions for share decimals, leading to loss of shares or hyperinflation

medium

Fee on transfer token not supported

Canto Identity Protocol contest

Canto Identity Protocol contest

213.5 CANTO • 1 total finding • Code4rena • joestakey

#8

medium

Multiple accounts can have the same identity

RabbitHole Quest Protocol contest

RabbitHole Quest Protocol contest

50.14 USDC • 1 total finding • Code4rena • joestakey

#43

medium

User may loose rewards if the receipt is minted after quest end time

Ondo Finance contest

Ondo Finance contest

304.58 USDC • Code4rena • joestakey

#14

Reserve contest

Reserve contest

121.59 USDC • Code4rena • joestakey

#26

Astaria contest

Astaria contest

408.98 USDC • 2 total findings • Code4rena • joestakey

#32

high

Deadlock in valuts with underlying token with less then 18 decimals

medium

Lack of support for fee-on-transfer token

Biconomy - Smart Contract Wallet contest

Biconomy - Smart Contract Wallet contest

36.5 USDC • Code4rena • joestakey

#55

Dec '22

GoGoPool contest

GoGoPool contest

40.88 USDC • 1 total finding • Code4rena • joestakey

#70

medium

wrong reward distribution between early and late depositors because of the late syncRewards() call in the cycle, syncReward() logic should be executed in each withdraw or deposits (without reverting)

Tigris Trade contest

Tigris Trade contest

157.67 USDC • 1 total finding • Code4rena • joestakey

#44

medium

Chainlink price feed is not sufficiently validated and can return stale price

prePO contest

prePO contest

449.07 USDC • 1 total finding • Code4rena • joestakey

#17

medium

Manager can get around min reserves check, draining all funds from Collateral.sol

Escher contest

Escher contest

31.16 USDC • Code4rena • joestakey

#57

PoolTogether contest

PoolTogether contest

1,309.61 USDC • 1 total finding • Code4rena • joestakey

#6

medium

When a smart contract calls CrossChainRelayerArbitrum.processCalls, excess submission fees may be lost

NounsDAO

NounsDAO

349.49 USDC • 1 total finding • Sherlock • joestakey

#5

medium

`payer` cannot cancel if the `recipient` is blacklisted by `USDC`

Nov '22

ParaSpace contest

ParaSpace contest

1,238.2 USDC • 1 total finding • Code4rena • joestakey

#19

medium

safeTransfer is not implemented correctly

Canto contest

Canto contest

59.89 CANTO • Code4rena • joestakey

#11

Opyn Crab Netting

Opyn Crab Netting

639.85 USDC • 1 total finding • Sherlock • joestakey

#9

high

`withdrawAuction()` will always revert if one `withdrawer` is blacklisted by `USDC`

Redacted Cartel contest

Redacted Cartel contest

150.76 USDC • 2 total findings • Code4rena • joestakey

#34

high

Underlying assets stealing in `AutoPxGmx` and `AutoPxGlp` via share price manipulation

medium

Deposit Feature Of The Vault Will Break If Update To A New Platform

LSD Network - Stakehouse contest

LSD Network - Stakehouse contest

1,382.52 USDC • 5 total findings • Code4rena • joestakey

#16

high

Protocol insolvent - Permanent freeze of funds

medium

Dao admin in LiquidStakingManager.sol can rug the registered node operator by stealing their fund in the smart wallet via arbitrary execution.

medium

Node runners can lose all their stake rewards due to how the DAO commissions can be set to a 100%

medium

Freezing of funds - Hacker can prevent users withdraws in giant pools

medium

Adding non EOA representative

Blur Exchange contest

Blur Exchange contest

596.26 USDC • 2 total findings • Code4rena • joestakey

#11

high

StandardPolicyERC1155.sol returns amount == 1 instead of amount == order.amount

medium

Yul `call` return value not checked

LooksRare Aggregator contest

LooksRare Aggregator contest

151.33 USDC • 1 total finding • Code4rena • joestakey

#19

medium

call opcode's return value not checked.

SIZE contest

SIZE contest

5.6 USDC • 1 total finding • Code4rena • joestakey

#42

medium

Attacker may DOS auctions using invalid bid parameters

Debt DAO contest

Debt DAO contest

1,316.11 USDC • 5 total findings • Code4rena • joestakey

#20

high

Borrower can close a credit without repaying debt

medium

Reentrancy bug allows lender to steal other lenders funds

medium

Mistakenly sent eth could be locked

medium

address.call{value:x}() should be used instead of payable.transfer()

medium

Borrower/Lender excessive ETH not refunded and permanently locked in protocol

Oct '22

Rage Trade

Rage Trade

149.37 USDC • 1 total finding • Sherlock • joestakey

#6

medium

`DnGmxSeniorVault` share minting can be broken by early depositor.

Inverse Finance contest

Inverse Finance contest

24.6 USDC • 2 total findings • Code4rena • joestakey

#46

medium

Oracle assumes token and feed decimals will be limited to 18 decimals

medium

Chainlink oracle data feed is not sufficiently validated and can return stale `price`

Astaria

Astaria

13.15 USDC • 1 total finding • Sherlock • joestakey

#30

medium

`PublicVault.deposit()` can be broken by early minter

NFTPort

NFTPort

76.98 USDC • 1 total finding • Sherlock • joestakey

#10

medium

`initialize` does not check `runtimeConfig.royaltiesBps`, which can break the royalty functionality

Holograph contest

Holograph contest

65.82 USDC • 2 total findings • Code4rena • joestakey

#33

medium

`_payoutToken[s]()` is not compatible with tokens with missing return value

medium

`_payoutEth()` calculates `balance` with an offset, always leaving dust `ETH` in the contract

3xcalibur contest

3xcalibur contest

43.99 USDC • Code4rena • joestakey

#31

Juicebox contest

Juicebox contest

342 USDC • Code4rena • joestakey

#16

The Graph L2 bridge contest

The Graph L2 bridge contest

1,752.93 USDC • 1 total finding • Code4rena • joestakey

#7

medium

Governor can rug pull the escrow

Blur Exchange contest

Blur Exchange contest

114.82 USDC • 2 total findings • Code4rena • joestakey

#20

high

StandardPolicyERC1155.sol returns amount == 1 instead of amount == order.amount

medium

Yul `call` return value not checked

Mycelium

Mycelium

99.78 USDC • 1 total finding • Sherlock • joestakey

#9

high

deposit() can be broken by early minter

Sep '22

Knox Finance

Knox Finance

20.77 USDC • 1 total finding • Sherlock • joestakey

#12

medium

`_latestAnswer64x64()` can return an incorrect result and lead to stale prices being used in `Auction`

Frax Ether Liquid Staking contest

Frax Ether Liquid Staking contest

1,018.51 USDC • 2 total findings • Code4rena • joestakey

#7

medium

Centralization risk: admin have privileges: admin can set address to mint any amount of frxETH, can set any address as validator, and change important state in frxETHMinter and withdraw fund from frcETHMinter

medium

`recoverEther` not updating `currentWithheldETH` breaks calculation of withheld amount for further deposits

VTVL contest

VTVL contest

52.43 USDC • 2 total findings • Code4rena • joestakey

#47

medium

not able to create claim

medium

Supply cap of VariableSupplyERC20Token is not properly enforced

Art Gobblers contest

Art Gobblers contest

55.2 USDC • Code4rena • joestakey

#21

Y2k Finance contest

Y2k Finance contest

122.47 USDC • 1 total finding • Code4rena • joestakey

#40

high

Griefing attack on the Vaults is possible, withdrawing the winning side stakes

Nouns Builder contest

Nouns Builder contest

266.01 USDC • 1 total finding • Code4rena • joestakey

#51

medium

Quorum votes have no effect for determining whether proposal is defeated or succeeded when token supply is low

Aug '22

Nouns DAO contest

Nouns DAO contest

19.23 USDC • Code4rena • joestakey

#42

FIAT DAO veFDT contest

FIAT DAO veFDT contest

142.15 USDC • 1 total finding • Code4rena • joestakey

#28

medium

Unsafe casting from int128 can cause wrong accounting of locked amounts

Foundation Drop contest

Foundation Drop contest

9,277.77 USDC • 3 total findings • Code4rena • joestakey

silver

medium

NFT of NFT collection or NFT drop collection can be locked when calling _mint or mintCountTo function to mint it to a contract that does not support ERC721 protocol

medium

Malicious Creator can steal from collectors upon minting with a custom NFT contract

medium

`mintFromFixedPriceSale` for a custom contract can lead to users losing funds

Mimo August 2022 contest

Mimo August 2022 contest

49.17 USDC • Code4rena • joestakey

#41

Rigor Protocol contest

Rigor Protocol contest

62.71 USDC • Code4rena • joestakey

#57

Jul '22

Golom contest

Golom contest

396.78 USDC • Code4rena • joestakey

#31

Yield Witch v2 contest

Yield Witch v2 contest

39.86 USDC • Code4rena • joestakey

#38

Swivel v3 contest

Swivel v3 contest

733.3 USDC • 1 total finding • Code4rena • joestakey

#13

medium

Error in allowance logic

ENS contest

ENS contest

412.06 USDC • Code4rena • joestakey

#22

Fractional v2 contest

Fractional v2 contest

429.83 USDC • Code4rena • joestakey

#32

Juicebox V2 contest

Juicebox V2 contest

175.27 USDC • Code4rena • joestakey

#28

Jun '22

Putty contest

Putty contest

148.61 USDC • 2 total findings • Code4rena • joestakey

#39

medium

`fillOrder()` and `exercise()` may lock Ether sent to the contract, forever

medium

Putty position tokens may be minted to non ERC721 receivers

Nibbl contest

Nibbl contest

214.09 USDC • Code4rena • joestakey

#17

Yieldy contest

Yieldy contest

95.5 USDC • Code4rena • joestakey

#44

Illuminate contest

Illuminate contest

311.72 USDC • Code4rena • joestakey

#29

Nested Finance contest

Nested Finance contest

236.66 USDC • Code4rena • joestakey

#6

Badger-Vested-Aura contest

Badger-Vested-Aura contest

92.3 USDC • Code4rena • joestakey

#26

Infinity NFT Marketplace contest

Infinity NFT Marketplace contest

683.92 USDC • 1 total finding • Code4rena • joestakey

#16

medium

Protocol fee rate can be arbitrarily modified by the owner and the new rate will apply to all existing orders

Canto contest

Canto contest

951.63 USDC • Code4rena • joestakey

#23

Connext Amarok contest

Connext Amarok contest

333.78 USDC • Code4rena • joestakey

#25

Notional x Index Coop

Notional x Index Coop

248.98 USDC • Code4rena • joestakey

#16

May '22

Rubicon contest

Rubicon contest

157.12 USDC • 3 total findings • Code4rena • joestakey

#43

medium

No cap on fees can result in a DOS in BathToken.withdraw()

medium

Use `safeTransfer()`/`safeTransferFrom()` instead of `transfer()`/`transferFrom()`

medium

Use `call()` instead of `transfer()` when transferring ETH in RubiconRouter

OpenSea Seaport contest

OpenSea Seaport contest

438.35 USDC • Code4rena • joestakey

#46

Sturdy contest

Sturdy contest

89.67 USDC • Code4rena • joestakey

#25

Aura Finance contest

Aura Finance contest

292.93 USDC • Code4rena • joestakey

#24

Cally contest

Cally contest

132.86 USDC • 3 total findings • Code4rena • joestakey

#25

medium

Use safeTransferFrom instead of transferFrom for ERC721 transfers

medium

Owner can modify the feeRate on existing vaults and steal the strike value on exercise

medium

Owner can set the feeRate to be greater than 100% and cause all future calls to `exercise` to revert

Enso Finance contest

Enso Finance contest

171.03 USDT • Code4rena • joestakey

#53

Alchemix contest

Alchemix contest

666.99 DAI • Code4rena • joestakey

#13

FactoryDAO contest

FactoryDAO contest

154.12 DAI • 1 total finding • Code4rena • joestakey

#32

medium

safeTransferFrom is recommended instead of transfer (1)

Forgotten Runes Warrior Guild contest

Forgotten Runes Warrior Guild contest

174.35 USDC • 1 total finding • Code4rena • joestakey

#30

medium

Use of `.send()` May Revert if The Recipient's Fallback Function Consumes More Than 2300 Gas

bunker.finance contest

bunker.finance contest

276.65 USDC • Code4rena • joestakey

#14

Apr '22

PoolTogether Aave v3 contest

PoolTogether Aave v3 contest

31.86 USDC • Code4rena • joestakey

#28

Mimo DeFi contest

Mimo DeFi contest

693.86 USDC • 1 total finding • Code4rena • joestakey

#14

medium

SuperVault's leverageSwap and emptyVaultOperation can become stuck

AbraNFT contest

AbraNFT contest

400.2 MIM • Code4rena • joestakey

#20

Backd contest

Backd contest

1,032.54 USDC • Code4rena • joestakey

#13

xTRIBE contest

xTRIBE contest

1,017.8 USDC • Code4rena • joestakey

#8

Phuture Finance contest

Phuture Finance contest

247.11 USDC • Code4rena • joestakey

#10

Badger Citadel contest

Badger Citadel contest

309.78 USDC • Code4rena • joestakey

#29