At some point, we will probably change our mechanism from batch auction to some form of combinatorial auction (what type of combinatorial auction is unclear ATM). What this means, in practice, is that each batch could have multiple winners: there could be solver 1 winning orders A B and C, and solver 2 winning orders D E and F. Hence, in a given block, we may have multiple solvers trading different orders via our settlement contract. And, multiple solvers may earn rewards for the same batch.
From the infrastructure viewpoint (v2 of the smart contract, autopilot, payout script, ...), we should make sure that we never implicitly or explicitly assume that there is a single winner per batch and that the settlement contract is accessed only once per block.
Problem
At some point, we will probably change our mechanism from batch auction to some form of combinatorial auction (what type of combinatorial auction is unclear ATM). What this means, in practice, is that each batch could have multiple winners: there could be solver 1 winning orders A B and C, and solver 2 winning orders D E and F. Hence, in a given block, we may have multiple solvers trading different orders via our settlement contract. And, multiple solvers may earn rewards for the same batch.
From the infrastructure viewpoint (v2 of the smart contract, autopilot, payout script, ...), we should make sure that we never implicitly or explicitly assume that there is a single winner per batch and that the settlement contract is accessed only once per block.