FandomDAO

CertiKRepository at commit efb5877

CertiK reviewed Fandomdao on 25 Mar 2024: 9 findings, 0 critical; 5 acknowledged, 4 open.

No open critical findings
Open the reportOpen Fandomdao’s security record

Report hosted on skynet.certik.com.

Trustblock does not review code.

Findings9

Statuses are the security firm’s own, from its report.

SeverityOpenAcknowledgedFixed
Critical000
High040
Medium010
Low400
HighCentralization Risks in DpPool.solAcknowledged

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. ![](https://accelerator-tasks-prod.acc.corp.certik.com/11ee-beb2-4d55d170-baf8-6f412e6ea320/diagrams/centralization_DpPool-DpPool-_owner.svg)

HighCentralization Risks in TransparentFactory.solAcknowledged

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`. ![](https://accelerator-tasks-prod.acc.corp.certik.com/11ee-beb2-4d55d170-baf8-6f412e6ea320/diagrams/centralization_TransparentFactory-TransparentFactory-_owner.svg)

HighCentralized Control of Contract UpgradeAcknowledged

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.

HighUnclear Staking BenefitsAcknowledged

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.

MediumIneffective Start Time Check in Staking FunctionAcknowledged

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.

Contracts in scope

No deployed address is recorded for this audit.

The report names a repository or files. Open the report to see its scope.

Repository and files the report names (2)

  • https://github.com/STAIRGLOBAL/fandom-pool-contract/contracts/DpPool.sol at commit efb587750a9c4eeed7ccfdb8b73f331f958734d1
  • https://github.com/STAIRGLOBAL/fandom-pool-contract/contracts/TransparentFactory.sol at commit efb587750a9c4eeed7ccfdb8b73f331f958734d1

Part of Fandomdao’s security record

Fandomdao
Audits1 audit by 1 firmLast audit Mar 2024, by CertiK.
Critical findingsNo open critical findingsIn 1 report.
Open Fandomdao’s security record

Security firm

CertiK

1,044 projects reviewed · 1,375 reports · latest May 2025

See CertiK’s audits

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