YoloRekt security record

As of 25 Oct 2026, YoloRekt has 1 audit report on Trustblock, by QuillAudits, dated 7 Mar 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 and findings, contracts and incidents up to Oct 2026. Trustblock does not review code.

Audits1

Newest first

AuditSecurity firmDateScopeCritical findingsReport
YoloRektSecurity firm: QuillAuditsDate: Scope: Files named in the reportNo open critical findingsOpen · quillaudits.com

Findings46

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

SeverityOpenAcknowledgedFixed
Critical000
High3010
Medium5010
Low909
HighExploiting rewards#2YoloRekt · QuillAudits · 7 Mar 2022Open

Functions updateTracking and bumpDuringUpgrade are supposed to be called by NFTTracker and YoloNFTPack respectively. However, the modifier utilized i.e onlyAuthorized expands this capability to anyone having: • NFT_TRACKER or YOLO_NFT_PACK role in BiddersRewards • NFT_TRACKER or YOLO_NFT_PACK role in associated YoloRegistry of BiddersRewards • DEFAULT_ADMIN_ROLE or ADMIN_ROLE role in associated YoloRegistry of BiddersRewards can call the concerned functions. This widens up the attack surface, as authorized roles may take advantage of their privileged roles and may use these functions to exploit rewards.

Open the report
HighMissing sanity value checks on amount in makeMarketBidYoloRekt · QuillAudits · 7 Mar 2022Open

It is possible to bid 0 amount or even very low amounts via the makeMarketBid function. Thus the MAX_BIDS limit can be reached quickly if one is allowed to bid 0 amount of tokens. This could result in manipulation of gamerounds in order to win or deny other people from bidding.

Open the report
HighUsers can harvest more rewards than expectedYoloRekt · QuillAudits · 7 Mar 2022Open

updatetracking is done in bidInYolo based on the nft id for tracking bids for cumulative rewards which is fetched from usersTokens. But usersTokens from yoloNFTPack (which inherits from ERC1155SemiFungible) is used to fetch the token id which could get overwritten each time a token is transferred to an account.A user can exploit this by minting new nft for himself, then placing a bid such that bidCount increases by 1, then claiming rewards from BiddersRewards by calling harvest, then again minting a new nft that overwrites its previous nft tracked by usersTokens, then placing a bid such that bidCount increases by 1(possible because the id of this new nft is different) and then claiming rewards by calling harvest again. harvest() function gives more weight to the bidCount. So this exploit can be highly profitable to any user.

Open the report
MediumCentralization of withdrawYoloRekt · QuillAudits · 7 Mar 2022Open

The withdraw function allows the admin to withdraw all the funds from the contract at any point of time. A malicious admin can exploit this and drain the contract of all the funds.

Open the report
MediumDoS with rewardsMultiplierYoloRekt · QuillAudits · 7 Mar 2022Open

Referring to L3, releaseFunds has a strict condition, that rewardsMultiplier should be set for all the levels, and if any level’s rewardsMultiplier is not set, the entire function will revert. Authorized roles may take advantage and set any existing level’s rewardsMultiplier as 0, thus disallowing the release of funds

Open the report
MediumERC20Burnable comes with one more burn function that burnFromYoloRekt · QuillAudits · 7 Mar 2022Open

yolosharetokens contract comes with burnFrom function as well, which imposes the same risk of unintended share manipulation. If devs plan to revert this function as well, then ERC20Burnable can be removed from yolosharetokens as there will be no more use afterwards.

Open the report
MediumNot enough tracking space to accommodate all the NFT IDsYoloRekt · QuillAudits · 7 Mar 2022Open

The uint space for bidCount and cumulativeBidAmount for a single NFT Id is considered as uint64 and uint192 respectively, whereas, for level tracking, the same uint space has been considered. However, logically, a level is supposed to have a bigger uint space as it will be accommodating all the NFT IDs of this level.

Open the report
MediumPossible manipulation of settlementPrice and nextStrikePrice:YoloRekt · QuillAudits · 7 Mar 2022Open

The settlementPrice and nextStrikePrice parameters can be manipulated by admin in order to favour specific bidders.

Open the report
LowEncoding New BaseTypes may lead to collision/overlapping with existing BaseTypesYoloRekt · QuillAudits · 7 Mar 2022Open

Functions encodeNewNonFungibleBaseType and encodeNewSemiFungibleBaseType allows encoding new basetypes. The functions expect and allow a uint256(0 - 2^256-1) value to be encoded. However, the maximum value that can be encoded or the last available nonce that can be encoded as a basetype is 2^126-1, which means values >=2^126, will start overlapping/colliding with existing baseTypes.

Open the report
LowInsufficient uint space to hold possible baseTypesYoloRekt · QuillAudits · 7 Mar 2022Open

Referring to A.1, _nftNonce and _semiFtNonce are supposed to act as counter/nonce to create new baseTypes. They are of type uint120 and the maximum value they can hold is 2^120-1. However, the possible base types that can be created are 2^126-1 (considering 1 as the first baseType), as a consequence, the nonces will not able to accommodate all the possible base types. Contrary, it acts as a protection to avoid collisions(Refer. A.1) of base types that can happen after value 2^126-1, as the next uint type after uint120 is uint128, now opting to uint128 will open doors for collisions as the values can go more than 2^126-1

Open the report
Show 7 more
LowInsufficient uint space to hold possible token indexes/IDsYoloRekt · QuillAudits · 7 Mar 2022Open

The maxIndexes act as a nonce to mint new token Indexes/IDs. The maximum possible value that it can hold or in other words the maximum number that can be minted as token ID is 2^120-1. However, the number of possible token IDs that can be minted for a basetype are 2^128-1(starting from 1), which means, it is not possible to mint all the possible token IDs

Open the report
LowLogical Code Optimization#1YoloRekt · QuillAudits · 7 Mar 2022Open

Functions getCombinedLevelsWeighting and releaseFunds calculates weightage of every level as: rewardsMultiplier * (totalBidCount * COUNT_WEIGHT + totalCumulativeBidAmount * CUM_AMOUNT_WEIGHT) However, there is a strict condition, that rewardsMultiplier should be set for all the levels, and if any level’s rewardsMultiplier is not set, the entire function will revert. This can be optimized by making another memory array at the start, with a length same as nftLevelIdsListLength, and fetching and storing all the levels’ rewardsMultiplier. If any rewardsMultiplier is missing, the function can revert at this stage, without calculating the weightage of any level, thus reducing the number of operations and saving gas cost.

Open the report
LowLogical Code Optimization#2YoloRekt · QuillAudits · 7 Mar 2022Open

Functions getCombinedLevelsWeighting and releaseFunds calculates weightage of every level as: rewardsMultiplier * (totalBidCount * COUNT_WEIGHT + totalCumulativeBidAmount * CUM_AMOUNT_WEIGHT) However, the code can be optimized to calculate level weighting only if there exists any bid i.e.,  totalBidCount > 0, as it doesn’t make any sense to calculate level weighting if there exists no bid as the calculation will yield to 0 anyways.

Open the report
LowMissing Input ValidationYoloRekt · QuillAudits · 7 Mar 2022Open

Functions allow a registered game contract to increase or reduce an user’s amount with any value. However, the functions perform no input validation for the user address supplied, which may lead to unexpected results.

Open the report
LowMissing zero value checks for marketLimitYoloRekt · QuillAudits · 7 Mar 2022Open

There is no zero value check for the marketLimit. If the marketLimit is not set in the LiquidityPool contract or it is not updated in this contract(that is it is zero), it will result in makeMarketBid() function always failing due to the require statement on line: 185.

Open the report
LowUnsafe Downcasting from uintYoloRekt · QuillAudits · 7 Mar 2022Open

Unsafe downcasting is done from uint256 to uint128 on line: 371 in releaseFunds() function which can result in undesired results or bugs.

Open the report
LowUnused BaseType 0YoloRekt · QuillAudits · 7 Mar 2022Open

As the basetypes are created by incrementing _nftNonce and _semiFtNonce down. The first basetype will start from 1 and basetype 0 for NFT and SemiFT which are TYPE_NF_BIT and TYPE_SEMI_BIT themselves, will remain unused.

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