One BatchAuthenticator reader, bound once. registerBatcher, resolveTEEVerifierAddress, and isBatcherActive each construct their own binding from the same address, and isBatcherActive re-does a CodeAt probe per publish tick plus fetches the SystemConfig address via BatchAuthenticator.SystemConfig() even though the batcher already has l.RollupConfig.L1SystemConfigAddress. One reader object, code-checked once at startup, cuts the gate to at most 2 L1 calls per tick and makes it unit-testable with the mock-backend pattern already used in espresso_fallback_gate_test.go.
Original discussion: #459 (comment)
One
BatchAuthenticatorreader, bound once.registerBatcher,resolveTEEVerifierAddress, andisBatcherActiveeach construct their own binding from the same address, andisBatcherActivere-does aCodeAtprobe per publish tick plus fetches the SystemConfig address viaBatchAuthenticator.SystemConfig()even though the batcher already hasl.RollupConfig.L1SystemConfigAddress. One reader object, code-checked once at startup, cuts the gate to at most 2 L1 calls per tick and makes it unit-testable with the mock-backend pattern already used inespresso_fallback_gate_test.go.Original discussion: #459 (comment)