zkSync Era
chain has differences in the usage of the create
/ create2
opcode compared to the EVM.
The project doesn't explicitly mention that they are compatible in zkSync but since they have mentioned they are compatible in any EVM , so thought it might be fair to mention this.
The description of CREATE and CREATE2 (https://docs.zksync.io/build/developer-reference/ethereum-differences/evm-instructions#create-create2) states that Create cannot be used for arbitrary code unknown to the compiler.
createAccount
function uses Solady's LibClone:createDeterminitic1967
function: for creation of a Nexus account with a specific initialization data, One can check this lines for more information
As mentioned by the zkSync docs: "The code will not function correctly because the compiler is not aware of the bytecode beforehand".
This will result in loss of funds, since there is a fee to create a new instances, hence all the creating instances function is made payable.
This might will also be a problem when computing the address on zkSync era , since the create2 opcode address is computed differently in zkSync
Medium: since mostly will be DOS (because no instances can be created in zkSYNC) + loss of funds since they are payable
Manual Review
Try using create2
opcode directly or the other possible ways as mentioned in the zk sync docs
Additionally i would also suggest to have a way to recover the lost funds if by any chance a deployment fails
Valid medium, since there is non-functionality on zkSync (cannot create accounts) since it is stated as follows > Blockchains: > - Ethereum/Any EVM
Valid medium, since there is non-functionality on zkSync (cannot create accounts) since it is stated as follows > Blockchains: > - Ethereum/Any EVM
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.