A DAO creator can set up a DAO with tier prices that enable them to avoid platform fees and collect all membership fees.
In MembershipFactory.createNewDAOMembership
, a user can establish a DAO with various tier prices below 5.
When a user calls MembershipFactory.joinDAO
to join the DAO, precision loss occurs during the calculation of platformFees
, resulting in all membership fees being transferred to the membership contract.
Alice sets up a new DAO with the daoMembershipAddress A
a. She invokes MembershipFactory.createNewDAOMembership
and provides an array of TierConfig
with TierConfig.price
values of 1, 2, 3, and 4 for the respective tiers from lowest to highest
b. The DAOConfig.currency
used is USDC
Bob joins tier 1 of the DAO with daoMembershipAddress A
The platformFees
are calculated as (20 * 4) / 100 = 0
, leading to precision loss
As a result, no platformFees
are transferred to the one world wallet address
The membership address receives all the membership fees
Loss of funds for one world protocol. DAO can bypass membership fees
There area few ways to mitigate the issue that can be considered
Include check to ensure platformFees are not zero
Scaling up values
Introduce a minimum price
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.