SIGN IN SIGN UP

Correct mainnet addresses and read pool activity from chain

Every address is now confirmed on-chain via name/symbol/decimals or
getClassAt against two independent RPC providers. Three documented
values were wrong in ways that fail silently:

USDC pointed at bridged USDC.e rather than native Circle USDC. Inside
the pool that is ~19,600 shielded events against 80, so the planner
would have routed value into a venue with almost no anonymity set.

The pool fee is 6 STRK on-chain, not the documented 4. A MAX pre-fill
computed from 4 fails after the user has already signed.

The Vesu anonymizer class hash is not declared on mainnet, so the
private-lending route cannot execute. It is marked undeclared rather
than removed, since the hash is real and comes from an RC tag.

Adds strkBTC, the third most-shielded asset in the pool, which the
USDC to strkBTC swap in the spec requires.

Pool activity is read from real events rather than invented. Two
things the chain forced: amounts are not recoverable from private
actions (they emit commitments, so bucketing by "first non-zero data
word" would tier commitment hashes), and inter-arrival gaps must come
from observed event spacing — filling them with a constant would report
the pool as perfectly periodic and corrupt the timing term outright.

The Blast public RPC now errors on every call and is replaced as the
keyless fallback.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
S
Shariq Shaukat committed
b6d2194d4fb9330e1357f9c8c76838ce2c50c10a
Parent: f12911d