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.
Record last updated . It holds audits and findings, contracts and incidents up to Oct 2026. Trustblock does not review code.
Newest first
| Audit | Security firm | Date | Scope | Critical findings | Report |
|---|---|---|---|---|---|
| YoloRekt | Security firm: QuillAudits | Date: | Scope: Files named in the report | No open critical findings | Open · quillaudits.com |
Statuses are the security firm’s own, from each report.
| Severity | Open | Acknowledged | Fixed |
|---|---|---|---|
| Critical | 0 | 0 | 0 |
| High | 3 | 0 | 10 |
| Medium | 5 | 0 | 10 |
| Low | 9 | 0 | 9 |
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 reportIt 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 reportupdatetracking 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 reportThe 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 reportReferring 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 reportyolosharetokens 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 reportThe 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 reportThe settlementPrice and nextStrikePrice parameters can be manipulated by admin in order to favour specific bidders.
Open the reportFunctions 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 reportReferring 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 reportThe 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 reportFunctions 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 reportFunctions 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 reportFunctions 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 reportThere 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 reportUnsafe downcasting is done from uint256 to uint128 on line: 371 in releaseFunds() function which can result in undesired results or bugs.
Open the reportAs 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 reportThe reports name a repository or files. Open a report to see its scope.
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.
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.
<head><script src="https://widget.trustblock.run/project-widget.min.js" defer></script></head><body><divdata-tb-project-widgetdata-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