Foodriver security record

As of 3 Nov 2026, Foodriver has 1 audit report on Trustblock, by QuillAudits, dated 31 May 2024. 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
FoodriverSecurity firm: QuillAuditsDate: Scope: Not recorded (see the report)No open critical findingsOpen · quillaudits.com

Findings11

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

SeverityOpenAcknowledgedFixed
Critical000
High002
Medium102
Low204
HighIncorrect rate accounting would give users 100x more tokens than intended at mintFoodriver · QuillAudits · 31 May 2024Fixed

The rates for the private and public sale, privateSaleRate and publicSaleRate describe a 100 to 1 rate to support floating numbers. When these values get set in the updateTokenRates function it allows the following require checks to pass require(supportedTokens[token].privateSaleRate > 0, "Unsupported token or rate is 0"); require(supportedTokens[token].publicSaleRate > 0, "Unsupported token or rate is 0"); However it doesn't make the payout calculations correct.

Open the report
HighMissing token transfer validation could make functionality break due to improperly handled transfersFoodriver · QuillAudits · 31 May 2024Fixed

Tokens that comply with the ERC20 standard are expected to: • Moves amount tokens from the caller’s account to recipient. • Returns a boolean value indicating whether the operation succeeded.  • Emits a Transfer event. After an ERC20 token transfer, it is expected that the 3 conditions above are satisfied. It is recommended to validate the transfers with a check on the boolean value returned as some tokens do not fully comply with this specification (commonly called weird-erc20-tokens). If there is no validation on the return value of the transfer or transferFrom calls, the remainder of the function could run to completion without the tokens being transferred.   The purchasePublic and purchasePrivate functions call transferFrom on the token address passed and are vulnerable to this attack - if the function calls fail or revert for any reason (such as insufficient token balances) tokens will still be minted. Users will be able to effectively game the protocol by minting tokens in either of these sale periods without paying out those tokens.

Open the report
MediumMissing gap variables could cause storage collisions when upgrades occurFoodriver · QuillAudits · 31 May 2024Fixed

Upgradeable contracts allow for smart contracts to have extended functionality. They can be deployed as is, and upgraded at a later time to adjust the implementation. Within composable upgradeable contracts, the issue of storage collision exists which could alter the reading of storage for each of the contracts built atop each other.To avoid issues when reading or writing to storage it is advisable to have a gap introduced in each contract to prevent the new storage variables added from crossing into existing storage locations. Here, OpenZeppelin describes in detail how to manage smart contract storage with gaps: Writing Upgradeable Contracts - OpenZeppelin Docs

Open the report
MediumMissing input validation for varying percentage splits on orders createdFoodriver · QuillAudits · 31 May 2024Fixed

For orders created by the Store contract via the registry, there is no input validation for the different percentages that are passed in as arguments. It is expected that these values should not exceed 100% of the total amount but not enforced in the codebase. This would make some functions to revert or continue to run till the end and fail to transfer the expected token balances to the respective parties.

Open the report
LowEvents can be emitted out of orderFoodriver · QuillAudits · 31 May 2024Fixed

The Check-Effects-Interact [CEI] pattern helps to greatly reduce the risk of reentrancy in contracts, it is a best practice to emit events as part of the Effects before any external calls or interactions happen which could open up a reentrancy vulnerability.

Open the report
LowFooDriverToken can mint 0 tokens in endPublicSale and endPrivateSaleFoodriver · QuillAudits · 31 May 2024Fixed

The ERC20 internal _mint function does not revert when 0 tokens are passed in as an argument. A transfer event will also be emitted for the 0 token mints which would be unnecessary, especially for on-chain monitoring software.

Open the report
LowNo duration for public and private sale could make registry arbitrarily start the sale, mint all the tokens and end the saleFoodriver · QuillAudits · 31 May 2024Fixed

The current implementation of the token sale does not have any timing schedules for users to work with. Some of the issues with this are:• The public and private sale could happen concurrently, and this would cause some concern because public sales usually happen after the private sale is ended or fully subscribed to. • There is also no duration given for the tokens to be bought within, both sales could happen in a single hour not allowing the community to fully participate.

Open the report
LowWrong commentsFoodriver · QuillAudits · 31 May 2024Fixed

The comment * @notice Retrieves the address of a store by its ID. does not describe accurately what the function returns. The return value is a specific interface for the FooDriverStore, not an address as the comment says.

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.

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