How does Monero work?
Monero is a secure, private and untraceable cryptocurrency. It achieves this through a number of innovative features, like stealth addressing and Ring Signatures, Ring Confidential Transactions, Kovri, etc.
As a user, you’ll first need a Monero wallet address. This is a 95 character string and comprises two sets of private and public cryptographic keys. In order to understand what role these keys play, let’s go through a typical Monero transaction.
When Alice sends outputs (ie. funds) to Bob for example, Alice will use Bob’s public view key and public spend key, as well as some random data to generate a unique, one-time public key. This key is visible on the Monero blockchain, but only Alice and Bob know who was involved in the transaction and how much XMR was sent.
Next, Bob’s wallet scans the blockchain with his private view key, until the right output is found. Once the right output is found, Bob’s wallet can calculate a one-time private key which corresponds with the one-time public key generated earlier. Joe can now spend the outputs using his private spend key.
Now that we understand a basic Monero transaction, let’s take a closer look at the set of private keys included in each wallet. First, we have the private spend key which is a 256-bit integer and is used to sign Monero transactions. It also is one of only two private keys usually associated with a Monero wallet, the second being the private view key.
The private view key gives you the permission to view the contents of a Monero wallet address. This is why the Monero blockchain is considered private, because balances are not visible without the private view key.
Now that the basics are covered, we should now turn our attention to receiving funds using Monero’s stealth addresses.
What is a stealth address?
Stealth addresses are an integral part of Monero’s strong focus on privacy. A stealth address is a unique, one-time address which is created by the sender on behalf of the recipient for every transaction.
In every transaction a stealth address (also known as a one-time public key) is automatically generated and recorded as part of a transaction. This indicates who has permission to spend an output in a future transaction.
An outside observer cannot tell who is involved in the transaction, or what the transaction amount is by just looking at the blockchain. They can only see that a transaction did occur. This is a huge advantage for merchants for example, because outside parties cannot tell how many customers a merchant might have, or what the merchants revenue may be. There is no publicly available data at all, in part due to Ring Signatures.
Stealth addresses are an important part of Monero’s inherent privacy. They allow and require the sender to create random one-time addresses for every transaction on behalf of the recipient.
By using stealth addresses, only the sender and receiver can determine where a payment was sent.
When you create a Monero account you’ll have a private view key, a private spend key, and a Public Address. You use he spend key to send payments, the view key to display incoming transactions, and the Public Address to receive payments. Both the spend key and view key contribute to building your Monero address. You can have a “watch only” wallet that only uses the view key.
What is a ring signature?
The main tech behind Monero is a balance of allowing you to control your keys and operate privately with proven security mechanisms while also allowing malleability and development in the network. (E.g. variable block size, integration of Kovri)
This is what a typical transaction on a public blockchain looks like.
The default set-up for Bitcoin transactions is completely transparent and pseudonymous if steps are not taken to obscure one’s identity and transactions (e.g. a VPN and coin mixing services). This means your IP address can be connected to your device (i.e. personal identity) with enough resources dedicated to connecting the two.
Ring Signatures are digital signatures where several signers sign a transaction. Think: signing with a joint account but with no one knowing the true signer
The sender generates a one-time spend key and the recipient is the only party that can detect and spend the money based on that key.
Key images, cryptographic keys, are derived from each output being spent and prevent double spending. This is because there’s one key image per output (expenditure) on the Blockchain.
A ring signature uses your account keys and selected public keys from the blockchain to form a “ring” of possible signers. The main security property of a ring signature is that it makes it impossible to see which group members’ keys produced the signature.
No outside observer can match signers in the ring ensuring that transaction outputs are untraceable. In addition, fungibility remains as the network does not know spent amounts (despite being able to validate a real transaction took place).
Ring signatures ensure that transaction outputs are untraceable. They achieve this by mixing the spender’s output with past outputs pulled from the blockchain.
So if Alice initiates a transaction, her output is given a one-time spend key which corresponds with an output being sent from the Alice’s wallet. At this point, Alice’s output is mixed with random past outputs pulled from the Monero blockchain, which act as decoys. To a third party, these outputs are indistinguishable from each other, and Alice can send XMR to Bob without fear of the transaction being tracked.
Additionally, the Monero Labs Core Team introduced Ring Confidential Transactions (Ring CT) in January 2017. This technology was invented by Bitcoin Core developer Gregory Maxwell, and manages to hide transaction amounts from third parties.
You might be wondering how Monero avoids the double-spend problem while effectively having untraceable transactions between anonymous parties. The double-spend problem is solved through the innovative use of ‘key images’ associated with each ring signature. These ensure that although transactions remain private, it can be easily detected if the sender attempts to anonymously send their funds twice.
Now we know how Monero hides the sender and recipient accounts, while also obfuscating the transaction amount. But how does Monero prevent third parties from tracking transactions across nodes? The answer is Kovri.
RingCT (Confidential Transactions) hide the amount sent
The sender can reveal just enough information for the miners to confirm the transaction without disclosing publicly the total amount spent. (Known as a “commit”) This allows the transaction to prove its authenticity without losing privacy as a user.
The network encrypts the amount of each output and includes it in the transaction. The amount encrypted by the sender uses a shared secret built into the transaction computed by combining the recipient’s private view key with the transaction public view key (which is built in the transaction).
Third parties will not be able to view the amount based on this construct of Ring Confidential Transactions (RingCT). Only the sender and receiver can view these amounts since they hold the private-view keys. These RingCT outputs became a requirement within Monero back in September 2017.
What is Kovri?
Kovri is the final piece of Monero’s privacy puzzle. Kovri is a free, decentralized, anonymous network layer developed by Monero that’s based on I2P’s core specifications. I2P’s core architecture operates similarly to TOR (which uses onion) except with Kovri it uses garlic encryption and routing to create private, protected network access.
Kovri tunnels traffic through the I2P network, utilizing Garlic encryption and Garlic Routing. This allows information to travel within a private overlay network, and is additionally encrypted each time it is passed on. Peers are not able to read the information which is being relayed.
This creates an anonymous network of Monero users protected from censorship and surveillance.
Per the team section on the Monero website, the core team includes:
- Riccardo Spagni aka “Fluffy pony”
- Francisco “ArticMine” Cabanas
In addition, there have been over 30 developers and 420 contributors over the life of the project. As Monero is focused on privacy, it’s no surprise that many team members choose to stay anonymous
Weaknesses and concerns with Monero
Although it appears Monero has many accolades, what are some of its weaknesses? As discussed in this subreddit there are a few:
- Privacy – There’s been the ability to track the IP address of the node that originated a transaction. This logging of IP addresses could cause the de-anonymization of users. That being said, the Monero development is constantly improving privacy functionality and has added certain Tor capabilities to mitigate this risk.
- Mining Centralization – The majority of Monero mining used to be dominated by four pools who each had no more than 20%. This centralization is no longer that case, but it is still a potential threat.
- Darkweb PR – Although this is not a direct cause of the Monero team, it’s worth noting as the branding and public perception is always something to keep in mind and could slow adoption as people fear its use for illicit purposes.
- Transaction Size – Monero transactions are much larger than Bitcoin’s, requiring more data and causing a larger blockchain that grows daily. Fortunately, Monero forked and implemented bulletproofs in October 2018. With the implementation of bulletproofs, transaction sizes fell by up to 97 percent in some cases.
- Development Difficulty – The ability to incorporate with multi-coin wallets and other integrations that would make use more widespread have been slow.
- Limited Merchant Tools – The tools for merchants to integrate payments is difficult and hard to integrate at this time. However, there are more and more third-party services popping up to help remedy this.
As of the writing of this post, they currently have 2 tasks in-progress and 5 upcoming tasks listed for 2019. There is also 3 more tasks listed under the year ‘Future’. The Monero roadmap can be viewed on their website here.
How to Buy and Mine XMR
You can purchase Monero (XMR) on Binance with either BTC, ETH, BNB, or USDT. You can also purchase XMR with BTC on KuCoin. Both of these exchanges are great options if you want to avoid KYC and remain anonymous (recommended).
Monero previously suffered from mining pool centralization. However, a semi-recent fork away from ASIC miners caused the Monero original pools hashrate to drop by more than 50%. The threat of secret ASIC mining prompted this fork. As a result, Monero still remains as a GPU mineable coin on What To Mine. Additionally, you can find a list of mining pools here.
Looking at the innovative features discussed above, it’s not hard to see why Monero has established itself as the leading privacy-focused cryptocurrency around today.
Kovri, Stealth Addresses, Ring Signatures, and Ring CT protect the individual’s privacy, while receiving, storing, or spending XMR. Crypto users should make privacy a prime concern when using cryptocurrencies. Non-private tokens are NOT fungible like cash money. Would you want someone to see your bank balances along with every transaction you’ve ever made? I’ll go ahead and assume the answer is no.
Not only does Monero provide us with financial sovereignty, but it also allows a level of privacy in tune with the vision Justice Brandheis first articulated all those years ago.