Foxify - New Deal

CertiKFiles named in the report

CertiK reviewed Foxify: Decentralized Exchange (Foxify - New Deal) on 26 Jun 2023: 11 findings, 0 critical; 6 marked fixed, 1 acknowledged, 4 open.

No open critical findings
Open the reportOpen Foxify: Decentralized Exchange’s security record

Report hosted on skynet.certik.com.

Trustblock does not review code.

Findings11

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

SeverityOpenAcknowledgedFixed
Critical000
High010
Medium000
Low406
LowDivide Before MultiplyFixed

Performing integer division before multiplication truncates the low bits, losing the precision of calculation. ```solidity=297 uint256 stableFee = (amount * fee) / DIVIDER; uint256 discount_ = (affiliationUserData_.discount * stableFee) / DIVIDER; ```

LowLack of Access Control in `initialize()` FunctionFixed

The `initialize()` function does not have any access control measures implemented, allowing any account to call this function to initialize the address of `configuration`.

LowMissing Validation on `latestRoundData()`Fixed

The function `accept()` is using `latestRoundData()` to get token's price by Chainlink, but there are no validations that the data is not stale. This issue also exists in function `validateRoundData`. Reference: https://github.com/code-423n4/2021-12-yetifinance-findings/issues/91

LowMissing Zero Address ValidationFixed

The address of `_immutableConfiguration.utils` is missing a check that it is not `address(0)` in the constructor.

LowReverse Ordering in `blacklistList()` FunctionFixed

The `blacklistList()` function is designed to return values from the address set starting from the index `offset` up to the index `to - 1`. However, in its current implementation, the order of the returned addresses is reversed. For instance, if the order of addresses in the set is [a, b, c], the function currently returns [c, b, a] instead of [a, b, c]. This could potentially lead to misunderstandings or errors in interpreting the result. ```solidity=25 function blacklistList(uint256 offset, uint256 limit) external view returns (address[] memory output) { uint256 blacklistLength = _blacklist.length(); uint256 to = offset + limit; if (blacklistLength < to) to = blacklistLength; output = new address[](to - offset); for (uint256 i = offset; i < to; i++) output[i - offset] = _blacklist.at(blacklistLength - i - 1); } ```

LowUnchecked ERC-20 `transfer()`/`transferFrom()` CaFixed

The return values of the `transfer()` and `transferFrom()` calls in the smart contract are not checked. Some ERC-20 tokens' transfer functions return no values, while others return a bool value, they should be handled with care. If a function returns `false` instead of reverting upon failure, an unchecked failed transfer could be mistakenly considered successful in the contract. ```solidity=99 _immutableConfiguration.stable.transferFrom(msg.sender, address(this), amount); ``` --- ```solidity=166 if (amountCreator > 0) _immutableConfiguration.stable.transfer(creator, amountCreator); ``` --- ```solidity=167 if (amountAccepter > 0) _immutableConfiguration.stable.transfer(accepter, amountAccepter); ``` --- ```solidity=191 stable_.transfer(feeRecipient, amount); ``` --- ```solidity=224 if (amount > 0) _immutableConfiguration.stable.transferFrom(msg.sender, address(this), amount); ``` --- ```solidity=238 stable.transfer(recipient, amount); ``` --- ```solidity=258 _immutableConfiguration.stable.transferFrom(msg.sender, address(this), amount); ``` --- ```solidity=273 _immutableConfiguration.stable.transfer(msg.sender, amount); ``` --- ```solidity=23 stable.transferFrom(msg.sender, address(this), amount); ``` --- ```solidity=44 stable.transferFrom(msg.sender, address(this), amount); ``` --- ```solidity=65 stable.transferFrom(msg.sender, address(this), amount); ```

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

  • contracts/core/PositionToken.sol
  • contracts/core/CoreConfiguration.sol
  • contracts/core/connectors/SwapperConnector.sol
  • contracts/core/FoxifyBlacklist.sol
  • contracts/core/CoreUtilities.sol
  • contracts/core/Core.sol
  • contracts/core/PermitPeriphery.sol
  • contracts/core/connectors/OracleConnector.sol

Part of Foxify: Decentralized Exchange’s security record

Foxify: Decentralized Exchange
Audits1 audit by 1 firmLast audit Jun 2023, by CertiK.
Critical findingsNo open critical findingsIn 1 report.
Open Foxify: Decentralized Exchange’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