Optix

CertiKFiles named in the report

CertiK reviewed Optix Protocol (Optix) on 14 Nov 2022: 13 findings, 0 critical; 8 marked fixed, 1 acknowledged, 4 open.

No open critical findings
Open the reportOpen Optix Protocol’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
High010
Medium001
Low407
MediumAmount Locked Not Amount Deposited In VaultFixed

In the contract `OptionERC721`, in the function `create()`, the amount locked may not be the same as the amount transferred. The calculated `remain` amount is transferred while the amount locked is `option.lockedAmount`. The result could be a mismatch of locked funds.

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.

LowRequirement Always PassesFixed

The requirement case is set to the value `true`. Therefore, the requirement will never fail.

LowUnused EventFixed

```solidity=71 event SetGlobalAddressPair(address indexed byAccount, SetVariableType indexed eventType, address a1, address a2, bool from, bool to); ``` - `SetGlobalAddressPair` is declared in `IStructs` but never emitted. --- ```solidity=72 event SetGlobalAddressPairBoolState(address indexed byAccount, SetVariableType indexed eventType, address a1, address a2, BoolState from, BoolState to); ``` - `SetGlobalAddressPairBoolState` is declared in `IStructs` but never emitted.

LowUnused ParametersFixed

The linked parameters are never used.

LowUnused RoleFixed

The role `CONTRACT_CALLER_ROLE` is defined in the `OptionsVaultFactory` contract but it is never used.

LowUnutilized VariableFixed

In the contract `SimpleSeller`, in the function `findMatchFee()`, the variable `matchStrike` is instantiated locally and assigned but never utilized.

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

  • contracts/libraries/OptionsLib.sol
  • contracts/OptionsERC721.sol
  • contracts/SimpleSeller.sol
  • contracts/Referrals.sol
  • contracts/OptionsVaultFactory.sol
  • contracts/OptionsVaultERC20.sol
  • contracts/interfaces/Interfaces.sol

Part of Optix Protocol’s security record

Optix Protocol
Audits3 audits by 2 firmsLast audit Mar 2023, by Paladin.
Critical findingsNo open critical findingsAcross 3 reports.
Open Optix Protocol’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