What Are Web3 Wallets?
Web3 wallets are software or hardware tools for storing cryptocurrencies, NFTs, and other crypto assets. They are also used for establishing on-chain identity in decentralized applications (dApps).
These wallets cryptographically store and manage each user’s identity and funds through a single blockchain address, which leverage public-key cryptography. Let’s break down how that cryptography works.
Each address/wallet is composed of a public key + private key pair.
- The public key is an alphanumeric code (e.g., 0x04d8f9c1fdfeea05b0d2f2f8e71a75a15c3e3d9b9a8b92717e53cce15c7d10fcf96b2386ccb60a44cd861d6874d8c8e846976b0f6a2d0c0554ce3b3e3c3f045e9) that enables users to receive crypto transactions. This code is usually represented as an address, a hashed version of that public key (e.g. 0x742d35Cc6634C0532925a3b844Bc454e4438f44e). Users can share their public key or wallet address publicly without fear of losing their assets. You can think of it as almost like a mailing address. When you want to send someone an asset, you send it to their public key.
- The private key is an alphanumeric code that is paired to a single public key on a 1:1 basis. Never share your private key with anyone. A private key is how you prove ownership of a public key and how you can spend assets held by that particular key-pair. An exposed private key compromises the security of that address: whoever has the key can access the assets held at that address.
Note: a private key is an encrypted form of a seed phrase, a mnemonic phrase consisting of 12-24 random words (e.g. moat dog purple lake bread…). When opening a Web3 wallet for the first time, users are prompted to write down their seed phrase, and with that phrase you can restore your Web3 wallet if, for example, you got a new mobile phone and had to reinstall your wallet software. Without your seed phrase, you could lose access to your Web3 wallet altogether.
Types of Web3 Wallets
There are three main ways we can classify Web3 wallets.
Hot Wallets vs. Cold Wallets
Web3 wallets can either be “hot” or “cold” based on their connectivity to the internet.
Hot wallets, or software wallets, exist on internet-enabled devices (think smartphones and computers). They make it easier for users to interact with various applications and make transactions on the go. as an application on a device. They are called hot wallets because they exist on internet-enabled devices to make it easier for people to make transactions on the go. Today, there are dozens of hot wallets on the market, including wallets like the Hiro Wallet. However, hot wallets may be vulnerable to viruses and ransomware and other malicious activity.
Cold wallets, or hardware wallets, are generally more secure than hot wallets because the storage device itself isn’t connected to the internet. These devices typically have to be plugged into a computer in order to authorize transactions originating from the cold wallet. There are fewer hardware wallets on the market than hot wallets. Popular choices include Trezor wallets and Ledger wallets. Some users even prefer paper wallets for security. While more secure, cold wallets are more cumbersome to use and are better suited for long-term storage than daily active use.
Desktop Wallets vs. Web Wallets vs. Mobile Wallets
When using hot wallets, they also come in a few different forms:
- Desktop wallets are Web3 wallets that exist as desktop applications on computers.
- Mobile wallets, unsurprisingly, are smartphone apps.
- Web wallets are wallets that exist as extensions embedded in browsers like Google Chrome and Firefox. The key advantage of web wallets is they enable users to easily use their wallet with various Web3 applications, which are often web-first.
Many hot wallet providers offer a combination of the above, but different wallets may offer different capabilities (e.g. a web wallet may offer functionality the desktop wallet doesn’t, etc).
Custodial Wallets vs. Non-Custodial Wallets
Web3 wallets can also be categorized by who controls the wallet’s keys:
Custodial wallets refer to wallets whose private keys are managed by third parties. For example, wallet addresses used in centralized crypto exchanges such as Binance are custodial wallets. Custodial wallets are easier for the end user to set up and removes the risk of a user losing their private keys. However, they’re generally considered less secure than non-custodial wallets—the phrase “not your keys, not your coins” exists for a reason. Many exchanges have been hacked (Mt. Gox) or gone bankrupt (FTX), and users who held their assets there lost some (or all) of their funds as a result.
Non-custodial wallets refer to Web3 wallets in which the user owns and controls the private keys. With non-custodial wallets, the user is solely responsible for the security of their private keys and the management of their assets. There’s no “reset your password” option if you forget your seed phrase, but on the bright side, your funds are safer from bad actors too.
Major Functions of Web3 Wallets in Decentralized Applications
There are a number of reasons developers will need to integrate Web3 wallets into their apps, from establishing user IDs to storing assets and enabling the transfer of assets.
Establish User Identity
Wallets provide a means for apps to track user accounts. Each wallet address has a cryptographically secure and unique set of a public/private key, so they work as a form of user identification. Wallets enable apps to manage their users without requiring the user to create a username/password or to share their personal information. Web3 wallets also establish on-chain identity, which lets users participate in other decentralized systems, such as decentralized autonomous organizations (DAOs).
If your app generates assets for your users, you need to integrate with a Web3 wallet, so users can receive and store those assets. In centralized services such as the traditional financial system, storage is handled by the company or service that the individual is using. However, in decentralized applications, you need to provide a way for the user to store their assets themselves.
Web3 wallet integrations also allow you to display a user’s token balances inside the app. This can be helpful if your app generates new assets for that user, or if you need to verify whether a user has the funds necessary to take some action inside the app.
If your app lets users make transactions, you’ll need wallet authentication in your app. That way, users can sign transactions with their private key, which is required for those transactions to get broadcast to the blockchain network.
Beyond signing transactions, Web3 wallets can now be used to sign messages in decentralized applications. This is an innovative functionality that we implemented in the Hiro wallet last year and opens a wide variety of user cases. For example, message signing is a way for users to prove they own a particular asset, which you can use to build token-gated features in your application. Message signing can also be used for voting features.
Participate in the Web3 Economy
Without Web3 wallets, users cannot participate in the crypto economy. They enable users to hold and trade assets, to prove their identity, and so much more. That makes Web3 wallets critical to your app experience. Some wallets, such as the Hiro Wallet, offer unique functionalities such as stacking STX, that you can also leverage in interesting ways in your application.
Some Things to Consider Before Integrating a Web3 Wallet into Your dApp
Developers need to consider several issues related to Web3 wallets before deciding on a wallet integration for their dApp.
- Onboarding process: A Web3 wallet doesn’t do you much good if the process of connecting the user’s wallet to your app frustrates users, causing them to abandon it altogether. Select reputable wallet providers that offer a great user experience to create a smoother onboarding process for new users.
- Popularity in your ecosystem: This is not a purely technical consideration, but you should consider the popularity of various wallets you are considering. You want to offer integrations for wallets that already have a lot of existing users. For example, if you are building on Algorand, the Pera Wallet and MyAlgo wallets are popular and are two integrations you may want to start with, even though there are other wallets to choose from.
- Support more than one wallet: you aren’t limited to supporting a single wallet! Research new wallets and add support for them as your users ask for it and those wallets gain user traction.
Kickstart Your App Development
Web3 wallets are often the point of entry to onboard users into Web3 apps. Without a wallet, they can’t access the product at all. As a result, Web3 wallets play an important role in your user’s experience.
If you are thinking about how to get started with building a dApp, we wrote a comprehensive guide to Web3 app development. This guide highlights important parts of the Web3 journey and what developer tools you’ll need along the way. Download our free guide below: