Digital wallets: Key concepts to know
If you’re a developer new to blockchain projects, and you want to build a wallet application for people to transact on the Libra* payment system, this post is a good place to start. We’ll cover basic digital wallet concepts and terms that you’ll find relevant to the Libra project. Future posts will focus on understanding digital wallet features and functions and their implications for building wallets for the Libra Blockchain.
Note: This blog provides general information about the topic and does not provide any specifics about wallets that will work with the Libra Blockchain.
What is a digital wallet?
When you carry cash, you will often store it in something like a wallet or money clip or maybe loose in your pocket. Most of us prefer to store cash in one place so we know where to find it. And we prefer that place to be safe, so other people can’t steal it from us.
A digital wallet is much like a real-world wallet. It is software that allows users to keep track of assets, conduct transactions (sending or receiving digital currency), and view those transactions as needed. Some wallets enable users to transact using multiple currencies. Some work with just a single currency. Either way, users must have a digital wallet to transact on a blockchain.
How do digital wallets work?
In the physical world, you may have a bank account. Your bank account has a number associated with it, which identifies the banking institution and your specific account that the bank manages for you. You might share that account number with your employer, so you can receive your salary via direct deposit. Or you might share it with another company to enable automatic payments. It’s a publicly available way to identify your account.
Your password keeps that account secure from other people accessing it without your authorization. You might share your account number, but you wouldn’t share your password. The account number is public, the password is private.
The wallet is how users connect to and complete transactions on the blockchain. Each wallet has an address. No two wallets ever have the same address, just like no two accounts at a bank have the same account number. Each wallet also has a unique pair of public and private keys that link mathematically to the wallet address to secure access. The private key is used to decrypt encrypted text (ciphertext) or to create a digital signature. The public key is used to encrypt plaintext and to verify a digital signature. As such, they act like a password for accessing a bank account.
When you submit a transaction to the blockchain, the transaction includes details (wallet address, private and public keys) about the sender and receiver. The blockchain uses these identifiers to sign transactions, providing a mathematical proof that the transaction came from the verified owner of the wallet. Without the wallet, you wouldn’t be able to access or use your funds.
Customers trade digital currencies for other assets, such as cash, through a digital exchange (sometimes called a digital currency exchange, or DCE). Most digital exchanges have fees and offer security measures that help you protect your assets. Some exchanges do offer wallet capabilities, or custodial services, to users, although it’s not their primary business. You exchange one asset for another. You only keep funds you’re actively trading on an exchange.
An on-ramp is a digital exchange that allows the deposit and conversion of one currency into another currency.
An off-ramp is a digital exchange that enables customers to convert assets from one currency to another, to pay for products and services, or to deposit cash into a bank account. A merchant is a business that accepts payments for goods and services in digital currency.
Custodial and non-custodial wallets
Digital wallets may be custodial or non-custodial, each with unique advantages.
In the world of finance, custody refers to a service in which an institution holds keys to financial assets on behalf of the client. With a custodial wallet, an organization stores a user’s private keys, and that organization is accountable for protecting the assets. For many, this is a convenient and secure way to manage assets. Additional advantages may include the ability to restore access to your account if you lose your private key as well as lower transaction fees and help in recovering from mistakes.
With a non-custodial wallet, the user owns the private keys. The user must remember a mnemonic phrase associated with the private key to ensure they can restore access to their account if needed.
Wallets and regulatory requirements
For providers of financial services and products such as digital wallets, there are two important requirements aimed at fighting financial crime: Anti-Money Laundering (AML) and Know Your Customer (KYC). When you build a digital wallet application, you must understand how these laws impact your project.
AML refers to a set of laws, regulations, and procedures that aim to prevent people from disguising illegally obtained funds as legitimate income. AML requires banks and companies handling money to identify and report any illegal activities like money laundering and funding of terrorist groups.
KYC regulations mandate that banks and companies handling money verify the identity of their customers. KYC rules require wallet users to provide personal information to verify their identity, just like you do when you open a bank account.
Providers of financial services and products often have compliance officers that oversee implementation of these activities.
Ready to learn more?
We’ve briefly covered a few key concepts relating to digital wallets. In future posts, we’ll explore important features and functions of digital wallets in general and wallets for the Libra network specifically.
Questions or comments?
Post your thoughts on this topic in our Libra Developer Community.
*On December 1, 2020, the Libra Association was renamed to Diem Association.