The current DAO smart contract structure limits users from upgrading their tier due to a shortage of tokens in their accounts and tier capacity constraints. When a user joins the DAO, only one membership token is minted to their account for the chosen tier. However, to upgrade to a higher tier, two tokens are required to be burned from the lower tier. Since users receive only one token upon joining, they cannot fulfill the token burn requirement, making tier upgrades unachievable. Additionally, even if users attempt to rejoin to gain additional tokens, they may be prevented if the specific tier they wish to rejoin is already at full capacity.
When users join a DAO through joinDAO, they are minted 1 token for their selected tier.
When users attempt to upgrade their tier through upgradeTier, the function requires 2 tokens to be burned from the current tier to proceed with the upgrade.
So a user attempts to obtain more tokens by rejoining the same tier but it could be unsuccessful if the tier's maximum capacity is reached, due to a check in the joinDAO function that restricts new entries when the tier is full.
Scenario
A user joins a DAO at tier 4 and receives one token.
The user wishes to upgrade to tier 3, which requires burning two tokens.
The user attempts to rejoin tier 4 to acquire an additional token but finds the tier is full.
As a result, the user is unable to upgrade to tier 3 due to insufficient tokens.
Users are permanently blocked from upgrading to higher tiers due to the 2-token burn requirement that cannot be fulfilled with the 1-token holding from joining
Manual Review
Implement a mechanism to allow users obtain additional tokens even if the tier is full, solely for the purpose of meeting upgrade requirements without impacting the maximum user capacity.
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.