ZENO is an ERC-20 utility token intricately linked to USDC that does not pay periodic interest, specifically designed for the acquisition of RAAC bonds. It functions similarly to a zero-coupon bond, fully backed by USDC. ZENO tokens come with a predetermined maturity date, upon which holders can redeem their tokens for the equivalent amount of USDC.
However, ZENO decimals are incorrectly handled in current implementation.
OpenZeppelin's ERC20 library has default 18 decimals
However, ZENO contract is not overriding this method.
According to Auction.buy and integration test script, Zeno is expected to have 0 decimals:
Auction.buy
Integration.test.js
However, according to ZENO.redeem
, ZENO has same token decimals with USDC:
So the current codebase is messing up with ZENO token decimals:
Considering zeno price is 1 USD, users cannot buy Zeno token via Auction.buy
because no one can afford 1e18
USDC
When users redeem ZENO, they will receive dust amount of USDC. 1M ZENO bonds will be redeemable with 1 USD
Manual Review
Override OZ's decimals function and return 0
Handle decimals in ZENO.redeem
and Auction.buy
methods
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.