Could you give us a basic explanation about the MimbleWimble protocol and Grin?

The first question I will answer is from Annabelle, about MimbleWimble. "Could you give us a basic explanation about the MimbleWimble protocol and Grin... (an implementation of MimbleWimble)?" I really love this story. MimbleWimble is one of those crazy things that happen in the crypto space... that one day will be in a movie, definitely part of some movie about Bitcoin. There is [a lot of] mythology that [is created around] anonymous, mysterious actors like Satoshi Nakamoto. Every now and then, you get these incredible explosions of innovation and new ideas... that are completely unexpected and come out of nowhere. [These surprises are] one of the things that I really enjoy about this space; I can never take anything for granted. I [may] think I know what [will] happen next, silly me. Then out of the blue, something comes along that completely changes my perspective. The story about how MimbleWimble came came along is really great. About two years ago, someone showed up on the IRC chat room [for Bitcoin developers], with a username ['Tom Elvis Jedusor'], referring to [the French version of] Voldemort's real name. I don't remember all of my Harry Potter trivia. This user appeared in the chat room with Voldemort's secret name and posted one link to a Tor onion site, a site that is only accessible over the Tor network so that you don't know where it is located. On that site was a single PDF of a paper called 'MimbleWimble.' MimbleWimble is the name of a spell in Harry Potter that [renders] people unable to [speak about something]. There are all of these references to Harry Potter in here. The brilliant thing about this paper came out of nowhere; the user posted only one thing and disappeared. Everyone who started reading this paper realised this was a very serious, new way of [designing] blockchains. MimbleWimble uses some interesting tricks in cryptography to [make] transactions private. You can't see who is transacting with who; you can't see what amounts they're transacting. Furthermore, the blockchain can be compressed in a way where you can discard previous states; once [an output] has been spent, you can [aggregate excess signatures]. You can verify transactions without knowing who is participating and what they are spending. You can verify the states of the system without storing all previous transactions. You can have a much smaller, more private blockchain. MimbleWimble is a novel way of structuring transactions, the blockchain and what you store. This is not something that can be "added" to Bitcoin. This is a completely different implementation of how a blockchain works. However, there [can be a] relationship between MimbleWimble and the Bitcoin blockchain. Theoretically, you could have MimbleWimble as a sidechain to Bitcoin. You could have them as two chains and move funds from one to the other through atomic swaps. Therefore, you would gain the privacy and compressibility of this MimbleWimble protocol. It is very interesting. There is an initial lightweight implementation called Grin, mostly a proof-of-concept. A couple very prominent Bitcoin developers have done some work.

If you want to watch something about MimbleWimble, the best resource is probably Andrew Poelstra's talk

If you want to watch something about MimbleWimble, the best [resource] is probably Andrew Poelstra's [talk]. If you start reading the MimbleWimble paper, you will feel as if someone has cast a Confundus Charm on you. You will not understand a bloody thing in that paper. I must have read it four times just to get a very basic grasp of what it was even trying to do. It is some complex cryptography. Fortunately, some of the best cryptographers in the world work on Bitcoin. Andrew Poelstra is one of them. He deciphered the MimbleWimble paper and explained it to other developers at one of the conferences. That is a very good source for you to watch. He has written about MimbleWimble extensively and is involved in the implementation of Grin. So that is what MimbleWimble is. It is not Bitcoin, it is a completely different blockchain protocol, but it could be used in conjunction with Bitcoin. It has some very interesting privacy and scaling implications.

What is a Dandelion transaction relay, BIP-156, expected to come within Bitcoin Core release 0.18?

"What is a Dandelion transaction relay, BIP-156, expected to come within Bitcoin Core release 0.18?" "What will this be good for?" I'm so glad you asked, Gally. This is slightly technical, but it is also fascinating and a fantastic development. This is a proposal that was developed by a team [of researchers from various U.S. universities]. Unfortunately, I don't have it right in front of me to give them appropriate credit. If you search for 'Bitcoin Improvement Proposal 156', or 'Dandelion,' you will find the people who are responsible. It is a fascinating idea. Let's think about this... When you [send] a transaction on the Bitcoin network, in theory, no one can tell where it came from. From the perspective of a single node, if one of your neighbors [relays] a transaction, you have no idea... if that transaction is coming from them, a wallet on that node, or they are relaying it from one of their neighbors. [It could have] traveled halfway across the internet. All transactions reach every node eventually. Once a transaction is injected into the network and propagated, you can't really tell where it came from. That is great. That is a fantastic element of Bitcoin's privacy. Now put your naughty surveillance state hat on: what does it take to figure out [the origin of] a transaction? It takes a form of network triangulation. You would create Bitcoin network nodes and strategically... [position] them around the internet so they are at important junctions in the routing architecture. You put some on big cloud serve providers, near major routing points, important mining nodes, etc. "near" in terms of the IP routing network, not [necessarily] in terms of geography. Then you monitor and listen from all of them. When a transaction appears on the network, [you could notice that you] heard it here and then a few seconds later there, etc. If you triangulate based on the route, [you can deduce that] it probably came from [certain nodes]. If you have enough nodes [positioned] across the network when a transaction appears, you can use... use timing and source addresses to [establish] correlations and figure out where it came from. You can break some privacy characteristics of the network by [dispersing] enough surveillance nodes. This is a very similar approach [regarding] how governments break anonymity on the Tor network: inject a lot of Tor nodes and use them for surveillance of packets [in the form of timing attacks]... looking for likely sources by understanding the latency and propagation characteristics of the network.

How Dandelion works

All right, here is how Dandelion works. Dandelion delays the appearance of the transaction on the network by [relaying] it quietly at first, before bursting it out [to propagate as normal]. Essentially, it [relays] the transaction a few hops, without flooding it to everyone in the network; once it [has been relayed a certain] distance [from the origin node], it bursts out like a dandelion seed. [Like a dandelion that] floats through the air until it hits [something] and then sprinkles out all the little seeds. If you are trying to triangulate, you will see the point at which it bursts, rather than where originated. If you have enough transactions being routed this way, included as part of the core peer-to-peer protocol, that means we will see a lot of transactions being routed with this Dandelion [relay method]. The moment at which a transaction is [flooded] is removed from the moment when it is injected. By using encryption along the hops, it is much harder to do this surveillance. Not impossible, but much harder. The degree of privacy is increased. It is a brilliant idea. Also, for the first time... I am a curmudgeon when it comes to names of projects. I think "SegWit" was a terrible name, for example. The name doesn't really evoke anything. It was badly chosen and it really reflects an engineering mentality. Whereas Dandelion... beautiful name! It immediately evokes an image of how it works. You can explain it easily to people, because the moment they hear "dandelion," they remember what it does. What a beautiful, evocative name for a project. Good job!