Wick Crypto Engine
arrow_back Back to Bot Fleet Bot Detail · Prototype

Bot Titles

BASE-AAVE-LIQ-V1
gavel
BASE-AAVE-LIQ-V1 BASE STOPPED · STOPPED_UNKNOWN
Base Liquidation Exec · Aave / Morpho Liquidation
contract LiqExecutorV2
24h gas burn0
24h CB halts0
Base Aave V3 predictive liquidation bot (Morpho pipeline observation-only). Three-daemon Aave path: liq-watchlist (5s rescan of users in HF band [1.00, 1.15]) → liq-forecaster (projects HF under ±0.5/1/2/5% oracle-price shock scenarios, emits to base-liq-predictions.ndjson) → liq-executor-v2 (tails predictions, ranks by predicted netProfit, callStatic-sims top 10, batches up to 3 into one executeBatchLiquidations tx on FlashLiquidatorV2 at 0x2015…86Fc, redeployed 2026-05-21 with Venus-style custom-error bubble). Morpho fork in parallel (morpho-watchlist + morpho-forecaster) — observation-only, no Morpho executor wired yet. Flash-funded via Aave V3 + 0.05% fee, swap-out via Uniswap V3 (WETH/cbETH) or Aerodrome (USDbC/DAI). Circuit breaker (3 losses → 1h halt). Flagship Base bot per 2026-05-12 board directive.

Performance So Far

BASE-AAVE-LIQ-V1
Execution Funnel · last 24hdetect → validate → fire → land → profit
updownexternal/static·upper-left = inputs · upper-right = outputs · hover for role
0
Signals
→
0
Sims
→
0
Broadcasts
→
0
Mined
→
0
Wins
Net P&L (USD)
+$0.00
Wins
0
Losses
0
Total Trades
0
Win Rate
—
Gas Spent
—
Contract Balance
—

14-Day Profitability Sprint · Next 3 Moves

BASE-AAVE-LIQ-V1
Verdict DECOMMISSION CLOCK · 0d · 2026-06-04
CODE PATH DONE, 0 LIFETIME FIRES, GATED BY MARKET STATE. All 9 tracked watchlist users sit at HF 1.01-1.15. The 14-day question is whether we expand the addressable surface (Morpho + freshness) so first-fire isn't gated only by Base oracle randomness.
  • 01
    BUILD MORPHO EXECUTOR. morpho-watchlist + morpho-forecaster already emit position data into nothing. Mirror liq-executor-v2.js but call Morpho.liquidate() instead of Aave.liquidationCall, OR amend FlashLiquidatorV2 to accept a Morpho payload via a new sentinel byte.
    Why
    The bot card promises "Aave / Morpho" but Morpho is observation-only. We are advertising 2× coverage and shipping 1×. Morpho on Base has a separate pool of underwater positions — uncorrelated with Aave, so adding it materially expands the surface where a HF crossing can produce a first fire within 14 days. Highest-value single build on this bot.
    Success criterion
    By 2026-06-01: Morpho executor deployed; ≥1 callStatic-pass Morpho candidate logged. By 2026-06-04: ≥1 successful Morpho-path fire OR a documented Morpho HF<1.0 crossing handled (even if a competitor won the race).
    Effort
    3-4 days (mirror liq-executor-v2.js + Morpho contract integration + redeploy of FlashLiquidatorV2 with Morpho sentinel).
  • 02
    Pre-broadcast freshness probe on Aave HF. Between callStatic sim and tx send, do one more eth_getStorageAt on the user's aaveHealthFactor; abort if it crossed back above 1.0.
    Why
    When first fires DO start landing on Base, the borderline 1.00-1.005 candidates will be the bulk. Base oracle updates can flip HF back above 1.0 between sim and inclusion; without the probe, every such case is a sim-pass-then-tx-revert that burns gas. This makes the difference between "we got our first fire" being net-positive vs net-negative on day one.
    Success criterion
    By 2026-05-28: probe deployed and shows up in liq-executor-v2.log as a [STALE_HF_ABORT] entry on at least one near-miss; OR documented that no candidate in the window required the probe (cleanest possible state).
    Effort
    ~4 hours (one storage read + abort branch in liq-executor-v2.js around line 333).
  • 03
    Decode Aave V3 sim reverts into named categories. Map the 4-byte revert selectors so sim-reject reasons (33=HEALTH_FACTOR_NOT_BELOW_THRESHOLD, 34=COLLATERAL_CANNOT_COVER_NEW_BORROW, 49=NO_DEBT_OF_SELECTED_TYPE, etc.) land in a histogram instead of "call revert exception".
    Why
    Same pattern that unblocked PLS-AGG-ARB diagnostics. Once first fires start happening and some revert, we need named categories to know exactly which fix to ship next (parameter retune vs contract upgrade vs route blacklist). Without the histogram, every revert is a blind RCA — exactly what wasted 3 weeks on PLS-ATOMIC-ARB.
    Success criterion
    By 2026-05-31: Aave V3 revert-selector map (45+ codes) deployed in liq-executor-v2 sim path; histogram visible on /bots/BASE-AAVE-LIQ once first sim-fail accrues.
    Effort
    ~6 hours (copy the PLS-ATOMIC-ARB CONTRACT_ERROR_SELECTORS pattern + Aave-specific codes from AaveErrors.sol).
Acting CEO directive 2026-05-21 · 14-day sprint to demonstrate a credible profitability path for every flagship bot · Bots without progress on the moves above by 2026-06-04 are pulled from the flagship row and the slot is reassigned.

Future Performance Expectations · 7d / 30d / 90d

BASE-AAVE-LIQ-V1
Baseline · 2026-05-21
0 fires lifetime. All three daemons heartbeating fresh since 2026-05-14. 9 watchlist users at HF 1.01-1.15. Multicall3 batched HF reads, sticky-skip cooldown, 11-route swap coverage. Failure mode flipped from "infrastructure broken" to "no Base user crossing HF<1.0."
WindowNet USDFiresTier / stateShape · what has to happen
7d$0 – $600–2Aave-onlyProbability of first fire ~30-50% in any given week given Base oracle volatility. Per-fire $5-30 typical. Pre-broadcast HF freshness probe (Move 2 from sprint) saves gas on the 1.00-1.005 borderline candidates that will be the bulk of first fires.
30d$20 – $3002–10Aave + MorphoMorpho executor live (sprint Move 1). Addressable surface doubles. 2-10 fires/month at typical Aave-Morpho cadence on Base. Aave V3 sim-revert categories mapped — diagnostics tighten the borderline-HF false-positive rate.
90d$200 – $2,0005–50Aave + Morpho + same-block oracle racingBase mempool oracle racing live (analog to BSC-VENUS Move 3). Private bundle relayer integration on the Base sequencer. Bot transitions from "react to post-confirmation HF crossing" to "fire IN the block where Chainlink price update mints the opportunity." Structural moat against the 20-50 professional searcher fleet.
Kill condition
Zero fires across 60 days WITH Morpho live AND an observed HF<1.0 crossing during that window → infrastructure is broken, root-cause-or-kill.
Scaling behavior
Capital-light (Aave flash). Per-fire economics + competitor density set the ceiling, not notional. Reachable ceiling: $50-100/day at full sprint completion.
Ranges are expectation, not commitment. Lower bound: code stays as-is + market delivers its average. Upper bound: full sprint moves shipped + favorable market state. Decommission deadline 2026-06-04 is binary — kill conditions above are the threshold.

Recent Fire Attempts

BASE-AAVE-LIQ-V1
no recent fire
no recent fire
no recent fire
no recent fire
no recent fire
no recent fire
no recent fire
Last 7 TX_SEND events (newest left). Outcome stitched from log within ~80-line window after broadcast. Empty boxes = no recent fire to show.

Token Reverters (24h)

BASE-AAVE-LIQ-V1
No on-chain reverts in last 24h.
White / black lists are located at /bots/PLStokens.

Biggest Block

BASE-AAVE-LIQ-V1

Status 2026-05-26: OFF (deliberately) — do NOT restart the Aave poller. All three daemons down since 05-22/05-24. The real blocker is NOT "no liquidatable users" (that earlier read was wrong) — the live snapshot below finds ~10 liquidatable positions every cycle yet fires 0. The full revival analysis (Aave dust economics, 2s-poller latency, the marginal on-chain Morpho probe, options A-D, decision) is in the Conclusion. Engineering history + the diagnostic snapshot retained below.

The 2026-05-21 snapshot (last live) showed detection working — it is the sizing/filtering, not finding candidates, that produced 0 fires:

Today's shipped batch (2026-05-20):
1. Multicall3 batched HF reads in liq-executor-v2.js:333-358 — replaces 10 sequential pool.getUserAccountData() calls with one Multicall3.aggregate3(). Cycle latency dropped from 62s → ~1-2s.
2. Sticky-skip cooldown (STICKY_HOT_REJECTS=8, COLD_TIER_SKIP_CYCLES=2). Address-level state map. After 8 consecutive HF>=1.0 reads, an account enters "cold tier" and gets re-checked every 2 cycles instead of every cycle. Frees RPC budget for new candidates.
3. SWAP_ROUTES expansion in base-config.js + liq-executor-v2.js: AAVE token added 2026-05-20; combined coverage now WETH / cbETH / wstETH / cbBTC / USDC / USDbC / DAI / EURC / AERO / weETH / AAVE (≈ 11 routes vs the 4 the page used to claim).

Live pattern at 01:11Z 2026-05-21:

[CYCLE] 10 liquidatable positions — building candidates
[CYCLE] No viable candidates after sizing — 9x cold-tier (recent HF>=1.0 streak) | 1x no swap route

All 9 watchlist users sit at HF 1.01-1.15. Bot is correctly waiting for one to actually cross 1.0. No competitor-race losses, no swap-route gaps, no cycle-latency staleness.

Morpho still observation-only (morpho-watchlist + morpho-forecaster) — no Morpho executor exists yet, so "Aave + Morpho" on the bot card overstates current Morpho coverage.

Decoded sim-revert categories shipped 2026-04-27 (45-line Aave V3 code map). Recent snapshot: 168 wallets classified, 50 hot, 10 liquidatable per cycle. The opportunity surface is real and renewing — but no user has crossed since the relaunch. First fire is gated by market state, not engineering.

Fantasy

BASE-AAVE-LIQ-V1
If we had some way to...

If we had a private bundle relayer on Base (the way pulse-sentinel handles PulseChain), we could submit liquidation txs through the Base Sequencer's priority queue WITH a guarantee they land in the same block as the Chainlink oracle update that creates the opportunity. Today Base liquidations are a public-mempool race against ~20-50 other MEV bots; the bot that bids highest gas wins, and our 1.5× priority multiplier just isn't competitive against teams running professional searchers. The fantasy: pulse-sentinel's devp2p peer architecture ported to Base, peering with public Base RPCs and the Coinbase-operated Sequencer endpoint. Replace the mempool-race game with a same-block-as-oracle-update game. Probably the difference between 0 fires (current) and a few wins per day on the about_to_pop bucket.

Suggestions for Improvement

BASE-AAVE-LIQ-V1
  • 01
    HIGH
    Pre-broadcast freshness probe (mirrors the PLS-ATOMIC-ARB pattern). Between callStatic sim and tx send, do one more eth_getStorageAt on the user's aaveHealthFactor. Aave HF can move between sim and inclusion on a price update — if it crossed back above 1.0, the liquidation will revert. Saves gas on borderline 1.00-1.005 candidates.
  • 02
    HIGH
    Decode liq-executor-v2 sim reverts into named categories. Aave V3's liquidationCall has well-known revert reasons (33: HEALTH_FACTOR_NOT_BELOW_THRESHOLD, 34: COLLATERAL_CANNOT_COVER_NEW_BORROW, 49: NO_DEBT_OF_SELECTED_TYPE, etc.). Map the 4-byte revert selectors so sim-reject reasons land in the histogram instead of "call revert exception".

Conclusion

BASE-AAVE-LIQ-V1

Status 2026-05-26: OFF — deliberately, and kept on the roster (NOT decommissioned yet). All three daemons (liq-watchlist + liq-forecaster + liq-exec-v2) are down: the forecaster died 2026-05-22 on Base public-RPC degradation (ECONNRESET on publicnode; 502/503 "no backend healthy" on mainnet.base.org), the executor stopped 05-24 on stale predictions. There is a standing "do NOT restart the Aave poller" decision — it never executed a single profitable liquidation. Left in Low-Frequency as a placeholder while the Morpho path was evaluated (result below).

Why it never fired — economics, not infrastructure (the earlier "waiting for an opportunity" read was WRONG). The executor's own log shows it found ~10 liquidatable Aave positions EVERY cycle but logged "No viable candidates after sizing" — each nets below the $0.30 floor after gas + the 0.05% flash-loan fee. The seizable 4-8% bonus on a Base Aave near-liquidation position is smaller than the cost to take it; lowering the floor to $0.30 (05-15) surfaced none. The opportunities appeared and were all dust.

Compounding constraint — a 2-second poller in a latency game. No mempool subscription, no bundle / private-builder. On Base's FIFO ordering, contested liquidations are won by searchers firing in the SAME block as the Chainlink oracle update; a 2s poll loses every race for the rare profitable one. Fixing the economics would ALSO require a mempool/bundle rebuild to land.

Morpho path — investigated on-chain 2026-05-26, verdict MARGINAL. The card always oversold "Aave / Morpho": Morpho was observation-only (no executor). A live Morpho-Blue probe of the tracked market (USDC/wbCOIN, ~$1,957 total borrowed) found the positions that PERSIST as liquidatable are bad debt — e.g. HF=0, 33 USDC debt against 1e-18 collateral, so you'd seize ~$0 and eat the debt (that is why no one captures them). There ARE small capturable ones (sampled: one at ~$2.48 max bonus on $64.94 collateral; healthy positions up to $872 collateral → ~$32 potential if they pop), but they're tiny, the collateral (wbCOIN) may be too illiquid to swap without eating the bonus, and the market is small. A Morpho executor + the speed to win contested ones is high effort for marginal, uncertain return.

Revival options (investigated 2026-05-26): (A) relaunch Aave as-is — resumes the 0-fire pattern (dust + poller), no. (B) Aave + mempool/bundle rebuild — wins races but positions are still dust, no. (C) build the Morpho executor + speed — the only path with a real edge, but the on-chain validation shows it is marginal (tiny captures, illiquid collateral, small market, bad-debt noise); not worth it vs the champion / NAV Reaper now. (D) keep parked — chosen.

Decision (2026-05-26): leave OFF, do NOT decommission, do NOT build Morpho yet. The Aave poller is settled (do not restart). The Morpho executor is the one technically-viable direction, but its live economics are too marginal to justify the build today. Kept on the Low-Frequency roster; re-evaluate only if Base Aave/Morpho liquidation sizes grow.

Active Tests & Monitors

BASE-AAVE-LIQ-V1
Test / MonitorStartedKey MetricDecision Criteria
Sticky-skip cooldown (NEW 2026-05-20)2026-05-20STICKY_HOT_REJECTS=8 / COLD_TIER_SKIP_CYCLES=2 _hfRejectCount + _coldTierCycle Maps in liq-executor-v2.jsLive. All 9 current watchlist users sit in HF 1.01-1.15 band; bot rotates through cold-tier evaluating 2 fresh users per cycle. Working as designed — waiting on a real crossing below 1.0.
Daemon liveness2026-05-14 (relaunched)tmux base-liq-watch + base-liq-fcst + liq-exec-v2; heartbeat-base_liq_predictive.ndjson freshnessAll three live. Heartbeat fresh as of 2026-05-21. No restart needed.
Forecaster prediction freshness2026-05-14mtime of logs/base-liq-predictions.ndjsonWrites every cycle. mtime <5min consistently.
Sim attempts vs sim revertsnever (0 fires)liq-executor-v2.log [SIM] count vs [SKIP] count[SKIP] still dominates (no user crossing HF<1.0). Once a fire lands, watch the SIM/REVERT ratio to distinguish opportunity-gap from strategy-gap.
Morpho executor wiringnot startedexistence of base/morpho-executor.js + Morpho payload in FlashLiquidator.solToday only Aave is executable. Morpho data exists (NDJSON output ongoing). Building a Morpho executor unlocks the "/ Morpho" half of the bot label.
Swap-pair coverage hits2026-05-20 (post-expand)[SKIP] reason="no swap route" count in liq-executor-v2.logSWAP_ROUTES now covers 11 collaterals. Current cycle pattern shows 1x no-swap-route per 10 candidates (~10% miss). Acceptable; remaining gap is syrupUSDC (DEFERRED).
Executor wallet ETH balance2026-04-14 (deploy)eth_getBalance(0xEc5Df194…)Required for gas. Same operator wallet as PLS + BSC bots. Verify periodically — if below 0.01 ETH the bot will fail at first fire.

Compromises

BASE-AAVE-LIQ-V1
DecisionAggressive ←Current Position→ ConservativeNotes
Bot daemons (RUNNING since 2026-05-14)
Reactivate · resume liquidation hunting
Stay stopped · defer Base flagship work
All three daemons live: tmux base-liq-watch, base-liq-fcst, liq-exec-v2. Heartbeats fresh as of 2026-05-21. 0 fires lifetime — gated by market state (no Base user crossing HF<1.0), not by daemon liveness.
HF watchlist band (1.00 - 1.15)
Tight band · only near-liquidation candidates
Wide band · catch slow HF drift earlier
HF_MAX_WATCH = 1.15 from lib/liquidation-config. 130 positions made the cut at last scan; 50 were hot. Tightening to 1.10 reduces RPC pressure; widening to 1.25 catches more slow-decay positions at the cost of false-alarm volume.
Forecast scenarios (±0.5 / 1 / 2 / 3 / 5 %)
Few scenarios · fast cycle
Many · catch tail risk
6 scenarios applied per position. CPU-cheap (no RPC, just math). about_to_pop bucket = positions liquidatable at 0% shock (HF ≤ 1.0054). Worth keeping the -5% bucket for volatile-collateral tail risk even though it rarely matches.
Prediction staleness gate (60s)
Tight · only fresh predictions fire
Loose · burn stale signals
MAX_PREDICTION_AGE_MS = 60000. Raised 2026-04-23 from 15s when 15s caused executor to skip every poll (forecaster cadence is ~5s but only writes on fresh watchlist; watchlist cadence is ~120s in slow paths).
Sim TOP_K (10)
Sim few · save RPC
Sim many · don't miss winners
Top 10 predictions by predicted netProfit get callStatic-simmed each cycle. Higher K = more RPC + more sim-revert noise; lower K = miss winners ranked below the cutoff.
Batch size (max 3)
No batching · per-position txs
Aggressive batch · all-or-nothing
BATCH_SIZE_MAX = 3. First 3 sim-survivors get bundled into one executeBatchLiquidations call. Gas-efficient vs sending 3 separate txs; if any item reverts the whole tx reverts. Caller MUST callStatic each item off-chain first.
Min net profit ($0.30)
Permissive · catch dust
Conservative · only meaningful
MIN_NET_PROFIT_USD = 0.30 (lowered from 1.00 on 2026-05-15). Permissive while we wait for first fires; raise to $5-10 once landings prove reliable.
Priority multiplier (1.5×)
Standard fee · cheap inclusion
Aggressive bid · win race
PRIORITY_MULTIPLIER = 150 (%). Bumps priority gas 1.5× over base. Base mempool is competitive; 1.5× is mid-range. MEV teams routinely bid 3-5×.
Swap-pair coverage (11 routes)
Permissive · trust router · revert on miss
Strict · whitelist · pre-filter
SWAP_ROUTES expanded to 11 entries 2026-05-20: WETH, cbETH, wstETH, cbBTC, USDC, USDbC, DAI, EURC, AERO, weETH, AAVE. Only syrupUSDC remains DEFERRED (needs Maple redeem path). Aave Base lists ~12 supported collaterals; coverage is now near-complete.
Morpho coverage (observation-only)
Aave-only execution
Full Aave + Morpho execution
morpho-watchlist + morpho-forecaster collect Morpho position data + project shocks. NO morpho-executor exists. Bot card label "Aave / Morpho" overstates today — Morpho is read-only. Building a Morpho executor (mirrors liq-executor-v2 with Morpho.liquidate semantics) is the highest-value follow-up.
Circuit breaker (3 losses → 1h halt)
No CB · trade through losses
Tight CB · pause aggressively
Standard 3-strike pause. Per shared lib/circuit-breaker. Will trigger only when bot has produced 3 net-negative liquidations within window; never tested live (0 fires lifetime).
Capital sourcing (Aave flash loan)
Self-funded contract
Always-flash
Always flash-borrows debtAsset from Aave V3 + pays 0.05% fee. Contract holds no capital (matches BSC + PLS liquidation pattern). Owner key is the operator wallet 0xEc5Df194 (same as PLS + BSC bots).

Parameters

BASE-AAVE-LIQ-V1
ParameterValueReasoningPotential Adjustment(s)
HF_MAX_WATCH1.15 (lib/liquidation-config)Watchlist hot-band ceiling. Users with HF in [1.00, 1.15] get 5s rescan. Above 1.15 they fall into the 30s bulk poll.Tighten to 1.10 if RPC load is high. Widen to 1.25 to catch slow-decay positions earlier; cost is more false-alarm volume.
WATCHLIST_SCAN_INTERVAL5sHow often the hot-band users get rescanned.Tied to RPC capacity. 2-3s achievable on a paid endpoint.
POLL_INTERVAL_MS2000 (executor)Cycle period for the executor reading predictions NDJSON.Lower to 1000 for tighter signal-to-fire latency once landings prove reliable.
MAX_PREDICTION_AGE_MS60000Predictions older than this are stale → executor skips. Raised 2026-04-23 from 15s (which caused executor to skip every poll).Reducing back below 30s only safe if watchlist cadence improves first.
TOP_K_SIM10Top 10 predictions by predicted netProfit get callStatic-simmed each cycle.Raise to 20 if missing valid candidates outside top 10. Drop to 5 if RPC-bound.
BATCH_SIZE_MAX3Up to 3 sim-passed liquidations batched into one executeBatchLiquidations tx. All-or-nothing semantics.Higher batch = better gas efficiency but every additional item raises whole-tx-revert risk. 3 is a reasonable middle ground.
MIN_NET_PROFIT_USD$0.30Minimum net profit floor passed into the contract. Lowered 2026-05-15 from $1.00 → $0.30 to allow small fires while we collect data.Permissive; raise to $5-10 once landings confirm pipeline works.
PRIORITY_MULTIPLIER150 (%)Bumps priority gas 1.5× over base. Base mempool is competitive — MEV teams routinely bid 3-5×.Push to 200-300 if losing races. Drop to 110 if winning easily.
SWAP_ROUTES table11 entries (WETH/cbETH/wstETH/cbBTC/USDC/USDbC/DAI/EURC/AERO/weETH/AAVE)Pre-configured Uniswap V3 + Aerodrome routes per collateral asset. AAVE added 2026-05-20; only syrupUSDC remains DEFERRED (needs Maple redeem path).Coverage now near-complete for Aave Base collaterals. Add syrupUSDC when the Maple redeem path is built.
AAVE_FLASH_FEE_BPS5 (0.05%)Aave V3 flash-loan fee. Subtracted from expected profit.Fixed by Aave — not tunable.
DEFAULT_CLOSE_FACTOR0.5 (lib/liquidation-config)Aave V3 close factor for HF > 0.95 (covers up to 50% of debt per liquidation).Fixed by Aave protocol. MAX_CLOSE_FACTOR=1.0 applies when HF ≤ CLOSE_FACTOR_HF_THRESHOLD (~0.95) → full repay allowed.
CIRCUIT_BREAKER3 losses → 1h haltStandard from lib/circuit-breaker. Strategy = base_liq_predictive.Raise to 5 losses once data confirms bot is profitable on average.
FlashLiquidatorV2 contract0x2015Ba5c39E4Acc0d00725284074CCA836fc86FcDeployed 2026-05-21. Aave V3 provider = 0xe20fCBdBfFC4Dd138cE8b2E6FBb6CB49777ad64D. Replaces V1 at 0xdea5F2CaA50aa4DaD07628b3C9CE77574b40BcCa. V2 surfaces Venus error codes via VenusLiquidateFailed(uint256) / VenusRedeemFailed(uint256) custom errors. Shared codebase with BSC FlashLiquidatorV2.May need another redeploy when Morpho support lands — the contract has Venus dispatch but not Morpho.

Revisions

BASE-AAVE-LIQ-V1
RevisionSummary
V1 (launch)2026-04-14 — FlashLiquidator deployed on Base at 0xdea5F2CaA50aa4DaD07628b3C9CE77574b40BcCa. Three-daemon pipeline: liq-watchlist + liq-forecaster + liq-exec-v2. Aave V3 flash-funded, 0.05% fee. HF band [1.00, 1.15].
V1.12026-04-27 — Decoded Aave V3 sim-revert categories (45-line code map). 168 wallets classified, 50 hot, ~10 liquidatable per cycle.
V1.22026-05-14 — Daemons relaunched after a multi-day pause. Heartbeats fresh since.
V1.32026-05-15 — MIN_NET_PROFIT_USD lowered $1.00 → $0.30 to allow data-collection fires.
V1.42026-05-20 — Multicall3 batched HF reads (liq-executor-v2.js:333-358): cycle latency 62s → ~1-2s. Sticky-skip cooldown (STICKY_HOT_REJECTS=8 / COLD_TIER_SKIP_CYCLES=2) frees RPC budget on cold-tier addresses. SWAP_ROUTES expanded 4 → 11 entries (added wstETH, cbBTC, USDC, EURC, AERO, weETH, AAVE). Only syrupUSDC remains DEFERRED.
V2 (CURRENT) current2026-05-21 contract redeploy: FlashLiquidatorV2 on Base at 0x2015Ba5c39E4Acc0d00725284074CCA836fc86Fc (tx 0x87c4a630…edb7bda6, replaces V1 at 0xdea5F2Ca…40BcCa). Shared codebase with BSC FlashLiquidatorV2 — same VenusLiquidateFailed(uint256) / VenusRedeemFailed(uint256) custom errors. Venus path unused on Base (Aave-only) so V2 behaves identically to V1 here, but kept on the V2 codebase for parity + future cross-chain Venus enable. liq-exec-v2 restarted at 20:49:57Z in a fresh tmux pane (the old simple sh -c wrapper died with its node child; ran-bot.sh supervisor pattern would have auto-restarted, but liq-exec-v2 didn't have one — followup TODO).
RPC: connected
Scanner: 193d 18h 42m uptime
687,559 events indexed
WICK_CRYPTO_ENGINE // Built by Green Wick AI