 Oh, okay, good morning. So, Swarm City, so just as many other Ethereum projects we are trying to, oh, is this one, thank you. We are, this is our vision, just like many other Ethereum projects, we want to enable humans to transact, create, and share a value without a middleman or a third party and a global skill generating contextual reputation. Our mission is to do this in a way where normal people like our parents actually understand what you are doing. So we don't want to have people experience the blockchain. Basically, we want to really make it really easy to use. Today we want to discuss two topics. We are trying to solve Ethereum-byte problems that we encounter in creating an app that is consumer-facing. So the first thing we want to talk about is the IPFS consortium. The second one is the gas station. So the first thing, IPFS consortium, so if you want to create an app like we do that's totally decentralized, you still need storage. We need to find a way to have data persistence. So even if you do it on IPFS, you have to make sure that your data is persistent over time. The way we came up with that solution is really interesting because it's the way we came up with solution actually is kind of the solution. It's collaboration because it's key in the blockchain world. So we sat together with Gifit in Barcelona and many other people and after a night of brainstorming we came up with this really simple solution. I'll pin your data if you pin mine. For an in-depth or a more in-depth technical overview of that solution I'll hand it over to Spanaet. Okay, good morning everybody. So the solution we came up with for the IPFS consortium is actually that we created smart contracts. So by the way, this works on top of another persistency consortium project by Piper Mariam. So we try to extend it a little bit and make it more general for that everybody could use it in like a more flexible way. So we created a smart contract, the IPFS proxy contract. And this contract will just emit events. So we have two events like hash added. So if an IPFS hash gets added or needs to be added to the consortium it has a time to live for example and then the IPFS has itself and the hash removed function. So if you don't need the data anymore and you want it out of the consortium so it's not pinned anymore, you can do that. Then in the smart contract itself we implemented two functions add hash and remove hash which basically just emit these two events. So it's very low on gas to actually call these two functions. Then all these members in the IPFS persistence consortium they will install a script on their respectively respective IPFS nodes which is a proxy listener with just a script that goes and listen to these events on that IPFS proxy contract. So that's the general setup. Now there are a few more things there. For example, the IPFS proxy contract contains a list sort of a white list with all the members of the IPFS consortium members. So that means that all their public keys are in there. So it can actually verify if they call the contracts so that only IPFS member hashes are pinned in the IPFS nodes itself. So there are different ways of adding your hashes to the IPFS consortium. So first of all, if you have a DAP or a script which wants to pin content you can just call the function add hash or remove hash. So that's the way from doing it from your DAP itself for the frontend. But we also exposed these IPFS events as a separate solidity file which you can just include in your own smart contract. So if the logic of your DAP actually needs to store IPFS content from on chain basically then you can just create your contracts by implementing these IPFS events. And then the consortium members can add their contracts to the IPFS proxy. So we have a second list in there. And if they add it to the IPFS proxy contracts then these proxy listener scripts will also start to listen to these same events in all the specific smart contracts that they use. Now concerning the governance of the IPFS consortium so we don't want one single owner to manage the consortium. So that's why we added multi members so that's basically the multi codes to vote on adding or removing members. All the members, they pledge to persist each other's data and they allocate an equal amount of disk space so they sort of donate all an equal amount of disk space in the consortium. So it's interesting to notice that so we can deploy one of these contracts which has a certain quota and all the members there they say okay we are going to do this like for example with a quota of 10 gigabytes but it's very easy to deploy a second contract we then has like for example a quota of 50 gigabytes so we can just choose to set up new of these contracts. Some of the future enhancements that we want to bring is that we can also do pinning via whisper. So the idea is that you would just call or create a data payload in whisper which has the same commands to add hash and remove hash which is the IPFS hash itself and the time to live. They will create a hash and you will actually sign with an elliptic curve signature this payload and you can just send it to a whisper channel and we can have them the script listen to this whisper channel and just pick these things up. So to give a roundup on the IPFS consortium so we have the possibility to do on-chain pinning by a smart contract. We can do off-chain pinning by the DAP or the scripts which then performs a transaction. We can then using the whisper solution also do off-chain pinning without a transaction. So just by signing it with your own key we have the multi-member voting to add and remove participants the data quota but on top of that we also support that the network is permissionless and maybe I'll give it back to King Florg to explain that. So that's a really interesting case. So anyone can run this proxy script at home on their own computers and like we saw in Barcelona a couple of weeks ago when the Spanish government tries to block IPFS host names we think it can be powerful that many people can actually have a voice and run the software just on their own computers. Currently the IPFS consortium is of course in kind of prototype or it's like we proved that it works but of course we are inviting everybody to join us and to make sure that we can have data persistence in a decentral way. So the second thing we wanna talk about is the gas station. So what we do if we want people to onboard our project of course we send them some smart city tokens but then we always have to see and you need a little bit of either to actually do something with it because every transaction and then you have to tell a whole story about gas. So for a lot of people like my dad for instance he was like why do I need two coins now or two tokens. So our ideal solution would be that it is a one click solution in the front end in the app where people can actually exchange a little bit of their tokens for gas. Our design process is kind of funny I think because we always use the metaphor of a city. So if you drive around the city you of course need gas and what do you do then you go to a gas station. Oh, I'm gonna hand it over to Spoonette for this. Thank you. So the way many of the existing Ethereum projects solve it currently is by just giving away some free gas so just sending some gas to a certain address which was created in a wallet in the hope that they will actually use that gas to perform transactions in their ecosystem or to use their app. But most of the time you can't be sure if they will actually use the gas for that or they just do some sort of civil attack and just try to collect as much free gas as possible. Another problem is also that if your app becomes very successful you have to have a lot of eater somewhere just to provide everybody with some free gas to get started. So we try to come up with a solution where we can actually just do the exchange so we have like a durable solution that people just are able to pay with our tokens for getting the initial gas. So it's also a two part solution. So first of all there's an API which needs to run which is a gas station service. And next to that we have a gas station contract that's deployed in lockstep with that so people can actually just run it themselves. So first of all you decide which ERC-20 token you would like to support. So in our case it's Swarm City token and then you send some initial eater which is just one eater because it's just about providing initial gas so it doesn't need a big amount of eater. You send it to the gas station to sort of fill it up with the eater. So that's the setup. If you then have a DAP, so the use case here is that you have like a new user who someone just sends a couple of these Swarm City tokens but it doesn't have any gas so you can't do any transaction yet. So the thing you can calculate is how much away you will actually need to perform the first transactions that he wants to do to get started. So we'll ask to the gas station service what is your price for this amount of way that I will need. The gas station, you will consult the public price API to see what the current exchange rate is for eater to Swarm City tokens and you will reply to say, okay, this many way would cost you that many Swarm City tokens. The next thing that happens is that the device itself or the DAP will sign an allowance which is an ERC-20 function to the gas station contracts for that amount of Swarm City tokens. And on top of that, you will create an elliptic curve signature for all these parameters. So the amount of Swarm City tokens is going to give and all that so we're going to adapt a little on one of the next slides. So he will send the sign transaction back to the gas station service and then the gas station service will verify that transaction. So we'll decode it and if it all fits all the prerequisites we'll actually send gas to that address. So the address of the DAP to execute the allowance call. When he sees that gas has arrived he will execute the allowance transaction by just putting it into transaction pool. And when that transaction is mined the gas station service will call a function in the gas station which we call push fill. So let me quickly show like how it begins, it's not a complete function but just to get you to give you an idea about how it works. So what does it give with push fill? So it provides a token address so which is the ERC-20 token that you support or you want to exchange. It gives you a validity date which is expressed in a block number so this sort of personal exchange rate is valid as a validity period. We add a random number to create some entropy on the but that will come later also. You will see how many of these swarms tokens you can take from him in exchange for how many way in Ether you will give them. Then you also provide the gas tank client which is the address of the DAP so the wallet address from the DAP and then the signature. So the thing that the contracts will do it will actually recreate that same hash with all these parameters. And here he will verify if the signature of all these parameters are actually match up to the address of the gas tank client. If so he does the actual exchange so the code is not here and he will mark that specific, let's say contracts or that specific configuration to be executed so he can't repeat it twice. Concerning risk mitigation, there's one problem because you have to trust the gas station service that he will actually also perform the second transaction if you give him the allowance transaction you must be sure that he actually doesn't it does that push field thing. So to mitigate that, so I told you before that's the API service response with so many way with cause that many swarm tokens but actually he's also going to give a elliptic signature on these parameters with his key because it also has a wallet obviously. And then we create the second function which is called push, sorry, pull fill and it will verify the same parameters which will actually just verify if these parameters were signed by the owner and this function can be called by the gas station sorry by the client who uses the gas station so he has a certitude that if they do the exchange they sort of mutually give the allowance to do exactly that transaction. So why would you participate or why would you run a gas station because we can define or you can define an uplift for the price you sell your eater for. So that means if you would for example say 10% uplift if your gas station sells out because the amount of eater decreases the amount of swarm tokens increases you will end up with when you sell all your eater with an amount of swarm city tokens which equals like 1.1 eater. So yeah, so the result of that is that anybody can just download that API script deploy its own contract primates we call it with eater then configure it like what ERC 20 tokens do you want to accept in your gas station then tell it how much eater market you wanna sell it for and just start it. You can find everything we are doing on these GitHub links and also on this is dot swarm city you will find more information on everything we do. But there is of course one more thing that we created. So as you see the gas station it's at a certain time it needs some maintenance because it needs to be refilled because like the eater gets depleted in the end which also tried to solve that and we have like prototype code of that which you can also find on our GitHub. So we created the integration with eater delta. So the thing is that the gas station service itself it contains a wallet. So when it has a certain amount of swarm city tokens it's almost depleted of eater. The gas station service can actually look into the eater delta and try to find the buy order for swarm city tokens for eater. So when it finds one you will actually purchase it because it's like anonymous I mean you do need an account or registration or whatsoever. So we just created like a machine to machine trading that actually buys eater in exchange for his swarm tokens. So the thing is you can actually refill or automatically refill your gas station with eater to start again. And closing that loop and so this can be fully automated so you don't actually need to manage the gas station anymore you just can't have it run. When it does the exchange you will actually end up with more eater than you started with. So you will end up in this situation like 1.1 eater instead of one eater. So yeah we thought it was appropriate to call that the gift that keeps on give a thing. So basically that is, thank you.