chainlink randomUsing Chainlink services in your Web or Mobile Game - Chainlink Spring 2023 Hackathon

Festa de nerd com ‘open de c digos’; veja onde assistir ,2 days ago  A rede Ethereum ETH vai passar por uma grande atualiza o prevista para acontecer nesta quarta-feira 12, o Shanghai Fork. O token negociado acima de US$ 1.900 e, conforme analistas, um dos fatores que est puxando o Cardano vs. Polkadot vs. Solana: Which is best? - Idea Usher Cardano Vs. Polkadot The Cardano blockchain is known for offering its high level of decentralization, while Polkadot is known for offering interoperability by allowing developers to connect multiple blockchains on the same platform. Polkadot has great transaction speed, and low latency while Cardano has economical transaction fees. Cardano Vs. chainlink random Using Chainlink services in your Web or Mobile Game - Chainlink Spring 2023 Hackathon
chainlink random Ethereum Algorithm Explained - Mycryptopedia The Ethereum... Using Chainlink services in your Web or Mobile Game - Chainlink Spring 2023 Hackathon
alrighty I think were live let me double check the YouTube real quick we are fantastic whats up good morning everybody GM good time of day wherever you are Im Richard one of the developer Advocates here at chain link labs and this ones gonna be a bit different than the other ones Ive done during this hackathon if youve caught those Im gonna keep things a bit more uh laid back unplanned talking about adding web3 chain link stuff to your existing projects when it comes to things like games or mobile apps or web 2 apps in general Ive got an example to walk through with yall something I did for a project a while back and going from there and just planning on answering questions so if youre here in the chat like congratulations most of this is going to be left up for time for yall to just ask questions how to do things thoughts on things maybe we do some brainstorming planning together so in the chat let me know where youre from where youre tuning in from so Im kind of get an idea of whats going on and uh yeah Ill give it just another minute or two for people to gather and then well get started Asheville North Carolina nice Im in Texas New York City oh man we got the USA crew today India there we go some Global representation I love it normally its like all over the world and hardly ever see anybody from the U.S so you know its kind of backwards today I guess but yeah thats awesome cool so if you have questions thoughts uh stuff like that as we are going through like pop into the chat I will do my best I am by no means a streamer so you know Ill do my best to uh keep up with the chat and everything like that but lets dive in so let me share my screen and well talk through something I put together a while ago entire screen so when it comes to games and stuff one of the easiest probably simplest games out there is Flappy Bird uh and a while back I needed to make a game for a demo once I start with lab bird I personally love svelte when it comes to web development I just like how easy and straightforward it is to understand as I found this great little demo right a tutorial to go through how to make Slappy Flappy Bird in spelled man its hard to talk this morning so walk me through everything and we came up with that and let me see here so we had this basic game right and it looks okay now weve got our little little dude here flapping away on the screen uh its a little a little square hes got some bars but its basically Flappy Bird right and I thought to myself how can I make this you know more web 3 enabled use some Chain Link services what could I do so start kind of brainstorming and I thought okay so what if your score was stored on chain thatd be cool what if we actually stored that score in an nft thatd be even better right so then you have some way to like actually prove that you had that score and you get something from it what if the nft changed over time like as youve got a higher score youve got a different nft what if you use that nft image to actually be the character that you were playing as like all these things you know started brainstorming all this and so with all that you know theres a lot of changes that would be made to this project so whats what does it look like where did I start well I started with using um I believe it was which one was it Dolly I think to make some assets so using Dolly you know I made some assets like a little bird to Flat I thought Okay so weve got a bird but how should it start like when youre a new player well we started as an egg right and so using Dolly because I am not a graphics designer nor a pixel art person I did that and I said you know final mode were gonna need like an eagle with a crown and Dolly came up with an eagle with a crown forming and we were good there Ive stored all these things on ipfs so why did I put them on ipfs well ibfs is decentralized storage right so itll always be there and you know theyre not going to change when theyre there because you get this unique hash for all the files that you upload I did that using pinata which is just a service like a gateway to access ipfs so Ive created a pinata account uploaded some stuff there for my images and I create a couple other images with dolly for the background but thats kind of where I started right it started with the like the the basic piece because then you know I could replace this Square with that bird and that makes it more interesting and then I started thinking about okay how do I actually build this into a contract for for the purposes of storing score and the image and all that so lets take a look at that oops looks like accidentally closed down the vs code I had one second so if we look at the base code whats up good morning everybody looking BS code here I took a basic uh ERC 721 contract where did I get that from well I went and got that from open Zeppelin so open Zeppelin if youre not familiar is like the standard when it comes to contracts and they have this amazing wizard right here where you can basically generate a ERC 721 contract pretty straightforward you can name it if you have like a URI for the images you can put in there but you can make it mintable burnable add that URI storage the URI storage is going to be where youre going to store the information for the actual nfts the information about it and this gives you you know like the basic contract you can copy this out so youve got you know your mint functionality your token URI here and well take a look at this and the better way to do this because setting and updating the URI uh I dont know its something that isnt necessarily Apparent at first one of the better ways to do it someone to open Zeppelin got that ERC 721 contract and youll notice like this contract looks nothing like that contract right the reason is because I also went to chain link stocks and got some stuff for vrf now as I was looking at that game right we have Flappy Bird we havent flapping on screen I thought okay so we could do something with vrf what could we do we could maybe change the color of the bird like when you first mint your nft based on brf but that didnt seem very interesting and I thought it might be more interesting to actually just have like a score multiplier based on vrf so we could multiply our score based on you know a vrf thing and maybe just have that change like every couple minutes using automation and I thought if youre like being competitive about this game having a score multiplier that changes on like a five minute interval is a pretty terrible thing because then youd like be wanting to check back every couple minutes but uh to see you know is it the super high multiplier yet and so I can play and like actually get the ridiculous high score so I combined like those three things right so an ERC 721 contract for the nft uh a the vrf contracts and then using automation so if you look at this now its going to look a lot like the vrf example so lets go take a look at that so we had the docs dot chain dot link and we head on down to vrf and look at getting a random number theyll walk you through everything you need here as far as like setting up subscriptions creating that contract so if we actually open this contract example in remix youll see now like this is starting to look a little bit more like what we have over there right we have our our key hash information you know weve got our key hash so I I literally used what I consider the most powerful tool in any developers Arsenal copy paste and started from there so I set up this contract by combining those two other contracts I also had to do some mapping here because weve got yeah thanks for popping those links in there weve got the need to map like an address to a token ID so like when you mint it were going to need to keep track of what your token ID is because then too well need to use some things from that token ID weve got the image URL score name stuff like that as well we set this up with the basic multiplier of one we have a subscription ID from vrf so the way that vrf works is you create your subscription and then you need to let your subscription know about the contract but when you actually deploy your contract you need to let know the subscription ID so basically you have to kind of set up both so they can talk to each other thats how you like authenticate your contract in order to use vrf we accept a couple events uh score changed we set up a another mapping for the nft owner to the Token ID weve got our key hash here with vrf the way that it works is you reach out to the vrf coordinator contract and thats one event and it goes off and generates that random number for you then its going to reach back into your contract and actually run a function within your contract which well see here in a moment when that happens theres going to be a callback gas limit as well as the gas Lane that you want to use like so what youre willing to pay for a gas price if you look at the documentation here it can explain that like normally on the test Nets theres just the one gas line but when it comes to maintenance therell be multiple so if you want your transactions to run faster you can put them in a higher gas line of course that would cost more we ever call that gas limits thats how much gas can be spent when it comes back in this example were just updating that multiplier so its a very small gas limit you can run into problems when it comes to having a gas limit that is too high or youre having a gas cost that is higher than your gas limit right so if youre doing a lot of stuff in that function when you call back in that can be an issue for sure so just keep that in mind so we have our requested confirmation this time we block confirmations go by before we get our random words back random words random numbers and then we have the number of random values that were getting back which is one we set up our contract here with the Constructor you know let it know that consumer uh coordinator the brf coordinators address and then we set up our contract right we set the description ID we increment our token counter to one this is where normally nfts start at zero I found that when I was creating this that having it start at one was a little easier to get that information into the actual game maybe I did something wrong somewhere else just a weird little auditing have you ever mint function where we actually mint the players nft right so maybe nows a good time to see like what this actually looks like when we get closer to being done with it so we have this new like flap on chain thing we attach our wallet here maybe oh I stopped this one let me start this back up uh what we got going on now oh man every time I do that does it bother anybody that little fox watches you type your password I dont know it bothers me uh so when we get there you know like this here is my actual nft you can see it has my previous high score up here in the top and I apologize if its tiny only make it bigger so we can see as my previous high score it has a current score of multiplier right I could reset this nft back to its egg state or you know I can just play the game and flap away all right my little bird and its pretty cool I also use Dolly to generate the background so like you know using the using the computers to do all the work for me so I could view this nft and we can actually see it on openc we can see you know our high score here a little bit about it right so weve got that NFD created so its a big step up right from our original Flappy Bird game here but the mechanics behind it are the same so we meant that nft we have our update score function this is going to be like when we finish that game its going to call this function to actually update that score you can do that here let me reset the nft real quick back to the first state well give it a second it may not change immediately it takes a second to uh change sometimes just depends on how fast the Networks going yeah its pending when this resets though well see theres another button here if you will that will let you actually update your nft because its a change to the blockchain right so were going to actually confirm that with metamask uh you can see now okay so we switch back to egg right and so my score is one and so its a new high score so I can update my nft and I can save that score as my current score on chain so thats what update score does and then based on that its going to set some things for that actual value now Im setting all these things right Im setting the name which you can see here theres like high score achiever regular player new player Im setting the image URL for that actual nft ID the reason Im doing that here is because when we look at the token URI if you remember in the open Zeppelin contract where to go back here this token UI returns like the token URI for the token ID and like when I first started messing with nfds the way that I saw to update this would have been to actually update the token URI for each nft when it changed which that takes a lot of gas and if youre doing that fairly often thats like no good so what you can do is you can override the token URI function and you can actually have it come back and create that token URI Json object right here and whats great is its a view function right so it doesnt cost gas if youre just calling it like off the blockchain so were setting things like the name and the image URL and then were using those to inform this function what the actual Json object is coming back which I dont know to me that was huge it looks like in the chat too theres somebody who is offering to be a back-end developer you know just hit him up hes looking for a team for the hackathon always good to have another teammate so we return that token URI we get all the information thats what lets you have you know like your name your description that URL for the image any attributes here were just using the score for that ID we also have the request new multiplier function now what this does this is what wed call with something like automation so to request that new multiplier this will be request to vrf to get a new value back you can name the function that calls vrf that calls request random words anything you want it is important though if youre using something like brf or if youre using brf thats you have to fill random words because thats going to be the function that its looking to call back to when it actually has those random values so here you can see Im just doing a multiplier and uh doing it on July 10 to get that value between 1 and 10. and then we have our burn functionality so this is the basic contract that powers the nft right so this contract is whats giving us these nfts and I think too if we refresh this one we should see here since I reset it its no longer the eagle oh no its uh the bird because I saved my high score and its more than zero so our actual nft is changing like I think thats pretty cool and its a pretty cool use case for gaming and stuff like that weve got a question what is vrf uh it stands for a verifiable Randomness function if you go to documentation here uh well go back to the docs main docs page down here at the bottom or in the middleish bottom we have vrf which is going to be getting those random numbers that are verifiable on chain got some other questions here what is the first argument of fulfill request doesnt appear to be used its like a quiz question I dont know what it is up top of my head lets take a look uh request new multiplier the key hash is the first value so that key hash thats going to be wheres the best place to show that if we look up here we set it so the key hash is going to be what the gas Lane is right so this is going to be the gas price to bump to when youre making your request so if you look here at the supported networks you can see different networks have different ones but like on the main ethereum one for example we have a 200 way 500 way and thousand way key hashes that you can do this is the gas lines youre willing to bump up to for your transaction okay so we talked about how we made this smart contract right and like we have our nft going oh so you mean the second argument sorry lets lets get this sorted out in the Callback function oh the fulfill random words the second argument I dont actually know off top my head lets go take a look at that getting a random number we opened it in remix right here so its the request ID is whats coming back so Im not using that um but that will be a way to map between the two values if you for example had um a nft if we were doing something with the nft right and we wanted like when we minted the nft we wanted to get a random value and then come back in do you request ideas how we do that so when we make our request the request random words or turn that request ID so wed map that request ID to like our nft ID and then when we came back with fulfill random words we mapped the other way right so wed map from the request ID to the nft ID and then we change things with that nft hopefully that makes sense so thats kind of how you could keep track of your request if you had multiple requests going out since in this case Im just changing the multiplier like I dont care if it gets hit like multiple times um its always changing the same value good question sir for sure okay so weve got our contract right and weve got that oops this is getting confused here here we go too much code weve got our contracts set up right and then weve got our basic spelled application here I dont know if youre familiar with spelled at all uh it is its whole different animal I really love it though because it keeps things simple um basically the way this felt works is theres like three main parts to a felt file theres a script theres like your HTML part in the middle and then there can be CSS at the bottom if you want that maybe a good example of that is bird here so we have our script tag up here weve got our HTML in the middle and then we have our CSS down below so I like it just because its simple everything is here all together but spell works by starting off with like this page at the top of routes this can be like your index essentially in here we have you know all the different Imports weve got our contract address and well use this to do the game and the wallet connection now when it comes to interfacing with wallets there are a lot of great tools out there like wallet connect is fantastic Ive just written my own very small one here that just doesnt do much other than expect you to have a mask installed and then it can connect you to Fuji and thats it for this example but its pretty basic so this would be the first thing that I had to change right I had to add some of this web 3 props heres how Im keeping track of everything I had to add my contract and I have to connect the wallet like thats step one if youre adding anything to like the web3 space so weve got this set up we connect to Fuji for this example I just use Fuji because its the Avalanche test net because for demo purposes like it runs really quick most of the time so I dont know thats why I was using it so set that up right and we connect our wallet theres not much to it other than that thats all that this does it just connects our wallet from there once your wallets connected then itll load game and we have this game typescript file here this is going to be from that example that I was using to actually create everything this is all the logic behind the game basically we look at the game dot spell here we have you know a bunch of stuff here for getting the score so we connect to the wallet that lets us actually connect to the blockchain from there we can get the token ID and then we can load the image uh the score we can also load the multiplier from the contract we convert our nft ID into a plain number because it comes back as a big number so we load up our score and then were just doing the same stuff that we were doing before right theres not much to it except for in this game like when its over then we can update our score we can run you know update nft if we click on that button we can reset our entity or if you dont have an nft you can Mint one so I added this stuff in here I know this isnt like an in-depth tutorial but I definitely thought itd be more interesting to just kind of treat this as a how do you start to add the web3 into something that already exists instead of it being like one specific tutorial so I know Im just kind of like throwing all of this at you but what questions do you have like about how this works Ive been asking some great questions already lets open GM Melody hows it going I guess while we wait for any questions come in Ill pop back over and well just kind of walk through the uh flow if you dont have an nft just kind of show like what that could look like refresh here attach the wallets make things a little smaller so we can see the whole game so I dont have an nft on the second account right so if I go to Mint nft theyll actually create the nft for me so wait for that to be created man it wasnt a tutorial but theres no questions I am doing fantastic evidently cool so its minted Ive got my little egg here right and so we can play our game Im gonna go check it out this new nft hows that see weve got a couple now pretty cool I mean if theres no questions this can just turn into you know like a a gaming stream here we can try to max out our score thats a good question so how can you prevent someone from spoofing a transaction with a high score uh thats a good question because the way I have this set up right now if you take a look at updates nft this function is just calling straight in right with like update score if we look at the actual contract itself which where did that go look at the actual contract its so update score here you can see its just you know public anyone could call it so how do we do this uh theres maybe we could limit this to a require and ensure that theres some piece of information in here that we have as like a key or something like that when were actually making the call to do that I dont know thats a good question I dont know what the best way to do that would be um but you definitely have to do some sort of key to have that ability because normally the way that I would approach this would be you know like Id require only the owner of this contract for example to make that call and we cant do that in the way this is set up right so thats a good question I I dont know I hadnt thought about that too much so yes you definitely could if you were Savvy set your score to like one million uh pretty easily thats a good question what refreshing polling rate can chain link support is it processing done on local chain link node uh so Im not sure in regards to this I think you came in late youre saying here um so when it goes to refreshing polling um I think probably the answer that youre looking for here is that things happen once per block so thats going to be dependent on what chain were talking about um so I said for example that I was using Fuji because its faster like it it goes through blocks faster than something like sepolia and so thats gonna be dependent on the actual chain between chain link polling and updating the blockchain yeah so uh I guess we take a spin here to something like data fees for example uh or well use automation right its automation checks every block if you need to run that automation and so every block that goes by it checks and then it would be the next block thats going to actually execute that update on right because its one block its checking it gets back yes I need to run it the next block it will go ahead and run it hopefully that answers your question good question man its too early I havent had enough coffee for this question about preventing transactions though Im mulling on it anybody have any ideas in the chat like how you could how you could prevent someone from spoofing a transaction with a high score the way this is set up how would you approach it curious yeah maybe we require select only the owner can update right like I dont know maybe you could uh hash the score with some sort of in the in the game itself you could have like an environmental variable setup hash that score pass that in as well and like verify that that hash is correct with a separate function in here I dont know that seems spoofable too maybe browser proof of time SSL okay thats a thats an interesting solution there yeah Im here with King though Im feeling this like I cant think of anything right now this is a good question though um for sure like that would be the hard part about gaming I wonder how other games kind of solve this problem when it comes to things like you know allowing mints and stuff like that when you like theres games out there you know when you find and then like an item like you get that nft and stuff like that I wonder how theyre handling that maybe they already have them minted and they just do the transfer event and they base that on something youre doing in game I dont know its like the old school you know like if you can read the solidity code its basically you know cheat codes you know its like idkfa if you know what that is from Doom its good times yeah cool um what other questions yall have what else we got so theres only 14 of you right now it looks like so you know like prime time to ask those questions if not I guess we can call it a call it a session here and it was booked for longer but this is a great question if T is be merged say you had a crafting feature in a game um so you definitely could do that right and the way that comes to mind I would think of that working is if you had a I dont know um iron nft in a wood nft right and you wanted to combine them to make an X or something like that you could check that you have both those types of nfts and then if you did have both those types generate a new nft to merge them um together because you need to at least burn one right so you need to get rid of one and generate that that new one you could update one and burn the other one if you wanted to do that if you didnt want to like generate a full nft I do know because I havent spent as much time as I probably should investigating ERC 1155 but its kind of a combination of erc20 which is just tokens and ERC 721 in a piece where you can have kind of both and maybe theres a better way to do that with ERC 1155 Im not sure but I think with the 721 you definitely could yes I think thats yeah thats like yeah doing that like in one transaction right so like The Craft function would take in two nfts and then burn them and generate a new one most technology be able to use cross chain like Gala games so what were looking at here um there is no cross chain component to it as far as like what I set up but fundamentally like its very basic stuff if you had a way to get them cross-chain some sort of Wormhole or something like that like you could move your tokens across chain I guess Yeah by updating one we can simply change its imagery yet so you can definitely do that right so nfts um I dont know something like mind-blowing to me when I first got into this was like when I first heard about nfts it was like oh it was like you know digital art and their static assets right they dont have to be static assets at all um Id often joke that you know like youd be really mad if you came if you bought a piece of art like a Picasso and you came home and like you know everybody jokes so my five-year-old can draw that Picasso and like your Picasso was replaced with somebodys five-year-old drawing youd be super upset right uh when it comes to nfts like if you expect them to be static and always show the same thing as like a piece of art you definitely should make sure thats how the contracts set up because like this contract for example like we saw that empty go from like the egg to the bird to the eagle back to the egg right uh so you can definitely do that you can change its not just as yeah its imagery so the token URI so in this instance were changing the URL and were also changing the score but like literally you could change everything about the token URI and return whatever you wanted you know you could return like the names now like King is the king of flap on chain whatever you want there a senior using Avalanche what networks would be best for games what features would you look for uh thats a very weighted question there when it comes to what networks its gonna it all depends theres so many trade-offs right um like I mentioned Im using Fuji right now just because for me historically its been really fast uh I also am just you know living in test net land so nothing that I do with demos and stuff like that is matters its all Monopoly money out there right um depending on what you want is going to depend on whats what network you want to use some networks are going to be more decentralized and more reliable to always be there like as long as one node is running that Networks alive right and so if you invest a lot of time into that like and you could invest in running a node and keep that Network alive and ensure it would always be there other networks are going to be more secure but slower some are going to be faster maybe a little less secure some will be a little bit of a blend of both so thats kind of a theres a hard question to answer as far as like which one would be best for games theres also the cost component right like the gas costs do matter depending on the type of game that youre doing um if you have a game where youre not doing a lot of transactions but the transactions have a lot of value associated with them you might be okay with a slower Network that has higher reliability and security if youre doing a lot of transactions and you know theyre just for things like inventory items in the game that dont necessarily have a lot of value attached to them but youre doing it a lot youre going to want that to be a faster Network right so just it all depends on what youre looking for I know its kind of like a a non-answer answer yeah D nft is dynamic nft thats what I normally talk about there these are great questions good conversation I really like it what else are yall wondering about inmate planning to make a game for their hackathon project like that would be awesome Evans gonna come back like in the hackathon submit a project and be like a big crisis for the blockchain where every single Pixel is on chain it must be blown away its like I had to create a new blockchain too just so itd run fast enough to calculate every pixel and save it all on chain we built any games using chaining functions if so how to incorporate it so I havent built any games yet um using chain link functions I how would I incorporate it um I guess Ill answer how would I right instead of how did I so chain link functions I mean it gives you anytime you would access an API in a game you could do that right so I dont know um you could have the score multiplier in this example were using vrf right maybe you could use the current weather from an API call to affect that score multiplier so like if its raining right now like thats not great for flying in right so have that change that or in this example you know like maybe you have achievements for your flapper where based on that weather you know flew in the rain flew on you know a windy day that kind of stuff you could definitely do that and have it affect things as well I mean really functions is it opens up like the entire internet to you essentially right because you can make API calls um so what all you could do with it is basically Limitless I dont know theres a ton I to do building a wellness platform to hang on thats awesome Im looking forward to seeing that how did you cover database for a game user profiles so now I didnt cover database basically Im using uh the user profiles and stats Im just using the blockchain as the database here I do know theres a project uh space and time for example that allows you to connect databases to your smart contracts so if you want to look into them I know that Ive seen some of their stuff and thats pretty cool for doing that but yeah the the database Im using is basically the blockchain for this one like tiny little nft piece here you know yeah if you got to bigger more extensive stuff you probably would want to look into some other solution for sure its a great question uh Solana when it works is a great chain yes its very fast cool not sure I understand your question here about the data we need to get the reward so with this example was set up was to basically you just get the nft for connecting and minting like theres no reward piece the I guess the reward piece could come from as you progress right uh your low character here can change so from the little egg to the little bird the eagle lets give it a second here well see if we can get this to refresh yeah so we got a little bird see that thats the only reward we have in this case is just kind of upgrading the nft itself these are all great questions I really like this conversation great for yall who are here because you actually ask questions and stuff if youre watching this later afterwards sorry you werent here what other questions youll have basically I havent really actually used the score multiplier at all but I mean King you know you could integrate it in with like some sort of uh Hardware device and then you could have you know jump on a chain and you could have to jump instead of flap I dont think that would work in real time thatd be really terrible what if your low bird could pick up potions or something like that is along how would you code that so if you wanted other things to happen like as youre going along right um so that would probably exist you need to account for that like actually in the game of logic to like spawn those potions um you could then you integrate it in with something like vrf if you want to like affect the randomness of the punch potions like what type of potion appeared um and then within the game logic itself I guess its in here like the logic in here basically accounts for like when you run into the pipes uh you could do the same type of thing for when you run into the potions when you ran into the potions then you could have a function for you know like mint potion or something like that and you can mint that potion to them the other thing that like you run into is trouble uh I found and Im sure theres a way around this I just havent thought of it is you know when when something happens like that youre going to want to make that state change on chain which means you have a gas cost Associated which means that youre going to need to confirm that in your wallet so that could be kind of a rough experience maybe you could do it at the end of the level you know like you then get all your potions that you collected during the level but from like a user experience perspective that could be rough probably with some sort of like proxy contract actually paying for it you could do that um but the actual minting piece as youre playing the game can be a little bit rough so since youre using blockchain for the profiles using an array of wallets so the way that this is working here um is this have a mapping right of the users address to their token ID so sort of but its not an array its a mapping um and so when you come in you know check for your address in the token ID yeah now Im starting to be I was excited about Kings Wellness project here but now were turning into a black mirror episode and I dont know hes going to combine it with some sort of like you know chat GPT and then itll accidentally take over a Boston Dynamics creature and its going to be bad maybe you should abort King yeah confirming transaction will be joining Im sure theres a way to get around that though I just I dont know because like obviously obviously theres projects that uh do that right like all the gaming blockchain gaming apps like they they do that for sure so theres got to be a way to do it as well as yall wonder about questions thoughts yeah man now Im like thinking you know Im gonna see kings name and in the hackathon judging Im like click connect while it goes happen to be like a knock on my door or something and a robots gonna be out there waiting for me I mean Daniel you know your app that like it takes all kinds right like boring stuff like that is super useful and great foreign I think that we uh I think it looks like most of the questions have dried up Im getting scared by this Black Mirror episode so you know might have to cut it off any other questions though before we go oh yeah see my games not perfect either because the uh the Box around the image is definitely a square around the image or rectangle around the image I didnt hit that corner yeah cool all right well if yall have questions feel free to reach out on Twitter Discord on Twitter Im at ourgotlieber its Ill post it here in the chat uh if you have any questions feel free to reach out there we have our Discord for questions about the hackathon therell be more people than just me probably people smarter funny or you know better looking hanging out in our Discord so so yeah awesome well thanks yall for tuning in um and yeah Ill see you around good luck on your projects and Im looking forward to judging them maybe a little bit scared now though Ill be honest have a good one Follow along as we show how you can integrate Chainlink trust minimized services into a traditional web or mobile game