NATS
JetStream, single node on staging (stream_replicas = 1).
Stream: TRACKER.*. Consumers should be durable + pull, and ACK after successful write. Redelivery is the retry.
MsgID txHash:logIndex is the dedup key. Keep dedup_window_hrs == persist_duration_hrs or a recovered tracker will republish events that are still stored but no longer deduped.
Subjects and payloads
Envelope is documented on eth-tracker. payload by transactionType:
| Subject | payload |
|---|---|
TRACKER.CONTRACT_CREATION | { from } |
TRACKER.CUSTODIAL_REGISTRATION | { account } |
TRACKER.FAUCET_GIVE | { recipient, token, amount } |
TRACKER.INDEX_ADD / INDEX_REMOVE | { address } |
TRACKER.INDEX_ACTIVE | { address, active } |
TRACKER.LIMIT_SET | { token, holder, value } |
TRACKER.OWNERSHIP_TRANSFERRED | { previousOwner, newOwner } |
TRACKER.POOL_DEPOSIT | { initiator, tokenIn, amountIn } |
TRACKER.POOL_SWAP | { initiator, tokenIn, tokenOut, amountIn, amountOut, fee } + optional settlement fields |
TRACKER.QUOTER_PRICE_INDEX_UPDATED | { token, exchangeRate } |
TRACKER.QUOTER_UPDATED | { newQuoter } |
TRACKER.SEAL_STATE_CHANGE | { final, sealState } |
TRACKER.TOKEN_APPROVE | { owner, spender, value } |
TRACKER.TOKEN_BURN / TOKEN_MINT / TOKEN_TRANSFER | standard ERC-20 fields |
POOL_SWAP from chain.pool_settlement_block onward adds quotedAmountOut, nominalAmountOut, protocolFee (from SwapSettlement). Below that block the extras are absent, not zero.
Amounts are raw integers. fee and every amount-out are in tokenOut.
On reverts the tracker still publishes; success: false and some payload fields are the type's zero value.