Audit · firm’s term: audit report
QuillAudits reviewed GreedyArt on 16 Nov 2023: 6 findings, 0 critical; 5 marked fixed, 1 open.
Report hosted on quillaudits.com.
Trustblock does not review code.
Statuses are the security firm’s own, from its report.
| Severity | Open | Acknowledged | Fixed |
|---|---|---|---|
| Critical | 0 | 0 | 0 |
| High | 0 | 0 | 1 |
| Medium | 1 | 0 | 1 |
| Low | 0 | 0 | 3 |
We used a specific technique for analyzing these: manually expanding the function calls & variables in an equation to expose hidden division before multiplication. The code snippet shown above exhibits a potential precision loss issue in the calculation of the partnerFee and then dividing the result by 10000. This sequence of operations can lead to precision loss. Precision loss in financial calculations can result in inaccurate fee distributions, potentially leading to financial discrepancies and unintended outcomes.Simplified equation: partnerFee = (((amountIn_ * uint256(PROJECT_FEE_RATE)) / 10000 * uint256(partners[codes[code_]].rewardRate)) / 10000)
Popular tokens such as USDT may implement a blocklist of addresses that are not allowed to send or receive that token. This will cause a function to revert when attempting to transfer to one of these addresses.If any of the partner, projectFeeReceiver addresses is blacklisted (due to illegal activities, using Tornado Cash for privacy reasons, etc.), depending on the implementation this could lock funds in a contract indefinitely.
The functions addToWhitelist and removeFromWhitelist lack checks to verify whether an address is already whitelisted or not before attempting to add or remove it. Without this verification, redundant operations may occur, potentially leading to increased gas costs or unintended changes in the whitelist status. The absence of a check for existing whitelisting status could result in inefficiencies and unnecessary state modifications.
Inheriting from OpenZeppelin's Ownable contract means you are using a single-step ownership transfer pattern. If an admin provides an incorrect address for the new owner this will result in none of the onlyOwner marked methods being callable again. The better way to do this is to use a two-step ownership transfer approach, where the new owner should first claim its new rights before they are transferred.
Critical functions within the contract lack the emission of events. Events play a vital role in providing transparency, enabling external systems to react to changes, and offering a way to track important contract activities. The absence of events can hinder monitoring and auditing efforts, making it difficult to detect and respond to critical contract actions.
The report names a repository or files. Open the report to see its scope.
Repository and files the report names (2)
350 projects reviewed · 459 reports · latest Apr 2025
See QuillAudits’s auditsSomething wrong on this page? A missing report, a wrong date, a finding that was fixed since. Tell us and we check it against its source.
Tell us