s.log.Warn("last submitted block lagged behind L2 safe head: batch submission will continue from the safe head now","last",s.l2SubmittedBlock,"safe",syncStatus.SafeL2)
require.Equal(t,sd.RollupCfg.Genesis.L1,verifier.L2Safe().L1Origin,"expected to be back at genesis origin after losing A0 and A1")
ifsd.RollupCfg.SpanBatchTime==nil{
// before span batch hard fork
require.NotZero(t,verifier.L2Safe().Number,"still preserving old L2 blocks that did not reference reorged L1 chain (assuming more than one L2 block per L1 block)")
require.Equal(t,verifier.L2Safe(),verifier.L2Unsafe(),"head is at safe block after L1 reorg")
}else{
// after span batch hard fork
require.Zero(t,verifier.L2Safe().Number,"safe head is at genesis block because span batch referenced reorged L1 chain is not accepted")
require.Equal(t,verifier.L2Unsafe().ID(),sequencer.L2Unsafe().ParentID(),"head is at the highest unsafe block that references canonical L1 chain(genesis block)")
batcher.l2BufferedBlock=eth.L2BlockRef{}// must reset batcher to resubmit blocks included in the last batch
}
checkVerifEngine()
// and sync the sequencer, then build some new L2 blocks, up to and including with L1 origin B2
Usage:"Comma-separated multiaddr-format peer list. Static connections to make and maintain, these peers will be regarded as trusted.",
Usage:"Comma-separated multiaddr-format peer list. Static connections to make and maintain, these peers will be regarded as trusted. "+
"Addresses of the local peer are ignored. Duplicate/Alternative addresses for the same peer all apply, but only a single connection per peer is maintained.",
eq.log.Warn("L2 reorg: existing unsafe block does not match derived attributes from L1","err",err,"unsafe",eq.unsafeHead,"pending_safe",eq.pendingSafeHead,"safe",eq.safeHead)
// geth cannot wind back a chain without reorging to a new, previously non-canonical, block
require.NotNilf(l.t,call,"No expected calls to %v with arguments: %v\nExpected calls: %v",abiMethod.Name,args,expectedCalls)
require.NotNilf(l.t,call,"No expected calls to %v at block %v with arguments: %v\nExpected calls: %v",abiMethod.Name,actualBlockRef,args,expectedCalls)