Unreal Finance security record

As of 3 Nov 2026, Unreal Finance has 1 audit report on Trustblock, by CertiK, dated 13 Oct 2022. 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
Unreal FinanceSecurity firm: CertiKDate: Scope: Files named in the reportNo open critical findingsOpen · skynet.certik.com

Findings20

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

SeverityOpenAcknowledgedFixed
Critical000
High201
Medium001
Low2014
HighCentralization Related RiskUnreal Finance · CertiK · 13 Oct 2022Open

In the contract `Core` the role `_owner` has authority over the functions shown in the diagram below. Any compromise to the `_owner` account may allow the hacker to take advantage of this authority and change the implementation through `upgradeTo()`. In turn, since this contract is the owner of each futures contract and is meant to be the owner of the `Treasury` contract, tokens can be sent to unintended address from each. ![](https://accelerator-tasks-prod.acc.corp.certik.com/132aaf98f0fd44aa97f9c0fc07df67b8/diagrams/centralization_Core-Core-_owner.svg) In the contract `Treasury` the role `_owner` has authority over the functions shown in the diagram below. Any compromise to the `_owner` account may allow the hacker to take advantage of this authority and send underlying asset tokens to unintended addresses, draining tokens from the contract. ![](https://accelerator-tasks-prod.acc.corp.certik.com/132aaf98f0fd44aa97f9c0fc07df67b8/diagrams/centralization_Treasury-Treasury-_owner.svg) In the contract `AFuture` the role `_owner` has authority over the functions shown in the diagram below. Any compromise to the `_owner` account may allow the hacker to take advantage of this authority and mint an unbounded number of `oT` tokens, then burning them in exchange for the underlying asset token through the `Core` contract. ![](https://accelerator-tasks-prod.acc.corp.certik.com/132aaf98f0fd44aa97f9c0fc07df67b8/diagrams/centralization_AFuture-AFuture-_owner.svg) In the contract `AaveV3Future` the role `_owner` has authority over the functions shown in the diagram below. Any compromise to the `_owner` account may allow the hacker to take advantage of this authority and mint an unbounded number of `oT` tokens, then burning them in exchange for the underlying asset token through the `Core` contract. ![](https://accelerator-tasks-prod.acc.corp.certik.com/132aaf98f0fd44aa97f9c0fc07df67b8/diagrams/centralization_AaveV3Future-AaveV3Future-_owner.svg) In the contract `CFuture` the role `_owner` has authority over the functions shown in the diagram below. Any compromise to the `_owner` account may allow the hacker to take advantage of this authority and mint an unbounded number of `oT` tokens, then burning them in exchange for the underlying asset token through the `Core` contract. ![](https://accelerator-tasks-prod.acc.corp.certik.com/132aaf98f0fd44aa97f9c0fc07df67b8/diagrams/centralization_CFuture-CFuture-_owner.svg) In the contract `YFuture` the role `_owner` has authority over the functions shown in the diagram below. Any compromise to the `_owner` account may allow the hacker to take advantage of this authority and mint an unbounded number of `oT` tokens, then burning them in exchange for the underlying asset token through the `Core` contract. ![](https://accelerator-tasks-prod.acc.corp.certik.com/132aaf98f0fd44aa97f9c0fc07df67b8/diagrams/centralization_YFuture-YFuture-_owner.svg) In the contract `FutureBase` the role `_owner` has authority over the functions shown in the diagram below. Any compromise to the `_owner` account may allow the hacker to take advantage of this authority and mint an unbounded number of `oT` tokens, then burning them in exchange for the underlying asset token through the `Core` contract. ![](https://accelerator-tasks-prod.acc.corp.certik.com/132aaf98f0fd44aa97f9c0fc07df67b8/diagrams/centralization_FutureBase-FutureBase-_owner.svg) In the contract `FutureBase` the role `treasury` has authority over the functions shown in the diagram below. Any compromise to the `treasury` account may allow the hacker to take advantage of this authority and call `expire()` which calls internal `withdraw()`, sending all underlying asset tokens to the `treasury` address. ![](https://accelerator-tasks-prod.acc.corp.certik.com/132aaf98f0fd44aa97f9c0fc07df67b8/diagrams/centralization_FutureBase-FutureBase-treasury.svg) In the contract `OwnershipToken` the role `MINTER_ROLE` has authority over the functions `burn()` and `mint()`. Any compromise to the `MINTER_ROLE` account may allow the hacker to take advantage of this authority and mint an unbounded number of tokens to an unintended address, which could then be exchanged for the underlying asset via the `Core` contract. Moreover, the hacker could burn any amount of tokens from any holding address. The same `MINTER_ROLE` vulnerability occurs in `YieldToken`. In the contract `OwnershipToken` the role `ADMIN_ROLE` has authority over updating the `MINTER_ROLE`. Any compromise to the `ADMIN_ROLE` account may allow the hacker to take advantage of this authority and change the `MINTER_ROLE` to an unintended address. The same `ADMIN_ROLE` vulnerability occurs in `YieldToken`.

Open the report
HighCentralized Control of Contract UpgradeUnreal Finance · CertiK · 13 Oct 2022Open

`Core` is an upgradeable contract; the owner can upgrade the contract without the community's consent. If an attacker compromises the account, he or she can change the implementation of the contract and drain tokens from the contract.

Open the report
LowCheck Effect Interaction Pattern ViolatedUnreal Finance · CertiK · 13 Oct 2022Open

The order of external call/transfer and storage updates should follow the check-effect-interaction pattern.

Open the report
LowThird Party DependencyUnreal Finance · CertiK · 13 Oct 2022Open

The contract is serving as the underlying entity to interact with one or more third party protocols. The scope of the audit treats third party entities as black boxes and assume their functional correctness. However, in the real world, third parties can be compromised and this may lead to lost or stolen assets. In addition, upgrades of third parties can possibly create severe impacts, such as increasing fees of third parties, migrating to new LP pools, etc. ```solidity=20 address public immutable underlying; ``` - The contract `FutureBase` interacts with third party contract via `underlying`. --- ```solidity=16 ILendingPoolAddressesProvider private provider; ``` - The contract `AFuture` interacts with third party contract with `ILendingPoolAddressesProvider` interface via `provider`. --- ```solidity=16 IPoolAddressesProvider private provider; ``` - The contract `AaveV3Future` interacts with third party contract with `IPoolAddressesProvider` interface via `provider`. --- ```solidity=15 CTokenInterface private cToken; ``` - The contract `CFuture` interacts with third party contract with `CTokenInterface` interface via `cToken`. --- ```solidity=12 IVault private yVault; ``` - The contract `YFuture` interacts with third party contract with `IVault` interface via `yVault`.

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="unreal-finance"
></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