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

Bot Titles

PLS-V1V2-ARB-V2
bolt
PLS-V1V2-ARB-V2 PLS STOPPED · STOPPED_UNKNOWN
V1↔V2 Direct-Pool Arb (LIVE) · V1↔V2 Pool-to-Pool
contract 0xe9e9...0E08
24h gas burn0
24h CB halts0
Buys a token on one PulseX pool and instantly sells it on another for a small profit — whenever the same token is priced differently between PulseX V1 and V2. It watches ~150 popular pairs about once a second, simulates every trade on-chain before risking a cent, and only fires when the profit clears gas + fees. It's a spin-off of our main arb bot, but as of 2026-07-02 it runs on its OWN dedicated wallet (0xfc7E301D) and its OWN contract (0xe9e93586, funded 500K WPLS) — so it can never clash with, or starve, the champion (that coupling was why it was paused on 2026-06-21). Live since 2026-06-15, revived on its own stack 2026-07-02: the budget is a 25,000 WPLS probation cap and the trade gate is hardened (it re-checks each deal against the pending block and only fires fat, clearly-winnable gaps). So it scans constantly but fires rarely — by design, only on the few gaps big enough to survive the race. Earlier it misfired on thin gaps and burned gas; that's now fixed (and a 5,000 WPLS daily-loss halt stops it if losses ever add up). It also now dual-broadcasts through our local sentinel node for faster inclusion.

Performance So Far

PLS-V1V2-ARB-V2
Execution Funnel · last 24hdetect → validate → fire → land → profit
updown (9)external/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.10
Wins
5
Losses
79
Total Trades
84
Win Rate
6.0%
Gas Spent
—
Contract Balance
—

Recent Fire Attempts

PLS-V1V2-ARB-V2
Token
0xae7873
Size
100K
Txn Type
V2->V1
Sim Profit
+842 WPLS
Timestamp
03:42:29 UTC+8
Status
REVERTED
Gas Price
—
Token
0xfc4913
Size
100K
Txn Type
V1->V2
Sim Profit
+1,106 WPLS
Timestamp
23:09:09 UTC+8
Status
REVERTED
Gas Price
—
Token
0x514910
Size
100K
Txn Type
V1->V2
Sim Profit
+2,671 WPLS
Timestamp
21:23:19 UTC+8
Status
REVERTED
Gas Price
—
Token
0xca3563
Size
100K
Txn Type
V2->V1
Sim Profit
+1,932 WPLS
Timestamp
18:04:18 UTC+8
Status
REVERTED
Gas Price
—
Token
0xca3563
Size
100K
Txn Type
V2->V1
Sim Profit
+2,385 WPLS
Timestamp
17:32:09 UTC+8
Status
REVERTED
Gas Price
—
Token
0x131bf5
Size
100K
Txn Type
V2->V1
Sim Profit
+863 WPLS
Timestamp
08:31:59 UTC+8
Status
REVERTED
Gas Price
—
Token
0x5f16f6
Size
98K
Txn Type
V1->V2
Sim Profit
+2,409 WPLS
Timestamp
04:49:29 UTC+8
Status
REVERTED
Gas Price
—
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)

PLS-V1V2-ARB-V2
No on-chain reverts in last 24h.
White / black lists are located at /bots/PLStokens.

Biggest Block

PLS-V1V2-ARB-V2

Biggest block (2026-06-16): a structural latency disadvantage on the V1↔V2 niche — not a broken bot. The opportunity it hunts (same token cheaper on PulseX V1 than V2, atomic buy-low/sell-high in one tx) is real and shows up in the scan, but it is a crowded lane: a faster competitor ("The Machine", 0x82cd9533…) sits on the identical V1↔V2 routes with a pre-warmed custom contract and almost certainly private-mempool inclusion, so by the time our public broadcast lands the spread is gone or the pool has moved (K-invariant revert). That is why a healthy-scanning bot can sit at ~0 broadcasts for long stretches — the gate is correctly refusing to fire into a race it will lose at a gas-only loss.

What was actually broken (and is now fixed, 2026-06-16 hardening): the bot had been built WITHOUT the champion's safety scaffolding, so it mis-fired and burned gas. Six fixes shipped: (A) ethers-v5 tx.wait() throws CALL_EXCEPTION on a mined-but-reverted tx instead of returning status===0 — the catch now recovers the receipt and books the gas as a real loss (previously every revert silently bypassed both fail-safes); (B) sims now run against the pending block with a real gasLimit, not the head block (head-block sims false-passed ~99.6%); (C) a fat-margin gate (sim NET must clear gas×2 after a 55% sim-drift haircut) so it only fires trades fat enough to survive the latency gap; (D) a per-token revert-bench (3 reverts → 6h bench) so it stops re-firing a token that keeps losing; (E) free reverts / send-errors that cost no on-chain gas are NOT counted toward the daily-loss halt or breaker; (F) an owner==wallet boot check before it ever ARMs. Daily-loss halt 5K WPLS; notional probation cap 25K.

2026-07-02 — revived on its own stack, coupling removed: the bot now runs a DEDICATED wallet (0xfc7E301D) + DEDICATED PulseAtomicArb (0xe9e93586, funded 500K WPLS), so the shared-wallet nonce-coupling that caused the 06-21 pause (it was starving the champion) is gone — and 16 of its historical failures were exactly that shared-wallet nonce-stomp class, which is now eliminated.

The genuine remaining lever is the same as the champion's: this is WPLS profit on a tiny book, and we're racing a faster incumbent on a public mempool. It now dual-broadcasts through our local sentinel node (partial inclusion-latency help), but to fully win this niche we'd need private/bundle submission (PulseChain has no Flashbots equivalent) or a pre-warmed contract + colocated node — neither justified at current capital. It runs hardened, fires only the rare fat winners, and we measure whether even those land vs The Machine.

Fantasy

PLS-V1V2-ARB-V2
If we had some way to...

If our V1↔V2 fire could reach a PulseChain validator the same way the competitor "The Machine" (0x82cd9533) almost certainly does — top-of-block, before the public mempool sees it — the structural disadvantage that makes us lose nearly every race would vanish, and the fat gaps our gate already finds would actually LAND instead of reverting on a closed spread. The whole edge on this niche is inclusion speed, not trade cleverness; whoever the block builder includes first wins, full stop. The closest real-world thing accessible to us: pulse-sentinel already peers with PulseChain nodes via devp2p and can dual-broadcast through rpc.pulsechain.box — porting the champion's multi-RPC first-accept-wins racer here is the cheap first step. The true unlock is a private-builder/preconf relationship that bypasses the public gas auction entirely, but PulseChain has no Flashbots-equivalent relay market yet, so there is no clean API to buy this today. Until that exists (or we run a colocated node with a pre-warmed contract like the incumbent does), the honest ceiling on this bot is "win the occasional gap fat enough that even a slower public broadcast still lands" — which is exactly what the fat-margin gate is now tuned to catch.

Suggestions for Improvement

PLS-V1V2-ARB-V2
  • 01
    HIGH
    Measure whether the fat fires that DO clear the gate actually LAND vs the competitor — this is the make-or-break question. Now that the trade log is wired, let it run until it fires a handful of times, then read logs/pulse-v1v2-bot-trades.ndjson: if our fat-margin fires still revert (lost the race to 0x82cd9533) or land at a loss, the niche is structurally unwinnable on the public mempool and we should retire the slot. If they land green, scale the cap. Decide on DATA, not on the 0-fire scan state.
  • 02
    HIGH
    The only winnable axis here is latency/inclusion, not a smarter trade (the edge is the competitor's, and it is structural — faster inclusion + pre-warmed contract + likely private mempool). Concretely: (a) port the champion's multi-RPC parallel broadcast (sign once, fan out to all 4 PLS RPCs, first-accept wins) to shave the broadcast leg; (b) investigate any private/bundle inclusion path on PulseChain (devp2p via rpc.pulsechain.box is the closest thing — see Fantasy). Without an inclusion edge, no parameter tuning makes this bot win the race.

Conclusion

PLS-V1V2-ARB-V2

Recalibrated 2026-07-04: now honestly instrumented, and the first clean data is sobering. Added reason-split counters (which check filters each opportunity) + live-priced gas + a shorter re-look interval + RPC auto-pick/watchdog, all behind env flags. First honest read: at correctly-priced gas, ~80% of evaluations have NO edge at all, and every gate-block is simple de-duplication — i.e. the niche may just be too thin at our size, not mis-tuned. A latent stale-nonce relic (shared-wallet leftover) also had to be retired today; its floor file had pinned the champion's sends for hours. Likely near-term call after a day of data: fold this into the champion or drop it to maintenance. Prior verdict below.

Verdict (updated 2026-07-02): LIVE on its OWN stack — the revival was done properly. This V1↔V2 direct-pool bot (pulse-v1v2-bot.js, tmux pulse-v1v2-live) targets the measured ~$15-23K/day long-tail V1↔V2 pool. It was PAUSED on 2026-06-21 because it shared the champion's wallet + contract and, once it started firing, starved the champion (champion trades collapsed 24→2/day in lockstep). On 2026-07-02 (Chef-approved) it was revived the right way: its OWN dedicated wallet (0xfc7E301D) + its OWN PulseAtomicArb contract (0xe9e93586, owner = the v1v2 wallet, funded 500K WPLS from idle champion-EOA reserve). No shared nonce, no V1V2_COORD, zero collision risk — it can never starve the champion again. The 2026-06-16 hardening carries over: pending-block simulation, a fat-margin gate (net ≥ ~2× gas after a 55% haircut), per-token revert-bench, fixed fail-safe accounting, and an owner==wallet boot check — now running at a tight 25,000-WPLS probation cap with a 5,000-WPLS daily-loss halt. It also dual-broadcasts through the local sentinel for faster inclusion. It scans ~1k opps/5min but fires rarely BY DESIGN.

History: the predecessor cross-family build last traded 2026-05-09 and was swept in a May consolidation. Live-since-06-16 on the shared wallet: 4 wins / 42 reverts / 16 timeouts, −4,577 WPLS realized — but 16 of those were shared-wallet nonce-stomp timeouts (now eliminated) and the rest were the pre-hardening day-one bleed. The dedicated stack begins with a clean slate.

State on this page: LIVE in tmux pulse-v1v2-live at the 25K probation cap, 0 fires since the revival (~97-98% of scanned opps are correctly gate-blocked; last actual fire was 2026-06-24 on the old shared contract). The make-or-break question is unchanged: when a fat gap DOES clear the gate, does our public-mempool fire LAND vs the faster incumbent (The Machine, 0x82cd9533), or revert on latency? The per-trade Execution Funnel + Per-Size Breakdown stay empty until that first fire on the new stack — decide scale-vs-retire on that data, not on the 0-fire scan state.

Active Tests & Monitors

PLS-V1V2-ARB-V2
No active tests or monitors for this bot.

Compromises

PLS-V1V2-ARB-V2
DecisionAggressive ←Current Position→ ConservativeNotes
Fat-margin fire gate (MIN_LIVE_NET ≥ 2× gas, 55% sim haircut)
Aggressive · fire thin gaps, more reverts
Conservative · only fat, clearly-winnable gaps
The core 2026-06-16 hardening. The old build fired on thin edges and burned gas; now a candidate must clear ~2× gas in NET after a 55% sim-drift haircut. This is WHY the bot scans constantly but fires rarely — by design. Sits well to the conservative end on purpose while we prove it lands.
Per-trade notional cap (LIVE_MAX_NOTIONAL = 25K WPLS)
Small · bounded per-fire loss
Large · bigger absolute wins, bigger revert pain
Reset to the 25K probation default on the 2026-07-02 dedicated-stack revival (was 100K in the shared-wallet era). The dedicated contract holds 500K WPLS so capital is not the limit; this is a deliberately tight per-fire risk ceiling while we re-prove the bot lands on its own wallet. Raise back toward 100K only after a clean win record on the new stack.
Simulation block (PENDING + gasLimit, fix B)
Head block · fast but lies about live state
Pending block · accurate, slightly slower
Old build simmed against the head block and false-passed ~99.6%. Now sims against the PENDING block with a real gas limit so the sim reflects what the tx will actually hit. Correctness over speed — the single biggest misfire fix.
Fail-safe accounting (mined reverts count, gas-free do not — fixes A+E)
Count every revert · over-trips the breaker
Count only real-cost reverts · honest leash
ethers v5 THROWS CALL_EXCEPTION on a mined-but-reverted tx; the old catch silently bypassed both fail-safes. Now the catch recovers the receipt and books the gas as a real loss (counts toward breaker + daily-loss halt). Gas-free send-errors/reverts are explicitly excluded (Chef's directive) so a free revert never trips a halt.
Per-token revert bench (3 reverts → 6h, fix D)
Permissive · keep retrying any token
Strict · bench repeat-reverters fast
A token that reverts 3× is benched 6h so the bot stops re-burning gas on it every 60s. A win clears the count. Leans strict because the failure mode we are fixing is exactly repeated gas-burn on a token that will not land.
Mempool stance (public RPC, racing a faster incumbent)
Public · visible, frontrun-able, lose races
Private relay · hidden until inclusion
We broadcast on the public PulseChain mempool. The competitor "The Machine" (0x82cd9533) runs the same V1↔V2 routes with a pre-warmed contract + likely private inclusion, so we lose most head-to-head races by design. PulseChain has no Flashbots equivalent — this is the structural disadvantage (see Biggest Obstacle + Fantasy). Sits far left until/unless private inclusion is built.
Dedicated wallet + contract (isolated from the champion)
Isolated · own wallet/contract, zero collision risk
Shared · reuse proven funded infra, must coordinate
FLIPPED 2026-07-02: the bot now runs its OWN wallet (0xfc7E301D) + its OWN PulseAtomicArb (0xe9e93586, funded 500K WPLS), deployed with the v1v2 wallet as owner. V1V2_COORD nonce-coordination is GONE — no shared-nonce lock, zero collision risk with the champion. This is the fix that let the bot be revived: the shared-wallet era (until 06-21) starved the champion, and 16 of its historical timeouts were shared-nonce stomps that this eliminates. Fix F owner==wallet boot-check still guards it.
Daily-loss halt (5K WPLS)
Tight · hard daily risk leash
Loose · room to test without nuisance halts
Reset to the 5K default on the 2026-07-02 revival (was raised to 10K in the shared-wallet testing era). Realized losses in a UTC day hitting 5K halts the bot to midnight. Gas-free reverts excluded so only real realized losses count toward it. Tight on purpose while we re-prove the dedicated stack.

Parameters

PLS-V1V2-ARB-V2
ParameterValueReasoningPotential Adjustment(s)
LIVE_MAX_NOTIONAL_WPLS25,000 WPLSPer-trade notional cap (env-set). Reset to the 25K probation default on the 2026-07-02 dedicated-stack revival (was 100K in the shared-wallet era). The dedicated contract (0xe9e93586) holds 500K WPLS so capital is not the constraint — this is a deliberately tight per-fire risk ceiling while the bot re-proves itself on its own wallet.Hold at 25K until we see fat trades actually land vs the competitor on the new stack. Raise toward 100K only once a clean win record exists.
MIN_LIVE_NET_WPLS (fat-margin gate)400 WPLS (= GAS_WPLS × 2)Fix C, the core anti-misfire gate: a candidate must clear ~2× the gas cost in NET profit AFTER the 55% sim-drift haircut before it fires. This is what makes the bot "fire rarely by design" — thin edges that the old build burned gas on are now rejected here.Raise the multiple (3-4× gas) if even the fat fires lose the race and revert. Lower toward 1.5× only after a proven clean-landing streak.
SIM_DISCOUNT_PCT55%Sim over-predicts net (same as the champion's 0.55). The live gate is applied to sim_net × 0.55, so the on-chain reality has to be comfortably above gas even after the haircut. Tunable via env.Tighten toward 45-50% if landed nets keep coming in below sim. Loosen toward 65% only if sims prove accurate over many fires.
GAS_WPLS (per-trade gas assumption)200 WPLSThe deployed PulseAtomicArb runs a full 2-hop in ~181.7K gas units (traced 2026-06-12), ≈185 WPLS at champion-era gas prices; 200 is the rounded working figure that feeds the fat-margin gate.Re-measure from real landed fires; if PulseChain gas rises, bump this so the gate stays honest.
FRESHNESS_DECAY_MIN0.5A re-checked opportunity must still be worth ≥50% of the net the quote engine originally claimed, or it is killed as stale (the staleKilled counter). Guards against firing on a gap that has already half-closed in the seconds since detection.Raise toward 0.7 to be stricter about decayed edges; lower toward 0.3 only if too many live gaps are being binned as stale.
DAILY_LOSS_HALT_WPLS5,000 WPLSRealized losses in a UTC day hitting this halts the bot until midnight. Reset to the 5K default on the 2026-07-02 revival (was 10K in the shared-wallet testing era). Fix E: gas-free reverts/send-errors do NOT count toward this.Keep at 5K while the dedicated stack is re-proven; loosen only if nuisance halts block a clean testing window.
CONSEC_REVERT_BREAKER3 reverts → 1h haltThree on-chain (gas-costing) reverts in a row trips a 1-hour circuit breaker. Counts only real-cost reverts (fix A recovers the reverted receipt and books the gas); gas-free send-errors are excluded (fix E).Lower to 2 for a tighter leash during testing; raise to 5 once landings are reliable.
Per-token revert bench (REVERT_SKIP_N / _MS)3 reverts → 6h benchFix D: a token that reverts 3 times gets benched for 6 hours so the bot stops re-firing (and re-burning gas on) the same losing token every 60s. A win clears the token's revert count.Shorten the bench to 1-2h if benched tokens recover quickly; lengthen if repeat-offenders keep wasting gas.
PER_TOKEN_COOLDOWN_MS / MAX_FIRES_PER_HOUR60,000 ms · 30/hrA token can fire at most once per 60s, and the bot at most 30 times per hour — bounds a runaway cascade. Both are inert today (0 fires) but are the rate rails if volume picks up.Inert until the bot fires regularly; tighten the hourly cap if a cascade ever appears.
Simulation block (fix B)PENDING block + gasLimit 400,000callStatic now runs against the PENDING block (not the head block) with a real gas limit, so the sim reflects the state the tx will actually execute against. Head-block sims false-passed ~99.6% of the time on the old build — the single biggest misfire source.No tuning; this is a correctness fix, not a knob.
Notional tiers (probation / whitelist)25,000 / 200,000 WPLSThe verdict/probation doctrine clamps fresh or WATCH/UNCLASSIFIED tokens to 25K and only lets champion-proven whitelisted tokens reach 200K. The live LIVE_MAX_NOTIONAL_WPLS (100K) caps the top end during testing.Owned by lib/token-verdict + probation; don't raise the 25K fresh-token cap without a tax/honeypot pre-flight.
Contract / wallet (DEDICATED, isolated)PulseAtomicArb 0xe9e93586…0E08 (500K WPLS) · wallet 0xfc7E301D…ab8AFLIPPED 2026-07-02: dedicated wallet + dedicated contract (owner = the v1v2 wallet), funded 500K WPLS from idle champion-EOA reserve. V1V2_COORD is OFF — no shared-nonce lock, zero collision risk with the champion (the shared-wallet coupling was what starved the champion and forced the 06-21 pause). Fix F: an owner==wallet boot check runs before the bot ever ARMs.No tuning; the isolation + owner-check are safety invariants, not knobs.

Revisions

PLS-V1V2-ARB-V2
RevisionSummary
V1 (2026-04 → 05)Original standalone "Cross-Family V2 Pool-to-Pool" bot (pulse-v1v2-arb.js). Ran mostly in paper/sim (21 wins / 90 reverts); swept 2026-05-19 in a capital consolidation on a "friction > edge" verdict — later found INVALID (a broken buy path, never a real edge test).
V2 (CURRENT)2026-06-15 — resurrected LIVE as the "census spin-off" (pulse-v1v2-bot.js, tmux pulse-v1v2-live). New pipeline: ~1s quote engine over 150 WPLS pairs + mempool-anticipation, verdict + tax gated, TRUE eth_call sim vs the funded PulseAtomicArb (0x03E2…6d66). Shares the champion wallet + contract, nonce-coordinated (V1V2_COORD) so they never clash. Flipped live 2026-06-15; hardened + recapped to 100k 2026-06-16 after a logic review (pending-block sim, fat-margin gate, per-token revert-bench, fixed CALL_EXCEPTION fail-safe accounting, 10k daily-loss halt) — now scans normally but fires rarely by design (only fat, winnable gaps clear the gate).
⛔ PAUSED 2026-06-21PAUSED (Chef-approved) — it was STARVING the champion. It signed from the SAME wallet as the champion (pulse-arb-combined.js) via the 06-15 nonce-lock band-aid; once it fired 5-11/day from 06-16, wallet/nonce contention collapsed the champion 24→13→2 trades/day (pre-06-16, with v1v2 silent, the champion did 5-34/day). It also lost money on its own: lifetime 30 trades = 25 reverted / 3 won / 2 timeout (10% WR); TRUE NET -1,783 WPLS (the +5,427 counter only nets the 3 winners, ignoring 7,212 WPLS gas burned on the 27 non-winners). REVIVAL (V1V2_FIX_PLAN.md) required ALL of: (a) its OWN wallet + own deployed atomic contract + funding; (b) the champion safety rails ported; (c) a faster inclusion stack. Resolved in the next entry.
✅ REVIVED 2026-07-02 (CURRENT) currentRevived LIVE the right way (Chef voice-approved). Requirement (a) satisfied properly: DEDICATED wallet 0xfc7E301D + DEDICATED PulseAtomicArb 0xe9e93586 (owner = the v1v2 wallet), funded 500K WPLS from idle champion-EOA reserve — no shared nonce, no V1V2_COORD, so it can NEVER starve the champion again (that coupling was the whole reason for the 06-21 pause; 16 of its historical timeouts were shared-nonce stomps, now eliminated). Requirement (b) carried over — pending-block sim @55% haircut, fix-A CALL_EXCEPTION accounting, 3-revert breaker — now at a 25K probation notional cap + 5K daily-loss halt. Requirement (c) partially addressed via sentinel dual-broadcast (USE_SENTINEL_SUBMIT=1 at launch). Armed 03:28Z, owner==wallet check passed, sentinel connected; 0 fires since (gates correctly block ~97-98% of opps). The open question: when a fat gap clears the gate, does the public-mempool fire LAND vs The Machine? Watch trades-*.ndjson — that data decides scale-vs-retire.
RPC: connected
Scanner: 193d 18h 42m uptime
687,559 events indexed
WICK_CRYPTO_ENGINE // Built by Green Wick AI