Mantle · Track 02 · HDC Anomaly Detection

Euler Finance lost $197M
in valid function calls.
Sentinel saw it coming.

Every call passed validation. No reentrancy, no overflow, no revert. Sentinel reads the statistical shape of on-chain behavior and flags the drift — before the funds leave.

4.3×Anomaly separation
0False positives
≤2Windows to alert
0GPU · training data
Sentinel — on-chain anomaly detection mascot // watching window 39,972,940
sentinel --watch USDC.e --chain mantle
The blind spot

The exploit was a perfectly valid transaction.

Signature-based and rule-based tools look for known-bad patterns. The Euler attack didn't break a single rule — it just behaved nothing like normal. That's a different question, and it needs a different sensor.

What happenedMar 13, 2023

A donation + self-liquidation sequence drained Euler. Every call was type-valid and authorized.

Rule engines: no signature matched
Static audits: code was “safe”
Alert fired after $197M was gone
loss = $197,000,000
What Sentinel sawdrift timeline

The behavioral hypervector drifted off the safe manifold three windows early — long before settlement.

N−120.06
N−80.11
N−40.34
N−20.72
N0.91
Why Sentinel

Not another rule engine. Not an LLM watching a feed.

Sentinel encodes each transaction window into a 10,000-dimensional hypervector and measures how far it drifts from learned-safe behavior. Three things make it different.

Detection model
Rule-based Forta / static signatures

Catch only what someone already wrote a rule for. Novel exploits — like Euler — pass clean.

Sentinel Behavioral drift

No rule list. Measures statistical distance from safe behavior, so unseen attack shapes still light up.

Cost & latency
LLM monitors GPT / agent watchers

Per-tx inference cost, GPU dependency, non-deterministic output. Hard to anchor on-chain or reproduce.

Sentinel Hyperdimensional compute

Bind/bundle/permute over bit-vectors. Deterministic, seeded, CPU-only — runs in the time between blocks.

Output
Most tools “ALERT”

A red flag with no story. An on-call engineer still has to reverse-engineer what actually happened.

Sentinel Attribution + Z.ai

Names the drifting feature, anchors the alert on Mantle, and writes a human brief via Z.ai GLM.

For Z.ai judges

HDC works with zero training data and zero GPU. Sentinel fits its safe manifold from a short warm-up window of real on-chain history — no labeled dataset, no model training, no accelerator. The drift math is the model.

The pipeline

From raw transaction to anchored alert — in six steps.

Scroll the journey. Each stage runs deterministically on CPU, seeded with MASTER_SEED=1337.

T0 · Ingest

Pull the window

Stream confirmed transactions for a watched contract from Mantle via Etherscan V2. Bundle them into a sliding window of recent calls.

window W=50 · contract USDC.e
tx 0x…  tx 0x…  tx 0x… → bundle
T1 · Encode

Lift into hyperspace

Each call's selector, value, gas and entropy features are bound and bundled into one 10,000-dim hypervector — the window's behavioral fingerprint.

encode(window) → H ∈ {±1}^10000
bind · bundle · permute
T2 · Drift

Measure the distance

Compare the new hypervector to the safe-manifold prototype. Hamming distance, robust-scaled with MAD, becomes a single drift score in [0,1].

drift = scale(d_H, MAD)
0.91  (safe p99 = 0.21)
T3 · Detect

Confirm the change

A hysteresis gate plus run-length collapse (BOCPD) confirm a sustained shift — not a one-block blip — keeping false positives at zero.

drift > θ for ≤2 windows
changepoint → CONFIRMED
T4 · Attribute

Explain it

Sentinel names the feature driving the drift and asks Z.ai GLM to write a one-paragraph human brief — what shifted and why it matters.

driver = entropy_anomaly
z.ai → “value distribution collapsed to a single high-entropy call…”
T5 · Anchor

Write it on-chain

The alert — window id, drift score, type — is logged to the Sentinel registry contract on Mantle mainnet. Tamper-proof, queryable, real.

logAlert(window, drift, type)
→ tx 0x086cf07a…fa91c anchored
Live demo

Watch the drift spike in real time.

A replay of a self-attack run on Mantle: warm-up calls stay flat, then an injected high-entropy call drives drift past threshold and fires an anchored alert.

Drift score · per windowreplaying
Transaction feedVictimCounter
Z.ai GLM-4.5 brief · auto-generated for this alert

The contract 0x1f88…68e64 showed completely unusual activity patterns at block 39,972,940, with maximum unpredictability in how it's being called. This anomaly is primarily driven by unexpected variations in function selection and data input patterns.

Proof

Benchmarked on real Mantle data. Anchored on real Mantle blocks.

Numbers from the frozen, seeded benchmark suite — reproducible byte-for-byte via the golden-file CI test.

MetricResultWhat it means
Anomaly separation4.3×Attack drift vs. clean p99
False positives0Across the full benchmark
Test suite109Passing, deterministic
Time to alert≤2Windows after onset
Anchor block96,680,154Mantle mainnet
On-chain anchor
Alert transaction
Network
Mantle mainnet · chainid 5000
Status
getAlertCount() = 1 · anchored
Mantle Turing Test Hackathon 2026

See the drift for yourself.

The full pipeline, benchmark, and on-chain registry are open source under MIT. Run the self-attack replay in under a minute.