Fastex security record

Ethereumfastex.com

As of 3 Nov 2026, Fastex has 4 audit reports by 2 security firms on Trustblock; the latest is by CertiK, dated 18 Jan 2024. Those reports list no open critical findings.

Critical findings
No open critical findings
Across the 4 reports, 1 critical finding was reported. It is marked fixed by the firm that reported it. See the findings
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.

Audits4

Newest first

AuditSecurity firmDateScopeCritical findingsReport
DECASecurity firm: CertiKDate: Scope: Files named in the reportNo open critical findingsOpen · skynet.certik.com
Bahamut Execution and ConsensusSecurity firm: CertiKDate: Scope: Files named in the reportNo open critical findingsOpen · skynet.certik.com
Bahamut security reviewSecurity firm: HexensDate: Scope: Not recorded (see the report)1 critical finding, fixedOpen · GitHub
Fastex - Token Distribution SCSecurity firm: CertiKDate: Scope: Files named in the reportNo open critical findingsOpen · skynet.certik.com

Findings73

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

SeverityOpenAcknowledgedFixed
Critical001
High224
Medium1012
Low4443
HighCentralization Related RisksDECA · CertiK · 18 Jan 2024Open

In the contract `Casino` the role `OWNER_ROLE` has authority over the functions shown in the diagram below. ![](https://accelerator-tasks-prod.acc.corp.certik.com/fa9f9b3bfd2049c3a8c63d796f0da50d/diagrams/centralization_Casino-Casino-OWNER_ROLE.svg) Any compromise to the `OWNER_ROLE` account may allow the hacker to take advantage of this authority and - Withdraw owner profit to arbitrary addresses - Migrate to a new fabric contract - Withdraw instantly from player channels - Add/Set available games - Lock/Unlock FastChannel and partner - Transfer `OWNER_ROLE` to other address In the contract `FastChannelV3Fabric` the role `CasinoSigner` has authority over the following functions: - serverStep() - updateStateAsUser() - updateGameStateAsUser() - updateStateAsServer() Any compromise to the `CasinoSigner` account may allow the hacker to take advantage of this authority and modify the game states inside of the fabric contract. In the contract `BaseGame` the role `Owner` has authority over the following functions: - setBetProperties() Any compromise to the `Owner` account may allow the hacker to take advantage of this authority and modify the `minBet`, `maxBet` and `maxWin`.

Open the report
HighIneffective Signature DesignDECA · CertiK · 18 Jan 2024Open

The functions `updateStateAsServer()` and `updateGameStateAsServer()` should only be accessible to the backend server according to their naming. While in the current implementation, these two functions enable the player to choose the signer of the signature, who can create arbitrary messages. For instance, the signer could collude with the channel player and sign an incorrect `balanceChange_`, allowing the player channel to receive more assets from the casino contracts than intended through the function `_changeBalanceByFC()`. Besides, the signer can manipulate the internal game states using the `updateGameStateAsServer()` function, which could potentially facilitate cheating. For instance, they could increase the `freeSpinStateIndex` to obtain additional free spin opportunities. ```solidity=267 function updateStateAsServer( address channelAddress_, uint256[] memory gameNonces_, int256 balanceChange_, uint32 newNonce_, bytes memory sSign_, address signerAddress_, bytes memory uSign_) public { require(recoverSigner(signerAddress_, uSign_) == V3Channels[channelAddress_].player, 'Error: Wrong signature for setting signer'); require(V3Channels[channelAddress_].nonce + NONCE_JUMP <= newNonce_, 'Error: New nonce should be higher than existing one'); require(recoverSigner(channelAddress_, gameNonces_, balanceChange_, newNonce_, sSign_) == signerAddress_, 'Error: Wrong signature'); V3Channels[channelAddress_].nonce = newNonce_; V3Channels[channelAddress_].nonceList = gameNonces_; _changeBalanceByFC(channelAddress_, balanceChange_); emit ServerUpdatedState(channelAddress_, balanceChange_, newNonce_); } ```

Open the report
MediumPotential risks in `withdraw()` functionDECA · CertiK · 18 Jan 2024Open

The current withdraw function provides a 3-hour window (defined by FRZ_HRS) for the casino contract to update its internal states. We would like to understand if it's possible for the casino to fail to update the states within this timeframe, potentially allowing users to withdraw an incorrect amount of assets from the channel.

Open the report
LowMissing Emit EventsDECA · CertiK · 18 Jan 2024Open

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

Open the report
LowMissing Unit-test FileDECA · CertiK · 18 Jan 2024Open

We did not find any unit test files, and there is no `test` folder in the project. ``` js npm test ./test/[fileName].js. Will test all functions in that file ```

Open the report
LowOut of Scope DependencyDECA · CertiK · 18 Jan 2024Open

Contracts in this project are serving as the underlying entities to interact with the backend `Casino server` and privileged role `signer`. The scope of the audit treats out-of-scope entities as black boxes and assumes their functional correctness. However, in the real world, these entities can be compromised and this may lead to lost or stolen assets.

Open the report
LowVariables That Could Be Declared as ImmutableFastex - Token Distribution SC · CertiK · 14 Oct 2022Open

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.

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="bahamut"
></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