<?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: Abdul Maajid</title>
    <description>The latest articles on DEV Community by Abdul Maajid (@abdulmaajid).</description>
    <link>https://dev.to/abdulmaajid</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%2F288379%2Ff5672664-6868-4004-9111-4bbe2e6d6627.png</url>
      <title>DEV Community: Abdul Maajid</title>
      <link>https://dev.to/abdulmaajid</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/abdulmaajid"/>
    <language>en</language>
    <item>
      <title>Top Tools for Solidity Smart Contract Developers</title>
      <dc:creator>Abdul Maajid</dc:creator>
      <pubDate>Wed, 22 Feb 2023 14:17:25 +0000</pubDate>
      <link>https://dev.to/abdulmaajid/top-tools-for-solidity-smart-contract-developers-2g95</link>
      <guid>https://dev.to/abdulmaajid/top-tools-for-solidity-smart-contract-developers-2g95</guid>
      <description>&lt;h2&gt;
  
  
  Introduction:
&lt;/h2&gt;

&lt;p&gt;In the fast-evolving world of blockchain, smart contracts are becoming increasingly popular. They provide a secure, efficient, and transparent way to conduct transactions, making them ideal for a wide range of applications, from supply chain management to voting systems.&lt;/p&gt;

&lt;p&gt;As a smart contract developer, you know that creating, testing, and deploying smart contracts can be a complex process. Luckily, there are a number of tools available that can help you streamline your workflow and ensure your smart contracts are error-free and efficient.&lt;/p&gt;

&lt;p&gt;In this article, we will discuss the top tools for smart contract developers that can help you simplify the development process, save time, and improve your coding skills.&lt;/p&gt;

&lt;h3&gt;
  
  
  Section 1: Solidity Development Tools
&lt;/h3&gt;

&lt;p&gt;Solidity is the most widely used programming language for smart contract development. Here are some essential tools that every Solidity developer should be familiar with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Remix:&lt;/strong&gt; &lt;a href="https://remix.ethereum.org/" rel="noopener noreferrer"&gt;Remix&lt;/a&gt; is an integrated development environment (IDE) that provides a range of features for Solidity developers. It includes a compiler, debugger, and testing environment, as well as a built-in code editor.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Truffle:&lt;/strong&gt; &lt;a href="https://trufflesuite.com/" rel="noopener noreferrer"&gt;Truffle&lt;/a&gt; is a development framework that simplifies the process of building, testing, and deploying smart contracts. It provides a suite of tools, including a development console, testing framework, and asset pipeline, to make smart contract development more efficient.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hardhat:&lt;/strong&gt; &lt;a href="https://hardhat.org/" rel="noopener noreferrer"&gt;Hardhat&lt;/a&gt; is another development environment that provides a range of features for Solidity developers. It includes a local blockchain for testing, a testing framework, and a plugin system that allows developers to extend its functionality.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Section 2: Testing and Debugging Tools
&lt;/h3&gt;

&lt;p&gt;Testing and debugging smart contracts is a crucial part of the development process. Here are some tools that can help you ensure your smart contracts are error-free:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ganache:&lt;/strong&gt; &lt;a href="https://trufflesuite.com/docs/ganache/quickstart/" rel="noopener noreferrer"&gt;Ganache&lt;/a&gt; is a local blockchain that allows you to test your smart contracts in a simulated environment. It provides a range of features, including a built-in web3 provider and a user-friendly interface for monitoring transactions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Solhint:&lt;/strong&gt; &lt;a href="https://github.com/protofire/solhint" rel="noopener noreferrer"&gt;Solhint&lt;/a&gt; is a linter for Solidity code that checks for common errors and style issues. It can be integrated into your development environment to provide real-time feedback on your code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MythX:&lt;/strong&gt; &lt;a href="https://mythx.io/" rel="noopener noreferrer"&gt;MythX&lt;/a&gt; is a security analysis tool for smart contracts. It provides automated security scans and vulnerability reports, allowing you to identify and address potential security issues before deploying your smart contract.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Deployment and Management Tools
&lt;/h3&gt;

&lt;p&gt;Deploying and managing smart contracts can be a complex process. Here are some tools that can help you simplify this process:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Infura:&lt;/strong&gt; &lt;a href="https://www.infura.io/" rel="noopener noreferrer"&gt;Infura&lt;/a&gt; is a scalable infrastructure provider that allows you to connect to the Ethereum network without running a local node. It provides a range of features, including access to the Ethereum API and a range of developer tools.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Etherscan:&lt;/strong&gt; &lt;a href="https://etherscan.io/" rel="noopener noreferrer"&gt;Etherscan&lt;/a&gt; is a blockchain explorer that provides a range of features for Ethereum developers. It allows you to view transaction details, monitor contract activity, and explore the Ethereum blockchain.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OpenZeppelin:&lt;/strong&gt; &lt;a href="https://www.openzeppelin.com/" rel="noopener noreferrer"&gt;OpenZeppelin&lt;/a&gt; is a library of reusable smart contract components that can help you save time and ensure your smart contracts are secure. It includes a range of pre-built contracts, such as ERC20 and ERC721 tokens, as well as tools for testing and deployment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;BoringSolidity:&lt;/strong&gt; &lt;a href="https://github.com/boringcrypto/BoringSolidity" rel="noopener noreferrer"&gt;BoringSolidity&lt;/a&gt; is a set of libraries for Solidity smart contract development that aims to simplify and standardize common tasks, reduce the risk of vulnerabilities, and improve overall code quality. It was developed by ConsenSys Diligence, a leading security audit firm in the blockchain industry.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Conclusion:
&lt;/h3&gt;

&lt;p&gt;In conclusion, building smart contracts can be a challenging but rewarding task. Fortunately, there are many tools available to make the process easier and more efficient. From development frameworks and IDEs to testing and analysis tools, the options are vast and diverse. As a smart contract developer, it's important to stay up-to-date with the latest trends and tools in the industry to ensure that you're building the best possible products. By using the tools discussed in this article, you can streamline your development process and create more secure and robust smart contracts.&lt;br&gt;
So go ahead, dive in, and start building the next generation of decentralized applications.&lt;/p&gt;

&lt;p&gt;I hope you found this article useful, if you need any help please let me know in the comment section. Would you like to buy me a coffee, You can do it &lt;a href="https://www.buymeacoffee.com/abdulmaajid" rel="noopener noreferrer"&gt;Here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's connect on &lt;a href="https://twitter.com/MrAMaajid" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; and &lt;a href="https://pk.linkedin.com/in/amaajid007" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>tooling</category>
      <category>blockchain</category>
      <category>hardhat</category>
      <category>smartcontract</category>
    </item>
    <item>
      <title>Some Most Used NFT Standards</title>
      <dc:creator>Abdul Maajid</dc:creator>
      <pubDate>Sun, 23 Oct 2022 18:20:38 +0000</pubDate>
      <link>https://dev.to/abdulmaajid/some-most-used-nft-standards-1ke0</link>
      <guid>https://dev.to/abdulmaajid/some-most-used-nft-standards-1ke0</guid>
      <description>&lt;p&gt;ERC721 is the basic standard used to build token known as NFT(non-fungible token). A Non-Fungible Token (NFT) is used to identify something or someone in a unique way. This type of Token is perfect to be used on platforms that offer collectible items, access keys, lottery tickets, numbered seats for concerts and sports matches, etc.&lt;/p&gt;

&lt;p&gt;There are multiple standards used to build a nft tokens, the most popular are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;ERC-721&lt;/li&gt;
&lt;li&gt;ERC-721A&lt;/li&gt;
&lt;li&gt;ERC-1155&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  ERC721
&lt;/h2&gt;

&lt;p&gt;ERC721 token standard actually started off the NFT phenomenon. The standard was a first of its own kind and helped in creating unique tokens.&lt;/p&gt;

&lt;p&gt;ERC721 with ERC721Enumerable extension enhances the functionality of the original ERC721 by adding enumerability of all token ids in the contracts, and a way to check all token ids owned by an account.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Makes easy to find tokens by their associated tokenID by adding some utility functions like totalSupply, tokenByIndex, and tokenOfOwnerByIndex.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Store redundant/unneeded information on-chain. which drives up the costs of not only minting tokens but also transferring them&lt;/li&gt;
&lt;li&gt;Managing increasingly large loops.&lt;/li&gt;
&lt;li&gt;Mint price cost increase after the first mint&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  ERC-721A
&lt;/h2&gt;

&lt;p&gt;ERC721A is an improved implementation of the ERC721 standard that supports minting multiple tokens for close to the cost of one. You can save up to 80% on mints if you use this NFT minting contract&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gas savings for minting multiple NFTs in a single transaction.&lt;/li&gt;
&lt;li&gt;Removing duplicate storage from OpenZeppelin’s ERC721Enumerable.&lt;/li&gt;
&lt;li&gt;Updating the owner’s balance once per batch mint request, instead of per minted NFT.&lt;/li&gt;
&lt;li&gt;Updating the owner data once per batch mint request, instead of per minted NFT.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Transfer transactions cost more gas, which means it may cost more to gift or sell an ERC721A NFT after minting.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  ERC-1155
&lt;/h2&gt;

&lt;p&gt;ERC-1155 a standard interface for contracts that manage multiple token types, ERC1155 NFT is the same as an ERC721 NFT when the allowed mint quantity is equal to ‘1’. The most notable aspect is the difference between ERC 1155 and ERC 721 focuses largely on support for batch transfers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Facilitate batch transfers, reducing network congestion and lowering gas costs by up to 90%. &lt;/li&gt;
&lt;li&gt;Has a transfer security function that enables hassle-free transactions and allows tokens to be reclaimed by the issuer if sent to the wrong address.&lt;/li&gt;
&lt;li&gt;Requires a single smart contract for infinite tokens&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The sole disadvantage of ERC-1155 is that it keeps less reliable data to save time and money on transactions. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Which one do you use or prefer to use to build an NFT Token and why🤔?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I hope you found this article useful, if you need any help please let me know in the comment section. Would you like to buy me a coffee, You can do it &lt;a href="https://www.buymeacoffee.com/abdulmaajid" rel="noopener noreferrer"&gt;Here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's connect on &lt;a href="https://twitter.com/MrAMaajid" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; and &lt;a href="https://pk.linkedin.com/in/amaajid007" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>blockchain</category>
      <category>nft</category>
      <category>solidity</category>
      <category>programming</category>
    </item>
    <item>
      <title>ERC20 vs ERC721 vs ERC 1155</title>
      <dc:creator>Abdul Maajid</dc:creator>
      <pubDate>Sun, 01 May 2022 11:40:12 +0000</pubDate>
      <link>https://dev.to/abdulmaajid/erc20-vs-erc721-vs-erc-1155-4g5h</link>
      <guid>https://dev.to/abdulmaajid/erc20-vs-erc721-vs-erc-1155-4g5h</guid>
      <description>&lt;p&gt;&lt;em&gt;Ethereum&lt;/em&gt; is a technology that's home to digital money, global payments, and applications. Ethereum is an open-source, decentralized blockchain with EVM compatibility and smart contract functionality that enables anyone to build and run decentralized applications on its ecosystem. &lt;br&gt;
Ethereum further empowers the global trade and finance industries with its rich ecosystem and ability to support various tokens such as Fungible tokens, semi-fungible tokens, and &lt;br&gt;
&lt;a href="https://en.wikipedia.org/wiki/Non-fungible_token" rel="noopener noreferrer"&gt;non-fungible tokens&lt;/a&gt; (NFTs).&lt;/p&gt;

&lt;p&gt;On Ethereum Blockchain, tokens can represent virtual currencies (that hold real-world value), digital items, lottery tickets, fiat currencies like USD, and even a company’s share integrated on the Ethereum blockchain and used for various purposes. So there must some standard that should back such powerful features of tokens on blockchain. That's why Application-level standards and conventions, including contract standards such as token standards (ERC-20) and many more developed &lt;a href="https://eips.ethereum.org/erc" rel="noopener noreferrer"&gt;Link&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Witnessing the need for change, the Ethereum community introduces new token standards to help enterprises streamline their business operations in the Ethereum ecosystem. For this guide, we are keeping our discussion up to the three major token standards-ERC20 vs ERC721vs ERC1155.&lt;/p&gt;

&lt;h2&gt;
  
  
  What does ERC token standards?
&lt;/h2&gt;

&lt;p&gt;ERC stands for Ethereum request for comment. An ERC20 token is a standard used for creating and issuing smart contracts on the Ethereum blockchain. Smart contracts can then be used to create smart property or tokenized assets that people can invest in.&lt;/p&gt;

&lt;p&gt;ERC-21, ERC-721, and ERC-1155 are the three prevalent ERC token standards that most industries utilize to create their tokens. ERC standards, in a way, define smart contract standards for writing the smart contract that regulates the token activities on &lt;a href="https://www.coursesrank.com/2022/03/top-10-ethereum-courses-learn-trade.html" rel="noopener noreferrer"&gt;Ethereum&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Note that enterprises can also create tokens on Ethereum that do not abide by any token standard. Still, these tokens lack compatibility with important components of Ethereum, such as DeFi exchange and decentralized wallets.&lt;/p&gt;

&lt;h2&gt;
  
  
  ERC20 vs ERC721 vs ERC 1155:
&lt;/h2&gt;

&lt;p&gt;ERC token standard start from ERC-20 to ERC-4987, the evolution of the ERC tokens has been a great effort to keep Ethereum’s momentum high and make it a more mainstream. Let’s focus on the three major token standards-ERC20 vs ERC721 vs ERC 1155.&lt;/p&gt;

&lt;h3&gt;
  
  
  ERC-20: Fungible tokens
&lt;/h3&gt;

&lt;p&gt;ERC-20 tokens is the first token standard that introduced to enable the creation of fungible tokens. Every ERC20 token is interchangeable with each other. Fungible tokens, for example, represent assets whose value can be replaced with something of equal value like Fiat currencies.&lt;/p&gt;

&lt;p&gt;Virtually, the ERC-20 token can represent the following digital assets:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tickets for an online contest or scheme.&lt;/li&gt;
&lt;li&gt;Real-world financial assets such as a company’s stock, share dividend, etc.&lt;/li&gt;
&lt;li&gt;Reputation points from online games.&lt;/li&gt;
&lt;li&gt;Other redeemable points.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;ERC-20&lt;/strong&gt; tokens are Ethereum’s solution for streamlining the procedure of token integration and their regulation. This token standard further helps developers create a smart contract for tokenizing any &lt;strong&gt;Fungible&lt;/strong&gt; asset. Eventually, the smart contract regulates a decentralized application built on Ethereum.&lt;/p&gt;

&lt;h3&gt;
  
  
  ERC-721: Non-fungible tokens(NFT)
&lt;/h3&gt;

&lt;p&gt;The use of non-fungible tokens or NFTs is increasingly popular. From tokenizing digital content to a real-world asset, NFTs have been unlocking many benefits for people specially for artists.&lt;/p&gt;

&lt;p&gt;On Ethereum, a token representing a one kind of digital asset must comply with the ERC-721 token standard. Some known NFT- Cryptokitties, Bored APE, was built on the Ethereum blockchain.&lt;/p&gt;

&lt;p&gt;For understanding the role of ERC-721, check the following statement:&lt;/p&gt;

&lt;p&gt;ERC-20 is important to discover new cryptocurrencies. Likewise, ERC-721 is essential to create new and interesting NFTs that represent immutable ownership proof. Let’s understand what can ERC-721 represents:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A unique digital content piece.&lt;/li&gt;
&lt;li&gt;Real estate property.&lt;/li&gt;
&lt;li&gt;Social media content Tweets, Videos and pictures.&lt;/li&gt;
&lt;li&gt;Gaming assets and collectibles.&lt;/li&gt;
&lt;li&gt;Gaming characters.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The use of NFTs is vast, and every new technology utilizes NFTs or NFT technology to find amazing possibilities in the virtual business world.&lt;/p&gt;

&lt;p&gt;ERC-721 token standard addresses all these challenges, and users provide someone with the ownership of unique digital assets, trackable through Ethereum’s public ledger.&lt;/p&gt;

&lt;h3&gt;
  
  
  ERC-1155: Multi Token Standard
&lt;/h3&gt;

&lt;p&gt;A standard interface for contracts that manage multiple token types. A single deployed contract may include any combination of fungible tokens, non-fungible tokens or other configurations (e.g. semi-fungible tokens).&lt;br&gt;
It can be better explained as a common token Smart contract interface for various Ethereum tokens: fungible, semi-fungible, and non-fungible tokens.&lt;/p&gt;

&lt;p&gt;An enterprise willing to create and issue multiple tokens can leverage ERC-1155. It eliminates the hassle of writing separate smart contracts for each token standard (i.e. ERC-20, ERC-721, or more) and helps them seamlessly manage all their tokens.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ERC-1155 token can represent the following:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tokens.&lt;/li&gt;
&lt;li&gt;NFTs.&lt;/li&gt;
&lt;li&gt;Redeemable shopping vouchers etc.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;ERC-20, ERC-721, and ERC-1155 are currently the prevalent token standards. Likewise, the new and improved token standards will help enterprises launch more successful projects.&lt;/p&gt;

&lt;p&gt;I hope you found this article useful, if you need any help please let me know in the comment section. Would you like to buy me a coffee, You can do it &lt;a href="https://www.buymeacoffee.com/abdulmaajid" rel="noopener noreferrer"&gt;Here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's connect on &lt;a href="https://twitter.com/MrAMaajid" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; and &lt;a href="https://pk.linkedin.com/in/amaajid007" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Best Free Resources to Learn Web3/Blockchain Development</title>
      <dc:creator>Abdul Maajid</dc:creator>
      <pubDate>Mon, 14 Mar 2022 07:50:46 +0000</pubDate>
      <link>https://dev.to/abdulmaajid/best-free-resources-to-learn-web3blockchain-development-243l</link>
      <guid>https://dev.to/abdulmaajid/best-free-resources-to-learn-web3blockchain-development-243l</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Web3 is very popular right now. Web3 developers are earning more than web2 developers. Probably, it’s a good time to start learning Blockchain/web3. In this post, We will explore some great free resources to learn.&lt;/p&gt;

&lt;h2&gt;
  
  
  Basic
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Buildspace
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://app.buildspace.so/home" rel="noopener noreferrer"&gt;Buildspace&lt;/a&gt; offers very good tutorials to understand web3 stuff. If you're curious about web3 but not sure where to start -- this is the platform for you. Learn + start building cool stuff right now, earn NFTs, access secret work opportunities in crypto.&lt;br&gt;
Their discord server is also very helpful for people who want to learn web3. A great thing is that after you finish a tutorial, Buildspace will give you an NFT.&lt;/p&gt;

&lt;h3&gt;
  
  
  ODYSSEY
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.odysseydao.com/" rel="noopener noreferrer"&gt;ODYSSEY&lt;/a&gt; is a great site to understand the concepts of Web3 on other topics that are related to web3. For example, blockchain, NFTs, web3 concept, DeFi, DAO etc.&lt;/p&gt;

&lt;h3&gt;
  
  
  useWeb3
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.useweb3.xyz/" rel="noopener noreferrer"&gt;useWeb3&lt;/a&gt; is a very useful learning platform to access huge amount of helpful resources to learn Web3 and Blockchain. Here you can get all type of content like Books, Tutorials, Code Challenges etc.&lt;/p&gt;

&lt;h3&gt;
  
  
  thirdweb
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://thirdweb.com/" rel="noopener noreferrer"&gt;Thirdweb&lt;/a&gt; provide Tools that accelerate your workflow. They provide built in Intuitive SDKs and widgets for developers. Here you can create smart contracts without writing any code. thirdweb is a good platform for non-tech people.&lt;br&gt;
&lt;a href="https://thirdweb.com/" rel="noopener noreferrer"&gt;thirdweb&lt;/a&gt; allows us to build a dApps like NFT marketplace NFT collection etc very quickly.&lt;/p&gt;

&lt;h3&gt;
  
  
  Moralis
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://moralis.io/" rel="noopener noreferrer"&gt;https://moralis.io/&lt;/a&gt; is the ultimate Web3 Development Platform. You can build with one snippet of code. Save time + cost of building your own back-end infrastructure and use our fully managed, infinitely scalable enterprise-grade infrastructure — with one snippet of code. It's a best resource to learn Web3 development.&lt;/p&gt;

&lt;h3&gt;
  
  
  Questbook
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://openquest.xyz/" rel="noopener noreferrer"&gt;Questbook&lt;/a&gt; is very good platform to learn blockchain and web3 development. They have multiple Tracks to learn like Build on Ethereaum, Build on Solana etc. Even you can earn Nfts by completing Quests.&lt;/p&gt;

&lt;h3&gt;
  
  
  Crypto Zombies
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://cryptozombies.io/" rel="noopener noreferrer"&gt;Crypto Zombies&lt;/a&gt; is a really helpful to understand solidity basics and dapp’s simple architecture for beginners. CryptoZombies is an interactive school that teaches you all things technical about blockchains. Learn to make smart contracts in Solidity by making your own crypto-collectibles game.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pointer
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.pointer.gg/" rel="noopener noreferrer"&gt;Pointer&lt;/a&gt; offers really nice tutorials for developers. Here you can Build a full-stack Blockchain app.&lt;/p&gt;

&lt;h3&gt;
  
  
  LearnWeb3
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.learnweb3.io/" rel="noopener noreferrer"&gt;LearnWeb3&lt;/a&gt; offers great tutorials. Their tutorials are divided into 4 levels: Freshman, Sophomore, Junior, and Senior.&lt;br&gt;
Also, they offer tests to check your understanding.&lt;/p&gt;

&lt;h3&gt;
  
  
  Figment
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://learn.figment.io/" rel="noopener noreferrer"&gt;Figment&lt;/a&gt; is offering a lot of tutorials on blockchain and web3 development. They offer you tutorials for multiple Blockchains like Etheream, Solana, Terra etc. &lt;/p&gt;

&lt;h2&gt;
  
  
  Youtube
&lt;/h2&gt;

&lt;p&gt;Here are some best youtube channels to learn.&lt;/p&gt;

&lt;h3&gt;
  
  
  Nader Dabit YouTube Channel
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/c/naderdabit" rel="noopener noreferrer"&gt;https://www.youtube.com/c/naderdabit&lt;/a&gt;&lt;br&gt;
Some of you may know, Nader used to work as a DevRel at Amazon, but now he is in the web3 world. He has released many useful videos since last year.&lt;/p&gt;

&lt;h3&gt;
  
  
  Patrick Collins YouTube Channel
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/c/PatrickCollins" rel="noopener noreferrer"&gt;https://www.youtube.com/c/PatrickCollins&lt;/a&gt;&lt;br&gt;
Patrick is a DevRel at Chainlink and his videos cover a lot of things that are related to blockchain.&lt;/p&gt;

&lt;h3&gt;
  
  
  ETHGlobal YouTube Channel
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/c/ETHGlobal" rel="noopener noreferrer"&gt;https://www.youtube.com/c/ETHGlobal&lt;/a&gt;&lt;br&gt;
ETHGlobal helps run hackathons all over the world. Our goal is to be the best on-ramp to the global Ethereum community. They are leveraging years of experience to foster a world-class ecosystem of Ethereum developers and entrepreneurs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Chainlink YouTube Channel
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/channel/UCnjkrlqaWEBSnKZQ71gdyFA" rel="noopener noreferrer"&gt;https://www.youtube.com/channel/UCnjkrlqaWEBSnKZQ71gdyFA&lt;/a&gt;&lt;br&gt;
Chainlink also provide you lot of videos to learn about blockchain and web3. &lt;/p&gt;

&lt;h3&gt;
  
  
  HashLips
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/c/HashLipsNFT" rel="noopener noreferrer"&gt;https://www.youtube.com/c/HashLipsNFT&lt;/a&gt;&lt;br&gt;
If you are interested in NFTs, want to learn about NFTs then this Channel is the best place to learn.&lt;/p&gt;

&lt;h3&gt;
  
  
  Dapp University
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/c/DappUniversity" rel="noopener noreferrer"&gt;https://www.youtube.com/c/DappUniversity&lt;/a&gt;&lt;br&gt;
Dapp Univeristy is very good youtube channel if you want to learn web3 and development on EVM based blockchains.&lt;/p&gt;

&lt;h3&gt;
  
  
  Solana Labs
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/c/Solanalabs" rel="noopener noreferrer"&gt;https://www.youtube.com/c/Solanalabs&lt;/a&gt;&lt;br&gt;
This is solana's official channel if you want to learn about solana blockchain.&lt;/p&gt;

&lt;h2&gt;
  
  
  Blog
&lt;/h2&gt;

&lt;p&gt;Here are some best articles to learn about Blockchain and web3&lt;br&gt;
FullStack Web3 — Everything You Need to Know by &lt;strong&gt;Patrick Collins&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://medium.com/better-programming/everything-you-need-to-know-about-fullstack-web3-94c0f1b18019" rel="noopener noreferrer"&gt;https://medium.com/better-programming/everything-you-need-to-know-about-fullstack-web3-94c0f1b18019&lt;/a&gt;&lt;br&gt;
How to Become a Blockchain Engineer by &lt;strong&gt;Patrick Collins&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://medium.com/better-programming/how-to-become-a-blockchain-engineer-fa4386a0504f" rel="noopener noreferrer"&gt;https://medium.com/better-programming/how-to-become-a-blockchain-engineer-fa4386a0504f&lt;/a&gt;&lt;br&gt;
The Complete Guide to Full Stack Ethereum Development by &lt;strong&gt;Nader Dabit&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://dev.to/dabit3/the-complete-guide-to-full-stack-ethereum-development-3j13"&gt;https://dev.to/dabit3/the-complete-guide-to-full-stack-ethereum-development-3j13&lt;/a&gt;&lt;br&gt;
The Complete Guide to Full Stack Solana Development with React, Anchor, Rust, and Phantom by &lt;strong&gt;Nader Dabit&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://dev.to/edge-and-node/the-complete-guide-to-full-stack-solana-development-with-react-anchor-rust-and-phantom-3291"&gt;https://dev.to/edge-and-node/the-complete-guide-to-full-stack-solana-development-with-react-anchor-rust-and-phantom-3291&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I hope you found this article useful, if you need any help please let me know in the comment section. Would you like to buy me a coffee, You can do it &lt;a href="https://www.buymeacoffee.com/abdulmaajid" rel="noopener noreferrer"&gt;Here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's connect on &lt;a href="https://twitter.com/MrAMaajid" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; and &lt;a href="https://pk.linkedin.com/in/amaajid007" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;👋 Thanks for reading, See you next time&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>web3</category>
      <category>blockchain</category>
      <category>webdev</category>
    </item>
    <item>
      <title>How to Create an NFT(ERC-721) using OpenZeppelin</title>
      <dc:creator>Abdul Maajid</dc:creator>
      <pubDate>Sat, 29 Jan 2022 10:13:18 +0000</pubDate>
      <link>https://dev.to/abdulmaajid/how-to-create-an-nfterc-721-using-openzeppelin-3778</link>
      <guid>https://dev.to/abdulmaajid/how-to-create-an-nfterc-721-using-openzeppelin-3778</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Now a days blockchain is very trending lot of people are earning by selling and creating NFTs. If you want to build your own NFT collection. So in this article, I will create a non-fungible-token (NFT) and deploy to a public testnet.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is NFT?
&lt;/h3&gt;

&lt;p&gt;NFT stands for Non Fungible token is used to identify something or someone in a unique way. NFTs are tokens that we can use to represent ownership of any unique item. By NFTS we can tokenize things like art, collectibles, even any real state property. They can have only one owner at a time and they're secured by the Ethereum blockchain. Only owner can transfer ownership of NFT.&lt;/p&gt;

&lt;h3&gt;
  
  
  NFT Standard(ERC-721)
&lt;/h3&gt;

&lt;p&gt;The ERC-721 is the most common NFT standard. If your Smart Contract implements certain standardized API methods, it can be called an ERC-721 Non-Fungible Token Contract.&lt;/p&gt;

&lt;p&gt;These methods are specified in the &lt;a href="https://eips.ethereum.org/EIPS/eip-721" rel="noopener noreferrer"&gt;EIP-721&lt;/a&gt;. Open-source projects like &lt;a href="https://openzeppelin.com/" rel="noopener noreferrer"&gt;OpenZeppelin&lt;/a&gt; have simplified the development process by implementing the most common ERC standards as a reusable library.&lt;br&gt;
Here is the final Contract code for NFT which we will deploy to testnet(Ropsten).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// SPDX-License-Identifier: MIT
pragma solidity ^0.8.2;

import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/utils/Counters.sol";

contract ZPunks is ERC721, ERC721URIStorage, Ownable {
    using Counters for Counters.Counter;

    Counters.Counter private _tokenIdCounter;

    constructor() ERC721("ZPunks", "ZPK") {}

    function _baseURI() internal pure override returns (string memory) {
        return "https://ipfs.infura.io:5001/api/v0/cat?arg=";
    }

    function safeMint(address to, string memory uri) public onlyOwner {
        uint256 tokenId = _tokenIdCounter.current();
        _tokenIdCounter.increment();
        _safeMint(to, tokenId);
        _setTokenURI(tokenId, uri);
    }

    // The following functions are overrides required by Solidity.

    function _burn(uint256 tokenId) internal override(ERC721, ERC721URIStorage) {
        super._burn(tokenId);
    }

    function tokenURI(uint256 tokenId)
        public
        view
        override(ERC721, ERC721URIStorage)
        returns (string memory)
    {
        return super.tokenURI(tokenId);
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lets break it to understand every function purpose.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pragma solidity ^0.8.2;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;First of all we are setting our solidity version for this contract. In this contract I am setting ^0.8.2 which means to install version 0.8.2 or the latest minor or patch version such as 0.8.7.&lt;br&gt;
And after that we are importing all required files from openzeppelin library. And then inheriting in our main contract.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;using Counters for Counters.Counter;
Counters.Counter private _tokenIdCounter;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here we are using openzeppelin's counter library for saving NFT ids in contract.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;constructor() ERC721("ZPunks", "ZPK") {}
function _baseURI() internal pure override returns (string memory) {
    return "https://ipfs.infura.io:5001/api/v0/cat?arg=";
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After that we are setting NFT name and symbol in constructor. After setting NFT name we set base uri of NFT's data. I set IPFS uri you can set your own api uri too.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function safeMint(address to, string memory uri) public onlyOwner {
    uint256 tokenId = _tokenIdCounter.current();
    _tokenIdCounter.increment();
    _safeMint(to, tokenId);
    _setTokenURI(tokenId, uri);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then we have function for mint our nft. In this function we have two parameters first is the address of the nft owner and second is Hash of data you stored. In this function &lt;strong&gt;onlyOwner&lt;/strong&gt; modifier is used which means this function can only be called by Owner of this contract.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function tokenURI(uint256 tokenId) public view override(ERC721, ERC721URIStorage) returns (string memory) {
    return super.tokenURI(tokenId);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then in the last we have &lt;strong&gt;tokenUri&lt;/strong&gt; function which we will use to retrieve our NFT's stored uri Metadata.&lt;/p&gt;

&lt;h3&gt;
  
  
  Deploy Contract
&lt;/h3&gt;

&lt;p&gt;Now Lets deploy our NFT contract. I will deploy contract on Polygon Mumbai testnet. You can choose any testnet to deploy. If you want to deploy on Polygon Mumbai tesnet you can add network on metamask using following congiuration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Network Name&lt;/strong&gt;: Polygon Testnet&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Chain ID&lt;/strong&gt;: 80001&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;RPC URL&lt;/strong&gt;: &lt;a href="https://rpc-mumbai.maticvigil.com/" rel="noopener noreferrer"&gt;https://rpc-mumbai.maticvigil.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Currency Symbol&lt;/strong&gt;: MATIC&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Block Explorer URL&lt;/strong&gt;: &lt;a href="https://mumbai.polygonscan.com/" rel="noopener noreferrer"&gt;https://mumbai.polygonscan.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We will deploy our contract using &lt;a href="https://remix.ethereum.org/" rel="noopener noreferrer"&gt;remix IDE&lt;/a&gt;. Now let open remix IDE. And create new file and name MyNFT.sol.&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcw8lvubfe0fr7ujqqql3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcw8lvubfe0fr7ujqqql3.png" alt="Screenshot from 2022-01-29 12-44-27.png" width="800" height="438"&gt;&lt;/a&gt;&lt;br&gt;
After creating new file now copy the above contract code and paste in new created file and save.&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsu4qqg13k4eixrzi3vz3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsu4qqg13k4eixrzi3vz3.png" alt="Screenshot from 2022-01-29 12-45-26.png" width="800" height="434"&gt;&lt;/a&gt;&lt;br&gt;
Now lets move to compile section and compile our contract. Here we can see the compiler at top here we can select solidity version. I am using v0.8.7 you can use which you want to use and then press compile button.&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw2t4ikgb3ts5e8i4pf7o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw2t4ikgb3ts5e8i4pf7o.png" alt="Screenshot from 2022-01-29 12-45-53.png" width="800" height="438"&gt;&lt;/a&gt;&lt;br&gt;
Now lets move to deployment section to deploy our contract on Polygon Mumbai testnet. Here we can see on top &lt;em&gt;ENVIRONMENT&lt;/em&gt; change this to Injected Web3 and change contract to contract name you have in file.&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fid67pkbtff7z9t01kvy9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fid67pkbtff7z9t01kvy9.png" alt="Screenshot from 2022-01-29 12-47-59.png" width="800" height="437"&gt;&lt;/a&gt;&lt;br&gt;
And then click on deploy button and approve transaction after a while you contract will be deployed on blockchain and you can interact with contract and mint your NFT.&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffd3j5cxcebf7bbu1vguj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffd3j5cxcebf7bbu1vguj.png" alt="Screenshot from 2022-01-29 12-50-13.png" width="800" height="436"&gt;&lt;/a&gt;&lt;br&gt;
Here we can see all the functions from our contract file. We can mint our first nft using function named safeMint it needs two params one is address and IPFS Hash of nft which you can get after uploading image to IPFS.&lt;br&gt;
Congratulations! on creating your NFT contract.&lt;/p&gt;

&lt;p&gt;I hope you found this article useful, if you need any help please let me know in the comment section. Would you like to buy me a coffee, You can do it &lt;a href="https://www.buymeacoffee.com/abdulmaajid" rel="noopener noreferrer"&gt;Here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's connect on &lt;a href="https://twitter.com/MrAMaajid" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; and &lt;a href="https://pk.linkedin.com/in/amaajid007" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;👋 Thanks for reading, See you next time&lt;/p&gt;

</description>
      <category>blockchain</category>
      <category>smartcontract</category>
      <category>solidity</category>
      <category>nft</category>
    </item>
    <item>
      <title>Top Programming Languages To Create Smart Contracts</title>
      <dc:creator>Abdul Maajid</dc:creator>
      <pubDate>Thu, 04 Nov 2021 11:00:17 +0000</pubDate>
      <link>https://dev.to/abdulmaajid/top-programming-languages-to-create-smart-contracts-3n3f</link>
      <guid>https://dev.to/abdulmaajid/top-programming-languages-to-create-smart-contracts-3n3f</guid>
      <description>&lt;p&gt;There are many programming languages that allow you to write smart contracts. In this article, we’ll explore some top programming languages used to build smart contracts.&lt;/p&gt;

&lt;p&gt;First Let's understand  what is a smart contract.&lt;/p&gt;

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

&lt;p&gt;A smart contract is a computer program that is used to exchange assets including money, property, or shares without the need of any intermediate to function. The code and the agreements are contained therein exist over a distributed, decentralized blockchain network e.g. Ethereum, Solana, Bitcoin, etc.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;For example&lt;/em&gt;, if you want to purchase a piece of land using a smart contract, your land ownership documents will be sent to you immediately after your payment is completed. You don’t need to trust a third-party site to transfer the ownership after making payments.&lt;/p&gt;

&lt;h3&gt;
  
  
  Use Cases
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Government Voting&lt;/li&gt;
&lt;li&gt;Supply Chain Management &lt;/li&gt;
&lt;li&gt;Insurance Claim &lt;/li&gt;
&lt;li&gt;Record Storing&lt;/li&gt;
&lt;li&gt;Trading Activities&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So, here is a list of top smart contract languages, Let’s get into it.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Solidity
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://docs.soliditylang.org/" rel="noopener noreferrer"&gt;Solidity&lt;/a&gt; is an object-oriented, high-level language for implementing smart contracts. Solidity was first developed by Gavin Wood, Christian Reitwiessner, Yoichi Hirai, and several of Ethereum’s core contributors to enable the development of smart contracts that functioned on Ethereum.&lt;/p&gt;

&lt;p&gt;Influenced by C++, Python, and JavaScript, and is designed to target the Ethereum Virtual Machine (EVM), Solidity is the first blockchain programming language that one must learn. Especially when you want to develop dApps or are looking to get into the ICO development game.&lt;br&gt;
Major platforms that support the Solidity language.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Ethereum&lt;/li&gt;
&lt;li&gt;Polkadot&lt;/li&gt;
&lt;li&gt;Binance Smart Chain&lt;/li&gt;
&lt;li&gt;Tron&lt;/li&gt;
&lt;li&gt;Uniswap&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  2. RUST
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://docs.near.org/docs/develop/contracts/rust/intro" rel="noopener noreferrer"&gt;Rust&lt;/a&gt; is an ideal smart contract language: It is type-safe, memory safe, and free of undefined behaviors. It generates small binaries because it doesn’t include extra bloat, like a garbage collector, and advanced optimizations and tree shaking remove dead code. Through compiler flags, Rust can automatically protect against integer overflow. In the space-constrained blockchain world size is important. The Rust compiler is a great help for that, since it reorders struct fields in order to make each type as small as possible. Thus Rust data structures are very compact, in many cases even more compact than in C.&lt;/p&gt;

&lt;p&gt;Though a newbie in the Blockchain ecosystem, Rust is also being widely considered for building innovative, immutable, and secure solutions. &lt;/p&gt;

&lt;p&gt;Rust language enables open-source developers to create quick and effective Blockchain frameworks. It also serves them with a highly-capable mechanism of managing mutable states, amazing code optimization, better memory options, and concurrency-based opportunities.&lt;br&gt;
Major platforms that support the RUST language.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Solana&lt;/li&gt;
&lt;li&gt;Polkadot&lt;/li&gt;
&lt;li&gt;OpenEthereum&lt;/li&gt;
&lt;li&gt;Zero-chain&lt;/li&gt;
&lt;li&gt;Bitcoin Cash&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  3. VYPER
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://vyper.readthedocs.io/" rel="noopener noreferrer"&gt;Vyper&lt;/a&gt; is a contract-oriented, pythonic programming language that targets the Ethereum Virtual Machine (EVM).&lt;/p&gt;

&lt;p&gt;It was designed to improve upon Solidity, another smart contract language for Ethereum, by limiting unsafe practices and enhancing readability; Vyper seeks to optimize the security and auditability of smart contracts.&lt;/p&gt;

&lt;h3&gt;
  
  
  Vyper provides the following features:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Bounds and overflow checking:&lt;/strong&gt; On array accesses and arithmetic.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Support for signed integers and decimal fixed-point numbers&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Decidability:&lt;/strong&gt; It is possible to compute a precise upper bound for the gas consumption of any Vyper function call.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Strong typing&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Small and understandable compiler code&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Limited support for pure functions:&lt;/strong&gt; Anything marked constant is not allowed to change the state.
Vyper does not strive to be a 100% replacement for everything that can be done in Solidity; it will deliberately forbid things or make things harder if it deems fit to do so for the goal of increasing security.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  4. JavaScript
&lt;/h2&gt;

&lt;p&gt;JavaScript is a general-purpose programming language, and it’s found a place in the blockchain space. Because JavaScript is an entry-level language, most blockchains tend to create a JavaScript wrapper or library to allow developers to easily jump into the ecosystem.&lt;br&gt;
The popularity of one of the renowned smart contract languages, Solidity, largely rests on its similarities to JavaScript.&lt;br&gt;
The notable value advantages of JavaScript as one of the smart contract programming languages include the following,&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;JavaScript ensures easier and faster entry to the market due to the ease of using solutions based on JavaScript. &lt;/li&gt;
&lt;li&gt;The design of JavaScript allows the benefit of improved scalability which can enhance the functionality of smart contracts effectively.&lt;/li&gt;
&lt;li&gt;Most important of all, JavaScript assures limited hassles in the integration of required resources. &lt;/li&gt;
&lt;li&gt;As a result, JavaScript can be one of the top contenders among the smart contract languages outlined in this list.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  5. Python
&lt;/h2&gt;

&lt;p&gt;Blockchain Programming in Python has not only ruled the world of app development, IoT app development, and network servers’ development, but is also proving to be an asset in the Blockchain-as-a-service arena.&lt;/p&gt;

&lt;h3&gt;
  
  
  Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Blockchain programming in Python language is easy to learn&lt;/li&gt;
&lt;li&gt;Access to dynamic architecture&lt;/li&gt;
&lt;li&gt;Perfect for both base and scripting approaches,&lt;/li&gt;
&lt;li&gt;Open-source support&lt;/li&gt;
&lt;li&gt;Blockchain coding in python is efficient for prototyping&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Python is the 2nd most popular programming language. Some of the popular blockchains developed using Python are Ethereum, Hyperledger Fabric, Steem, and NEO.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Yul
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://docs.soliditylang.org/en/v0.5.3/yul.html" rel="noopener noreferrer"&gt;Yul&lt;/a&gt; is another entry among popular smart contract programming languages. As a matter of fact, it is an intermediate language that you can compile to bytecode for addressing the needs of different backends.&lt;br&gt;
The Solidity compiler has an experimental implementation that uses Yul as an intermediate language. Yul is used in stand-alone mode and for inline assembly inside Solidity.&lt;/p&gt;

&lt;p&gt;Yul bears planned support for EVM and &lt;a href="https://github.com/ewasm" rel="noopener noreferrer"&gt;ewasm&lt;/a&gt; (Ethereum flavored WebAssembly). It is designed to be a usable common denominator of both platforms.&lt;/p&gt;

&lt;p&gt;Yul is a great target for high-level optimization stages that can benefit both EVM and ewasm platforms equally.&lt;br&gt;
Most Ethereum-based projects most likely already use Yul.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Golang
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://golang.org/" rel="noopener noreferrer"&gt;Golang&lt;/a&gt; is an open sourced programming language loosely based on the syntax of the C programming language. Golang is an easy language for developers to learn and current estimates place Golang developers at more than 800,000 worldwide.&lt;/p&gt;

&lt;p&gt;This programming language was created by Google. It is one language that can allow different processes to run at the same time, meaning that it allows for concurrent programming.&lt;/p&gt;

&lt;p&gt;Most of HyperLedger’s chaincode built using HyperLedger Fabrics for smart contracts are being written in Golang. FLETA also supports Golang as a smart contract programming language.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Clarity
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://clarity-lang.org/" rel="noopener noreferrer"&gt;Clarity&lt;/a&gt; is a new language that brings smart contracts to Bitcoin. It is a decidable language, meaning you can know, with certainty, from the code itself what the program will do.&lt;/p&gt;

&lt;p&gt;Clarity is interpreted (not compiled) &amp;amp; the source code is published on the blockchain. Clarity gives developers a safe way to build complex smart contracts. The Clarity open-source project is supported by the &lt;a href="https://blockstack.org/" rel="noopener noreferrer"&gt;Stacks ecosystem&lt;/a&gt;, &lt;a href="https://hiro.so/" rel="noopener noreferrer"&gt;Hiro PBC&lt;/a&gt;, &amp;amp; &lt;a href="https://www.algorand.com/" rel="noopener noreferrer"&gt;Algorand&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Predictable&lt;/strong&gt;: The Clarity language uses precise and unambiguous syntax that allows developers to predict exactly how their contracts will be executed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Secure&lt;/strong&gt;: The Clarity language allows users to supply their conditions for transactions that ensure that a contract may never unexpectedly transfer a token owned by a user.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No compiler&lt;/strong&gt;: Contracts written in Clarity are broadcasted on the blockchain exactly as they are written by developers.
## Conclusion
So, these were some of the programming languages that can be considered for entering the Blockchain world and making the best of the flourishing opportunity. Which programming language from the above list you should use is dependent on the blockchain you want to work on. For Ethereum blockchain, for example, &lt;em&gt;Solidity&lt;/em&gt; is the top choice for most developers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I hope you found this article useful, if you need any help please let me know in the comment section. Would you like to buy me a coffee, You can do it &lt;a href="https://buymeacoffee.com/abdulmaajid" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's connect on &lt;a href="https://twitter.com/MrAMaajid" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; and &lt;a href="https://pk.linkedin.com/in/amaajid007" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;👋 Thanks for reading, See you next time&lt;/p&gt;

</description>
      <category>blockchain</category>
      <category>smartcontracts</category>
      <category>programming</category>
      <category>web3</category>
    </item>
    <item>
      <title>How to Create an ERC20 Token in Solidity</title>
      <dc:creator>Abdul Maajid</dc:creator>
      <pubDate>Fri, 29 Oct 2021 10:00:23 +0000</pubDate>
      <link>https://dev.to/abdulmaajid/how-to-create-an-erc20-token-in-solidity-1a9h</link>
      <guid>https://dev.to/abdulmaajid/how-to-create-an-erc20-token-in-solidity-1a9h</guid>
      <description>&lt;p&gt;Let’s start with the basics Understanding:&lt;/p&gt;

&lt;h4&gt;
  
  
  What is a Token?
&lt;/h4&gt;

&lt;p&gt;Tokens can represent virtually anything in Ethereum:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;reputation points in an online platform&lt;/li&gt;
&lt;li&gt;skills of a character in a game&lt;/li&gt;
&lt;li&gt;lottery tickets&lt;/li&gt;
&lt;li&gt;financial assets like a share in a company&lt;/li&gt;
&lt;li&gt;a fiat currency like USD&lt;/li&gt;
&lt;li&gt;an ounce of gold&lt;/li&gt;
&lt;li&gt;and many more...&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  What is an ERC-20 Token?
&lt;/h4&gt;

&lt;p&gt;ERC stands for Ethereum Request for Comment, and 20 is the proposal identifier number. ERC-20 was designed to improve the ETH network.&lt;br&gt;
An ERC20 token is a blockchain-based asset with similar functionality to bitcoin, ether, and bitcoin cash: it can hold value and be sent and received.&lt;br&gt;
The ERC-20 introduces a standard for Fungible Tokens. In short they have a property that makes each Token be exactly the same type and value of another Token.&lt;/p&gt;
&lt;h5&gt;
  
  
  What makes ERC20 tokens so attractive and successful?
&lt;/h5&gt;

&lt;ol&gt;
&lt;li&gt;ERC20 tokens are simple and easy to deploy, as you will see in this tutorial.&lt;/li&gt;
&lt;li&gt;It was the first popular specification to offer Ethereum token standardization. It was not by any means the first, but thanks to its popularity, it quickly became the industry standard.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Just like other Ethereum tokens, ERC20 tokens are implemented as smart contracts and executed on the Ethereum Virtual Machine (EVM) in a decentralized manner.&lt;/p&gt;
&lt;h3&gt;
  
  
  Creating your own ERC20 Token:
&lt;/h3&gt;

&lt;p&gt;We will use &lt;a href="https://github.com/ethereum/solidity" rel="noopener noreferrer"&gt;Solidity&lt;/a&gt;    to Create ERC-20 Token.&lt;br&gt;
&lt;a href="https://github.com/ethereum/solidity" rel="noopener noreferrer"&gt;Solidity&lt;/a&gt; is an contract-oriented and statically-typed programming language that was designed to allow developers to create smart contracts.&lt;br&gt;
ERC20 token need to implement the following methods and events:&lt;/p&gt;
&lt;h3&gt;
  
  
  Methods
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffl36rfyqlph8q0mv1z0n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffl36rfyqlph8q0mv1z0n.png" alt="ERC20 Methods" width="800" height="381"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Events
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ay9q06kx3mui2lj2yjs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ay9q06kx3mui2lj2yjs.png" alt="ERC20 Events" width="800" height="129"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h5&gt;
  
  
  In order to create an ERC20 token, you need the following:
&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;The Token’s Name&lt;/li&gt;
&lt;li&gt;The Token’s Symbol&lt;/li&gt;
&lt;li&gt;The Token’s Decimal Places&lt;/li&gt;
&lt;li&gt;The Number of Tokens in Circulation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now Head over to the Ethereum &lt;a href="https://remix.ethereum.org/" rel="noopener noreferrer"&gt;Remix&lt;/a&gt; IDE and make a new Solidity file, for example - token.sol&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkrpymscdc1lptjhhxmix.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkrpymscdc1lptjhhxmix.png" alt="Creating Contract File" width="800" height="285"&gt;&lt;/a&gt;&lt;br&gt;
Paste the following code into your new Solidity script:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pragma solidity ^0.8.0;

interface IERC20 {

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function allowance(address owner, address spender) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);


    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}


contract SampleToken is IERC20 {
    using SafeMath for uint256;

    string public constant name = "SampleToken";
    string public constant symbol = "SMT";
    uint8 public constant decimals = 18;

    mapping(address =&amp;gt; uint256) balances;
    mapping(address =&amp;gt; mapping (address =&amp;gt; uint256)) allowed;

    uint256 totalSupply_;

    constructor(uint256 total) public {
        totalSupply_ = total;
        balances[msg.sender] = totalSupply_;
    }

    function totalSupply() public override view returns (uint256) {
        return totalSupply_;
    }

    function balanceOf(address tokenOwner) public override view returns (uint256) {
        return balances[tokenOwner];
    }

    function transfer(address receiver, uint256 numTokens) public override returns (bool) {
        require(numTokens &amp;lt;= balances[msg.sender]);
        balances[msg.sender] = balances[msg.sender].sub(numTokens);
        balances[receiver] = balances[receiver].add(numTokens);
        emit Transfer(msg.sender, receiver, numTokens);
        return true;
    }

    function approve(address delegate, uint256 numTokens) public override returns (bool) {
        allowed[msg.sender][delegate] = numTokens;
        emit Approval(msg.sender, delegate, numTokens);
        return true;
    }

    function allowance(address owner, address delegate) public override view returns (uint) {
        return allowed[owner][delegate];
    }

    function transferFrom(address owner, address buyer, uint256 numTokens) public override returns (bool) {
        require(numTokens &amp;lt;= balances[owner]);
        require(numTokens &amp;lt;= allowed[owner][msg.sender]);

        balances[owner] = balances[owner].sub(numTokens);
        allowed[owner][msg.sender] = allowed[owner][msg.sender].sub(numTokens);
        balances[buyer] = balances[buyer].add(numTokens);
        emit Transfer(owner, buyer, numTokens);
        return true;
    }
}

library SafeMath {
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
      assert(b &amp;lt;= a);
      return a - b;
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
      uint256 c = a + b;
      assert(c &amp;gt;= a);
      return c;
    }
}

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

&lt;/div&gt;



&lt;p&gt;We need to define two mapping objects. This is the Solidity notion for an associative or key/value array:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; mapping(address =&amp;gt; uint256) balances;
 mapping(address =&amp;gt; mapping (address =&amp;gt; uint256)) allowed;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The expression &lt;code&gt;mapping(address =&amp;gt; uint256)&lt;/code&gt; defines an associative array whose keys are of type address. a number used to denote account addresses, and whose values are of type uint256. Balances mapping, will hold the token balance of each owner account.&lt;/p&gt;

&lt;p&gt;The second mapping object, allowed, will include all of the accounts approved to withdraw from a given account together with the withdrawal sum allowed for each.&lt;/p&gt;

&lt;p&gt;After that we set the total amount of tokens at constructor (which is a special function automatically called by Ethereum right after the contract is deployed) and assign all of them to the “contract owner” i.e. the account that deployed the smart contract:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;uint256 totalSupply_;
constructor(uint256 total) public {
  totalSupply_ = total;
  balances[msg.sender] = totalSupply_;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Get Total Token Supply
&lt;/h3&gt;

&lt;p&gt;This function will return the number of all tokens allocated by this contract regardless of owner.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function totalSupply() public view returns (uint256) {
  return totalSupply_;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Get Token Balance of Owner
&lt;/h3&gt;

&lt;p&gt;balanceOf will return the current token balance of an account, identified by its owner’s address.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function balanceOf(address tokenOwner) public view returns (uint256) {
   return balances[tokenOwner];
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Transfer Tokens to Another Account
&lt;/h3&gt;

&lt;p&gt;The transfer function is used to move &lt;code&gt;numTokens&lt;/code&gt; amount of tokens from the owner’s balance to that of another user, or receiver. The transferring owner is &lt;a href="https://ethereum.stackexchange.com/questions/21029/difference-between-msg-owner-and-msg-sender/28042" rel="noopener noreferrer"&gt;msg.sender&lt;/a&gt; i.e. the one executing the function.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function transfer(address receiver, uint256 numTokens) public returns (bool) {
    require(numTokens &amp;lt;= balances[msg.sender]);
    balances[msg.sender] = balances[msg.sender].sub(numTokens);
    balances[receiver] = balances[receiver].add(numTokens);
    emit Transfer(msg.sender, receiver, numTokens);
    return true;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Approve user to Withdraw Tokens
&lt;/h3&gt;

&lt;p&gt;This function is most often used in a token marketplace scenario. What &lt;code&gt;approve&lt;/code&gt; does is to allow an owner i.e. msg.sender to approve a delegate account to withdraw tokens from his account and to transfer them to other accounts.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function approve(address delegate, uint256 numTokens) public returns (bool) {
   allowed[msg.sender][delegate] = numTokens;
   emit Approval(msg.sender, delegate, numTokens);
   return true;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At the end of its execution, this function fires an Approval event.&lt;/p&gt;

&lt;h3&gt;
  
  
  Get Number of Tokens Approved for Withdrawal
&lt;/h3&gt;

&lt;p&gt;This function returns the current approved number of tokens by an owner to a specific delegate, as set in the approve function.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function allowance(address owner, address delegate) public view returns (uint) {
   return allowed[owner][delegate];
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Transfer Tokens by Delegate
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;transferFrom&lt;/code&gt; function is the peer of the approve function. It allows a delegate approved for withdrawal to transfer owner funds to a third-party account.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function transferFrom(address owner, address buyer,
                     uint numTokens) public returns (bool) {
  require(numTokens &amp;lt;= balances[owner]);
  require(numTokens &amp;lt;= allowed[owner][msg.sender]);

  balances[owner] = balances[owner] — numTokens;
  allowed[owner][msg.sender] =
        allowed[from][msg.sender] — numTokens;
  balances[buyer] = balances[buyer] + numTokens;
  Transfer(owner, buyer, numTokens);
  return true;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  SafeMath
&lt;/h3&gt;

&lt;p&gt;We also used &lt;a href="https://openzeppelin.org/api/docs/math_SafeMath.html" rel="noopener noreferrer"&gt;SafeMath&lt;/a&gt; Library for &lt;code&gt;uint256&lt;/code&gt; data type. SafeMath is a Solidity library aimed at dealing with one way hackers have been known to break contracts: integer overflow attack. In such an attack, the hacker forces the contract to use incorrect numeric values by passing parameters that will take the relevant integers past their maximal values.&lt;/p&gt;

&lt;h2&gt;
  
  
  Contract Deployment
&lt;/h2&gt;

&lt;p&gt;Now Let's deploy our ERC20 Token to Ethereum Network. To Deploy Contract to Ethereum Network you will need to install the &lt;a href="https://metamask.io/" rel="noopener noreferrer"&gt;MetaMask&lt;/a&gt; plugin on your browser and a Ropsten (Ethereum test network) account with at least some &lt;a href="https://faucet.ropsten.be/" rel="noopener noreferrer"&gt;Ropsten&lt;/a&gt; Ether in it.&lt;/p&gt;

&lt;p&gt;Then, we will hop over to the second tab to the bottom called &lt;em&gt;Compiler&lt;/em&gt; and click &lt;strong&gt;Compile&lt;/strong&gt;.&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1fh7eyjwks4h09ftv01j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1fh7eyjwks4h09ftv01j.png" alt="Compile Contract" width="800" height="378"&gt;&lt;/a&gt;&lt;br&gt;
After compiled successfully Then, we will hop over to the third tab to the bottom called &lt;em&gt;DEPLOY &amp;amp; RUN TRANSACTIONS&lt;/em&gt;. Then change the environment to &lt;strong&gt;Injected Web3&lt;/strong&gt;. Make sure to select the appropriate contract from options.&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnvgy5eoe2sy8e46mgwyv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnvgy5eoe2sy8e46mgwyv.png" alt="Deploy Contract" width="800" height="386"&gt;&lt;/a&gt;&lt;br&gt;
And then enter total supply in highlighted box which you want for this token and click on deploy. A MetaMask popup will appear asking us to confirm the transaction. After approve your contract will be deployed which you can see in bottom section &lt;strong&gt;Deployed Contracts&lt;/strong&gt;.&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa6cokm5yx4233b8xiwur.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa6cokm5yx4233b8xiwur.png" alt="Deoployed" width="800" height="382"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That’s it! your token contract is now deployed on Ethereum’s Ropsten testnet! &lt;/p&gt;

&lt;p&gt;Congratulations on successfully creating your very own token/coin on the Ethereum network! Read more about the ERC-20 standard &lt;a href="https://eips.ethereum.org/EIPS/eip-20" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>web3</category>
      <category>blockchain</category>
      <category>solidity</category>
      <category>erc20</category>
    </item>
  </channel>
</rss>
