ICHI security record

Arbitrum, Base, Blast, BNB Chain, Ethereum, Fantom, Polygon (POS), Polygon zkEVM, Scrollichi.orgXGitHub

As of 14 Oct 2026, ICHI has 1 audit report on Trustblock, by Quantstamp, dated 24 May 2021. 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 and findings, contracts and incidents up to Oct 2026. Statuses are the security firms’ own. Trustblock does not review code.

Audits1

Newest first

AuditSecurity firmDateScopeCritical findingsReport
IchiSecurity firm: QuantstampDate: Scope: Files named in the reportNo open critical findingsOpen · certificate.quantstamp.com

Findings29

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

SeverityOpenAcknowledgedFixed
Critical000
High004
Medium013
Low0714
MediumPrivileged Roles and OwnershipIchi · Quantstamp · 24 May 2021Acknowledged

Smart contracts will often have `owner` variables to designate the person with special privileges to make modifications to the smart contract. In particular: 1. Owners of `Arbitrary` strategy contracts can transfer any tokens anywhere. It is also expected that they will retrieve underlying positions manually before `_closeAllPositions` is invoked. 1. When a user mints oneTokens, they can provide both collateral and member tokens, however when redeeming, only collateral tokens may be obtained. It must be ensured by the contract owner and underlying strategy that assets are used in a principle-preserving way. If the owner/strategy does not preserve the principle, the initial holders will indeed receive a 1-to-1 value exchange until the collateral reserve is depleted. Holders that redeem last will find themselves with _valueless oneTokens_ that cannot be redeemed anymore - not even at the minting ratio of 90%. 1. Owners of `OneTokenV1` can set redemption and minting fees up to 100%.

Open the report
Low`maxOrderVolume` is always `INFINITE`Ichi · Quantstamp · 24 May 2021Acknowledged

In the function `getMintingRatio4`, `maxOrderVolume` is set to `INFINITE` in all paths. It is not clear if this is correct or not.

Open the report
Low`setStrategyAllowance` misses funds that are currently deployedIchi · Quantstamp · 24 May 2021Acknowledged

The `setStrategyAllowance` functions computes the current holdings as the balance of the strategy contract: `IERC20(token).balanceOf(a.strategy);`. This does not include the holdings that are already used in a different contract as part of the strategy. This is also susceptible to being front-run with a transaction that moves the funds to a different contract in the strategy but as strategy funds are controlled by governance, this will most likely not be an issue.

Open the report
LowClone-and-OwnIchi · Quantstamp · 24 May 2021Acknowledged

The clone-and-own approach involves copying and adjusting open source code at one's own discretion. From the development perspective, it is initially beneficial as it reduces the amount of effort. However, from the security perspective, it involves some risks as the code may not follow the best practices, may contain a security vulnerability, or may include intentionally or unintentionally modified upstream libraries.

Open the report
LowStub volatility valuesIchi · Quantstamp · 24 May 2021Acknowledged

The volatility of any Uniswap pair is reported as zero, even though price fluctuations may exist.

Open the report
LowUnclear volatility computation in composite oraclesIchi · Quantstamp · 24 May 2021Acknowledged

The function `read` states that "volatility is calculated by the final oracle". It is not clear why this is only a function of the volatility of the final oracle. If there is volatility in each of the interim tokens, this would influence the resulting `amountOut`.

Open the report
LowUnclear why `init` may be called multiple timesIchi · Quantstamp · 24 May 2021Acknowledged

The docstring for `init` indicates that "a strategy is dedicated to exactly one oneToken instance and must be re-initializable". It is not clear why it must be re-initializable, given that it is dedicated to a `oneToken` that cannot change.

Open the report
LowUnlocked PragmaIchi · Quantstamp · 24 May 2021Acknowledged

Every Solidity file specifies in the header a version number of the format `pragma solidity (^)0.4.*`. The caret (`^`) before the version number implies an unlocked pragma, meaning that the compiler will use the specified version _and above_, hence the term "unlocked".

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