 Ne, si počke. Daj. So, imam sredn poblatvim tukovom ponos, in tukovom nalivno vžemljujem, težkih z mladstvenih, proste vsečnem, ne sem moračpak odvijati, ta človja, je ne nej dobro, biti vsečut, ipc vsečen je nalivno. To je ne, zato bolj imaš. To so, vsak je počk. Marko sačo, da ne, da we se zelo podrvoje clarity napljaj s sedja, espel nami, bolj tukov, Bila gledaj, ki so se zelo na zelo na kričenih operacijja, o whom ne kričenih operacijja buravamo demonstrativo. Zabijega v otrojernih ob behaviors zelo na ob seboj. Zelo pristu. Pistalo, če so prišla, proudi, nekaj bodo tebeno po svojo razp rokat. Če možemo prišli, da je zelo na nekaj prejzena. Selo na ob Capitalim dot. Če so prišli, da je tebeno prejzena, nekaj prejzena skal. Po tebe, da bi bo stvari so svojniče na nekaj koncentrizacije, nekaj prejzena. So there are, typically we call it the layer two solutions, so there are several approaches that currently run the market. So we have sharding, and sharding is well established, it's an old technique that is used for a lot of time. But it fits very well for all generation applications, vse vse je in veliko infrastrukčje bilo v se niko u njih začilov, vse niko u organizacije, bo je več kompleks, izgleda jebe je izgleda, in da je prišlo, vsurj, to bila objev. this is why it is still very good distributed databases, there are companies that specialize in that. And can also be used in blockchains, would not solve everything of course, There are zero knowledge proofs. That is very promising, and there are already applications that work in several places. Again, it has its pros and cons, but you can compose it on other solutions as well. Also, when you do zero knowledge proofs and use it, then execution still has to somehow happen. Not everybody needs to do it, but still you have to somehow serialize it. It is good, promising, but not the only way. And then we have payment channels. That's another option. Many of you might know Lightning Network. So in terms of scalability, this is amazing. It's very distributed. You can scale to really huge throughputs, very fast, and the idea is that you just do everything off-chain. And then, at the end, you settle it on the chain. But it has a limited functionality. It is payment channels, and it does payment, and you cannot do everything. Very good, of course, and then there's another approach that is using side chains, like Marko mentioned. It's just forming new particular block chains that are specific for some task. Now, that is also very interesting. And, well, now is the question, how do you use those side chains? So IPC actually goes to that approach, and I'll just tell briefly what does it mean. You have those different, I have a pointer, but cannot see. So there is the root chain. That's the main chain. And then you can just spawn an seemingly independent chain that sometimes checkpoints for security to that parent. And the child chain, then what we call a subnet, can spawn its own, and so on, and so on. It cannot go indefinitely, because someone has to do all the computations, but can go enough, and it can go very wide. So clearly horizontal scaling. And the question is, how do you structure all those side chains? So here, what in IPC we are doing is we are structuring it in tree topology. So that is one way. You can think about it, that this entire side chain approach in some sense, it is between sharding and payment channels in the terms of the trade-offs that you can get. Because sharding is, man, you can do everything on sharding, right? But it's complicated, and it has high costs. And here you can see that there is something similar to sharding. The smaller chains, they keep only a part of the state. So you do divide the state a little bit in a divide and coin kerminal. But it's not exactly sharding, because there is duplication. You do checkpointing, and you do other stuff, and chains are not exactly the same, like shards are the same, so it's not exactly sharding. And then there is payment channels. You can think of it either with these side chains and this approach as extending payment channels in the way that there is more functionality here. You're taking some of the load off the main chain, doing a lot of stuff in the subnet. And then you checkpoint, just like payment channels settle the channel on the main chain. So it's extending it in some way. It doesn't mean it's better than either of them. It just gives you different trade-offs that you can play with. And having different trade-offs to play with is very important. This is why we're not the only ones that are going in this approach. This approach is interesting for other companies. Many of you might know Polkadot or Cosmos, or Polygon is a plasma implementation that's for Ethereum. And each of them chooses some different kind of trade-off. For example, in Polkadot, the way that they organize those side chains, they have this, I can call it, one ring to rule them all. There is one net that controls everybody and everybody is connected to it. And Cosmos is actually much more general. It's like arbitrary connections between the subnets. And Polygon, which is a plasma implementation, actually gives you also a tree structure, but it adds a very nice touch to its checkpointing mechanism that is more secure in some sense, but it limits the functionality. So you can only have a functionality of payment and not general. And then we have IPC, which offers different trade-offs. And let's see, like an example, what do we mean with IPC. So we have here subnets. There is the world subnet, and the world is the mainnet, the rootnet. And then you can have two subnets, Europe and the US. And Europe has its own three subnets, and you can see. But besides subnets, there are also users. So we have here the cat in the heart and the Lorex, thing one, thing two, the Grinch. You can add whatever doctors' characters you want as users. I'm fine with it. And then we also have another user, that's Marko. Marko is also using. And Marko has an account in Serbia and an account in Zurich. Now, a very nice thing that I want to touch here, and this is what this slide is talking about, is that in those topologies, what happens is usually, and IPC and the other implementations, that a single account can interact anywhere in the system. For example, Marko now wants to pay the Grinch. And Marko in Zurich can't pay the Grinch in Oma, even though they're not in the same subnet, and it's completely different. So that is very powerful. What do we have here? We have a flexible subnet structure. We said before, every subnet can run its own consensus protocol. Doesn't even have to be a consensus. It can be just a maybe causal order broadcast, or whatever we want. So it's very free to have whatever trade-offs they want. It can be very fast. It can be more secure, less secure. And on top of it, you can interact anywhere in this hierarchy with a single account. This is really, that is so much that I imagine it as a thingamajiger, meaning it's a motorcycle airplane submarine. It can do a lot. But I claim that actually doing so much is more of a problem than a feature. And let me explain you why. Actually, how does Marko pay the Grinch in Omaha? So what actually happens is that Marko gives one file coin to the Zurich subnet, and then the Zurich subnet sends this file coin to Switzerland. And Switzerland sends it to Europe. And it goes like that throughout the subnet until it reaches the Omaha subnet. And the Omaha subnet gives this file coin to the Grinch. Now, in this architecture, the money changes a lot of hands. And who are those hands? Most of them we don't know them. Who owns the money when it's in transfer? It's the Switzerland subnet, it's the Europe subnet, it's not us. Who's in charge of the money? And who's paying the fees? So Marko needs to pay, let's say Marko is paying the fees. He needs to pay the fees for all those subnets on the way. But he sends it from Zurich. He doesn't play anywhere else. So he decides on all the fees already before, and what happens if something fails. So when you start thinking about it like that, not saying, oh, it's okay, it can get there. It's from a mechanism design perspective, it's just a nightmare trying to facilitate something like that. And this is why we're proposing something a bit different and actually not having the power for any account to interact with the entire network. Because we think having less power will actually be better in the sense that less is more for people that are using unique stuff. The way we do it is that we focus on users. Before that it was very focused on the subnets. And if you look back here, it goes to the Zurich subnet and the Zurich subnet, it's very custodial. Each time there is a subnet that is in charge of the money and we have to go through it, we want it to be less custodial and focus on the users, which means that we think of a user not as an account, but a user can have multiple accounts in different subnets. So we can think that each user has a hierarchy of accounts, like it has multiple accounts, and then we will restrict the possible interactions. If before any account in any subnet could interact with any other account in any other subnet, now we're going to restrict the interactions that are going to be only, like different users can interact only within the one subnet if where they both have accounts. And cross subnet interactions are going to be only inside the same user. So we're doing less, it's more restricted, but it will make our life better. And when it's an infrastructure thing, it's, I don't want to look it, but how would it look this overlay of user account hierarchy? So we see here that Marco in the mainnet he has his account, and in this account there are allocated funds to both accounts in subaccounts, one in Europe, one in the US. And in the Europe there are allocated funds to three subaccounts and so on and so on. So that's now the user account hierarchy. Each user has this hierarchy. And let's look what happens now in the same example as before. So now Marco has multiple accounts and having multiple accounts for a user it's not the problem. You press a button, you open an account. It's not an issue. Now again, Marco wants to send one file according to the Grinch. So the simple option would be just, okay, Marco in the US send one file according to the Grinch in the US and we don't care. But let's say for the sake of example that Marco wants actually to move the file according to its Zurich account and the Grinch wants it in the Omaha account. So what will happen now? Now we restricted the interactions. So Marco in Zurich sends the file according to Marco in Switzerland. Marco in Switzerland sends it to Marco in Europe and so on until it reaches Marco in the US. So it's all within the same user. Then inside the US subnet the file is transferred to the Grinch and the Grinch propagates it through its own user accounts down. And now what do we get? We will get that it is very clear where is the money. First of all, we can pay it because we are at each subnet we have an account and we can pay it. And if for some reason it fails in the middle we know where it is. It's not that we send our ship from Australia to Chile and somewhere the ship didn't make it. It sunk somewhere in the Pacific. The ship is always next to us. We know where it sunk. We can get the stuff out of it. So it makes stuff much, much simpler. Any questions about that before I'm going to summary? No? Yeah, that's kind of simple. Yeah. Oh, sorry. Sorry about that. What did the atomicity claims about this? What is the what? Atomicity claims. Okay. What do you mean in this sense? Each subnet? Well, just overall end-to-end I suppose, right? Yeah, I mean in end-to-end sense. You cannot say too much. You can say about each interaction that is going to happen or not. That is exactly the issue. Because let's say that Marco wants to move the falcon from Tzuli to the Grinch in Omaha. You cannot guarantee in the beginning that it's going to succeed because we cannot predict the future. Maybe now, when he will reach the main net in the world, he will not have enough funds to pay the fees because the fees just rose. So that is something that you cannot say. If you want each subnet to be independent in some way, you cannot guarantee more than that. Did that answer your question? What about gas fees? So gas fees are determined by each subnet itself. I cannot control when someone spawns a subnet, I cannot control what would be the gas fees in this subnet. So this is why it's also important that Marco, if he has to pay the fees, that he will have an account there. So he will have to pay the fees from this account. And I'm assuming from Zurich to the US is paid by Marco and from the US to Omaha is paid by the Grinch? Could be, but the Grinch can, for example, ask Marco to give him some more money for that, but that is already user defined. Another question then will go and then other questions afterwards because I want to be on time. Yeah, thank you for the presentation, really insightful. I wanted to ask, so what would be the disadvantage of just having the transaction, one transaction happening at the world chain because in any case, every node needs to be checking the world, right? And if that happens at the world level, everybody could sort of update their state on the China. So some things you want to do in the world, right? But sometimes there are dedicated chains, dedicated block chains for specific use and you want to have your funds there. Oh, no, I get that. I mean, when there's a transaction of this type, since you are going already through the world, from one branch to the other branch, through the world anyways, you're going to have to pay fees there anyways and everybody is still a full node or at least checking the node chain, the world chain, why don't you just like transit everybody at the world level and forget about passing through every single step of the way. Definitely. I would say this is what I said, the first option would be not even going on the world. Marko pays the Grinch directly in the US because it's cheaper there, right? It's a smaller subnet, it's cheaper. But we wanted to see what happens if he wants to move because that is what he wants. He doesn't have enough funds there, I don't know. He wants to move his funds from Zurich to Omaha. This is the question. Okay, I'll take other questions afterwards just to summarize so we'll be more or less on time. We propose to connect the side chains in a three-structured topology such that any subnet would be completely independent and can run its own consensus protocol, so it's very flexible in that sense. And on top of that, we propose to improve it by adding restriction on what interactions can happen between accounts and doing that by also having a three-based topology of user accounts. And by doing that, we can have non-custodial accounting and we can have a much simpler and more robust design. And this is extremely important because we are talking here on IPC. It is an infrastructure. It is not an application for the user. It's an infrastructure that things should be built on top, so it should be simple and robust and easy to maintain. And that is how we propose to do it. And when you think about it like that, as an infrastructure, it would be kind of lean. Yeah, it is more restricted, definitely, but in the same sense, you can think of Unix, Linux in comparison to Windows, right? It's a more restricted set of operations, but it's more robust. And on top of that, we can build applications. For example, Marko transferring his funds from Zurich to the US, that could be a user-friendly application that would do everything for him, so he will not have to do each one of it by itself. Or we can have an application on top of this infrastructure that would take care of atomic swaps between different stuff, different chains. And we can build on top of that a shortcut service, also as an application. Let's say we want to have a shortcut from Zurich directly to Omaha. Then we can have a smart contract of an application that would just provide you this shortcut. So there are a lot of things that can be built on top of this infrastructure if we build it correctly. And this is why I think it's very important to have it as simple as possible. In another way that I think about it, we can take the motorcycle airplane submarine and instead of that, I propose we should build that tractor as an infrastructure and then we can simply add the airplane and the submarine on top of it, all right? Yeah, sorry, okay. And that was it. So if the... All right, thank you, guys. In typical guy fashion, he decides to front-run me and starts taking questions before we explain the process. Since we are streaming and recording, please raise your hand and wait for a microphone to be delivered to you before asking the question. We do have time for a couple of questions now. Alfonso, we'll be talking about the implementation details of all of this. So if your question is about implementation, you may want to wait another 20 minutes, but if you have questions right now, please go ahead. Can you explain how many atomic steps are involved into transfer value from one subnet to the other? How many what? Atomic steps. Does everything happen in a single atomic steps or is it broken down in multiple ones? One for each subnet? It's one for each subnet. So... I'm actually going to repeat the question that was asked earlier because I didn't really get the explanation. Why can't you just use the least lowest common ancestor to synchronize one... So instead of going through all of the ancestors and then all of the sins, why can't you just use the lowest common ancestor to transfer value from one subnet to the other? I think that is the best thing. That would be the best thing. And that is what I said. That would be the option one, right? Exactly, that would be the best. But sometimes I don't know why you don't want to do it. I'm not... I'm saying that probably would be 90% of the time. I agree. Complacely. All right, one more question there. Thank you for the talk. I'm expanding on those questions, those two. So if we take Cosmos up as an example, they are doing the settlement in their main app and it's fine, right? So they have all the side chains, more or less side chains, but they have all the chains and they have their own transactions, but the settlement is always done in the app. What is the benefit of having a model like that instead of a central world app that does all the settlement? Because we wanted to be more in that sense. Jamek and not dependent on a single kind of, like I said, a single ring to rule them all, right? So actually this... Let's go. Europe can operate, actually, even without the world, in some sense. And it can have its own subnets and everything. And we don't want to rely on the world being very, very special and have special properties. Actually, you can look at each one of those subtrees as completely independent. And in Kosmos, they don't have it. They actually, even each chain that is under the main app can be an app. And we can cut that main app and that is the new center of the world. Center of the world, but it's not the one that is relating. Now, it is very similar because, like I said, those approaches, sorry, here, they have a lot of similarities, more similarities than differences because it's a really good idea. We also think that. I was just trying to check what is the main difference we all get, but what is the benefit that we got in that model instead of the other ones that already exist? So what I think and what we say is that the simplicity in this model having it restricted and not so much custodial that you have to trust so many steps on the way because each step by itself is atomic. You cannot guarantee what will happen throughout and what will happen if it fails and how you design the incentive mechanism for that. This is the main benefit from this simpler design.