Foxify: Decentralized Exchange security record

Arbitrum, Sonicfoxify.tradeGitHub

As of 3 Nov 2026, Foxify: Decentralized Exchange has 1 audit report on Trustblock, by CertiK, dated 26 Jun 2023. That report lists no open critical findings.

Critical findings
No open critical findings
In 1 report.
Open the latest report
Your label, live
Get the label for your site

Record last updated . It holds audits, findings and contracts up to Nov 2026, and incidents up to Oct 2026. Trustblock does not review code.

Audits1

Newest first

AuditSecurity firmDateScopeCritical findingsReport
Foxify - New DealSecurity firm: CertiKDate: Scope: Files named in the reportNo open critical findingsOpen · skynet.certik.com

Findings11

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

SeverityOpenAcknowledgedFixed
Critical000
High010
Medium000
Low406
LowInaccurate Event Logging in `addKeepers()` FunctiFoxify - New Deal · CertiK · 26 Jun 2023Open

The `addKeepers()` function is used to add addresses from the `keepers_` array to the `_keepers` address set. If an address already exists in the set, the `add()` function returns false instead of reverting the transaction. Consequently, the `KeepersAdded` event logs may contain existing addresses, causing inconsistencies between event logs and the actual state of the `_keepers` set. Likewise, If an address does not exist in the set, the `remove()` function returns false instead of reverting the transaction. Consequently, the `KeepersRemoved` event logs may contain those addresses. Other functions mentioned in the "Locations" section suffer from the same issue. ```solidity=141 function addKeepers(address[] memory keepers_) external onlyOwner returns (bool) { for (uint256 i = 0; i < keepers_.length; i++) { address keeper_ = keepers_[i]; require(keeper_ != address(0), "CoreConfiguration: Keeper is zero address"); _keepers.add(keeper_); } emit KeepersAdded(keepers_); return true; } ``` ```solidity=160 function removeKeepers(address[] memory keepers_) external onlyOwner returns (bool) { for (uint256 i = 0; i < keepers_.length; i++) { address keeper_ = keepers_[i]; _keepers.remove(keeper_); } emit KeepersRemoved(keepers_); return true; } ```

Open the report
LowIncompatibility with Deflationary TokensFoxify - New Deal · CertiK · 26 Jun 2023Open

When transferring deflationary ERC20 tokens, the input amount may not be equal to the received amount due to the charged transaction fee. For example, if a user sends 100 deflationary tokens (with a 10% transaction fee), only 90 tokens actually arrived to the contract. However, a failure to discount such fees may allow the same user to withdraw 100 tokens from the contract, which causes the contract to lose 10 tokens in such a transaction. Reference: https://thoreum-finance.medium.com/what-exploit-happened-today-for-gocerberus-and-garuda-also-for-lokum-ybear-piggy-caramelswap-3943ee23a39f ```solidity=99 _immutableConfiguration.stable.transferFrom(msg.sender, address(this), amount); ``` - Transferring tokens by `amount`. ```solidity=98 counters_.totalStableAmount += amount; ``` - The `amount` appears to be used for bookkeeping purposes without compensating the potential transfer fees. --- ```solidity=224 if (amount > 0) _immutableConfiguration.stable.transferFrom(msg.sender, address(this), amount); ``` - Transferring tokens by `amount`. ```solidity=223 counters_.totalStableAmount += amount; ``` - The `amount` appears to be used for bookkeeping purposes without compensating the potential transfer fees. --- ```solidity=258 _immutableConfiguration.stable.transferFrom(msg.sender, address(this), amount); ``` - Transferring tokens by `amount`. ```solidity=257 counters_.totalStableAmount += amount; ``` - The `amount` appears to be used for bookkeeping purposes without compensating the potential transfer fees.

Open the report
LowOut-of-Scope DependenciesFoxify - New Deal · CertiK · 26 Jun 2023Open

The `Core` contract is serving as the underlying entity to interact with the following out-of-scope contracts: - IERC20Stable stable - IFoxifyAffiliation affiliation - IOracleConnector oracle_ - ISwapperConnector swapperConnector The scope of the audit treats out-of-scope entities as black boxes and assumes their functional correctness. However, in the real world, they can be compromised and this may lead to lost or stolen assets. For instance, the project heavily relies on the price feed from the oracle contracts. If the price data from the oracles is manipulated, it could severely impact the tokenomics of the project. Furthermore, within the `autoResolve()` function, the `autoResolveFee` is the return value of `swapperConnector.getAmountIn()`. If this value is large enough, the winner of a position might not receive any rewards.

Open the report
LowTiming Vulnerability and Position Manipulation RiFoxify - New Deal · CertiK · 26 Jun 2023Open

The `autoResolve()` function in the current codebase, designed to resolve a position when `block.timestamp` surpasses the position's `endTime`, has potential vulnerabilities which could be exploited in certain scenarios. Firstly, the function assigns the current price as the `endPrice` of the position, which might not accurately represent the price at `endTime`. Since the function can only be triggered by a "keeper", if all of the keepers' accounts are compromised, the hacker can delay the invocation of `autoResolve()` to manipulate the `endPrice`. Secondly, if all of the keepers' accounts are compromised, the hacker can even extend the delay beyond the `endTime + CANCELATION_PERIOD`, which leads to the burning of the position when `autoResolve()` is finally called. In this scenario, if the attacker is the creator of the position and is set to lose, they could evade giving the `amountCreator` tokens to the winner. Conversely, if the attacker is the position holder, they can retrieve the `amountAccepter` tokens.

Open the report

Contracts

No deployed address is recorded for these audits.

The reports name a repository or files. Open a report to see its scope.

The repositories and files the reports name

Show this on your site

Is this your project? Show this record on your own website. The label states what the record holds, links to this page and updates by itself. It is free and needs no sign-in.

Content

Facts

Automatic: the three strongest facts of this project’s own record (its last audit and two more), highlighted. They update with the record. Picking a fact turns Automatic off.

Fixed as
Language

Style

Layout
Theme
Accent
Corners

Format

Size
Date
Embed as
HTML
<head>
<script src="https://widget.trustblock.run/project-widget.min.js" defer></script>
</head>
<body>
<div
data-tb-project-widget
data-tb-project-slug="foxify"
></div>
</body>

Paste the code where the label should appear. It uses no API credit and updates by itself.

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