Monday, January 8, 2018

Layman's understanding of Monero

Monero

Everyone has a public address, an example of which looks like this: 43EH3omZSUYCmJYskCUx2tV5oB5tLVrp58AeMYLrFhcz2umUVQHiHu62nG5CS3mvcfgKHC3fPtq6DHkEbMjqvCAZJW5nw9E

The funds you own will not be associated with your public address, like they would with Bitcoin. This means if you tell someone your public address, they can’t see how rich you are.

When you send funds to someone’s public address, what happens is that you actually send the funds to a randomly created brand new one-time destination address. This means that the public record does not contain any mention that funds were received to the recipient’s public address.

For the same reason, the funds that you are sending were not associated with your own public address either in the public record. Therefore, when you send these funds, the public record will not show that the funds originated from your public address and will not show that the funds were sent to the recipient’s public address.

Bitcoin

Everyone has a public address, an example of which looks like this: 1EjqMGa5j6JNQDMNXkrRZq7WSmqLRzn9fU

You receive funds at your own public address, and anyone can see what those funds are. When you want to send funds to someone, they tell you their public address, and you can see what funds they already have stored at that public address.

When you send funds, you announce to the entire Bitcoin network that the funds that you own now belong to the recipient’s public address. Everyone can see, as a matter of public record that the ownership of funds has moved from your public address to their public address. 


In Monero, your public address will never appear in the public record of transactions. Instead, a 'stealth address' is recorded in a way that only you, the receipient, can recognize the incoming funds.

When the recipient checks for funds, they need to scan the Monero blockchain (the public record of all transactions) to see if any transactions are destined for them. The recipient has a secret view key which is used to check each transaction to see if it was addressed to them. Because the recipient is the only one that knows the secret view key, only the recipient can see that funds have been sent to them.

This is why, if you launch your Monero wallet, you will see it ‘scanning’ the blockchain. This is done to check if any transactions have occurred that have you as the recipient. Note that you can give your ‘secret view key’ to others so that they can also see what funds you have received. They will only be able to view the transactions and not make any transactions on your behalf.

So far, we’ve discussed the concept of ‘unlinkability’. This means that received transactions are associated with a one-time address that is not linked to your public address. It also means that two transactions sent to your public address cannot be associated as having the same recipient.

We don't want the sender of a transaction to notice when the recipient of the transaction then spends the funds in a new transaction. Monero solves this problem through the use of ‘ring signatures’. 

Ring signatures enable ‘transaction mixing’ to occur. Transaction mixing means that when funds are sent, the sender randomly chooses several other users’ funds to also appear in the transaction as a possible source of the funds being sent. The cryptographical nature of the ring signature means that no one can tell which of the funds were really the source of the transaction – not even the person that gave the funds to the sender in the first place. A system of ‘key images’ associated with each ring signature ensures that although no one can tell the true source of the funds, it can be easily detected if the sender attempts to anonymously send their funds twice.
Finally, project Kovri, which is currently in development, will hide your internet traffic so that passive network monitoring cannot reveal that you are using Monero at all. This is achieved by encrypting all of your Monero traffic and routing it through I2P (Invisible Internet Project) nodes. These nodes pass your messages along and have no visibility over what is in them. They do also not know whether the destination they’re sending your messages to is the final destination or just a waypoint which will further forward your message. Passive listeners can tell you are using I2P, but cannot tell what you are using it for or what destinations you are interacting with. 

Supposedly cryptonote was first implemented in Java and then soon after migrated to c++.

Cryptonight works on its POW algorithm. 


Origin of Monero

Back in July of 2012, Bytecoin, the first real life implementation of CryptoNote, was launched. CryptoNote is the application layer protocol that fuels various decentralized currencies. While it is similar to the application layer which runs bitcoin in many aspects, there a lot of areas where the two differ from each other.
While bytecoin had promise, people noticed that a lot of shady things were going on and that 80% of the coins were already published. So, it was decided that the bytecoin blockchain will be forked and the new coins in the new chain will be called Bitmonero, which is was eventually renamed Monero meaning “coin” in Esperanto. In this new blockchain, a block will be mined and added every two mins.

Monero is headed by a group of 7 developers of which 5 have chosen to remain anonymous while two have come out openly in public. They are: David Latapie and Riccardo Spagni aka “Fluffypony”.  The project is open source and crowdfunded.

Features of Monero

So what is it about Monero that makes it so hot and in-demand. What are the unique properties that the CryptoNote algorithm gives it? Let’s check it out.
Property #1: Your currency is yours
Property #2: It is Fungible
Property #3: Dynamic Scalability
Property #4: ASIC (Application Specific Integrated Circuit) Resistant

when we said that Monero was based on the CryptoNote system which makes it distinctly different from bitcoins? Well, the hashing algorithm used in CryptoNote based systems is called “CryptoNight”. 

Requirements:
1. Cryptonight requires 2 MB of fast memory to work. This means that parallelizing hashes is limited by how much memory can be crammed in a chip while keeping cheap enough to be worth it. 2 MB of memory takes a lot more silicon than the SHA256 circuitry.
2.  Cryptonight is built to be CPU and GPU friendly because it is designed to take advantage of AES-Ni instruction sets. Basically, some of the work done by Cryptonight is already being done in hardware when running on modern consumer machines.   
3. There have been talks of moving Monero on from proof of work algorithm to “Cuckoo Cycle” (a different form of proof of work hash). If a switch like this does happen, then the amount of work spent in the R&D of Monero friendly ASICs would be meaningless.

Property #5: Multiple keys

One of the more confusing aspects of Monero is its multiple keys. In bitcoin, ethereum, etc. you just have one public key and one private key. However, in a system like Monero, it is not quite as simple as that.

View Keys: Monero has a public view key and a private view key.
1. The public view key is used to generate the one-time stealth public address where the funds will be sent to the receiver.
2. The private view key is used by the receiver to scan the blockchain to find the funds sent to them.

The public spend key makes the second part of the Monero address.Laymans understanding on Monero
The Monero address btw is a 95-character string which is made of the public spend and public view key.
  
Conclusion:
Bitcoin (BTC) Digital Money
Monero(XMR) Untraceable Digital Money
BTC publicly viewable and monero concealed from public