 He'll be speaking on Sikorca, Ethereum meets the outdoors. Great, so my name is Lefteris Karapetsas. I will be talking to you about a pet project of mine called Sikorca, where Ethereum meets the outdoors. First, I think a few things about me. I have been an Ethereum core developer since 2014. I have mostly worked in the C++ core and the Solidity compiler. More recently, I have contributed a lot to the DAO and the aftermath and the clean-up after the hack. My general interest is in compiler design, AI, smart contracts, and general tinkering with software. So, what is Sikorca? In the Polish language, it is this particular bird. In English, it is called the blue-teeth bird, and that's where the name comes from. For Ethereum, Sikorca is a system that facilitates deploying smart contracts in real-world locations. Essentially, it allows people to interact with contracts in physical locations, and it does so by providing something I call the proof of presence. We really like proofs in blockchain. So that the user can prove indeed that he is present in a physical location. Potential applications of such a system are many. For example, loyalty programs that would provide a discount to users that visit specific locations for coffee shop, supermarket, or something else. To prove your attendance in a specific location for administrative purposes, that says an example would be if you have to visit your local unemployment office once per month to get your unemployment benefit, or something that I really like, augmented reality games in Ethereum. That would be really awesome, right? Something like Pokemon Go, but in an Ethereum smart contract. So what is proof of presence? We can prove that a user is indeed in a location using various methods. Some of them, actually almost all of them can be spoofed, so maybe a combination of them should be used. The most usual one would be to use the mobile geolocation data, so the latitude and the longitude coordinates. A challenge question and an answer so that if a user is present in a location, only he can answer this challenge question. A bit more advanced would be to analyze the data of the video at deployment and compare with the image feed at user interaction. For a bit more security, we can go to specialized hardware, so we could have a QR code, a sticker with a QR code on top of it, that would be on location, and then the user would have to scan. Or also, the same thing with an RFID tag and an RFID reader. Or going even further, a specialized chip, for example, that would be on location, and would allow people to interact with the chip via Bluetooth or something like that. So, CCOCA works very, very simply. Contracts have to follow a specific interface and the application or the system allows the user to search for contracts that follow this interface and are around them. When a user deploys a contract, a CCOCA contract, he also has to provide the ABI, so the system knows what kind of methods the contract provides in order for the user to interact with it, and also he has to provide proof of presence as I explained before. So the contract interface looks something like this at the moment. I have to mention this is all a very early prototype since I was really busy with the DAO aftermath, so right now this is really new. So, a user has to provide a name for the contract, latitude and longitude coordinates, which are in an integer approximation since Solidity does not allow floats yet. The question, so the challenge question for the proof of presence, and the house of the answer since we really don't want to give a plain answer in plain text in a Ethereum transaction. We have a modifier like this so that people can essentially use this modifier in the CCOCA contracts to allow the user to prove that he is in the location. So all he does is check the sub-3 of the answer if it matches the house and calculates the distance if it's within a specific parameter, then it allows the user to interact with the contract. The owners of the contract should change their silent answer and question and answer quite often because the situation on the ground is volatile, so something could change and they should update it so that users can still interact with the contract. So to see an example contract of which we will see a demo video afterwards, this is a discount token for a loyalty program, let's say, of a coffee shop where you have the usual CCOCA interface plus a number of tokens to reward to its user and the duration of the loyalty program in Unix timestamp. So this is the simple interaction function where the user just claims the tokens using the proof of presence modifier and as soon as his presence is indeed verified he is in that location and then he gets his tokens. So now here is the demo video. So this is in Berlin. This is a very touristic location. It's the Brandenburg Gate. It's a very nice place to put an advertisement contract, let's say. So you as the owner of the coffee shop would open the application and try to deploy a new contract. Then you would search around the location and try to find the place to put the Ethereum hexagon where you would like to place your contract, so the Brandenburg Gate is a nice location. You have to give a name to identify the contract with. Since we have a coffee shop and this is a coffee discount token, let's call it coffee discount. I'm sorry, I misspelled coffee. I can't remake the video. There is an exhibition right next to it and it has the poster of someone called Kessler. This is the name of the artist of the exhibition. So if you are there you would have seen it, so we are asking in the question what's the last name of the exhibition's artist. So the answer would be Kessler. So now the user can just choose his source code. I have a template here and then we are deploying the contract, waiting for it to get mined. That's a bit fast-forwarded because it takes a bit for the contract to be verified and there is our address. Then we can start searching for contracts around us. After the Google Maps API loads we can see the Ethereum hexagon that shows that there is a contract deployed at this particular location. We can see that this is the coffee discount that we deployed and we can interact with it. Using the ABI, sorry, we get the proof of presence challenge question. We saw that the name of the artist is Kessler. So that's the correct answer. We get the ABI of the contract. We can actually claim a token now and we send the transaction. So the transaction is successful. Now we can go back and use a different method and we can check the balances, for example, of the contract. And we can see that we actually do have a hundred discount tokens now. So this is a process that can continue. You can go somewhere else, right? This building which is very close to the Brandeburg gate, deploy yet another contract. We can just call it the Bundestag contract because it's right next to the Bundestag building in Berlin. And if you go to search for more contracts around you can still see once the contract with Google is established that you have both contracts there and you can check their names. So this whole process can continue. So this is still another location in Berlin. This is Alexanderplatz. You can just put more contracts here with different parameters, different questions. And the whole point of this is that it would be nice if in every city we started seeing maps like this that essentially are full of Ethereum hexagons or Pyramids, however you would want to call it. And where people can have fun and interact with Ethereum smart contracts all around them. So that's the video. So for... Thank you. Thank you. So this is like a very, very early prototype. For it to be really, really a workable application, we have to integrate with a light client. And from what we saw today that's very close and I'm very, very excited. Do publish the mobile app in the Android store. Improve the proof of presence algorithm with the methods that I explained. And probably integrate with an existing wallet for account management since this is not something that I would like to do myself. And also integrate with an existing identity system. So yeah, that's my 10-minute talk. If you want more updates, you can follow me on Twitter or on GitHub. And the website for Sikorka is coming soon. I just didn't have the time to make it. So yeah, that's all. Thank you very much. Thank you, Loftress. Thank you very much.