The syscall results is not checked during depositing a Token on L2. So, in case of unresponsive starknet, the escrowed NFT on L2 will not be bridged to L1, and would become unreachable.
Suppose bridging from L2 to L1 is not possible due to any reason, like: Starknet is down temporarily (as it happened recently https://status.starknet.io/incidents/d5c155c60fxs), or due to a bug/issue, the bridging is paused or inexecutable.
In this case, if a user deposits an NFT on L2 to be bridged to L1, the NFT would be escrowed on L2, but when send_message_to_l1_syscall
is called, it would be unsuccessful. Since, the result of this system call is not checked, the deposit_tokens
transaction would be executed, but in reality no message is bridged to L1. As a result, the user's NFT would be escrowed on L2 without being bridged, and impossible to be withdrawn on L2.
Please note that during deploying a contract on L2, the system call result is checked, while during sending a message to L1, the system call result check is missing.
Loss of NFT in case of unresponsive starknet.
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.