# BID_TTL Bypass in Recharge Auction Allows Premature Settlement, Enabling Cheap CRT To- ken Minting

Recharge auction's BID_TTL check could be bypassed by supplying attacker-chosen current_timestamp values, letting one spend bundle start, bid, and settle instantly to mint CRT tokens at minimum price.

- Payout: Contest reward
- Severity: medium
- Program: Circuit Puzzles
- Credited: perseverance
- Disclosed: 2025-08-21
- Write-up quality: 7/10
- Original: https://cdn.cantina.xyz/reports/cantina_competition_circuit_puzzles.pdf#3.3.2
- Library page: https://bugbountylibrary.com/r/cantina%3Acircuit_puzzles%3A3.3.2
- Tags: domain:web3 impact:funds-loss kind:contest platform:cantina sev:medium tech:solidity technique:source-review vuln:business-logic vuln:race-condition

**Target:** Chia puzzle (clsp) recharge auction settlement logic
**Root cause:** current_timestamp is user-supplied and only loosely bounded (T_prev_block-599 to T_prev_block+120, a 719s window) while BID_TTL is 300s, so bid and settle can use timestamps far apart within the same block.
**Steps:**
1. Wait until Treasury below minimum; call `recharge_start_auction.clsp` (permissionless) to create recharge_auction coin with amount=0.
2. In same spend bundle call `recharge_bid.clsp` with `current_timestamp = T_prev_block - 599`, `byc_bid_amount = 101`, `crt_bid_amount = 100_999` (passes min_byc_bid_amount=100 and min_crt_price=10^7).
3. LAST_BID.timestamp becomes T_prev_block - 599.
4. In same bundle call `recharge_settle.clsp` with `current_timestamp = T_prev_block + 119`; delta = 718 > BID_TTL=300, so settlement passes.
5. Auction settles: 101 BYC to Treasury, 100_999 mCRT minted to attacker.
**How found:** Code review of recharge_settle.clsp/recharge_bid.clsp timestamp assertions; noticed the permissible current_timestamp range (719s) exceeds the configured BID_TTL (300s), enabling a same-block bid-then-settle with divergent timestamps.
**Exploitation:** Attacker bundles start, bid, and settle into one spend bundle in one block, using the minimum bid and a manipulated settle timestamp to win the auction instantly before any competing bidder can act, minting CRT at minimum price.
**Escalation:** Repeatable to mint large amounts of CRT at minimum price, affecting token supply and pricing.
**Insight:** When a contract lets the caller supply a timestamp bounded only by relative block-time assertions, compare the total permissible drift window against any TTL/timeout it is meant to enforce; if the window exceeds the TTL, the timeout is bypassable within a single block.
