This is not an issue in my design, I replied here.
A zkRollup with no transaction history data to enable secret smart contract execution with calldata efficiency
Exit makes new user state and also makes the account list include their address.
New transfer transaction from/to the address makes the account list include the address.
You don’t double your fund.
So if you create a block that contains a transaction from an address that has been withdrawn from an older state that block is invalid ?
Seems like this will make a potential dos attack where a user is able to front run a block creation and make its verification fail.
Such a consistency problem about exit can be solved by making “exit block” in certain intervals.
It’s a kind of a block only for exit transactions. If no block is mined in a period, maybe this interval needs to be 1; since this is the case that the operators are not able to mine a block anymore.