Cryptocurrency wallet

From Infogalactic: the planetary knowledge core
Jump to: navigation, search
File:A paper printable Bitcoin wallet consisting of one bitcoin address for receiving and the corresponding private key for spending.png
An example paper printable bitcoin wallet consisting of one bitcoin address for receiving and the corresponding private key for spending.

A cryptocurrency wallet stores the public and private keys which can be used to receive or spend the cryptocurrency. A wallet can contain multiple public and private key pairs.[1][better source needed] As of January 2018, there are over thirteen hundred cryptocurrencies; the first and best known is bitcoin.[2] The cryptocurrency itself is not in the wallet. In case of bitcoin and cryptocurrencies derived from it, the cryptocurrency is decentrally stored and maintained in a publicly available ledger.[3]:93 Every piece of cryptocurrency has a private key. With the private key, it is possible to write in the public ledger, effectively spending the associated cryptocurrency.[4]

Wallet access

When choosing a wallet, the owner must keep in mind who is supposed to have access to (a copy of) the private keys and thus has potentially access to the cryptocurrency. Just like with a bank, the user needs to trust the provider to keep the cryptocurrency safe. Trust was misplaced in the case of the Mt. Gox exchange, who 'lost' most of their clients' bitcoins. Downloading a cryptocurrency wallet from a wallet provider to a computer or phone does not automatically mean that the owner is the only one who has a copy of the private keys. For example with Coinbase, it is possible to install a wallet on a phone and to also have access to the same wallet through their website. The software can also have known or unknown vulnerabilities. For receiving cryptocurrency, access to the receiving wallet is not needed. The sending party only needs to know the destination address. Anyone can send cryptocurrency to an address. Only the one who has the private key of the corresponding address can use it.[5]

Backup

A backup of a wallet can come in different forms like:

  • A (encrypted) file like wallet.dat or wallet.bin which contains all the private keys.
  • A mnemonic sentence from which the root key can be generated, from which all the private keys can be recreated. Preferably these words could be remembered or written down and stored on other physical locations.
  • A private key like: KxSRZnttMtVhe17SX5FhPqWpKAEgMT9T3R6Eferj3sx5frM6obqA (see the picture).

When the private keys and the backup are lost then that cryptocurrency is lost forever. When using a webwallet, the private keys are managed by the provider. When owning cryptocurrency, those trusted with managing the private keys should be carefully selected. An (encrypted) copy of the wallet should be kept in a trusted place. Preferably off-line.[5] Some people 'write' their mnemonic sentence or private key on metal, because it is robust.[6]

Wallet characteristics

Multicurrency

Some wallets support multiple cryptocurrencies.

Software wallet

They come in different forms like:

  • An application installed locally on a computer, telephone or tablet (see the picture).
  • When using a web wallet the private keys are managed by a trusted third party. Some web-based wallet providers use two-factor (like Google Authenticator) for extra security. In that case a keylogger is not enough for a hacker to steal the credentials and get access to the wallet.[7]
  • Cryptocurrency exchanges link the user's wallet to their centrally managed wallet(s). For example: When trading bitcoins between users on the Kraken exchange, the trades are written in their private ledger (off-chain transaction). Only when a user wants to enter his cryptocurrency into the exchange or when he wants to take his cryptocurrency out of the exchange, the transaction is written onto the public bitcoin blockchain (on-chain transaction).

In order to initiate or verify a transaction, the cryptocurrency wallet connects to a client or node on the network to process the request. There are several types of clients like: full clients, headers-only clients, thin clients and mining clients. Some of them can process transactions and some of them also have their own wallet functionality.[8] Full clients verify transactions directly on a local copy of the blockchain.[8]:{{{3}}} Lightweight clients consult full clients.[9]

Hardware wallet

An actual bitcoin transaction from a web based cryptocurrency exchange to a hardware wallet.

When the user of a hardware wallet requests a payment, the wallet's API creates the transaction. Then the wallet's hardware signs the transaction and provides a public key, which is sent to the network by the API. That way, the signing keys never leave the hardware wallet.[10]

If a hardware wallet uses a mnemonic sentence for backup, then the users should not electronically store the mnemonic sentence, but write it down and store in a separate physical location. Storing the backup electronically lowers the security level to a software wallet level. Hardware wallets like LedgerWallet and Trezor have models that require the user to physically press or touch the wallet in order to sign a transaction, the destination address and the amount of coins. The private keys remain safe inside the hardware wallet. Without the private key a signed transaction cannot be altered successfully. Some hardware wallets have a display (see the picture) where the user can enter a pin to open the wallet and where the transaction can be verified before being signed. When reading a mnemonic sentence from the physical display of the hardware wallet a screencapture of an infected computer will not reveal the mnemonic sentence.[11][not in citation given][12][13][not in citation given]

Watch-only wallet

With a watch only wallet someone can keep track of all transactions. Only the address (public key) is needed. Thus the private key can be kept safe in another location.[8]

Multisignature wallet

With a multisignature (multisig) wallet multiple users have to sign (with their private key) for a transaction out of that wallet (public key address).[14][15][16]

Brain wallet

With a brain wallet someone remembers the information to regenerate the private and public key pair(s), like a mnemonic sentence.[17][18]

Hot vs. cold wallets

Terms also used in the context of cryptocurrency wallets are hot and cold wallets. Hot wallets are connected to the internet while cold wallets are not. With a hot wallet cryptocurrency can be spent at any time. A cold wallet has to be 'connected' to the internet first. As long as something is connected to the internet, it is vulnerable to an attack. The short version is that software wallets (where the device is turned on or the wallet software is running) are considered hot wallets. A (not connected) hardware wallet is considered a cold wallet.[19]

Deep Cold Storage

Deep cold storage is the process of storing cryptocurrencies in cold wallets that were never connected to the Internet or any kind of network. Additionally the private keys associated with this system are generated offline.  The process gained main stream attention, when Regal RA DMCC[20], (the first cryptocurrency licensed company in the middle east) took it a couple of steps further by storing the cold wallets in the Almas Tower vault below sea level along with the company's gold bullion and insured the cryptocurrencies for full value.

Key derivation

Deterministic wallet

With a deterministic wallet a single key can be used to generate an entire tree of key pairs. This single key serves as the "root" of the tree. The generated mnemonic sentence or word seed is simply a more human-readable way of expressing the key used as the root, as it can be algorithmically converted into the root private key. Those words, in that order, will always generate the exact same root key. A word phrase could consist of 24 words like: begin friend black earth beauty praise pride refuse horror believe relief gospel end destroy champion build better awesome. That single root key is not replacing all other private keys, but rather is being used to generate them. All the addresses still have different private keys, but they can all be restored by that single root key. The private keys to every address it has ever given out can be recalculated given the root key. That root key, in turn, can be recalculated by feeding in the word seed. The mnemonic sentence is the backup of the wallet. If a wallet supports the same (mnemonic sentence) technique, then the backup can also be restored on a third party software or hardware wallet.

A mnemonic sentence is considered secure. It creates a 512-bit seed from any given mnemonic. The set of possible wallets is 2512. Every passphrase leads to a valid wallet. If the wallet was not previously used it will be empty.[3]:104

Non-deterministic wallet

In a non-deterministic wallet, each key is randomly generated on its own accord, and they are not seeded from a common key. Therefore, any backups of the wallet must store each and every single private key used as an address, as well as a buffer of 100 or so future keys that may have already been given out as addresses but not received payments yet.[3]:94

See also

References

  1. Private and public keys in wallet on books.google.com ISBN 1387139967
  2. Lua error in package.lua at line 80: module 'strict' not found.
  3. 3.0 3.1 3.2 Lua error in package.lua at line 80: module 'strict' not found.
  4. Lua error in package.lua at line 80: module 'strict' not found.
  5. 5.0 5.1 Lua error in package.lua at line 80: module 'strict' not found.
  6. Lua error in package.lua at line 80: module 'strict' not found.
  7. Lua error in package.lua at line 80: module 'strict' not found.
  8. 8.0 8.1 8.2 Lua error in package.lua at line 80: module 'strict' not found.
  9. Lua error in package.lua at line 80: module 'strict' not found.
  10. Lua error in package.lua at line 80: module 'strict' not found.
  11. Lua error in package.lua at line 80: module 'strict' not found.
  12. Lua error in package.lua at line 80: module 'strict' not found.
  13. Lua error in package.lua at line 80: module 'strict' not found.
  14. Lua error in package.lua at line 80: module 'strict' not found.
  15. Lua error in package.lua at line 80: module 'strict' not found.
  16. Lua error in package.lua at line 80: module 'strict' not found.
  17. Lua error in package.lua at line 80: module 'strict' not found.
  18. Lua error in package.lua at line 80: module 'strict' not found.
  19. Lua error in package.lua at line 80: module 'strict' not found.
  20. Lua error in package.lua at line 80: module 'strict' not found.