Let suppose we have e-shop where you can buy with bitcoins. In this case, there is bitcoind that have locked wallet. In fact this wallet is never unlocked, because you can have another wallet on different computer with same wallet.dat file.

So in case of e-shops, even website is hacked and the hacker have full access of the server, he / she will not be able to steal any coins.

However in case of coin exchanges, there must be automatic withdrawal process. I am sure some exchanges withdraw money manually, but exchanges like Bitstamp, Bittrex, Binance, CoinExchange.io and others have such high volumes and this definitely can not be done manually.

How these exchanges protects against hacks?

Because the wallets must be unlocked, so all hacker need to do is to type bitcoin-cli send ....

If the wallet is locked, hacker might find the password somewhere on the server. Then he / she might unlock the wallet and send the coins.

Other way is hacker to "insert" his payment in payment queue and the system will send the coins for him.

  • I'm voting to close this question as off-topic because it isn't specific to Bitcoin, it applies to any currency exchange or similar online financial service. The Bitcoin protocols and reference implementation don't specify how exchanges should secure their servers. Aug 29 '19 at 18:05
  • you are correct. this is not bitcoin specific, but crypto specific. still I don't think question must be closed.
    – Nick
    Aug 29 '19 at 18:22

(Sane) Exchanges don't store keys on an online, publicly accessible server or instance of bitcoind.

The normal approach is to set up a minimum of three wallets:

  1. The receiver wallet - This wallet controls the addresses given to users to deposit their coins to. It is good practice to keep such keys entirely offline, as it is uncommon to need to move the BTC immediately after a deposit is received. Instead, exchanges tend to sweep the funds deposited over the last day/week every once in a while. These occasional txs can easily be signed offline and broadcasted when needed, asynchronously from the day to day operations of an exchange.
  2. The cold wallet - This wallet is, once again, an offline wallet and holds the majority of the exchange's coins. Coins from the receiver wallet addresses are sent here. Additionally, cold wallets tend to use multisignature scripts/contracts to ensure that no single operator can move funds unilaterally. Usually, the founders/high level employees of an exchange will hold keys to this wallet, and multiple people will be required to sign a transaction before coins can be moved.
  3. The hot wallet - These are usually the only keys that are available on a server. Even so, the server holding these keys will generally not have external internet access, and will only be accessible over the exchange's private network, and only from certain, authorized applications holding the correct credentials. This wallet contains a limited amount of coins, usually small enough that in the event of a hack, the exchange's own funds are able to cover the losses.
  • Can you pls elaborate how hot wallet is "filled" up? is is manual process?
    – Nick
    Aug 30 '19 at 13:21
  • 1
    It is usually a manual process, requiring multiple people to agree to send coins from the cold wallet - larger exchanges often have "warm" wallets, which require less people to agree for efficiency reasons, but are still more restricted than the hot wallet in where they can send coins to Aug 30 '19 at 15:41
  • that was extremely helpful
    – Nick
    Aug 30 '19 at 18:55

Remember that bitcoind is a reference implementation, but bitcoin itself is the abstraction of it.

In production environments not always you run the same software as in a desktop.

There are other bitcoin implementations that are meant for use in production systems at scale. One of them is called bcoin by the folks at purse.io and open sourced. And there are others more even.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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