{"id":"e_QOMBZS5gs","title":"Decentralized App Development | Online Workshop |","description":"This was our first online workshop on building a decentralized application hosted by our Head of Operations, Erik Trautman (  / eriktrautman  ) and Senior Software Developer, Evgeny Kuzyakov (  / ekuzyakov  )\n\n\nThe workshop was aimed at: \n\nAnyone who is curious about blockchains -- as users, investors, designers or entrepreneurs\nDevelopers who want to learn how blockchain development works and why it's an exciting frontier\nExisting blockchain developers who want to see how the next generation of blockchains will make your life as a developer (and the lives of your users) significantly better than the previous ones.\n\n\nAgenda: \n\nWe started with nontechnical and then gave everyone a chance to get hands dirty with some code.\n\nIntroduction\nWhy blockchain?\nAbout NEAR and why it's different\nDemo: How to quickly build composable decentralized applications\nInteractive: Deploy a smart contract in 30 seconds\n\n\nVisit NEAR Protocol Studio at http://near.dev\n\nFollow the latest from NEAR Protocol on, \n\nDiscord: https://near.ai/discord\nMedium: https://near.ai/medium\nTwitter: https://near.ai/twitter\nGitHub: https://near.ai/github","channel_name":"NEAR Protocol","published_at":"2019-03-08T00:00:00.000Z","thumbnail_url":"https://img.youtube.com/vi/e_QOMBZS5gs/hqdefault.jpg","transcript_text":"be able to wait we'll wait for more folks to come in but you should be able to also type in the chat window there I'll mention this couple times but if let me know if you can hear me and it gets the first thing so if you could just type something in chat I don't let me know that you can hear me and we'll be able to kick things off shortly perfect excellent so Eugene is also joining us so what I'm gonna do I'm just gonna wait for one or two more minutes and I think we can get started I definitely want to dive into some fun stuff you know it's okay if some people end up missing the beginning so I think actually a good a good starter question in chat it would I would actually love to to hear what you guys are most interested in because I mean I'll talk about this in a sec but basically I was gonna just gonna talk through some stuff and and then basically try to focus the last bit of it on mostly live coding so yeah that's that's more or less what we're looking to do here so anything that you guys are curious about you guys are interested in doing let me know that's more or less where I want to be so go for it type that in while we're waiting for some more folks to join and I believe Eugene will be joining us if not right away then certainly for the live coding cuz he's the one who's gonna be doing most of it if you want to jump ahead feel free to go to studio dot in your protocol calm and play around so what I'm gonna be doing is a little bit more of a traditional presentation that I'm gonna I'm gonna walk through some studio stuff and just point out some of the some of the features and things like that and then we'll do some live coding which will be Eugene who I'm going to make sure that knows all right so what I'm gonna do here I'm gonna start sharing my screen I'm going to kick off a presentation so let's do that look at Google Chrome sure that I think you guys should be able to see that don't see that plus my little face there we may or may not turn off all right agents the wrong side giving it all away oh no all right back to the beginning all right let's kick things off so welcome first of all we have people from all around the world actually so some folks from certainly from New York Austin Denver San Francisco would I don't actually remember all the places that we that we had posted but then some folks into our international as well so thanks a lot for joining first of all and just a quick quick touch taste of the goals for today what what I want to do is just give you a taste of what our decentralized apps and I also show off a platform that you can use to create them so part of this is about kind of building the mental models for what it actually means to build a decentralized app part of it is actually seeing it done and part of it is you know shouting things out the eugen to to build on your behalf so basically my assumptions about you or that you're roughly familiar with blockchains you may or may not have actually built stuff on them that's fine you may be a developer you're probably a developer but you may not be that's also fine you know you can follow along and play along or you can just sit back and watch it's totally up to you so as a number of you have already discovered we do have chat available so you know feel free to feel free to put things in the chat window I'll try to check that periodically and just make sure that you know we're in good shape and I'm caught up otherwise I'm just gonna kind of walk through things here so in terms of goals for today so basically what I want to do is just briefly start off by talking about just apps in general decentralized apps in general just get everyone kind of up to speed and make sure we're all on the same page then I want to do just a quick discussion about what your protocol is as a protocol that you build apps on top of and then we'll actually get into the good stuff which is live coding showing off how it actually works and things like that so if by the way I also want to plug our discord so if you're interested in joining discord it's not we're not posting this this webinar right now on discord but you know this is where our team lives this is where community live so if you're curious and you're interested just go to your dot chat super easy to remember and you'll be able to sign up for her discord Channel so Who am I I lead operations over here at near I used to lead a company called Viking education which was an online software engineering boot camp program that hit full-time and part-time programs and previously I worked and created the Odin project which is I guess probably six or seven years ago now which was an online open-source community for learning web development so I've been in education for a very long time Eugene who is sitting next to me who you guys will see shortly is a senior software engineer and he's got a long history of competitive programming gold medals or gold medal why did you all they would once you also worked at Google at Facebook so you'll hear from him you'll hear from a little bit so yeah let's just dive right in actually let me just quickly check in on the chat make sure everything looks good for you guys did you do okay we have some questions and great cool so let's just keep it going all right what are decentralized apps so just get everyone on the same page the whole idea of a decentralized app is that it runs on a whole distributed system of sort of servers rather than one it has multiple points of failure rather than one or I guess you could say it has multiple redundancy points and basically as a mental model if today's applications are mostly deployed to the cloud which the cloud is really just a bunch of commodity servers sitting in the server farm somewhere probably in Washington or somewhere with cheap power and the alternative is if you're thinking about something like a blockchain which is running in a decentralized fashion each one of those come out to be computers is more or less run by some random human around the world and that's that that's probably the easiest mental model for understanding the difference between what a centralized that looks like when it's deployed versus if you centralize that and of course a lot of the challenges on building platforms for that are how do you how do you enforce some of the things that you take for granted in you know a fully controlled data center among people who are all around the world who may or may not have good intentions and things like that luckily that's our problem not your problem all you have to do is learn how to build on top of that so one thing that is just worth checking on is just why why decentralization why should we even care and I think that there are really two ways of looking at this or two lenses of looking at it I think one is the zoomed out the abstract which a lot of ways is stronger but less easy to hold on to and so people talk about censorship resistance a lot I think there are a lot of different angles that you could look at from that one of the most tangible for you as a developer is that if you build on top of someone else's platform like for instance you can think of the case of Zynga a segment built on top of Facebook they built a an enormous business very very quickly on Facebook's platform accessing Facebook's data accessing Facebook's users and then as soon as they got to big Facebook just pulled down the hammer and then and if their whole business just got destroyed so that that happens in a million different times in a million different ways around the world on different platforms and that's one of the actually easiest most tangible ways of thinking about benefits of decentralization and not basically being tied to a specific person's platform or a specific company's platform for their data and things like that the other one is this idea of trust lessness which is that once you actually have something that's decentralized once you are operating an anti centralized way you know it allows you to change your trust model as well because you're no longer having to trust a single entity which is a single point of failure which could you know has a single honeypot that could be hacked and things like that and so it'll it changes a lot of the ways that you think about you know what what makes sense to send send money send Danis and things like that those are relatively abstract so I like to zoom in on the concrete as well and there are a lot of different ways of looking at this another another way of another way that I like to look at it which we're not really going to cover here is this idea of primitives but you kind of break it out you know one of the core ideas is self sovereignty which means that actually specifically when you're thinking about blockchain the blocks conversion of decentralization is that now you actually own everything you own the money that is tied to you you own your data and you own the assets themselves that means you own them not not you know they're not stored on some company's server somewhere at their permission and so if they blow up and it's gone forever there is also this idea of digital uniqueness which is great which is sort of this idea about if you if you understand Bitcoin the whole idea of Bitcoin what makes it amazing is that is that now a single Bitcoin is literally there's only one in the world it's a it's a digital asset that you actually can't just sort of copy and paste somewhere else and create two of cuz obviously it wouldn't work if you could just create two pieces of money and so the the innovation that they use to create Bitcoin defines this idea of digital uniqueness now we can actually deploy that into other ways we can we can we can extend that and we can do things like what crypto kiddies did with unique with these cats for instance as a crypto collectible is it's kind of just the the toy version of a very important concept which is that you could store things on the blockchain that actually represent very unique objects which is something we've never had before in the digital space and then of course on the transactional side you can actually because it's peer-to-peer you can trade these you can you can move these assets you can move them between you and another peer you can do them and so the the directness of that is actually a very important thing because normally if you're trading something digitally you have to go via a server and again there's that single point of failure there's that censorship aspect and honestly it also slows things down when you when you put a middleman in the middle and somebody's usually collecting rent so there all these reasons why it's actually really helpful that you can now transmit these assets between two things between two parties and another thing worth noting on the self sovereignty that I didn't talk about is that devices can actually be self sovereign as well in this world so you could for instance your refrigerator could actually have ownership of its own data and its own its own money and its own assets so it's just something to think about as you look forward so in terms of just starting to look into the actual behind the hood behind the scenes under the hood stuff for how do centralized apps work versus decentralized apps you're familiar with the centralized paradigm you have you have a browser that that's getting information and sending information to and from the server which is then talking to a database on the lowest level and then somehow the front end has to actually get served in the browser so you know you have the HTML the CSS and all that a lot of times those are actually hosted off to the side somewhere in in static hosting in the decentralized world you still need to display the web page so it's still kind of being served from the same front-end you know you can't actually serve it in a decentralized way but it's at this point it's not really where we want it to be the difference is really on the back end which is that your browser is typically talking directly to the blockchain itself which is running a smart contract that then is sort of interfacing with the court whether that is running on the blockchain network so that that's the key difference is that the blockchain actually operative takes over both the server which is doing compute and the database which is doing data storage and I'll peek into this a little bit deeper so I generally like to approach things in terms of key mental models so you know it's it's one of the things that you need to really just kind of keep keep in your head that's a little bit different about the way you would probably by default understand the world so therefore but I just want to cover really quickly here one is the data actually lives on the blockchain two is that while it's is basically just talking about wallets and the idea of keys and ownership the third is interfacing with servers and databases being different than interfacing with the blockchain itself and the fourth is that code is actually immutable on the blockchain as well so the first one data actually lives on the blockchain so the difference is that when you think about how data lives today it's basically it exists in a database owned by a company somewhere and that company is is the one that's basically deciding when and how that data gets modified or moved or you know what when when your number of tokens or whatever it is increases or decreases whereas in the blockchain world the data is actually stored on the chain and this chain is this sort of this public layer of data it's like it's a public database that's distributed all around the world and it's kind of this pool that's shared all around the world and effectively the data that you're talking about even though oftentimes we sort of refer to it as being yours and being in your wallet or something like that it's actually lives on it actual lives on the date on the blockchain and it's effectively tied to you via a cryptographic key and what you own is the key so it's almost like the blockchain is basically just a bunch of safes and and you own the key to one of those safes and that's basically kind of a mental model I like to use to think about that second one is while it's in keys which is actually I guess zooming into the same idea and again the idea is that this data is tied to you via a private key and if you want to actually modify or move that data you have to send a transaction and that transaction has to be signed by you and typically what actually occurs inside your wallet and your wallet is basically just a way of holding those keys oftentimes a lot serves two functions oftentimes the wallet will actually be the inner interface calling with the chain as well but so it's basically going to be when you want to do something that touches the chain you sort of an application will request permission from your wallet which will then send the sign the transaction and send it to the chain on your behalf and so that's that's that's also a key mental model is and something that's new about about working with gaps and block chains is that is that you have this idea of the wallet which has to sort of do things for the user so it kind of adds a step the wallet in some ways strangely acts almost like a server sometimes I won't get too deep into that into that model though the third one is that there are the difference in how you access the chain is is it's worth thinking about because this actually can sometimes take a little bit of time for beginners to get over the idea which is that of course when you're interfacing with a database in web 2 world is basically the server's you know you sort of make a stateless requests to a server which is then hooked in with the database in it and it runs that request and it's like a pretty basic sort of thing on the blockchain it's different because because the the chain is actually made up of all these nodes that are all spread out everywhere and they have to be synced up together and the only way to inject that you have to inject the transaction into that network into that mesh network which which basically means that in order to do that you have to talk to one of those nodes which represents the network and so that might be you running a node in your local browser or maybe you sending a request to an API that you trust which them then they themselves are running a node on that chain so just in the way that you kind of think about how you're interfacing with the chain you always have to think about where is the note that's going to be submitting those transactions on my behalf and a lot of the time that's actually occurring in the wallet so you know if you're interfacing if you're building an app that the interfaces with wallets a lot of times the wallet is the one that's kind of doing that but it is something that you do have to think about which is different than web to world the fourth one is that code is immutable and so basically the idea of that is we're so used to one of the nicest things about web 2 world is that you push code to a server and then the very next request it's running the new code so it's great I mean it's incredibly fast iterative and changeable but one of the whole points of the blockchain is that it's actually immutable is that is that you know you shouldn't the whole idea is that you shouldn't allow the developer of an application to have disproportionate control to them change a bunch of stuff on your behalf like it wouldn't it wouldn't be censorship resistance if that wasn't property so unfortunately what that means is that typically when you push code to the chain and actually you can't change it and because if people start using that code and for instance if you were to change that if they put a bunch of money into a contract you know and then you could change it that would be a problem so that is one thing that we need to we need to kind of keep in mind with with how the blockchain works as well so there are a lot of hacks and and workarounds and you know we're basically trying to trying to kind of get towards the happy middle ground of how do you make how do you make the code that you've deployed changeable up until a point and then maybe you lock it and and then people feel comfortable putting their money into a contract or something like that but you know it is important difference so in terms of what are the pieces of a decentralized app so you as a developer what you have to build well you have to build the front end that's pretty standard the key bits are actually the middle two which is you actually your front end needs to have a library which in SDK which interfaces which knows how to talk to the blockchain and interface with the smart contract which is effectively which you can consider to be your server-side code and the the smart contract is the code that actually gets run when you submit a transaction on the blockchain and so the way these chains work is every node actually is running that code on your behalf so you know you're free when a user clicks a button on the front-end it sends it runs a JavaScript method in your JavaScript library which then knows how to talk to the smart con send it send a transaction usually via the wallet to the smart contract which is then going to run sort of run on a whole bunch of nodes at the same time and you know that the chain does its magic and it changes some sort of state typically so I want to talk about actually let me let me pause for a second just in case there I'm just gonna check if not chat real quick I am going to be recording these this and well I'm at least gonna be sharing slides we'll see if the recording is actually shared so yeah well we'll see what happens there so I wanted to jump into basically like what do we do as the blockchain so there are a whole number of block chains out there you've got etherium it's kind of the Original Gangster they were the ones who've essentially figured out how do we take the Bitcoin technology and put a computer on top of it or but you know put a virtual machine on top of it and allow people to build these applications on top of it and unfortunately they're they're quite slow and they're they're kind of a sort of an obsolete technology with a wonderful community and you also have other chains like there's Tron there's a OS there are a whole bunch of ones that haven't launched yet ultimately what near is near is also a scalable developer friendly platform for building these decentralized applications which is running on a blockchain so one of the key differences here is it's designed from the beginning both to scale and to deal with usability so that means usability for you as a developer and usability for your end-users so one of the reasons why we're actually building this which i think is actually an important thing to cover really quickly is that you know this ecosystem is still super early so I don't know maybe you're here because you're sort of already deep in the ecosystem and you're curious to try out something new or maybe you're here because you're from outside the ecosystem and you're interested in you know how does it work but I mean I think everyone can really see that even though there there was this huge speculation and hype of things like that last year or the year before we're really still super super early in the technology we the only people who are really deep into this are the innovators these are the people who speak very technical languages who understand the guts of how these things work and who are willing to go through a whole bunch of crap just just to produce an application on one of these unfortunately there haven't been a lot of users some of the most popular apps on the chains have dozens of literally dozens of users and you know we'd really we haven't gotten to the point where there are more people using the chains and until that happens it's just not going to be a successful ecosystem so it's really important to figure out how do we actually bridge the gap from these incredibly technical people who are willing to do go through a lot of Hell to use these applications and to make these developers to build these applications to people who just want to make sure that works who just want to you know to like use something that they don't care if it runs on blockchain and really what it comes down to is there are two problems there are two core problems so one is the demand side the other is the supply side so on the demand side well actually maybe it's worth starting from the supply side a lot of block chains have talked about scalability and this idea that you know what happened with aetherium is there have been a few times in the history of aetherium where it runs rather slowly and so when an application on it it's very popular all of a sudden it just the whole chain just grinds to a halt nobody can do anything so there is severe scalability problems but the other side is that you only need to bother with scalability if you can actually get people using the chain and a lot of the issues that we've run into are that the existing paradigms for building applications on these chains require you to ask a lot of your users so it requires you to ask your users almost as soon as they you know I mean go through an ecosystem almost and VOS actually almost as soon as they drop into an application you have to you you confront them with you know do you have a wallet you know let's let's use your wallet oh do you have tokens in your wallet well we need to access your tokens and if you don't have any tokens you have to go to the exchange and you have to buy a bunch of tokens and you have to fill in your passport number and you have to put in your credit card and wait seven days and all this stuff right and this is I mean for usability 101 this is a pain in the ass for everyone involved so until until we begin to bridge some of those usability gaps it doesn't matter how scalable the chains that we build are because nobody's actually going to come in and use them so we need to solve actually both of those things so you know the whole point of this platform is that it's built with a mindset of usability first scalability to support that and so there are things that you have to do that you can do on the protocol level that now we know about that we didn't really have any idea about two or three years ago when these platforms started coming out which allow us to make the experience of a user using an application feel a lot more like web to world you know old world as opposed to this like you know inconvenience them at every possible corner which we're doing with web 3 world so you know on the scalability side whom uses sharding approach which is reasonably similar in spirit to what the etherium 2.0 proposal is so if you're familiar with that you know it's kind of where theorem is trying to go but it's taking them a long time and we're doing something that's that's reasonably similar spiritually or in theory and then on the usability side there are things that are focusing on end-user usability and things that are focusing on developer usability so for end-users basically can you get them to use an application so they don't have to deal with wallet stuff up front so they don't have to deal with owning tokens upfront and from a developer perspective can you actually write these smart contracts using languages that you're familiar with can you you know can you do things on behalf of your users so that you don't have to bother them every single time you want to you want to ask for permission to do things so ultimately all of this kind of ties together into you know more or less like common sense you know it's like making common sense decisions but the principle of least surprise you know it's like you as a developer should be able to look at this code and they kind of figure out what it's doing and kind of figure out how to use it and that's basically our goal so hopefully that's gonna happen tonight as far as where the platform is right now so we have our developer net released so we we have one you can download it and run it locally or you can run in our web IDE which we're going to show off and we have a hosted node that's essentially running in the cloud just as a way of sort of an endpoint that you can you can build applications against so if you can see if you can see the the animation here I mean I'll show this off but basically what this is showing is the the online IDE that we have and basically what it does is it allows you to build and deploy an app really easily so you can go there you can you can jump into the code we have templates that are already available and basically I'll show you this in a second that eugene's can go super deep but but the whole idea of this is how could how can you how can we get you to try stuff as quickly as possible how can you how can you test things break things all that as quickly as possible so we have a whole bunch of applications that people have built you know it starts with toys right so so we if you're familiar with the reddit place app we have a near place app which is sort of a collaborative you can I mean if you want to go to the URL you're welcome to play with it you know it's it's a collaborative app where you know people different people from around the world can can poke the same pixel and everybody you know can sort of create things simultaneously and that's all build with the blockchain in the backend we have a meme generator we have you know we ran a hackathon or we were one of the the prize leaders at a hackathon recently where we had some apps that that came out including one that was basically about blood donations we had another that was about saving pinky promises the blockchain because once you save something with the blockchain it's immutable so right it's like you promised and yeah and we've had something to do absolutely like that so anyways there are a lot of interesting toys that you can play with so far we have documentation available at Docs that your protocol comm but you don't care that much right now because probably you won't actually see what this stuff actually does so what I want to do is first I'll share my screen and well I am shorting my screen but I'll show off sort of the basics of what Studios doing and then turn things over to Eugene and he's gonna dive in a lot deeper and give you guys a chance to probably shout out some stuff I don't know exactly what the plan is but we'll see so the first thing that I wanted to do was actually just go over to studio so I don't I don't have anything in particular plan right here but what I want to show off is you're the guest book and I don't know I haven't cleared so basically we have these templates and the idea is that you can create and what this is is this is a smart contract plus a front end and so you know if you were doing this on your on your local environment like you wouldn't necessarily need to have your front end sitting right here but you know we're trying to make things as easily as possible so actually before I explain even what it's doing I'm just gonna run it and you know hopefully this is gonna this is gonna show you the interaction oops where am I don't kill that it's going slow well go figure so instead actually when I hit running then just hang out in here for a second so what I want to do is walk is just walk through what it looks like so so what what are all these files so well we have the guestbook so this is basically just a chat app and so what does is I can log in with my wallet so we have a hosted wallet so right now we've jumped over to wallet dot in your protocol comm and I've already signed up so if you haven't signed up you would actually be asked to input your username but I'm actually gonna authorize the app to use this to use this account and so what you guys can do if you want to do is you can literally copy this URL and you can you can go through the same flow I just paste it in the chat you can go through the same flow and you can post messages so I don't know what you guys want to post but you're welcome I don't know if I should leave this this has an unpredicted endpoint right now but this menus actually so I'll check back in on that in just a second but so so basically what are the pieces here right sit so this is an ID and what we're looking at mei'm dot TS this is your smart contract this is actually what's going to be deployed to the blockchain so what this is is this is the code that's going to be run by every node that that's in a particular chart or I guess for the simplicity you can just think of it as every note is gonna run this code at the same time so this is this is your smart contract and it's written in typescript so if you have any familiarity at all with either JavaScript or C++ I mean it's super super easy it's more or less Java Script with types and we've sort of restricted a couple of things because it has to be fully deterministic but you also don't have to care about that in the end of the day this is just code and you're probably relatively familiar with what this looks like I think the key bit is number one it's just it's basically just JavaScript number two it the object that you interface with it's this global storage object this is actually how you write things to the chain and eugen can go into the details of it a little bit more but I just want to highlight that global storage is more or less your window into the chain if you're familiar with I mean it's you know it's like storing storing cookies or interfacing with nodes or sorry interfacing with storage and note you know it's it's it should be a familiar paradigm to save stuff to global storage and so basically what happens is you know the function the function gets called it on the blockchain you know this contract is it gets spun up it does it's magic it interfaces with the chain and then it gets shut down almost like a web server I mean the paradigm if you're familiar with web is it's not that hard to understand once you once you get over the mental models the other side of what we have here in the studio in these templates is we have this SRC which is basically just a front it's super simple there's nothing there's nothing you know there's no magic to it it's just an HTML file we have our main KS file which is basically your front-end JavaScript and that's more or less in Eugene could talk about the details but I think the other thing that I want to note was that we also have tests so in a lot of these templates we have tests where you can miss you you run the test button and your your front-end tests are also going to run in the browser so we'll see give that a second because it sounds like things are so right now if you if you want to write test if you've worked with aetherium I think you'll you'll understand how different this is if you're not familiar with the theorem you might say like oh this just makes sense that's kind of the goal so basically what happened was there there are Jasmin tests and it was all kind of deployed in one big package and we've run the tests and you know now we have cream so it makes it super easy to write tests run tests and and that's it that's kind of the whole point so we have we have a front end down here which gets deployed again I'll hit the run and go check that out so so what we're doing basically right here is we're deploying the front end to AB dot near non-ai which is sort of like github pages it's just a hosting site okay I see you guys have been s been playing with us so yeah it basically we have your front end hosted on App dot you're not AI and then on the smart contract has been deployed to our dev net which is which is our blockchain so every time I'm typing a message here hey this is on the blockchain now so this is literally it's going through it's running a JavaScript method that then goes and interfaces with the smart contract on the chain runs the smart contract method and it's basically pulling it to see what the response is that's it so I think that's probably conceptually all we need to get out of me is there something you guys want to build so if you if there's something that you want to see you gene build that you're curious about feel free to throw that in the channel or you can actually throw it in the guest book because he has something that he wants to build here that Eugene let me uh let me promote you to a panelist here two types of chat there's two types of chat so like one of them is public and I think this comes cheap as well just to all people is it Oh interesting okay so let me jump over to assume ya participants so just give me one sec guys I'm gonna promote Eugene all right edge relations sir you've been promoted to a panelist so what I'm gonna do is mute myself and actually answer a couple questions while you're while you're if you want you can probably you can share your screen and maybe I'll just keep talking for a sec so question I see is is test its net ready so I think I think the real question is defined test net because everybody out there defines test net in a very different way so I think I think probably the pure way of defining test net is the exact same network as main net only it's not maintenance it's a testing environment almost nobody who's actually claimed to have a test net actually defines it that way so there are a few there are a few release stages on the way to testament so the next one is to be running the multi node test definite so we call that alpha net the one after that is to add economics the one after that is that economics basically the multi node stuff is gonna be coming out in just a couple weeks or not even that it's probably probably about a week and then moving into economics the economics will be coming out shortly thereafter and so yeah that at that point you know you can already build applications at that point you'll be able to build even more in-depth applications and you know everything from there onwards is just gravy anyways I'll turn things over to Eugene stop bothering you guys and yeah what do you got Hey can you hear me I guess okay okay so I you all played with a near guestbook and I want to die for a little bit more is another example first before they start building something is their own request or I have a an option to build a pulling app so idea you will be able to vote on the chain so that should be fine so follow that happened when I sent a message okay sure I seem kind of lost the guestbook laughs okay get let me build it shots real quick oh yeah okay I got alright so so this how it works so when you post a message we can actually jump to a console and network and see what's going on so let's say I said hi so what happens is we do the following thing you basically submit a transaction that Adele gets to the chain and later we recorded on a smart contract but before what happens is we have a wallet that embedded as part of the as part of the application so it embedded using the iframe and the side frame contains wallet the primary feature is just a JavaScript that subscribe to a message so JavaScript so this wallet iframe holds your keys in a local storage so the application doesn't have access to this but when the application want to send a message what it does it creates a transaction that later sent deciphering through in browser messaging and this transaction is validated by the wallet and it checks the discount from the right application is authorized token it is directly to contract that a wallet authorized to to use for this particular token and it verifies that the transaction is not monetary which means it doesn't take stockings out of your account and after we did this the assemblée transaction is not going to harm a lot and we can automatically improve this so when their wallet approve the transaction it actually signs this transaction is your private key and then it sends the transaction back through the messaging up to guest book and this guestbook app is now have a side transaction which it sends to a definite and once a definite receive the same transaction from your account it can actually process it properly so on as part of the code what happens is we create a new message we assign it an index that is in the next index of number of messages and we update the global storage so I want to start a slightly simpler version then a guestbook which also has a wallet integration and we can go first you some details there so this is one of the templates and let me actually try it deployed so this template is pretty simple it has two functions it's saying the last person who said hi and it also allows you to authorize is near so when I do authorize is near it asked me to login and authorize the app I do this now it has my account ID and you can see on the top you have a talking and this token lets application to use my local wallet or get account start on my local wallet so when I say hi again the bullet signs the transaction and it's sent to the definite and here you can use it so let's go to a contract to see what's going on here so contract has two functions one is what we call a change method this method can modify the state well doesn't resort return anything and the second method is a few method it doesn't know the account who send this message or like who call this method and it cannot or shouldn't modify the state because it will throw an error if you try to modify the state so first method is say hi so this is what happens we have a contract context which contains information from the current transaction that was sent to the this contract and it contains the sender so this side count idea of the previous sellers who call this contract in our case it's our account so the person who called it's gonna be my account then we have a login function so login is just plain simple looks that we do not store on chain but later you can later you can debug it so whenever I whenever I sent a log so here this it's saying this contract logged Eugene say say say so this how it works so it used a sender just concatenate two strings and locked it into console so whenever I call this function I personally can read this once but also everybody on the chain can read this load for this particular transaction so then what they did we use a global storage object so global storage is a persistent storage it's a helper class and it has some functions like set either it takes a key which is a string can our case it's a fixed key lost sender and it takes value in our case it's an account ID account ID on our system is also a string right now and it just stores this drink here then we have you method which is saying who's that hi and it just retrieves this value by the key so what's interesting here is even though it's called global storage it's a storage for this particular contract which means if you would pull a different contract and use the same key you will have a different storage for this key but for this particular contract next time it executes it it will have the same value under the same key so it's isolated towards a particular contract and this is how you use so now let's look a little bit more on a front-end part and how we actually use this contract so we have a near lip it's our library that works is our dev net and it also has our integration with the wallet so we provide the wallet URL that you use and you also provide a contract so right now a contract name is studio - and this part which is our field that uniquely generated but you can see in my kind of full network you can actually deploy under a different name and like you can pick the name then wallet has access to account ID and the account ID is HR authorized or not so it's not authorised yet it's going to be empty then we create a client and this client connects to a wallet for signing transaction and retrieving account and also accessor a local node connection which connects so definite so it points to the URL and URL is provided by studio but you can use this config so in in our case for example like this you have app URL base URL contract name not URL so even so right now so here you can customize it so if you're running your local environment you can actually point it to local dammit so then what once you have an initialized client you can lower the contract so you give a contract name and also configuration and the configuration is ute method that you can use and change methods that you can use to change the state and also you provide a sender and this is the person or account ID you that it will be using to create original transactions ok so you have this object contract and if you formulators javascript you can actually debug it in a console and this is a cool part so it is asynchronous functions that actually interactive is a chain so you can for example say hi again it creates a promise this promise gets resolved it retrieves your bunch of clogs then some looks already dumped into console you can see that wallets and the log to a console as well saying it's fine I sign this transaction and at the end you get promise result and you have a result you will can also do have you made it so you can save you said hi and also give you a promise and once it's result it has a value the value is on teaching here so this how we use it here so we have a method update or cerci and this function is calling us at hide it checks the result and once it's ready it just displays it so that pretty much how integration this wallet works and what I want to build today is at least modify this out to work with something more complicated so we want to create a polling app where you can actually vote on a particular poll unless we have some other options too to see let's see okay do we have any requests for what we can build so far I've been keeping up with questions okay I think you guys have requests please make them tell can wait it world I think it's even more complicated than just a plain of opening and I don't know if I'll have enough time to actually finish just a plain wording it's like multiple questions that the user generated votes plus today we are not gonna touch a monetary transaction because they require slightly different flow from the wallet because they are not automated so application they will have to request a monetary transaction on demand and user will have to approve right now every single monetary transaction okay so I have another field which is pretty similar to what I have right now so let me just deploy it it has a little more things that is available by the nearest book an idea is we can use use more complicated models or storage so for example there's a Model Ts object which represent our data storage and I needed to test some particular objects so for example array of strings that I need the class is currently empty and what I'm gonna do is I'm gonna change this to something like a poll which will have a few fields so first of all it's gonna be an owner so there's a person who owns the the poll then it's gonna be an ID that's alright in 32 then it's gonna be a question this is a poll question and they're gonna be options and options it's going to be a list of options - to answer the poll so now I have this poll object in mind out yes I can import it and behind this in what we do in Virginia right I generate serialization and deserialization methods for this particular object so you can use it as a much simpler than you would have to do and since everything is compiled at them to webassembly we have to have it and not rely on the compiler because well I guess we rely on the compiler but not rely on the son library because webassembly is pretty much standalone binary that you're running on chase so for polls you'll need a few methods so let's say when you create a method you just say what is this let's say we need at all and it will take question and OH and we also will have a method saying get all the given an index it's gonna return as a poll so this is a cool part is serialization science you build this you can just return it and sort of playing object instead of just returning some complicated types okay so it's going to be pretty similar to guestbook in sense whenever you create a new poll we will create object then we need to set an owner owner in our case gonna be comfort context a sender and we need an index so for the index we're gonna use latest number of message so number of false then we just assign a question and options so when you're dysfunction you can also expect it because you might find it useful so I'm not sure we have in a global storage whether we have in 32 so it's still pretty rough and some methods are still missing so if you're missing something that seems useful our file and issue in our github page so if you have a function or we have a button there to the power back which redirects the studio related stuff and we can use constants in like key examples and this constant it's all select one call in the heat torture okay so now when we add a pole we actually need to store it so to store it what we're gonna do we're gonna use method set bytes so set bytes takes array of IU 8 which is a binary array of serialized data so in our case neither key so let's say pokey and I'm gonna use Paul index and then I'm gonna use Paul in code so encode is a generated method that is not as you can see I didn't print it there or like I didn't vomit it but we oughta generate encode and decode for all and this is how we move data around so all key is going to be non-expert a function that will take an index I started to return as a string so we can use it as a key that's going to be say prefix mass index to stroke the batch script is still pretty early and for example for concatenation of string can a number you actually need to explicitly cast a number that string and stuff like this so some of this is still pain but other than this it's pretty similar to JavaScript and as next thing we need is once you save the object we actually need to increase the number of poles so in this case you're gonna use that I started to eat and it's going to be all indexed what's one so we add a time and you pole to storage so now we need to retrieve it to retrieve it we actually want to check that the index is not outside of the boundaries so it's a simple check we do have shirts so what you can do is you can say assert index should be more than 0 and index should be less than get number of false then you can throw them a message some select red index for example so now when someone calls gift calls what's gonna happen is it's gonna call check index and if assert fails you will have and there are thrown out here before you actually get continuing execution so checking early actually helps you to avoid wasting any transaction and any computational chain that you wouldn't need what else yes sir awesome a little bit more transaction model is pretty much similar to ethereal in terms of if you start executing a contract with a change method and you throw an error or assert fails but somewhere in the middle all changes to the state that you did before gonna be rolled back so you're not gonna change the state while you you will be potentially charged for all the computations need before so now how you actually return this can be just yet ball decode and you use get bytes instead of sandbox and just here follow index that's it so that's our basic class it doesn't have any voting but all it does is like you can create a poll of angry clear readable so we want to check that this thing works for this we will modify code will announce what now that we have so we have get number off and we have get ball and change method is at four so let's try to run it okay so it fails here because it's an index doesn't exist mono the ball yes I call it ID let's rename it to index it should be fine Thank You Jackson you should end this serialization okay so I saw this before I said it works on this video but maybe not so I'll then just change the way we do things let's try so it seems like a serialization of array of strings doesn't work in this case maybe it's try integers and then we need to change how we store options so what I'm gonna do I'm gonna use similar model you can text or both just for options instead okay so a real strength of integer works but array of options does not work I mean it's an only assignment here I guess like anyway so what we gonna do is we can the rename it to option IDs and then we're gonna store each option separately so iterate on ready functions and and store the one by one similar to how with the story new post I'll make a function which is get number of options so this doesn't have to be public because front-end is probably not gonna call it so we can use the Omega key or options which going to use graphics and then what I'm gonna do is I'm gonna use the global storage set so one thing we probably want to do is check that the number of options is not some obscure number so we want at least one option and maybe not more than some number let's say like some little functions let's say for so I'll do now store options in this case I hold the option key and I'm options plus I and then it's going to be options and I also need to store the new number put a number of options in this case it's gonna be some options plus options oh ok let's see this Forks seems fine we got it to work and I think we can store options what I forgot to do is to put them in for so what I need to do by creating an array this option online and then I can just say I attend to okay so now to retrieve a pole you would need to actually manually retrieve every single option but this is some just our problem right now is the compiler so let's try actually add a function to retrieve option similar to get Paul accepting you to check option index and this connect checks are so similar to all except it's aptly gonna check it on double network options then you use option key index and it will you don't need to decode it because just a string yes sir why bx in function so the export functions from NTS is our contract code and this is the code that gonna be running on a blockchain so this code is currently in typescript and it's kind of variation of a typescript called assembly script that compiles to webassembly so exported functions are the function that going to be available to a blockchain to be called so for example the work chain will not be able to call check index directly because this function is not expected but function like get bowlegged option you'll be able to be cold so functions by default I think they're public but I'm not sure if I set my script respects visibility properly what we do is so if you do not export a function it's pretty much bulletproof and no other contract can call it then we use right now and prefix underscore so something like get Polti so underscore get Polti is even so it's experts it no other contract you'll be able to call it or no user can initiate a call but because we're using a sharded blockchain we use asynchronous callbacks on the chain so it's more complicated probably topic to file next webinar but this function will not be able to you will not be able to call it from your application it's gonna say this is a private method and you shouldn't call it but your your contract by itself will be able to call this function if needed as part of the code so let's go to the front end another new method that we need we just get option and just get a number of options that will click we check out its turret yeah so now when we deploy it occurred so what happens is because we provided this contract and loaded this contract so now this contract is available for me to go so for example I can check contract get number of options and expert not found so maybe I did something that is working but oh yeah so I did an expert dysfunction actually and that's why it's not found but ok number of both is fine so it's resolved and saying 0 so let's actually remove this so I don't accidentally call it ok so what we can do now even so we don't have any UI for this we can use a console to actually add a pole so now the use arguments we before all our calls were without arguments and I didn't explain how it works so what we did is we currently using just a plain JSON serializer for arguments so you can say add Paul create an object you say question what and then options so this like your answer and you can say sounds like and it's our hamstring so then you pretty much can close it and it's gonna call it okay we can't ID is not relative yes that's right that's because I didn't sign it up with my near account so let me do this and now we can repeat this ball and spending not sure why it's been maybe just didn't resolve it on time okay so I guess I just clicked way too fast to some self unoffending promise it was not very soft that's right so down at the ball and we can now retrieve this index zero it's resolved so having my object which has index it has option ideas such as in the system options zero and one it has owner which is my account and it also has a question so we can also do adoption let's say zero first and it's result to the 1/nth one aha so we can see because of the or assert failed so I didn't like my option one some reason so let's see what's going on functions I use that's right and check out from index so this will be to you unless I forgot to change something let's basically expert dysfunction so you can see learn more and we can now retrieve this function and we can see what's the number of options have it okay so it's to some time quite sure why it failed alright so the reason why it fails is because to call this function you need to provide a J so it doesn't take a single argument you need to provide something like the attend X 1 and it will retrieve an option number 1 and that's how your trip 0 so the reason why it worked before for 0 is because some JavaScript 0 equals to empty object and here we just turn this realization and the integer became as your as well okay so now we got a functionality of the contract working how we actually can display it is more like a UI work so we can go to JavaScript and here I have my function culture afresh top and this refresh top previously was retrieving like kusik high so now I'm gonna do contract let's say get number of polls and I'll start remembering my current number of calls so at the beginning at 0 once it's result I get a call back is the current number I guess new number and I can now use this so first I need to initialize it's like we have way too many polls I don't want to fetch all of them so I will do down call 0 I'll do now post equal to X 0 new span and then I will retrieve them one by one that'll do this using a look but they also gonna do this a synchronously selfie running multiple now still reply faster and I'll just say for example H vegetable said I fetched all my poles and now I just need to update the current number so I don't you catch them later what fetch well gonna do it has index and this index is the pole number that I need to fetch and this is how I'm gonna do this I'll do it ball index index then do a callback for poor result I have my pole I can also keep all of my boss that I fetched in the array so I can later use them where they need to do something so I'll save it all index and I can also display it immediately but we also want to display options so to display it I might need some UI work so here I have top the name of the poles and I believe that I'm going to use for so it can be done much nicer if you use one of the JavaScript frameworks to actually display something absolutely correct and I think you've got some plans to do a basic are components to just demonstrate how to do this later so Oh every polity fish we can create some elements element let's go do not text gonna be all Christian and list a row so I'm using bootstrap and let's just for now verify that it works oh and later you're gonna fetch a list of options so when we don't need to redeploy a contract the front and there's updated on a safe so you can just refresh this and it's gonna work and you can see that I get my one up all option which is well so now we're gonna fetch options as well so to fetch options we can use parallel fetching as well but we cannot do something different we're going to pass the element that it needs to update once it done fetching it oh and because pretty similar to what we did here which is we're going to do get option index and here what we're going to do is element innertext equal to so now for every element or every open that I have I use I'll create a button or an option that some classes and also I need to add this to an element and we call each option that will retrieve the option index or populate the bottom box and fetch them so this was done so we can refresh and for each doesn't work okay guess I'll just oh wait it's option IDs okay so it works except it doesn't look nice yes because it doesn't work for all right so that's a basic UI that we just did on top of the contract so what other features we might want to do later is actual voting and when you press a button you would call a contract again to more than this particular oral whole index and also record that you're warning for this option then we're gonna record that you bought it for this particular poll and you're not gonna allow you to what again and we also gonna do count the number of votes per option okay I think I can stop right now and just start answering questions as a reminder of it do this we're due here as a reminder if anyone wants to ask questions live like over voice just you know feel free and I'll promote you to so that you can do that that can be the easiest way for Q&A come on people i J Europe if you want to be I are you able to listen okay thank you hey great job and then I have a quick question say we have a requirement of storing a large number of files so me because there they might vary in size and so what is the mechanism like you know so we had to use the external storage and stored the ash into the blockchain or yeah well that's probably like the best option right now because storage on blockchain is mostly used by contracts so if you don't need to use this file on chain you can use a hash and just like retrieve it by the hash of my url okay okay thank you yeah so we've had an example where we actually did this we used ipfs and JavaScript version of ipfs but currently javascript ipfs is not working properly otherwise you could show this as well another question yes yeah so - is actual contract this is the code that you first write but then we compile it and we create some piles like for example this is the file in assembly script for the model cyclists sterilization in it in this relation then we have a my year yes that is a compiled - yes file which also has some civilization D civilization and a rappers are out functions because webassembly has the world limited set of types that you can use is pretty much integers and then all of this compiles later to webassembly so that wasn't good window tamasam is actually the verb assembly in the text format but because studio that we use allows us to just display web assembly code in text format it's what it does it looks like a assembly with a sub light reflections actually looks pretty nice there even so you kind of trade it that's all we have I think we can wrap it up let's see okay thanks everyone three different things here sure my screen one last time here so thank you guys all of you so yeah it's very end here I just wanna say thanks a lot for yeah forgot about this little part yeah so if you have questions these are the places to go and India today we're moving super fast and and get anything shipped we you know you've seen the developer experience already honestly if you have an idea for something that you want to put together if you're curious join the disk or you know like we're here during the days and our entire existence is predicated on helping you so you know if you have an idea that you wants and feedback on if you you know if you're curious how to use this in general like week at least point you in the right direction so you know we're friendly folks and would love to have you so thanks a lot for taking some time this evening and you know I hope you have a great with your evening","transcript_synced_at":"2026-11-04T04:32:13.546Z","segments":[{"start_seconds":40,"text":"be able to wait we'll wait for more folks to come in but you should be able to also type in the chat window there","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=40s"},{"start_seconds":47,"text":"I'll mention this couple times but if let me know if you can hear me and it gets the first thing so if you could just type something in chat I don't let","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=47s"},{"start_seconds":56,"text":"me know that you can hear me and we'll be able to kick things off shortly","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=56s"},{"start_seconds":66,"text":"perfect","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=66s"},{"start_seconds":76,"text":"excellent so Eugene is also joining us so what I'm gonna do I'm just gonna wait","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=76s"},{"start_seconds":86,"text":"for one or two more minutes and I think we can get started I definitely want to dive into some fun stuff you know it's okay if some people end up missing the","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=86s"},{"start_seconds":95,"text":"beginning so I think actually a good a good","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=95s"},{"start_seconds":101,"text":"starter question in chat it would I would actually love to to hear what you guys are most interested in because I","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=101s"},{"start_seconds":109,"text":"mean I'll talk about this in a sec but basically I was gonna just gonna talk through some stuff and and then basically try to focus the last bit of","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=109s"},{"start_seconds":118,"text":"it on mostly live coding so yeah that's that's more or less what we're looking to do here so anything that you guys are","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=118s"},{"start_seconds":127,"text":"curious about you guys are interested in doing let me know that's more or less where I want to be so go for it type","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=127s"},{"start_seconds":135,"text":"that in while we're waiting for some more folks to join and I believe Eugene will be joining us if not right away then certainly for the live coding cuz","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=135s"},{"start_seconds":144,"text":"he's the one who's gonna be doing most of it if you want to jump ahead feel free to go to studio dot in your","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=144s"},{"start_seconds":152,"text":"protocol calm and play around so what","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=152s"},{"start_seconds":162,"text":"I'm gonna be doing is a little bit more of a traditional presentation that I'm gonna I'm gonna walk through some studio stuff and just point out some of the some of the features and things like","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=162s"},{"start_seconds":169,"text":"that and then we'll do some live coding which will be Eugene who I'm going to make sure that knows","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=169s"},{"start_seconds":189,"text":"all right so what I'm gonna do here I'm gonna start sharing my screen I'm going","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=189s"},{"start_seconds":198,"text":"to kick off a presentation so let's do that","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=198s"},{"start_seconds":208,"text":"look at Google Chrome sure that I think you guys should be able to see that don't see that plus my little face there","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=208s"},{"start_seconds":217,"text":"we may or may not turn off all right","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=217s"},{"start_seconds":227,"text":"agents the wrong side giving it all away","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=227s"},{"start_seconds":232,"text":"oh no all right back to the beginning","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=232s"},{"start_seconds":242,"text":"all right let's kick things off so welcome first of all we have people from all around the world actually so some","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=242s"},{"start_seconds":251,"text":"folks from certainly from New York Austin Denver San Francisco would I don't actually remember all the places","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=251s"},{"start_seconds":259,"text":"that we that we had posted but then some folks into our international as well so thanks a lot for joining first of all and just a quick quick touch taste of","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=259s"},{"start_seconds":269,"text":"the goals for today what what I want to do is just give you a taste of what our decentralized apps and I also show off a","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=269s"},{"start_seconds":278,"text":"platform that you can use to create them so part of this is about kind of building the mental models for what it actually means to build a decentralized app part of it is actually seeing it","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=278s"},{"start_seconds":286,"text":"done and part of it is you know shouting things out the eugen to to build on your behalf so basically my assumptions about","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=286s"},{"start_seconds":295,"text":"you or that you're roughly familiar with blockchains you may or may not have actually built stuff on them that's fine you may be a developer you're probably a","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=295s"},{"start_seconds":303,"text":"developer but you may not be that's also fine you know you can follow along and play along or you can just sit back and watch it's totally up to you so as a","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=303s"},{"start_seconds":311,"text":"number of you have already discovered we do have chat available so you know feel free to feel free to put things in the chat window I'll try to check that","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=311s"},{"start_seconds":320,"text":"periodically and just make sure that you know we're in good shape and I'm caught up otherwise I'm just gonna kind of walk through things here so in terms of goals","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=320s"},{"start_seconds":330,"text":"for today so basically what I want to do is just briefly start off by talking about just apps in general decentralized apps in general just get everyone kind","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=330s"},{"start_seconds":337,"text":"of up to speed and make sure we're all on the same page then I want to do just a quick discussion about what your protocol is as a protocol that you","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=337s"},{"start_seconds":345,"text":"build apps on top of and then we'll actually get into the good stuff which is live coding showing off how it actually works and things like that so","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=345s"},{"start_seconds":353,"text":"if by the way I also want to plug our discord so if you're interested in joining discord it's not we're not posting this this webinar right now on","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=353s"},{"start_seconds":362,"text":"discord but you know this is where our team lives this is where community live so if you're curious and you're interested just go to your dot chat super easy to remember and you'll be","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=362s"},{"start_seconds":370,"text":"able to sign up for her discord Channel so Who am I I lead operations over here at near I used to lead a company called Viking education which was an online","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=370s"},{"start_seconds":379,"text":"software engineering boot camp program that hit full-time and part-time programs and previously I worked and created the Odin project which is I","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=379s"},{"start_seconds":388,"text":"guess probably six or seven years ago now which was an online open-source community for learning web development so I've been in education for a very","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=388s"},{"start_seconds":395,"text":"long time Eugene who is sitting next to me who you guys will see shortly is a senior software engineer and he's got a","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=395s"},{"start_seconds":402,"text":"long history of competitive programming gold medals or gold medal why did you","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=402s"},{"start_seconds":408,"text":"all they would once you also worked at Google at Facebook so you'll hear from","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=408s"},{"start_seconds":416,"text":"him you'll hear from a little bit so yeah let's just dive right in actually let me just quickly check in on the chat","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=416s"},{"start_seconds":423,"text":"make sure everything looks good for you guys did you do okay","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=423s"},{"start_seconds":432,"text":"we have some questions and great cool so let's just keep it going all right what","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=432s"},{"start_seconds":441,"text":"are decentralized apps so just get everyone on the same page the whole idea of a decentralized app is that it runs on a whole distributed system of sort of","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=441s"},{"start_seconds":448,"text":"servers rather than one it has multiple points of failure rather than one or I guess you could say it has multiple redundancy points and basically as a","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=448s"},{"start_seconds":457,"text":"mental model if today's applications are mostly deployed to the cloud which the cloud is really just a bunch of commodity servers sitting in the server farm somewhere probably in Washington or","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=457s"},{"start_seconds":466,"text":"somewhere with cheap power and the alternative is if you're thinking about something like a blockchain which is running in a decentralized fashion each one of those","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=466s"},{"start_seconds":474,"text":"come out to be computers is more or less run by some random human around the world and that's that that's probably the easiest mental model for understanding the difference between","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=474s"},{"start_seconds":482,"text":"what a centralized that looks like when it's deployed versus if you centralize that and of course a lot of the challenges on building platforms for that are how do you how do you enforce","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=482s"},{"start_seconds":491,"text":"some of the things that you take for granted in you know a fully controlled data center among people who are all around the world who may or may not have","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=491s"},{"start_seconds":498,"text":"good intentions and things like that luckily that's our problem not your problem all you have to do is learn how to build on top of that so one thing","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=498s"},{"start_seconds":506,"text":"that is just worth checking on is just why why decentralization why should we even care and I think that there are really two ways of looking at this or two lenses of looking at it I think one","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=506s"},{"start_seconds":515,"text":"is the zoomed out the abstract which a lot of ways is stronger but less easy to hold on to and so people talk about censorship resistance a lot I think","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=515s"},{"start_seconds":523,"text":"there are a lot of different angles that you could look at from that one of the most tangible for you as a developer is that if you build on top of someone else's platform like for instance you","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=523s"},{"start_seconds":531,"text":"can think of the case of Zynga a segment built on top of Facebook they built a an enormous business very very quickly on Facebook's platform accessing Facebook's","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=531s"},{"start_seconds":538,"text":"data accessing Facebook's users and then as soon as they got to big Facebook just pulled down the hammer and then and if their whole business just got destroyed","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=538s"},{"start_seconds":546,"text":"so that that happens in a million different times in a million different ways around the world on different platforms and that's one of the actually easiest most tangible ways of thinking","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=546s"},{"start_seconds":554,"text":"about benefits of decentralization and not basically being tied to a specific person's platform or a specific company's platform for their data and things like that","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=554s"},{"start_seconds":563,"text":"the other one is this idea of trust lessness which is that once you actually have something that's decentralized once you are operating an anti centralized way you know it allows you to change","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=563s"},{"start_seconds":572,"text":"your trust model as well because you're no longer having to trust a single entity which is a single point of failure which could you know has a single honeypot that could be hacked and things like that","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=572s"},{"start_seconds":580,"text":"and so it'll it changes a lot of the ways that you think about you know what what makes sense to send send money send Danis and things like that those are","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=580s"},{"start_seconds":588,"text":"relatively abstract so I like to zoom in on the concrete as well and there are a lot of different ways of looking at this another another way of another way that","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=588s"},{"start_seconds":596,"text":"I like to look at it which we're not really going to cover here is this idea of primitives but you kind of break it out you know one of","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=596s"},{"start_seconds":604,"text":"the core ideas is self sovereignty which means that actually specifically when you're thinking about blockchain the blocks conversion of decentralization is that now you actually own everything you","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=604s"},{"start_seconds":612,"text":"own the money that is tied to you you own your data and you own the assets themselves that means you own them not","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=612s"},{"start_seconds":620,"text":"not you know they're not stored on some company's server somewhere at their permission and so if they blow up and it's gone forever there is also this","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=620s"},{"start_seconds":628,"text":"idea of digital uniqueness which is great which is sort of this idea about if you if you understand Bitcoin the whole idea of Bitcoin what makes it amazing is that is that now a single","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=628s"},{"start_seconds":637,"text":"Bitcoin is literally there's only one in the world it's a it's a digital asset that you actually can't just sort of copy and paste somewhere else and create two of cuz obviously it wouldn't work if","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=637s"},{"start_seconds":645,"text":"you could just create two pieces of money and so the the innovation that they use to create Bitcoin defines this idea of digital uniqueness now we can","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=645s"},{"start_seconds":653,"text":"actually deploy that into other ways we can we can we can extend that and we can do things like what crypto kiddies did with unique with these cats for instance","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=653s"},{"start_seconds":661,"text":"as a crypto collectible is it's kind of just the the toy version of a very important concept which is that you could store things on the blockchain that actually represent very unique","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=661s"},{"start_seconds":670,"text":"objects which is something we've never had before in the digital space and then of course on the transactional side you can actually because it's peer-to-peer","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=670s"},{"start_seconds":678,"text":"you can trade these you can you can move these assets you can move them between you and another peer you can do them and","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=678s"},{"start_seconds":686,"text":"so the the directness of that is actually a very important thing because normally if you're trading something digitally you have to go via a server and again there's that single point of","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=686s"},{"start_seconds":693,"text":"failure there's that censorship aspect and honestly it also slows things down when you when you put a middleman in the middle and somebody's usually collecting rent so there all these reasons why it's","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=693s"},{"start_seconds":702,"text":"actually really helpful that you can now transmit these assets between two things between two parties and another thing worth noting on the self sovereignty","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=702s"},{"start_seconds":709,"text":"that I didn't talk about is that devices can actually be self sovereign as well in this world so you could for instance your refrigerator could actually have","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=709s"},{"start_seconds":717,"text":"ownership of its own data and its own its own money and its own assets so it's just something to think about as you look forward so in terms of just","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=717s"},{"start_seconds":725,"text":"starting to look into the actual behind the hood behind the scenes under the hood stuff for how do centralized apps work versus decentralized apps","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=725s"},{"start_seconds":734,"text":"you're familiar with the centralized paradigm you have you have a browser that that's getting information and sending information to and from the","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=734s"},{"start_seconds":742,"text":"server which is then talking to a database on the lowest level and then somehow the front end has to actually get served in the browser so you know","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=742s"},{"start_seconds":749,"text":"you have the HTML the CSS and all that a lot of times those are actually hosted off to the side somewhere in in static hosting in the decentralized world you","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=749s"},{"start_seconds":757,"text":"still need to display the web page so it's still kind of being served from the same front-end you know you can't actually serve it in a decentralized way","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=757s"},{"start_seconds":765,"text":"but it's at this point it's not really where we want it to be the difference is really on the back end which is that your browser is typically talking","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=765s"},{"start_seconds":772,"text":"directly to the blockchain itself which is running a smart contract that then is sort of interfacing with the court whether that is running on the","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=772s"},{"start_seconds":779,"text":"blockchain network so that that's the key difference is that the blockchain actually operative takes over both the server which is doing compute and the","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=779s"},{"start_seconds":787,"text":"database which is doing data storage and I'll peek into this a little bit deeper so I generally like to approach things","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=787s"},{"start_seconds":795,"text":"in terms of key mental models so you know it's it's one of the things that you need to really just kind of keep keep in your head that's a little bit different about the way you would","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=795s"},{"start_seconds":802,"text":"probably by default understand the world so therefore but I just want to cover really quickly here one is the data actually lives on the blockchain two is","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=802s"},{"start_seconds":811,"text":"that while it's is basically just talking about wallets and the idea of keys and ownership the third is interfacing with servers and databases being different than interfacing with","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=811s"},{"start_seconds":819,"text":"the blockchain itself and the fourth is that code is actually immutable on the blockchain as well so the first one data","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=819s"},{"start_seconds":826,"text":"actually lives on the blockchain so the difference is that when you think about how data lives today it's basically it exists in a database owned by a company","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=826s"},{"start_seconds":833,"text":"somewhere and that company is is the one that's basically deciding when and how that data gets modified or moved or you know what when when your number of","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=833s"},{"start_seconds":842,"text":"tokens or whatever it is increases or decreases whereas in the blockchain world the data is actually stored on the chain and this chain is this sort of","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=842s"},{"start_seconds":849,"text":"this public layer of data it's like it's a public database that's distributed all around the world and it's kind of this pool that's shared all around the world","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=849s"},{"start_seconds":856,"text":"and effectively the data that you're talking about even though oftentimes we sort of refer to it as being yours and being in your wallet","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=856s"},{"start_seconds":865,"text":"or something like that it's actually lives on it actual lives on the date on the blockchain and it's effectively tied to you via a cryptographic key and what you own is","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=865s"},{"start_seconds":873,"text":"the key so it's almost like the blockchain is basically just a bunch of safes and and you own the key to one of those safes and that's basically kind of","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=873s"},{"start_seconds":880,"text":"a mental model I like to use to think about that second one is while it's in keys which is actually I guess zooming into the same idea and again the idea is","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=880s"},{"start_seconds":889,"text":"that this data is tied to you via a private key and if you want to actually modify or move that data you have to send a transaction and that transaction","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=889s"},{"start_seconds":897,"text":"has to be signed by you and typically what actually occurs inside your wallet and your wallet is basically just a way","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=897s"},{"start_seconds":904,"text":"of holding those keys oftentimes a lot serves two functions oftentimes the wallet will actually be the inner interface calling with the chain as well but so it's basically going to be when","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=904s"},{"start_seconds":913,"text":"you want to do something that touches the chain you sort of an application will request permission from your wallet which will then send the sign the transaction and send it to the chain on","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=913s"},{"start_seconds":921,"text":"your behalf and so that's that's that's also a key mental model is and something that's new about about working with gaps and block chains is that is that you","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=921s"},{"start_seconds":930,"text":"have this idea of the wallet which has to sort of do things for the user so it kind of adds a step the wallet in some ways strangely acts almost like a server","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=930s"},{"start_seconds":938,"text":"sometimes I won't get too deep into that into that model though the third one is that there are the difference in how you","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=938s"},{"start_seconds":947,"text":"access the chain is is it's worth thinking about because this actually can sometimes take a little bit of time for beginners to get over the idea which is","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=947s"},{"start_seconds":955,"text":"that of course when you're interfacing with a database in web 2 world is basically the server's you know you sort of make a stateless requests to a server","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=955s"},{"start_seconds":962,"text":"which is then hooked in with the database in it and it runs that request and it's like a pretty basic sort of thing on the blockchain it's different","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=962s"},{"start_seconds":969,"text":"because because the the chain is actually made up of all these nodes that are all spread out everywhere and they have to be synced up together and the","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=969s"},{"start_seconds":977,"text":"only way to inject that you have to inject the transaction into that network into that mesh network which which basically means that in order to do that","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=977s"},{"start_seconds":985,"text":"you have to talk to one of those nodes which represents the network and so that might be you running a node in your local browser or maybe you sending a","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=985s"},{"start_seconds":992,"text":"request to an API that you trust which them then they themselves are running a node on that chain so just in the way that","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=992s"},{"start_seconds":1001,"text":"you kind of think about how you're interfacing with the chain you always have to think about where is the note that's going to be submitting those transactions on my behalf and a lot of","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1001s"},{"start_seconds":1010,"text":"the time that's actually occurring in the wallet so you know if you're interfacing if you're building an app that the interfaces with wallets a lot of times the wallet is the one that's","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1010s"},{"start_seconds":1018,"text":"kind of doing that but it is something that you do have to think about which is different than web to world the fourth one is that code is immutable and so","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1018s"},{"start_seconds":1027,"text":"basically the idea of that is we're so used to one of the nicest things about web 2 world is that you push code to a server and then the very next request","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1027s"},{"start_seconds":1035,"text":"it's running the new code so it's great I mean it's incredibly fast iterative and changeable but one of the whole points of the blockchain is that it's actually immutable is that is that you","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1035s"},{"start_seconds":1044,"text":"know you shouldn't the whole idea is that you shouldn't allow the developer of an application to have disproportionate control to them change a bunch of stuff on your behalf like it","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1044s"},{"start_seconds":1052,"text":"wouldn't it wouldn't be censorship resistance if that wasn't property so unfortunately what that means is that typically when you push code to the","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1052s"},{"start_seconds":1059,"text":"chain and actually you can't change it and because if people start using that code and for instance if you were to change that if they put a bunch of money into a contract you know and then you","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1059s"},{"start_seconds":1068,"text":"could change it that would be a problem so that is one thing that we need to we need to kind of keep in mind with with","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1068s"},{"start_seconds":1075,"text":"how the blockchain works as well so there are a lot of hacks and and workarounds and you know we're basically trying to trying to kind of get towards","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1075s"},{"start_seconds":1083,"text":"the happy middle ground of how do you make how do you make the code that you've deployed changeable up until a point and then maybe you lock it and and","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1083s"},{"start_seconds":1091,"text":"then people feel comfortable putting their money into a contract or something like that but you know it is important difference so in terms of what are the","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1091s"},{"start_seconds":1099,"text":"pieces of a decentralized app so you as a developer what you have to build well you have to build the front end that's pretty standard the key bits are actually the middle two which is you","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1099s"},{"start_seconds":1108,"text":"actually your front end needs to have a library which in SDK which interfaces which knows how to talk to the blockchain and interface with the smart","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1108s"},{"start_seconds":1116,"text":"contract which is effectively which you can consider to be your server-side code and the the smart contract is the code that actually gets run when you submit a","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1116s"},{"start_seconds":1123,"text":"transaction on the blockchain and so the way these chains work is every node actually is running that code on your","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1123s"},{"start_seconds":1130,"text":"behalf so you know you're free when a user clicks a button on the front-end it sends it runs a JavaScript method in","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1130s"},{"start_seconds":1138,"text":"your JavaScript library which then knows how to talk to the smart con send it send a transaction usually via the wallet to the smart contract which is","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1138s"},{"start_seconds":1146,"text":"then going to run sort of run on a whole bunch of nodes at the same time and you know that the chain does its magic and it changes some sort of state typically","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1146s"},{"start_seconds":1156,"text":"so I want to talk about actually let me let me pause for a second just in case there I'm just gonna check if not chat real quick I am going to be recording","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1156s"},{"start_seconds":1165,"text":"these this and well I'm at least gonna be sharing slides we'll see if the recording is actually shared so yeah","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1165s"},{"start_seconds":1174,"text":"well we'll see what happens there so I wanted to jump into basically like what do we do as the blockchain so there are","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1174s"},{"start_seconds":1182,"text":"a whole number of block chains out there you've got etherium it's kind of the Original Gangster they were the ones who've essentially figured out how do we","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1182s"},{"start_seconds":1190,"text":"take the Bitcoin technology and put a computer on top of it or but you know put a virtual machine on top of it and allow people to build these applications","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1190s"},{"start_seconds":1197,"text":"on top of it and unfortunately they're they're quite slow and they're they're kind of a sort of an obsolete technology with a wonderful community and you also","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1197s"},{"start_seconds":1206,"text":"have other chains like there's Tron there's a OS there are a whole bunch of ones that haven't launched yet ultimately what near is near is also a","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1206s"},{"start_seconds":1215,"text":"scalable developer friendly platform for building these decentralized applications which is running on a blockchain so one of the key differences","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1215s"},{"start_seconds":1223,"text":"here is it's designed from the beginning both to scale and to deal with usability so that means usability for you as a","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1223s"},{"start_seconds":1231,"text":"developer and usability for your end-users so one of the reasons why we're actually building this which i think is actually an important thing to","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1231s"},{"start_seconds":1238,"text":"cover really quickly is that you know this ecosystem is still super early so I don't know maybe you're here because you're sort of already deep in the","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1238s"},{"start_seconds":1246,"text":"ecosystem and you're curious to try out something new or maybe you're here because you're from outside the ecosystem and you're interested in you","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1246s"},{"start_seconds":1252,"text":"know how does it work but I mean I think everyone can really see that even though there there was this huge speculation","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1252s"},{"start_seconds":1260,"text":"and hype of things like that last year or the year before we're really still super super early in the technology we the only people who are","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1260s"},{"start_seconds":1267,"text":"really deep into this are the innovators these are the people who speak very technical languages who understand the guts of how these things work and who are willing to go through a whole bunch","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1267s"},{"start_seconds":1275,"text":"of crap just just to produce an application on one of these unfortunately there haven't been a lot of users some of the most popular apps on the chains have dozens of literally","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1275s"},{"start_seconds":1283,"text":"dozens of users and you know we'd really we haven't gotten to the point where there are more people using the chains and until that happens it's just not","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1283s"},{"start_seconds":1291,"text":"going to be a successful ecosystem so it's really important to figure out how do we actually bridge the gap from these incredibly technical people who are willing to do go through a lot of Hell","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1291s"},{"start_seconds":1300,"text":"to use these applications and to make these developers to build these applications to people who just want to make sure that works who just want to","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1300s"},{"start_seconds":1308,"text":"you know to like use something that they don't care if it runs on blockchain and really what it comes down to is there are two problems there are two core","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1308s"},{"start_seconds":1317,"text":"problems so one is the demand side the other is the supply side so on the demand side well actually maybe it's worth starting from the supply side a lot of block chains have talked about","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1317s"},{"start_seconds":1325,"text":"scalability and this idea that you know what happened with aetherium is there have been a few times in the history of aetherium where it runs rather slowly","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1325s"},{"start_seconds":1333,"text":"and so when an application on it it's very popular all of a sudden it just the whole chain just grinds to a halt nobody can do anything so there is severe","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1333s"},{"start_seconds":1340,"text":"scalability problems but the other side is that you only need to bother with scalability if you can actually get people using the chain and a lot of the","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1340s"},{"start_seconds":1349,"text":"issues that we've run into are that the existing paradigms for building applications on these chains require you to ask a lot of your users so it","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1349s"},{"start_seconds":1358,"text":"requires you to ask your users almost as soon as they you know I mean go through an ecosystem almost and VOS actually almost as soon as they drop into an","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1358s"},{"start_seconds":1366,"text":"application you have to you you confront them with you know do you have a wallet you know let's let's use your wallet oh do you have tokens in your wallet well we need to access your tokens and if you","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1366s"},{"start_seconds":1374,"text":"don't have any tokens you have to go to the exchange and you have to buy a bunch of tokens and you have to fill in your passport number and you have to put in your credit card and wait seven days and all this stuff right and this is I mean","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1374s"},{"start_seconds":1383,"text":"for usability 101 this is a pain in the ass for everyone involved so until until we begin to bridge some of those usability gaps it doesn't matter how scalable the chains that we","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1383s"},{"start_seconds":1391,"text":"build are because nobody's actually going to come in and use them so we need to solve actually both of those things so you know the whole point of this","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1391s"},{"start_seconds":1399,"text":"platform is that it's built with a mindset of usability first scalability to support that and so there are things that you have to do that you","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1399s"},{"start_seconds":1407,"text":"can do on the protocol level that now we know about that we didn't really have any idea about two or three years ago when these platforms started coming out","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1407s"},{"start_seconds":1414,"text":"which allow us to make the experience of a user using an application feel a lot more like web to world you know old","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1414s"},{"start_seconds":1421,"text":"world as opposed to this like you know inconvenience them at every possible corner which we're doing with web 3 world so you know on the scalability","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1421s"},{"start_seconds":1430,"text":"side whom uses sharding approach which is reasonably similar in spirit to what the etherium 2.0 proposal is so if","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1430s"},{"start_seconds":1437,"text":"you're familiar with that you know it's kind of where theorem is trying to go but it's taking them a long time and we're doing something that's that's reasonably similar spiritually or in","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1437s"},{"start_seconds":1446,"text":"theory and then on the usability side there are things that are focusing on end-user usability and things that are focusing on developer usability so for","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1446s"},{"start_seconds":1455,"text":"end-users basically can you get them to use an application so they don't have to deal with wallet stuff up front so they don't have to deal with owning tokens","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1455s"},{"start_seconds":1463,"text":"upfront and from a developer perspective can you actually write these smart contracts using languages that you're familiar with can you you know can you","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1463s"},{"start_seconds":1470,"text":"do things on behalf of your users so that you don't have to bother them every single time you want to you want to ask for permission to do things so ultimately all of this kind of ties","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1470s"},{"start_seconds":1479,"text":"together into you know more or less like common sense you know it's like making common sense decisions but the principle of least surprise you know it's like you","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1479s"},{"start_seconds":1487,"text":"as a developer should be able to look at this code and they kind of figure out what it's doing and kind of figure out how to use it and that's basically our goal so hopefully that's gonna happen tonight as far as where the platform is","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1487s"},{"start_seconds":1495,"text":"right now so we have our developer net released so we we have one you can download it and run it locally or you can run in our web IDE which we're going","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1495s"},{"start_seconds":1504,"text":"to show off and we have a hosted node that's essentially running in the cloud just as a way of sort of an endpoint that you can you can build applications","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1504s"},{"start_seconds":1510,"text":"against so if you can see if you can see the the animation here I mean I'll show this off","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1510s"},{"start_seconds":1519,"text":"but basically what this is showing is the the online IDE that we have and basically what it does is it allows you to build and deploy an app really easily","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1519s"},{"start_seconds":1528,"text":"so you can go there you can you can jump into the code we have templates that are already available and basically I'll","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1528s"},{"start_seconds":1537,"text":"show you this in a second that eugene's can go super deep but but the whole idea of this is how could how can you how can we get you to try stuff as quickly as","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1537s"},{"start_seconds":1545,"text":"possible how can you how can you test things break things all that as quickly as possible so we have a whole bunch of applications that people have built you","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1545s"},{"start_seconds":1553,"text":"know it starts with toys right so so we if you're familiar with the reddit place app we have a near place app which is sort of a collaborative you can I mean if you want to go to the URL you're","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1553s"},{"start_seconds":1562,"text":"welcome to play with it you know it's it's a collaborative app where you know people different people from around the world can can poke the same pixel and everybody you know can","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1562s"},{"start_seconds":1570,"text":"sort of create things simultaneously and that's all build with the blockchain in the backend we have a meme generator we","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1570s"},{"start_seconds":1578,"text":"have you know we ran a hackathon or we were one of the the prize leaders at a hackathon recently where we had some apps that that came out including one","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1578s"},{"start_seconds":1586,"text":"that was basically about blood donations we had another that was about saving pinky promises the blockchain because once you save something with the","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1586s"},{"start_seconds":1594,"text":"blockchain it's immutable so right it's like you promised and yeah and we've had something to do absolutely like that so","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1594s"},{"start_seconds":1601,"text":"anyways there are a lot of interesting toys that you can play with so far we have documentation available at Docs that your protocol comm but you don't","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1601s"},{"start_seconds":1610,"text":"care that much right now because probably you won't actually see what this stuff actually does so what I want to do is first I'll share my screen and","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1610s"},{"start_seconds":1618,"text":"well I am shorting my screen but I'll show off sort of the basics of what Studios doing and then turn things over to Eugene and he's gonna dive in a lot","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1618s"},{"start_seconds":1626,"text":"deeper and give you guys a chance to probably shout out some stuff I don't know exactly what the plan is but we'll see so the first thing that I wanted to","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1626s"},{"start_seconds":1634,"text":"do was actually just go over to studio so I don't I don't have anything in particular plan right here but what I","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1634s"},{"start_seconds":1644,"text":"want to show off is you're the guest book and I don't know I","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1644s"},{"start_seconds":1650,"text":"haven't cleared so basically we have these templates and the idea is that you can create and what this is is this is a","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1650s"},{"start_seconds":1657,"text":"smart contract plus a front end and so you know if you were doing this on your on your local environment like you wouldn't necessarily need to have your front end sitting right here but you","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1657s"},{"start_seconds":1666,"text":"know we're trying to make things as easily as possible so actually before I explain even what it's doing I'm just gonna run it and you know hopefully this","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1666s"},{"start_seconds":1674,"text":"is gonna this is gonna show you the interaction oops where am I don't kill","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1674s"},{"start_seconds":1681,"text":"that it's going slow well go figure so instead actually when I hit running","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1681s"},{"start_seconds":1690,"text":"then just hang out in here for a second so what I want to do is walk is just walk through what it looks like so so","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1690s"},{"start_seconds":1697,"text":"what what are all these files so well we have the guestbook so this is basically just a chat app and so what does is I","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1697s"},{"start_seconds":1706,"text":"can log in with my wallet so we have a hosted wallet so right now we've jumped over to wallet dot in your protocol comm and I've already signed up so if you","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1706s"},{"start_seconds":1714,"text":"haven't signed up you would actually be asked to input your username but I'm actually gonna authorize the app to use this to use this account and so what you","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1714s"},{"start_seconds":1721,"text":"guys can do if you want to do is you can literally copy this URL and you can you can go through the same flow I just paste it in the chat you can go through","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1721s"},{"start_seconds":1729,"text":"the same flow and you can post messages so I don't know what you guys want to post but you're welcome I don't know if","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1729s"},{"start_seconds":1738,"text":"I should leave this this has an unpredicted endpoint right now but this menus actually so I'll check back in on","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1738s"},{"start_seconds":1747,"text":"that in just a second but so so basically what are the pieces here right sit so this is an ID and what","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1747s"},{"start_seconds":1755,"text":"we're looking at mei'm dot TS this is your smart contract this is actually what's going to be deployed to the blockchain so what this is is this is","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1755s"},{"start_seconds":1763,"text":"the code that's going to be run by every node that that's in a particular chart or I guess for the simplicity you can just think of it as every note is gonna","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1763s"},{"start_seconds":1771,"text":"run this code at the same time so this is this is your smart contract and it's written in typescript so if you have any familiarity at all with either","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1771s"},{"start_seconds":1779,"text":"JavaScript or C++ I mean it's super super easy it's more or less Java Script with types and we've sort of restricted a couple of things because it has to be","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1779s"},{"start_seconds":1787,"text":"fully deterministic but you also don't have to care about that in the end of the day this is just code and you're probably relatively familiar with what this looks like","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1787s"},{"start_seconds":1794,"text":"I think the key bit is number one it's just it's basically just JavaScript number two it the object that you","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1794s"},{"start_seconds":1802,"text":"interface with it's this global storage object this is actually how you write things to the chain and eugen can go into the details of it a little bit more but I just want to highlight that global","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1802s"},{"start_seconds":1810,"text":"storage is more or less your window into the chain if you're familiar with I mean it's you know it's like storing storing cookies or interfacing with nodes or","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1810s"},{"start_seconds":1817,"text":"sorry interfacing with storage and note you know it's it's it should be a familiar paradigm to save stuff to global storage and so basically what","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1817s"},{"start_seconds":1825,"text":"happens is you know the function the function gets called it on the blockchain you know this contract is it gets spun up it does it's magic it","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1825s"},{"start_seconds":1834,"text":"interfaces with the chain and then it gets shut down almost like a web server I mean the paradigm if you're familiar with web is it's not that hard to understand once you once you get over","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1834s"},{"start_seconds":1842,"text":"the mental models the other side of what we have here in the studio in these templates is we have this SRC which is basically just a front it's super simple","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1842s"},{"start_seconds":1851,"text":"there's nothing there's nothing you know there's no magic to it it's just an HTML file we have our main KS file which is","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1851s"},{"start_seconds":1858,"text":"basically your front-end JavaScript and that's more or less in Eugene could talk","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1858s"},{"start_seconds":1866,"text":"about the details but I think the other thing that I want to note was that we also have tests so in a lot of these templates we have tests where you can miss you you run the test button and","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1866s"},{"start_seconds":1873,"text":"your your front-end tests are also going to run in the browser so we'll see give that a second because it sounds like","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1873s"},{"start_seconds":1881,"text":"things are so right now if you if you want to write test if you've worked with aetherium I think you'll you'll understand how","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1881s"},{"start_seconds":1889,"text":"different this is if you're not familiar with the theorem you might say like oh this just makes sense that's kind of the goal so basically what happened was","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1889s"},{"start_seconds":1897,"text":"there there are Jasmin tests and it was all kind of deployed in one big package and we've run the tests and you know now","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1897s"},{"start_seconds":1905,"text":"we have cream so it makes it super easy to write tests run tests and and that's it that's kind of the whole point so we","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1905s"},{"start_seconds":1913,"text":"have we have a front end down here which gets deployed again I'll hit the run and go check that out so so what we're doing","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1913s"},{"start_seconds":1919,"text":"basically right here is we're deploying the front end to AB dot near non-ai which is sort of like github pages it's","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1919s"},{"start_seconds":1925,"text":"just a hosting site okay I see you guys have been s been playing with us so yeah","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1925s"},{"start_seconds":1933,"text":"it basically we have your front end hosted on App dot you're not AI and then on the smart contract has been deployed to our dev net which is which is our","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1933s"},{"start_seconds":1941,"text":"blockchain so every time I'm typing a message here hey this is on the blockchain now so this is literally it's","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1941s"},{"start_seconds":1950,"text":"going through it's running a JavaScript method that then goes and interfaces with the smart contract on the chain","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1950s"},{"start_seconds":1957,"text":"runs the smart contract method and it's basically pulling it to see what the response is that's it so I think that's","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1957s"},{"start_seconds":1966,"text":"probably conceptually all we need to get out of me is there something you guys want to build so if you if there's","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1966s"},{"start_seconds":1976,"text":"something that you want to see you gene build that you're curious about feel free to throw that in the channel or you can actually throw it in the guest book","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1976s"},{"start_seconds":1984,"text":"because he has something that he wants to build here that Eugene let me uh let me promote you to a panelist here two types","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1984s"},{"start_seconds":1993,"text":"of chat there's two types of chat so like one of them is public and I think","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1993s"},{"start_seconds":1999,"text":"this comes cheap as well just to all","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=1999s"},{"start_seconds":2008,"text":"people is it Oh interesting okay so let","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2008s"},{"start_seconds":2015,"text":"me jump over to assume ya participants","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2015s"},{"start_seconds":2021,"text":"so just give me one sec guys I'm gonna promote Eugene all right edge relations","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2021s"},{"start_seconds":2032,"text":"sir you've been promoted to a panelist so what I'm gonna do is mute myself and","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2032s"},{"start_seconds":2040,"text":"actually answer a couple questions while you're while you're if you want you can probably you can share your screen and maybe I'll just keep talking for a sec","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2040s"},{"start_seconds":2048,"text":"so question I see is is test its net ready so I think I think the real question is defined test net because","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2048s"},{"start_seconds":2055,"text":"everybody out there defines test net in a very different way so I think I think probably the pure way of defining test net is the exact same network as main","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2055s"},{"start_seconds":2063,"text":"net only it's not maintenance it's a testing environment almost nobody who's actually claimed to have a test net actually defines it that way so there","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2063s"},{"start_seconds":2071,"text":"are a few there are a few release stages on the way to testament so the next one is to be running the multi node test definite so we call that alpha net the","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2071s"},{"start_seconds":2079,"text":"one after that is to add economics the one after that is that economics","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2079s"},{"start_seconds":2088,"text":"basically the multi node stuff is gonna be coming out in just a couple weeks or not even that it's probably probably about a week and then moving into","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2088s"},{"start_seconds":2096,"text":"economics the economics will be coming out shortly thereafter and so yeah that at that point you know you can already build applications at that point you'll","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2096s"},{"start_seconds":2103,"text":"be able to build even more in-depth applications and you know everything from there onwards is just gravy anyways I'll turn things over to Eugene","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2103s"},{"start_seconds":2112,"text":"stop bothering you guys and yeah what do you got","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2112s"},{"start_seconds":2117,"text":"Hey can you hear me I guess okay okay so","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2117s"},{"start_seconds":2126,"text":"I you all played with a near guestbook and I want to die for a little bit more is another example first before they","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2126s"},{"start_seconds":2135,"text":"start building something is their own request or I have a an option to build a","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2135s"},{"start_seconds":2142,"text":"pulling app so idea you will be able to vote on the chain so that should be fine","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2142s"},{"start_seconds":2152,"text":"so follow that happened when I sent a message okay sure I seem kind of lost the guestbook laughs","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2152s"},{"start_seconds":2160,"text":"okay get let me build it","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2160s"},{"start_seconds":2163,"text":"shots real quick oh yeah okay I got","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2163s"},{"start_seconds":2177,"text":"alright so so this how it works so when you post a message we can actually jump","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2177s"},{"start_seconds":2186,"text":"to a console and network and see what's going on so let's say I said hi so what","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2186s"},{"start_seconds":2192,"text":"happens is we do the following thing you","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2192s"},{"start_seconds":2199,"text":"basically submit a transaction that Adele gets to the chain and later we recorded on a smart contract but before","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2199s"},{"start_seconds":2208,"text":"what happens is we have a wallet that embedded as part of the as part of the","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2208s"},{"start_seconds":2217,"text":"application so it embedded using the iframe and the side frame contains wallet the primary feature is just a","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2217s"},{"start_seconds":2227,"text":"JavaScript that subscribe to a message so JavaScript so this wallet iframe","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2227s"},{"start_seconds":2233,"text":"holds your keys in a local storage so the application doesn't have access to this but when the application want to","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2233s"},{"start_seconds":2243,"text":"send a message what it does it creates a transaction that later sent","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2243s"},{"start_seconds":2251,"text":"deciphering through in browser messaging and this transaction is validated by the","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2251s"},{"start_seconds":2258,"text":"wallet and it checks the discount from the right application is authorized token it is directly to contract that a","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2258s"},{"start_seconds":2268,"text":"wallet authorized to to use for this particular token and it verifies that the transaction is not","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2268s"},{"start_seconds":2276,"text":"monetary which means it doesn't take stockings out of your account and after","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2276s"},{"start_seconds":2283,"text":"we did this the assemblée transaction is not going to harm a lot and we can automatically improve this so when their","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2283s"},{"start_seconds":2291,"text":"wallet approve the transaction it actually signs this transaction is your private key and then it sends the","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2291s"},{"start_seconds":2298,"text":"transaction back through the messaging up to guest book and this guestbook app","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2298s"},{"start_seconds":2306,"text":"is now have a side transaction which it sends to a definite and once a definite receive the same transaction from your","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2306s"},{"start_seconds":2314,"text":"account it can actually process it properly so on as part of the code","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2314s"},{"start_seconds":2323,"text":"what happens is we create a new message we assign it an index that is in the","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2323s"},{"start_seconds":2332,"text":"next index of number of messages and we update the global storage so I want to","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2332s"},{"start_seconds":2341,"text":"start a slightly simpler version then a guestbook which also has a wallet integration and we can go first you some","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2341s"},{"start_seconds":2349,"text":"details there so this is one of the templates and let me actually try it","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2349s"},{"start_seconds":2358,"text":"deployed so this template is pretty simple it has two functions it's saying the","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2358s"},{"start_seconds":2368,"text":"last person who said hi and it also allows you to authorize is near so when I do authorize is near it asked me to","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2368s"},{"start_seconds":2376,"text":"login and authorize the app I do this now it has my account ID and you can see","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2376s"},{"start_seconds":2384,"text":"on the top you have a talking and this token lets application to use my local","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2384s"},{"start_seconds":2393,"text":"wallet or get account start on my local wallet so when I say hi","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2393s"},{"start_seconds":2403,"text":"again the bullet signs the transaction and it's sent to the definite and here","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2403s"},{"start_seconds":2410,"text":"you can use it so let's go to a contract to see what's going on here","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2410s"},{"start_seconds":2418,"text":"so contract has two functions one is what we call a change method this method can modify the state","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2418s"},{"start_seconds":2427,"text":"well doesn't resort return anything and the second method is a few method it doesn't know the account who send this","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2427s"},{"start_seconds":2436,"text":"message or like who call this method and it cannot or shouldn't modify the state","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2436s"},{"start_seconds":2442,"text":"because it will throw an error if you try to modify the state so first method","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2442s"},{"start_seconds":2450,"text":"is say hi so this is what happens we have a contract context which contains","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2450s"},{"start_seconds":2458,"text":"information from the current transaction that was sent to the this contract and","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2458s"},{"start_seconds":2468,"text":"it contains the sender so this side count idea of the previous sellers who","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2468s"},{"start_seconds":2476,"text":"call this contract in our case it's our account so the person who called it's gonna be my account then we have a login","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2476s"},{"start_seconds":2485,"text":"function so login is just plain simple looks that we do not store on chain but","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2485s"},{"start_seconds":2494,"text":"later you can later you can debug it so","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2494s"},{"start_seconds":2501,"text":"whenever I whenever I sent a log so here","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2501s"},{"start_seconds":2510,"text":"this it's saying this contract logged Eugene say say say so this how it works","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2510s"},{"start_seconds":2518,"text":"so it used a sender just concatenate two strings and locked it into console so whenever I call this function I","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2518s"},{"start_seconds":2528,"text":"personally can read this once but also everybody on the chain can read this load for this particular transaction","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2528s"},{"start_seconds":2538,"text":"so then what they did we use a global storage object so global storage is a persistent storage","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2538s"},{"start_seconds":2545,"text":"it's a helper class and it has some functions like set either it takes a key which is a string can our case it's a","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2545s"},{"start_seconds":2553,"text":"fixed key lost sender and it takes value in our case it's an account ID account","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2553s"},{"start_seconds":2562,"text":"ID on our system is also a string right now and it just stores this drink here","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2562s"},{"start_seconds":2569,"text":"then we have you method which is saying who's that hi and it just retrieves this","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2569s"},{"start_seconds":2576,"text":"value by the key so what's interesting","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2576s"},{"start_seconds":2583,"text":"here is even though it's called global storage it's a storage for this","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2583s"},{"start_seconds":2589,"text":"particular contract which means if you would pull a different contract and use","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2589s"},{"start_seconds":2598,"text":"the same key you will have a different storage for this key but for this particular contract next time it","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2598s"},{"start_seconds":2606,"text":"executes it it will have the same value under the same key so it's isolated","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2606s"},{"start_seconds":2612,"text":"towards a particular contract and this is how you use so now let's look a","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2612s"},{"start_seconds":2622,"text":"little bit more on a front-end part and how we actually use this contract so we have a near lip","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2622s"},{"start_seconds":2629,"text":"it's our library that works is our dev net and it also has our integration with the wallet so we provide the wallet URL","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2629s"},{"start_seconds":2637,"text":"that you use and you also provide a contract so right now a contract name is","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2637s"},{"start_seconds":2643,"text":"studio - and this part which is our field that uniquely generated but you","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2643s"},{"start_seconds":2651,"text":"can see in my kind of full network you can actually deploy under a different name and like you can pick the name then","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2651s"},{"start_seconds":2660,"text":"wallet has access to account ID and the account ID is HR authorized or not so","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2660s"},{"start_seconds":2668,"text":"it's not authorised yet it's going to be empty then we create a client and this","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2668s"},{"start_seconds":2675,"text":"client connects to a wallet for signing transaction and retrieving","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2675s"},{"start_seconds":2682,"text":"account and also accessor a local node connection which connects so definite so","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2682s"},{"start_seconds":2689,"text":"it points to the URL and URL is provided by studio but you can use this config so","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2689s"},{"start_seconds":2696,"text":"in in our case for example like this you have app URL base URL contract name not","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2696s"},{"start_seconds":2706,"text":"URL so even so right now so here you can customize it so if you're running your","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2706s"},{"start_seconds":2714,"text":"local environment you can actually point it to local dammit so then what once you have an","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2714s"},{"start_seconds":2722,"text":"initialized client you can lower the contract so you give a contract name and","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2722s"},{"start_seconds":2730,"text":"also configuration and the configuration is ute method that you can use and change methods that you can use to","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2730s"},{"start_seconds":2740,"text":"change the state and also you provide a sender and this is the person or account ID you that it will be using to create","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2740s"},{"start_seconds":2748,"text":"original transactions ok so","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2748s"},{"start_seconds":2755,"text":"you have this object contract and if you formulators javascript you can actually debug it in a console and this is a cool","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2755s"},{"start_seconds":2763,"text":"part so it is asynchronous functions that actually interactive is a chain so","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2763s"},{"start_seconds":2770,"text":"you can for example say hi again it creates a promise this promise gets","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2770s"},{"start_seconds":2777,"text":"resolved it retrieves your bunch of clogs then some looks already dumped","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2777s"},{"start_seconds":2784,"text":"into console you can see that wallets and the log to a console as well saying it's fine I sign this transaction and at","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2784s"},{"start_seconds":2792,"text":"the end you get promise result and you have a result you will can also do have","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2792s"},{"start_seconds":2799,"text":"you made it so you can save you said hi and also give you a promise and once it's result it has a value the value is","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2799s"},{"start_seconds":2808,"text":"on teaching here so this how we use it here so we have a method update or cerci","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2808s"},{"start_seconds":2817,"text":"and this function is calling us at hide it checks the result and once it's ready","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2817s"},{"start_seconds":2825,"text":"it just displays it so that pretty much how integration this wallet works and","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2825s"},{"start_seconds":2833,"text":"what I want to build today is at least modify this out to work with something","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2833s"},{"start_seconds":2840,"text":"more complicated so we want to create a polling app where you can actually vote on a particular poll unless we have some","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2840s"},{"start_seconds":2847,"text":"other options too to see let's see okay","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2847s"},{"start_seconds":2854,"text":"do we have any requests for what we can build so far I've been keeping up with","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2854s"},{"start_seconds":2864,"text":"questions okay I think you guys have requests please make them tell can wait","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2864s"},{"start_seconds":2874,"text":"it world I think it's even more complicated than just a plain of opening and I don't know if I'll have enough time to actually finish just a plain","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2874s"},{"start_seconds":2882,"text":"wording it's like multiple questions that the user generated votes plus today","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2882s"},{"start_seconds":2891,"text":"we are not gonna touch a monetary transaction because they require slightly different flow from the wallet because they are not automated so","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2891s"},{"start_seconds":2900,"text":"application they will have to request a monetary transaction on demand and user will have to approve right now every","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2900s"},{"start_seconds":2907,"text":"single monetary transaction okay so I","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2907s"},{"start_seconds":2915,"text":"have another field which is pretty similar to what I have right now so let","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2915s"},{"start_seconds":2924,"text":"me just deploy it it has a little more things that is available by the nearest","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2924s"},{"start_seconds":2933,"text":"book an idea is we can use use more complicated models or storage","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2933s"},{"start_seconds":2945,"text":"so for example there's a Model Ts object","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2945s"},{"start_seconds":2951,"text":"which represent our data storage and I needed to test some particular objects","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2951s"},{"start_seconds":2959,"text":"so for example array of strings that I need the class is currently empty and","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2959s"},{"start_seconds":2966,"text":"what I'm gonna do is I'm gonna change this to something like a poll which will have a few fields so first of all it's","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2966s"},{"start_seconds":2974,"text":"gonna be an owner so there's a person who owns the the poll then it's gonna be","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2974s"},{"start_seconds":2982,"text":"an ID that's alright in 32 then it's gonna be a question this","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2982s"},{"start_seconds":2990,"text":"is a poll question and they're gonna be options and options it's going to be a","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2990s"},{"start_seconds":2997,"text":"list of options - to answer the poll so","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=2997s"},{"start_seconds":3004,"text":"now I have this poll object in mind out yes I can import it and behind this in","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3004s"},{"start_seconds":3012,"text":"what we do in Virginia right I generate serialization and deserialization methods for this","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3012s"},{"start_seconds":3020,"text":"particular object so you can use it as a much simpler than you would have to do","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3020s"},{"start_seconds":3027,"text":"and since everything is compiled at them to webassembly we have to have it and not rely on the compiler because well I","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3027s"},{"start_seconds":3036,"text":"guess we rely on the compiler but not rely on the son library because webassembly is pretty much standalone binary that you're running on chase so","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3036s"},{"start_seconds":3045,"text":"for polls you'll need a few methods so let's say when you create a method you","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3045s"},{"start_seconds":3052,"text":"just say what is this let's say we need at all and it will take question and OH","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3052s"},{"start_seconds":3069,"text":"and we also will have a method saying get all the given an index it's gonna","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3069s"},{"start_seconds":3079,"text":"return as a poll so this is a cool part is serialization science you build this you can just return it and sort of","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3079s"},{"start_seconds":3088,"text":"playing object instead of just returning some complicated types okay","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3088s"},{"start_seconds":3096,"text":"so it's going to be pretty similar to guestbook in sense whenever you create a","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3096s"},{"start_seconds":3102,"text":"new poll we will create object then we","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3102s"},{"start_seconds":3108,"text":"need to set an owner owner in our case","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3108s"},{"start_seconds":3113,"text":"gonna be comfort context a sender and we need an index so for the index we're","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3113s"},{"start_seconds":3122,"text":"gonna use latest number of message so","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3122s"},{"start_seconds":3127,"text":"number of false then we just assign a","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3127s"},{"start_seconds":3133,"text":"question and options so when you're","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3133s"},{"start_seconds":3141,"text":"dysfunction you can also expect it because you might find it useful so I'm","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3141s"},{"start_seconds":3150,"text":"not sure we have in a global storage","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3150s"},{"start_seconds":3157,"text":"whether we have in 32 so it's still pretty rough and some methods are still","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3157s"},{"start_seconds":3164,"text":"missing so if you're missing something that seems useful our file and issue in our github page so if you have a","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3164s"},{"start_seconds":3172,"text":"function or we have a button there to the power back which redirects the studio related stuff and we can use","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3172s"},{"start_seconds":3181,"text":"constants in like key examples and this","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3181s"},{"start_seconds":3187,"text":"constant it's all select one call","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3187s"},{"start_seconds":3195,"text":"in the heat torture okay so now when we","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3195s"},{"start_seconds":3202,"text":"add a pole we actually need to store it so to store it what we're gonna do we're","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3202s"},{"start_seconds":3212,"text":"gonna use method set bytes so set bytes takes array of IU 8 which is a binary","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3212s"},{"start_seconds":3221,"text":"array of serialized data so in our case neither key so let's say pokey and I'm","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3221s"},{"start_seconds":3231,"text":"gonna use Paul index and then I'm gonna use Paul in code so encode is a","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3231s"},{"start_seconds":3242,"text":"generated method that is not as you can see I didn't print it there or like I","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3242s"},{"start_seconds":3250,"text":"didn't vomit it but we oughta generate encode and decode for all and this is","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3250s"},{"start_seconds":3255,"text":"how we move data around so all key is going to be non-expert a function that","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3255s"},{"start_seconds":3264,"text":"will take an index I started to return as a string so we can use it as a key","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3264s"},{"start_seconds":3270,"text":"that's going to be say prefix","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3270s"},{"start_seconds":3285,"text":"mass index to stroke the batch script is","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3285s"},{"start_seconds":3293,"text":"still pretty early and for example for concatenation of string can a number you","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3293s"},{"start_seconds":3301,"text":"actually need to explicitly cast a number that string and stuff like this so some of this is still pain but other","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3301s"},{"start_seconds":3311,"text":"than this it's pretty similar to JavaScript and as next thing we need is once you save the object we actually","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3311s"},{"start_seconds":3318,"text":"need to increase the number of poles so in this case you're gonna use that I","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3318s"},{"start_seconds":3323,"text":"started to eat and it's going to be all","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3323s"},{"start_seconds":3330,"text":"indexed what's one so we add a time and","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3330s"},{"start_seconds":3338,"text":"you pole to storage so now we need to retrieve it to retrieve it we actually want to check that the index is not","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3338s"},{"start_seconds":3349,"text":"outside of the boundaries so it's a simple check we do have shirts so what","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3349s"},{"start_seconds":3363,"text":"you can do is you can say assert index should be more than 0 and index should","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3363s"},{"start_seconds":3371,"text":"be less than get number of false then","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3371s"},{"start_seconds":3377,"text":"you can throw them a message some select red index for example so now when","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3377s"},{"start_seconds":3387,"text":"someone calls gift calls what's gonna happen is it's gonna call check index","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3387s"},{"start_seconds":3393,"text":"and if assert fails you will have and there are thrown out here before you","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3393s"},{"start_seconds":3402,"text":"actually get continuing execution so checking early actually helps you to","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3402s"},{"start_seconds":3409,"text":"avoid wasting any transaction and any computational chain that you","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3409s"},{"start_seconds":3417,"text":"wouldn't need what else yes sir","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3417s"},{"start_seconds":3424,"text":"awesome a little bit more transaction model is pretty much similar to ethereal in terms of if you start executing a","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3424s"},{"start_seconds":3432,"text":"contract with a change method and you throw an error or assert fails but","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3432s"},{"start_seconds":3438,"text":"somewhere in the middle all changes to the state that you did before gonna be rolled back so you're not gonna change","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3438s"},{"start_seconds":3446,"text":"the state while you you will be potentially charged for all the computations need before so now how you","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3446s"},{"start_seconds":3456,"text":"actually return this can be just yet ball decode and you use get bytes","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3456s"},{"start_seconds":3464,"text":"instead of sandbox and just here follow","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3464s"},{"start_seconds":3472,"text":"index that's it so that's our basic class it doesn't have any voting but all","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3472s"},{"start_seconds":3481,"text":"it does is like you can create a poll of angry clear readable so we want to check","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3481s"},{"start_seconds":3489,"text":"that this thing works for this we will modify code will announce what now that","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3489s"},{"start_seconds":3497,"text":"we have so we have get number off and we","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3497s"},{"start_seconds":3505,"text":"have get ball and change method is at four so let's try to run it okay so it","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3505s"},{"start_seconds":3516,"text":"fails here because it's an index doesn't exist mono the ball yes I call it ID","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3516s"},{"start_seconds":3526,"text":"let's rename it to index","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3526s"},{"start_seconds":3532,"text":"it should be fine Thank You Jackson","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3532s"},{"start_seconds":3546,"text":"you should end this serialization okay","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3546s"},{"start_seconds":3553,"text":"so I saw this before I said it works on this video but maybe not so I'll then","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3553s"},{"start_seconds":3562,"text":"just change the way we do things","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3562s"},{"start_seconds":3569,"text":"let's try so it seems like a serialization of array of strings","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3569s"},{"start_seconds":3576,"text":"doesn't work in this case maybe it's try integers and","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3576s"},{"start_seconds":3588,"text":"then we need to change how we store options so what I'm gonna do I'm gonna","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3588s"},{"start_seconds":3599,"text":"use similar model you can text or both","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3599s"},{"start_seconds":3608,"text":"just for options instead okay so a real strength of integer works but array of","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3608s"},{"start_seconds":3616,"text":"options does not work I mean it's an only assignment here I guess like anyway","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3616s"},{"start_seconds":3625,"text":"so what we gonna do is we can the rename it to option IDs and then we're gonna","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3625s"},{"start_seconds":3634,"text":"store each option separately so iterate","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3634s"},{"start_seconds":3638,"text":"on ready functions and and store the one","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3638s"},{"start_seconds":3650,"text":"by one similar to how with the story new","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3650s"},{"start_seconds":3655,"text":"post I'll make a function which is get","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3655s"},{"start_seconds":3662,"text":"number of options so this doesn't have to be public because front-end is","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3662s"},{"start_seconds":3669,"text":"probably not gonna call it","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3669s"},{"start_seconds":3689,"text":"so we can use the Omega key or options","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3689s"},{"start_seconds":3700,"text":"which going to use graphics and then","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3700s"},{"start_seconds":3721,"text":"what I'm gonna do is I'm gonna use the global storage set","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3721s"},{"start_seconds":3728,"text":"so one thing we probably want to do is check that the number of options is not some obscure number so we want at least","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3728s"},{"start_seconds":3736,"text":"one option and maybe not more than some","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3736s"},{"start_seconds":3743,"text":"number let's say","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3743s"},{"start_seconds":3756,"text":"like some little functions let's say for so I'll do now store options in this","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3756s"},{"start_seconds":3767,"text":"case I hold the option key and I'm","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3767s"},{"start_seconds":3773,"text":"options plus I and then it's going to be","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3773s"},{"start_seconds":3779,"text":"options and I also need to store the new number put a number of options in this","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3779s"},{"start_seconds":3788,"text":"case it's gonna be some options plus","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3788s"},{"start_seconds":3800,"text":"options oh ok let's see this Forks seems","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3800s"},{"start_seconds":3808,"text":"fine we got it to work and I think we can","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3808s"},{"start_seconds":3815,"text":"store options what I forgot to do is to put them in for so what I need to do by","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3815s"},{"start_seconds":3824,"text":"creating an array this option online and","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3824s"},{"start_seconds":3833,"text":"then I can just say I attend to","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3833s"},{"start_seconds":3851,"text":"okay so now to retrieve a pole","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3851s"},{"start_seconds":3860,"text":"you would need to actually manually retrieve every single option but this is some just our problem right now is the","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3860s"},{"start_seconds":3868,"text":"compiler so let's try actually add a","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3868s"},{"start_seconds":3873,"text":"function to retrieve option similar to","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3873s"},{"start_seconds":3880,"text":"get Paul accepting you to check option index and this connect checks are so","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3880s"},{"start_seconds":3890,"text":"similar to all except it's aptly gonna","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3890s"},{"start_seconds":3905,"text":"check it on double network options then","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3905s"},{"start_seconds":3910,"text":"you use option key index and it will you","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3910s"},{"start_seconds":3918,"text":"don't need to decode it because just a string yes sir why bx","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3918s"},{"start_seconds":3931,"text":"in function so the export functions from","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3931s"},{"start_seconds":3936,"text":"NTS is our contract code and this is the code that gonna be running on a","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3936s"},{"start_seconds":3945,"text":"blockchain so this code is currently in typescript and it's kind of variation of","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3945s"},{"start_seconds":3952,"text":"a typescript called assembly script that compiles to webassembly so exported functions are the function that going to","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3952s"},{"start_seconds":3959,"text":"be available to a blockchain to be called so for example the work chain will not be able to call check index","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3959s"},{"start_seconds":3968,"text":"directly because this function is not expected but function like get bowlegged","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3968s"},{"start_seconds":3973,"text":"option you'll be able to be cold so functions by default I think they're","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3973s"},{"start_seconds":3982,"text":"public but I'm not sure if I set my","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3982s"},{"start_seconds":3989,"text":"script respects visibility properly what we do is so if you do not export a","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3989s"},{"start_seconds":3998,"text":"function it's pretty much bulletproof and no other contract can call it then","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=3998s"},{"start_seconds":4005,"text":"we use right now and prefix underscore","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4005s"},{"start_seconds":4011,"text":"so something like get Polti so","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4011s"},{"start_seconds":4018,"text":"underscore get Polti is even so it's experts it no other contract you'll be","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4018s"},{"start_seconds":4024,"text":"able to call it or no user can initiate a call but because we're using a sharded","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4024s"},{"start_seconds":4033,"text":"blockchain we use asynchronous callbacks on the chain so it's more complicated probably topic to file next webinar","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4033s"},{"start_seconds":4042,"text":"but this function will not be able to you will not be able to call it from your application it's gonna say this is","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4042s"},{"start_seconds":4051,"text":"a private method and you shouldn't call it but your your contract by itself will","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4051s"},{"start_seconds":4060,"text":"be able to call this function if needed as part of the code","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4060s"},{"start_seconds":4066,"text":"so let's go to the front end another new method that we need we just get option","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4066s"},{"start_seconds":4075,"text":"and just get a number of options that","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4075s"},{"start_seconds":4084,"text":"will click we check out its turret yeah so now when we deploy it occurred so","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4084s"},{"start_seconds":4094,"text":"what happens is because we provided this contract and loaded this contract so now","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4094s"},{"start_seconds":4102,"text":"this contract is available for me to go so for example I can check contract get","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4102s"},{"start_seconds":4109,"text":"number of options and expert not found","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4109s"},{"start_seconds":4117,"text":"so maybe I did something that is working","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4117s"},{"start_seconds":4126,"text":"but oh yeah so I did an expert dysfunction actually and that's why it's","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4126s"},{"start_seconds":4132,"text":"not found but ok number of both is fine","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4132s"},{"start_seconds":4139,"text":"so it's resolved and saying 0 so let's actually remove this so I don't","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4139s"},{"start_seconds":4145,"text":"accidentally call it ok so what we can","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4145s"},{"start_seconds":4153,"text":"do now even so we don't have any UI for this we can use a console to actually add a pole","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4153s"},{"start_seconds":4160,"text":"so now the use arguments we before all our calls were without arguments and I didn't explain how it works","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4160s"},{"start_seconds":4167,"text":"so what we did is we currently using just a plain JSON serializer for","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4167s"},{"start_seconds":4174,"text":"arguments so you can say add Paul create an object you say question what and then","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4174s"},{"start_seconds":4185,"text":"options so this like your answer and you can say sounds like","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4185s"},{"start_seconds":4194,"text":"and it's our hamstring so then you pretty much can close it and it's gonna","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4194s"},{"start_seconds":4203,"text":"call it okay we can't ID is not relative yes that's right that's because I didn't","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4203s"},{"start_seconds":4210,"text":"sign it up with my near account so let me do this and now we can repeat this","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4210s"},{"start_seconds":4217,"text":"ball and spending not sure why it's been","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4217s"},{"start_seconds":4233,"text":"maybe just didn't resolve it on time","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4233s"},{"start_seconds":4241,"text":"okay so I guess I just clicked way too","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4241s"},{"start_seconds":4248,"text":"fast to some self unoffending promise it was not very soft that's right","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4248s"},{"start_seconds":4257,"text":"so down at the ball and we can now","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4257s"},{"start_seconds":4261,"text":"retrieve this index zero it's resolved","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4261s"},{"start_seconds":4271,"text":"so having my object which has index it has option ideas such as in the system","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4271s"},{"start_seconds":4279,"text":"options zero and one it has owner which is my account and it","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4279s"},{"start_seconds":4286,"text":"also has a question so we can also do adoption let's say zero first and it's","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4286s"},{"start_seconds":4296,"text":"result to the 1/nth one aha","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4296s"},{"start_seconds":4304,"text":"so we can see because of the or assert","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4304s"},{"start_seconds":4311,"text":"failed so I didn't like my option one","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4311s"},{"start_seconds":4317,"text":"some reason so let's see what's going on","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4317s"},{"start_seconds":4329,"text":"functions I use that's right","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4329s"},{"start_seconds":4333,"text":"and check out from index so this will be","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4333s"},{"start_seconds":4342,"text":"to you unless I forgot to change","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4342s"},{"start_seconds":4348,"text":"something let's basically expert dysfunction so","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4348s"},{"start_seconds":4358,"text":"you can see learn more and we can now","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4358s"},{"start_seconds":4365,"text":"retrieve this function and we can see","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4365s"},{"start_seconds":4372,"text":"what's the number of options have it","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4372s"},{"start_seconds":4381,"text":"okay so it's to some time quite sure why it failed","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4381s"},{"start_seconds":4389,"text":"alright so the reason why it fails is because","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4389s"},{"start_seconds":4397,"text":"to call this function you need to provide a J so it doesn't take a single argument you need to provide something like the attend X 1 and it will retrieve","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4397s"},{"start_seconds":4407,"text":"an option number 1 and that's how your trip 0 so the reason why it worked before for 0 is because some JavaScript","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4407s"},{"start_seconds":4417,"text":"0 equals to empty object and here we just turn this realization and the","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4417s"},{"start_seconds":4424,"text":"integer became as your as well okay so now we got a functionality of the","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4424s"},{"start_seconds":4431,"text":"contract working how we actually can display it is more like a UI work so we","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4431s"},{"start_seconds":4440,"text":"can go to JavaScript and here I have my function culture afresh top and this refresh top previously was retrieving","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4440s"},{"start_seconds":4449,"text":"like kusik high so now I'm gonna do","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4449s"},{"start_seconds":4453,"text":"contract let's say get number of polls","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4453s"},{"start_seconds":4464,"text":"and I'll start remembering my current number of calls so at the beginning at 0","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4464s"},{"start_seconds":4473,"text":"once it's result I get a call back is the current number I guess new number","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4473s"},{"start_seconds":4483,"text":"and I can now use this so first I need to initialize it's like we have way too","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4483s"},{"start_seconds":4491,"text":"many polls I don't want to fetch all of them so I will do down call 0 I'll do","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4491s"},{"start_seconds":4498,"text":"now post equal to X 0 new span and then","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4498s"},{"start_seconds":4509,"text":"I will retrieve them one by one that'll do this","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4509s"},{"start_seconds":4517,"text":"using a look but they also gonna do this","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4517s"},{"start_seconds":4527,"text":"a synchronously selfie running multiple now still reply faster and I'll just say","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4527s"},{"start_seconds":4536,"text":"for example H vegetable said I fetched","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4536s"},{"start_seconds":4544,"text":"all my poles and now I just need to update the current number so I don't you catch them later","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4544s"},{"start_seconds":4550,"text":"what fetch well gonna do it has index and this index is the pole number that I","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4550s"},{"start_seconds":4560,"text":"need to fetch and this is how I'm gonna do this I'll do it ball index index then","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4560s"},{"start_seconds":4572,"text":"do a callback for poor result I have my pole I can also keep all of my boss that","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4572s"},{"start_seconds":4582,"text":"I fetched in the array so I can later use them where they need to do something","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4582s"},{"start_seconds":4588,"text":"so I'll save it all index and I can also","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4588s"},{"start_seconds":4597,"text":"display it immediately but we also want to display options so to display it","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4597s"},{"start_seconds":4604,"text":"I might need some UI work so here I have","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4604s"},{"start_seconds":4611,"text":"top the name of the poles and I believe","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4611s"},{"start_seconds":4618,"text":"that I'm going to use for","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4618s"},{"start_seconds":4628,"text":"so it can be done much nicer if you use one of the JavaScript frameworks to actually display something absolutely","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4628s"},{"start_seconds":4635,"text":"correct and I think you've got some plans to do a basic are components to just demonstrate how to do this later","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4635s"},{"start_seconds":4646,"text":"so Oh every polity fish we can create some","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4646s"},{"start_seconds":4654,"text":"elements element let's go do not text","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4654s"},{"start_seconds":4666,"text":"gonna be all Christian and list a row so","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4666s"},{"start_seconds":4678,"text":"I'm using bootstrap and let's just for","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4678s"},{"start_seconds":4703,"text":"now verify that it works oh and later you're gonna fetch a list of options so","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4703s"},{"start_seconds":4713,"text":"when we don't need to redeploy a contract the front and there's updated on a safe so you can just refresh this and it's gonna work and you can see that","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4713s"},{"start_seconds":4723,"text":"I get my one up all option which is well so now we're gonna fetch options as well","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4723s"},{"start_seconds":4732,"text":"so to fetch options we can use parallel fetching as well but we cannot do","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4732s"},{"start_seconds":4739,"text":"something different we're going to pass the element that it needs to update once","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4739s"},{"start_seconds":4744,"text":"it done fetching it oh and because pretty similar to what we did here which","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4744s"},{"start_seconds":4753,"text":"is we're going to do get option index","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4753s"},{"start_seconds":4763,"text":"and here what we're going to do is element innertext","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4763s"},{"start_seconds":4770,"text":"equal to so now for every element or","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4770s"},{"start_seconds":4782,"text":"every open that I have I use I'll create","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4782s"},{"start_seconds":4802,"text":"a button or an option that some classes","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4802s"},{"start_seconds":4829,"text":"and also I need to add this to an","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4829s"},{"start_seconds":4836,"text":"element","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4836s"},{"start_seconds":4847,"text":"and we call each option that will","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4847s"},{"start_seconds":4851,"text":"retrieve the option index or populate","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4851s"},{"start_seconds":4858,"text":"the bottom box and fetch them so this was done so we can refresh and for each","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4858s"},{"start_seconds":4867,"text":"doesn't work okay guess I'll just oh","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4867s"},{"start_seconds":4874,"text":"wait it's option IDs okay so it works","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4874s"},{"start_seconds":4881,"text":"except it doesn't look nice yes because it doesn't work for all","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4881s"},{"start_seconds":4894,"text":"right so that's a basic UI that we just did on top of the contract so what other","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4894s"},{"start_seconds":4904,"text":"features we might want to do later is actual voting and when you press a button you would call a contract again","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4904s"},{"start_seconds":4913,"text":"to more than this particular oral whole index and also record that you're","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4913s"},{"start_seconds":4920,"text":"warning for this option then we're gonna record that you bought it for this particular poll and you're not gonna","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4920s"},{"start_seconds":4927,"text":"allow you to what again and we also gonna do count the number of votes per","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4927s"},{"start_seconds":4937,"text":"option okay I think I can stop right now","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4937s"},{"start_seconds":4943,"text":"and just start answering questions","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4943s"},{"start_seconds":4951,"text":"as a reminder of it do this we're due here as a reminder if anyone wants to","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4951s"},{"start_seconds":4957,"text":"ask questions live like over voice just you know feel free and I'll promote you to so that you can do that that can be","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4957s"},{"start_seconds":4965,"text":"the easiest way for Q&A come on people","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4965s"},{"start_seconds":4984,"text":"i J Europe if you want to be I are you","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4984s"},{"start_seconds":4998,"text":"able to listen okay thank you hey great job and then I have a quick question say","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=4998s"},{"start_seconds":5005,"text":"we have a requirement of storing a large number of files so me because there they","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=5005s"},{"start_seconds":5013,"text":"might vary in size and so what is the mechanism like you know so we had to use the external storage and stored the ash","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=5013s"},{"start_seconds":5022,"text":"into the blockchain or yeah well that's probably like the best option right now because storage on blockchain is mostly","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=5022s"},{"start_seconds":5032,"text":"used by contracts so if you don't need to use this file on chain you can use a","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=5032s"},{"start_seconds":5042,"text":"hash and just like retrieve it by the","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=5042s"},{"start_seconds":5045,"text":"hash of my url okay okay thank you yeah","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=5045s"},{"start_seconds":5056,"text":"so we've had an example where we actually did this we used ipfs and","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=5056s"},{"start_seconds":5063,"text":"JavaScript version of ipfs but currently javascript ipfs is not working properly","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=5063s"},{"start_seconds":5070,"text":"otherwise you could show this as well","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=5070s"},{"start_seconds":5078,"text":"another question yes yeah so - is actual","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=5078s"},{"start_seconds":5087,"text":"contract this is the code that you first write but then we compile it and we","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=5087s"},{"start_seconds":5095,"text":"create some piles like for example this is the file in assembly script for the","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=5095s"},{"start_seconds":5106,"text":"model cyclists sterilization in it in this relation then we have a my year yes","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=5106s"},{"start_seconds":5114,"text":"that is a compiled - yes file which also has some civilization D civilization and a rappers are out","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=5114s"},{"start_seconds":5123,"text":"functions because webassembly has the world limited set of types that you can","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=5123s"},{"start_seconds":5129,"text":"use is pretty much integers and then","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=5129s"},{"start_seconds":5137,"text":"all of this compiles later to webassembly so that wasn't good window tamasam is actually the verb assembly in","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=5137s"},{"start_seconds":5146,"text":"the text format but because studio that we use allows us to just display web","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=5146s"},{"start_seconds":5155,"text":"assembly code in text format it's what it does it looks like a assembly with a","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=5155s"},{"start_seconds":5163,"text":"sub light reflections actually looks pretty nice there even so you kind of","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=5163s"},{"start_seconds":5168,"text":"trade it that's all we have","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=5168s"},{"start_seconds":5177,"text":"I think we can wrap it up let's see","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=5177s"},{"start_seconds":5188,"text":"okay thanks everyone three different","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=5188s"},{"start_seconds":5198,"text":"things here sure my screen one last time","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=5198s"},{"start_seconds":5206,"text":"here so thank you guys all of you so","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=5206s"},{"start_seconds":5212,"text":"yeah it's very end here I just wanna say thanks a lot for yeah forgot about this","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=5212s"},{"start_seconds":5221,"text":"little part yeah so if you have questions these are the places to go and India today we're moving super fast and","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=5221s"},{"start_seconds":5230,"text":"and get anything shipped we you know you've seen the developer experience already honestly if you have an idea for something that you want to put together","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=5230s"},{"start_seconds":5237,"text":"if you're curious join the disk or you know like we're here during the days and our entire existence is predicated on helping you so you know if you have an","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=5237s"},{"start_seconds":5245,"text":"idea that you wants and feedback on if you you know if you're curious how to use this in general like week at least point you in the right direction so you know we're friendly folks and would love","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=5245s"},{"start_seconds":5254,"text":"to have you so thanks a lot for taking some time this evening and you know I hope you have a great with your evening","url":"https://www.youtube.com/watch?v=e_QOMBZS5gs&t=5254s"}],"youtube_url":"https://youtube.com/watch?v=e_QOMBZS5gs","url":"https://near-pedia.xyz/videos/e_QOMBZS5gs"}