We can batch the accounts and storage data accesses if we optimistically execute transactions without waiting on the data, and keeping a list of all data that was accessed. Afterwards we can then batch request all accessed data and then re-execute the transactions to incrementally get the actual required data for a block.
So this trades off local CPU processing for more efficient RPC requests because now transactions need to be executed multiple times. For remote node accesses, this seems to be very much worth it with 5x - 10x faster input gathering compared to #111.
We can batch the accounts and storage data accesses if we optimistically execute transactions without waiting on the data, and keeping a list of all data that was accessed. Afterwards we can then batch request all accessed data and then re-execute the transactions to incrementally get the actual required data for a block.
So this trades off local CPU processing for more efficient RPC requests because now transactions need to be executed multiple times. For remote node accesses, this seems to be very much worth it with 5x - 10x faster input gathering compared to #111.