Opticash - Audit

CertiKFiles named in the report

CertiK reviewed Opticash (Opticash - Audit) on 10 Mar 2023: 9 findings, 0 critical; all marked fixed.

No open critical findings
Open the reportOpen Opticash’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
High001
Medium000
Low008
HighCentralization Related RisksFixed

In the contract `OPCH` the role `_owner` has authority over the functions `unlockERC()` and `setAllocation`. Any compromise to the `_owner` account may allow the hacker to take advantage of this authority and withdraw any tokens held by the contract and initialize the allocation of the OPCH token.

LowComparison to Boolean ConstantFixed

Boolean constants can be used directly and do not need to be compared to true or false. ```solidity=57 require(mintCalled == false, "Allocation already done."); ```

LowDeclaration Naming ConventionFixed

One or more declarations do not conform to the [Solidity style guide](https://solidity.readthedocs.io/en/v0.7.3/style-guide.html#naming-conventions) with regards to its naming convention. Particularly: - `camelCase`: Should be applied to function names, argument names, local and state variable names, modifiers - `UPPER_CASE`: Should be applied to `constant` variables - `CapWords`: Should be applied to contract names, struct names, event names and enums

LowDuplicate CodeFixed

Multiple lines of code were found to be duplicated and could make use of inheritance and be declared in external files.

LowMissing Emit EventsFixed

There should always be events emitted in the sensitive functions that are controlled by centralization roles.

LowMissing Error MessagesFixed

The **require** can be used to check for conditions and throw an exception if the condition is not met. It is better to provide a string message containing details about the error that will be passed back to the caller.

LowMissing Zero Address ValidationFixed

Addresses should be checked before assignment or external call to make sure they are not zero addresses.

LowTautology or ContradictionFixed

Comparisons that are always true or always false may be incorrect or unnecessary. ```solidity=89 require(amount >= 0, "Invalid allocation amount"); ``` --- ```solidity=88 require(amount >= 0, "Invalid allocation amount"); ``` --- ```solidity=66 require(amount >= 0, "Invalid allocation amount"); ``` --- ```solidity=78 require(amount >= 0, "Invalid allocation amount"); ``` --- ```solidity=89 require(amount >= 0, "Invalid allocation amount"); ``` --- ```solidity=66 require(amount >= 0, "Invalid allocation amount"); ``` --- ```solidity=65 require(amount >= 0, "Invalid allocation amount"); ```

LowVariables That Could Be Declared as ImmutableFixed

The linked variables assigned in the constructor can be declared as `immutable`. Immutable state variables can be assigned during contract creation but will remain constant throughout the lifetime of a deployed contract. A big advantage of immutable variables is that reading them is significantly cheaper than reading from regular state variables since they will not be stored in storage.

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

  • liquidity.sol
  • private.sol
  • community.sol
  • token.sol
  • foundation.sol
  • marketing.sol
  • team.sol
  • advisers.sol
  • strategic.sol

Part of Opticash’s security record

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