In the current implementation, users who purchase ZENO tokens will incur a loss when redeeming them later.
The ZENO token can be purchased with USDC and redeemed after maturity. However, both the Auction contract and the ZENO contract suffer from decimal mismatches and design flaws, which lead to inaccurate pricing and potential redemption issues.
Decimal Mismatch in Auction::buy:
The function calculates cost by simply multiplying price (1e6) by amount (1e18), resulting in a significant overcharge for buyers because it applies the price to each 1 wei of ZENO rather than scaling properly.
Incorrect Redemption Logic in ZENO::redeem:
When redeeming, the contract transfers USDC in a 1:1 ratio to the ZENO amount. If ZENO was bought at a high price due to the decimal mismatch, users will not receive the equivalent value in USDC upon redemption.
Incorrect Redemption Logic in ZENO::redeem:
Also, ZENO::redeem is transferring USDC for the value of the token being redeemed, i.e. if you buy an amount of ZENO tokens at price, you will only receive USDC for amount when you redeem them later, not amount*price. Also, the capitalization of ZENO tokens and decimal is different, which can be confusing.
Also, since different users purchased ZENO Tokens at different prices, everyone should not transfer USDC just for the value of the ZENO Tokens they are burning.
Immediate Redemption Uncertainty:
The documentation implies USDC can be redeemed immediately after maturity, but the ZENO contract itself holds no USDC if the business address retains the tokens. This design can make instant redemption impossible if USDC is not available in the ZENO contract.
Also, the decimal of ZENO Token and USDC Token are different, which can cause problems.
Because of the incorrect price calculation and 1:1 redemption mechanism, buyers may overpay during purchase and under-redeem at maturity, causing direct financial losses for users.
Manual Code Review and Foundry
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.