Project

One World
NFTDeFi
15,000 USDC
View results
Submission Details
Severity: medium
Invalid

Blacklisted DAO or Share Holder Will Be Unable Transfer/Receive USDC

Description

if DAO is blacklisted by USDC, Users will be unable to join that DAO, Project will be unable to Distribute Profits and Share holders will be unable to Claim Profits.

if an Share Holder is Blacklisted by USDC, share holder will be unable to claim profits that belong to him.

Impact

If the DAO is blacklisted, the USDC tokens will be permanently stuck in the DAO, preventing users from joining. the business will be unable to distribute profits, and shareholders will be unable to claim the profits owed to them.

If a shareholder is blacklisted, they will be unable to claim the profits and will also be unable to buy membership tokens at any tier within the DAO. This restriction limits their potential to earn larger profit shares and reduces their ability to participate fully in the DAO’s economic benefits.

Recommended mitigation

Add a function in the MembershipERC1155 contract that allows shareholders to transfer their unclaimed profits to another address. This will enable blacklisted shareholders to claim profits owed to them by routing the unclaimed funds to an alternate address, even if they cannot directly receive USDC. it can be implemented like this:

contract MembershipERC1155 is ERC1155Upgradeable, AccessControlUpgradeable, IMembershipERC1155 {
+ function transferProfits(address account) external {
+ profit = saveProfit(msg.sender);
+ require(profit > 0, "No profit available");
+ savedProfit[msg.sender] = 0;
+ savedProfit[account] += profit;
+ }
}

Also To mitigate the risk of a DAO itself being blacklisted, implement an off-chain monitoring mechanism for the MembershipFactory::EXTERNAL_CALLER role. When this off-chain system detects that the DAO is about to be blacklisted in the USDC contract (e.g., by observing pending transactions in the mempool), it will “front-run” the blacklisting transaction by calling MembershipERC1155::callExternalContract() function to retrieve all USDC held by the DAO before the blacklist is enforced.

Updates

Lead Judging Commences

0xbrivan2 Lead Judge about 1 year ago
Submission Judgement Published
Invalidated
Reason: Non-acceptable severity

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.

Give us feedback!