GivingThanks

First Flight #28
Beginner FriendlyFoundry
100 EXP
View results
Submission Details
Severity: high
Invalid

Centralization Risk in Registry Verification

Description: Both contracts CharityRegistry and GivingThanks rely on a single admin for charity verification, creating a central point of failure.

Impact:

  • System vulnerability to admin key compromise

  • Single point of failure for verification

  • Potential system deadlock if admin is unavailable

Recommended Mitigation:

contract MultiSigCharityRegistry {
uint256 public constant MIN_SIGNATURES = 2;
mapping(address => bool) public isAdmin;
mapping(address => mapping(bytes32 => bool)) public hasSignedVerification;
function verifyCharity(address charity) public {
bytes32 verificationHash = keccak256(abi.encodePacked(charity));
require(isAdmin[msg.sender], "Not admin");
hasSignedVerification[msg.sender][verificationHash] = true;
uint256 signatures = 0;
for (uint i = 0; i < admins.length; i++) {
if (hasSignedVerification[admins[i]][verificationHash]) {
signatures++;
}
}
if (signatures >= MIN_SIGNATURES) {
verifiedCharities[charity] = true;
emit CharityVerified(charity);
}
}
}
Updates

Lead Judging Commences

n0kto Lead Judge 12 months ago
Submission Judgement Published
Invalidated
Reason: Non-acceptable severity

Support

FAQs

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