CertiK reviewed Fandomdao on 25 Mar 2024: 9 findings, 0 critical; 5 acknowledged, 4 open.
Report hosted on skynet.certik.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 | 4 | 0 |
| Medium | 0 | 1 | 0 |
| Low | 4 | 0 | 0 |
In the contract `DpPool` the role `_owner` has authority over the functions shown in the diagram below. Any compromise to the `_owner` account may allow the hacker to take advantage of this authority and allows the following operations: - withdrawExcessByAdmin(): Allows the caller to withdraw the difference between the contract balance and the `totalSupply`. Only callable by the owner. - withdrawAccount(address account,uint256 amount): Allows the caller to unstake any users` tokens. Only callable by the owner. - setOpen(bool _open): Allows the caller to open or close the Pool. Only callable by the owner. 
In the contract `TransparentFactory` the role `_owner` has authority over the functions shown in the diagram below. Any compromise to the `_owner` account may allow the hacker to take advantage of this authority and upgrade the contract code of a `proxyAddress`. 
In the contract `DpPool`, the role `admin` has the authority to update the implementation contract behind the contract. Any compromise to the `admin` account may allow a hacker to take advantage of this authority and change the implementation contract which is pointed by proxy and therefore execute potential malicious functionality in the implementation contract.
The `DpPool` contract has a function for users to stake their tokens. In particular, a user can use `stake` to add `stakeToken` tokens into the contract and `withdraw` or `instantUnstake` to get their tokens back. Since the logic of distributing rewards is performed via a Web2 server, the staking mechanism is highly centralized.
The `DpPool` contract in Solidity contains a modifier `checkStart` intended to restrict staking actions until the pool is officially started, indicated by the `startTime`. However, the `startTime` is hard-coded to zero and cannot be changed, rendering the check always true. This issue could potentially allow users to stake tokens before the intended pool start time, leading to unexpected behavior or advantages for early stakers.
The report names a repository or files. Open the report to see its scope.
Repository and files the report names (2)
1,044 projects reviewed · 1,375 reports · latest May 2025
See CertiK’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