As https://github.com/cerc-io/go-ethereum/issues/396 shows, we can get scenarios when the chain advances by more than a single block, but the event which is seen by the WriteLoop will only be for the new head block--however many blocks in advance it is--allowing gaps to open in the statediffing.
This code will detect and trigger statediffing for the skipped blocks. The functionality is similar to the previous "head gap" filling code. Similar enough that we are able to remove that code and allow this to cover both cases.
As https://github.com/cerc-io/go-ethereum/issues/396 shows, we can get scenarios when the chain advances by more than a single block, but the event which is seen by the WriteLoop will only be for the new head block--however many blocks in advance it is--allowing gaps to open in the statediffing.
This code will detect and trigger statediffing for the skipped blocks. The functionality is similar to the previous "head gap" filling code. Similar enough that we are able to remove that code and allow this to cover both cases.