New Ethereum talks, every Monday. The week's conference uploads by event, in your inbox.

Loading player…

Ethereum Dev Onboarding Session

ETHGlobalFri, Oct 9, 2020, 12:00 AM

During this hour, we went through resources for new devs just getting started in their Ethereum explorations. It can be hard knowing where to get started in this vast ecosystem - we hope this will help direct you as you dive in! 0:00 Intro by Linda Xie 1:40 Trent's Intro 2:33 Dev Panel Intros (Alexis, Austin Jordan) 4:22 What are the best resources for getting started? 12:50 Show us your stack - Jordan 19:13 Show us your stack - Austin (ETH.build, scaffold-eth) 32:07 Show us your stack - Alexis 35:36 What's one thing you knew when starting your journey 40:35 How should new devs think about ETH 2.0? 42:28 Solidity or Vyper 45:53 Live Question: Forking Mainnet with Ganache 48:05 Live Question: What interesting projects should we look into as references? 50:44 Live Question: Pros and Cons of Truffle, Buidler, Waffle 53:53 Live Question: Reprise: Forking Mainnet with Ganache 58:00 Live Question: "Properly managing my dev and personal wallets 1:00:13 Wrap up 1:01:54 Apply to ETHOnline! This first session featured: - Austin Griffith (Ethereum Foundation) https://twitter.com/austingriffith - Alexis Gauba (Opyn) https://twitter.com/AlexisGauba - Jordan Last https://twitter.com/lastmjs Sept 17th at 10am PDT // 1 pm EDT Note this is not an official program by the Ethereum Foundation. It is organized by Linda Xie (https://twitter.com/ljxie) and Trenton Van Epps (https://twitter.com/trent_vanepps).

Transcript

cool okay hey everyone thanks so much for attending this um this is our first session of the ethereum dev onboarding series so um hopefully we'll do many more of these if they're valuable um we basically want to make sure that new devs to this space have just a way to just feel comfortable and really understand how you navigate the ecosystem it can be really overwhelming at first when you first join ethereum um so we have just these like wonderful speakers today who are just some of the top educators in the space and we'll um we'll have a q a with them and um we also have a telegram group set up that the links in the calendar invite so if you want to like connect with the other attendees and work on something together or collaborate um definitely feel free to join that and chat with people um yeah so this is just an hour long so i don't want to talk too much in the beginning um thanks trent for co-organizing this with me um there's i'm really excited about all the work we're doing with this um and yeah so the format's going to be first we're going to have the dev panel we're going to have all the dubs intro themselves and then we're going to ask a couple of questions for them that we think are valuable then we're going to pull from the pre-submitted audience questions and cover like the most commonly asked ones that we think will be helpful and then we're just going to open up to live q a and we'll pull people up to unmute themselves and ask the questions uh just please don't ask any uh price related questions we're here to just talk about development um yeah so uh trent if you can maybe kick off and enjoy yourself and stuff sure definitely so i currently work with eath global some of you may have had experience or been to one of our events we do previous to 2020 we did all in-person hackathons around the world and in 2020 we've done a couple online hackathons and we're running one currently ethonline so i do community management and sort of help keep the wheels turning inside the organization um previously i was just a community member uh starting about 2016. so i've been around for a few years now cool um so then i guess like can we kick off the panel and maybe have every um everyone uh intro themselves very quickly and then trent will go into asking the questions that he prepared uh maybe alexis and then austin and then jordan sounds good hey everyone i'm alexis uh so i'm currently working um on open which is a d5 project um but had gotten into the space a couple years ago initially just through like um building trying to build interesting random dapps at blockchain at berkeley um and so excited to chat today awesome and i'm austin griffith a builder in the space i've worked on things like meta transactions and burner wallets and uh now i'm spending a lot of time on dev tooling and helping y'all get started being in an austin builder like me thanks for being here and i'm excited to uh show some stuff off hey my name is jordan jordan last um got into space in 2017 some for some reason i'd never really heard of all this stuff before studying computer science figured out you know this is like the ultimate and decentralized distributed system so i've been loving it ever since uh you might know some of the things i've done btc on ethereum.com i built that the east supply gate issue i built a script with some other people and hopefully put an end to some of the you know confusion but i guess not um yeah i just love building stuff so just have a bunch of projects i'm working on oh trent are you gonna um ask the dev question yeah do we want to do that before or after the going through the person's stack uh maybe it's just like we can start off with that and then get into it cool all right so i mean we asked everybody to submit um you know a question or two and linda and i have gone through those so many questions and picked out some of the most common ones so we'll just start with a few of those and hopefully it will hit at least a few people who submitted the same question so first one uh was what are the best resources for getting started now this is pretty pretty wide-ranging question so um maybe just start with your personal experience like what did you do when you first started and maybe what resources would you recommend today we'll start with jordan so yeah i think this question kind of depends on what it means to get started or how getting started are you if you have no programming experience whatsoever i'm not sure jumping straight into solidity is a good idea um if you just focus on slowly just smart contracts that's kind of i mean it's a major piece but it's kind of actually a small piece of the entire stack that we're trying to build here so if you have no programming experience whatsoever i highly recommend essentially jumping into web development understand the basics of html understand the basis of css understand the basics of javascript you know if you that i call it the triumvirate of languages kind of like in the roman times with those three things you can build amazing things you can build mobile things you can build server things you can build front and stuff and lots of the uh you know lots of the front end uh user interfaces so all this stuff is gonna be web so i say jump into some web get some basic programming experience there once you you know kind of have your way around programming just a little bit then you know it might be time to jump into solidity um and actually so let me let me walk that back just a little bit you don't have to jump straight into solidity either so you know writing smart contracts is one part of it but also interacting with smart contracts is a whole thing as well so um ethereum's essentially just a new backend environment for us to work with it's you're going to interact with it using apis just like you'd use any other api almost you know if you're using twilio or stripe or whatever apis ethereum you're going to interact with it with those apis doing http requests so in that way it's not necessarily different than than anything else that you're going to deal with there are obviously you know there are specific challenges and nuances to the environment that is ethereum it's a new computing environment it's a new backend environment so you will have to learn those things so a good way to jump into that just grab one of the client libraries personally i use ethers js i prefer it over web 3js you can also use the json rpc api directly if you want to and just pull data off of uh off of the blockchain you know just take a smart contract maybe unit swap or usdc or die grab the current supply of die if you can grab use chain link get get a price feed throw that on to the total supply of uh a bitcoin for example or of like wbtc or something so there's you can just kind of pull stuff off and read and then you know once you're good at reading stuff you know just kind of making a ui that can display then you might want to go a little bit deeper and actually start writing so when you start writing stuff you're actually signing and sending transactions and you can just use metamask essentially to do that for you combined with something like ethers or web3 and once you're reading and once you're writing then you might want to jump into actually creating your own smart contract and if you really want to get started with solidity sometimes i think it's just best to start there's tons of youtube videos tons of blog posts you know start reading some honestly though i would i mean what i'm doing personally is i look at the solidity documentation they have they have quick starts they have you know examples read that and use the remix ide if you're just getting started so remix.ethereum.org i believe it's a full-on development environment right in the browser tab and you can you know write a simple smart contract you can deploy it to just the browser you can deploy it to a test network like robson or any others and you can even deploy to mainnet so yeah well so let me jump in so to summarize you you would recommend first that you don't have to start making smart contracts right off the bat you can start by learning how to interact with existing ones that's the first thing and then the other thing you mentioned was to have a proper foundation of like pre-existing foundational skills that inform learning about solidity and then maybe once you've got those things under your belt you can uh move into actually writing smart contracts exactly yep cool awesome alexis you want to take a swing and that one what are the best resources for getting started yeah for sure um yeah one thing that personally helped me a lot when i was getting started actually just being a really curious user of applications that already exist so going and trying things and trying to understand exactly how it worked so i'd make a transaction on say uniswap and then click the etherscan link and ether scan takes you to where you can see like all of the different transactions that occurred um in that one kind of call and trying to understand how did each one of these things actually work and going and trying to map that back to those existing contracts that actually exist and so i found that that was one thing that was actually really helpful for me is trying to understand how the existing kind of best practices fit together how they work in production and also helped me kind of get a sense of oh you know as a user i would want to do this or i would want to do that which also helped me kind of figure out what i would want to build initially um so that's one thing that i would suggest and then in terms of a tangible resource when it comes to solidity one thing that has been really cool to see come up is crypto zombies um so i know that wasn't or that when i was starting it was kind of it was also kind of just starting but that was a super fun way to learn it's a game and you go through different levels um and so that's a that's i think a great way to get started with solidity awesome yeah i know a lot of people have their initiation ritual learning doing the crypto zombies uh tutorial series austin yeah i think echoing back basically what happened there like if you're not a great developer make sure you can build a product on web 2 first right like go build a to-do list go build something that you'll use build something and give it to your friends and let them use it just just iterate on what it's like to build a product first and then think about okay now with this new just like jordan said it's similar to a database right this new paradigm of storage it's going to be more expensive it's backed by a lot of other things and a lot of other trust assumptions but it is still just a storage layer and think of it like you've got your front end and your back end and you know you can you can go to places you can google things like ethereum.

org has a lot of developer uh stuff i got started like with youtube videos like jordan lay's decipher media he went through just like here's how to build a dap and it was it was like eye-opening to see him build through things and kind of get context for the space and and for me that really got me going so like look for other people building things look for the resources uh like on ethereum.org uh if if you are into the fundamentals check out eath build and then if you're ready to start building check out scaffolding and i will shield those uh some more later but uh yeah i love the idea of know exactly what's going on like what alexis says like sure like you send some stuff around you approve some stuff you transfer some stuff you think you're an expert but do you really get under get under the sheets and figure out what's going on with those bits figure out like how to underflow a variable simple things like that but it's neat to actually test those assumptions and try that and prove to yourself sure enough yes this is how it works and i've done everything just right and and sure enough when i you know fire that transaction off that that magic thing does happen be curious be snooping around be poking around either scan awesome all right so let's let's switch it up from verbal questions and uh why don't we do the show us your stack a lot of people asked about this and i know everybody's jordan alexis austin you're working on different things so you might have a little bit different but uh jordan why don't you start uh share your screen if you have stuff ready um let's let's see what you what you used to build okay screen's good you can see it yes okay so i mean like i said if you focus on the web essentially the first thing that you're going to need is to install node.js nodejs comes with npm which is the node package manager so first step just install node.js i highly recommend not installing it with the default operating system way of installing it but to use nvm which is the node version manager uh okay so once you have node installed you're going to create a package.json this is kind of like you know the main configuration file for the entire application and these are uh the dependencies that i use for interacting with smart contracts from a front end or essentially from anywhere i really recommend ether's js i love it it's simple it works great and the the develop the maintainer of the library is uh just very responsive to any issues that you might have it's super helpful um you know for a front end you're going to need some kind of component model there's react there's view there's angular december there's all those personally i use web components so you know there's there's actually a component standard built straight into the browser i just use you know the raw custom elements and i use a templating library called html right here and essentially gives me the power of react but uh just without all the dependencies that react gives me and then i use redux i wrote a little library to help me use redux a little bit better so yeah front end for ethereum development i use custom elements lit html redux and ethers your stack like i said might be different ethers is kind of the common thing here but your you know ethers and react it'll work great ether ethers in view that'll work great ethers and angular that'll work just fine ethers and vanilla.

js it doesn't matter okay then so this this project is actually a does have some smart contract capabilities so i highly recommend waffle i just started using this but it's really nice super simple testing library uh it will you know spin up a local ethereum node just in memory for you and it'll let you write your tests using very common testing uh libraries so chai or kai very common testing library it's not ethereum specific but ethereum waffle integrates with it same thing with mocha not ethereum or specific but waffle lets you integrate with it and you know there's you don't have to use waffle you could use a lot of people use truffle and i'm sure austin has a different setup and opinions on these as well um and maybe alexis as well um and you know that's mostly it i i personally also love typescript so when i'm doing typescript on the back end i use ts node it gives you almost the same cli as a as node you just add ts on it and so boom i can write everything in typescript typestrict is nice because it helps you write maintainable code catches lots of bugs for you and in my opinion makes things much more understandable and readable and and it will catch bugs before you run your code so not all bugs but there's a certain class of bugs that it's gonna really help you with and then on the front end you know if you want typescript and all the crazy stuff a lot of people will use webpack or parcel or some kind of bundler personally i don't i don't use bundler so i use a project that i made called zwieterion and in my opinion it's it's much simpler than the bundlers and it just kind of you know it lets you compile things in real time and you can do other languages like assembly script and rust and cnc plus you know to varying levels of uh of usefulness there so i think that's mostly i mean that's that's that's those are the dependencies that i use that's kind of the stack and that's probably good for now so awesome one quick follow-up what sort of um projects like what takes up the most of your development time using that that setup like what sort of things you work on most often i am mostly focused on interacting with smart contracts so that most of my projects have been all right other people have smart contracts deployed so i'm going to be writing front-end code that deals with you know private keys public keys and signing and sending transactions or just pulling information off of the blockchain and compiling it down and then kind of visualizing it so that's most of of what i'm doing i i'm about to launch an nft project so you know this this setup that i showed you right here is uh has that smart contract stuff i also have so you know if you're actually writing a smart contract you're going to need more than just the front end obviously you need the contracts you need to write tests unless it's truly just a prototype and maybe on a test network but you really should have automated tests so you know this proof of rank project is going to have you know the actual contracts folder and it's going to have i mean you know here's some tests i really recommend for testing property based testing so i use a library called fast check essentially takes unit testing a step further and lets you write kind of arbitrary essentially let you write an infinite test case in one test case instead of just writing one example by using uh random inputs so sorry that that's that's the answer do you want to drop a link to that uh fast check you just mentioned in the chat yep austin um do you wanna do you wanna share what you've got a little bit of eat build yeah for sure okay so uh my dev oh whoops took it i stopped it start it and stop it that's all you get that's it okay here we go so my dev stack so first i want to talk about just like introductory if you're wanting to kind of figure out the basics you want to learn how a hash function a key pair transactions encryption byzantine general blockchain transaction smart contracts work this is a good place to go eat.build i've done videos basically the if you click build here you get kind of a sandbox and you can move things around and you can wire things up but what i've done here with e-filled is use this platform to create kind of tutorials on how things work uh for instance let's just prove to ourself that given some key pair here a key pair is just a private key right and then the public key is derived from that and then you get an address that comes out of that right and someone might tell you that your address your address is a hash of your public key but if you wanted to prove it to yourself if you wanted to test those assumptions you can get in here and pull that out and then if we look along here somewhere actually can i turn this into a nice little let's see yeah let's do this there we go we can see that guy line up there see that the eight f is is actually the given sum private key we derive a public key then then we get a hash of that to get our address right simple stuff but then you can use those to kind of like sign and recover data or or maybe encrypt and and decrypt some data uh it gets pretty far into weird blockchain stuff you can actually kind of kind of compile and deploy a contract and this is a module if i click into this we see that there's a bunch more stuff underneath that a compiler that's giving us the abi blockchain transactions just this this really kind of like visceral hands-on experience to let you test those assumptions that's that's eth dot build and all i think that got put into the chat so i won't worry about it but not just with building you can get in here and just watch me build and figure out how i go through and do things and the audio i don't have this nice soft aperture video and and good mic back then so you'll have to deal with some choppy audio but uh the the content is good i promise then once you kind of have the the fundamentals figured out and you've got an idea for for how you want to build some kind of product that's what i made scaffold eth for and scaffolding isn't really a product itself it's sort of a stack of existing products uh one of those is biddler.dev so bidler you'll probably hear about a lot today i hope it's it's kind of like a replacement for truffle it's kind of they they rebuilt the evm in a way that gives you lots of good debugging out of your your local contracts you can do a console log writing your contract and then if you're just writing uh the front end check out create eath app or yeah yeah paul berg's create eath app it's basically um a bunch of templates ready to go for you to just fork create i think you just do like mpx create evap or something like that but basically it gives you a react app right away with some templates in there whether you're talking to the uni-swap contracts or the maker contracts check this out if you're going to create something that doesn't need sort of a back end built in with it or you're not trying to like prototype something but if you are trying to prototype something and you kind of need the full stack both smart contract back end and and some kind of react front end scaffold eth brings both of those to you in in one simple clone so the reason i put it into a repo is there's all sorts of dependencies and you can run into dependency hell and have problems with no chip and stuff like that so i put it all into a repo and then i put in all the fun components and hooks and stuff that i find myself using for a decentralized app so if you're like this this is a perfect hackathon stack if you're about to start a hackathon and you want to have like the tools ready to go for you and you don't want to spend the first three days trying to get your your stack ready basically you can just clone scaffold eath and hit the ground running you'll do a yarn install and that takes a while and it does throw some no chip warnings but just go ahead and ignore those and you'll get your dev environment up with a yarn start you'll get your biddler node up with a yarn run chain and then you have uh yarn run deploy over here and that's going to compile a local contract that i have for you here so so basically you start out with a backing and a front end you've got your your contract and then you've got your app dot jsx and i've done a lot to sort of scaffold this with tons of comments trying to explain like okay here's how you get your balance here's how you go uh load some contracts or go read from some contracts or maybe go read events into an array just there's a lot of front end stuff kind of just scaffold in for you but what's most important is this nice little contract function i built this contract component so when you have your app up and running basically you get that this nice little like contract scaffolding and what that's doing is it's it's taking so let's let's do this real quick i'm going to create a eight public counter i'm gonna set it to one and then i'm going to create a function that decrements that counter by one and we'll make it public so we'll do counter minus minus and and that's that's it basically then i can do a yarn run deploy over here so here's here's my dev loop i've got a nice tight dev loop where i can change a little slitty i can test my assumptions what the heck does u and eight do and you'll see that the the app hot reloads do you see that i got a new contract let's do it again under yarn run deploy so it compiles my local contract ships it up to my local chain takes the artifacts and injects it into the front end and we get a hot reload see that new address show up and i've got two different players so this shows that i've got an incognito window any incognito window is going to generate you a burner wallet when you land on any any app built with scaffold eth you get a burner wallet right away a good example of that is nifty inc if you go to nifty inc right now it's an nft platform that we launched with meta transactions burner wallets side chains please don't show a dick right now okay good but basically what you can do is anybody can get in here and create and they're going to have a an address right away if i log out of here or if i open up nifty inc in an incognito window i get one of these addresses that's and it's a full wallet ready to go so a lot of these components like oh here let me find this component say you want a two address right it's got a scanner built in on it so you create an an address input and it's already got a qr code scanner hooked up to it watch what you can do you can even type in austingriffith.ethan it's going to auto resolve that give you a nice blocky preview all these things that like every app needs this as their address input and every single dap builder is like rebuilding these things let's just kind of get these component libraries together for this this kind of reuse uh let's see so uh yeah so but here here's here's for the fun here so here's my counter that i created it was a um8 we're using eight bits when we decrement it oh wait we don't have any money wait wait wait wait wait we gotta have money to to operate on this network i'll go to this faucet and i'll send myself some funds uh oh so before we get to that you're right let's let's talk about this this guy's another address right this is a multiplayer game so i can pull up this address i can compare those two blockies i can send this guy a dollar hit send now this guy has a dollar right he has gas but what's gonna happen when i decrement this variable so it was a uint eight now it's zero what if i go again how many people on the call know what this value is going to be oh it's rolls it rolls under it's underflow right we went to 255. and sure you can know that you can say that but to have it happen right in front of you to be able to just write the code and go prove it real quick and you could say well what if that's a un-256 what happens it's so easy to test my friend you just change it right here you hit yarn run deploy and it'll pop up in your front end and then you can kind of poke at it and test those assumptions so that's what scaffold eat is for basically setting you up to test these things then eventually there's some ui that helps you sort of scaffold in and build your app if i hit set purpose here it's going to fire a transaction it's going to set this purpose up here and it's going to give me an event and so there's all these kind of nice things to follow just instructions uh i'm doing one-on-one dev sessions where we go through this for the first session and then i send you you'll find it in the scaffold eth repo there's some nice instructions here so so once you get your environment set up uh i have you open up solidity by example and solidity global units i think someone mentioned this earlier but look at this solidity by example look at this it's so clean so easy if you want to know how to create a mapping there it is there's the mapping right do you want to know how delegate call works click it well no no one no one truly knows how delegate call works actually it does it's just complicated okay but uh that's that's like this is the the reference material i have ready for someone have this all ready even just for inspiration and then you basically can just do this kind of edit your contract push it into your front end get the interaction right get it feeling right understand you know are my assumptions correct is this app gonna actually work and then you can do something like uh yarn yarn run build and yarn run s3 or or even yarn run surge and that will take a static build of your app and deploy it to to a website so within the second session basically uh the homework is let me go back to that the homework after the second session in here is to build a decentralized bank your homework is to build a decentralized bank basically get a smart contract have a deposit function have a withdrawal function track that message.

value use a mapping to take care of balances and if you want to go pro mode use the block.timestamp to pay a small amount of interest based on how long funds are locked up then there's a whole bunch there to follow but that's that's my speed run through my stack uh scaffold eth i will paste it into the chat uh thanks that was a long-winded uh yeah sorry so just just to summarize if i'm interpreting this quickly if i was a developer coming in with you know not a ton of experience you've created ethe.build as a tutorial series um for people to just like dive in and learn sequentially and then there's a playground that they can also do those um sort of that visual coding uh yeah yep exactly kind of being able to test those assumptions just with just like how does a hash function work how does a how does a key pair work then once you have those like can a key pair sign a transaction can i keep her sign a message can we recover that just seeing how things are kind of backed by the cryptography even before you even deal with transactions getting mined into blocks and and consensus mechanisms and stuff yeah and so and then you also created scaffold eth as a tool to help you build but it's also a bit of an educational resource so it's it's kind of a little bit of both things right it's kind of like uh kind of how jordan mentioned go to remix like remix is such a good idea because you can just land in a browser and you can put in some solid and you can test those assumptions this is sort of like that but it takes maybe five extra minutes to set up but then you have a local environment where you're testing those assumptions you can do it on an airplane but when you're ready you basically have this app underneath there you have all the state-of-the-art tools that are kind of hidden for you but but you you've got you've gained exposure and by the way he was talking about testing with waffle i mean if you look in there i'm testing with waffle too he's using ethers i'm using ethers i think someone was talking about a comparison between web3 and ethers earlier i think maybe web3 might be a tiny bit easier for a brand new person but i think we're moving toward ethers kind of being the the library that a lot of people use i think maybe there may be a little web 3 revival going on too so we'll see how that goes but uh yeah i i i think that like testing your assumptions iterating getting your hands dirty uh scaffolding is just meant to kind of like set everything up for you and kind of hide it away and let you play around and then slowly kind of peel the layers off and figure out how it works awesome we will uh have a lexus answer and then and then we'll keep going with the questions alexis uh tell us verbally what your stack is yeah i feel like that was super comprehensive um so that was really really awesome to hear from both of you guys i'll just shout out a couple of things that that we use um and and kind of talking about some of what i do so right now i'm also kind of mostly connecting contracts to a front end um so similarly i'm using react and typescript um you know all these fun things and one thing i wanted to shout out that i don't know that we've mentioned yet is something called the graph and the graph is a graphql api which makes it super simple to grab data um from the blockchain and so that is something that we like so we've built like a subgraph for open and that's how we kind of get all of our data and one thing i really like about that is once you've built this graph that has all this functionality it also makes it really easy for anyone in the community to come and build on top of your set of smart contracts and there are graphs for a ton of the big projects on ethereum whether that's compound or uniswap or you know what have you and so i think one really cool way to get started is to take you know a project you really like and do something interesting with a lot of data that they expose on the graph um so we've seen a lot of community members like build alternative interfaces to different projects um using these same kind of calls that are already available so i think that's a good way to start to get your hands dirty to understand how your favorite projects work and how calling actual data works without even having to write any solidity in the first place um so i think that's one thing that that's really cool and that's something that the graph is something that we use a lot and i wanted to touch on contracts just a little bit i think smart contracts can get a little bit more tricky um and one thing that's really important i think to build from the beginning is a security mindset when thinking about smart contracts especially if they're going to be holding a lot of funds and there are a lot of tools that can help you get started here and make this process easier so trail of bits has this great tool called critic and you can basically like run it continuously like every time you make a pr it'll run and it'll give you an analysis and report on any bugs it finds so even if you're not necessarily planning you know to make the first thing you build like a production app or anything like that i still think that's something that can be useful um they've got like a free trial for three months and that way you can see kind of what bugs pop up as you go along and fully understand them understand the implications especially if you want to build a contract that's going to hold real funds and then another helpful thing especially these days is something called eat gas reporter so it's another great library and it'll it'll every time you make a pr it'll tell you oh this functions using more gas so this function is using less gas and especially if you're trying to build something that you want other people to use given insane gas prices right now that's something that we use a lot in our stack um to make sure that the the functions aren't going to be super super gas intensive um create ethap which austin mentioned is also awesome that's something that like i personally use all the time so highly recommend that it comes um with like a react setup a sub graph set up and a contract setup so you can like immediately get started and so i think i think those are the main things i would call out in addition to what has already been mentioned awesome perfect um let's go to the next question which is you don't have to give a super long answer but just what's one thing that you wish you knew when you were first starting out jordan do you want to start i wish i had understood the um limitations of ethereum better so there's a certain class of applications you cannot build because it's far too expensive and far too slow and so if you don't understand those limitations you might have grand ideas that aren't going to come true which i yeah i applied for a grant to the attorney foundation with an idea that now i realized was just completely ridiculous and i did not get funding so yeah i can totally echo that 100 like and that was that's basically my answer is going into it like i thought i was gonna i thought i was a genius i thought i was gonna get rich and i thought i discovered something that no one else knew about and i'm spent months head heads down building that thing and so i i would say that the the advice here is first of all like you have a lot to learn right like you get to a certain point where you're like oh wow there's so much more where you didn't know that at the beginning there's so much to learn but also you have to kind of throw stuff away you may become married to an idea so much that you forget that like there's this like product market fit and context and even even just like limitations of ethereum right so you you've got to almost like work in public you've got to iterate you've got to get things in people's hands and see how they use them and you got to throw things away it's got to be okay to throw things away and and you got to put the ego aside you are not a genius you are not about to get rich well some people i guess have have gotten lucky along those ways but it's this is this is a a long play game where we're building kind of some some really neat technology that's going to have implications into the next decades don't try to get rich in a month with some hair brain idea okay yeah those are those are incredibly profound build in the open and you know just come to respect the limitations of what ethereum is and actually really quick somebody asked what would be a not a good fit like what austin what were you building around that time that you realize quickly well i built uh i for me i saw that oracles were going to be very important so i built like an oracle platform and it was going to be the first decentralized oracle platform and i i am not a genius the the just the game theory in crypto economics alone in involved with something like that is so far beyond me but a better answer to that is something that requires a bunch of like storage or something that requires quick speed there's a there's a lot of really great things that ethereum is is for kind of these trust minimize setups and something where you do need to be able to back to a public blockchain but there's a lot of apps that people you should ask yourself why blockchain right away and if you can't access if you can't answer that 100 then you are just messing around and a lot of my projects are just messing around right and some things come out of that but if you don't have a clear reason why you're using ethereum you probably shouldn't be perfect alexis yeah i guess i just kind of want to echo play off of what both jordan and austin have said about like iterating and and trying to figure out what really makes sense to build i think again a great place to start is working off of existing contracts um and building building interfaces off of that and then also the cool thing i think about ethereum is that all of these contracts are exposed on chain which means you can connect them in really cool ways and so connecting these different different contracts i think is a really great way to learn and that's that's something that i ended up doing like relatively early which was super helpful because you understand you get to understand the mechanics of how these things work and then get to build new things that that are that are connecting these kind of open apis and then i i'd also say like understand understand start to try to understand like the people that you're building for and kind of become the person you're building for or build something that you'd want to see yourself like talk to lots of users don't be afraid of sharing your ideas or your code like people in the community are so welcoming to like look at prototypes and give feedback and you know hop into discords like people are are always open to ask questions and stuff so you know even if something feels really early and i i'd almost say you should feel embarrassed to share your first thing because you want to share early and often and get that feedback because it'll help you improve what you're building help you move in a direction that's building something that people really want and are really excited about awesome thanks uh for sharing i think that's really helpful uh so we had a couple more questions that were pre-submitted that were really popular um if people want to just like also add in the chat questions um that you can ask the dev panel like we'll just unmute you and you can ask them so a really common question was how should new devs think about east 2.0 um will existing gaps need to be rewritten for it so love to hear your thoughts on that i guess i'll answer that um it seems so i'm not on the client team so i'm just going off public information and maybe some conversations on discords and stuff but it seems the latest research is heading towards something called ethereum phase 1.5 so let's just go over the phases real quick phase 0 is the beacon chain that's going to be proof of stake instead of proof of work it's going to be the foundation for all subsequent phases phase one is going to be sharding so we're going to split up the blockchain into into pieces instead of just being one coherent whole and phase 1.

5 is essentially taking ethereum 1.0 almost as is and putting it onto a shard on ethereum two and so it's going to take all the state all the applications everything and essentially essentially just put it into a shard and it should be a very seamless process to all of us you know any users of this applications you know metamask and infuria and all those um should should take care of that pretty easily if you run your own node you might have to download some extra software to get that working but essentially everything just can be ported to a shard is the current uh idea um so another really popular question was is solidity or viper better for beginners like what would you recommend i i can jump on that and just say solidity is a lot easier for me to read i think that like there is some kind of if you're a python person you might like viper more but whenever i uh going back to everything is public right when someone uh launches a uni token i can get in there and look at it right away before i even can touch their front end i can go see all their public contracts but i think that the that composability layer is pretty important and being able to go see that stuff is really important and for me i can read solidity a lot easier than i can viper but it's probably just because i've seen a lot of solidity which maybe isn't also an answer because there's just more solidity around for people to see i think i would guess that solidity is better for newcomers than viper is but maybe uh some other builders can chime in there yeah i would also shout out solidity also just because there's more documentation um i remember when i was starting and there was like also very little slightly documentation and you'd google and they'd be like you'd see the same question you have but no answers like now at least for solidity there are a lot more answers and with vipre it's even harder and i think when you're starting to build that's one of the biggest things like you run into you run into common problems when other devs have had those problems and have solutions it makes it a lot easier it helps you get unblocked i echo everything they just said we don't need tons of languages that are all trying to accomplish the same thing generally in my opinion so you're going to be going against the grain if you choose a language that kind of isn't the accepted language with the most network effects so solidity has the most network effects pretty much everyone's writing and solidity all the major projects i believe absolutely source code at least most of them so like i don't understand why you would just decide to choose to randomly kind of not randomly obviously it might have better better syntax you know you know there's trade-offs to everything but you're going to be going against the grain also just something interesting to think about is the future of solidity itself ethereum 2.0 once we get to phase two it's going to introduce potentially a web assembly based virtual machine if we do have a webassembly based virtual machine we can now use languages that compile the web assembly such as c c plus plus rust assembly script languages like that so you know your investment in typescript and javascript right now you know that may pay off huge dividends in the future because you might be able to write smart contracts in typescript assembly script um or rust or something like that and i don't know if solidity will survive that environment if we do have those other languages that have even far more powerful network effects than even solidity has and you know solidity might survive because they're you know a lot of people are writing it now but viper surviving into ethereum 2.0 that seems even less likely so if you're trying to you know if you have limited time and money like most of us do you probably want to choose something that's going to be around for a long time so that's my thoughts did we get everybody there cool all right um so this has been an awesome speed run now we're going to open it up into any live questions people had or if you wanted to follow up on something that was touched on earlier so if you do want to unmute um just give me uh if everybody knows that i use the raise hand function in zoom um i can't really demonstrate it but hopefully you can find the interface where you can raise your hand in the side panel or is it on the bottom now it might be on the bottom either way does anybody have any questions that they want to ask these excellent developers live in the participants tab yeah anybody anybody if not we can oh marcus yeah go ahead uh yeah hi guys can you hear me all right we've got two mark like names i'll i'll let marcus go first sorry so uh yeah thanks thanks all for for your introductions and everything uh going to the question i'm really excited about define about building on the top of other stacks on top of compound uh and wi-fi basically what i'm trying to do is um it's hard to use uh uh rink b or other test not because some of the smart controls are not there so so forth uh when i fork ethereum mainnet with the ganache fork the problem is that i don't have any ether to play with on on my fork of the mainnet [Music] oh no did we lose him was that i think he had to drop so maybe we'll wait to answer that while he rejoins uh mark maybe maybe we can jump to you sweet uh hello everyone just a quick question um uh earlier you guys mentioned that a good way of learning would be looking at like existing projects um and kind of digging through some of those contracts i guess my question is is i already have off the top of my head some projects i'd want to look into but do you guys have any interesting projects that you think are interesting in the way they're developed or have really good source code and be great to use as an example yeah i think here i i definitely shout out one like what you're most interested in because that'll be like fun for you to look at anyway um but compound and uniswap i think are two really good ones they they're both developed with like really good practices they're widely used contracts they're applications that you can test yourself and then kind of see what's going on in the background and they're both pretty active on discord so if you have questions it's a great place to hop into the channel and have lots of people you know chat chat about these things with you and answer different questions so i would definitely shout out those two yep totally just to piggyback on that like thinking about d5 and thinking about the primitives start picking out those primitives and figuring out what they are like for instance just how does an amm work what does that formula look like that calculates the amm how does lending work how do i how do i over collateralize collateralize alone how does the new stable credit work right looking at andre's new stable credit it's a similar thing where there's an amm but there's also like this there's a second amm for uh credit and how does how the heck does that work right so you could go grab that source code from etherscan you could paste it into something like scaffold eth and then have a nice sandbox to basically poke around and try your assumptions locally so yeah i would just say like look for those primitives and figure out like there's probably three lines of solidity that that makes the whole thing work really when you get into it go find those three lines and dissect them and understand them um how i do it kind of is i just go to each gas station and look at the biggest users of gas and unit swaps at the top so it's probably you know it's the most in-demand project seems kind of important so might as well go one that is a good proxy it'll save you a lot of time um cool tim we will uh just a note we only have a few minutes left so just try to keep your questions short so we can get to a couple different things but tim if you want to go ahead and unmute hey everyone uh thank you very much for for doing this it's been really great um i have a quick very simple question so we talked about different dev uh chains you can use so there's hitler uh waffle and there's also truffle or ganache i guess um if anyone wants to tell me the pros and cons of each um i'd be very very appreciative that's my question so i think that like truffle was just first and they they got the job done right for me like using truffle was always a little bit inferior infuriating like having truffle getting truffle working always kind of just like made me a little angry and i think that there we're kind of at a turning point for dev tooling where the tooling finally doesn't make us angry anymore and so i just like something that's new because of all the anger i had before but really truffle probably has all the same things now uh that that bidler does or bidler is staying ahead of them a little bit but you can get things like console log and stuff out so first of all the three are truffle with ganache right so you've got ganache as your or you've got biddler with their own evm and i think those are the two right actually not three two right so so you can choose which one of those two you want but ganache is cool because you can fire it up locally and it's just everyone else uses it also but i think bubbler is kind of like the next uh kind of uh coming of of that tooling i think and it's biddler.dev i'll tape type it in but i think everybody else should give their comment to just in case i don't want to be too uh uh opinionated yeah honestly for like for me like a truffle first and so i've just kept using truffle and now i feel like i really need to go check out all these other ones no no like strong opinion uh one thing to keep in mind is these aren't all chains necessarily so for example ganache it's its own local blockchain it can be used in multiple projects so i think truffle uses canash by default waffle uses ganache as well it sounds like biddler though austin uses its own thing they have their own evm so they can do things like console logs okay yeah so there's and and also you like if you really are looking just for a local chain you could just spin up guess or something and use it locally as well um as for the libraries i tried shuffle for like a second and it had this weird concept of migrations and i thought that sounds unnecessary and then i yeah exactly and then i asked on twitter probably you helped me too austin and uh people say waffle and then i will um i tried out waffles someone said waffle try that waffle oh man it's beautiful so that's why i like waffle short and sweet nice um hopefully that answered your question tim seems like you could start anywhere and then figure out what works best for you and then kind of adapt that into your your workflow marcus do you want to finish what you were asking before your pc died sure thanks so i'll just be succinct um basically i would like to have a setup somehow set up environment to be able to test locally and play interact with other d5 projects or basically any other projects to have a fork of the main ad and also to be able to to have funds of various coins so you want actual main net state like all the accounts and balances of the net yes so i mean basically i want let's say specific projects but you know if you use die uh and they have a lot of dependencies between each other and i would like to know how does it really behave in the real world so i think i would need a like a uh state of the main at to certain time or right now yeah well maybe we could talk offline because it sounds a little more complicated but it sounds like you really have to do sync a node if you really want all that state and then you once you sync your node you can just kind of use it locally you don't have to have any peers um yeah and then uh functionality somebody's writing that and and i have used it and you can uh there is a functionality in ganache to do that but if someone has a like a nice hack because obviously uh i don't have a lot of balances of all the certain coins i would like to test with and uh basically currently i either have to buy all these coins on mainnet so that i have it in my local fork or you have if you can think about some work around that yeah so once you disconnect yourself from mainnet you can do whatever you want so you can just sign and send transactions and give yourself stuff because you're the only miner on the network and so right i think that's yeah i think so i think you do a ganache dash f so it's had some limitations for me i think i think we're getting close to having something that's really good at this uh it totally is a problem though look with defy composability it's so hard to test what's really gonna happen i i know there is the the ganache dash f and i know that once you have dash once you use you've you've effed off you can basically kind of have control of things i'm pretty sure you could just take control of the xero account and send yourself some of those burned address tokens right there's probably tokens in the xero address you could just send yourself some of those but uh i would also keep an eye on on this whole dash f in the ecosystem because because this is a problem and there are very smart people working on these tooling these tools my guess is there's going to be a biddler f soon that does this a lot better but i'm not exactly sure and just to piggy off piggyback off a little bit more what we should be doing is taking these uh primitives like an amm or lending and we should be putting them on a side chain like x die where we have value where we have skin in the game and it's super cheap to deploy and basically build the composability up there as a community where we can get in and kind of we can all andre a little bit we can all test in production because we're only deploying contracts that cost a fraction of a cent and if something gets hacked maybe we lose 10 or 20 or something like that but with with a test net of value but low value i think that we could find this this composability testing again maybe can i have a quick follow-up sure yeah but i'd like to maybe get dan to ask his question because we just have like a couple minutes left so maybe hit us up basically yeah join the join the telegram if you haven't marcus and then we can cover it there yeah and then dan if you can just summarize quickly yeah sure so thanks everybody this has been super awesome um so i'm just getting started i have my own personal wallet that i've you know have coins in and traded and so one of my biggest concerns is as i start developing i don't want that oh moment when i have my wallet my own personal wallets um and i made a mistake and somehow i used my coins and it's all gone so just wondering like what are the best practices to isolate your personal wallet from your development so you never get into that situation first of all with development i use a lot of burner wallets where i have the app just generate me some junkie pk right at the beginning and i send that thing some some local testing i i rarely ever log into an app with my meta mask when i'm working on it locally until it's about ready because i can just generate burners and scaffolding does that for me but i think a second piece there is probably just like the the bonehead thing of just like keep it in two different browsers keep two separate meta masks i'd like to hear what other people say but basically i just have my my uh only touch this meta mask if i know exactly what i'm doing account and then i have a yolo metamask that i use for all sorts of stuff yeah i pretty much do the same thing where i just have like different metamask accounts for different stuff i don't hold that many funds in metamask personally so i'm just careful and then the majority of my funds i personally use coinbase and their vault feature but you know you can use if it's a significant amount of funds you want to get it off your browser and in your own cold storage or whatever someone else is custodying it for you if if you're concerned just get it off of there it's not probably not a safe place a bigger oh moment is when you have a mnemonic that you're using for testing this idea of these burner wallets and you have this mnemonic somewhere laying around in your github and you go git commit and all that money disappears that quick someone someone pays 400 in gas to sweep all their money out of that mnemonic so be very careful about where you're pasting these mnemonics within your code and private keys too perfect way to end this session with a word of warning everybody be really careful about your mnemonics awesome this was an amazing first session um it turned out way better than i think either linda or i had expected so thank you everybody for showing up and submitting your questions bringing your live questions and to jordan alexis austin for sharing your time your expertise and you know all the all the pitfalls you've learned or learned to avoid along the way we're going to wrap up here if you haven't joined the telegram i believe it's in the there's links in the chat right now but if you for some reason get kicked or can't find it it should be in the calendar invite i think we are for sure gonna do some other version of this maybe next month but we'll try to make this a recurring thing because it seems like it was really helpful so join the telegram follow all of these people on twitter they're very intelligent um we'll add their links in uh in the telegram they say telegram or twitter follow them on twitter um and we will be in touch either in telegram and various other places can i say one more thing do you mind sure um so i offer mentorship i do it's paid but the first hour is free so just go look at my twitter yeah one on one way more in depth than this if you want that yeah and i know austin's doing a recurring um onboarding session for scaffold.

eve so hit him up i'm sure he'll he'll try to fit you in he's probably got the next couple weeks booked i don't know how he does it but uh you will definitely want to access some time with him um and one last show for me if anybody is interested in you know diving in a hackathon is a perfect place to get started so i'm with youth global running ethonline which is a three-week online hackathon with a ton of great sponsors so drop the link a few times in the chat so go check that out apply it's open to beginners intermediate advanced anything uh we'd love to have you join us for october all right my cat says bye thank you everybody for coming we'll see you in the telegram thanks everyone bye happy thursday

Automatic transcript — names and jargon may be misspelled.