 This is Creativity and Solidity Development. My name is Ann Kielzer. A little bit about me, I'm a software engineer and visual artist. I grew up in Montana in the United States and moved to Tokyo two years ago, and I'm now the lead software engineer at CurveGrid. That's me with a real yak. CurveGrid, we are nine engineers in Tokyo. We're trying to make blockchain easier to use by building a middleware platform for Ethereum and other blockchains. So first, I'd like to talk about creative constraints. Now, when I was in college, I studied fine art and computer science and math, and I found that they often related. So here's an example of a woodblock I was working on in Japan, and I'm trying to make a picture of a train, but in order to make this visual picture, I have to think about color separations, and I have to think about technical issues. So I always found the two that like science and art really went well together. And here's the finished image. There's several different layers, but again, there's this problem solving that goes into making the end result. So sometimes in coding and in life, we encounter different obstacles. Maybe our hero here can't get through this door, but sometimes if we take a step back and get some perspective, we might find another way through. So how does this have to do with solidity? Well, solidity is one of the more unique languages I've worked with, and I'm no expert in the language, but I find it really fun that, well, I found it challenging at first, but then I thought, hey, these challenges are actually jumping off points for creative thinking. So I wanted to highlight some things that I think are interesting about solidity from language features to things people have built on top of solidity, and these are just inspiration points. So very popular lately is ERC721 tokens or NFTs, non-fungible tokens, which are great for collectibles. A real-world analogy would be the vinyl figurines that you can see in Japan in stores like Mandarake, and these can be very valuable. Some of these are go for $500 US. So people have built all sorts of creative things using ERC721 from axi-infinities, little creatures to block cities, to even real-world mashups, like this Austrian postal service stamp that's issued on Ethereum and CryptoKaiju, which combines NFC and vinyl figurines with blockchain collectibles. One of my favorite projects is by Larva Labs. It's called Autoglyphs, and these are unique artworks that are ERC721 tokens. Each artwork is generated. There's an addition of 512 pieces, and unfortunately they're all sold out, but you can still check out the code. And one of the really novel things about this project is all the code to make the image is written in Solidity. So I've got a little snippet of some of the code here. You can see that we're drawing, yeah, and placing different characters to make these kind of neat symmetric images. One of the first personal dApps that I wrote was kind of, well, it was completely a joke, but I wanted to do something to make my co-workers laugh and I took something common in Japan, which is overpriced fruit. Yes, they can go up to 27,000 US dollars, but it's more likely at a grocery store you'd see melons from 20 to 100 dollars. And I thought it would be funny to make a token backed by fruit. And in order to do that, I used the timestamp feature of Solidity language. Yeah, as far as I knew when I did this in 2008, I hadn't seen any other projects that were doing expiring ERC720 tokens. But yeah, so basically there's a date when you plant your fruit and the contract records that and then there's a certain window which the fruit should be ready. So now keyword is useful in Solidity but it's a word of caution. Miners can make small manipulations. So it's good to have the window not too small in case there's cheating. And I have the source code for this on my GitHub page if you're curious. Here's an example of the internal transfer function for the ERC720 token. Notice that we require that it's not expired, that an internal check is expired is checking against the timestamp. And so basically when the melon rots we can't transfer it. Hash functions or one-way functions can be used to kind of mask information or condense it. Another game and DAP that I built was a blockchain stamp rally. What's a stamp rally? It's a treasure hunt that's popular in Japan. Often they're connected with train stations. People will travel on a rail network to different train stations and get different physical stamps. And you can kind of collect these in a book and get a prize. I thought it would be fun to do this virtual as a virtual thing. And it's even more relevant today when many of us are trying to stay at home. Instead of going to a place, maybe you could enter a passphrase or enter the lat-lawn in some sort of virtual world like Decentraland. So here's an example of the Web3 front end that I built. It has the circle where the stamp would go. And then if you enter the correct passphrase you get a cute little image. The next feature I want to show an example that was playing Axie Infinity's Blood Moon Rising the other day and noticing that they've updated their DAP a lot. It's pretty cute. But one thing, the DAP is really interactive and it's fast paced, which is great for games. So for a user experience for a game, you wouldn't want to constantly be signing transactions. Can you imagine if you just had pop-up, pop-up and you have to spend gas? That would kind of interrupt with the flow of the game. So some developers use summary transactions where you periodically will sync things to the Ethereum blockchain, but you don't have to always be doing that because it might interrupt with the flow. Now it's a little tricky to tell what's going on under the hood with Axie Infinity because not all of their source is public, but from what I've read, they're using a side chain built on the Luma SDK and I believe the side chain is called Zombie Chain and then they sync it to the Ethereum network. So I was able to look at this on ether scan and you can decompile the byte code, but it's a bit, well, there's a little more sleuthing to be done. Anyway, there's clearly these points where you're syncing with the Ethereum blockchain but the actual desktop app is really snappy and unless you really knew, you wouldn't necessarily notice that it's a blockchain game, it just feels like a game. And here's another picture of it. We may be familiar with burning and solidity as far as sending a lot of ERC 20 contracts will have a burn function that you can send your tokens to the zero address and relinquish control of them and that could certainly be done with any other crypto asset. For example, some of the older AXIE Infinity code on their GitHub page is calling a burn function inside of when they're retiring AXIE, I guess taking it out of gameplay, they're burning it. Now here's the feature where I'm gonna use the catch phrase that this is gonna change gaming forever. So yeah, here it is. I think this is one of the most exciting things is layering and interoperability. Because blockchain is public and because it's shared, we can interact with it and it's kind of out there for anyone to use. And this can really result in some wonderful mashups. For example, crypto zombies is this solidity tutorial from the Loom Network, I'm sure most of you have heard of. They actually feed on a crypto kitty DNA. And that's just kind of fun and whimsical. Another example using crypto kitties is a project called Kitty Hats. Unfortunately, the Google Chrome extension no longer works, but you can still see the source code and some fun pictures. And this is an ERC-20 token that's layered on the ERC-721 collectibles. And you spend the token to apply the hat, bow tie, Apple watch or monocle to your kitty. And then interoperability is the idea that an item can be used in more than one context. So a lot of NFTs work in different realms. So here's a crypto kitty that is combined with my theorem playing card. And then over on the right hand side, I'm showing a scene from Decentraland and it's featuring Axi Infinity characters. And I believe they plug in with a lot of NFTs. So yeah, basically your smart contracts can work together, it's super cool. The final part of my talk is a brief exercise. We did a longer form of this talk at DevCon 5 in Osaka last year. And we had 20 minutes and we did this breakout session with cards and people got to brainstorm ideas. And that was really fun. Now, this is a virtual conference. So the next best thing I can do is show you a software version of the game. So I wrote it quickly in Solidity. The brainstorming activity and I'd like to show it to you. But first let me explain how it works. There's three characteristics of games. This is making this up, but there's a type of game. Is it a board game? Is it a role playing game? Is it a God game where there's some personality controlling the universe? What are the themes of the game? Like what is the world it's set in or the time period and who are the characters? And then what's the novel feature of Solidity that's our starting point for creativity? So here's an example. Let's say the game is a racing game. The themes are post-apocalyptic and our characters are ducks and the feature of Solidity we're gonna use is burning. So if the duck loses the race, maybe it gets burned. And, you know, cool name for that might be Mad Quacks too, the pond warrior, where ducks are just fighting in some pretty desert future. Another game could be a role playing game where we use baking and Japanese mascots and then we use layering or interoperability. Let's say it's like a Nintendo Switch type Japanese mascot Bake Off and then the underlying tokens, each cookie is a different NFT that can be traded in another game. Why not? So I'm gonna use the front end. I'm gonna show a demo of this. This is the product that we built at CurveGrid. It's called Multiverse. Basically it's an API and UI over your smart contract. So I wrote this smart contract, the DAP idea generator and we're gonna interact with it. So here we have, you know, the name, the address here. I've deployed it on Rinkabee. We've got some of the read-only functions of our Solidity code. We've got events that have been emitted and then we can interact with this contract. Let's see. I'm gonna just click send method and okay, great. So MetaMask is gonna ask me to sign the transaction and we'll let it go for a moment and see what our new idea is. Okay, apparently it would be a role-playing game with snake people, fashion and burning. So that's the idea. Generate another one and see what we get. Wait for it to be mined. See some of the earlier ideas I generated today should include a addictive click-to-win scheme using romance, pizza and multi-sig wallet. So I think you win if you and your lover buy a bunch of pizzas. Science fiction, Wild West using voting and a role-playing game. Yeah, so that's the very short version, the lightning talk version of my game. If you'd like to try it out, the contract is uploaded on Riccabee and I'll share a link to these slides in the Gitter Chat. You can try Multibass, our project for free. It's free to use on Riccabee and Robston Networks and that's at www.curvegrid.com and the source code is on my personal GitHub page for the DAP idea generator. Thanks for listening to my talk and let me know if you have any questions. Thanks so much, Anne. That was a fun talk and introduction and I learned so many new cool projects that I didn't know before, especially Autoglyphs. I don't know how I couldn't know this before. So beautiful. All right, if you have a question for Anne, we still have a couple of minutes left before the next talk. So either shoot it in the Gitter Chat or raise your hand here. Yeah, today I didn't mention yet. There's a raise your hand feature in Jitsi if you are in the video conference. You can raise your hand and then I see that you would like to speak. No questions so far in the room and nothing here. Yeah, then I have a question. What is your favorite creativity, solidity project of all of those? I mean, I liked Lava Labs a lot just because it was completely on chain. And with all of them, there's always a risk of the ones that are sort of hybrids of like, oh, well, what if they lose, how do we make the artwork for the school collectible? Like, what if that server gets lost? So I liked that it was like completely blockchain. I'm a little sad that they're sold out and I didn't get one, but that's I guess what makes it special. And then I think second favorite, I like the Axis because I think they're really cute. So yeah. Yeah.