When it comes to cryptocurrency wallets, most of them usually download the entire blockchain on your device, before you can initiate any transaction. Now, one of the biggest concerns associated with this — apart from the high Internet bandwidth and storage requirements — is the time it takes to initialize the client, while setting up for the first time.
In fact, on a fresh installation of the official Bitcoin Core client, it could take up to a few hours (even days!) to sync up with the blockchain, and that too on a decent Internet speed. Even if you’ve already set up the client before, it could take significant time to catch up with the blockchain, if you’re opening it after a while.
Luckily, you can avoid this scenario by opting for a few specific solutions, such as, an online wallet or a lightweight client.
Online wallet services always keep the blockchain synced on their servers, so you get a ready wallet as soon as you’re logged in. However, by using an online wallet, you’re trusting a third party service to keep your crypto-assets secure. And though popular wallet services, like CoinBase, implement necessary security measures to keep your accounts secure, they’re also at a greater risk of being targeted in major cyber attacks.
Alternatively, you can also opt for faster, much lightweight software clients, popularly known as light client, thin-client or SPV wallets, which help you to get the best of both worlds. While using a light client or SPV wallet, your crypto-assets and private keys are stored locally on your device. But at the same time, the wallet only downloads a specific portion of the blockchain, thus saving a significant amount of storage space as well as sync time.
Simplified Payment Verification
A blockchain essentially made up of a linear series of blocks, each of which primarily consists of (among others):
- Block Header (containing a reference to the Previous Block Hash, a Merkle Root, and a few other elements).
- Transactions (a list of all transactions included within the block).
To validate a particular transaction, all the preceding incoming and outgoing transactions, to and from the sender’s address, need to be tracked. In order to do so, a wallet needs to download the entire blockchain locally on the device. This is a one time activity, as later, the software has to only update the blocks that it hasn’t downloaded before.
This is exactly what a traditional thick-client wallet does. But as the number of transactions grow exponentially, downloading an entire list of transaction records (blockchain) could become inconvenient. To tackle the issue, a technique known as Simplified Payment Verification (SPV) can speed up the verification process to a large degree. And wallets which implement this technique are known as SPV (thin-client) wallets.
The list of transaction records included within a block, can be arranged in the form of a Merkle Tree, created from the hash values of those transactions. Thus, the root node (called the Merkle Root) of this tree has a reference to all of the transactions contained in the specific block. SPV wallets just download the block headers of all the blocks included in the blockchain, which is collectively much smaller in size, compared to the full blockchain.
To verify a transaction, the light (or SPV) client requests for the Merkle Root of the block (in which the transaction belongs to), from certain full nodes in the blockchain network. The client also requests these nodes for the minimum information (hashing partners) required to calculate the Merkle Branch.
The Merkle Root helps the SPV wallet to identify the parent block of a particular transaction, while the Merkle Branch allows it to link the transaction to its parent block.
Thus, even though a light client can’t verify a specific transaction all by itself, it can prove that the transaction has been accepted by the network, by linking the transaction to its parent block. The subsequent blocks added after the parent, further confirm the acceptance of the transaction. This method works flawlessly unless a majority of nodes in the entire network has been compromised.
Note: The term “SPV” was originally associated to the Bitcoin blockchain, though similar techniques are also implemented in other blockchains. For example, Ethereum uses a similar concept, known as Light Ethereum Subprotocol (LES). LES is used by light clients, which only download block headers as they appear in the blockchain, and fetch other parts on-demand, as required.
SPV or Light Client Wallets
Below are some of the well known lightweight or SPV clients, which do not download the entire blockchain, enabling a faster setup and less storage space requirements.
Electrum (Bitcoin, Litecoin, Dash)
Electrum is a fast and secure software wallet that uses SPV for verifying transactions. It is dependent on multiple, decentralized nodes, which are selected randomly, for providing necessary inputs required to validate transactions. Because it supports SPV, Electrum is transaction-ready almost instantly after the client is launched. It also features the ability to extract private keys locally, enabling you to go online with a watch-only wallet.
Electrum has separate clients for Bitcoin, Litecoin and Dash, each of which can be downloaded for free from their respective official websites. Additionally, it is also compatible with hardware wallets, such as Trezor or Ledger Wallet.
Jaxx (Bitcoin, Litecoin, Dash, Ethereum, Zcash, etc.)
Jaxx is a multi-platform light wallet that supports almost all the popular cryptocurrencies, including Bitcoin, Litecoin, Dash, Ethereum, Zcash and more. It integrates the ShapeShift API, allowing you to exchange funds between different cryptocurrencies, right within the app’s interface.
The setup process is quite easy. During the initial setup, you get to choose among multiple wallets to keep, import or transfer funds from paper wallets, and different fiat currencies to display the value of assets. Once the initial setup is completed, you’re ready to send and receive funds using your wallets, without requiring to download the full blockchain locally.
It uses a hierarchical deterministic (HD) wallet structure for select cryptocurrencies, which means new public keys (addresses) are dynamically generated, every time you send/receive funds to/from a particular address. You can receive funds using any of the addresses generated under the same wallet, and all the funds sent to any of these addresses will add up in your wallet balance.
All your wallets’ private keys reside with you on your devices, and is never uploaded to any server at any time. Jaxx does allow you to backup your private keys with the help a 12 word seed phrase. This single seed phrase can later be used to regenerate all your wallet keys locally.
A 4-digit PIN may be used to secure some of the app’s features, such as, sending funds, accessing keys, or pairing new devices.
Jaxx is available as free download on 7 different platforms, including desktop apps for Windows, Mac and Linux; mobile apps for iOS and Android; browser add-ins/extensions for Firefox and Google Chrome.
Supported Cryptocurrencies & Tokens: Bitcoin, Ether, Dash (not available for iOS wallets), Ethereum Classic, Augur REP, Litecoin, Zcash (not available for iOS wallets), Rootstock Testnet (not available for iOS wallets), Dogecoin, Iconomi, Golem, Gnosis, DigixDAO, BlockchainCapital.
MetaMask (Ethereum)
MetaMask is a lightweight, free Google Chrome extension that enable the browser to connect to the Ethereum network, and allows Decentralized / Distributed Apps (dApps) to run within it. With MetaMask, Chrome functions just like the official Mist browser; the major difference being that Mist requires the entire blockchain to be downloaded, before you can start using dApps, MetaMask & Chrome does not.
MetaMask is a lightweight client that converts Google Chrome into an Ethereum browser, and depends on other full nodes in the network for updated blockchain information. While browsing, the client injects Ethereum Web3 Javascript app API into all websites, so that dApps running on applicable websites, can interact with the blockchain.
In order for MetaMask to do this, it uses certain special permissions that enables it to alter the client side contents of any website. As this could be a major privacy issue, it is recommended that you run MetaMask on a separate Chrome profile, which is not associated with your usual browsing profiles.
MetaMask can be downloaded for free from the Chrome Web Store.
Bither (Bitcoin)
Bither is another Bitcoin thin client that supports SPV for verifying transactions. It can operate primarily in two modes. In cold wallet mode, the private keys are stored offline (on the cold storage device), protected by password. In hot wallet mode, you can go online (using your daily device) in watch-only mode to monitor your transactions. You can also create an unsigned transaction for a watch-only address, and sign it using the cold wallet.
The lightweight software wallet is available for Android, iOS, macOS and Windows.
Note: If you’re a miner, it is not recommended to point the mining rewards to a light client wallet. Mining rewards are actually composed of several micro-transactions, instead of a simple send/receive transaction, which lightweight clients aren’t usually designed to handle.
Additionally, wallets that are connected to the Internet at all times (a.k.a. “hot wallets”) are more susceptible to third party cyber attacks. Thus, it’s recommended to use these wallets along with secure hardware keys (cold storage solutions), especially if you have a large volume of crypto-assets.
If you know of any other lightweight wallet that uses SPV or other similar techniques, do let us know in the comments below.