Cover photo

zkSync Assets & Balances

In this article, let’s take a look at how zkSync is currently holding the assets. How they are represented on L1 and on L2(s) - as there are more chains in the zk chain ecosystem now.

When you ‘deposit’ assets into L2, the original asset on L1 is getting ‘locked’ in the bridge contract, and you receive a ‘wrapped’ asset on L2 chain.

When you ‘withdraw’ the process goes in opposite direction - you ‘burn’ your wrapped asset on L2, and this gives you the possibility to ‘claim’/’transfer’ the original asset on L1.

Single Token on Era only

First, let’s find the bridge address on L1 for Era ecosystem: It is 0xD7f9f54194C633F36CCD5F3da84ad4a1c38cB2cB
You can find this and other addresses in the documentation:

https://docs.zksync.io/build/developer-reference/addresses/zk-chain-addresses

We can clearly see that it is holding ETH and some other ERC20 tokens.

Current holdings of the L1 bridge
Current holdings of the L1 bridge

Let’s look at the random token - for example IDO. Here we can see that there are 47.9M tokens ‘locked’ into this bridge contract on L1.

Let’s see how many are ‘minted’ on Era. Let’s start with list of tokens in zkSync explorer (explorer.zksync.io/tokens). There we can check IDO token address on L2 ( 0xDea6d5161978d36b5C0FA6a491faA754f4BC809C):

Address of IDO token
Address of IDO token

To see the total amount of tokens minted on L2, we have to query the contract itself:

Click 'Read as Proxy'
Click 'Read as Proxy'

And we can verify that the total supply is 47.9M (the number below is large, as you have to divide it by 10^18 decimals)

Total supply of the token
Total supply of the token

Tokens in the ecosystem

I’ve mentioned at the beginning of the article, that there are more networks in the ecosystem - and the L1 bridge hold the assets for all of them - and it also knows how much each network has.

For this, let’s go back to the L1 bridge contract, and query it:

post image

But this time, we’ll querying chainBalance method:

Chain balance
Chain balance

For this part, let’s look at the CRONOS L1 token (0xa0b73e1ff0b80914ab6fe0444e65848c4c34450b) and see its balance on Cronos chain (chain id 388) and on Era (chain id 324). You can find chain id on chainlist.org page.

Amount of CRO tokens locked on L1 that belong to zkSyncEra chain
Amount of CRO tokens locked on L1 that belong to zkSyncEra chain
Amount of CRO tokens locked on L1 that belong to zkCronos chain.
Amount of CRO tokens locked on L1 that belong to zkCronos chain.

And now you can repeat the experiment from above, and go to Cronos explorer to verify that the amount of CRO tokens minted there is matching the value above.

explorer.zkevm.cronos.org/token/0xbcaa34ff9d5bfd0d948b18cf6bf39a882f4a1cbd#code

CRO token balance on zkCronos chain
CRO token balance on zkCronos chain

If you look carefully, you can see that the supply can differ a little - this is mostly due to deposits and withdrawals that are ‘in flight’. But the balance on L1, must be always greater than the one on L2 (otherwise it would mean that L2 minted some additional tokens without having their equivalent locked in L1).

Homework

Try doing the experiment above for other tokens - for example WBTC.