A simple guide to Monero for Bitcoin users

This is a simple guide to Monero, a privacy-focused cryptocurrency, for users that are accustomed to Bitcoin usage and terminology. We highlight the differences between the basic aspects of those cryptocurrencies, so Bitcoin users can get acquainted with Monero easily.

Monero's basic difference to Bitcoin is it's focus on privacy and fungibility. Currently it is the only cryptocurrency that offers true, decentralized privacy without using any mediators which could be subject to monitoring and possible attacks.

So, let's get to the basic differences between them.

One address to rule them all

Modern (HD-capable) Bitcoin wallets use a different address for each transaction. When you want to accept some coins, you ask the wallet to give you a new address. In Monero, you have a single address, which we call account in Monero terminology. You can give this account to everybody, but nobody can see who sends you funds, as the blockchain is completely opaque. This account doesn't even appear anywhere in the blockchain.

Of course, one can have multiple Monero accounts, in the same way that one can have multiple Bitcoin wallets, however this might actually degrade privacy if each account has too few transactions.

As an example, my account is 4Av2SvDb9vXA9yi1jhd78LbMmtvg7Q1VTGo1XHKhwMisQorUyxsyvM3dhqzAe1swoq12ztAaSUGYLidgfuHfrowSQgohCJX . Try figuring out my balance (hint: not that much) from a block explorer, and you'll see that it's impossible.

Just like in Bitcoin HD wallets, all you need to have access to your funds is a single phrase, the seed . You should keep it secure, as whoever has access to that phrase has access to your account history as well as to your funds. More information here: https://getmonero.org/knowledge-base/moneropedia/mnemonicseed

Consequences of Monero's privacy features

Due to the inherent privacy characteristics of Monero, you can't see the address of the person who sends you funds. Since you give out the same account to everybody, the question is how can you know who paid you?

For example, I tell you to send me 5 XMR in my account. When you send me those funds all I see in my wallet will be that I received 5 XMR via a transaction with a random ID. How can I know it's really you?

Here's where the Payment ID's come into play.

Payment ID's are just some random strings that help you distinguish payments. When I tell you "pay me to this account" I can also generate a random string and tell you "oh, please also use this Payment ID when you send me the funds". When I receive the funds, I'll see the Payment ID I gave you along with the Transaction ID, so I will definitely know the sender is you. Exchanges use this method to distinguish between user accounts.

There are two versions ot Payment ID's: Old style Payment ID's, which are visible in the blockchain and are 32 bytes long, and the newer, Compact Payment ID's that are 8 bytes long. Compact Payment ID's are also encrypted, so only you and the receiver knows them. Compact Payment ID's are also embedded in the address you give to the sender, so you don't have to hand them out separately.

To make this simpler, here are two examples:

Old-style Payment ID's: I generate a Payment ID and tell you "Pay me to address 4Av2SvDb9vXA9yi1jhd78LbMmtvg7Q1VTGo1XHKhwMisQorUyxsyvM3dhqzAe1swoq12ztAaSUGYLidgfuHfrowSQgohCJX with Payment ID 922c4a161993f7a09087903006d909d6d9f0f8df98720c7b956f70cefa6aab94 "

Compact Payment ID's: I generate an integrated address and tell you "Pay me to this address: 4LchTj35mC3A9yi1jhd78LbMmtvg7Q1VTGo1XHKhwMisQorUyxsyvM3dhqzAe1swoq12ztAaSUGYLidgfuHfrowSbxzXzoT9tSG4pPnGP9 "

Of course, Payment ID's are completely optional. You can always just give your account.

Even simpler payments with OpenAlias

Since you use a single address, why not put it in a DNS TXT record? This is what the OpenAlias project suggests, all while being secure by leveraging DNSSEC. This way, you can say "Pay me to [email protected]" instead of giving your address. More information here: https://openalias.org/

Of course, one can do this with Bitcoin, but it's highly unelegant: Using a single payment address in Bitcoin is highly discouraged and has even more privacy ramifications.

No SPV (lightweight) clients

Currently, Monero does not support the so-called "lightweight" or SPV clients. In order for someone to use Monero, he should run his own node and download the whole blockchain. SPV clients are considered to have inherent privacy issues that are orthogonal to Monero's focus, but this may change in the future.

No GUI wallet (yet)

Currently the official Monero wallet is a command line (CLI) application. A nice GUI is in the works, and you can see some screenshots here: https://forum.getmonero.org/9/work-in-progress/2476/the-official-qt-gui-project

Monero also has Trezor support

A trusted member of the Monero community has released an experimental Trezor firmware, which enables a Trezor to be used for XMR storage, while continuing to also function perfectly as a BTC wallet. You can find it here: https://forum.getmonero.org/4/academic-and-technical/2495/experimental-trezor-firmware-testing

Epilogue

That's it for now. Stay tuned for the next Monero-focused post! If you have any questions, feel free to ask them in the comments or send them to [email protected] and I'll do my best to answer them.