UnibotX security record

Ethereumunibot.appX

As of 3 Nov 2026, UnibotX has 1 audit report on Trustblock, by Quantstamp, dated 13 Nov 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
UniBot (Diamond Protocol)Security firm: QuantstampDate: Scope: Files named in the reportNo open critical findingsOpen · certificate.quantstamp.com

Findings34

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

SeverityOpenAcknowledgedFixed
Critical000
High002
Medium108
Low1715
LowFixed Stop Loss FeeUniBot (Diamond Protocol) · Quantstamp · 13 Nov 2022Acknowledged

In `DiamondFactoryV3.stopLoss()` the fee to execute the operation for any position is fixed and is not a percentage of the position to be closed, meaning that a user with an amount lower or equal to the fee will not get any return value from his position being closed.

Open the report
LowIncorrect Use of the Values Returned by Uniswap V3 FunctionsUniBot (Diamond Protocol) · Quantstamp · 13 Nov 2022Acknowledged

In the function `_removeUniLiquidity()`, the function `NonfungiblePositionManager.decreaseLiquidity()` is used. According to the documentation, it returns two parameters `amount0` and `amount1`, being respectively the amounts of `token0` and `token1` accounted for the position's tokens owed. However, these returned values are not checked. https://docs.uniswap.org/protocol/reference/periphery/NonfungiblePositionManager#decreaseliquidity Also, the function `NonfungiblePositionManager.collect()` is used. According to the documentation, the function `collect()` returns two parameters `amount0` and `amount1`, being respectively the amounts of fees collected in `token0` and `token1`. However, the code considers these returned values as the amounts of `token0` and `token1` removed from the pool. https://docs.uniswap.org/protocol/reference/periphery/NonfungiblePositionManager#collect

Open the report
LowMismatch Between Documentation and Code for `lendingRate` FormulaUniBot (Diamond Protocol) · Quantstamp · 13 Nov 2022Acknowledged

In the documentation (https://dmo-protocol.gitbook.io/diamond/unibot/pool), the formula to compute the Lending Rate includes a variable `Reserve Factor`. However, it does not appear in the function `getLendingRate()`.

Open the report
LowOptional Whitelisting Mechanism Has DrawbacksUniBot (Diamond Protocol) · Quantstamp · 13 Nov 2022Acknowledged

The contract `DiamondFactoryController` uses an optional whitelisting mechanism to limit the addresses that can interact with some whitelisted functions. It is based on two data structures: - the state `mapping(address=>bool) contractWhiteList`; - a merkleTree with its root hash stored in the state variable `merkleRoot`; 1. One issue is that a MerkleTree data structure is used for access controls. Doing so has drawbacks: - for each update of the tree (address creation, update, removal), the variable `merkleRoot` must be updated in the contract; - the current tree state must be stored somewhere and maintained; - the list of authorized addresses is not visible on-chain; - an authorized address must know the current tree to build the parameter `_proof` needed to call a whitelisted function; 2. A second issue is that we can imagine an address being added to both data structures. Then, if the address needs to be removed, it should be removed from both data structures. If not, it would still be whitelisted in the second data structure.

Open the report
LowOutdated Solidity VersionUniBot (Diamond Protocol) · Quantstamp · 13 Nov 2022Acknowledged

As security standards develop, so does the Solidity language. To stay up to date with current practices, it's important to use a recent version of Solidity and conventions.

Open the report
LowRisks Related to Using a Proxy PatternUniBot (Diamond Protocol) · Quantstamp · 13 Nov 2022Acknowledged

During the audit, the team shared their intent to use a proxy pattern for the contracts `DiamondFactoryV3` and `LendingPoolV3`. Adding a proxy contract that is not audited could add challenges and vulnerabilities to the project: - memory slot clashing; - selector clashing; - functions `init()` vulnerable to front-running; - any upgrade of the implementation contract should deal with the fact that the current business logic of `DiamondFactoryV3` is already close to 24576 bytes; - data should be stored in the proxy contract, not in the implementation contract;

Open the report
LowTime Management Specificities when Deploying on a Layer 2UniBot (Diamond Protocol) · Quantstamp · 13 Nov 2022Acknowledged

Different Layer 2 networks can have different ways to handle the values of block.number and block.timestamp. As a result, vulnerabilities can appear: - For example, according to Uniswap V3 docs, the TWAP feature of a pool should be avoided on Optimism. https://docs.uniswap.org/protocol/concepts/V3-overview/oracle#oracles-integrations-on-layer-2-rollups - Also, according to Arbitrum docs, the rule of thumb is the following: "As a general rule, any timing assumptions a contract makes about block numbers and timestamps should be considered generally reliable in the longer term (i.e., on the order of at least several hours) but unreliable in the shorter term (minutes). (It so happens these are generally the same assumptions one should operate under when using block numbers directly on Ethereum!)" https://developer.arbitrum.io/time. The exact impact will depend on the chosen network, and it cannot be determined.

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