https://github.com/mimblewimble/grin/blob/master/doc/intro.m...
Also, anonymous transactions.
Downside: you cannot "send coins to an address" as in bitcoin, you must have interaction with the other party to create a transaction.
In other words, less of a downside than it may seem, but it is a real shortcoming since it precludes sending to the equivalent of a cold wallet.
They can be MITMed by an attacker spoofing the identity, but this is no different from a MITM inserting a different BTC address into a communication stream.
Do payments take place over a tcp connection? How do you find your payment peer?
Anonymity is maintained with a cool trick called a blinding factor, where a secret value is drummed up for each transaction and used to obfuscate the data that is publicly displayed on the blockchain. Combining that with range proofs allows all involved parties to verify that the transaction was completed for the specified amount, and that no money was created out of thin air.
Scalability is boosted with transaction cut-through - a neat trick that lets unnecessary “intermediate” transactions get eliminated when a miner assembles a block. This means that nodes on the network can store the entire chain state really efficiently because all you need to know are the total coins in circulation, the UTXO set, and the kernels for each transaction.
I can’t do the whole thing justice in this tl;dr, so read the technical explanation here for more info if it piques your interest:
https://github.com/mimblewimble/grin/blob/master/doc/intro.m...