If the proposer submits an invalid proposed block, how does it "tell" the L1 node that the block is invalid?

The logic is to build a temporary block in L2 first (for example, b3 is an invalid block, and B2 is the parent block to build temporary block B). Block B only contains one transaction invalidateBlock(...), and substitute the txList of b3 into the function .

Generate a zk proof based on B and submit it to L1. If the verification is valid, it proves that b3 is an invalid block. #crypto2023

10/n🧵