Test zkSync with TestSTORJ token

OK, so I also did some testing, earlier today.
I created 3 addresses with the following roles:

The process was relatively straight-forward using Metamask.
The first transaction (L2) is for 9 SOTRJ from the payout bot to the test SNO (L2). The fee was tiny (0.05 storj). In the mainnet, that could be higher but still be quite small.
Then the SNO wanted to withdraw to the final L1 address, which, just like @littleskunk mentioned needed a one-time fee of 15000 gas to publish pubkey. This was taken in tokens (0.123 storj). However, note that the testnet has a gas price of 1 gwei, so in the mainnet that would be (assuming a gas price of 40 gwei) around $$0.75 (15k gas * 40 gwei at 1250$$/ETH) or ~2 storj (at $0.38/storj). Not bad, this is one time only.
I don’t get how the 0.123 storj fee was calculated in the testnet, it should have been more like $0.02 (15k gas, 1 gwei) or 0.05 storj, or am I missing something?
The final transaction was the withdrawal from the SNO to the L1 address. This took a fee of 0.484 storj. Again, in the mainnet this would have been higher. It’s hard to say how much exactly, but similar withdrawals in the same block charge 0.0001309 paid in ETH. In the zksync mainnet, at the same time, the block height was 10241 and contained withdrawals with a fee of 0.00476 eth. From that, we could estimate that the ratio of mainnet over testnet fees is around 36x. So in the mainnet, the SNO would pay a fee of 17.4 storj (~$6.60). For comparison, a direct L1 transfer of storj would be around $1.75 (35k gas, 40 gwei).

I also did some more withdrawal transaction tests (in the testnet, in eth), in the same block, and the fee doesn’t seem to change depending on the number of transactions (the first transaction and the last made had the same fee). (it’s easy to spot them, they were sent to addresses beginning with 0xaaaaa)

All in all: L2->L2 has very small fees, but L2->L1 is more expensive than L1->L1.

6 Likes