r/ethdev • • 22h ago

Question How to diagnose EVM events exhausting retries before notification delivery (missing valuation/verified token amounts)?

0 Upvotes

I'm maintaining a Python asyncio EVM monitoring pipeline with a PostgreSQL event journal and a durable notification outbox.

During one production session, a read-only reconciliation identified 49 candidate semantic event identities across 11 underlying transactions. Each identity reached five processing attempts without creating delivery or outbox records. Most occurred on Base.

The findings were:

  • 26 identities had VALUATION_UNVERIFIED.
  • 23 had both valuation issues and TOKEN_AMOUNT_UNVERIFIED.
  • Those 23 identities came from only 3 transactions.

These are not 49 independent failed transactions, and this does not establish that 49 eligible alerts were lost.

We haven't determined whether each failure was caused by missing token prices, missing native-asset prices, unverified token decimals, provider/indexing delays, or an application logic bug.

The final NO_DURABLE_DELIVERY diagnostic tells us that no durable notification was created, but it doesn't fully explain which upstream evidence was missing at each attempt.

My questions:

  1. What minimal per-attempt diagnostics would you capture to distinguish missing data, invalid metadata, provider/indexing lag, and application logic failures?
  2. How would you preserve evidence provenance and freshness when retrying incomplete valuation or token-amount verification?
  3. How would you distinguish temporary evidence failures from permanently unsupported assets without infinite retries or incorrect notification thresholds?
  4. Since these 49 identities correspond to only 11 transactions, how would you correlate failures across attempts without double-counting them? Would you recommend structured reason codes, provider-evidence snapshots, or both?

I can share a small, redacted trace and relevant code excerpts if needed.

My priority is correctness. I don't want to assume 18 decimals, invent prices, weaken verification, incorrectly filter unresolved events, or blindly resend notifications.


r/ethdev • • 2h ago

Information Octant Epoch 13: Privacy Round. Help support your favorite projects.

Thumbnail
epoch.octant.app
1 Upvotes

There's a new Octant round active right now focused on funding teams advancing privacy on Ethereum and the open internet. There aren't a lot of programs like these anymore, so please check it out and help support your favorite projects.

  • Round open until Oct 22, 08:00 AM
  • Min. contribution 0.07 ETH / $20

r/ethdev • • 17h ago

Question Are onchain bots useful for ETH trading?

3 Upvotes

I've heard about bots that can do more than just send price alerts, like interacting with smart contracts and making transactions using their own wallets. Anyone here ever built or tried something like that? If you have, what did you use it for and how difficult was it to get working? I'm especially interested in how people handle giving a bot access to a wallet without putting too much at risk.


r/ethdev • • 21h ago

My Project Deterministic schema-escrow for EIP-3009 and x402 payments

1 Upvotes

If you are working with EIP-3009 transferWithAuthorization or x402 agent payments, there is a fundamental timing problem: settlement is immediate, but data delivery is probabilistic.

Standard facilitators run ecrecover and submit the transaction to the sequencer right away. If the upstream server is an autonomous agent that returns a 502, malformed JSON, or bad data, the nonces are consumed and the buyer's balance is deducted with no recourse.

Instead of writing complex on-chain escrow contracts that add latency and double gas costs, we put a stateless clearing flow on Cloudflare Workers:

  1. Prunes circular wash-trading clusters using a Union-Find graph of Base ERC-8004 agents.
  2. Holds the EIP-3009 signature in memory while firing the upstream request.
  3. Runs checks on the body: compiled Ajv schema, numeric bounds, timestamp freshness, and refusal strings.
  4. If it passes, it settles and returns a signed receipt. If it fails, the signature is dropped from memory, nothing is broadcast, and the buyer pays 0.
  5. If fallback endpoints are provided, it tries the next candidate in the same request.

Code is up on GitHub under Nullclear-Protocol/nullclear (MIT).

It runs on Base Mainnet as Agent 124595, and the client SDK is on npm under u/nullclear/x402-arbiter.

Curious how others here are dealing with counterparty delivery risk when the payee is an LLM agent.