 It was intended to be sort of a workshop, so if anyone wants to, at the, like, sort of halfway through, we'll be doing some coding if anyone wants to take out their laptop and try some stuff out. If not, no worries. But yeah. So this, the workshop overview, the introduction is just a little bit of background on MFTs, for those of you who aren't as familiar with them. A little bit of background on OpenSea. And then the second part of the presentation will be the development goal of, you know, deploying a tradeable NFT conference ticket with the sub-goals of implementing a simple ERC721 contract, viewing the tickets on a marketplace, putting them on sale, and then maybe as a take-home task, programmatically selling the tickets using something like the OpenSea SDK. So how many of you are familiar with ERC721? Okay, so the majority of the room. So this is probably just a refresher, but, you know, ERC20 represents what are called fungible assets, so currencies, and ERC721 was designed to represent unique or non-fungible digital assets. So each one was associated with a unique identifier. And the space of, or one of the reasons we're excited about non-fungible assets is we actually think that the number of currencies that individuals will use on a data basis, you know, is limited to maybe stable coins, maybe in-game currencies, things like this, but the number of digital assets that we already use on a data basis is very wide. So, you know, things like game items, things like domain names, things like event tickets, and then when you start connecting these digital assets to the real world, you have, you know, things like real estate or physical items as well that could be represented using this standard. So a little bit of history of ERC721. So in 2017, has anyone heard of crypto punks? Okay, so most people. So crypto punks was sort of the first non-fungible asset on Ethereum. There were non-fungible assets using Bitcoin counterparty, but it was sort of the first one that, you know, was the idea of a crypto collectible on Ethereum. But there was no standard around it. And what CryptoKitties did was, number one, they built a game around these assets, but they also pioneered the ERC721 standard, which was sort of refined by the Ethereum community, such that it could be leveraged by other projects. So one of those early projects was a product called Decentraland, which represented their virtual land using the ERC721 standard that was in late 2017. In early 2018, we sort of had a miniature craze around non-fungible tokens that was a lot more isolated to the early adopter tech enthusiasts relative to the craze that we saw around ICOs in the year 2020s. But there were a lot of CryptoKitty clones, like Cryptobots, Crypto Fighters, and there were also these games called hot potato games, which were kind of these games where you would buy a collectible with the attention of selling it at a higher price. So it was kind of this even more experimental period that we're going through right now with a lot of scammy projects as well. In mid-2018, we started seeing higher quality projects enter the space. So the two right there, and there were a lot, are Gods Unchained, which is a trading card game that used ERC721 to represent their assets. And then MLB Crypto, which was actually an officially licensed game from the MLB that had these Crypto collectibles associated with them. And that brings us to 2019, where actually it's less of a well-known space in the Crypto sphere, but there's actually quite a lot of activity happening in the NFT space right now. So Formula One recently auctioned off some cars using our marketplace, actually. There's a couple Japanese games that are becoming really popular. There's a space game that is kind of like Eve Online, if anyone's played that. And then there are starting to be assets that are not in just collectibles and gaming. So ENS is one of those that is using the ERC721 standard to allow their names to be tradable. So one question one might ask is, like, why is gaming kind of the leader here? So why is this an interesting fit for gaming? Number one, I think gaming is often like a digital, sort of a playground for new technology. We saw this with the mobile phone, we saw this with the early internet. But the shift in gaming that folks are excited about is this idea that as a game developer, you sort of manage every piece of your economy. You manage the supply of your items, you usually don't allow other items to be imported into your game. There's nothing really exported from the game. It's sort of this highly controlled isolationist economy. And what's exciting is that with blockchains and digital ownership, you could have an open economy where, you know, you could export things from the game. You could trade them on open marketplaces. You could do all of these interesting things. So this is kind of the shift that people are excited about in the gaming community. So a little background on OpenSea. So OpenSea is a marketplace for all of these items. So starting with the year 2721, but we recently did add support for a new standard called the 1155. We have around 700,000 monthly volume. So, you know, on the lower side of decentralized exchanges, but, you know, this is volume that people, this is actual unique digital assets that are being traded. It's not just tokens, which there is a lot of wash traded for. We also provide an API. So this is more of a convenience for wallets that are trying to show ERC 721 items. So this is used by Coinbase wallet, Trustwallet, Opera, and maybe 20 other different wallets all in these areas. And then we partner with a lot of games to build customized white-labeled marketplaces. So this is kind of what OpenSea looks like. The moment you have an ERC 721 item, you can put it on sale. It's kind of like eBay. Trades are wallet to wallet. So they never leave your account. They're never escrowed. And we also provide a lot of the functionality that eBay provides for digital assets. So this is the Formula One car. You can see it was actually last sold for 450 Ether. I think this is a record sale in the NFT community. And basically we provide an interface for allowing people to do eBay-style auctions for these items. So if you were to build your own marketplace on OpenSea, essentially what you get out of the box is all of those functionality that's built into the OpenSea website. Every single OpenSea feature you can customize it. And actually I'll talk about some of these other features. So this is what it looks like for this game, Crypto Space Commanders. You have this browsable view of your items. You can add rich metadata to them to kind of control how they're displayed on the marketplace. And then the most important element of this model is that we allow the developer of an NFT to take a cut of every secondary sale on their marketplace. So our model right now is transaction fee-based that might change in the future. But we think that there should be an incentive for developers to promote their marketplace. We also provide a toolkit for, which we'll talk a little bit about in the workshop, a piece for programmatically creating marketplaces. So this is a marketplace created by Ethereum, which is a trading card game. And you can see that the marketplace that they've created and the OpenSea marketplace are actually synchronized such that every sale or every auction that happens on their marketplace also happens on OpenSea that shares the same contracts and the same order books. So a couple examples of interesting NFT projects to kind of make some of this a little more concrete. So this is a project called CryptoVoxels. Who here has heard of CryptoVoxels? Okay, so not that many people. So CryptoVoxels is a virtual world where the land is represented as ERC721 NFTs. And it actually just started as one developer and he just started selling this virtual land. He sold at a pretty low price. And when you own this land, it's kind of like Minecraft so you could build things on top of it. So the other interesting thing the developer did was he allowed you to pull in your assets into this virtual world. So this is a CryptoKitties museum inside of CryptoVoxels where you can actually go and purchase these CryptoKitties inside of the virtual world. So I'll do a quick demo. So one interesting thing that has happened is there are now folks who are curators of digital collectibles. And they have started creating galleries in CryptoVoxels to explore these artworks. So this is a gallery from someone who basically thinks of themselves as a digital art curator and has sort of created this museum. Another interesting NFT project was CryptoStamp. So CryptoStamp is an interesting one because it was actually coupled to a physical stamp. So the Austrian postal service basically created this line of collectible stamps where if you purchase one you would not only get a real usable stamp. You know a lot of people probably don't use those these days but you would get a stamp. And then you'd also get a CryptoCollectible that you could trade on an open marketplace. And this was kind of an interesting way to engage an existing community of stamp collectors in digital assets. And we think we'll see a lot of that kind of tethering these virtual assets to a real life physical asset. And then of course the most recent one is the ENS project. So ENS is a name system for Ethereum so you can think of it kind of like .coms. And right now these assets are tradable as ERC721s. Most recently we collaborated with the ENS team on doing the auctions for their short name names. So these were basically names like set.eath that were reserved for an auction system that is actually currently taking place right now. Alright so I guess any questions about NFTs or ERC721 before I hop into the workshop part? Is there a conference about NFTs? NFTs.nyc. February? February? Yep. What's the growth comment you've seen? So the initial spike in usage of NFTs was cryptocurrencies. And you probably remember these cats selling for like $50,000 each. And nothing has risen to that level of market volume. But I think that was to some extent an anomaly. In terms of market volume growth it's sort of slow but steady linear growth at the moment. So we're seeing high growth in the number of projects that enter the space. We're seeing sort of gradual growth in the number of users that are trying them out. So it's a lot of the same early adopter type folks who are kind of trying these out. And you know there's a variety of reasons. That's the case. Usability, scalability, all of those. Is it gaming or is it? Yeah it's all in gaming pretty much. Is that art? Oh the art. It's also interesting but still pretty small. I think like for art the biggest thing is having a place to display the art. So projects like Cryptovoxels and Decentralion kind of add that utility to art. But there are a number of crypto artists who have sold works for five to ten ETH because they have such a solid reputation in space. So it is starting to be interesting. Are there tools for integrating composable NFTs of like trading power assets? Yeah so there was a standard called ERC998 that did that. I'm not aware of any easy to use tools that allow you to like fund... Well so we have bundles which basically allow you to sell a bunch of NFTs at the same time but that's a little bit different. I don't know of any websites at the moment that are making it really easy to like compose NFTs together. But it would be an interesting project. What do you think would happen if we can see like most of the growth? Before we see growth. Before we see high growth like volume transaction on this open market. Yeah that's like a common question I think for everyone. You know it's passed it like nearly every panel. Yeah for NFTs I think maybe a couple different axes. So one is quality of the games which is steadily growing but the development time of the games actually typically pretty long. So I think the quality of the experiences have to be high enough for people to want to use them. And right now they're just getting there but they're not quite there. And then just usability of the network in general. So things you know better wallets, you know potentially better blockchains for people to build these assets on. I think the main thing preventing them is well I guess a couple things. One is I think it's kind of tricky to for an existing game to just move their assets to the blockchain. Especially if it was a really big game and they wanted the same user experience. You know they could hide away all the Ethereum stuff but then you know they're just basically using a really expensive database for their game. So I think it I think the games that are most effective have to be new games. And those new games suffer from the like onboarding experience of getting Ethereum. Some hide it but then you know they use everything and then they're kind of competing with every other game. But if they leverage the blockchain in an interesting way then you know there are some like really interesting user benefits like trading on open market places using them in natural worlds. Are we seeing any adoption from virtual reality mainstays or augmented reality producers? Not just the games but maybe even like interest from the manufacturers and the headsets and such. I'm not sure. Other than the virtual reality projects I'm not sure. How do you think about like kind of global scarcity of these NFTs? It seems to me like one property that they have is that they're unique individually but kind of collectively they dilute each other because unlike collectibles in the real world where there's this kind of like minimal cost of production. You know it's really easy for lots of people to start creating these and they all just end up kind of diluting each other. So where do you think the value is around the utility of the NFT? Because you can't kind of think that or are there brands like that one? I think yeah utility and provenance and maybe some other things but so utility of the NFT in a game right? So you know if you can, the statement is like Fortnite right? If you can wear a legendary or a well-known skin that's cool and you can show it off. So that's sort of utility and then provenance is like oh this was the officially endorsed Disney collectible and hence and like Disney has said this is a smart contract we're using. There will only be this number of them. I think that kind of with the Austrian Postal Service right? Not a huge brand but you know they basically said this is the official crypto stamp for the Austrian Postal Service. There's only five red stamps hence those might be valuable for collectors. Have you seen anyone trying to create an important scarcity to be able to burn some other asset? Yeah so there have been a lot of like swap your crypto kitty or burn your crypto kitty to receive crypto. I think it was like crypto strikers that did this. So that's a really good point. I think a very interesting way to engage the existing community is to leverage like the existing set of NFTs right? So go to crypto kitty and say oh now they're useful in this other game or you can trade them in for our game asset that's better. Yeah and then there's also like NFT air drops now so people will like air drop a promotional NFT in your account. So there's like tons of things you could do. It's pretty interesting. Have you seen anybody kind of use NFTs as a Christian based system? I have this asset so therefore I have the rights to do this. Yeah so there's the unlock protocol which is basically sort of a subscription service. That you buy an NFT and then you get access to content or something like that. So that's going to what they're going after is they're talking to publishers and saying it exists for that. Also a DevCon ticket sold on an open sea for 70th the other day. So tickets they're kind of a permissioning system right? So there's stuff like that. Alright so now digging into the nitty gritty. So if anyone has their laptop they can follow along if not just watch me do stuff. So this is the ERC721 interface. It's basically a lot like ERC20 except that the key method is sort of this owner of token ID. So the token ID you can think of as for example like an individual crypto kitty would have a token ID of something. And to check who owns that crypto kitty you call owner of. And then maybe some of you are familiar with the idea of approve in ERC20. But basically this is a way for an individual to say I approve this account to transfer my item. So for exchanges this is very useful because you can approve open sea or actually a proxy. But that's kind of a detail to transfer your items in the event of a sale so that they don't have to actually leave your wallet while they're on sale. And then this transfer from is obviously a really key one. This is basically the ability to transfer a crypto kitty or what have you from an address to another address. Then the kind of interesting very interesting part of ERC721 is you know you have these token IDs. But how do you actually represent you know what a crypto kitty is which is you know has a name. It has an image as a description has maybe some traits. So where does that live. And at the moment all that lives off chain. I don't think there's handling of a single ERC721 that has put a lot of data on chain. There are 721s that put some data on chain but most have some off chain component. So that's where this token URI comes into play. So token URI is basically a way for the ERC721 developer to say this is where you can grab all the data for my item. So this takes in a token ID and returns a URL. So here's an example of some data that would be returned from the URL when you hit it that represents the asset. So this is actually one of our test assets called an OpenSea creature. And you can see it has a description, an image, a name, an external URL. And these all map to this item. So you can see the image, this view on OpenSea creature is basically the external URL that you would kind of click into. And then it has these properties which this is kind of an addition that OpenSea made up to allow you to add a little more rich data to your items. But what's cool is that as long as you implement the token URI and you've conformed to the ERC721 standard, you kind of get it all for free. And as you can see, this is automatically tradable, all that stuff, because it is the ERC721. And then the other interesting thing is this is also what is allowing for limited degrees of interoperability. So this is that same OpenSea creature inside of that CryptoBox rules game that I was mentioning, right? So now because that metadata is standardized, CryptoBox rules or whatever site can go and pull it or use the OpenSea API, which makes it a little more convenient to grab this asset and display it in the virtual world. And EtherScan as well has actually recently just started listing all the inventory of ERC721, which I think is an interesting sign that these are sort of starting to achieve the same level of significance as ERC20, which has had a nice EtherScan interface for a while. Did CryptoBox need any kind of permission or anything to drive and display it? Is there any kind of control over when you look at it? And they don't have any. So they did not need permission to check who the owner of that NFT is. They didn't need permission to call the API to get the data. In CryptoBox's case, they use our API as a kind of convenience thing. We kind of aggregate some data nicely. But yeah, no, they don't need any permission. That metadata can be changed by one of these URIs. So we'll see if I get to the coding part of this that it can be changed depending on where it's hosted. So if you host it on an HTTP server, you can certainly change it. There's not really a good standard around the metadata is changing and then everything updating kind of just like whole. But if you post it on some decentralized, a mutual file storage thing, you know, obviously. Yep. I had a question about the mechanism used to improve the... The last thing to do for a bit will get sold. Are you going to be able to transfer it? Yeah, so you could... Well, so before it gets sold, can you transfer it? Can it be possible for something to be sold? Oh, yeah. So like if I put a sale up on OpenSea, for example, that says I'm going to sell this, but then I transfer it somewhere else, then that sale will be kind of canceled by us or like we'll keep track of like is a sale valid. And then there's the... Maybe the more of an attack is like transferring it right before it gets bought. So in that case, like the sale transaction would fail, right? Because it would try to transfer something that no longer is in that account. So it's an atomic swap, right? So there's no sort of scenario where like in the middle of the sale transaction, something gets transferred because this is like... Yeah. So did the token metadata... Yeah, so if anyone wants to try out deploying an ERC721 contract, I made a starter repo that works our basic like demo repo. For folks who are non-technical, we also have a... There's plenty... There's tons of ways to mint NFTs, which I encourage you to recommend or encourage you to try out. So one example here is our Rinkabee instance of OpenSea, which is basically kind of a playground for creating NFTs. You can go in our storefront manager and like, you know, actually deploy any contract and then mint NFTs. There's also Mint Base, I think I saw it in the video. Mint Base, which is a much better tool for deploying... I've got to work on here, I'll see you. Yeah, and Mint Base IO is right there. Down, forward, two, three, yep. Yeah, so Mint Base is like a much more feature-rich way of deploying interesting NFTs. Our storefront manager just like kind of... This is one that I was deploying earlier this morning, but I'm pretending that these are the tickets for NFT NYC. And for the non-technical folks, you can go to the develop menu, storefront manager, and sort of go through the process with Metabask for deploying a ERC721 with like an image and an image description. But if you were... So what's interesting about this is, you know, you can deploy a ERC721 using any of these tools, and they're all like compatible with each other. So it doesn't really matter, you know, if you use OpenSea to deploy it, if you use Mint Base or if you do it yourself. And for the developers, I'll go into a little bit of code to show what this would actually look like. So this is... Can you pull it out? Yeah. So this is an example of a tradeable ERC721 token. A tradeable ERC721 token doesn't think of it as anything really special. We just added some utility functions. Could you zoom in? Oh, sorry. So also my, like, linter is not very happy. So, you know, just a simple way to Mint. If you go to our documentation, you'll also see some special stuff we do with pre-approving tokens for trading. But basically it's just an ERC721 inherited from the Open Zeppelin ERC721 full, which has all sorts of nice things associated with it. It has, like, the token URI, it has, like, easy ways to Mint, easy ways to burn, all of that stuff. So it's now... I mean, it's very simple to deploy a 721, even if you're not a coder. But even as a coder, you can do it pretty easily. So I will attempt to... I won't, like, try to have everyone do it because I think we don't have enough time. But basically you could create a .env file, and that would sort of configure all the accounts that you want to use to deploy your contract. So it also sets up a infura, or you can get an infura key and inject it in there. And then if you run the Minting script, or sorry, if you run the deployment script, then in theory this will give you a new ERC721. And one cool thing is that OpenSea will actually pick up, it kind of like EtherScan, will pick up any new ERC721s that are deployed. So once we mint our first asset on this ERC721 contract, it will automatically show up on OpenSea, and you can go and trade it. So we'll wait for the contract to deploy. I can start talking about the Minting script. So here's our contract. Oh, no, sorry. The Minting script, this is kind of where the token URI immutable versus not immutable data storage becomes kind of interesting. So this Minting script I made earlier today, and it basically just uses some JSON storage site that I found. So if we go to this, I literally just created a little bit of JSON, right? So name, hello, description, hi there, and then an image. And this is really good enough for the metadata standard, technically. But to the point back there, I could go and modify this. So if you're trying to create an NFT that is immutably, has an immutable image associated with it, it's always the same name, et cetera, then you'll probably want to look into something like IPFS so that your customers can have this guarantee that their items won't be changed. Yeah, I'll let you know how it seems like most people use URLs for that. Are most readers of NFTs configured to pull the URL? Or do many of them have support for a server you might give? Yeah, so certainly we have support for IPFS. There's not that many NFT readers. Most of them use our API because in their early days, with CryptoKitties, there was actually no token URI standard, and so everyone just had their own weird API that showed data in some random way. And people still deploy URLs to 7.1 without conforming to the metadata standard. So a lot of folks use our API, which is not a very good thing. We don't want to be the central point of NFT management. Yeah, if you were building an open-source NFT, you definitely want to support something like IPFS. So yeah, so I open my other time. So we do have our ERC 7.21 contract. We can go on rinkabee.etherscan and check it out. I'm going to do that in a second. And then we could mint some items on here. So don't worry, this environment stuff is not. It's all just throw away. So I'm going to replace this address here. And then hopefully if I run the minting script, we'll mint some items with that metadata that I showed you. And after it's done that, you can view an item on OpenSea if you just use a little bit of URL wizardry by hitting slash assets, slash address, slash token ID. I think we have to wait for it to deploy. So it has minted an item. So it has minted token ID number one. And now we can go to rinkabee slash one. And hopefully it should show up. Yeah, so that's the image I used. It was called hello. And then some other interesting things you can do here are you can immediately put this on sale both through the OpenSea UI or programmatically through our SDK. You can sell it in a different token. On mainnet we support stable coins and things like that. On testnet we support this test token. You could create sort of a Dutch auction where you started at a certain price, ended at another price. You could create a private sale, eBay style auction. You could bundle it together with other NFTs and even from other contracts and things like that. So there's all these things you can immediately do with it. And you can see the history for it. So it was born a minute ago to my account. And lastly, because I think I'm running out of time, you can configure this. So you get a free storefront. So deployed a lot of contracts called creature, but assets slash creature dash 49. And you can actually edit this storefront. And what's interesting here is we use the ownable owner of the contract to permission who can edit their storefront. So if I go to edit storefront, I can add an image for the storefront and description and then my marketplace fees, which are basically whenever something sells, I'll take a cut of the sales to a payout address and then a little bit around how the items are displayed. Any last minute questions? All right, thanks so much.