The inline comment states the staked tokens are sent to the contract "akin to burning", implying they leave circulation when the NFT is claimed.
Nothing is ever burned: Snow exposes no burn function, SnowmanAirdrop has no withdrawal/unstake path, and no other contract can move the tokens — the Snow sits at the airdrop address forever while remaining counted in totalSupply.
Likelihood:
Deterministic: every successful claim locks the user's entire Snow balance this way; there is no code path in any of the three contracts that can ever move it out.
Impact:
Users' tokens are permanently locked; if "burn" was the intent, the intended value sink never happens and supply accounting (totalSupply) is misleading.
Combined with the replay issue (same leaf claimable repeatedly), each replay locks another round of Snow with no recovery.
forge test --mt test_06_stakedSnowLockedNoExit -vvv
Either actually burn on claim or provide an exit path:
or add unstakeSnow() / NFT-to-Snow redemption if the tokens are meant as a stake rather than a burn.
The contest is live. Earn rewards by submitting a finding.
Submissions are being reviewed by our AI judge. Results will be available in a few minutes.
View all submissionsThe contest is complete and the rewards are being distributed.