 Yeah, it's nice to be here. My name is Stefan Cooks. I'm from Slogged You see blockchains on the screen So as maybe some of you know, Slogged was acquired from blockchains last year And that's why yeah, we are connected with blockchains now and so actually we are the technical arm Developing the products which is yeah, which are developed with blockchains so today I want to talk a little bit about in-cubes and What in-cubed can do for the ecosystem of blockchains, especially now of course for Ethereum but also for other blockchains So when we have applications where we need blockchain for instance IOT This is where we from Slogged started So who knows Slogged knows we started with building locks which are controlled With a smart contract so that you can pay to access this door lock And you also did a lot of other IOT for instance when you Build a smart meter for instance and want to send and receive data from the blockchain You need a connection to the blockchain. So in the beginning we started with Experimenting with light clients. So how can we bring into our probability of blockchain into IOT devices? And this is a really tough thing because most IOT devices are very small Microcontrollers and so on and it's very hard or impossible to run normal synchronizing clients on it Another problem is when you have a mobile app, of course in a mobile app You can run a light client. You can ask leaky what happens when you run a light client in a mobile app It's not an easy task because you have a lot of energy consumption It's consumes or needs a lot of traffic. So that's not a good way to have it in your mobile app Or a web page if you have a web page It's not really possible to run a client in a web page Of course, you can connect to a service where you run the client or you can run a client on the computer But if you have only a web page and want to deliver it to people and Want them to access directly data from the blockchain. Yeah, it's not possible at all So and then we started Working on IOT devices at Slogged we had exact these challenges How to serve the problem to get secure blockchain information into small devices? So when Ethereum started then this was division to have a decentralized network, which is connected peer-to-peer and we have some decentralized application which are connected to clients and work in this way Completely decentralized no single point of failures and so on But this is how it looks like mostly at this time We have centralized services to access the decentralized world It's a very important bridge technology, of course It's nice to have this technology or that we had this technology in the past so that we can build these and last applications But thinking a little bit in the future. This is not a good way So we need a complete decentralized way to interact with blockchain even if you are in small devices or in In applications which cannot afford to synchronize all the time So when we talk about clients so in the in the Ethereum world, of course, I can run a full node which synchronizes So at the moment it's about 235 40 gigabytes what you need on your on your disk If you're synchronized from the beginning it takes a while even if you're use Like a quick sync mechanism it takes always some minutes hours to synchronize Even if you have a light client where you only synchronize the block header informations It takes minutes or even hours to get this information and now think about a small device like a Doro log which is on a place where it's very bad internet connection and The door lock has only a small battery inside You cannot afford to synchronize with a light client or a full node So what most applications do in the moment as I said is using a remote client meaning you have Internet node where you run your full node and then use RPC connection to get information But what happens so we have two big problems in this when we use it like this So the first is we have a single point of failure if the service shuts down or is not available then you have a problem and I think this is even more important It's not secure Declined cannot check by itself that information it receives is correct If there's a man in the middle attack, I can try to prevent it by encryption But yeah declined itself has no clue how to do or how to check this information So and what we did within cubed is to build a client Which is as lightweight as a remote client But is able to check and validate all the information like a light client without synchronizing the information directly from the blockchain of Course and this is I think always important. That sounds a little bit too good to be true It's not all problems This is not a solution for every problem of course But for a lot of problems It is a really good solution if you have an application Which needs from time to time information from the blockchain This is a very good solution if you need synchronized information all the time For instance, you need to You need to connect Or need to read events all the time then probably the incubate is not the best solution for it but for most applications as I said as That I we are coming from the IOT world There mostly we need from time to time information and we need it in a secure way and then the incubate client is a very good solution So and with incubate it looks like this I try to touch nothing Okay, so with incubate it looks a little bit like this we have this This PewDiePie network where our full nodes running connected PewDiePie as we know it and some of these nodes run also the incubed server software this is only a small software which connects the The full node to the internet add to the incubate protocol and the incubate nodes They are connected to the network of these incubate nodes and by this way we have a decentralized network and I will also explain how these nodes or how these clients are able to validate information by themselves So first a short definition. So we we called it a minimal verification client That means a client which needs the minimum and resources and is able to verify all the information so verification means it needs to check if the information is correct and It belongs to a correct block of the blockchain this we need to validate in our client So and the important thing from incubate is that we have a complete stateless client Which doesn't need to synchronize at a set. It's not a part of the PewDiePie network So we don't need any other information Then only one information we get when we are such a node and with this information we can do all the Verifications Okay, how is it working? I try to explain it a little bit so that you get a clue how Others can use this protocol or use these clients. So the first thing is our registry this is a smart contract running on the blockchain and Full nodes can register In this registry they have to give some metadata how they can be accessed and also they have to give it a Security deposit I will explain why we need this later and The incubed clients they can synchronize this list of Available nodes and with this list they know which nodes they can access So now when we have a client and this client needs information now It has this list and in this list it sees okay in this case It has five nodes these nodes have a security deposit and they have also a rating so it knows okay when I talk to this it's Probably a good one or this is not a good one because he didn't answer me the last times so then it selects one node and Sends an office request. This is almost the same like I would do with a normal remote client But as response I not only receive the Result of my request, but also do I receive the miracle proof for this data and The block header and with this information I can validate by myself in this moment that this information belongs to this block because I have to miracle proof And this is also possible in very small devices. It's a little bit calculation, but not that much so at this moment we have the Sure information. Okay. We can be sure this information belongs to this block But I don't know if this block is really a block of the blockchain It could be a manipulated block which is good in for itself, but it's not belonging to the blockchain That's why we also need to ask other nodes So in decline now has a list and he selects other nodes and ask them for a validation What means validation? He asked them to sign the block hash of the block which was delivered by node B So and when we have this information then we know, okay We have a block this block belongs to the blockchain because others have signed it and We know that our intervention belongs to the block So in what happens if some of these nodes are misbehaving signing from block hash because this is the information we rely on so our Registry is smart contract has the ability to convict nodes which are misbehaving So the block hash is the only information I can validate on chain in the past at least a little bit in the past and that means when Someone finds a signed block hash Which is not correct which is not belong to the blockchain then he can go to the to the registry convict this node and he loses his deposit and He's thrown out of the network so that means for declined when he has The need for a request of the value of maybe 100 euro Then he can select nodes to validate his or this request Which have a deposit which is higher than the value of this direction or of this request And so I have a crypto economic incentive to get the correct information So I can decide how secure I need the information because when I need more security then I can select other Nodes with higher deposits or more more nodes so that I have the security I need and also I Can put Active watch stocks into the network. So then I think okay. Maybe the network is a little bit compromised there Maybe are some nodes which are working together and trying to misbehave or to betray me Then I can run such a watchdog, which is there and this watchdog acts like a cubed client But has the connection to the blockchain and so by it he knows by itself by himself Okay, this is the correct information and when he receives a from everything he can directly convicted in the registry and with this we have a network which is completely decentralized because Declined doesn't need to talk always to the same note and actually in the protocol We have a rule that the client should not talk to the same client as to the same note in Twice in in the role because then he could be maybe a Sensor because the other the other node knows now here ask for instance how much I have to pay to open the lock and When done the transaction comes that I pay for it. He can send so it and I cannot get access So but if I select always a random note to talk with then This or this danger is not appearing. So when we see these notes they have to deliver information and If they misbehave they lose that episode. That's not a good business model You have money you can lose it But the only thing what you do is being good and nothing happens. That's why we are working also on an incentive layer Which means that a client can ask for information and pays directly for this information And so the nodes can have a business model. They are incentivized to Offer the service and and the client is paying for it. It's a very very small amount And we also are working on flat model so that they bundle Request so that it's easy to handle. This is not yet finished. The other protocol is completely finished and Last Wednesday we released a stable version. It's stable on it your main net It's usable now the incentive layer will be the next step Which we will release during the beginning of this year So as I said this happens or this works of course with one blockchain for instance publicly turn But our client is not storing any state. That means He can talk also to other blockchains for instance a private chain or even bitcoins Or we are working also on a border call enhancement so that we can also validate Bitcoin transactions So and then you have only one client Which serves as interface to Ethereum and all other blockchains? And if you run it for instance on your small device you only need one client and can interact with all these blockchains So and not even only blockchains So all verifiable data services now for instance IPFS is of course one simple example is already working Declined can also interact with IPFS or with any other service where a proof for the validity of the data can be provided Yeah, we have several versions there There is the smallest one the nano version which is small enough to run on a real microcontroller So maybe I have one here If you see here in the middle this black chip this microcontroller is enough to run this client completely So then we have the basic version which can interact with state and so on and also the full version Which can also do the interactions with the EVM So we have a complete EVM included in this protocol so as I said last Wednesday we had the stable release of the first kind of productive version and So in the next minutes, I will explain a little bit what is released what you can use and what is available So we have several clients. So first we started with the type of type script implementation but of course if you want to go to Small devices to microcontrollers type script is not an option. It's way too big That's why we have also a C implementation and the C Implementation can be used in almost every a small device So often we receive the question. Yeah, why C? Why not rust or any other cool language? The answer is at the moment at least very simple There if you want to go to the embedded world to small microcontrollers, there is C and Nothing else Right if you want to get included in current firmwares, you need to be C so as I said we have the type script client the C client and The node software is written in type script, which is running on a server there. This is not a problem yeah in Because we wanted to release as a stable version of our software. We had Security out it. We have done it with consensus last year We did discover a lot of interesting things we could enhance in our protocol Everything is now Solved and finished so you can also if you want to dig a little bit more inside the audit. It's published Everyone can look at it So these are some fun facts about the in-cubed implementation Yeah, for instance, we have about 50,000 lines of code in type scripts and even some more lines in C In C it is more because we had to implement our EVM by ourselves and it's the smallest EVM Which is at the moment available. It's only 300 K which you need for the complete EVM to complete implementation yeah, then we did a lot of testing codes we have thousands of tests we have a lot of documentation there There are some smart contracts So the first one called smart contract before for the regularity was quite small but yeah in the during the development we discovered a lot of attack vectors So that's why it grew a little bit, but it's not that big at the moment anyway some statistics So when you think about a standard line like gath or parity You have of course a big executable which is fine for computers But not for small devices Then our in-cube type script version. It's about two-and-a-half megabytes That's not small, but also not too big But our C versions they are Compared to this very small there are only some hundred kilobytes if you look at this the This c-nano or the smallest version which only can interact with or can validate trench-extra receipts It's about 150 K, but this number actually is not the correct number because There is the full image for this microcontroller Controller in it all the drivers everything what you need So the only the software for the client is less than 100 K But if you want to have the EVM inside then it's about 250 300 K Yeah, size metals. This is what I said. So we have 300 K, which is the complete implementation The RAM usage is about 100 K We at a moment we are looking to get it a little bit smaller because there are some devices we From companies we are working with you say, okay, we have only 64 K. Can you fit it into this? Let's let's see This is the biggest thing for the RAM usage is the result No, if I interact with a smart contract which has a lot of code then I need to store this in the RAM That's maybe a problem, but if I have a specified device then I can Make a special code that it's very smaller than this and also the payload is very very Small amount of data. I only get the result the block header information and And a little bit the information I need additional for the Murgle proof That's depending on the information I receive Yeah, what is available now? So we have in the C client Some transfer protocols. You can use curl for normally then we also have a Bluetooth protocols NFC We are doing next time that you also can use near field Communication yeah, also other protocols as we heard could be used there to do the transport layer yeah, then we have the the verifiers for different Types of blockchains at the moment it's your protocol is completely Fully implemented. We are working on the Bitcoin IPFS also almost done and We are also looking into other blockchain Implementations so east 2.0 is one is on a list also polka dot and other networks so that we can use our client also for these networks Yeah, and we have some Some frapples to other languages because seeing of course not everyone wants to do his programming in C But we have wrappers to Java to Python and also to Vasen So as I said our client at the moment is only connected to Is using a lot of libraries so that's why it's a little bit bigger, but the Vasenlin does doesn't have any other Dependencies and gets way smaller and much quicker Yeah, this is what I said to see library binds to a lot of different platforms and The C is also used to generate the wasn't implementation and not every Device or every platform is able to use wasn't at the moment and that's what that's why I also have a is MGS implementation so that you can also use this and When you look at the sizes The first line is our types with implementations It's a little bit more than I said, it's about three giga at three megabytes the ESM GS is about one megabyte and our wasn't client is just 200 K It's very easy to embed it into your web page into your mobile app and so on It's very small as developers. Of course everyone needs documentation so we built out of our Complete software tech automatically a lot of documentations and In reader docs E and three dot read the docs IO you can get the complete Documentation so that you can use it for your own projects. So maybe Some information to the license the complete source is licensed as hgbl so that it can be freely used in every open source project and There's also a dual license for commercial projects, which needs which then can be a is a sold access to So that we can you can buy this license if you have commercial projects where you need it And you are not able to use the hgbl license. Yeah, this is the A page from the documentation and you can I think it's a good documentation you can find all the information you need to run a note and also to a implement implement Decline use declined in your projects in this documentation And we also have some tools you can use and which makes it easier. There is a Dashboard where you can see how this network Works so at the moment that we are running from slogging some notes. There are some other notes running Everyone who uses this protocol of course is invited To set up his own nodes include it into the network so that we get a real Distributed a real decentralized network where everyone can get the information he needs and also Delivers information to others We have a set up wizard also so that it's very easy to set up such their own nodes So that you're it's easy to participate in this network So have a look on the time I don't want to go too deep into a programming but I give you some insights how easy it is to use incubate in your projects So first some slides what we are doing So the main feature of the client is to verify the information It gets as I said the information I Requested and the miracle proof which I need to verify it. You know for instance in the first I have this trend Act as this this receipt from the transaction. So and I can Have designed blockage so I know what is the correct hash and then I can calculate the Miracle tree and get the information the same applies to information in the state tree and When I want to interact with the smart contracts, then this is not enough then we have also to run the code the Small content code in our own EVM to Calculate the correct hash and this is done as I said we have this small EVM so that we can do it directly in the client Okay, how does the code look like? so this is a simple example how Java or typescript Implementation could look like but just initialized the incubate client object and then we have some APIs So you can directly access functions You can directly access State information and so on if you are using or building an application based on web 3 chairs Then it's a very simple for you Just you have just to replace the HTTP provider with a incubate client instead of the existing HTTP provider and everything works as You're needed in C It looks also very easy and we have the same API API function there just build in cubed object or in Incubed struct initialize it Define the transport in a transport layer and then you can access the information directly one thing I think it's also a nice feature So from the C code we also can build a command line to him and so with this command line to you can Directly access from your command line information from the blockchain You can call I am free and then ask information to the blockchain all the Communication stuff I described is in the background and you can access secure validated information so you can even include Blockchain interaction or blockchain requests into your shell scripts and so on and also to To deploy something it's very easy directly from the command line in one line. Okay