 Let's get started for the next session. Yeah, welcome everyone and for the operating at the scale track. I will come you on behalf of Red Hat to the DevCon conference. Yeah, and we are here for the next session, which is over the blockchain enabled decentralized storage cluster, which would be taken over by project over here. So let's get started over the session. Hey everyone, welcome to my presentation. My name is Tresit Keshav Prasad and I work as an associate software engineer at Red Hat. I joined Red Hat one year back and I joined as an intern. I got converted to full-time employee around February of this year. So to talk a bit about myself, I love to code, I love to automate and I love creating different kinds of applications and I do a lot of projects. Now, technically speaking, I watch a lot of films. I love to travel and I read quite a few books and yeah. So before I start my presentation, I'd like to take a moment to thank the organizers of this event because it wouldn't have been easy given the current situations that our world is facing. So I'd like to thank them. And yeah, so let's start the presentation. So today the topic is topic on which I'm going to talk about as blockchain enabled decentralized storage cluster. So I believe that the subtlety which I've added there has caught your attention. So basically what I'm trying to say is, you know, just to quote it again, what if I say the most secure way to keep your code is to keep it in a place where it's accessible for everyone. The main intention behind that code was to subtly hint, you know, about the psychology behind all systems, that is accountability and prevention. Let's say that, you know, you're keeping your code apart from the world, you decided that you keep your code in front of everyone. Let's say that in a public place and then you decide, okay, you keep it in the middle of the middle of a public place as a statue or some kind. And so what are the preventions that you pay? You add cameras and then, you know, you think of different kinds of systems which, you know, enables for which keeps your code secure. So that's basically, you know, in a vague way. I would say that that's basically what decentralized storage is or, you know, decentralized system is. Yeah. I'm moving on. So today's agenda, we'll be discussing about first, primarily we'll be discussing the distance between centralized, decentralized and distributed. And then I'll be talking a bit about what decentralized storage is, that is, what the scope of this current, you know, talk is. And then why do we need this? And then I'll be moving on to talk a bit about the methodology. And then we'll be ending up with the future scope. So before I start, I'd like to say that Starch, you know, was one of the inspirations. But when I started this, Starch was like, has a pretty good white paper in which they are mentioned their own way of implementation. So Starch is basically a decentralized storage application, a company that's a startup and open source company. So their code is in GitHub. Although the white paper is like very interesting, you know, they have different takes and different kinds of implementation that helps them with other complexities. So, yeah. And the other tech industries, which follow decentralized storages, IFPS is not necessarily a decentralized storage, but I think, given that IPFS is a file system, then we could consider that as well. And yeah, and I believe there was a company called SIA, but I'm not much familiar with it. But yeah, so moving on. So basically, there are three types of major types of distributed systems. So first is centralized systems. So centralized systems are basically a system within client server architecture. You know, basically you request the data and the server, you know, you request the data and the client goes with your request and gets your answer. And that is the response and, you know, from the server and then client gives it back to you. So maybe like, I'd say that imagine an application where you request some kind of data from that server and then server goes, I'm sorry, from the client and that client goes and fixes the data from the server. So let's say, you know, maybe, I'm not sure if Wikipedia is a good example here, but, you know, maybe I could say Wikipedia, you know, you're requesting the data from one of the Wikipedia clients and the client goes and fixes from the direct server and then it gives you the response. So that's centralized system. And the next is how I'll explain distributed and then come back to decentralized. And so the next is a distributed and distributed is very, very popular kind of system, you know, it's like a system in which the final gear of the system is, you know, it's, it's basically, there is no simple entry that receives a response to a request. So it's basically Google or Google search system could actually be a very good example here. And each request is worked upon hundreds of different systems and which for, you know, goes and fixes the data and then returns back to the response. So I would say it's written with a lot of nodes but with one master kind of thing. It's basically multiple computers working together to accomplish one single task and returns the result to the search query. And this is distributed. Moving on to the decentralized system. This is, this has become popular very recently with the massive hype of Bitcoin and blockchain. And I believe that a lot of current organizations are, you know, finding different applications that they could use to survive systems with. So basically this system, every node makes its own decision. And the final behavior of a system is the aggregate response of each node. So there is no master and slave, everyone is an equal has equal rights. So, yeah, so let's say that if that needs to be taken, it's, it's a collective response. So it's truly a democratic way. So those are the systems. So these are the three major systems which I want to discuss here because, you know, there has always been confusion confusion between decentralized and distributed. Even myself, you know, okay, when I was in college, I even I kind of pondered upon what's the actual difference between decentralized and distributed because not every distributed system is decentralized. So what is decentralized storage? So here, you know, the scope of this title, this slide is to give you an overall understanding of how, you know, how a decentralized peer-to-peer storage network works in an overall way. Can you note that this is from my perception, you know, and a lot of companies could alter it and, you know, they could have their own strategy, but I believe like overall this is the way almost all of the decentralized storage systems are going forward. So let's say that, you know, myself, I'm having a data in my head. Let's say that I have a photo or video or text whatever. And let's say there is a decentralized system with 10 nodes including me. So that's nine other nodes in one mind. I have business systems of 10 nodes and I'm connected in it. And I decide that, okay, I need to, you know, send this data to the cloud. And so I, you know, I take the photo and I upload it in a web UI or in a folder, no matter. And then what happens is it gets encrypted, right? It gets sharded or a registered code and then sharded. And then it is distributed among the other nodes. So the distributions can happen anyway. So basically, I'd be having a distributed hash table from my old hand. There are different algorithms like in India. So basically it will, you know, it would take basically the ability of the data and, you know, what are the other variables. It will make a decision on which would be the appropriate node or a computer that is good suitable for this particular data. Basically, after all this, it will go and in the end of the day to decide one of the nodes. So let's say that my document and I decide to upload it and I upload it. I uploaded it and it gets sharded encrypted sharded and it's now in four parts and it gets stored into random computers in the network. So now if I want to, you know, if the, so it provides a secure way, you know, because the other nodes when they, you know, when they see that there's some file downloaded, they wouldn't be able to actually go and read it because they just have a tiny chunk of a data that do its anchored. So they wouldn't really, they won't be able to do anything with it. And they can't even, you know, decode, there is a decoder. I think they wouldn't be having access to that particular data. So they pretty much wouldn't be able to, you know, alter it or do any type of attack in order to fetch the other files which shares the same checksum. So that's not possible. So this is how the, you know, storage as a data is uploaded. And now when I want to download the data, I simply, you know, initiate a download request and it goes, it has a hashing table of where all the nodes are, you know, all the data are stored in these nodes. So you basically go and fetch it and then re-structure it, you know, and then gets me back my site. So this is basically an overall architects around how this storage works. So I'll be explaining each part of it, you know, let's say, like, if you go on to the other methodologies, I'll be moving on in the other slides. I'll be explaining on how each part can be implemented, like encryption and then charging, you know, and then there to be a network, etc. So moving on. And yeah, why do we need this? So apart from the usual, you know, the dialogues and the articles and the other things that you might have heard about our privacy and the other things, I'd be focusing mainly on the other points here, because obviously those points are already, you know, obviously those are better ways on why we need an entire, you know, our actual democratic system. But apart from that, I'd say that there is a minimal number of performance problems occurring because it's like a big chunk of task, you know, that's evenly loaded. So that's not, there's not really a place for having bottleneck issues. And it's high availability, higher, you know, high availability is an assurance because let's say that if I'm a working guy and with the rate of how if you almost everyone has internet, you know, some nodes are like online 24 seconds, right. So that's, and also let's say that if I'm having with this, you know, in current situation, let's say that if I'm, I'm in a company or a firm startup and which I have, you know, let's say that I'm in a situation where I need to be online 24-7, but I'm having free disks that I'm not using, then this could be a way, you know, I could simply connect this into the network and then I'd be getting money or other things. So yeah, so it's high availability is an assurance because almost everyone like I just said this might be online 24-7 and more autonomy and you know, control, because I see it's not controls its own behavior. It has better autonomy getting to more control. So that's fine. And yeah, coming to data. Data again, you know, this obviously this presentation would be complete without referencing this hit series Silicon Valley. For those of you who don't know Silicon Valley is a hit series that, you know, that kind of shares the same idea of a decision storage. So yeah, that's a simple image from the series. So data again, data again, what it means is basically running out of, you know, reaching a point where data cannot be stored, you know, all the other companies they put, eventually get into a point where data is no more could be accumulated. But I believe like, we are still years from it. Obviously, that could be a, you know, possibility of that happening, but I believe like that's not going to happen anytime soon. And the other point is like costs of data overhead would obviously be a problem, you know, because let's say that if I want to create a simple applications or anything, then I'd be, you know, forced to rely upon other third party paid services for them to host my data or my service or my product or whatever. So that's definitely a big concern because with the cost of raising their costs of data increasing or their services increasing, that's definitely a problem, especially if, you know, the point one of data apocalypse, if that's bound to happen, then obviously the cost of data could also be increased. But yeah, so even though if it's not actually increased, I'd still be, you know, if such a system comes into an existence, I'm sorry, such a system exists, but if this becomes very popular, then I'd say that people would much more prefer to host their systems free without, or at least without, you know, giving them such big money. So with 3.0, that actually would be a real thing. It is, you know, because I believe like that 3.0 kind of executes the mission and mission that was set by that of the actual Internet, and it was actually created. So that could, you know, that's actually a very good, you know, one's very good reason why we need a decentralized storage because once Web 3.0, Web 3.0 are completely decentralized Internet is, you know, if that's possible, and if that's achieved, then I believe like this decentralized storage or pretty much any applications in a decentralized storage could benefit us in the long term and a long way. So methodologies. So here, I'm going to be explaining each part or each entity, like I mentioned about the previous slides. So for example, I'd be explaining in a continuous way, so that it's easy to be easy to follow. For example, let's say that I'm now uploading a file. So the first point is file encryption and the ratio of voting, so I'd be explaining it in the same order. So there are five points here, but in the middle I'd be explaining a few concepts from blockchain, just so that we can come back, I'm not just come back, just so that we understand the system even more. So the first is file encryption. So the moment we hear encryption, I believe that for some of you, you know, you obviously might have thought of shard of logistics. So I'd be talking a bit about how shard of logistics can actually be a big advantage for decentralized systems, you know, because it's, let's say that it shares the same vision on the same, you know, it basically benefits the vision that has been put forth by decentralized systems and their consensus protocols. So let's say that for every, you know, it's, it's known that every human in the world has the same DNA in their fingerprint or I'm sorry, has different unique DNA and a unique fingerprint. And yeah, so unique fingerprint. So it's always like if something, you know, if a person is involved in some kind of criminal activities or whatnot, the other things, then they could find out what who this person is. And so obviously fingerprint helps them in finding out who the person is. So similarly, a shard of 256 shares the same vision. So with shard of logistics is basically a unique fingerprint for each type and each document. Let's say that I have a jpeg or whatever file and I do a shard of logistics encoding of it and be getting a 64 hexa digit value of it, you know, a unique kind of f for that particular document. So to talk a bit about shard of logistics, it's basically an algorithm which allows us to generate hash value. And it's a number but it's represented in hexadecimal. And it's created by the National Security Agency of the United States. So, yeah, so continue talking about shard. So it's like it's basically an algorithm and it's really powerful. And I believe the code of the algorithm is not really a secret anymore because I think the, you know, the code source code is available online. So maybe you could look into it and try to understand how it works. So shard stands for secure hashing algorithm. And the important thing here is that this algorithm works for any types of document and no matter what type of document is. So, as an input, you'd be basically giving a document and as output, it will basically give you a hash value. And not just the type, right? Not just the type. It basically gives you, even if you give around 10 kb of a file or 1 gb of a file, it's going to produce the same 64 hexadecimal value of the hash. And that's a pretty great thing. And yeah, so no matter the input, the hash is always 64, like I said. And that's like first advantage of a decentralized system or vision. So, yeah, so I'm sorry, it doesn't not, and not just the type of the document, it basically, you know, no matter what the size of the document that you give us and input, you know, let's say that you give a 10 kb of a file or 1 gb of a file and it's just going to produce the same, you know, this is going to produce a 64 hexadecimal character hash value. And yeah, and this pretty much, you know, this kind of no matter the input, the hash is only 64 hexadecimal character. This kind of thing is a big advantage for any decentralized system because it's cryptographically it satisfies the first rule, not the first rule. You know, it satisfies the master rules of the decentralized system. And another important point is it's pretty deterministic, you know, it's like, let's say that I give a file, a content, and I, you know, I get a hash. If I manage to replicate the document and put in the same input, I'll be getting the same hash. So it's pretty straightforward. And the other thing is it's unpredictable, right? Let's say that I give a hello world and I try to hash it and I'm getting a 64 character, 64 hexadecimal character hash. And I just make even a teeny tiny bit change of adding a dot here or there. I'll be getting an entirely different hash. So it's pretty, you know, I won't be able to brute force by plus or minus or anything. It's pretty much fast computation for mining. So it doesn't take a lot of time and you know, if you just, you know, snap off a second, you're probably getting, getting the hash value. And it extends the, so it basically extends the collision, meaning that this gives us, you know, the deterministic or the one we know way to get the details of the files based on the hash, gives us a set of gives us an advantage, you know, because it can withstand collision. So we can probably use it and restructure it, not the code, you know, we can probably use the hash 65 and implement a system where you pretty much can't, you know, recreate a file. We're basically by encrypting it further or solve a sale in mechanisms. So basically, this is more chias. And the next coming to next of sharpening. It's a ratio coding. So basically what the ratio coding is, is, you know, it's, you know, in a simple way, it's basically a way in which, you know, if your file is split into three and you lost, you know, you lost around one file. You still be able to get all the content of the other five, which is one or two nodes. So it's basically how we decode it or encode it in the first place. So that's a ratio encoding. So there are different types of a ratio encoding, different types of algorithms that use a ratio recording, but I'd like to simply give you an example so that you can understand how you share and coding works. So here you can see an example. Like, you know, let's say that you take a file of size 200 MP, then you split it into two chunks, and each of them has the same size. That is, you split a 200 MP file into two, so you get 105 each. So now you're basically applying a function of N of K on these K chunks to get N chunks. So basically, let's say that if you need four chunks, then you probably be getting 400 MP file. So the file just gets expanded twice the initial size. So it was 200 MP, but the moment you apply the function, it's now 400 MP. I'll be explaining why it's 400 MP right now. And now the effective way is, like I just said, it just expanded into two types. And now if you, you know, with just one chunk of the data, you'll be able to get all the other data. So let's say that you split, there's a file, it's in, you know, a file of 10 MP. And if I'm applying four into two function, that actually can be changed. And it's split across the node. I just need one chunk of a file to recreate the other. And I believe that that's pretty cool, even though the file size is increasing twice, it still be giving us the security that we need. So, you know, even getting into it a bit more. I'd say that let's say a file A here is getting split into two. And now it's getting encoded and now we have four chunks of the data, right? So let's take an example here. So, so this is A1, right? A1 chunk of file will be actually having one part of the file. A2 will be having the other part. A3 and A4 would be having some equations by which if we get at least one part of the file, we could probably compute it and get the values of the other two. And thus getting the actual, you know, actual, thus we'd be getting the actual data. So, let's take a small example. So here, consider that the original value of the object of the data is 95, right? So here what we're going to do is we're dividing the 95 in such a way that X equals 9 and Y equals 5. And the encoding process will create a series of equations. So where the equations could be X plus Y and then X minus Y equals X plus Y or X plus 2Y, whatever, right? And all these number of equations would be based upon the input that you give. So if it's 4, then it's going to operate in such a way. So also it's basically that. So here once all these equations is, you know, calculated and then you split it across the node and then you are only able to get, you know, 2. Let's say that you're able to get X plus 5 equal to 40 and X minus 4 equal to X minus 5 equal to 4. So you pretty much will be able to calculate the, you know, the values of X and Y, which is that. So you wouldn't be requiring 2X plus Y or anything. So you can basically create your data from your part and then be done with it. So this in a naturalist border, encoding is, I believe there are lots of a ratio algorithm that you could just look up to and see how that works. It's pretty interesting. Yeah. So initially, you know, going through the process, I've seen how my file, you know, when I upload a file, I have seen like how the file gets encrypted and now I've seen how the file gets sharped. Now, I know, let's try to, even though this is, you know, a common subject, let's try to understand how peer-to-peer works. So obviously peer-to-peer network, the peers are like the computer systems which are connected to each other via the internet. Files can actually be shared directly between the systems and without the need for a central server. So in other words, each computer on a peer-to-peer network becomes the server as well as the client. The only requirement to join a peer-to-peer network, I believe is like a stable internet connection. And my internet, I don't mean the worldwide web because let's say that you want to create just one mesh connection in your area. You could pretty much do that as well. You know, you don't need any network with that. But yeah, I believe that's what internet is called for. And then some peer-to-peer software. So the name of few common peer-to-peer software, let's say, Bear, Share, Morpheus, Acquisition, et cetera. And yeah, so once connected to the network, peer-to-peer software allows you to share files, you know, download them and send them, whatever are similar to that. And meanwhile, you know, the other users on the network can search for the files on your computer. So the restrictions can be imposed by you, you know, maybe I believe that you can create one volume group or one disk or a folder through which the other person can only be having access to that and not the entire system. So pretty much it's been, your computer will be compromised. So this is what peer-to-peer network is. And so now let's get into what blockchain is. I'm not going to go in deep with the complete operations of blockchain, but I'd like to cover an overall educative quick dive. So basically blockchain is blocks, you know, of chain and it's like growing list of records and each block is cryptographically linked together. So here you can see, you know, three blocks, one, two, three, which are cryptographically linked together. And in the top left, you can see, I'm sorry, in the top right, you can see our data assembled block. So basically, you know, let's say that a blockchain would basically be containing five fields. The first one is the block name and that probably isn't, it's outstretched now because indexing is now irrelevant because it's, you know, pretty much we'd be knowing it through counters or anything. So I think it's been replaced with timestamps and whatnot, but just for the sake of it, we can include it in our blockchain or our example. So the first one is the block number of the block. The next one is the nonce value. I'll be explaining what means in just a second. And the other thing is the actual data and then the previous hash and then hash. So previous hash is basically the hash of the previous block. So this is how the blocks are interlinked together, right? So the first hash, you know, let's say the A and B and C, so in the B block, I would probably be having the previous hash of the A block. And the current hash is computed by taking in the previous hash and the other things, nonce block number and the data. So it's pretty much tightly linked together. And so you must have wondered or you must have noticed that the first block wouldn't, you know, obviously wouldn't be having a previous one because it's first and it should start from somewhere. So the first block is called as the Genesis block because it doesn't have any previous hashes. So yeah, so this is in, in a nutshell, this is what a blockchain is. And yeah, let's move on. So an immutable ledger, I'd say that let's again go into an example of what this immutable ledger is. So by immutable ledger, blockchain claims that no data can be altered or no one can mess with the data or no one can, you know, restructure it, hack, whatever. It claims that it's unhackable or stuff like that. So let's see how that actually is achieved. So let's say that in a, let's take an example of, you know, an example with the central server. So let's say that I'm, I'm planning to buy a car, right? So I go into the showroom, I pay them and I get, you know, get the car and I go with the documents to a government just so that I can in this example. And I tell them that, okay, I paid this much. And now this particular car, this number plate is mine. And so then guy who takes down has taken the note that, okay, you have paid this much. And then you have, you know, bought a car of so and so record and he has created an equally structured record and he's putting it in his TV. So now you own the car. But what if that person who writes a record has made a mistake or, you know, since no one is there to verify what he has done, let's say that he has intentionally or unintentionally has made a mistake. And then he when he put it in a system, he exposed a threat or vulnerability which later on somehow let's say that eventually it's let's say that he messed up the name. Right. And now, technically speaking, I don't know that car someone else does. So that's vulnerability. So that's like, okay, now technically that's, yeah, that's, that's, that cannot be happening because that was of security and everything was technically no, I don't have the car. So now I'll have to go and register a complaint and whatnot. So now let's see the same example, if we implemented in blockchain, let's see how that's going to operate. Yeah, so in a ledger of our blockchain, the moment I buy a car, let's say through some smart contracts to smart contracts. I'm not going to go and talk about what smart contracts is, but it's basically let's say that okay, that's some kind of an automated record without no human intervention help. So the moment I buy a car, it's been registered. And now, you know, let's say that in a okay, I'll explain it with an exam. So there are 10 notes. So I go in the network and I go buy a car. The moment I buy a car and I pay them a neatly structured timestamp data is now, you know, is now registered in one board. So whichever place which I buy, you know, which I have bought a car from, think of it as think of that as one of the notes in the network. And the moment I buy a car from them, that particular note has now released a note for data and stating that okay, so and so person has bought so and so car. So now this travels across the block, right, so it is verified. And I will just see how mining works. So mining is a process of verification of whether this is actually the good data, and it's not some other kind of thing. So eventually once everything is in place, all the nodes agrees that this is good data and they add it in their copy of data. So here, let's say that somehow the guy finds a way, the attacker finds a way and changes the node, right, changes the node in one of the system. So now, what happens is if that change if it has to be, you know, aggregated across this network, then he probably have to, you know, since it's cryptographically linked, he probably have to change the entire block in the particular, and that chain of blocks in the particular node, you know, because once the moment he changes something here, something there. That means that the entire block afterwards is now none. Yeah, you know, it doesn't really matter that's garbage data. So that sense of, you know, and I learned so that I learned partner knowledge how basically how we implement our system. So I'd like to think of it as an alert. And then, you know, once that is done. Let's say that if that's, you know, if that change, once the changes took us and some kind of notifications are an alert, it basically would let the other nodes know okay that node is correct. You know, because it's cryptographically genes. Now, let's say that he has managed to entirely change the data or entirely change the block, making, you know, he might each block or he has somehow maliciously figure out figure out the way, which is super hard by the way, and he has completely, you know, replaced an entire chain of blocks in one of the node, but he still he has just managed to change one of, you know, the entire block in one of the nodes. So it still hasn't been agreed upon by the 90% of the blocks because they have another, you know, they have their copies is different. So, you know, all sorts of systems build up the security so that people can actually mess up with it. So this is one of the example, which I'd like to say on why blocks in a skull, or no, it's an immutable lecture. So like take on mining here. So here, what they have done is, I mean, what here, let's say the same, let's take the same example of the blog. Here I'm having a block number and having a non-value data, previous session hash. So I said that I'll be explaining once later on. So this is the time to be explaining it. So basically, the hash and the previous hash I have explained and data itself is pretty self-explanatory. So in mining, right, mining is basically, mining is basically by figuring out a brute force way that gives us a desired hash. So let's say that I need to be able to generate a hash value for this particular block that satisfies some condition. And I'd be able to change the hash only if I mess with the block or the contents of the block. So I won't be able to mess with the contents of the data because that's wrong and that's going to create a lot of problems. So that's not going to happen. But I need to be able to change something that gives me some hash, right? So that's where nuns come in. So nuns is basically some number that's changeable. So if I change, let's say the nuns is 306 and that particular hash of that block is composed or it's implemented with that nuns. So the moment I change the nuns by adding one or decreasing, what about the entire hash is going to change of that block is going to change. So this is how we use nuns to mine. So let's see an example here. So here, let's say that the goal of this particular mining is to, is that so once I create a data, I'll be saying that, okay, the target value of the end caches starts with four or five zeros, right? So now I'd be able, I'd have to brute force by inputting nuns, you know, changing the nuns until I find out a hash which starts with five zeros. So it's five zeros extra simply speaking, that means that it's probably in a lowest area. So imagine a graph, if you will, of that kind where largest goes up and smallest is down. And let's say that the target is in smallest. So I'd have to create, you know, I'd have to input lots of different kinds of nuns in it. And because to find out, okay, is it small or is it, is it am I in a target? Or has I been, you know, have I been able to produce a hash with six zeros? That is the target. So unless I find out, I'd still be mine. So this is essentially what mining is. And once I find out that, okay, I've been able to put force for value, I'd be able to get, you know, I'd be rewarded with the coins or whatever. So this is essentially what mining is. And also no one can actually, you know, because like I said, because of the hash is, you know, hash is a shadow 46 feature, we probably can't prove forces, right? Because let's say the 300 gives you a hash with four zeros. That doesn't mean that 301 is going to give you the next value is the hash, because it's, it can entirely be different. So that is a good way on that. So that's why I said like, okay, hash 256 are one of those features is in a good way, you know, it satisfies the conditions of a decentralized system. So this is why that point, I had said that point earlier. So this is what mining is. So mining and the Bitcoin part, the reason which I've told you is for, you know, to bring what will shed light upon the verification mechanism in a decentralized storage, you know, because now we have seen it in a transaction state, but now we need to be able to figure out a way to, you know, to manage whether our data is still there and data is corrupted or not. So we need to be able to create a system where such verifications can be done. So before I again explain that, I'd like to talk a bit about Merkle Tree. So all that proof of storage and I believe some mining process are still using, not still being used by Merkle Tree. I'd like to explain what the Merkle Tree is. So in cryptography, right, a hash tree or a Merkle Tree is basically in which every leaf node is, you know, is labeled with the cryptographic hash of a data block. And every non-leaf node is a cryptographic hash table of the assigned nodes. So let's say that in this example, you can see there are four data blocks, 11, 12, 13, and 14. And those, and if you see the first leaf node, it's basically a cryptographic hash of data block L1. So hash 00, that is the leaf node, is basically a cryptographic hash of data block L1. Similarly, hash 01 is cryptographic hash of data block L2, hash 10, L3, and hash 11 is a cryptographic hash of data for L4. So now once I've been able to compute the hashes of data block, all the other, you know, since I've covered the leaf nodes, the non-leaf nodes, what they do is they compute the hashes of the assigned nodes. So hash 0 is basically the cryptographic hash of hash 00 and hash 01. And hash 1 is basically a cryptographic hash of hash 10 and hash 11. And it would go again and again recursively until it reaches one hash where it, you know, it covers the, again, the hashes of its child. And we get an actual hash, master hash or root hash, if you will. So this is what Merkle Tree is. So coming back into proof of storage. So before I tell you how Merkle Tree is being used in Proof of Storage, I'd like to add that it's up to us, right? Once we figure out the basic implementation of basic necessities of how we need to create a decentralized system, it's entirely up to us on how to create it and how to implement it. So let's say that if I want to go on in a naive approach, then I could probably implement a listener or some kind of thing or an audit track where it goes around the peer-to-peer response kind of thing. You don't have to check whether the data still exists here and there across the network. So every client could initialize such a thing. But obviously this would have a lot of overhead, unnecessary overhead, but I'm just, you know, I just wanted to say that as an example it's entirely up to you. So if you're able to develop a very good algorithm that doesn't necessarily beats it unnecessarily, that doesn't necessarily follow the architecture but still works for you, then you can of course proceed with that. So speaking of, you know, that I'd like to explain how the proof of storage has been implemented in storage, right? Storage basically has an alternative way. It has two ways, but this is an alternative way of how they verify whether a particular node has data with them. So the alternate method is basically, so what it does is it basically presents a hash challenge and the hash challenge has to be solved or it has to be, you know, fulfilled in order to accept okay, that data is pretty. This pretty much there. And it shouldn't take a lot of my type because this is not, this is something, you know, without any brute force approach or anything. This is not mining completely. This is like a verification method, right? So coming into the actual application of how they have implemented. Let's say that, so if you see here in this tree, there is, they are created, you know, you can, if you can see a root seed there, that's basically client creating a series of seeds, deterministically from the root seed, right? So what is seed? Seeds are pretty much basically data that you upload once you download. So let's say that you download a file from the field to be a net, once the moment it's downloaded, you start uploading it. So that's called a seeding. And the opposite of seeding is leaching. That's when you keep downloading, but you don't upload. So that's actually a threat to a decentralized system. But that's what seeding and leaching means. So coming back here, the client has created a root seed, right? And then he has created a series of seeds from the root seed. And what it does is, what the series of root does is after it, after such, you know, after it creates a series of seeds, it would be added to a file and it would be hashed to generate a unique hash answer. So once it's, yeah, so we have a unique answer. So this, once this client generates the hash challenges, it builds a Merkle tree like the one we just saw before. And it inserts the Merkle root into the blockchain. So, and then it publishes or gives the Merkle tree minus the leaves nodes to the other nodes so that they can verify that this particular node has, you know, this particular node, because since it won't be having the leaf nodes and when it, I'm sorry. So basically, it would be giving, once it's hashes and it's added to the blockchain, it would be giving this Merkle tree without the leaf nodes to the other nodes who has my data. Because once they accept it and once I am sending in my seed, it can be matched, right? Because they'll be having the Merkle root or Merkle tree without the leaf nodes and I'll be having one of the seeds. So I can actually, once it reaches their computer, their node, it can calculate and once it calculation succeeds, then that means that okay, that particular node has my data. So this is, that's a pretty good way of implementing a proof of storage mechanism with low overhead. I believe I've been able to explain it properly. So again, yeah. You know, again, this is just their way of implementation. And if you have a better way, then you can as well. So this is concluding the proof of storage. Ultimately, you know, this is the proof of storage is our last method because we have covered file uploading of a file, and then shouting, and then we have covered the file, then we saw how strong the ledgers and how blockchain, you know, how has, you know, how blockchain basically made the ledger strong. And then we also saw the proof of storage and also we also saw the traditional mining. So concluding the proof of storage, you know, the steps of, which is basically the steps to upload and deliver file from the network, right? So we split the file into pieces and I'm going to send red charts. We transfer the charts to various nodes on the network based on the distribution and the research teams. So the pain, right, this is where the incentivizing comes in. So this is basically, we need, so there won't be volunteers around the network in the real time would be basically dedicating their risk to the network, you know, because there needs, there need to be some motivation for the users, or basically for the users in the nodes to give their, you know, this to the network. So that's when incentivizing comes in. So talking about a business approach, if I am the one who's using the network and then you find the one who's basically you making use of the storage item that's saying that I have a file that I'm loading it, then I probably be paying each node, which our node has my chunk of data. And the client may contact any of the nodes for data retrieval, in which case the nodes pay for the transfer of the data also as well. So this in general, you know, we have concluded how the implementation part is, but to talk a bit about incentivizing, this is very much required, right? Because this, I believe I've seen, this is economically speaking, this is the first time I might be wrong here, but you know, that I've seen a computer science problem be solved with the help of economics. So that's a good way, you know, and that is very much required, because if it's not incentivizing, we need to come up with some kind of application that would make the user keen on connecting their disk. To the network. So but I believe that such applications are not yet there. You know, let's say that if you're a gamer, or if there are some gaming systems, then you obviously be inclined to be keeping it, you know, it's pay as you store. And once you go, once you leave the network, there should be an immediate file transfer to the existing nodes. So that's pretty much a high value theory, but that is possible. You know, because once, I believe that once the entire network or once the decentralized system has started, and, you know, once it's all not just the computer science students or the engineers, if it's like, if it's reached for potential, where even a normal customer or customers are using it, then I believe that such things can be possible, you know, without actually incentivizing, you know, this application is so good. And that people, let's say that let's take an example of gaming. It's an actual gamer and the moment I'm playing the games, I can probably store the data there. And then the moment I exit the data could be transferred or even a ratio product, something of some sort like that. And basically for introducing machine learning or anything, the user statistics. Again, this is not in any way an innovation of the user data, simply getting the values of how much time the user is using that particular key. But again, if it is, if it goes against the values of decentralized web, then I'm not suggesting that we do that. But I'm just simply saying that that can be other ways to incentivize the customers, apart from money. So yeah, concluding it, I believe I've covered almost all the topics. And I strongly believe that once if we do this right, you know, solutions could open up to a lot of other factors as well as social media. I believe that there are lots of sampled tests of social media as in decentralized systems as well. But I really believe that it could revolutionize and create an actual democratic system in the Internet. So you would actually be owning the data. So that's a pretty cool thing if you ask me. So yeah. Thank you. I guess I'll be taking the questions now. Hello. Am I audible? Thanks for listening to my session, especially to such a long session. For those of you who have made it to the end. So is there any questions? Okay, apparently not, I think. All right then. So please feel free to reach out to me. I'd be happy to talk even more about this or even let you know about the beta projects that I'm working with respect to the decentralized systems. Yeah, thanks a lot for having this long, long conversation. Yeah, it went off quite long. It was quite interesting session and people are listening to you. Hopefully. Yeah. Yeah. Thanks a lot.