eth-tracker
Follows Gnosis, filters CLC-related txs (including reverts), publishes to NATS JetStream.
Pinned image: ghcr.io/cosmo-local-credit/eth-tracker:v1.14.0-stable. API 127.0.0.1:5001.
Bootstrap
Default: load bootstrap.ge_registry, resolve TokenIndex + PoolIndex, walk entries, then each pool's tokenRegistry(). Cache lives in BoltDB (tracker_data) and in memory.
Watchlist mode (bootstrap.watchlist non-empty): skip the registry, use that set, then apply blacklist.
Runtime updates from AddressAdded / AddressRemoved.
Staging:
[bootstrap]
ge_registry = ["0xaC95B1A09f2dbaf4542e3Ba8c4Cce0234895D389"]
watchlist = [""]
blacklist = [""]
contracts = ["0xB286994c648F98fD3a3BA6C43934828a5b88162b"]contracts is extra addresses always watched (here: the factory).
Chain
TRACKER_CHAIN__CHAINID=100
TRACKER_CHAIN__START_BLOCK=48027888
TRACKER_CHAIN__POOL_SETTLEMENT_BLOCK=0
TRACKER_CHAIN__RPC_ENDPOINT=https://gnosis-rpc.publicnode.com
TRACKER_CHAIN__WS_ENDPOINT=wss://gnosis-rpc.publicnode.comLosing tracker_data restarts catchup from START_BLOCK.
Staging pool_size = 4. See RPC.
JetStream
TRACKER_JETSTREAM__PERSIST_DURATION_HRS=48
TRACKER_JETSTREAM__DEDUP_WINDOW_HRS=48 # must equal persist
TRACKER_JETSTREAM__STREAM_REPLICAS=1 # single-node NATSDedup id: txHash:logIndex. Replicas 3 on one node never reaches quorum.
Config key is jetstream.endpoint (singular).
Subjects
Stream TRACKER.*. Payload envelope:
{
"block": 0,
"contractAddress": "0x…",
"success": true,
"timestamp": 0,
"transactionHash": "0x…",
"transactionType": "POOL_SWAP",
"index": 0,
"payload": {}
}index is the log index. 0 on reverted input-data events. max uint64 on CONTRACT_CREATION.
See NATS for per-type payloads.