Home
Developer guide
Getting started
  • Getting started
  • About the testnet
    • Connecting Metamask
    • Important links
    • Feature support status
    • Known issues
    • Try it out!
    • Reporting issues
  • ZK Rollup Basics
    • Contract deployment
    • Important: Account abstraction support
    • Block numbers and time
    • 2.0 Overview
    • Handling of ETH and tokens
    • Fee model
    • Transaction types
    • Transaction formats
    • Confirmations and finality
    • Decentralization roadmap
    • L1 / L2 Interoperability
    • Current limitations
    • Web3 API
  • Understanding zkSync 2.0
  • Home
  • /
  • Getting started
  • /
  • About the testnet
  • /
  • Known issues

Known issues

What's on the page
  • Metamask native transfers not working
  • Metamask native contract interactions not working
  • Transfers with the entire token balance fail
  • Errors before sending a transaction
  • Wallet has no funds / Contract disappeared
  • wait() gets stuck for L1->L2 transactions
  • unexpected end of JSON input compilation error
  • Docker Desktop is not running / Docker Desktop is not installed error
  • Can not use CREATE/CREATE2 opcodes with raw bytecode
  • Hardhat's console.log does not work

While zkSync 2.0 is in alpha, we will put known (and not fixed yet) bugs here as well as workarounds for them.

Metamask native transfers not working

It is not currently possible to transfer ERC-20s inside the Metamask interface.

Solution. For now, transfers inside zkSync you should be done via the zkSync Wallet dApp.

Metamask native contract interactions not working

It is not currently possible to interact with zkSync smart contracts via Metamask with EIP-1559 transactions. The reason for that is that Metamask tries to override several EIP-1559 transaction fields (assuming they can not have zero value), while these fields should be zero for zkSync.

Solution. Explicitly specify { type: 0 } in transaction overrides to use Ethereum legacy transactions.

Transfers with the entire token balance fail

If you try to transfer the entire balance of a token, which is also the token you pay the fee with, the transaction fails. The reason is that we don’t deduct the fee before setting the amount to be transferred.

Solution. Keep aside a small a amount to cover the fee.

Errors before sending a transaction

Similar to above, in cases where the fee should be deducted from the token amount, you may get an error if estimate_gas returns an error.

Solution. As above, make sure to keep aside a small amount to cover the fee.

Wallet has no funds / Contract disappeared

We are expected to update our testnet continuously, and so from time to time, we will need to do a re-genesis. This will cause the entire state to reset, and all deployed contracts will cease to exist.

We will communicate re-genesis events before they happen!

wait() gets stuck for L1->L2 transactions

If the wait() takes much longer than expected, most likely the transaction has failed.

unexpected end of JSON input compilation error

This is an error that is usually thrown when compiling a large smart contract codebase.

If you encounter such an error, please do the following:

  • Update the @matterlabs/hardhat-zksync-solc library and try to re-compile the smart contracts afterwards.
  • If after the recompilation you get the Library not found error, then you should follow the instructions from here.
  • If the same error persists, report the issue to our team. We will do our best to help you.

Docker Desktop is not running / Docker Desktop is not installed error

If you are running Windows you may get this error, as a result of incompatibility with our hardhat plugin. You can still compile the contract using Windows Subsystem for Linux (WSL 2).

Can not use CREATE/CREATE2 opcodes with raw bytecode

zkSync does not support using CREATE/CREATE2 with raw bytecode. We highly recommend using the new operator to avoid any issues.

Hardhat's console.log does not work

zkSync does not support the Nomic Foundation's console.log contract. Due to different address derivation rules, even when deployed, the console.log library will likely have a different address from the one on Ethereum.

Last updated: 7/5/2022, 1:42:16 PM
Previous
Feature support status
Next
Try it out!
Edit on GitHub
  • Metamask native transfers not working
  • Metamask native contract interactions not working
  • Transfers with the entire token balance fail
  • Errors before sending a transaction
  • Wallet has no funds / Contract disappeared
  • wait() gets stuck for L1->L2 transactions
  • unexpected end of JSON input compilation error
  • Docker Desktop is not running / Docker Desktop is not installed error
  • Can not use CREATE/CREATE2 opcodes with raw bytecode
  • Hardhat's console.log does not work