The TokenFactory::deployToken() method deploys the token contract using inline assembly with CREATE opcode. This is not supported on ZKSync Era, where the contract is supposed to be deployed.
The TokenFactory::deployToken() deployes the token with the following inline assembly block:
The ZKSync Era documentation states:
To guarantee that create/create2 functions operate correctly, the compiler must be aware of the bytecode of the deployed contract in advance.
In the TokenFactory contract the compiler is not aware of the bytecode of the deployed contract in advance, as the bytecode gets passed as an argument to deployToken() function during the runtime. In fact, the inline assembly block from the deployToken() method is almost identical to the one provided in the ZKSync Era documentation as an example of code that will not work.
TokenFactory contract will be broken on the ZKSync Era chain.
Manual review, Patrick's auditing course curriculum
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.