ZKSync network has its own native account abstraction implementation (https://docs.zksync.io/build/developer-reference/account-abstraction.html), which uses the Bootloader program as part of the account abstraction transaction process. This means there is no EntryPoint
smart contract.
Because ZKSync network has its native account abstraction feature, there is no EntryPoint
smart contract. Therefore, some functions from the EntryPoint
used in MondrianWallet
won't work. These functions are:
MondrianWallet::getNonce
MondrianWallet::getDeposit
MondrianWallet::addDeposit
On the other hand, if provided the correct Bootloader address as the constructor's entryPoint
argument, MondrianWallet::requireFromEntryPoint
and MondrianWallet::requireFromEntryPointOrOwner
will work perfectly since msg.sender
will be the Bootloader formal address, as stated in the official documentation (https://docs.zksync.io/zk-stack/components/zkEVM/bootloader.html).
Some core account abstraction functionalities won't work, such as getting the account's balance or adding deposits via EntryPoint
.
Manual review
An alternative would be to just not use those functionalities and do a direct transfer to the wallet when adding funds and read the wallet's address balance directly.
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.