Overview
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.
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.
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.
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).
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.
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.”
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.”
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.
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.
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.