As of 3 Nov 2026, Rich Quack has 1 audit report on Trustblock, by CertiK, dated 4 Jul 2023. That report lists no open critical findings.
Record last updated . It holds audits, findings and contracts up to Nov 2026, and incidents up to Oct 2026. Trustblock does not review code.
Newest first
| Audit | Security firm | Date | Scope | Critical findings | Report |
|---|---|---|---|---|---|
| Quackpad IDO + Inqubator | Security firm: CertiK | Date: | Scope: Not recorded (see the report) | No open critical findings | Open · skynet.certik.com |
Statuses are the security firm’s own, from each report.
| Severity | Open | Acknowledged | Fixed |
|---|---|---|---|
| Critical | 0 | 0 | 0 |
| High | 0 | 1 | 0 |
| Medium | 0 | 0 | 0 |
| Low | 0 | 4 | 3 |
### PresalePrivateTest #### _presalecreator In the contract `PresalePrivateTest` the role `_presalecreator` has authority over the functions shown in the list below. - addOrRemoveParticipants(): Add users into the whitelist or remove users from it - addLiquidity(): Add liquidity into `paymentToken`-`saleToken` pair - claimRaisedFunds(): Claim earning funds - claimLps(): Claim LP tokens - closePresale(): Close presale - withdrawTokens(): Withdraw sale tokens if presale is failed. Any compromise to the `_presalecreator` account may allow the hacker to take advantage of this authority to transfer the presale assets and influence on presale. #### factory In the contract `PresalePrivateTest` the role `FACTORY` has authority over the functions shown in the list below. - initialize(): Set up the initial contract parameters. Any compromise to the `FACTORY` account may allow the hacker to take advantage of this authority to set up the contract. #### backend In the contract `PresaleInqubatorTest` the role `backend` has authority over the functions shown in the list below. - calculateLotteryResults(): Calculate lottery results. Any compromise to the `backend` account may allow the hacker to take advantage of this authority to calculate lottery results. ### PresaleInqubatorTest #### _presalecreator In the contract `PresaleInqubatorTest` the role `_presalecreator` has authority over the functions shown in the list below. - addLiquidity(): Add liquidity into `paymentToken`-`saleToken` pair - claimRaisedFunds(): Claim earning funds - claimLps(): Claim LP tokens - closePresale(): Close presale - withdrawTokens(): Withdraw sale tokens if presale is failed. Any compromise to the `_presalecreator` account may allow the hacker to take advantage of this authority to transfer the presale assets and influence on presale. #### factory In the contract `PresaleInqubatorTest` the role `FACTORY` has authority over the functions shown in the list below. - initialize(): Set up the initial contract parameters. Any compromise to the `FACTORY` account may allow the hacker to take advantage of this authority to set up the contract. #### approver In the contract `PresaleInqubatorTest` the role `approver` has authority over the functions shown in the list below. - approve(): Approve the presale contract and allow investing to proceed. Any compromise to the `approver` account may allow the hacker to take advantage of this authority to approve or reject presales. #### backend In the contract `PresaleInqubatorTest` the role `backend` has authority over the functions shown in the list below. - calculateLotteryResults(): Calculate lottery results. Any compromise to the `backend` account may allow the hacker to take advantage of this authority to calculate lottery results. ### PresalePublicTest #### _presalecreator In the contract `PresalePublicTest` the role `_presalecreator` has authority over the functions shown in the list below. - addLiquidity(): Add liquidity into `paymentToken`-`saleToken` pair - claimRaisedFunds(): Claim earning funds - claimLps(): Claim LP tokens - closePresale(): Close presale - withdrawTokens(): Withdraw sale tokens if presale is failed. Any compromise to the `_presalecreator` account may allow the hacker to take advantage of this authority to transfer the presale assets and influence on presale. #### factory In the contract `PresalePublicTest` the role `FACTORY` has authority over the functions shown in the list below. - initialize(): Set up the initial contract parameters. Any compromise to the `FACTORY` account may allow the hacker to take advantage of this authority to set up the contract.
Open the reportIn the `invest()` function, the following line serves to set the whitelists to allow users to make an investment to purchase tokens. ```solidity if (!expandCalled && random > 0) _expand(); ``` If this logic is called, then only whitelisted users will be allowed to invest (especially in the moon round). ```solidity if (expandCalled) require(lotteryWhitelist[sender1], "LOOSE"); ``` When this whitelist is not set before users start to invest, any user can invest. In the case that the VRF random generator required to set the value `random` is set at a date later, still during the moon phase, a restriction will be applied and then only certain users will be able to invest.
Open the reportThe function `getCloseTimestamps()` returns an array containing the end times of each stage. However, in the case of `diamondEnd >= generalInfo.closeTime`, it returns `diamondEnd` as the end time of each stage. Even though this is only a view function, we still would like to confirm whether this matches the intended design. ```solidity if (diamondEnd < generalInfo.closeTime) { stagesEnd = [ generalInfo.openTime + 15 minutes, generalInfo.openTime + 20 minutes, generalInfo.openTime + 25 minutes, diamondEnd ]; } else { stagesEnd = [diamondEnd, diamondEnd, diamondEnd, diamondEnd]; } ```
Open the reportIn function `getMaxInvestment()`, the following is present to return 0 if the following criteria are fulfilled. ```solidity if (!sender.lock || sender.level == 0) return 0; ``` This will prevent users that have a status of `!sender.lock` from being able to see their max investment value.
Open the reportIt was noted that `minutes` were used in the contracts instead of days for numerous functions within the presales contracts.
Open the reportThe reports name a repository or files. Open a report to see its scope.
Is this your project? Show this record on your own website. The label states what the record holds, links to this page and updates by itself. It is free and needs no sign-in.
Automatic: the three strongest facts of this project’s own record (its last audit and two more), highlighted. They update with the record. Picking a fact turns Automatic off.
<head><script src="https://widget.trustblock.run/project-widget.min.js" defer></script></head><body><divdata-tb-project-widgetdata-tb-project-slug="richquack"></div></body>
Paste the code where the label should appear. It uses no API credit and updates by itself.
Something 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