During the tier upgrade when calling upgradeTier(address, uint256)
on MembershipFactory
contract - the amount of minted NFTs in not updated.
Even though state variables such as daos[daoMembershipAddress].tiers[tierIndex].amount
are checked when joining a DAO - they are not validated when upgrading tier. Therefore - some funcionality may have unforeseen consequences. When a user is upgrading a tier he burns 2 lower tier NFTs to receive 1 from the higher tier.
Users can upgrade tiers but they leave their previous tier amount unoccupied - users could potentially occupy all the highest tier and leave the lower unoccupied.
Not only that but - higher tiers can exceed the max amount of users holding the tier membership.
Manual review
This could be ruled a design choice and it has several ways of "fixing". I guess this is up to the sponsors.
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.