So another key topic that comes into the blockchain discussions, especially when we're talking about cryptography, is hashing. That's a very important aspect of it, right? Can you tell us more about what the importance of hashing is within the blockchain? >> Yeah, so first off, for everyone who doesn't know what hashing is, hashing is essentially an algorithm. Where you put in, for any given input, there's a deterministic output. So let's say I put this cup into a hashing algorithm. Any time I put this cup into the algorithm, I get the exact same output. So if I change anything about the cup or change anything about the input to the algorithm- >> Or put in a different cup, even. >> Yeah, now our output is completely different, right? So for example, if we have a string, say, elliot, and then we go pass that in, and then we get some sort of output based on the amount of bits that we're supposed to generate. Now if we change one letter, even, let's say we do a capitalized E, now the hash output is completely changed. And so why this is so great for Bitcoin is that it allows for miners to go solve problems. And then it allows everyone else in the system to be able to verify that the miner's solution was correct. Because once a miner is finished mining, they have found a unique number. So this is something called the hashcash problem. And so the miners have a given set of data, a given set of transactions they have to include in a block. So they include these transactions, and then they have to solve something called a hashcash problem. So they have to find a unique number that, when added on to the end of all this data, produces a hash output with a certain amount of zeros at the front of the output. And so essentially, they have to just go perform millions of computations every second, and try a ton of different numbers. And then once they find the right number, they go let the whole network know. They say, hey guys, we found the solution to this problem. And why that's so great is, everyone can go and verify that their answer is correct. We don't have to just go trust someone who has a financial incentive to go give us an answer. We can just actually go and verify that their answer is correct. So we take all the block data, we go add on the nonce value, which is that number they were trying to find, and then we hash it. And we see, okay, does the output have the amount of zeros that it's supposed to have? And if it does, we all accept it, if not, we say, sorry, you didn't get it right, try again. >> And this is the the basis of the Etherian network, right, or a Bitcoin network. >> Yeah, and Etherium, right, yeah, all cryptocurrencies, as far as I know, use hashing to verify blocks. And they also have something called a Merkel root or a Merkel tree. So it's a data structure where you take- >> We're going to talk about Merkel, I read ahead, so just cut that part [LAUGH]. Yeah, continue if you had anything else. >> I think I covered it, I mean, it's just a one-way function. For every single input, you're going to get the same output. Or, no, for each individual input, you'll always get the same output. >> Nothing to add there, just that maybe a simpler way to explain it is, who has no idea what this input is, would be if you have, take your name, and you don't want your name to be known. Then how would you represent that name differently, that cannot be reverted back? If you have, like I said, yellow, then you would be able to re-encode that name with 123456. And only you know that that means actually yellow, it's got a one-to-one mapping. By going from 123456, you can never get back to yellow. So you don't know the original information, but you know a kind of confirmation that this is the identification for your name. So this algorithm that we said, it's one way, if you pass it, you cannot go backwards from it. So that's all, it's kind of mapping from one encoding to a different encoding. And you can use the other one, you can use this to verify anything else. This for me means one thing for you, you don't know what it is, just some kind of random thing. For me, it has a meaning, for you, don't, so we just use it to do other things. >> So it's like an identifier once it's been run through the algorithm. And then you can use it to verify if you have the original input. >> So basically, you are enabling people to operate on data without knowing the content of the data. So you can encrypt what the data is, and let them know there is data, that's confirmation for it. Use that for any other operations, but you don't know what the data is. >> And we use hashing algorithms and databases to store passwords. So instead of saying hey, let's go store your password in plain text on a database, and go check to see if your password is the same that you entered when you're trying to sign in, we instead store the hash of your password. So that way, it makes it a lot more secure. because if someone breaks into the database, they can see all the hashes. But from the hash, they can't get back to what- >> Reverse engineer it. >> Exactly, what the password was. >> So that's kind of the general use for the blockchain movement or cryptography in general. Is that the hash link will have a fixed length, so that's how you can encode an enormous file into 200 characters, I'm giving an example- >> And that's how all hash algorithms are, [CROSSTALK] they all have a specified amount of bytes that they will output. >> Yes, so kind of the appealing point is, that if you have an MP3 file that is 10 megabytes, you would not pass 10 megabytes to everyone who wants to kind of, so what you'd pass is just 200 bytes- >> Of the hash. >> But that 200 bytes represent actual file, because if you change one bit in the file, the hash will be different. So what you operate is very low data passed around on the network. That's why the hash is kind of a compressed down confirmation that there is data, and you just use that. So it's very low in traffic, that's kind of the appealing point. So if you verify the hash, you don't verify the 10 megabytes, you verify the 200 bytes, which is a lot faster in terms of CPU computing power. >> Yeah, and storage computing power, it's just less intensive overall for the entire network.