How to enable zkSync for payouts

This post is intended to present the simplest, most straightforward instructions possible for how Storj Node Operators can enable zkSync for payouts. If I made a mistake, or you have suggestions for how it can be more clear or more comprehensive, please let me know, and I will edit the post.

This post assumes that you have already decided to switch; if you’re looking for reasons to switch to zkSync, you’ll need to look elsewhere. It also assumes you have already determined that your wallet can accept payouts though zkSync; that topic is also covered elsewhere.

The authoritative page covering this topic is here. This post is not meant to replace it, but to supplement it for SNOs who, like myself, had difficulty following those instructions. (This post may become obsolete as the official instructions are improved.)

There are only two thing you need to do to switch to zkSync:
1. Change the command
GUI (Windows or Linux):
If you’re running a graphic user interface version of Storj software, you need to update your config.yaml file to include:
operator.wallet-features: ["zksync"]

If you’re using docker, modify the run command to include the text --operator.wallet-features=zksync, as follows:
docker run ... storjlabs/storagenode:latest --operator.wallet-features=zksync

If you’re using docker-compose, add the following line to the docker-compose.yml file:
command: --operator.wallet-features="zksync"

2. Restart Storj software
Now, you need to restart the Storj software. Please note that simply rebooting your system may not properly invoke the modified command! So, be sure to fully relaunch it using your chosen method. With docker and its variants, this means removing the container and relaunching. (See the comment thread below for more details.)


  • To confirm whether you completed the above steps properly, visit your main Dashboard page. Near the bottom of the main page, under “Payouts”, you should see green text that states: “zkSync is opted-in.”
  • Your wallet address remains the same. The wallet address used for zkSync is the same as the address used for traditional (Ethereum Layer 1) payouts.
  • When you do get a payout, you may not see any notification. Your dashboard will not reflect that the funds have been distributed, and your wallet software will not indicate that the funds have been deposited, until you take further action beginning at
  • This post does not cover how to withdraw or transfer funds paid out via zkSync. I hope to write a post covering that topic as well.

Pretty clear post! :+1:

I feel like we could make clearer the fact that, in the case of docker containers at least, restarting them is not enough for new command parameters to be taken into account.
They need to be removed and then relaunched.

For SNOs running docker, it looks like this:

docker stop -t 300 storagenode
docker rm storagenode
# Then start the node as usual with all the parameters plus --operator.wallet-features="zksync"

Where storagenode is the name of the Storj node container

I’m not sure about this approach for other methods (Windows, docker-compose).


Great suggestion. I don’t understand this part well enough to be 100% sure of proper terminology, so I’m taking my time implementing, but will adjust shortly!

@Pac I made a small change above. I’m sure it can be further improved, please let me know what you think.

1 Like

@Alexey or @BrightSilence or @Pac , maybe one of you can help me understand where I’m at in the process?

This month is the first that a payout was executed for my Storj node. I received no notification of a payout (which I think is probably normal?) but I did go to and there I can see that a little more than 11 STORJ was added to my zksync wallet five days ago. (When I look at my Coinbase wallet I see no indication of this, and when I look at my Storj node dashboard it does not indicate that any payout was sent. Normal?)

However, I am surprised by the fees when I try to transfer the amount, and I’d like to make sure everything is working properly before I proceed.
storj transaction

I understood from earlier discussions that there would be a one-time fee, so the 14.22 STORJ fee makes sense to me. But, it seems that on top of that, there is about 14 STORJ more, as a per-transaction fee in order to transfer about 11 STORJ? Surely that can’t be right?

In addition (this one for Alexey), I’m curious about a survey I filled out a couple weeks ago. It stated that there was a $25 award for filling in the survey; however, at the end of the survey (after filling in all the answers) it stated that I would only be paid if there had already been payments sent to my address. Well, there weren’t. Is that statement accurate, or should I expect to receive that reward? If so, it seems like a mistake that the information would only be divulged at the very end of the survey. I’d strongly urge you to revisit the messaging for any future surveys.

Withdrawals to L1 necessarily have to happen on the Ethereum main net, so the transaction fee your seeing is correct. You just chose a really poor time to look at these fees as gas prices were very high there. zkSync only saves money on transactions that stay within L2. The 10% bonus payout was added to compensate for the lack of L2 exchanges ATM and should cover the additional costs of transactions once it becomes reasonable to actually move your payouts out of your wallet.

As for the survey, it was mentioned elsewhere that you would be fine as long as you can receive zksync payments on the address. So it shouldn’t be a problem that you hadn’t yet received a zksync payout at the time. It seems that that bonus hasn’t yet been included in payouts though. I’m guessing we’ll see that next month.


Ah, thank you for the clarification on both points!

I see, I had not understood this. Let’s say I want to keep the currency within L2, and take advantage of those savings. How do I get it to be reflected in my wallet (and I suppose also on my dashboard as having been paid out)?

To be clear, I have no imminent need of having access to the funds, converting to fiat, or anything like that. I’m happy to do whatever is most optimal to avoid fees and just let it accumulate in the longer run. But, it seems like I’m still failing to grasp some key parts of the concept.


Oh, wait, I had missed an obvious button! I thought that “transfer” was the same thing as “send to L1”, but no.

So, I believe I will want to “transfer” in which case I pay the one-time fee of 9.47 STORJ. And then, presumably, this will show up in my Coinbase Wallet, but somehow indicated as “L2” rather than “L1” STORJ, and somehow restricted from conversion to non-L2 currencies. Do I have that right? Is there any advantage to waiting to make that transfer, or is it best for me to do it right away?

I’m not sure what your question is. Seems to me you already mentioned it was reflected in your wallet.

This will happen when all payouts are done and the satellite reports that data back to your node. Same as always. The payouts on L1 have just taken a little longer this month, so there is more of a gap between payout and data being reported back.

zkSync will need to be supported. And I’m not sure coinbase wallet has that integrated yet. You can see your balance on in the mean time. This balance is already under your control on the Ethereum main net. It’s just that most wallet software hasn’t yet implemented zkSync functionality. I haven’t checked whether you can use coinbase wallet to log into zksync wallet though, so please check that before transfering tokens. But if not, you can always export your keys and import in metamask to log in.

1 Like

It’s reflected at, but it’s not reflected in Coinbase Wallet. Coinbase Wallet still shows the same balance it has before, i.e. no STORJ. I am guessing that at some point in this process Coinbase Wallet will show an increased balance – my question is, (a) at what point in the process should I expect to see that, and I suppose (b) will I need to manually authorize the transfer from to Coinbase Wallet every month? (Sorry if I was unclear, maybe it’s proper to refer to as “my” wallet, but it hadn’t occurred to me to do so. I didn’t “sign up” for that at nearly the same level as I did for Coinbase Wallet, so to me it just seems like some mysterious cog in the Interweb machine, not anything I’d refer to as “mine.” But I can learn :slight_smile: )

Ah, good info, thank you! (But remember, this is the first time I’ve received a payment, so “same as always” is…uh…not meaningful to me yet. I’m still trying to learn what to “always” expect!)

OK, I think this gives me the info I need. Coinbase Wallet is listed as one of the ~10 options available at - BUT it sounds like that may not be 100% guarantee that it has all the functionality built in. This seems odd to me, but it’s OK…if you are confident that the balance is stable, and under my control, and not going anywhere, where it is, I’m happy to just chill and let it accumulate there, and wait to hear more. To be honest, I have read a lot of stuff and watched a lot of videos about metamask, and sadly it remains as opaque as the rest of this stuff to me…so, probably better not to introduce yet another variable if I can avoid it!

Very much appreciate all your help here. For now, I will wait and see, and I will take some satisfaction at having successfully taken the first baby steps toward getting payments working!

This was my first month of receiving a zkSync payment too and it was pretty much “same as always”. Try not to overcomplicate things.

Oh, I see where I let some confusion in – it’s my first time receiving a payout at all. I have not received non-zksync payouts before. So all the payout stuff is new to me. But, I think I’m finally getting it – very much appreciate the detailed answers in this thread.

1 Like

Yeah, so what they mean by that is that you can use coinbase wallet to sign in on and see your balance. It doesn’t mean you can see and use your balance in coinbase wallet itself.

I think only numio atm shows your zkSync balances in the wallet app. To have this feature, the wallet would have to specifically build in features to show balances and do transactions on zkSync. Most haven’t done that (yet). So instead you use your wallet to log in on and do everything there.

This is just a bit of a shot in the dark, but in my experience the wallet terminology has led to a lot of confusion. Your tokens aren’t actually in a wallet… The wallet is just software that lets you access and control your tokens on the blockchain using your private key. This is why you can also easily import your key into another wallet and control your assets from there. It’s more like an internet banking interface (interface to the blockchain) than an actual wallet. You private key would be your debit card… I guess all analogies have their faults, but yeah. In the case of zkSync the tokens are simply on a different payment network, so if your wallet (blockchain interface) doesn’t support that payment network, your balance doesn’t show up. is specifically made to support that payment network, so you use your private key (debit card) to log in there.

To be honest… I’m not sure if any of that helped explain it. It is just a bit complicated. But it’ll click at some point.


Well, they are: the term “wallet” is used for both the “blockchain interface software” and the “wallet.dat” file that contains your public keys. So in a way, your coins are in your wallet file. (of course I prefer to think that my coins are stored inside my mnemonic phrase)

Yes, your keys, not your coins/tokens.
That would be like saying your money is in your debit card…
Or your furniture is in your house key…
Your car is in your car key… :slight_smile: Ok, I’ll stop

1 Like

My live bands are in my RAID 5 and sometimes in my phone :wink:

I’ll just leave this here:


Again, very helpful. I think this was a key piece I was not getting. It’s been explained to me that you can switch from one wallet to another without fees and so forth, but I thought that had something to do with the specific inter-compatibility of certain wallets, only now grasping that it’s because of the nature of how the blockchain works. This is really key info for me, for a long time I was hung up on “I’m using Coinbase Wallet, but I’ll wait to enable payments until I determine whether that’s really the wallet I want to use.” I finally decided to do it, because I figured at worst I’m risking a few dollars worth of coins if I change my mind later. But now, I see that it’s even safer than that – I can switch later, with no downside beyond the fact that due to it not being a “cold storage” wallet, the keys might be a little more exposed than is ideal.

If Storj Labs wants crypto noobs like me to switch to zkSync, I think finding a way to express this part more clearly might make a big difference!

I’m pretty sure the survey stated it would pay out in January. But so far, no payout. Any idea whether anyone has gotten paid for that yet? I’ve been getting my zkSync payouts for regular earnings, both December and January.

Yes they’ve all been paid out. It was mentioned elsewhere. But I missed out. It took only 3 minutes after the mail was sent out before the first 50 responses were in and I took 5 minutes. Chances are you were too late as well.

1 Like

Oh, weird. Didn’t remember seeing anything about a 50 response limit. My bad I’m sure, ah well.

Apparently they got thousands of responses. That would have been real expensive without the cap. :wink: