Hi,
I'm trying to better understand the Hot-Cold Wallet System because I think it's very important to have a clear understanding of this topic.
There is no week without a new hack about an exchanger, service, game site ... where all bitcoins are stolen from the hot wallet.
I have made a lot of research about the hot wallet topic and found much informations, I want to share with the community.
But there are still questions I can't answer, maybe some user in the forum will help me.
The Hot-Cold Wallet System:
https://i.imgur.com/RoVPspF.jpgSource:
https://bitcoinsecurityproject.org/SecureApplicationArchitecture/The hot walletThe hot wallet is what your service will use to receive and send bitcoins immediately. If you are sending bitcoins to a user for a withdraw, it comes from the hot wallet on the server. A good hot wallet only keeps a small portion of bitcoins available. An amount that allows your service to run for a week or even a day without running out. Say your hot wallet was 5%-10% of your total funds, you'd daily or weekly add bitcoins or take bitcoins. If there are no bitcoins on the hot wallet, your service should come to a grinding halt. You cannot automate the filling of the hot wallet from the cold wallet, this is dangerous and is exploitable.
The benefit of this smaller balance on the server is that you cannot get robbed of all your funds suddenly.
The cold walletThe cold wallet should not be in any way connected to the internet. It'd be best if only you had access to it. 90% of your funds should be kept here. The idea is that the attacker cannot access 90% of your funds electronically or automatically. You should manually be moving coins from the cold wallet to the hot wallet by yourself.
Source:
http://bitcoin.stackexchange.com/questions/21998/how-would-you-store-a-bitcoin-wallet-for-a-small-bitcoin-exchangeNow we know how a Hot-Cold Wallet System theoretically works.
The next step is to decide how to set-up such a system. I have found three different ways to build a hot wallet.
1. Bitcoind client
Compile the bitcoind client for your server and use a encrypted wallet direct from your server (or separated wallet server).
2. Coinbase api:
https://coinbase.com/docs/api/overviewYou can choose different authentication methods: API Key, API Key + Secret or OAuth2 (
https://coinbase.com/docs/api/authentication)
After that you can choose the permissions like send, request ... (
https://coinbase.com/docs/api/permissions)
3. The Blockchain api:
https://blockchain.info/apiIf I understand it right, you can choose between API Key and API Key + Secret (
https://blockchain.info/api/blockchain_wallet_api)
In my opinion the safest way is Coinbase OAuth2 + permissions. Am I right?
Are there other ways to set-up a hot wallet?
It would be great if someone who know the topic can help me to share the best way to set up a Hot-Cold Wallet System with the community.
It's in our all interest!
Thanks
DaDeus