If you have a online site that accepts bitcoin deposits and users can withdraw their balance, Is it possible to have the deposits go to the watch-only address of a cold storage and the withdraws come from the hot wallet?

If yes, then basically I'll have to give a programmer my private key for the hot wallet and just the master public key for the watch only-address on the server. Am I correct?


2 Answers 2


The Answer is No, you can not do this. Reasons are below.

It seems you may be confused.

The point of a cold wallet it to store the coins offline, adding a watch-only address to a cold wallet does nothing, other then letting you see that address.

(I could add your address as a watch-only and see your balance as well, but that doesn't give me access to your coins)

If the coins are in the cold wallet then you have to send them from there, generally by creating and signing an offline transaction.

If they are in the hot wallet (even if being watched by the cold wallet) they you can send them from the hot wallet.

  • Please read my question again. I am asking if a user on my site can deposit coins into my cold storage wallet, and when the user withdraws, it comes from my hot wallet instead of my cold wallet. Sep 1, 2015 at 19:39
  • 1
    Only if you transfer them from the cold wallet to the hot wallet before the user tries to withdraw the coins.
    – Drazisil
    Sep 1, 2015 at 20:25
  • Hello Drazisil, thanks for your comment. Let me clarify it a bit. I want users on my site to be able to deposit coins in to my cold storage wallet, but lets say they want to withdraw their balance, I want the withdraw part to come from my hot wallet. So they would deposit to cold wallet address and when they choose to withdraw, it comes from my hot wallet. The reason for this is I do not want to give the programmer my private keys for the cold wallet. Sep 1, 2015 at 21:03
  • you will have to give the programmer the hot wallet credentials, passphrase and maintain an amount of bitcoin in the hot wallet , such that can be sufficient enough for withdrawals. you can be in charge over the cold wallet and move bitcoins one in a while from it to the hot wallet , then only small percent of bitcoin is hot and the rest cold Sep 8, 2015 at 19:14

I know that this is an older question, but I still wanted to take the time to answer it in case any other folks look this up.

To start with, you don't have to give your private key to a programmer in order to implement a deposit address (which is what you're describing here).

With BIP32, you can actually give someone a 'child' public key, which they can then use to generate additional public keys on your behalf without needing to have the associated public key on hand.

This illustration from 'Mastering Bitcoin' exemplifies this visually for you:

From 'Mastering Bitcoin'

In terms of signing, you could set up a JWT-esque script for the relay of your transaction:

Image from KrakenD ; but they're free

If the transaction has already been serialized, then all that's needed is for you to sign that serialized transcation.

The last check should probably be a verification on your end that recreates the transaction w th8e same parameters to ensure the ID's match up (if there is no match, there should be a fail). Once that passes, one last check to ensure that the amount is below the threshold of "alert" should be done (i.e., to make sure someone isn't attempting to withdraw > $1 million).

Not sure what a 'watch-only' address would be necessary for - but you could probably scrap that part of the idea entirely. There are plenty of tools, APIs, etc., that can be used for you t

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.