Endpoints,
checked not assumed
The desk talks to an endpoint and to nothing else. These are offered as a convenience; each one had to answer the right chain id and send a CORS header before it earned a place in the list.
The endpoints
called, not assumed| chain | chain id | endpoint | fallbacks |
|---|
eth_chainId and had to do two
things: answer the right id, and send an
access-control-allow-origin header — the second is what
decides whether a browser may use it at all.
What was dropped, and why
| endpoint | what it answered |
|---|---|
eth.llamarpc.com | HTTP 525, and no CORS header at all. This was the default until it was checked, and it is why an early run came back with every slot unread. |
rpc.ankr.com/eth | “Unauthorized: You must authenticate your request with an API key.” |
polygon-rpc.com | “API key disabled, reason: tenant disabled.” |
lb.routeme.sh | “public rate limit” on the first anonymous call. |
wss:// entries | Sockets. This client speaks HTTP JSON-RPC and nothing else, so they are not offered. |
The command line
for watching, not just lookingWatch it, don’t just read it once
The desk answers “what does it allow right now”. The command line answers “what changed since yesterday”: content-addressed snapshots, a diff, and exit code 8 while any threshold you set is crossed — which is what makes it useful in cron.
A rug is not a slow drift. The point of watching is to hear the owner key wake up: a fee raised, a cap dropped, ownership transferred, a switch flipped. A balance that merely moved is deliberately not reported as a change, or the alert would fire on every block and you would learn to ignore it.
$ git clone https://github.com/monokernn/REAGENT.git && cd REAGENT
$ pip install -e .
# config.toml — an endpoint for the chain
[rpc]
robinhood = "https://rpc.mainnet.chain.robinhood.com"
# read a contract, then keep watching it
$ assayer add robinhood:0x… --coin --pool 0x…
$ assayer snap <asset> && assayer show <asset>
$ assayer watch