The MembershipERC1155
contract has a critical mismatch in how profits are recorded versus how they are calculated for claims, It uses A PER LOWEST TIER TOKEN profit instead of the actual total profit in MembershipERC1155::claimProfit
causes lower profit distribution than intended.
sendProfit
is assumed to increment totalProfit
by the amount of currency distributed. However, totalProfit
includes deviding by _totalSupply
which makes it A PER LOWEST TIER TOKEN profit not the actual total profit.
contracts/dao/tokens/MembershipERC1155.sol#L189-L200
We say it's PER LOWEST TIER because total supply is the sum of all tokens weighted to the lowest tier token, references:
contracts/dao/tokens/MembershipERC1155.sol#L61
contracts/dao/tokens/MembershipERC1155.sol#L74
When claiming profit, totalProfit
is not multiplied back by _totalSupply
to get the actual total profit:
contracts/dao/tokens/MembershipERC1155.sol#L142-L150
Which should be done here:
contracts/dao/tokens/MembershipERC1155.sol#L159C1-L164C6
This can lead to incorrect profit distributions which will be much lower than expected.
Manual review.
Consider removing division by _totalSupply
from sendProfit
or multiplying back by _totalSupply
in MembershipERC1155::getUnsaved()
.
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.