<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Eda</title>
    <description>The latest articles on DEV Community by Eda (@edatweets_).</description>
    <link>https://dev.to/edatweets_</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F737030%2F58bf0794-0eee-4305-b991-71c6087e816b.png</url>
      <title>DEV Community: Eda</title>
      <link>https://dev.to/edatweets_</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/edatweets_"/>
    <language>en</language>
    <item>
      <title>How to get a job in Web3</title>
      <dc:creator>Eda</dc:creator>
      <pubDate>Mon, 23 May 2022 19:52:06 +0000</pubDate>
      <link>https://dev.to/edatweets_/how-to-get-a-job-in-web3-5cf3</link>
      <guid>https://dev.to/edatweets_/how-to-get-a-job-in-web3-5cf3</guid>
      <description>&lt;p&gt;Last week I asked, "who wants to work in web3?" on twitter. The engagement on the tweet was mind-blowing; it got so many responses.&lt;/p&gt;

&lt;p&gt;It seems like so many are considering a switch and have some questions. So, I decided to gather some questions and answer them here, as well as share some tips on how I got my job. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ol0MjZCD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1650748502478/NyleUSQPs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ol0MjZCD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1650748502478/NyleUSQPs.png" alt="Screen Shot 2022-04-23 at 16.14.59.png" width="880" height="134"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, worth noting that these are based on my and some of my friend's experiences only. They are by no means the norm, and I am not an expert in this field. However, with this disclaimer, I hope that they will help you understand the web3 space, and the tips can help you move in, if you are interested.&lt;/p&gt;

&lt;p&gt;So let's get to it!&lt;/p&gt;

&lt;h1&gt;
  
  
  My Experience
&lt;/h1&gt;

&lt;p&gt;I started my job in web3 almost three months ago. You can head over to my article on &lt;a href="https://eda.hashnode.dev/it-happened-i-moved-to-web3"&gt;moving to web3&lt;/a&gt; for more insights on my career change. In this post, I want to lay out some tips based on my experience.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--W7FoXuq9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1650748435857/5PqMw8Bzy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--W7FoXuq9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1650748435857/5PqMw8Bzy.png" alt="Screen Shot 2022-04-23 at 16.13.51.png" width="880" height="174"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The platform
&lt;/h2&gt;

&lt;p&gt;Interestingly I got all my job offers on Twitter. &lt;/p&gt;

&lt;p&gt;Coming from the traditional tech world, I was used to the path of applying through Linkedin, then getting a few online tests and finally moving to the interview stages. In web3, the process was not like the traditional route. I think that's why it seems like a scary process, but the reality is that it's not hard it's just different. You'll need to take a few steps yourself and be more creative, since there isn't a clear path just yet.&lt;/p&gt;

&lt;p&gt;I also hear that many other people that got their job from Twitter or Discord. These places are great for meeting people with similar interest, and you may be speaking to a founder of a protocol. &lt;/p&gt;

&lt;p&gt;Alongside Twitter dm's, there are many job boards on &lt;a href="https://www.pallet.com/"&gt;Pallet&lt;/a&gt; that people are launching and sharing on Twitter. You can learn about these job boards on Twitter and head over to apply to jobs over there. &lt;/p&gt;

&lt;p&gt;I've also started my &lt;a href="https://edatweets.pallet.com/jobs"&gt;Job Board&lt;/a&gt;. I pick the companies and jobs that I find interesting. Additionally, you can join my &lt;a href="https://edatweets.pallet.com/talent/welcome?referral=true"&gt;talent collective&lt;/a&gt;, where I try to match people with the companies; it's completely free so if you're looking to transition we could work together to find you a match! 🙌&lt;/p&gt;

&lt;h2&gt;
  
  
  Interest in web3/crypto
&lt;/h2&gt;

&lt;p&gt;Okay, so we've covered the platform. Now, let me cover some tips on standing out. First, whichever job role and level you are applying to, you should be interested in the web3/crypto space. It's a very fast-paced space, and you'll be spending a lot of time learning together with your team, so having a passion for the area is a must. &lt;/p&gt;

&lt;p&gt;You don't need to be an expert (is there such a thing as a crypto expert anyway), but you would need to demonstrate some sort of understanding of crypto. So make sure to have a crypto wallet, have an understanding on DAO's (preferably be part of some), have a look at NFT's etc.  &lt;/p&gt;

&lt;p&gt;In my case, I had already started to share my web3 journey through my blog and Twitter. So I was able to show my passion and learning journey through these places.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building your Portfolio
&lt;/h2&gt;

&lt;p&gt;Firstly, if you're a developer looking for a job in web3, there are many ways you can build your portfolio:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hacaktons (virtual and irl)&lt;/li&gt;
&lt;li&gt;Bounties&lt;/li&gt;
&lt;li&gt;Grants&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With these, you can feel the technology, build stuff yourself, and meet the teams without moving full time. It's a great way to get an understanding of the space.&lt;br&gt;
Make sure to check out &lt;a href="https://speedrunethereum.com/"&gt;Speed Run Ethereum&lt;/a&gt; by &lt;a href="https://twitter.com/austingriffith"&gt;Austin Griffith&lt;/a&gt; when building your portfolio. It's one of the best resources I've found that gives you an understanding of what and how to build decentralized applications, while add some creative elements yourself.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hirPD-8g--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1650747352597/a_wAY7_Ff.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hirPD-8g--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1650747352597/a_wAY7_Ff.png" alt="Screen Shot 2022-04-23 at 15.55.46.png" width="880" height="293"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Depending on the level you are applying to the strength of the portfolio will likewise vary. If it's a senior roles the projects expected will be different than a entry level job. &lt;/p&gt;

&lt;p&gt;Secondly, just like technical roles for non-technical roles  you'll need to have a portfolio. If you're into video creation then having a collection of related videos, if you're a community builder a way to demonstrate your activities in communities, if you're a writer some articles on the space etc. &lt;/p&gt;

&lt;p&gt;It's similar to demonstrating your understanding with a certificate or online tests for the traditional tech world. The difference is that you'll need to be more creative since there isn't a straightforward method. &lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping Up
&lt;/h2&gt;

&lt;p&gt;Overall, it's not hard to get a job in web3; it's just a new and different way than the traditional one. You'll need to be creative and show some related work. Having done some work before will make you stand out in the interview and also allow you to understand the space before moving full time.&lt;/p&gt;




&lt;h1&gt;
  
  
  Q &amp;amp; A
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;1. "I want to, but I don't know where and how to start."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This was one of the main questions I got on the topic. Here's my &lt;a href="https://eda.hashnode.dev/how-to-get-started-in-web3"&gt;previous post&lt;/a&gt; on how to get started in web3. Let me also add a small recap over here. &lt;/p&gt;

&lt;p&gt;If you've heard about web3 and are interested in learning more, I'd suggest you start using the products and see what it's all about. You can start by setting up a crypto wallet on &lt;a href="https://metamask.io/"&gt;Metamask&lt;/a&gt;. Next, you can checkout NFTs on &lt;a href="https://opensea.io/"&gt;Opensea&lt;/a&gt;. Finally, look at &lt;a href="https://ens.domains/"&gt;ENS&lt;/a&gt; (these are the &lt;em&gt;.eth&lt;/em&gt; you may have seen on Twitter). These are some basic starter steps to understanding the technology. It's a new area, and a lot is going on, be sure to try it out for yourself.  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NHa5-LRc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1650747756771/TFNsRtTHo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NHa5-LRc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1650747756771/TFNsRtTHo.png" alt="Screen Shot 2022-04-23 at 16.02.29.png" width="880" height="287"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you've got a grasp of the tools, start learning more about what's happening. Read articles and newsletters, check out podcasts, head over to the white papers and get a better understanding. &lt;/p&gt;

&lt;p&gt;Then last but not least, if all these were interesting, get involved with the communities. The communities are in the heart of web3. Join the Discord servers and look for projects that you can join, check out the grants and the hackathons. There are many different ways to get involved and start doing. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. "I've been trying to get into the space, and I've done some tutorials on YouTube and all, but getting to the next level and working on projects is where I want to get to now, but I've not got much of an idea of how to do so"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One thing that worked out for me was building the projects. It's vital to get hands-on 🙌 many learning paths are based on building projects which I'd suggest you check out. &lt;/p&gt;

&lt;p&gt;Make sure to look at:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://speedrunethereum.com/"&gt;Speed Run Ethereum&lt;/a&gt; by &lt;a href="https://twitter.com/austingriffith"&gt;Austin Griffith&lt;/a&gt;: It's a curriculum for developers to follow a path of projects to learn about development on Ethereum. I've written an &lt;a href="https://eda.hashnode.dev/get-started-building-decentralized-applications-on-ethereum"&gt;article&lt;/a&gt; about scaffold-eth, the toolset to build Ethereum applications by Austin. On speedrunethereym you start out with Scaffold-eth and then add different elements to it to complete the projects. I've completed the DEX projects and onto the multi-sig. Worth noting that one of the most powerful parts of the curriculum is that you'll be learning what you can do with Ethereum and how it works. &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://buildspace.so/"&gt;Buildspace&lt;/a&gt;: they have many projects where you have to get to the building. I was super surprised after my first buildspace project on what I could build over the weekend. &lt;a href="https://eda.hashnode.dev/create-your-own-nft-collection-on-ethereum"&gt;Here's&lt;/a&gt; my article on building an NFT collection after completing the project on Buildspace. Today they have lots more different projects, from building a web3 app on Solana to making your own DAO. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These will give you some developer experiences and show you what you can build in web3. You can make your portfolio with these projects and try to see how you can add extra elements to go beyond the tutorial.  &lt;/p&gt;

&lt;p&gt;Once you've got the experience from these projects,  check out different grants and hackathons if you want to continue to add more projects to you portfolio.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. "Without having any experience in it, can I get a job by doing some sample projects?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes!! That's the best way to get a job in web3. Start building and sharing your projects. Just like you'll need a portfolio or demonstrate your understanding in any job, sample projects will help you do this and can lead you to jobs (without in needing to apply).&lt;/p&gt;

&lt;p&gt;Don't take my word for it; checkout &lt;a href="https://twitter.com/rrmdp/status/1514880015284023300"&gt;Rodrigo&lt;/a&gt;, who's been sharing his progress and getting multiple offers! &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pGmlEGff--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1650747951227/lNWT4wBvi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pGmlEGff--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1650747951227/lNWT4wBvi.png" alt="Screen Shot 2022-04-23 at 16.05.45.png" width="880" height="367"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Start learning and sharing your journey. Then, once you build projects, write articles, threads on Twitter, make videos etc., You can use these to apply for jobs or even better jobs can come to you!&lt;/p&gt;

&lt;p&gt;Additionally you make sure to have a lot at the Grants! There are so many people getting jobs after completing a grant project with the team. It allows you to meet the team and learn more about the project without moving full-time. You may get the opportunity to move full-time afterwards! &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. "Will a beginner get a job in web3?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes! And I think that web3 needs more beginners. There have been many new people entering in the past few months, myself included. It's pretty overwhelming once you first discover and start learning web3. I think beginners know this the best and can work towards making it simpler for anyone getting in. With new perspectives, we could start making it more straightforward. &lt;/p&gt;

&lt;p&gt;It is important to mention that the jobs you'll get as a beginner will most probably not be senior protocol engineers. Those are the jobs that generally require more experience in the field. You'll need to demonstrate a high understanding for senior roles and show you related job or project experience. But starting in a role as a technical writer for example could be an option. Then while learning more about the technology, you could move into a software engineering role.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. "What are the best resource to learn web3?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I will answer this for developers getting in. Firstly, &lt;a href="https://twitter.com/FrancescoCiull4"&gt;Francesco&lt;/a&gt; has a list of free web3 resources, which you can find over &lt;a href="https://github.com/FrancescoXX/free-Web3-resources"&gt;here&lt;/a&gt;. I've found it to be very comprehensive and helpful. &lt;/p&gt;

&lt;p&gt;I want to specially mention some people and resources I've used and have helped me massively:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://twitter.com/dabit3"&gt;Nader Dabit&lt;/a&gt;: Youtube and articles: Nader has many walk-through tutorials, including Full Stack development with Ethereum, &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://twitter.com/PatrickAlphaC"&gt;Patrick Collins&lt;/a&gt;: Patrick has a complete guide on becoming a developer in web3.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://twitter.com/austingriffith"&gt;Austin Griffith&lt;/a&gt;: Austin has created many tools including, &lt;a href="https://speedrunethereum.com/"&gt;Speed Run Ethereum&lt;/a&gt; which is a roadmap for developers getting into web3 to follow a path of projects. It's a great way to understand what you can do in web3 alongside the syntax. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://twitter.com/developer_dao"&gt;Developer DAO&lt;/a&gt;: Developer DAO has been one of the most impactful communities for me. It's been the main driving force for me to learn and share my journey online. I had entered the community early on when the DAO was starting out. Today, you join in and can access many different projects spanning from creating educational content, developer conversations, and real-life meetups. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://buildspace.so/"&gt;Buildspace&lt;/a&gt;: it is a platform for developers to learn about web3 by creating projects. They have a huge community of web3 developers and work with companies with job opportunities for web3 builders. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.useweb3.xyz/"&gt;UseWeb3&lt;/a&gt; by &lt;a href="https://twitter.com/wslyvh"&gt;Wesley&lt;/a&gt;: It's a curated list of resources from books, tutorials, articles - everything web3. I'd highly recommend checking it out and following on Twitter for the week's most-read posts to understand the most recent trend. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://cryptozombies.io/"&gt;Cryptozombies&lt;/a&gt;: you can learn how to make smart contracts solidity interactively. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://twitter.com/LearnWeb3DAO"&gt;LearnWeb3DAO&lt;/a&gt;: they have different tracks for developers learning about web3. It's a &lt;br&gt;
great educational resource to learn and connect with others knowing. Learning is better when done together :) &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://twitter.com/web3university"&gt;Web3 University&lt;/a&gt;: it has curated articles to learn about blockchain development. You can find articles from the people I've mentioned and many more.  &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;I hope this was helpful and that I was able to answer some of the burning questions. Please let me know if you have any comments or questions! &lt;/p&gt;

&lt;p&gt;See you in the next post 👋&lt;/p&gt;

</description>
      <category>web3</category>
    </item>
    <item>
      <title>Building with Polygon</title>
      <dc:creator>Eda</dc:creator>
      <pubDate>Mon, 21 Mar 2022 12:06:35 +0000</pubDate>
      <link>https://dev.to/edatweets_/building-with-polygon-52mh</link>
      <guid>https://dev.to/edatweets_/building-with-polygon-52mh</guid>
      <description>&lt;p&gt;With increasing demand Ethereum has become expensive and slow. This created an urgent need for scaling solutions. That's where Polygon comes in. &lt;/p&gt;

&lt;p&gt;Simply put, Polygon is an Ethereum scaling platform. Polygon has seen exponential growth over the past year. It's easy to use and doesn't sacrifice the security and decentralization provided by Ethereum. It uses Ethereum's technology, so developers can jump onto Polygon and mainly use the same code and tools. &lt;/p&gt;

&lt;p&gt;I'm very impressed by the Polygon Ecosystem. I've been using and building with Polygon; it's time to put my findings into this post. &lt;/p&gt;

&lt;p&gt;Here's what we'll be covering:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Why do we need scaling solutions on Ethereum&lt;/li&gt;
&lt;li&gt;What is Polygon?&lt;/li&gt;
&lt;li&gt;How to create a smart contract on Polygon&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Why do we need to scale?
&lt;/h2&gt;

&lt;p&gt;Firstly, blockchain is a shared and immutable ledger. On the blockchain, the information is distributed among multiple computers which work together to provide the underlying infrastructure. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://ethereum.org/en/"&gt;Ethereum&lt;/a&gt; is a smart contract platform that is built using blockchain technology. Ethereum has become increasingly popular. &lt;/p&gt;

&lt;p&gt;First, Decentralized Finance(DeFi) got many people excited about crypto and onboarded the adventurous finance people onto the ecosystem. I missed that stage; it was called "DeFi summer."&lt;/p&gt;

&lt;p&gt;Then there was the NFT wave. It was a period that onboarded and is continuing to onboard many to the crypto world. These are also known as images worth millions. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vEI7Fteq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ztgascha6zphvqsdjjet.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vEI7Fteq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ztgascha6zphvqsdjjet.png" alt="nft" width="880" height="256"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With such demand, scalability becomes a huge issue. Ethereum becomes slow and expensive. The Blockchain can only handle a certain amount of transactions at a specific time, so when many people submit a transaction simultaneously, this creates congestion. &lt;/p&gt;

&lt;p&gt;We can summarize the issues with Ethereum as below:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Low throughput &lt;/li&gt;
&lt;li&gt;Expensive, not user friendly. &lt;/li&gt;
&lt;li&gt;Limited options for specialized apps. It's a general-purpose blockchain; thus, it's not optimized for specific use cases. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The Ethereum team is working on methods to scale the Blockchain. One of the main scaling updates is coming with &lt;a href="https://ethereum.org/en/upgrades/merge/"&gt;The Merge&lt;/a&gt;. However, Ethereum will still need a set of solutions running on top even with the updates. The &lt;a href="https://ethereum.org/en/upgrades/vision/"&gt;vision&lt;/a&gt; of Ethereum is to create a solution on a global scale; this cannot be achieved by a single solution, as all systems will have their limitations. Multiple solutions can live in parallel to provide the best experience for the users. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tIXUuS2n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ysi6mse7e4ddkvckzp0t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tIXUuS2n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ysi6mse7e4ddkvckzp0t.png" alt="ethereum vision" width="880" height="320"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is where scaling solutions come into play. Scaling solutions are solutions built on top of Ethereum (also called Layer 1) to solve the pain points. Here's a great &lt;a href="https://www.youtube.com/watch?v=BgCgauWVTs0&amp;amp;t=1s&amp;amp;ab_channel=Finematics"&gt;animation video&lt;/a&gt; on scaling solutions. &lt;/p&gt;

&lt;p&gt;Polygon started with a vision to bring mass adoption to Ethereum. It wanted to make it easy for developers to build and convenient for users to use. It has quickly become one of the most popular scaling solutions built on Ethereum. &lt;/p&gt;

&lt;h2&gt;
  
  
  What's Polygon?
&lt;/h2&gt;

&lt;p&gt;Polygon is a full suite of scaling solutions for Ethereum. It makes it easy for developers to build and users to use. Here is the description from the &lt;a href="https://polygon.technology/"&gt;Polygon website&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Polygon is a decentralized Ethereum scaling platform that enables developers to build scalable user-friendly dApps with low transaction fees without ever sacrificing on security.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PQbesdRL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/okz2qrycb9wj5vdb5aln.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PQbesdRL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/okz2qrycb9wj5vdb5aln.png" alt="polygon description" width="880" height="285"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Polygon is both more efficient and affordable than directly using Ethereum. Two critical needs for adoption. It leverages the Ethereum technology and has solutions that talk to the Ethereum Network. &lt;/p&gt;

&lt;p&gt;Three developers founded Polygon in 2017; the project was initially called Matic. Even though it has rebranded to Polygon, the token is still called MATIC. Matic is the cryptocurrency used to pay for transactions on Polygon. Here's a &lt;a href="https://www.youtube.com/watch?v=GWUwFDFOipo&amp;amp;t=549s&amp;amp;ab_channel=WhiteboardCrypto"&gt;great video&lt;/a&gt; on Polygon with animations. &lt;/p&gt;

&lt;p&gt;Today there are over &lt;a href="https://blog.polygon.technology/polygon-developer-ecosystem-hits-new-milestone-with-over-7000-dapps/"&gt;+7000 Applications&lt;/a&gt; that use Polygon, from popular Decentralized Finance apps to Gaming Applications. &lt;a href="https://opensea.io/"&gt;OpenSea&lt;/a&gt;, &lt;a href="https://aave.com/"&gt;Aave&lt;/a&gt; and &lt;a href="https://metamask.io/"&gt;Metamask&lt;/a&gt; are some examples. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--F0xuN8qR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7i33ob33ddozqzh0uz2k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--F0xuN8qR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7i33ob33ddozqzh0uz2k.png" alt="dapp usage" width="880" height="628"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  So, what really is it?
&lt;/h2&gt;

&lt;p&gt;It's a set of platforms and protocols to scale the public blockchains. It set out to offer a solution for Ethereum's scalability issues. &lt;/p&gt;

&lt;p&gt;Polygon utilizes the main Ethereum code. So, developers can move their projects onto Polygon with just a few changes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hx7gzbK---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dzx83vnl9lqnuwrfws6d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hx7gzbK---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dzx83vnl9lqnuwrfws6d.png" alt="polygon developers" width="880" height="252"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Polygon is not 1 or 2 scaling solution(s), but instead, Polygon is creating an entire ecosystem of Ethereum scaling solutions. This is because different applications want different things. With Polygon, developers can choose the parts that fit the need of their application; since every choice is a trade-off. This way, applications can prioritize the features they need the most. For example, if you're developing a finance application, you'd want to optimize for security. But on the other hand, speed may be one of the features to prioritize for a blockchain-based game. &lt;/p&gt;

&lt;h2&gt;
  
  
  What are the Scaling Solutions?
&lt;/h2&gt;

&lt;p&gt;Polygon has different solutions; let's briefly talk about the most popular Polygon offering, that is the Polygon &lt;a href="https://polygon.technology/solutions/polygon-pos/"&gt;Proof of Stake(PoS) chain&lt;/a&gt;.  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tzveR6SM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0uo9vyuqvyl8y0tx4e27.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tzveR6SM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0uo9vyuqvyl8y0tx4e27.png" alt="pos usage" width="880" height="397"&gt;&lt;/a&gt; &lt;em&gt;Source: &lt;a href="https://polygonscan.com/chart/active-address"&gt;Polygonscan&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Polygon PoS is a scaling solution that uses side-chains for transaction processing and Plasma bridging framework for additional security. It's a solution that compliments Ethereum and achieves high speed and low cost without sacrificing the security from Ethereum itself. Developers can deploy their contract to Polygon, and users can use the Polygon PoS chain instead of directly interacting with Ethereum. &lt;/p&gt;

&lt;p&gt;The PoS chain is not the only offering; there are other solutions on the Polygon Ecosystem. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://polygon.technology/solutions/polygon-hermez"&gt;Polygon Hermez&lt;/a&gt;: solution mainly used for Payments that uses "zero-knowledge proof" (ZK) technology&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://polygon.technology/solutions/polygon-edge"&gt;Polygon Edge&lt;/a&gt;: framework for building Ethereum-compatible blockchain networks&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://polygon.technology/solutions/polygon-nightfall"&gt;Polygon Nightfall&lt;/a&gt;: privacy-focused Ethereum scaling solution for enterprises&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Check out more on the &lt;a href="https://polygon.technology/"&gt;Polygon website&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LnOYHBiA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p2ecdcxbi7stc9e9ql0s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LnOYHBiA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p2ecdcxbi7stc9e9ql0s.png" alt="polygon scaling solutions" width="880" height="276"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  Build a Smart Contract on Polygon
&lt;/h1&gt;

&lt;p&gt;Good news: It's just like building on Ethereum! There are very few changes needed. So if you're an Ethereum builder, you are already a Polygon builder. 😎&lt;/p&gt;

&lt;p&gt;In the next part, we'll be deploying a smart contract to the Polygon PoS chain. It's the same steps &amp;amp; code from my &lt;a href="https://eda.hashnode.dev/intro-to-dapps-create-your-dapp-backend-withsolidity"&gt;"Intro to dApp's: Create your dApp backend w/Solidity"&lt;/a&gt; post. &lt;/p&gt;

&lt;h3&gt;
  
  
  Project Tools
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt; &lt;a href="https://metamask.io/"&gt;Metamask Wallet&lt;/a&gt;: Crypto wallet. &lt;/li&gt;
&lt;li&gt; &lt;a href="https://alchemy.com/?r=63afe97f6fd780ac"&gt;Alchemy&lt;/a&gt;: Ethereum developer platform. We will be using the Alchemy API to interact with Alchemy's Polygon PoS infrastructure. &lt;/li&gt;
&lt;li&gt; &lt;a href="https://hardhat.org/"&gt;Hardhat&lt;/a&gt;: Ethereum development environment. It comes as an npm package.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Prerequisites
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Choose your IDE and get the "solidity extension." I am using VS Code. &lt;/li&gt;
&lt;li&gt;Create an account on &lt;a href="https://metamask.io/"&gt;Metamask&lt;/a&gt; and switch to the Mumbai Test Network. &lt;/li&gt;
&lt;li&gt;Get your &lt;a href="https://alchemy.com/?r=63afe97f6fd780ac"&gt;Alchemy API key&lt;/a&gt;. You will need to create an account on Alchemy. When logged in, create an App on the Polygon Test Network(which is Polygon Mumbai). Your App settings should look like the following: 
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gdyALyOa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5mkcvgy9eximq6u6jren.png" alt="Image description" width="880" height="228"&gt;
Once you've created the App, head over to the app details and get your HTTP URL by clicking "view key" on the top right. &lt;/li&gt;
&lt;li&gt;Install &lt;a href="https://nodejs.org/en/"&gt;node.js&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Get some Mumbai Test Network Tokens. You can get some &lt;a href="https://faucet.polygon.technology/"&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Building the Smart Contract
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Create a project folder and head over to its directory. Install hardhat.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; mkdir eda-sample-smart-contract
 cd eda-sample-smart-contract
 npm init -y
 npm install --save-dev hardhat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt; In your project directory &lt;strong&gt;create a hardhat project&lt;/strong&gt; by running &lt;code&gt;npx hardhat.&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; $ npx hardhat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;&lt;p&gt;The setup wizard will show up. Click enter throughout and keep the default options. Hardhat will create a sample project and install the dependencies for you. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Open the project from your code editor. Under the 'Contracts' folder, you should see the default &lt;strong&gt;Greeter.sol&lt;/strong&gt; file. ".Sol" is the file extension for the solidity language, and it's our sample smart contract. I've added the smart contract below with some comments to explain what's going on.&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; //SPDX-License-Identifier: Unlicense
 pragma solidity ^0.8.4; // solidity version for the compiler, must be the same as in the settings file

 import "hardhat/console.sol";

 // create the smart contract 
 contract Greeter {

     // create a variable called greeting that will be stored in the contract 
     string private greeting;

     constructor(string memory _greeting) {
         console.log("Deploying a Greeter with greeting:", _greeting); // print to the console 
         greeting = _greeting;
     }

     // create a function to give the greeting message 
     // public: functions are public by default, anyone reading from the contract can call it
     // view: the function will not modify the state, it will only return a value
     // returns: the function declaration tells the type of the return value, here the return type is a string 
     function greet() public view returns (string memory) {
         return greeting; 
     }

     // create a function to change the greeting message 
     function setGreeting(string memory _greeting) public {
         console.log("Changing greeting from '%s' to '%s'", greeting, _greeting); // print to the console
         greeting = _greeting;
     }
 }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Here is where the code starts to change from the &lt;strong&gt;Ethereum&lt;/strong&gt; Project. First, you will need to modify the networks in the hardhat.config.js file to be on Polygon Test Network, the one we will be using is the: Mumbai Test Network. Next, get your &lt;strong&gt;Alchemy HTTP URL&lt;/strong&gt;; it's needed to talk to the Mumbai Test Network from the smart contract. Add it to the &lt;strong&gt;hardhat.config.js&lt;/strong&gt; (see code snippet under step-6). &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add your &lt;strong&gt;metamask private key&lt;/strong&gt; to &lt;strong&gt;hardhat.config.js&lt;/strong&gt;. You can get you private key by clicking Account Details --&amp;gt; Export Private Key from your Metamask extension.&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; require('@nomiclabs/hardhat-waffle');

 module.exports = {
   solidity: '0.8.4', // make sure the version matches the one in smart contract file 
   networks: {
     mumbai: { // change the network to the Polygon test network 
       url: ' ', // Mumbai testnet url 
       accounts: [' '], // metamask privte key- NEVER SHARE THIS!! It has access to all your accounts
     },
   },
 };
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;We need to take our contract from our local machine and put it onto the &lt;strong&gt;Mumbai Test Network.&lt;/strong&gt; For this, we will use the &lt;strong&gt;sample-script.js&lt;/strong&gt; file under the 'Scripts' folder. (It's usually called deploy.js; but let's leave it as is for this sample project.) Run the command below to deploy the contract to the Mumbai Test Network.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; npx hardhat run scripts/sample-script.js --network Mumbai
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🎉 Once you see the details of your smart contract on the terminal, it means that your smart contract is deployed onto the Mumbai Test Network! &lt;/p&gt;

&lt;p&gt;The smart contract address is printed on the terminal. Head over to &lt;a href="https://mumbai.polygonscan.com/"&gt;Etherscan for Polygon TestNet&lt;/a&gt;. Search for your contract address, and you'll see the details.&lt;/p&gt;

&lt;h3&gt;
  
  
  What's next
&lt;/h3&gt;

&lt;p&gt;Check out the &lt;a href="https://polygon.technology/developers"&gt;Polygon developer page&lt;/a&gt; for developer resources to continue building. You can find full suite of resources from the Polygon Team and also curated community resources.  &lt;/p&gt;

&lt;p&gt;Worth mentioning that Polygon has a &lt;a href="https://polygon.technology/developer-support-program/"&gt;Developer Support Program&lt;/a&gt; to help developers in the ecosystem. Benefits include getting early access to grants and technical guidance. I haven't been part of the program but could be interesting to check out! &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FZ7oCs1m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jm757514o9tz9vstvhla.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FZ7oCs1m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jm757514o9tz9vstvhla.png" alt="developer support program polygon" width="880" height="310"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;The Polygon has team has always focused on adoption, and they've become one of the most popular platforms for developers. I'm excited for what Polygon is doing and look forward to following closely!&lt;/p&gt;

&lt;p&gt;If you have any questions or comments, drop them below, or reach out to me on &lt;a href="https://twitter.com/edatweets_"&gt;Twitter&lt;/a&gt;! 👩‍💻&lt;/p&gt;

</description>
      <category>web3</category>
      <category>blockchain</category>
      <category>ethereum</category>
      <category>solidity</category>
    </item>
    <item>
      <title>My Web3 Journey: Day 100 of #100daysofWeb3</title>
      <dc:creator>Eda</dc:creator>
      <pubDate>Fri, 07 Jan 2022 08:46:39 +0000</pubDate>
      <link>https://dev.to/edatweets_/my-web3-journey-day-100-of-100daysofweb3-2pfi</link>
      <guid>https://dev.to/edatweets_/my-web3-journey-day-100-of-100daysofweb3-2pfi</guid>
      <description>&lt;p&gt;It's day 100. Oh dear, where do I even start? &lt;/p&gt;

&lt;p&gt;Honestly, I would have never imagined I'd be getting into the web3/crypto space at the beginning of 2021 (or at any point in my career). But here we are, &lt;strong&gt;100 days into the web3 challenge that completely got me hooked.&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Now, this is my story. I'm by no means an advisor of any sort, and I failed terribly on the way. Nevertheless, I want to share my journey, focusing on what I learned and takeaways.&lt;/p&gt;




&lt;h1&gt;
  
  
  More down the rabbit hole web3
&lt;/h1&gt;

&lt;p&gt;If you follow me on Twitter or read my articles, you already know that I am pretty much overly attached to web3 at this point.  &lt;/p&gt;

&lt;h2&gt;
  
  
  Where it all started
&lt;/h2&gt;

&lt;p&gt;How I got to web3 is not magical, it's not the promises or community. These are why I'm still here, but I got in as an investor (sounds way cooler than just saying money😀). Then I learned about the technology and community. I was fascinated. &lt;/p&gt;

&lt;h2&gt;
  
  
  The challenge: #100daysofCode / #100daysofweb3
&lt;/h2&gt;

&lt;p&gt;I started the challenge to &lt;strong&gt;learn and code every day using web3 technologies.&lt;/strong&gt; I had already been learning about web3 for some time, and being a developer, I wanted to understand the technology stack and build myself. &lt;/p&gt;

&lt;p&gt;If you haven't read the first half of my journey, I'd highly recommend you to jump to this &lt;a href="https://eda.hashnode.dev/my-web3-journey-day-50-of-100daysofweb3"&gt;post&lt;/a&gt;. It covers how I got into the web3 world in detail and what I did throughout the first 50 days of the challenge. &lt;/p&gt;

&lt;p&gt;Important to mention, it wasn't purely a coding journey for me. I became very interested in technical writing (still surprised that I have such a passion for writing) and started to create content about web3. You can find my posts &lt;a href="https://eda.hashnode.dev/"&gt;here&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Worth mentioning is that I did not code or write 100 days straight. I gave breaks, and I'd highly recommend taking breaks on the way because it gets very overwhelming pretty fast.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I'm &lt;em&gt;still&lt;/em&gt; excited about web3
&lt;/h2&gt;

&lt;p&gt;After the first 50 days, I continued to learn about the web3 landscape. I was learning new technologies every day. This part is the most interesting because &lt;strong&gt;these technologies made me realize how siloed I'd become.&lt;/strong&gt; The challenges and focuses were a lot different than what I was used to being in the web2 world.&lt;/p&gt;

&lt;p&gt;This is one of the main reasons I am thrilled to be in the web3 space; &lt;strong&gt;I'm always learning and pushing myself.&lt;/strong&gt; Of course, there are complex problems in the web2 world, but no denying that web2 has invisible boundaries on what you can do and the level of experiments, especially in large cooperations. &lt;/p&gt;

&lt;p&gt;On a related note, I wrote a blog post about why I'm excited about web3 in detail; you can check it out &lt;a href="https://eda.hashnode.dev/why-im-excited-about-web30"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building
&lt;/h2&gt;

&lt;p&gt;In the first 50 days, I created basic smart contracts and learned solidity. The second half looks a lot different. &lt;strong&gt;I learned more about the technology stack and tried out protocols to extend my app's functionality&lt;/strong&gt;; now, my contracts had more going on. I used technologies such as &lt;a href="https://chain.link/"&gt;Chainlink&lt;/a&gt;, &lt;a href="https://thegraph.com/en/"&gt;The Graph&lt;/a&gt;, &lt;a href="https://www.arweave.org/"&gt;Arweave&lt;/a&gt;,  &lt;a href="https://ceramic.network/"&gt;Ceramic Networks&lt;/a&gt; and many more. &lt;/p&gt;

&lt;p&gt;Here's a &lt;a href="https://edgeandnode.com/blog/defining-the-web3-stack"&gt;post&lt;/a&gt; by Nader covering the web3 tech stack; it's the most comprehensive guide I've come across on this topic. I've bookmarked this post and frequently go back it to because 100 days is not enough. &lt;/p&gt;

&lt;p&gt;I've added the resources I used below; there are lots!   &lt;/p&gt;

&lt;h2&gt;
  
  
  The community
&lt;/h2&gt;

&lt;p&gt;Another part that I wasn't expecting was the &lt;strong&gt;community aspect.&lt;/strong&gt; I wasn't part of the web3 or tech Twitter community before starting or, to be honest, any internet community — and didn't plan to be. Now I can't iterate how important the communities, web3 Twitter and Developer DAO, have become. &lt;/p&gt;

&lt;p&gt;It can be overwhelming in the web3 world because there are &lt;strong&gt;so many new things to learn&lt;/strong&gt;, the crypto space has a very &lt;strong&gt;negative narrative&lt;/strong&gt; in the outside world, and it's in the &lt;strong&gt;experimental stages&lt;/strong&gt; with no clear guidelines or regulations. &lt;/p&gt;

&lt;p&gt;These don't seem like that big of a challenge when you're part of the community. In my case, I was doubting myself and couldn't make bold decisions but seeing so many people around me being excited and creating cool projects made me want to continue my journey. Can testify that social proof is a very powerful influence. &lt;/p&gt;

&lt;p&gt;I've come to realize that the web3 community is very small at the moment. Many people tell me that I'm also early (which I now agree with); &lt;strong&gt;getting in early on is really beneficial because you can connect with people you take as an example.&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;To highlight the effect of internet communities, I want to take a moment to mention &lt;a href="https://www.constitutiondao.com/"&gt;Constitution DAO&lt;/a&gt;. I never thought I'd ever want to buy the US constitution. But somehow, I contributed to doing so and followed the auction with such huge excitement. Basically, a DAO (decentralized autonomous organization) was formed to buy the US Constitution at &lt;a href="https://www.sothebys.com/en/digital-catalogues/the-constitution-of-the-united-states"&gt;Sotheby's&lt;/a&gt;. The DAO raised over 40 Million Dollars in less than a week! The DAO didn't end buying the constitution, but nevertheless it showed me that &lt;strong&gt;DAO's are a thing&lt;/strong&gt; and can bring together many people to coordinate and work together for a common goal.&lt;/p&gt;

&lt;h2&gt;
  
  
  The downside
&lt;/h2&gt;

&lt;p&gt;Now I don't appreciate hyped articles and don't want this one to be like that. No space is perfect, and &lt;strong&gt;web3 has its flaws.&lt;/strong&gt; I mentioned the downside of the space in both my &lt;a href="https://eda.hashnode.dev/why-im-excited-about-web30"&gt;previous article&lt;/a&gt; and the &lt;a href="https://eda.hashnode.dev/my-web3-journey-day-50-of-100daysofweb3"&gt;50 days article&lt;/a&gt;; you can find detailed overviews in those posts. With that, let me also add a short recap here:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;No regulations:&lt;/strong&gt; the space is experimental and at its infancy stages. There's no regulations and/or guidelines to protect users or creators.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Too much going on:&lt;/strong&gt; it can be hard even to start because there are too many new technologies to learn. From 100 days ago, it seems that there is way more beginner content; I have listed them below.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monetary Incentives:&lt;/strong&gt; people have financial incentives. Make sure to understand the motivations of the people and the platforms. Is it for the money or the tech?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Language:&lt;/strong&gt; there are too many abbreviations and new terms. Even "web3" itself was a term I learned after getting into the web3/crypto world. Disclaimer: no one calls web2, web2 in that world. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Web3 has many sceptics. I definitely think new ideas should be challenged. However, I'm not a big fan aggressive nature of comments in the space.&lt;/p&gt;

&lt;h2&gt;
  
  
  My mistakes &amp;amp; takeaways
&lt;/h2&gt;

&lt;p&gt;I am learning, teaching and having fun. Again this is my story, and here are some takeaways from my #100daysofCode/#100daysofweb3 challenge:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Create and build&lt;/strong&gt;: create content, build apps, write, read, basically do anything you're interested in. Everyone is new here, don't wait until you learn about everything because no one can know everything! It took me &lt;strong&gt;a lot&lt;/strong&gt; of time to become a &lt;strong&gt;"doer"&lt;/strong&gt;, but it has been one of the decisions. It will also bring you many opportunities. I didn't apply for a single job and got more offers than I would ever imagine. No one reached out from my LinkedIn profile; they didn't even know my last name or background. But, I was creating exciting content. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Your content engine is key&lt;/strong&gt;: it's all about the content you consume. The podcast, the tutorials, articles all make up what you learn and produce. Make sure to find the content that you enjoy the most and can get the most out of. There were days where I was on Twitter, just browsing for way too long to find some interesting content. Now I have a clear content engine, which guides me to build my next app or create my next post. It's not a tweet that I may come across on Twitter after realizing I spent hours reading about a random argument on Twitter. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Take breaks&lt;/strong&gt;: I was overwhelmed. I was in front of my pc for a few days, just staring and not having any motivation. It's not sustainable to cancel all your activities and lock yourself in your room. That's what I was doing. Now I have realized that those events and conversations inspire me and give me ideas and new perspectives. You can go out for a run, meet your friends or read a sci-fi book; doing things outside of web3 will not put you behind. In the country, it'll make you relax and motivate you. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prioritize&lt;/strong&gt;: The web3 space moves quickly. Every day there is something new. You don't need to keep up with every news or know every technology in detail. There were days where I tried to keep up with everything going on and other days where I felt that I knew nothing looking at the pile of technologies I hadn't even heard of. One of the essential things is prioritizing and focusing on a single area. Once I started to do that, I became more confident that I was making progress and knew what to do. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Don't forget to document your progress&lt;/strong&gt;: I wasn't as structured as I wanted to be, the projects were more organized but my learnings were all over the place (notion, word, notes etc.). I'd suggest taking a structured approach because I found myself spending a lot of time finding and reviewing my notes.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Would I recommend starting the challenge?
&lt;/h2&gt;

&lt;p&gt;It wasn't an easy challenge, but the answer is a definite &lt;strong&gt;YES!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Modify the challenge to suit your style best.&lt;/strong&gt; For example, I gave breaks, and I didn't post on Twitter every day. If you like to share every day, that's perfectly fine, but it put extra pressure on me. Additionally, my challenge was not only to build and ship products but it was in between building projects, creating content and learning about web3. &lt;/p&gt;

&lt;p&gt;It also doesn't matter what level you are on with coding or web3; this is for personal development. It's really about what you achieve over a specific time, not how you compare to others. &lt;/p&gt;

&lt;p&gt;I learned a lot and feel very proud of the outcome; with that, there's so much more to learn!&lt;/p&gt;




&lt;h1&gt;
  
  
  How to start in the web3 world?
&lt;/h1&gt;

&lt;p&gt;Most of my recommendations from day50 have not changed; I did expand on the content.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Start by doing&lt;/strong&gt;&lt;br&gt;
I cannot iterate how important it is to understand what you can do in the web3 world before getting in. Do anything related to crypto but &lt;strong&gt;DO it&lt;/strong&gt;. Don't just listen to a podcast or read a blog post. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Setup your own wallet, exchange some tokens, stake some assets, get an ens name etc. &lt;/li&gt;
&lt;li&gt;Check out  &lt;a href="https://rabbithole.gg/"&gt;RabbitHole&lt;/a&gt;, an educational platform focusing on teaching how to use web3 applications. &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Read, research, repeat&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Look into the blockchains and protocols websites to get more information. &lt;/li&gt;
&lt;li&gt; &lt;a href="https://www.useweb3.xyz/"&gt;UseWeb3&lt;/a&gt; by &lt;a href="https://twitter.com/wslyvh"&gt;Wesley&lt;/a&gt;. A curated overview of the web3 world. I highly recommend bookmarking this. It has most of the resources I have included here and many more.&lt;/li&gt;
&lt;li&gt; &lt;a href="https://www.web3.university/"&gt;Web3 university&lt;/a&gt;: a library of Web3 educational resources &lt;/li&gt;
&lt;li&gt;Podcasts: &lt;a href="https://www.youtube.com/c/Bankless"&gt;Bankless&lt;/a&gt;, &lt;a href="https://www.youtube.com/c/TheDefiant"&gt;The Defiant&lt;/a&gt;, &lt;a href="https://www.youtube.com/channel/UCECH_RfQJOShGkYIVEXAX7w"&gt;RabbitHole&lt;/a&gt; and &lt;a href="https://www.youtube.com/channel/UCBH5VZE_Y4F3CMcPIzPEB5A"&gt;Real Vision&lt;/a&gt;. &lt;/li&gt;
&lt;li&gt; Newsletter: &lt;a href="https://www.notboring.co/"&gt;Not Boring Capital Newsletter&lt;/a&gt;- It's not only about web3, but most of the pieces are. &lt;/li&gt;
&lt;li&gt;Here is a great &lt;a href="https://gabygoldberg.notion.site/f7050e62461143d49345e7b46eb5576b?v=c02511c4230c44ce9a1a03c9757da524"&gt;web3 reading list&lt;/a&gt; by &lt;a href="https://twitter.com/gaby_goldberg"&gt;Gaby&lt;/a&gt;.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Building&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; &lt;a href="https://buildspace.so/"&gt;Buildspace&lt;/a&gt;: Learn about web3 by creating projects, they continue to expand and add new projects! They now have Solana and Avalanche projects. &lt;/li&gt;
&lt;li&gt; &lt;a href="https://twitter.com/dabit3"&gt;Nader Dabit&lt;/a&gt;: make sure to follow &lt;a href="https://www.youtube.com/naderdabit"&gt;Nader's youtube&lt;/a&gt;. He has live streams deep-diving into the technology and the code with many people.&lt;/li&gt;
&lt;li&gt; &lt;a href="https://github.com/scaffold-eth/scaffold-eth#-scaffold-eth"&gt;Scaffold-Eth&lt;/a&gt;: It's a tool by &lt;a href="https://twitter.com/austingriffith"&gt;Austin Griffith&lt;/a&gt; to build decentralized applications. There are some quests  &lt;a href="https://speedrunethereum.com/"&gt;here&lt;/a&gt; that you can follow along. &lt;/li&gt;
&lt;li&gt; &lt;a href="https://www.useweb3.xyz/tutorials"&gt;UseWeb3 Tutorials&lt;/a&gt;: a curated list of many tutorials and guides&lt;/li&gt;
&lt;li&gt; &lt;a href="https://www.web3.university/"&gt;Web3 university&lt;/a&gt;: a library of Web3 educational resources &lt;/li&gt;
&lt;li&gt; Web3 Twitter; &lt;a href="https://twitter.com/edatweets_/status/1478669191733522432"&gt;here&lt;/a&gt; are some of my favorite builders and communities in the space. &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Get Involved&lt;/strong&gt; &lt;br&gt;
There are so many different areas you can get involved in. Join a DAO, be active on Twitter, reach out to people. It's not just smart contract experts or developers that can get involved, but there are different areas from marketing, writing, designing etc. &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Find and learn about DAO's on  &lt;a href="https://daocentral.com/"&gt;DAO Central&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;Come and join &lt;a href="https://twitter.com/developer_dao"&gt;Developer DAO&lt;/a&gt;. We're a community of web3 enthusiasts learning and building in the space. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you love what you do and having fun, there are many employment opportunities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check out &lt;a href="https://blog.kacieahmed.com/jobs-in-web3-how-i-landed-a-job-in-4-months"&gt;this article&lt;/a&gt; by &lt;a href="https://twitter.com/Haezurath"&gt;Kacie&lt;/a&gt;; it's a great overview of what opportunities and how to prepare&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.useweb3.xyz/jobs"&gt;UseWeb3 Job Board&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Follow the projects and people on Twitter, create a project and reach out to the teams! In the web3 world, Twitter is the new Linkedin. Here's a &lt;a href="https://twitter.com/developer_dao/status/1478781316699148292"&gt;thread&lt;/a&gt; to see who is hiring right now! &lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;So what's next for me? Well, I'm not going anywhere! You'll be hearing more of my adventures in web3 👩‍💻&lt;/p&gt;

&lt;p&gt;Thank you for reading! If you have any questions or comments, drop them below or reach out to me from  &lt;a href="https://twitter.com/edatweets_"&gt;Twitter!&lt;/a&gt; &lt;/p&gt;

</description>
      <category>web3</category>
      <category>100daysofcode</category>
      <category>beginners</category>
      <category>blockchain</category>
    </item>
    <item>
      <title>Why I'm excited about web3.0</title>
      <dc:creator>Eda</dc:creator>
      <pubDate>Wed, 29 Dec 2021 06:59:04 +0000</pubDate>
      <link>https://dev.to/edatweets_/why-im-excited-about-web30-1i94</link>
      <guid>https://dev.to/edatweets_/why-im-excited-about-web30-1i94</guid>
      <description>&lt;p&gt;You may have heard of web3. It made quite the buzz this year; it seems like people either love it or hate it. Honestly, I didn't know what web3 was until I somehow ended up in the web3 world itself. I didn't even know that the traditional tech world, which I am in, is called the web2 world (ps: no one calls it web2 there).&lt;/p&gt;

&lt;p&gt;After months of experimenting, learning and building in the web3 world, I decided it's time to explain how I see web3, why I'm excited about it, alongside some of the challenges.&lt;/p&gt;




&lt;h1&gt;
  
  
  The background
&lt;/h1&gt;

&lt;h2&gt;
  
  
  What even is web1 and web2?
&lt;/h2&gt;

&lt;p&gt;To understand web3, we first need to understand the evolution of the web. The web has evolved a lot since it got into our lives: web1, web2 and web3 as terms to describe the different eras.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Web1&lt;/strong&gt; is the first web era, also known as the &lt;strong&gt;read-only web&lt;/strong&gt;. Web1 roughly covers the years between 1990-2005. During this period, users were mainly consumers of the technology—an era when static websites were a thing.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Then came &lt;strong&gt;web2&lt;/strong&gt;. Web2, the &lt;strong&gt;read-write web&lt;/strong&gt;, started around 2005 and is mainly used today. The web became a place where anyone can create content. It became a new collaborative and interactive environment. Social media has been a significant catalyst for web2. It's never been easier to upload a cat photo to Instagram, celebrate birthdays from Facebook and chat via Facetime.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So, it went from only super shady coders doing something on web1 to making it so easy that now everyone can easily use web2. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Here's a great intro video for the eras of the web by Whiteboard Crypto -&lt;a href="https://www.youtube.com/watch?v=nHhAEkG1y2U&amp;amp;ab_channel=WhiteboardCrypto"&gt;What is Web 3.0? (Explained with Animations)&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What are the issues with web2?
&lt;/h2&gt;

&lt;p&gt;Web2 is &lt;strong&gt;highly centralized&lt;/strong&gt;. In web2, large companies own servers that provide messaging, searching, storing etc. These companies have complete control and ownership over the services they provide.&lt;/p&gt;

&lt;p&gt;You need to agree to the terms and services to use the platforms. This makes sense as the companies pay to operate these servers and provide you with certain services. That been said, with every term and condition agreement, we &lt;strong&gt;give the ownership and control of our data&lt;/strong&gt;. Companies use this data to monetize their platform; it's fair to say that many large companies solely exist to collect data. Not to get into many buzzwords, but this is also called the &lt;a href="https://en.wikipedia.org/wiki/Data_economy"&gt;&lt;strong&gt;data economy&lt;/strong&gt;&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Aside from the issues with companies using and selling our data, these entities are the &lt;strong&gt;primary targets for hackers&lt;/strong&gt;. Cyberattacks and data breaches are inevitable when there is a single point of failure.&lt;/p&gt;

&lt;p&gt;Last but not least is the &lt;strong&gt;control that the centralized cooperations&lt;/strong&gt; have. They can change the product and the features anytime, affecting others using their platforms. Companies also have the power to censor and block any account.&lt;/p&gt;

&lt;p&gt;In this environment, we see web3 emerging.&lt;/p&gt;

&lt;h2&gt;
  
  
  How did I get into web3?
&lt;/h2&gt;

&lt;p&gt;Before moving on to what web3 is, I want to explain how I ended up here. Because quite honestly, it wasn't due to the issues in the web2 world. I got in as an investor (sounds cooler than just saying money), but I saw all the prices going up and tried to give it a go. You can read more about how I got into web3 in this &lt;a href="https://eda.hashnode.dev/my-web3-journey-day-50-of-100daysofweb3"&gt;post&lt;/a&gt;. In short, after getting in for the money, I fell in love with the technology and community. I started to learn, build, contribute, and that's how my web3 journey started.&lt;/p&gt;

&lt;p&gt;The way I see it is that there are these problems in web2, but there's no denying that it's a working system and has great benefits. The disadvantages feel like something most people accept without diving deep when using web2 platforms. People love to use Instagram, TikTok, Google, Twitter etc. I did too, but &lt;strong&gt;once I learned that an alternative exists, I started to dig deeper and ask interesting questions; that was a turning point for me.&lt;/strong&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  Web3
&lt;/h1&gt;

&lt;h2&gt;
  
  
  What is web3?
&lt;/h2&gt;

&lt;p&gt;Web3 is mainly described as &lt;strong&gt;the decentralized web&lt;/strong&gt;; it's still a term under construction.&lt;/p&gt;

&lt;p&gt;Here is a more detailed definition that I enjoyed from &lt;a href="https://www.psl.com/feed-posts/web3-engineer-take"&gt;this article&lt;/a&gt; by Dave Peck &amp;amp; the PSL Team:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Web3” is the name* given to a suite of peer-to-peer technologies — particularly blockchains and distributed filesystems (like IPFS)— that are used to build modern “decentralized apps”, or dApps.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Essentially it's &lt;strong&gt;a group of technologies that are all decentralized and used to create decentralized applications.&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;This means that in web3, there isn't any single company in control but instead individual contributors that own and control the underlying technology stack. So basically, now service providers and users become the same person. Decentralization takes away the power from a single entity.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why would anyone want to become a service provider?
&lt;/h2&gt;

&lt;p&gt;Now, this is where &lt;strong&gt;cryptocurrencies&lt;/strong&gt; come into play.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cryptocurrencies are the economic incentives given to network contributors&lt;/strong&gt; (aka service providers). Each contributor provides resources to the network and gets rewarded in cryptocurrencies. Anyone can become a service provider, like you and me. &lt;/p&gt;

&lt;p&gt;Consumers pay with cryptocurrencies to use the services. So it's a &lt;strong&gt;different economic relationship from the traditional web world that we know&lt;/strong&gt;. &lt;em&gt;For example, in web2, a user might pay AWS or Microsoft for cloud services; in web3, the money goes to the network participants.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;There is value for both the creator and the consumer of the network. &lt;strong&gt;It's a relationship based on the protocol rules without any entity in between.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What about this "blockchain" thing?
&lt;/h2&gt;

&lt;p&gt;Today we mainly see the use of &lt;strong&gt;decentralized blockchain technology&lt;/strong&gt; for building web3. &lt;/p&gt;

&lt;p&gt;Now two important notes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A blockchain does not have to be decentralized. I mostly see people take decentralization when they refer to blockchain technology. However, blockchain does not imply decentralization.&lt;/li&gt;
&lt;li&gt;Web3 does not have to use blockchain technology. In the context of Ethereum, that is the technology used. However, keep in mind that web3 and blockchain are not the same things.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In short, &lt;strong&gt;blockchain is a shared ledger&lt;/strong&gt; where each transaction is recorded and shared between the participants. Instead of having a central location for information, the information is shared among multiple computers on the network.  &lt;/p&gt;

&lt;p&gt;There are different layers to the web3 technology stack—which we will not cover in this post. Instead, here's a great &lt;a href="https://edgeandnode.com/blog/defining-the-web3-stack"&gt;post&lt;/a&gt; by Nader that I'd highly recommend if you'd like to dive deeper into the tech stack. &lt;/p&gt;

&lt;p&gt;Essentially, in web3, there isn't any person or marketplace in the middle, but instead, &lt;strong&gt;there are protocols governed by network contributors which have economic incentives to participate.&lt;/strong&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Why am I excited about web3?
&lt;/h2&gt;

&lt;p&gt;Here are what I'm most excited for:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Individual ownership and control&lt;/strong&gt;: people can own and control what they create on web3. For example, you can have your self-sovereign identity without relying on any identity provider or you could create a blog post on a user-owned blogging platform where the content is yours.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://academy.binance.com/en/glossary/trustless"&gt;&lt;strong&gt;Trustless&lt;/strong&gt;&lt;/a&gt;: the web2 world is based on trust. We trust the centralized cooperations to provide services and give them control over our data. It's a single point of control and thus trust, which creates a massive power imbalance. Instead, in web3, there are protocols that the users can directly interact with; there isn't any marketplace in between. Users do not need to trust anyone in the middle to utilize the services.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open and Global Ecosystem&lt;/strong&gt;:  The services and protocol are global and available to everyone regardless of location, age, sex etc. Every single contributor has a specific economic incentive to participate. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Boost of Innovation&lt;/strong&gt;: advertising is the dominant revenue model for the web that we know of today. Much time and energy is spent on advertising and learning the consumer better to show them the correct clothing item or even certain news. Alongside this, the boundaries of the web2 world are in some ways defined and limited. In web3, there is much room to explore and experiment, it raises many interesting questions, and people can try new things. I'm amazed when I hear about what some projects are trying to do. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now you may be asking why I did not mention decentralization here. The reason being is that these properties are only possible with decentralization, so it's not the goal itself but the core component to get there. &lt;/p&gt;

&lt;p&gt;The more people contribute, the more decentralized the underlying technology becomes. Recall that this technology is very new, so we yet need to understand the degree of decentralization and how to distribute cryptocurrencies in the best way. &lt;/p&gt;

&lt;h2&gt;
  
  
  What about the cons of web3?
&lt;/h2&gt;

&lt;p&gt;Here are some of the challenges I see for web3:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Regulations&lt;/strong&gt;: there's no regulatory clarity. Most of the space is experimental without any guidelines. This creates an uncertain environment for everyone participating.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Language&lt;/strong&gt;: There seems to be an invisible barrier of entry; at least, that was the case in my experience. There are too many new terminology and abbreviations. Alongside these, the false and overly-optimistic information make it complicated to understand. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monetary Incentives&lt;/strong&gt;: Custodial wallets are growing faster than non-custodial; more people seem to be interested in the money than the tech. This does not speak well on the promise of decentralization. Additionally, there are "maxi's" (people who only like their coins and tokens, hate all the others), which creates a lot of intense discussions in the space. It's hard to tell if people believe in a particular tech or if it's their monetary incentives.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Narrative&lt;/strong&gt;: there are a lot of opposing views on crypto. I constantly find myself explaining why I'm interested in the technology and then get the response: "but bitcoin is used for illegal activities". It takes time to change this, and we need concrete killer-use cases to do so. &lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;Centralized platforms have been the standard for so long that it is hard to imagine otherwise. However, there's no denying the issues of web2. Web3 is reshaping the web, redesigning at its core, and I'm super excited to see what it will bring!&lt;/p&gt;

&lt;p&gt;This post is my take on web3, and I'm sure there's more to learn as we see web3 evolving. &lt;/p&gt;

&lt;p&gt;Thanks for reading! If you have any questions or comments, drop them below or reach out to me from &lt;a href="https://twitter.com/edatweets_"&gt;Twitter&lt;/a&gt;. I'd love to hear from you!&lt;/p&gt;

</description>
      <category>web3</category>
      <category>beginners</category>
      <category>blockchain</category>
      <category>ethereum</category>
    </item>
    <item>
      <title>Intro to dApp's: Create your dApp backend w/Solidity</title>
      <dc:creator>Eda</dc:creator>
      <pubDate>Fri, 10 Dec 2021 08:41:01 +0000</pubDate>
      <link>https://dev.to/edatweets_/intro-to-dapps-create-your-dapp-backend-wsolidity-11dm</link>
      <guid>https://dev.to/edatweets_/intro-to-dapps-create-your-dapp-backend-wsolidity-11dm</guid>
      <description>&lt;p&gt;In the &lt;a href="https://eda.hashnode.dev/intro-to-dapps-create-your-dapp-frontend-withreact" rel="noopener noreferrer"&gt;previous post&lt;/a&gt;, we talked about creating a dApp frontend w/React. In this post, we will build the backend for our dApp and connect the two pieces.&lt;/p&gt;

&lt;p&gt;Before we deep dive into the code, I've laid out some fundamentals for building the application's backend. Then we'll move on to creating a basic smart contract and putting the two pieces together.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Please note: In this article, we will be referring to dApp's on the Ethereum blockchain.&lt;/em&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  Intro to Decentralized App's (dApp's)
&lt;/h1&gt;

&lt;p&gt;In the most basic form, a dApp consists of a &lt;strong&gt;backend (smart contract)&lt;/strong&gt; and a &lt;strong&gt;frontend user interface.&lt;/strong&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Smart Contracts
&lt;/h2&gt;

&lt;p&gt;A &lt;a href="https://ethereum.org/en/developers/docs/smart-contracts/" rel="noopener noreferrer"&gt;smart contract&lt;/a&gt; is a computer program stored on the blockchain. When the conditions of a smart contract are met, the code is executed by the Ethereum Virtual Machine (EVM). It's basically the server-side of the application.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://docs.soliditylang.org/en/v0.8.10/" rel="noopener noreferrer"&gt;Solidity&lt;/a&gt;&lt;/strong&gt; is one of the most popular smart contract languages for Ethereum.&lt;/p&gt;

&lt;h2&gt;
  
  
  Transaction &amp;amp; Gas Fee
&lt;/h2&gt;

&lt;p&gt;An &lt;a href="https://ethereum.org/en/developers/docs/transactions" rel="noopener noreferrer"&gt;Ethereum transaction&lt;/a&gt;  refers to an action initiated by an account on the blockchain. For example, sending tokens to another account, buying an nft, swapping tokens are transactions on Ethereum.&lt;/p&gt;

&lt;p&gt;Each transaction on the blockchain has a cost. So when you want to interact with a smart contract, you need to pay the "&lt;a href="https://ethereum.org/tr/developers/docs/gas/" rel="noopener noreferrer"&gt;gas fee&lt;/a&gt;."&lt;/p&gt;

&lt;p&gt;Gas is the measure of the unit to denote the cost for a transaction. Accordingly, gas fees are the fees that are paid to the network to process the transactions. On Ethereum, gas fees are paid in ETH and denoted in gwei (10-9 ETH). When there is a lot of demand for the network, the gas fees increase, you can check the gas fees from the &lt;a href="https://etherscan.io/gastracker" rel="noopener noreferrer"&gt;Ethereum gas tracker&lt;/a&gt; . &lt;/p&gt;

&lt;h2&gt;
  
  
  Application Binary Interface (ABI)
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://docs.soliditylang.org/en/v0.5.3/abi-spec.html" rel="noopener noreferrer"&gt;Contract Application Binary Interface (ABI)&lt;/a&gt; is the interface between two program modules. Simply put, ABI is like the API (Application Programming Interface) in the Ethereum world. It defines the methods and structures to interact with the smart contract.&lt;/p&gt;




&lt;h1&gt;
  
  
  How to create your own dApp w/Solidity and React
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Create your Smart Contract
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Project Tools
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt; &lt;a href="https://metamask.io/" rel="noopener noreferrer"&gt;Metamask Wallet&lt;/a&gt;: crypto wallet. &lt;/li&gt;
&lt;li&gt; &lt;a href="https://dashboard.alchemyapi.io/" rel="noopener noreferrer"&gt;Alchemy&lt;/a&gt;: ethereum developer platform. We will be using the Alchemy API to interact with Alchemy's Ethereum infrastructure.&lt;/li&gt;
&lt;li&gt; &lt;a href="https://hardhat.org/" rel="noopener noreferrer"&gt;Hardhat&lt;/a&gt;: ethereum development environment. It comes as an npm package.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Prerequisites
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Choose your IDE and get the "solidity extension." I am using VS Code and am very happy with it. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create an account on  &lt;a href="https://metamask.io/" rel="noopener noreferrer"&gt;metamask&lt;/a&gt; and switch to the rinkeby test network. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Get your &lt;a href="https://alchemy.com/?r=63afe97f6fd780ac" rel="noopener noreferrer"&gt;Alchemy API key&lt;/a&gt;. You will need to create an account on Alchemy. Then when logged in, create an App on the Rinkeby Test Network. Here's how your App settings should look like:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1638448516727%2FZWykzJeebm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1638448516727%2FZWykzJeebm.png" alt="Screen Shot 2021-12-01 at 21.07.37.png"&gt;&lt;/a&gt;&lt;br&gt;
Once created, head over to the app details and get your key by clicking "view key" on the top right.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Install &lt;a href="https://nodejs.org/en/" rel="noopener noreferrer"&gt;node.js&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Get some Rinkeby Test Network Ethereum. Try the faucet &lt;a href="https://faucet.rinkeby.io/" rel="noopener noreferrer"&gt;here&lt;/a&gt; to get some Rinkeby ETH.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Building the Smart Contract
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Create a project folder and head over to its directory. Install hardhat.&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mkdir eda-sample-smart-contract
cd eda-sample-smart-contract
npm init -y
npm install --save-dev hardhat
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In your project directory &lt;strong&gt;create a hardhat project&lt;/strong&gt; by running &lt;code&gt;npx hardhat.&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ npx hardhat
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The setup wizard will show up. Click enter throughout and keep the default options. Hardhat will create a sample project and install the dependencies for you. Here's how your terminal should look like:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1638448658575%2FYOjUkiQ_d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1638448658575%2FYOjUkiQ_d.png" alt="Screen Shot 2021-12-02 at 10.43.25.png"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Open the project from your code editor. Under the 'Contracts' folder, you should see the default &lt;strong&gt;Greeter.sol&lt;/strong&gt; file. ".Sol" is the file extension for the solidity language, and it's our sample smart contract. I've added the smart contract below with some comments to explain what's going on.&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;//SPDX-License-Identifier: Unlicense
pragma solidity ^0.8.4; // add the solidity version for the compiler
import "hardhat/console.sol";
// create the smart contract 
contract Greeter {
 // create a variable called greeting that will be stored in the contract 
 string private greeting;
 constructor(string memory _greeting) {
     console.log("Deploying a Greeter with greeting:", _greeting); // print to the console 
     greeting = _greeting;
 }
 // create a function to give the greeting message 
 // public: functions are public by default, anyone reading from the contract can call it
 // view: the function will not modify the state, it will only return a value
 // returns: the function declaration tells the type of the return value, here the return type is a string 
 function greet() public view returns (string memory) {
     return greeting; 
 }
 // create a function to change the greeting message 
 function setGreeting(string memory _greeting) public {
     console.log("Changing greeting from '%s' to '%s'", greeting, _greeting); // print to the console
     greeting = _greeting;
 }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Get your &lt;strong&gt;Alchemy API key&lt;/strong&gt;; it's needed to talk to the Rinkeby Test Network from the smart contract. Add it to the &lt;strong&gt;hardhat.config.js&lt;/strong&gt; (see code snippet under step-6). &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Add your &lt;strong&gt;metamask private key&lt;/strong&gt; to &lt;strong&gt;hardhat.config.js&lt;/strong&gt;. You can get you private key by clicking Account Details --&amp;gt; Export Private Key from your Metamask extension.&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;require('@nomiclabs/hardhat-waffle');
module.exports = {
solidity: '0.8.4', // make sure the version matches the one in smart contract file 
networks: {
 rinkeby: {
   url: ' ', // rinkeby key 
   accounts: [' '], // metamask privte key- DO NOT SHARE THIS!! It has access to all your accounts
 },
},
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;We need to take our contract from our local machine and put it onto the Rinkeby Test Network. For this, we will use the &lt;strong&gt;sample-script.js&lt;/strong&gt; file under the 'Scripts' folder. (It's usually called deploy.js; but let's leave it as is for this sample project.) Run the command below to deploy the contract to the Rinkeby Test Network.&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx hardhat run scripts/sample-script.js --network rinkeby
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;🎉 Once you see the details of your smart contract on the terminal, it means that your smart contract is deployed onto the Rinkeby network! For the next steps, you will need the &lt;strong&gt;smart contract address&lt;/strong&gt; and the &lt;strong&gt;ABI&lt;/strong&gt;. Here is where you can find them:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The smart contract address is printed on the terminal&lt;/li&gt;
&lt;li&gt;There is a new folder called artifacts that is generated after deploying the smart contract. The ABI is the json document(Greeter.json) on the following path &lt;em&gt;artifacts/Contracts/Greeter.json.&lt;/em&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1638454077741%2FXjJkZ_sCB.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1638454077741%2FXjJkZ_sCB.png" alt="Screen Shot 2021-12-02 at 17.07.29.png"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Connect to your Smart Contract from the frontend
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Prerequisites
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;In this section, we will use the code from the &lt;a href="https://eda.hashnode.dev/intro-to-dapps-create-your-dapp-frontend-withreact" rel="noopener noreferrer"&gt;Intro to dApp's: Create your dApp frontend w/React&lt;/a&gt; post. Follow the steps there to create your frontend w/React. Make sure you have ethers.js installed.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Building the frontend of your dApp
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Add the &lt;strong&gt;contract address&lt;/strong&gt; to App.js.&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// add the contract address
const contractAddress = " "
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;We need to add the &lt;strong&gt;contract ABI.&lt;/strong&gt; Copy the ABI file (greeter.json) from the smart contract and add it under /src in the react project. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1638454181519%2F23ZMMuG2t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1638454181519%2F23ZMMuG2t.png" alt="Screen Shot 2021-12-02 at 17.09.34.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Import greeter.json which is the contract abi to App.js.&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import Greeter from './greeter.json'
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Import "useRef" from react to store the mutable greeting value to App.js.&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { useEffect, useState,  useRef } from 'react';
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Inside the App construct on App.js define a new variable to keep the greeting message.&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const userGreeting = useRef();
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Add the functions to get the greeter message and another to set the greeter message. Have a look at the code below, I have added comments to explain what's going on. Add the code snippet to App.js&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const getGreeting = async () =&amp;gt;  {
 // check that there is a wallet connected
 const { ethereum } = window;
   if (ethereum) {
     // provider is a connection to the ethereum node
     const provider = new ethers.providers.Web3Provider(ethereum);
     // signer is used to sign messages and transactions
     const signer = provider.getSigner();
     // connect to the smart contract 
     const contract = new ethers.Contract(edasSmartContract, Greeter.abi, signer);
     // call the greet function on the smart contract
     const message = await contract.greet();
     // pop up the greet message 
     alert(message);
   }
}
const setGreeting = async (event) =&amp;gt; { 
 event.preventDefault();
 if (userGreeting.current.value === '') {
   return;
 }
 const { ethereum } = window;
 if (ethereum) {
   const provider = new ethers.providers.Web3Provider(ethereum);
   const signer = provider.getSigner();
   const contract = new ethers.Contract(edasSmartContract, Greeter.abi, signer);
   const transaction = await contract.setGreeting(userGreeting)
   await transaction.wait()
   getGreeting() // go back to the getGreeting() func to give the user the greeting 
 }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Next, modify the walletConnected() component to display buttons which call the getGreeting() and setGreeting() functions.&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;//wallet connected
const walletConnected = () =&amp;gt; (
&amp;lt;div&amp;gt;
  &amp;lt;p&amp;gt;Connected to the wallet&amp;lt;/p&amp;gt;
  &amp;lt;button onClick={getGreeting}&amp;gt;Greet&amp;lt;/button&amp;gt;
  &amp;lt;br/&amp;gt;
  &amp;lt;form onSubmit={setGreeting}&amp;gt;
   &amp;lt;button type="submit"&amp;gt;
     Submit New Greeting Message
   &amp;lt;/button&amp;gt;
   &amp;lt;br/&amp;gt;
   &amp;lt;textarea
     ref={userGreeting}
     placeholder="add your new greeting message here!"
   &amp;gt;&amp;lt;/textarea&amp;gt;
   &amp;lt;/form&amp;gt;
 &amp;lt;/div&amp;gt;
);
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Run the app with the command below. Open &lt;a href="http://localhost:3000" rel="noopener noreferrer"&gt;http://localhost:3000&lt;/a&gt; to view it in the browser.&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm start 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🙌  If everything is working, when you click the "Greet" you should see the greeting message pop up. You can also change the greet message by submitting a new one; it will ask you to sign and pay for the transaction since you are performing an action on the Rinkeby Network. (I've made some changes to App.css to make my UI prettier 😀)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1638470086396%2FO7m4hguPeF.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1638470086396%2FO7m4hguPeF.png" alt="Screen Shot 2021-12-02 at 21.34.14.png"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;This is a basic introduction to creating your own dApp on Ethereum. As a next step, I'd highly recommend the following resources:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://buildspace.so/" rel="noopener noreferrer"&gt;Buildspace&lt;/a&gt;: a platform for developers to learn about web3 by creating cool projects. It's a fantastic learning resource where you can also connect with other fellow developers looking to get in the web3 world&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://cryptozombies.io/" rel="noopener noreferrer"&gt;Cryptozombies&lt;/a&gt;: an interactive platform for making smart contracts in Solidity or Libra.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Hope you enjoyed the article! If you have any questions or comments, feel free to drop them below or reach out to me from &lt;a href="https://twitter.com/edatweets_" rel="noopener noreferrer"&gt;Twitter!&lt;/a&gt; &lt;/p&gt;

</description>
      <category>web3</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Intro to dApp's: Create your dApp frontend w/React</title>
      <dc:creator>Eda</dc:creator>
      <pubDate>Fri, 03 Dec 2021 16:17:37 +0000</pubDate>
      <link>https://dev.to/edatweets_/intro-to-dapps-create-your-dapp-frontend-wreact-38fi</link>
      <guid>https://dev.to/edatweets_/intro-to-dapps-create-your-dapp-frontend-wreact-38fi</guid>
      <description>&lt;h2&gt;
  
  
  Intro to dApp's: Create your dApp frontend w/React
&lt;/h2&gt;

&lt;p&gt;I get many dm's from dev's asking me how to get started with web3, hear such questions on twitter spaces and see the conversations on discord. It looks like so many developers are interested in the space. &lt;/p&gt;

&lt;p&gt;If you are one of them, you're at the right place! In this post, I'll first try to explain the basics of web3 applications to provide an outline and then guide you through creating your dApp frontend with React.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Please note: In this article, we will be referring to dApp's on the Ethereum blockchain.&lt;/em&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  Intro to Decentralized App's (dApp's)
&lt;/h1&gt;

&lt;h2&gt;
  
  
  What is a dApp?
&lt;/h2&gt;

&lt;p&gt;A dApp is just like any software application- any website or phone app. The difference is that the &lt;strong&gt;backend code runs on a decentralized network&lt;/strong&gt; such as a peer to peer network or a blockchain.&lt;/p&gt;

&lt;p&gt;So an application on Ethereum is a &lt;a href="https://ethereum.org/en/developers/docs/dapps/"&gt;dApp&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are the benefits?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Since the backend code(smart contracts) of a dApp is on a decentralized network, the dApp is free from control and can not be modified/removed by a centralized source. Developers and creators can trust the underlying infrastructure without worrying about being terminated or censored.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Once a smart contract is deployed to the Ethereum network, no one can change it. Therefore, users can trust how it will work since even the person deploying the contract can't change it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;All the smart contracts on Ethereum are public and accessible; it's an open-source ecosystem. This open-source nature allows for composability, so this means that you can re-use parts of the codes from others. You can look at all the smart contracts from  &lt;a href="https://etherscan.io/"&gt;Etherscan&lt;/a&gt;; here is an  &lt;a href="https://etherscan.io/address/0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d#code"&gt;example smart contract&lt;/a&gt;. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;A dApp only implies that the backend code(smart contract) is on a decentralized network&lt;/strong&gt;. It's important to note that not all of the components of the application have to be decentralized. For example, the application developers decide where the frontend is hosted and where app data is stored. &lt;/p&gt;

&lt;p&gt;The decentralized world advocates for making the entire technology stack decentralized and is building it right now!&lt;/p&gt;

&lt;h2&gt;
  
  
  What are dApp's used for?
&lt;/h2&gt;

&lt;p&gt;Today the most popular categories for dApp's are gaming, financial services and digital goods. &lt;/p&gt;

&lt;p&gt;Here are some popular dApp's on the Ethereum blockchain:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://app.uniswap.org/#/swap"&gt;Uniswap&lt;/a&gt;-swap tokens and provide tokens for liquidity and rewards (Financial services)&lt;/li&gt;
&lt;li&gt; &lt;a href="https://axieinfinity.com/"&gt;Axie&lt;/a&gt;-play and earn with your avatars called "Axie" (Gaming)&lt;/li&gt;
&lt;li&gt; &lt;a href="https://decentraland.org/"&gt;Decenterland&lt;/a&gt;-collect and trade in the virtual world (Virtual world)&lt;/li&gt;
&lt;li&gt; &lt;a href="https://opensea.io/"&gt;Open Sea&lt;/a&gt; : buy, sell, trade digital assets (Digital Goods)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are probably more categories that we have not even discovered yet.&lt;/p&gt;

&lt;h2&gt;
  
  
  How can I use a dApp?
&lt;/h2&gt;

&lt;p&gt;With most dApp's your cryptocurrency wallet is your first sign in. (Yay! No more username and passwords or connecting with other social media accounts.)&lt;/p&gt;

&lt;p&gt;You basically need a &lt;strong&gt;cryptocurrency wallet&lt;/strong&gt; and &lt;strong&gt;ETH&lt;/strong&gt;-which is the native currency for the Ethereum blockchain. The wallet enables you to connect to the network and create a transaction, and you need the ETH to pay for the transaction.&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating a dApp
&lt;/h2&gt;

&lt;p&gt;A dApp consists of a &lt;strong&gt;backend (smart contract) and a frontend user interface&lt;/strong&gt; in the most basic form. The frontend is the client-side, and the backend is the server-side of the application.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The &lt;strong&gt;backend&lt;/strong&gt; of the dApp is the smart contract. Smart contracts are self-executing computer programs stored inside the blockchain, on Ethereum they are all open and accessible. You can look at them from Etherscan; here is an example of a smart contract. Another important note on smart contracts is that no one can change it once a smart contract is changed. Solidity is one of the most popular smart contract languages for Ethereum.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The &lt;strong&gt;frontend&lt;/strong&gt; of the dApp can be written in any language that can talk to the backend. The frontend can then be hosted on a centralized service or a decentralized service.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In short, dApps are applications with a backend on a decentralized platform and a frontend that connects to it. To use a dApp, you need a cryptocurrency wallet and some cryptocurrency. &lt;/p&gt;




&lt;h1&gt;
  
  
  Create a dApp frontend w/React &amp;amp; ethers.js
&lt;/h1&gt;

&lt;p&gt;In this project we will be creating a react project and connecting to our crypto wallet which is our interface to the blockchain. &lt;/p&gt;

&lt;h2&gt;
  
  
  Project Tools
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt; &lt;a href="https://metamask.io/"&gt;Metamask Wallet&lt;/a&gt;: crypto wallet &lt;/li&gt;
&lt;li&gt; React: JavaScript library for building user interfaces &lt;/li&gt;
&lt;li&gt; &lt;a href="https://docs.ethers.io/v5/"&gt;ethers.js&lt;/a&gt;: Open source JavaScript Client library which contains the tools to talk to the Ethereum blockchain. (Another very popular option is &lt;a href="https://web3js.readthedocs.io/en/v1.5.2/"&gt;web3.js&lt;/a&gt;. You can find a comparison of the two &lt;a href="https://blog.infura.io/ethereum-javascript-libraries-web3-js-vs-ethers-js-part-i/"&gt;here&lt;/a&gt;.)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Please note:&lt;/strong&gt; This project is only for the frontend of the application. When we want to add the backend piece we will need an Ethereum development environment. &lt;a href="https://hardhat.org/"&gt;Hardhat&lt;/a&gt; and  &lt;a href="https://www.trufflesuite.com/"&gt;Truffle&lt;/a&gt; are popular Ethereum development environments. Additionally, to deploy the application to the network we would need to use a  blockchain developer platform such as  &lt;a href="https://www.alchemy.com/"&gt;Alchemy&lt;/a&gt; or &lt;a href="https://infura.io/"&gt;Infura&lt;/a&gt; .&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Install &lt;a href="https://metamask.io/"&gt;metamask&lt;/a&gt; and create an account. Add the extension to your browser.&lt;/li&gt;
&lt;li&gt;Get &lt;a href="https://nodejs.org/en/"&gt;node.js&lt;/a&gt; &lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Create D-app frontend
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Create a project folder and setup a react app&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx create-react-app edas-dapp
cd edas-dapp
npm start
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Install the ethers.js libary &lt;br&gt;
with npm:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install ethers
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;with yarn:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;yarn add ethers
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The following code creates a button that the user can click which will prompt the user to connect to Metamask wallet. I have added the comments to explain what's going on. Add the following code to App.js.&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import './App.css';
import { useEffect, useState } from 'react';

const App = () =&amp;gt; {

  //state variable to store user's public wallet 
  const [currentAccount, setCurrentAccount] = useState("");

  // check wallet connection when the page loads
  const checkIfWalletIsConnected = async () =&amp;gt; {

    // access to window.ethereum
    const {ethereum} = window;

    //check if user has metamask 
    if(!ethereum) {
       alert("Make sure you have metamask");
       return;
     }

    //get the wallet account
    const accounts = await ethereum.request({method: 'eth_accounts'});

    //get the first account
    if(accounts.length !== 0){
      const account = accounts[0];
      console.log("Found account:", account);

      //set the account as a state 
      setCurrentAccount(account);
    }
    else{
      console.log("No account");
    }
  }

  // connect to wallet 
  const connectWallet = async () =&amp;gt; {
    try {
      // get the wallet 
      const {ethereum} = window;

      // there is no wallet extension 
      if(!ethereum) {
        alert("Opps, looks like there is no wallet!");
        return;
      }

      const currentNetwork = ethereum.networkVersion;
      console.log("Current network", currentNetwork);

      // request access to account 
      const accounts = await ethereum.request({ method: "eth_requestAccounts"});

      //set the account in the state 
      setCurrentAccount(accounts[0]); 

    }
    catch( error){
      console.log(error);
    }
  }

  //run function checkIfWalletIsConnected when the page loads
  useEffect(()=&amp;gt; {
    checkIfWalletIsConnected();
  }, []);

  //connect to wallet
  const walletNotConnected = () =&amp;gt; (
    &amp;lt;button onClick={connectWallet} className="connect-to-wallet-button"&amp;gt;
      Connect to Wallet
    &amp;lt;/button&amp;gt;
  );

  //wallet connected
  const walletConnected = () =&amp;gt; (
    &amp;lt;div&amp;gt;
      &amp;lt;p&amp;gt;Connected to the wallet&amp;lt;/p&amp;gt;
    &amp;lt;/div&amp;gt;
  );

  return (
    &amp;lt;div className="App"&amp;gt;
      &amp;lt;div style={{display: 'flex', justifyContent:'center', height: '50px'}}&amp;gt;
          {currentAccount === "" ? walletNotConnected()  : walletConnected()}
          &amp;lt;br /&amp;gt;
      &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
  );
};

export default App;
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;&lt;em&gt;Now the following code will connect to the latest active network. So if the user was on the Ethereum Mainnet it will connect to Ethereum, if the user was on the Rinkeby Test Network it will connect to that. However, in many cases we need to the user to connect to a certain network.&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;You can check to see which network the user is connected to and prompt the user with a message to change the network they are on. Modify &lt;em&gt;connectWallet&lt;/em&gt; in App.js as below.&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const connectWallet = async () =&amp;gt; {
 try {
   const {ethereum} = window;

   if(!ethereum) {
     alert("Opps, looks like there is no wallet!");
     return;
   }

   const currentNetwork = ethereum.networkVersion;
   console.log("Current network", currentNetwork);

   //check which network the wallet is connected on 
   if(currentNetwork != 4){
     // prompt user with a message to switch to network 4 which is the rinkeby network on metamask
     alert("Opps, only works on Rinkeby! Please change your //network :)");
     return;
   };

   const accounts = await ethereum.request({ method: "eth_requestAccounts"});
   setCurrentAccount(accounts[0]); 

 }
 catch( error){
   console.log(error);
 }
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A better way to do this is to directly prompt the user with the request to switch the network. Instead of asking the user to change the network they are connected on. Change the if statement with the following lines.&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    // request to switch the network 
    const tx = await ethereum.request({method: 'wallet_switchEthereumChain', params:[{chainId: 
'0x4'}]}).catch()
     if (tx) {
       console.log(tx)
     }
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;By default Chain 4 is already defined in Metamask. You can also prompt the user to add a new network which is not already defined. Here is how you can add the Avalanche network. Add the following piece of code just before requesting access to the account.&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// define avax network values 
const avax_mainnet = [{
  chainId: '0xA86A',
  chainName: 'Avalanche Mainnet C-Chain',
  nativeCurrency: {
    name: 'Avalanche',
    symbol: 'AVAX',
    decimals: 18
  },
  rpcUrls: ['https://api.avax.network/ext/bc/C/rpc'],
  blockExplorerUrls: ['https://snowtrace.io/']
  }]  
  // request to add the new network 
  const tx = await ethereum.request({method: 'wallet_addEthereumChain', params:avax_mainnet}).catch()
  if (tx) {
      console.log(tx)
  }
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;🎉 There you go; that's how you can use a crypto wallet in your app! The next step would be to connect to the smart contract and do some cool stuff such as mint you nft, swap tokens etc.&lt;/p&gt;




&lt;p&gt;Overall, it's good to know some js and html to put together a well-tailored frontend for your application.&lt;/p&gt;

&lt;p&gt;If you have any questions, do drop them below or reach out to me on  &lt;a href="https://twitter.com/edatweets_"&gt;Twitter&lt;/a&gt;! &lt;/p&gt;

</description>
      <category>webdev</category>
      <category>react</category>
      <category>web3</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Create your own NFT collection on Ethereum w/Solidity</title>
      <dc:creator>Eda</dc:creator>
      <pubDate>Mon, 29 Nov 2021 07:46:29 +0000</pubDate>
      <link>https://dev.to/edatweets_/create-your-own-nft-collection-on-ethereum-wsolidity-1ai5</link>
      <guid>https://dev.to/edatweets_/create-your-own-nft-collection-on-ethereum-wsolidity-1ai5</guid>
      <description>&lt;p&gt;My Twitter feed has tons of avatar profile pictures, articles are coming out daily showcasing some large NFT sales, and people are earning money with their in-game creatures... &lt;/p&gt;

&lt;p&gt;I guess this means it's time to go down the NFT rabbit hole. So let's get to it!&lt;/p&gt;

&lt;p&gt;This article &lt;strong&gt;introduces NFT's&lt;/strong&gt; and guides you through &lt;strong&gt;creating your NFT collection on Ethereum using solidity&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Creating your collection sounds complicated; I thought the same. Frankly, I would have never imagined creating an NFT collection, let alone try to explain it in a 10min article, if it weren't for  &lt;a href="https://buildspace.so/" rel="noopener noreferrer"&gt;buildspace&lt;/a&gt; . Buildspace is a platform for developers to learn about web3 by creating projects. I signed up for my first project and was amazed at what I was able to build. Check it out  &lt;a href="https://twitter.com/edatweets_/status/1447299670796029957" rel="noopener noreferrer"&gt;here&lt;/a&gt;. In this post, we will follow the project from buildspace "Mint your own NFT collection and ship a Web3 app to show them off."&lt;/p&gt;

&lt;p&gt;So bare with me; it's just the new terminology that makes things complicated.&lt;/p&gt;




&lt;h2&gt;
  
  
  Can't you just take a screenshot?
&lt;/h2&gt;

&lt;p&gt;It seems like a lot of people ask this question. I know for one that my friends and family do. By the end of this section, we'll have an answer 😉&lt;/p&gt;

&lt;h3&gt;
  
  
  NFT
&lt;/h3&gt;

&lt;p&gt;Firstly, NFT stands for Non-Fungible Token.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Non-fungible: Fungibility indicates that a good can be interchanged (a word I googled many times). Non-fungible refers to goods that have unique properties and can not be changed with one another. For example, bitcoin is a fungible asset. If we each have a bitcoin and send them to each other, in the end, we'll have the same thing. On the other hand, a house is non-fungible. If we decide to switch homes, we'll end up with something different. &lt;/li&gt;
&lt;li&gt;Token: In short, blockchain is a shared and immutable ledger, and a token is a digital asset living on top of the blockchain. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;NFT's are &lt;strong&gt;unique digital assets on the blockchain&lt;/strong&gt;. They are each one of a kind; this allows for tracking the ownership.&lt;/p&gt;

&lt;p&gt;Today, most NFT's are on the Ethereum blockchain. However, we are also seeing many projects coming out on Solana and Avalanche.&lt;/p&gt;

&lt;h3&gt;
  
  
  But what really are NFT's?
&lt;/h3&gt;

&lt;p&gt;The sky is the limit. Any digital asset can theoretically be an NFT. The most popular are Collectibles and Art.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Collectibles&lt;/strong&gt;, as the name indicates, are a collection of assets in the format of an NFT. Think of these as Pokemon cards or even penny collections. NFT collectibles have the same logic, except they are in the digital world.&lt;/p&gt;

&lt;p&gt;The earliest NFT was a collectibles project called  &lt;a href="https://www.cryptokitties.co/" rel="noopener noreferrer"&gt;CryptoKitties&lt;/a&gt; . It came out as a game centered around breeding cats. Each kitty (which is an nft) is unique, and you can breed kitties to create new ones.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1635355372129%2FD7w1lXJ7N.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1635355372129%2FD7w1lXJ7N.jpeg" alt="1_Mw8ZN07nisyUMS0fiR5KOw.jpeg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Another example of a collectible NFT project is &lt;a href="https://www.larvalabs.com/cryptopunks" rel="noopener noreferrer"&gt;CryptoPunks&lt;/a&gt;. There are 10,000 crypto punks with different attributes such as a beanie, big beard, purple hair etc. The characteristics change for each punk, making each a unique CryptoPunks.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1635354476266%2F77jBf5p44.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1635354476266%2F77jBf5p44.png" alt="Screen Shot 2021-10-27 at 20.06.02.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Art&lt;/strong&gt; is self-explanatory. Artists have the chance to create their work on the blockchain and can directly reach their buyers. This process removes the many middlemen in between by directly connecting the buyer and the creator.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1635354256092%2FEeSV1-0bY.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1635354256092%2FEeSV1-0bY.png" alt="Screen Shot 2021-10-27 at 20.03.49.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Other use cases for NFT's include &lt;strong&gt;domain names, gaming, music, ticketing...&lt;/strong&gt; (There can be many more applications which we have not even discovered yet.)&lt;/p&gt;

&lt;h3&gt;
  
  
  Smart Contracts &amp;amp; Transactions
&lt;/h3&gt;

&lt;p&gt;NFT's are created by running the code on the smart contract. This process is also called "minting."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://ethereum.org/en/developers/docs/standards/tokens/erc-721/" rel="noopener noreferrer"&gt;ERC-721&lt;/a&gt;  is a standard type of smart contract that creates fungible tokens on Ethereum&lt;/strong&gt;. The way each token is globally unique is with the tokenId field. Therefore, for every smart contract that creates an NFT, the &lt;strong&gt;smart contract and the tokenId pair is different&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Once you mint an NFT, you will be able to see it in your crypto wallet. You can then use secondary markets to buy/sell NFT's. Today,  &lt;a href="https://opensea.io/" rel="noopener noreferrer"&gt;OpenSea&lt;/a&gt;  is the most popular secondary market.&lt;/p&gt;

&lt;p&gt;One thing to note is that every transaction on the blockchain has a cost. So when you want to mint, buy or sell an NFT, you need to pay the price called &lt;strong&gt;&lt;a href="https://ethereum.org/en/developers/docs/gas/" rel="noopener noreferrer"&gt;gas fee&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Gas is the measure of the unit to denote the cost for a transaction. Accordingly, gas fees are the fees that are paid to the network to process the transactions.&lt;/p&gt;

&lt;p&gt;On the Ethereum blockchain, gas fees are paid in ETH and denoted in gwei (10-9 ETH). Due to the high demand for the Ethereum network, gas fee's are pretty high. Especially when there is a popular NFT project drop, and you could end up paying 100 dollars just for the transaction. Make sure to check the &lt;a href="https://etherscan.io/gastracker" rel="noopener noreferrer"&gt;gas tracker&lt;/a&gt; before making transactions. &lt;/p&gt;

&lt;p&gt;High gas fees are an issue which the Ethereum team and other scaling solutions are working on. High gas fees explain why many projects are coming out on the other blockchains. &lt;/p&gt;

&lt;p&gt;🙌 Going back to our screenshot question. The main value proposition of an NFT is &lt;strong&gt;trackable and transparent ownership&lt;/strong&gt;. The owner can prove that they own an NFT. If an NFT gets transferred, the transaction is recorded on the blockchain. It's basically a new way to transfer digital arts or even any asset. So, just like taking a photo of the Mona Lisa is not the same thing as owning the piece. Likewise, taking a screenshot of an NFT is not the same as being listed as the owner on a transparent and immutable ledger.&lt;/p&gt;




&lt;h2&gt;
  
  
  How to create your own NFT collection?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Project Tools
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt; &lt;a href="https://metamask.io/" rel="noopener noreferrer"&gt;Metamask Wallet&lt;/a&gt;: crypto wallet. &lt;/li&gt;
&lt;li&gt; &lt;a href="https://dashboard.alchemyapi.io/" rel="noopener noreferrer"&gt;Alchemy&lt;/a&gt;: ethereum developer platform. We will be using the Alchemy API to interact with Alchemy's Ethereum infrastructure.&lt;/li&gt;
&lt;li&gt; &lt;a href="https://hardhat.org/" rel="noopener noreferrer"&gt;Hardhat&lt;/a&gt;: ethereum development environment. It comes as an npm package.&lt;/li&gt;
&lt;li&gt; &lt;a href="https://github.com/OpenZeppelin/openzeppelin-contracts" rel="noopener noreferrer"&gt;OpenZepplin Contracts&lt;/a&gt;: library for secure smart contract implementations. We will be using the ERC271 libary standard. &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Prerequisites
&lt;/h3&gt;

&lt;p&gt;(It's the same setup from my  &lt;a href="https://eda.hashnode.dev/create-your-own-cryptocurrency-token" rel="noopener noreferrer"&gt;previous post&lt;/a&gt;, here is a checklist to review the items.)&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Choose your IDE and get the "solidity extension."&lt;/li&gt;
&lt;li&gt;Create an account on  &lt;a href="https://metamask.io/" rel="noopener noreferrer"&gt;metamask&lt;/a&gt;  and switch to the rinkeby test network. &lt;/li&gt;
&lt;li&gt;Get your  &lt;a href="https://alchemy.com/?r=63afe97f6fd780ac" rel="noopener noreferrer"&gt;Alchemy API key&lt;/a&gt; .&lt;/li&gt;
&lt;li&gt;Get  &lt;a href="https://nodejs.org/en/" rel="noopener noreferrer"&gt;node.js&lt;/a&gt;  to use hardhat.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Create your NFT collection
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Create a project folder and head over to its directory. Install hardhat.&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mkdir eda-nft-collection
cd eda-nft-collection
npm init -y
npm install --save-dev hardhat
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In your project directory &lt;strong&gt;create a hardhat project&lt;/strong&gt; by &lt;br&gt;
running &lt;code&gt;npx hardhat.&lt;/code&gt; The setup wizard will direct, you can &lt;br&gt;
click enter throughout the setup wizard and keep the default &lt;br&gt;
options.&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ npx hardhat
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Run the command to install the &lt;a href="https://github.com/OpenZeppelin/openzeppelin-contracts" rel="noopener noreferrer"&gt;OpenZepplin &lt;br&gt;
implementation&lt;/a&gt; for &lt;br&gt;
smart contracts. It has the &lt;strong&gt;ERC-721 token&lt;/strong&gt; standard which &lt;br&gt;
we will extend from.&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install @openzeppelin/contracts
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Under the 'Contracts' folder create a new solidity &lt;br&gt;
file(file extension is .sol). This will be the file for our &lt;br&gt;
ERC-721 token. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Below you can see a sample &lt;strong&gt;ERC-721 token smart contract&lt;/strong&gt; extended from OpenZepplin. I have added some comments to explain what's going on in the code. Copy and paste it onto your own solidity file.&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;//SPDX-License-Identifier: Unlicense
pragma solidity ^0.8.9; // tells the solidity version to    the complier

// get the OpenZeppelin Contracts, we will use to creat our own
import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";
import "@openzeppelin/contracts/utils/Counters.sol";

import "hardhat/console.sol"; // built in hardhat local environment 

contract EdaNFTCollection is ERC721URIStorage {

  // keep count of the tokenId
  using Counters for Counters.Counter; // keep track of the token id's
  Counters.Counter private _tokenIds;

  uint256 public constant maxSupply = 2; // set the max supply of NFT's for your collection

  constructor() ERC721 ("edaNFTCollection", "EDA") { // construct your token, needs name and symbol
    console.log("An NFT has been minted to %s", msg.sender);
}

  function createEdaNFT() public { //function to create nfts

    uint256 newItemId = _tokenIds.current(); // get the tokenId

    require(newItemId &amp;lt; maxSupply); // check if the total supply has been reached 

    _safeMint(msg.sender, newItemId); // mint the nft from the sender account 

    _setTokenURI(newItemId, "https://jsonkeeper.com/b/2KQZ"); // add the contents to the nft 
    // the content of this nft is on the url above. This means that the nft is an off-chain nft
    // if the server with the content changes then the image in the url changes 

    _tokenIds.increment(); // increment the token, so when the next person calls the function it will be the next token in line 

    console.log("NFT ID %s has been minted", newItemId); 

   }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;We need to take our contract from our local machine and put it onto the Rinkeby Test Network. For this, simply create a &lt;strong&gt;deploy.js&lt;/strong&gt; file under the 'Scripts' folder. Copy and paste the content below onto your file.&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const main = async () =&amp;gt; {

    const nftContractFactory = await hre.ethers.getContractFactory('EdaNFTCollection'); // get the contract 
    const nftContract = await nftContractFactory.deploy(); // deploy --&amp;gt; convert to computer language
    await nftContract.deployed(); // wait for it to deploy
    console.log("Contract deployed to:", nftContract.address);

    let txn = await nftContract.createEdaNFT() // mint the nft 
    await txn.wait() // wait for the mint

    txn = await nftContract.createEdaNFT() // mint another nft (we set 2 as the max supply, can't mint more)
    await txn.wait() // wait for the mint

  };

  const runMain = async () =&amp;gt; {
    try {
      await main();
      process.exit(0);
    } catch (error) {
      console.log(error);
      process.exit(1);
    }
  };
  runMain();
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Get your &lt;em&gt;Alchemy API key&lt;/em&gt;, it is needed to talk to the Rinkeby Test Network from our contract. Add your API key to the &lt;strong&gt;hardhat.config.json&lt;/strong&gt; (see code snippet under step-8)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Add your &lt;em&gt;metamask private key&lt;/em&gt; to &lt;strong&gt;hardhat.config.json&lt;/strong&gt;. You can get this by clicking Account Details --&amp;gt; Export Private Key from your Metamask extension.&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;require('@nomiclabs/hardhat-waffle');

module.exports = {
  solidity: '0.8.9', // make sure the version matches the one in smart contract file 
  networks: {
    rinkeby: {
      url: ' ', // rinkeby key 
      accounts: [' '], // metamask privte key- DO NOT SHARE THIS!! It has access to all your accounts
    },
  },
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Run the command below to deploy the contract to the Rinkeby Test Network.&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; npx hardhat run scripts/deploy.js --network rinkeby
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If everything is working, it should deploy the contract and print out the contract address to the terminal. &lt;/p&gt;

&lt;p&gt;Head over to &lt;a href="https://rinkeby.etherscan.io/" rel="noopener noreferrer"&gt;Etherscan&lt;/a&gt; for the Rinkeby Test Network. Etherscan shows all the transactions and the contracts on Ethereum. When you search for your contract address, you should be able to see the contract details and associated transactions. &lt;/p&gt;

&lt;p&gt;Go to your account on &lt;a href="https://testnets.opensea.io/account" rel="noopener noreferrer"&gt;Rinkeby Opensea&lt;/a&gt; to view the NFT's you just minted.&lt;/p&gt;

&lt;p&gt;🎉 There we go! Now we have created an NFT collection on the Ethereum blockchain using the solidity programming language. &lt;/p&gt;

&lt;p&gt;Make sure to checkout  &lt;a href="https://buildspace.so/" rel="noopener noreferrer"&gt;Buildspace&lt;/a&gt; for more projects and sign up for the NFT Collection if you haven't already. You get to build a frontend for your nfts and even make on-chain nft's in the project!&lt;/p&gt;




&lt;p&gt;On a final note, the NFT industry is very new. There are a lot of speculations going on, and with little to no regulation, it can be intimating. However, I find NFT's very exciting because, before NFT's, decentralized finance was the primary industry for blockchain. Now we have a completely new application for blockchain technology. So let's see how the space will evolve.&lt;/p&gt;

&lt;p&gt;Thanks for reading my article. If you have any questions drop them below and connect with me from  &lt;a href="https://twitter.com/edatweets_" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, I'd love to hear from you! &lt;/p&gt;

</description>
      <category>web3</category>
      <category>solidity</category>
      <category>ethereum</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Create your cryptocurrency token</title>
      <dc:creator>Eda</dc:creator>
      <pubDate>Tue, 26 Oct 2021 23:19:54 +0000</pubDate>
      <link>https://dev.to/edatweets_/create-your-cryptocurrency-token-1d5j</link>
      <guid>https://dev.to/edatweets_/create-your-cryptocurrency-token-1d5j</guid>
      <description>&lt;p&gt;3 weeks ago, I started the &lt;strong&gt;#100daysofWeb3&lt;/strong&gt; challenge. As a developer, I had never worked with web3 products and tools before. And what better task than creating my cryptocurrency token.&lt;/p&gt;

&lt;p&gt;Honestly, it’s way easier than it looks!&lt;/p&gt;

&lt;p&gt;With that, I decided to put together this article to outline the basic concepts of cryptocurrencies (basically it answers the questions I kept asking myself) and guide you through creating your own token on Ethereum. &lt;/p&gt;




&lt;h2&gt;
  
  
  What do I need to know before creating my token?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Blockchain &amp;amp; Cryptocurrencies
&lt;/h3&gt;

&lt;p&gt;Blockchain is a &lt;strong&gt;shared and immutable&lt;/strong&gt; ledger. On the blockchain, the information is distributed among multiple computers which work together to provide the underlying infrastructure. &lt;/p&gt;

&lt;p&gt;Cryptocurrencies(crypto) are digital currencies that are secured by cryptographic functions. Most cryptocurrencies are based on blockchain technology. They are represented by entries onto the blockchain. &lt;/p&gt;

&lt;p&gt;Bitcoin, the most popular cryptocurrency, is powered by blockchain technology. Basically, blockchain is the technology that makes bitcoin possible and has applications way beyond bitcoin. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://ethereum.org/en/"&gt;Ethereum&lt;/a&gt;, &lt;a href="https://www.avax.network/"&gt;Avalanche&lt;/a&gt; and &lt;a href="https://solana.com/"&gt;Solana&lt;/a&gt; are other platforms that are built using blockchain technology. Different blockchain platforms prioritize different features such as decentralization, cost, speed, security... &lt;/p&gt;

&lt;h3&gt;
  
  
  Coin vs. Token
&lt;/h3&gt;

&lt;p&gt;Cryptocurrencies can be crypto coins or crypto tokens. The two terms are often used interchangeably however they are two separate terms. &lt;/p&gt;

&lt;p&gt;A coin exists on its blockchain. It is a digital representation of money for that blockchain. BTC, ETH or LTC are examples of cryptocurrency coins, they each have their own blockchain. &lt;/p&gt;

&lt;p&gt;A token functions on top of an existing blockchain via smart contracts. Unlike a coin, a token usually has a utility associated with it. For example, Uniswap is an exchange protocol built on top of the Ethereum blockchain and has its token called UNI. UNI holders can vote on development proposals and decisions for the platform. &lt;/p&gt;

&lt;p&gt;In short, &lt;strong&gt;coins have their own blockchain and are used as a medium of exchange whereas tokens live on top of a blockchain and can have different values or utilities.&lt;/strong&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  Smart contracts
&lt;/h3&gt;

&lt;p&gt;Smart contracts are just like contracts in the real world, except they are digital. &lt;/p&gt;

&lt;p&gt;A smart contract is a &lt;strong&gt;self-executing computer program&lt;/strong&gt; stored inside the blockchain. When the conditions of a smart contract are met, the code is automatically executed. This removes the intermediaries needed in real-life contracts and creates a &lt;strong&gt;trustless&lt;/strong&gt; environment for users. Trustless means that the users do not need to trust each other because they can rely on the underlying code.  &lt;/p&gt;

&lt;p&gt;Some smart contract languages are  &lt;a href="https://docs.soliditylang.org/en/latest/index.html"&gt;Solidity&lt;/a&gt;, Vyper and Java. &lt;/p&gt;

&lt;h3&gt;
  
  
  Ethereum
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Ethereum is an open-source, decentralized blockchain platform with smart contracts. It has its native cryptocurrency coin called Ether(ETH).&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Solidity is an object-oriented, high-level language developed for creating smart contracts. It is the main programming language for Ethereum. &lt;/p&gt;

&lt;h3&gt;
  
  
  ERC-20
&lt;/h3&gt;

&lt;p&gt;ERC stands "Ethereum request for comment" and 20 is the token identifier. It defines a set of rules and functions that apply to all tokens. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ERC-20 is a standard for smart contracts that create fungible tokens on the Ethereum blockchain.&lt;/strong&gt; A fungible token means that all the tokens are &lt;em&gt;exactly the same&lt;/em&gt;. If we each have a UNI token, there is no difference between my token and your token, they have the same type and value in each of our accounts. &lt;/p&gt;

&lt;p&gt;There are more standard ERC smart contracts. For example, the standard for creating a non-fungible token(NFT) is ERC-721.&lt;/p&gt;

&lt;p&gt;🙌 &lt;strong&gt;We have covered the basic concepts for cryptocurrency tokens, now let’s get to create one!&lt;/strong&gt;&lt;br&gt; &lt;/p&gt;




&lt;h2&gt;
  
  
  How to create a cryptocurrency token?
&lt;/h2&gt;

&lt;p&gt;Let's do it together! In the project, we will build our token on &lt;strong&gt;Ethereum&lt;/strong&gt; using &lt;strong&gt;Solidity.&lt;/strong&gt; The type of smart contract we will use is &lt;strong&gt;ERC20&lt;/strong&gt;. &lt;/p&gt;

&lt;h2&gt;
  
  
  Project Tools
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="https://metamask.io/"&gt;Metamask Wallet&lt;/a&gt;:&lt;/strong&gt; crypto wallet. It is a software wallet that you can use as a mobile app or browser extension. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.alchemy.com/"&gt;Alchemy&lt;/a&gt;:&lt;/strong&gt; ethereum developer platform. Alchemy has a full suite of products. We will be using the Alchemy API to interact with Alchemy's Ethereum infrastructure.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="https://hardhat.org/"&gt;Hardhat&lt;/a&gt;:&lt;/strong&gt; ethereum development environment. It comes as an npm package and allows you to create the basic setup you need for a smart contract. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/OpenZeppelin/openzeppelin-contracts"&gt;OpenZepplin Contracts:&lt;/a&gt;&lt;/strong&gt; library for secure smart contract implementations. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;h3&gt;
  
  
  IDE
&lt;/h3&gt;

&lt;p&gt;I will be using VS Code for this project. If you would like to use VS Code you will need to add the solidity extension. Choose the IDE you like best, even a text editor will do. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--y8iB23i9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1634739287591/QFfLxW2xC.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--y8iB23i9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1634739287591/QFfLxW2xC.png" alt="Screen Shot 2021-10-20 at 17.14.39.png" width="880" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Note: &lt;a href="https://remix.ethereum.org/"&gt;Remix Ide&lt;/a&gt; is a browser-based ide for Ethereum, its super convenient to get started with as you don't need any setup. (If you use Remix IDE the steps will be different becuase you can directly compile and deploy your code from the UI.)&lt;/p&gt;

&lt;h3&gt;
  
  
  Metamask Setup
&lt;/h3&gt;

&lt;p&gt;If you don’t have &lt;a href="https://metamask.io/"&gt;Metamask&lt;/a&gt; already you can head over to their website to download the extension and follow the setup wizard to create an account.&lt;/p&gt;

&lt;p&gt;Change your network to the Rinkeby Test Network. &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--46z87U1i--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1634818950212/Te8G3dqQt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--46z87U1i--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1634818950212/Te8G3dqQt.png" alt="Screen Shot 2021-10-21 at 15.22.09.png" width="880" height="401"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Alchemy Setup
&lt;/h3&gt;

&lt;p&gt;Sign up with Alchemy, you can use &lt;a href="https://alchemy.com/?r=63afe97f6fd780ac"&gt;my referral link&lt;/a&gt; and then we can each get $100 of credit on the platform. The tools we will be using are free, but the credit can come in handy for other projects. &lt;/p&gt;

&lt;p&gt;Once you log in, from the dashboard click "&lt;em&gt;Create App."&lt;/em&gt; Give your app a name and a description. Select the &lt;em&gt;"Rinkeby"&lt;/em&gt; network which is a test network.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8j_GS8e---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1634738651551/isgg3Y5vH.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8j_GS8e---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1634738651551/isgg3Y5vH.png" alt="Screen Shot 2021-10-20 at 17.00.01.png" width="880" height="358"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Create your app and then click &lt;em&gt;"View details"&lt;/em&gt; to get the &lt;strong&gt;API key&lt;/strong&gt; which we will be using.&lt;/p&gt;
&lt;h3&gt;
  
  
  Hardhat Setup
&lt;/h3&gt;

&lt;p&gt;You need  &lt;a href="https://nodejs.org/en/"&gt;node.js&lt;/a&gt; on your machine to use hardhat. Install the version for your pc. &lt;/p&gt;
&lt;h2&gt;
  
  
  Create your token
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Create a project folder and head over to its directory.&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mkdir my-token
cd my-token
&lt;/code&gt;&lt;/pre&gt;




&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;In your project directory create a hardhat project by running &lt;code&gt;npx hardhat&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ npx hardhat
&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;Here is what you will see on the terminal:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--F772Ff3m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1634724059272/o1Dvuo0OP.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--F772Ff3m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1634724059272/o1Dvuo0OP.png" alt="Screen Shot 2021-10-20 at 10.35.17.png" width="880" height="414"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can click enter throughout the setup wizard and keep the default options. &lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Run the command to install the  &lt;a href="https://github.com/OpenZeppelin/openzeppelin-contracts"&gt;OpenZepplin implementation&lt;/a&gt; for smart contracts. It has the ERC-20 token standard which we can extend from.&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install @openzeppelin/contracts
&lt;/code&gt;&lt;/pre&gt;




&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Under the 'contracts' folder create a new solidity file(file extension is .sol). This will be the file for our ERC-20 token. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;Below you can see a sample ERC-20 token smart contract extend from OpenZepplin. I have added some comments to explain what's going on in the code. Copy and paste it onto your own solidity file.&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight plaintext"&gt;&lt;code&gt; //SPDX-License-Identifier: Unlicense
 pragma solidity ^0.8.4; // tells the solidity version to the complier

import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; // inherit the erc20 contract

 import "hardhat/console.sol"; // built in hardhat local environment 

 contract Eda is ERC20 {
     constructor(string memory name, string memory symbol) ERC20(name, symbol) {
         _mint(msg.sender, 100 * (10 ** 18)); // mint tokens: supply 100 tokens, 18 is the decimal 
 }
}
&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;We need to do much as we are extending the functions from the OpenZepplin ERC20 Contract. All we are doing is minting the tokens, which basically means creating them. &lt;/p&gt;


&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Remember the Alchemy API key, we need to talk to the Rinkeby Test Network from our contract. Add your API key to the &lt;strong&gt;hardhat.config.json&lt;/strong&gt; (see code snippet under step-7)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;Add your metamask private key to &lt;strong&gt;hardhat.config.json.&lt;/strong&gt; You can get this by clicking Account Details --&amp;gt; Export Private Key from your Metamask extension. The tokens will be added to this account&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight plaintext"&gt;&lt;code&gt;require("@nomiclabs/hardhat-waffle");

module.exports = {
  solidity: '0.8.4', // make sure that the solidity compiler version is the same as in your contract
  networks: {
    rinkeby: { // defining our test network 
      url: '', //alchemy api key 
      accounts: [' '], // metamask rinkeby account private key
    },
  },
};
&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;All the coding is complete 😀 Now we need to compile and deploy our contract. &lt;/p&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;Compile your smart contract by running &lt;code&gt;npx hardhat compile&lt;/code&gt;. This command will create an 'artifacts' folder in your project directory. It will translate the solidity code into machine-executable code.&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx hardhat compile
&lt;/code&gt;&lt;/pre&gt;




&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;We need to take our contract from our local machine and put it onto the &lt;strong&gt;Rinkeby Test Network&lt;/strong&gt;. For this simply create a &lt;strong&gt;deploy.js&lt;/strong&gt; file under the 'scripts' folder. Copy and paste the content below onto your file.&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight plaintext"&gt;&lt;code&gt;async function main() {

   const Token = await hre.ethers.getContractFactory("Eda"); // hre: hardhat runtime environment
   const token = await Token.deploy("Eda Token", "Eda"); // call constructor: name and symbol
   console.log("Token address:", token.address); // print the address to the console
 }

 main()
   .then(() =&amp;gt; process.exit(0)) /
   .catch((error) =&amp;gt; {
     console.error(error); // print the error if there happens to be one 
     process.exit(1);
   });
&lt;/code&gt;&lt;/pre&gt;




&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Run the command below to deploy the contract to the Rinkeby Test Network.&lt;br&gt;&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; npx hardhat run scripts/deploy.js --network rinkeby
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If everything is working, it should deploy the contract and print out the contract address to the terminal. &lt;/p&gt;

&lt;p&gt;Copy your contract address and head over to the &lt;a href="https://rinkeby.etherscan.io/"&gt;Rinkeby Testnet Explorer&lt;/a&gt; to view your contract. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xyFyhknx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1634842784981/2jbg0xFTU.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xyFyhknx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1634842784981/2jbg0xFTU.png" alt="Screen Shot 2021-10-21 at 21.51.31.png" width="880" height="167"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can add your tokens to your metamask account. By default, you will not be able to see them. Under Assets select 'Import Tokens' and add the contract address. Once you click submit you should be able to see your tokens. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--umpNh9wD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1634842869086/grW9rUuJc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--umpNh9wD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1634842869086/grW9rUuJc.png" alt="Screen Shot 2021-10-21 at 22.00.59.png" width="880" height="420"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Let me leave you with the &lt;a href="https://ethereum.org/en/developers/"&gt;Ethereum Developer Resources&lt;/a&gt; where you can find great resources to continue developing on Ethereum.  &lt;/p&gt;

&lt;p&gt;Thank you very much for your time, hope you enjoyed the article. If you want any "eda" tokens or have any feedback, please don't hesitate to reach out!&lt;/p&gt;

</description>
      <category>solidity</category>
      <category>ethereum</category>
      <category>web3</category>
      <category>hardhat</category>
    </item>
  </channel>
</rss>
