Core Contracts

Regnum Aurum Acquisition Corp
HardhatReal World AssetsNFT
77,280 USDC
View results
Submission Details
Severity: low
Invalid

The “ZENO” Auction Feature Is Never Used, Despite Indicated for NFT Liquidations

Overview

  1. Protocol Directory Mentions zeno/Auction.sol & zeno/ZENO.sol

    • Typically, references to “ZENO auctions” in the documentation or folder structure hint at a specialized on-chain auction system for forcibly selling NFT collateral or performing advanced RAAC auctions.

  2. No Integration in NFTLiquidator or LendingPool

    • The NFTLiquidator code uses an internal “auction” logic (tokenData[tokenId].auctionEndTime, bidPlaced, etc.) that is wholly distinct from “ZENO.”

    • The LendingPool similarly references a finalization method that calls raacNFT.transferFrom(...) to the stability pool or the user, but never mentions or calls “ZENO.”

    • The ZENO.sol or Auction.sol code (not shown in the snippet, but indicated by the directory) is presumably a more robust or advanced auction contract. No synergy or hooking code is present.

  3. Result: The entire “ZENO” system does not appear to be triggered or even recognized in the liquidation flow or any synergy with “NFTLiquidator.” The code references an internal “auctionEndTime” in NFTLiquidator, ignoring “ZENO.” Meanwhile, “ZENO” presumably stands idle with no calls from the rest of the protocol.

Impact

  1. Duplicated or Unused Auction Logic

    • The protocol invests code for an internal “auction” in NFTLiquidator, ignoring the presumably better or separate “ZENO Auction.” This duplication or mismatch can cause confusion or incomplete usage of the advanced “ZENO” features (like extended bidding, advanced curve logic, etc., if that was the design).

  2. Dead Contract

    • If “ZENO” was meant to handle forced NFT sales, but the actual code never references it, it remains effectively unused or “dead.” Potentially, the system leaves valuable functionality unexploited.

  3. Contradiction of Documentation

    • The doc or code comments might suggest “ZENO Auction” as a main path for RAAC NFT liquidation, but in practice, the protocol uses NFTLiquidator’s simpler approach with no mention or call to “ZENO.”

  4. Inconsistent System

    • If a user or integrator expects the advanced “ZENO” approach to be used for forced liquidation or advanced auctions, they are misled. The actual code just uses a simpler approach in NFTLiquidator, ignoring “ZENO.”

Recommendation

  1. Link NFTLiquidator and “ZENO”

    • Modify NFTLiquidator.liquidateNFT(...) to call or create a ZENO auction for the seized NFT rather than implementing a custom “auctionEndTime” and “highestBid” logic.

    • Or remove the “ZENO” folder if the simpler approach in NFTLiquidator is final, to avoid confusion.

  2. Prevent Code Duplication

    • If “ZENO” is more robust, deprecate the simpler “auction” code in NFTLiquidator in favor of a call to ZENO.startAuction(tokenId,...). That ensures a single robust solution for all forced sales.

Updates

Lead Judging Commences

inallhonesty Lead Judge 7 months ago
Submission Judgement Published
Invalidated
Reason: Non-acceptable severity

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.

Give us feedback!