Most bridges between L1 and L2 (let's say between Ethereum and Polygon), particularly with NFT, perform their bridging through the following:

From L1 to L2:

  • Hold NFT token in escrow by the bridge on L1
  • Mint a new token of the same ID on L2

From L2 to L1:

  • Burn the NFT token on L2
  • Transfer the NFT token back to user on L1

But what happens when user burns his NFT token on L2? Wouldn't the the NFT token still technically exist on L1 except that it is held escrow by the bridge? In fact, running ownerOf(tokenId) on the NFT token contract on L1 might just return the bridge's address indicating that the token still exists on L1 even though it has already been burnt on L2.

How are such incongruences managed?

1 Answer 1


L1 -> L2 is atomic.

But L2 -> L1 is not, as you mentioned. There's a period of time between when the L2 function is executed (Burn the token on L2) before it's realized on the L1. This period of time is called by Optimism the Challenge Time. You can read more about it here: https://community.optimism.io/docs/developers/bridge/messaging.html#understanding-the-challenge-period

So in your scenario, there is definitely a period of time (Challenge Period) where the NFT is burned on L2 but still exists on L1 owned by the contract. This is something you need to deal with in your contracts. It doesn't necessarily raise a security issue assuming your contracts are working together and don't try to change state of the NFT on L1 while the Burn+Mint operation is still being processed.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.