EDUM - Audit

CertiKFiles named in the report

CertiK reviewed EDUM (EDUM - Audit) on 17 Mar 2023: 13 findings, 0 critical; 2 marked fixed, 11 open.

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

Report hosted on skynet.certik.com.

Trustblock does not review code.

Findings13

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

SeverityOpenAcknowledgedFixed
Critical000
High000
Medium001
Low1101
Low`receive` Can Be RemovedOpen

If the contract should not accept Ether, then the contract does not need to have a `receive()` function.

LowCondition Will Never Execute in `getLockedBalanceOpen

Inside the function `getLockedBalance()` the following condition will never be executed: ```solidity=231 if (lockStates[_addr].minReleaseTime == 0) { releaseTime += listingDate; } ``` This will never execute this if block due to `minReleaseTime` being set inside of `_releaseLockInfo()`, `_refactoringPreTimelock()`, or `_transferTimelock()`.

LowFunction `setControllers()` Updates InefficientlyOpen

In the function `setControllers()`, the controllers are reset each call which can be inefficient if its not intended. It is inefficient due to having to remove all controllers one by one. For example: The protocol has 1 controller but wants to add a new one. When `setControllers()` is called again, the original controller has to be added in with the new one again otherwise the original controller will be removed.

LowInefficient Memory ParameterOpen

One or more parameters with `memory` data location are never modified in their functions and those functions are never called internally within the contract. Thus, their data location can be changed to `calldata` to avoid the gas consumption copying from calldata to memory. ```solidity=108 function setControllers(address[] memory controllerList) public onlyOwner { ``` `setControllers` has memory location parameters: `controllerList`.

LowLength Can be Checked in `_releaseLockInfo` to SaOpen

As some users will not have a timelock, it may be beneficial to check inside of `_releaseLockInfo()` if the length of `lockInfo` equals zero to avoid users using more gas than necessary.

LowMisleading Function NamingOpen

The following functions have potentially confusing names: - `transferTimelock()` - `transferPreTimelock()` By calling these functions, it appears as the timeLock is already created.

LowMissing Emit EventsOpen

In the contract `EDUM`, the following functions do not emit events: - `setControllers()`

LowRedundant InitializationOpen

The variable `listingDate`, `lockCount`, `totalLocked`, `totalAmount`, and `amountLength` are initialized with the value 0 . In Solidity, all un-initialized variables have a default value which for the uint256 variable is 0, hence the initialization part is redundant and can be removed.

LowRedundant use of `onlyController` in `_transferTiOpen

The internal function `_transferTimelock()` does not need the `onlyController` modifier as the only functions that call it have the modifier as well.

LowToo Many DigitsOpen

Literals with many digits are difficult to read and review. The following variable should be revised: - `TOTAL_SUPPLY`

Show 1 more
LowUser-Defined GettersOpen

The following functions are equivalent to the compiler-generated getter functions for the respective variables: - `getTokenlockStates()` - `getListingDate()`

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 (1)

  • contracts/EDUM.sol

Part of EDUM’s security record

EDUM
Audits1 audit by 1 firmLast audit Mar 2023, by CertiK.
Critical findingsNo open critical findingsIn 1 report.
Open EDUM’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