ContractLens · independent automated report
0x4ed4e862860bed51a9570b96d89af5e1b0efefed · chain 8453 · compiler 0.8.20+commit.a1b79de6 · Sourcify exact_match · generated 2026-10-06 17:10 UTC
Findings by impact: {"High": 1, "Medium": 9, "Low": 7, "Informational": 34}
Not a proxy.
renounceOwnership() onlyOwnertransferOwnership(address) onlyOwnermint(address,uint96) onlyOwnerpause() onlyOwnerunpause() onlyOwner| Impact | Confidence | Check | Detail |
| High | Medium | incorrect-exp | Math.mulDiv(uint256,uint256,uint256) (Math.sol#123-202) has bitwise-xor operator ^ instead of the exponentiation operator **: - inverse = (3 * denominator) ^ 2 (Math.sol#184) |
| Medium | Medium | divide-before-multiply | Math.mulDiv(uint256,uint256,uint256) (Math.sol#123-202) performs a multiplication on the result of a division: - denominator = denominator / twos (Math.sol#169) - inverse *= 2 - denominator * inverse (Math.sol#188) |
| Medium | Medium | divide-before-multiply | Math.mulDiv(uint256,uint256,uint256) (Math.sol#123-202) performs a multiplication on the result of a division: - denominator = denominator / twos (Math.sol#169) - inverse *= 2 - denominator * inverse (Math.sol#191) |
| Medium | Medium | divide-before-multiply | Math.mulDiv(uint256,uint256,uint256) (Math.sol#123-202) performs a multiplication on the result of a division: - prod0 = prod0 / twos (Math.sol#172) - result = prod0 * inverse (Math.sol#199) |
| Medium | Medium | divide-before-multiply | Math.mulDiv(uint256,uint256,uint256) (Math.sol#123-202) performs a multiplication on the result of a division: - denominator = denominator / twos (Math.sol#169) - inverse *= 2 - denominator * inverse (Math.sol#190) |
| Medium | Medium | divide-before-multiply | Math.mulDiv(uint256,uint256,uint256) (Math.sol#123-202) performs a multiplication on the result of a division: - denominator = denominator / twos (Math.sol#169) - inverse *= 2 - denominator * inverse (Math.sol#193) |
| Medium | Medium | divide-before-multiply | Math.mulDiv(uint256,uint256,uint256) (Math.sol#123-202) performs a multiplication on the result of a division: - denominator = denominator / twos (Math.sol#169) - inverse *= 2 - denominator * inverse (Math.sol#189) |
| Medium | Medium | divide-before-multiply | Math.mulDiv(uint256,uint256,uint256) (Math.sol#123-202) performs a multiplication on the result of a division: - denominator = denominator / twos (Math.sol#169) - inverse = (3 * denominator) ^ 2 (Math.sol#184) |
| Medium | Medium | divide-before-multiply | Math.mulDiv(uint256,uint256,uint256) (Math.sol#123-202) performs a multiplication on the result of a division: - denominator = denominator / twos (Math.sol#169) - inverse *= 2 - denominator * inverse (Math.sol#192) |
| Medium | Medium | unused-return | Time.get(Time.Delay) (Time.sol#90-93) ignores return value by (delay,None,None) = self.getFull() (Time.sol#91) |
| Low | High | shadowing-local | ERC20Permit.constructor(string).name (ERC20Permit.sol#39) shadows: - ERC20.name() (ERC20.sol#58-60) (function) - IERC20Metadata.name() (IERC20Metadata.sol#15) (function) |
| Low | High | shadowing-local | DegenToken.nonces(address).owner (DegenToken.sol#148) shadows: - Ownable.owner() (Ownable.sol#56-58) (function) |
| Low | Medium | timestamp | Votes.delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32) (Votes.sol#142-161) uses timestamp for comparisons Dangerous comparisons: - block.timestamp > expiry (Votes.sol#150) |
| Low | Medium | timestamp | DegenToken.constructor(uint256) (DegenToken.sol#80-97) uses timestamp for comparisons Dangerous comparisons: - mintingAllowedAfter_ < block.timestamp (DegenToken.sol#87) |
| Low | Medium | timestamp | Time._getFullAt(Time.Delay,uint48) (Time.sol#74-77) uses timestamp for comparisons Dangerous comparisons: - effect <= timepoint (Time.sol#76) |
| Low | Medium | timestamp | ERC20Permit.permit(address,address,uint256,uint256,uint8,bytes32,bytes32) (ERC20Permit.sol#44-67) uses timestamp for comparisons Dangerous comparisons: - block.timestamp > deadline (ERC20Permit.sol#53) |
| Low | Medium | timestamp | DegenToken.mint(address,uint96) (DegenToken.sol#104-122) uses timestamp for comparisons Dangerous comparisons: - block.timestamp < mintingAllowedAfter (DegenToken.sol#105) |
Generated by ContractLens from the Sourcify-verified source and live on-chain reads. This is automated static analysis plus reviewer notes, not a full manual audit. Findings can be false positives. Re-run any time: swarm-t3.github.io/contractlens.