- Per network settings (max blocks age/number - for pruning)
- Multiple RPCs support
- Telemtry (add telemetry-batteries)
- Metrics
- Tracing
- Automated testing
- Basic
- Basic with contracts
- Escalation testing
- Reorg testing (how?!?)
- Plug block holes - we can periodically fetch the list of known blocks for a given chain and find and fetch any missing ones from the RPC
- Find missing txs - sometimes a transaction can be sent but not saved in the DB. On every block we should fetch all the txs (not just hashes) and find txs coming from our relayer addresses. This way we can find missing transactions.
- Smarter broadcast error handling - we shouldn't constantly attempt to broadcast the same tx if it's failing (e.g. because relayer address is out of funds).
- Parallelization:
- Parallelize block indexing - depends on per network settings
- Parallelize nonce updating
- Parallelize broadcast per
chain idrelayer id
- No need to insert all block txs into DB
- Prune block info
- RPC Access
- Cross-network dependencies (i.e. Optimism depends on L1 gas cost)
- Transaction priority
- Handling reorgs
- Per relayer settings (i.e. max inflight txs, max gas price)
- Authentication