CertiK reviewed Dora Factory (Dora Grant DAO V4) on 6 Mar 2023: 11 findings, 0 critical; 4 marked fixed, 1 acknowledged, 6 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 | 1 | 0 |
| Medium | 0 | 0 | 0 |
| Low | 6 | 0 | 4 |
The function `exit()` requires the `_amount` less than the `stakingAmount` of users, which means users cannot withdraw all staked tokens. ```solidity=82 function exit(uint256 _amount) external nonReentrant { User storage u = user[msg.sender]; require(u.stakingAmount > _amount); u.stakingAmount -= _amount; u.exitAmount += _amount; u.exitTime = block.timestamp + EXIT_BUFFER_TIME; emit Exit(msg.sender, _amount); } ``` In the `slashTo`, users on the whitelist cannot withdraw all staked tokens from penalized accounts. ```solidity=143 function slashTo( address _slashed, address _to, uint256 _amount ) external { ... uint256 totalAmount = u.stakingAmount + u.exitAmount; require(_amount < totalAmount); require(slashedAmount[_slashed] + _amount < totalAmount); ... } ```
The variable in the above lines should be named `_reentrancyLock`.
The contract has unlocked compiler version. An unlocked compiler version in the source code of the contract permits the user to compile it at or above a particular version. This, in turn, leads to differences in the generated bytecode between compilations due to different compiler versions. This can lead to an ambiguity when debugging as compiler specific bugs may occur in the codebase that would be hard to identify over a span of multiple compiler versions rather than a specific one.
One or more logic contracts do not protect their initializers. An attacker can call the initializer and assume ownership of the logic contract, whereby she can perform privileged operations that trick unsuspecting users into believing that she is the owner of the upgradeable contract. ```solidity=7 contract BuidlDonation { ``` - `BuidlDonation` is an upgradeable contract that does not protect its initializer. ```solidity=66 function init(IERC20 _token, DoraChecker _checker) external { ``` - `init` is an unprotected initializer function. --- ```solidity=6 contract DoraChecker { ``` - `DoraChecker` is an upgradeable contract that does not protect its initializer. ```solidity=52 function init(IERC20 _token) public { ``` - `init` is an unprotected initializer function.
The report names a repository or files. Open the report to see its scope.
Repository and files the report names (3)
1,044 projects reviewed · 1,393 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