<?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: Albert Hu</title>
    <description>The latest articles on DEV Community by Albert Hu (@thatguyintech).</description>
    <link>https://dev.to/thatguyintech</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%2F23537%2F670fa2b1-f5ee-415f-bd9f-f74f56b1dc18.png</url>
      <title>DEV Community: Albert Hu</title>
      <link>https://dev.to/thatguyintech</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/thatguyintech"/>
    <language>en</language>
    <item>
      <title>How to Deploy a Polygon (Matic) Smart Contract Tutorial</title>
      <dc:creator>Albert Hu</dc:creator>
      <pubDate>Wed, 06 Apr 2022 06:55:58 +0000</pubDate>
      <link>https://dev.to/thatguyintech/how-to-deploy-a-polygon-matic-smart-contract-tutorial-3f7f</link>
      <guid>https://dev.to/thatguyintech/how-to-deploy-a-polygon-matic-smart-contract-tutorial-3f7f</guid>
      <description>&lt;p&gt;(originally published on the &lt;a href="https://docs.alchemy.com/alchemy/tutorials/how-to-deploy-a-polygon-smart-contract" rel="noopener noreferrer"&gt;Alchemy documentation hub&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;HELLO!&lt;/p&gt;

&lt;p&gt;If you are new to blockchain development and don’t know where to start, or if you've explored Ethereum mainnet a bit and found it wayyy toooo expensive.. this guide is for you :) &lt;/p&gt;

&lt;p&gt;We will walk through coding, deploying, and interacting a simple smart contract on the Polygon Mumbai test network using &lt;a href="https://metamask.io/" rel="noopener noreferrer"&gt;Metamask&lt;/a&gt;, &lt;a href="https://docs.soliditylang.org/" rel="noopener noreferrer"&gt;Solidity&lt;/a&gt;, &lt;a href="https://hardhat.org/" rel="noopener noreferrer"&gt;Hardhat&lt;/a&gt;, &lt;a href="https://docs.ethers.io/v5/" rel="noopener noreferrer"&gt;Ethers.js&lt;/a&gt;, and &lt;a href="https://alchemy.com/?a=polygon-smart-contract" rel="noopener noreferrer"&gt;Alchemy&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;And don’t worry if you don’t understand what any of this means yet, I'll explain everything!&lt;/p&gt;

&lt;p&gt;If you have questions at any point, here are some ways to debug:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Look for your question on &lt;a href=""&gt;Ethereum StackExchange&lt;/a&gt; using the &lt;a href="https://ethereum.stackexchange.com/questions/tagged/polygon" rel="noopener noreferrer"&gt;polygon&lt;/a&gt; tag or the &lt;a href="https://ethereum.stackexchange.com/questions/tagged/alchemy" rel="noopener noreferrer"&gt;alchemy&lt;/a&gt; tag.&lt;/li&gt;
&lt;li&gt;Reach out for help in the &lt;a href="https://www.alchemy.com/discord" rel="noopener noreferrer"&gt;Alchemy Discord&lt;/a&gt;!&lt;/li&gt;
&lt;li&gt;Tweet at us &lt;a href="https://twitter.com/AlchemyPlatform" rel="noopener noreferrer"&gt;@AlchemyPlatform&lt;/a&gt; or &lt;a href="https://twitter.com/thatguyintech" rel="noopener noreferrer"&gt;@thatguyintech&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Step 1. Initialize Your Project
&lt;/h2&gt;

&lt;p&gt;First, we’ll need to create a folder for our project. Navigate to your command line and type:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mkdir polygon-smart-contract-tutorial
cd polygon-smart-contract-tutorial
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now that we’re inside our project folder, we’ll use &lt;code&gt;npm init --yes&lt;/code&gt; to initialize the project. If you don’t already have &lt;code&gt;npm&lt;/code&gt; installed, follow &lt;a href="https://docs.alchemy.com/alchemy/guides/alchemy-for-macs#1-install-nodejs-and-npm" rel="noopener noreferrer"&gt;these instructions&lt;/a&gt; (we’ll also need Node.js so download that too!).&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;You should see something like the following output based on your newly created project configuration &lt;code&gt;package.json&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="err"&gt;Wrote&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;/Users/thatguyintech/Documents/co/polygon-smart-contract-tutorial/package.json:&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"new"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"1.0.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"main"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"index.js"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"scripts"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"test"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"echo &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Error: no test specified&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt; &amp;amp;&amp;amp; exit 1"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"keywords"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"author"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"license"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ISC"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 2. Download &lt;a href="https://hardhat.org/getting-started/#installation" rel="noopener noreferrer"&gt;Hardhat&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Hardhat is a development environment to compile, deploy, test, and debug your Ethereum software. It helps developers when building smart contracts and blockchain applications locally before deploying to a live chain.&lt;/p&gt;

&lt;p&gt;Inside our &lt;code&gt;polygon-smart-contract-tutorial&lt;/code&gt; project run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install --save-dev hardhat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 3. Create a Hardhat Project
&lt;/h2&gt;

&lt;p&gt;Inside our &lt;code&gt;polygon-smart-contract-tutorial&lt;/code&gt; project folder, run:&lt;br&gt;
&lt;/p&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;p&gt;You should then see a welcome message and option to select what you want to do. Select &lt;code&gt;Create a basic sample project&lt;/code&gt;:&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcnenayr5r1xww2hfqv40.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcnenayr5r1xww2hfqv40.png" alt="npx hardhat options"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And then just use all the default settings!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;✔ What do you want to do? · Create a basic sample project
✔ Hardhat project root: · /Users/thatguyintech/Documents/co/new
✔ Do you want to install this sample project's dependencies with npm (@nomiclabs/hardhat-waffle ethereum-waffle chai @nomiclabs/hardhat-ethers ethers)? (Y/n) · y
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Hardhat will then generate a &lt;code&gt;hardhat.config.js&lt;/code&gt; file for us along with a couple of folders with sample code we can work with, including &lt;code&gt;contracts&lt;/code&gt;, &lt;code&gt;scripts&lt;/code&gt;, and &lt;code&gt;test&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4. Review Your Smart Contract
&lt;/h2&gt;

&lt;p&gt;In &lt;code&gt;contracts/Greeter.sol&lt;/code&gt;, we can see our example smart contract. Let's review it to understand a bit about what's going on in Solidity code!&lt;/p&gt;

&lt;p&gt;Here's the entire contract code:&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: Unlicense
pragma solidity ^0.8.0;

import "hardhat/console.sol";

contract Greeter {
    string private greeting;

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

    function greet() public view returns (string memory) {
        return greeting;
    }

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

&lt;/div&gt;



&lt;p&gt;Let's break it down line by line :)&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: Unlicense
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;a href="https://www.linuxfoundation.org/blog/solving-license-compliance-at-the-source-adding-spdx-license-ids/" rel="noopener noreferrer"&gt;SPDX License Identifier&lt;/a&gt; lets other engineers know what they are allowed to do with your code. "&lt;a href="https://unlicense.org/" rel="noopener noreferrer"&gt;Unlicense&lt;/a&gt;" means that your code is free to use by public domain.&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;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This line tells the solidity compiler which version it should use to compile your smart contract into byte code. &lt;code&gt;^0.8.0&lt;/code&gt; means that any minor version from 0.8.0 and upwards is fair to use!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;contract Greeter {
  ...
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every smart contract is a collection of functions and data (its state). Once deployed, a contract resides at a specific address on the Ethereum blockchain. The &lt;code&gt;contract&lt;/code&gt; syntax is very similar to working with classes or objects in other languages.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;string private greeting;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here we define a state variable that the contract keeps track of, &lt;code&gt;greeting&lt;/code&gt;. It is a string. Because it is marked with the  &lt;code&gt;private&lt;/code&gt; modifier, only the contract itself has permissions to modify it. Although the data is still visible and public on the blockchain, other contracts and accounts will not be able to access or modify a private variable. &lt;/p&gt;

&lt;p&gt;This is useful in cases when you want to minimize access to your smart contract state. Otherwise you can use the &lt;code&gt;public&lt;/code&gt; modifier.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    constructor(string memory _greeting) {
        console.log("Deploying a Greeter with greeting:", _greeting);
        greeting = _greeting;
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Similar to many class-based object-oriented languages, a constructor is a special function that is only executed once, upon contract creation.&lt;/p&gt;

&lt;p&gt;In our &lt;code&gt;Greeter&lt;/code&gt; constructor, we expect a string &lt;code&gt;_greeting&lt;/code&gt; to be passed in when the contract is deployed. We then log to hardhat console, and then write the &lt;code&gt;_greeting&lt;/code&gt; string to the blockchain by setting it to the state variable &lt;code&gt;greeting&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    function greet() public view returns (string memory) {
        return greeting;
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now we have our first smart contract function, &lt;code&gt;greet&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;This is a read-only function that does not cost any gas to execute because it doesn't change any blockchain state. It requires no input arguments either, and simply returns whatever the contract has saved in the private &lt;code&gt;greeting&lt;/code&gt; variable.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    function setGreeting(string memory _greeting) public {
        console.log("Changing greeting from '%s' to '%s'", greeting, _greeting);
        greeting = _greeting;
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;setGreeting&lt;/code&gt; is a write function that will cost gas for users to execute because it modifies the &lt;code&gt;greeting&lt;/code&gt; variable stored on the blockchain. Similar to the logic in the constructor, it takes in one string input and uses that to update the smart contract state variable.&lt;/p&gt;




&lt;p&gt;Now that we understand some basics on how Solidity code works, let's finish setting up some accounts and configurations to prepare for deployment to the Polygon blockchain!&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5. Connect to the Polygon blockchain network with Alchemy
&lt;/h2&gt;

&lt;p&gt;There are many ways to make requests to the Polygon chain. For simplicity, we’ll use a free account on Alchemy, a blockchain developer platform and API that allows us to communicate with the Polygon chain without having to run our own nodes. The platform also has developer tools for monitoring and analytics that we’ll take advantage of in this tutorial to understand what’s going on under the hood during our smart contract deployment. If you don’t already have an Alchemy account, you can &lt;a href="https://alchemy.com/?a=polygon-smart-contract" rel="noopener noreferrer"&gt;sign up for free here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Once you’ve created an Alchemy account, generate an API key by creating an app. This will allow us to make requests to the Mumbai test network. If you’re not familiar with testnets, check out &lt;a href="https://docs.alchemy.com/alchemy/guides/choosing-a-network#polygon" rel="noopener noreferrer"&gt;this guide&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Navigate to the “Create App” page in your Alchemy Dashboard by hovering over “Apps” in the nav bar and clicking “Create App”.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fepfyf0t7q064wgjngapm.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fepfyf0t7q064wgjngapm.png" alt="Create Alchemy App"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Name your app “Polygon Smart Contract”, offer a short description, select “Staging” for the Environment (used for your app bookkeeping), select “Polygon” for the chain, and "Polygon Mumbai" for the network.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fltqsmi21y1c71qe2pifp.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fltqsmi21y1c71qe2pifp.png" alt="App Settings"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click “Create app” and that’s it! Your app should appear in your apps table.&lt;/p&gt;

&lt;p&gt;By clicking on the "View Key" link to the right of the the table row for your app, you will be able to find the HTTP RPC URL you can use to access a Polygon Mumbai Testnet node using Alchemy.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7cn65ewkj2b19valuvjh.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7cn65ewkj2b19valuvjh.png" alt="View API Key"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can see in our example that our HTTP URL is:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;https://polygon-mumbai.g.alchemy.com/v2/Ed7AeuPuIgo6fNDi49TDy_x4UBymLBsJ&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;DO NOT SHARE THIS WITH ANYONE! This is your access to your node. If you share it, then others will be able to freely use up your app's resources and then you'll be sad.&lt;/p&gt;

&lt;p&gt;Copy this down for later, we will use this in our MetaMask configuration, as well as in our hardhat configuration file to deploy the smart contract.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 6. Create an Ethereum account!
&lt;/h2&gt;

&lt;p&gt;Now we need an Ethereum account to send and receive transactions.&lt;/p&gt;

&lt;p&gt;For this tutorial, we’ll use MetaMask, a virtual wallet in the browser used to manage your Ethereum account address.&lt;/p&gt;

&lt;p&gt;You can download and create a MetaMask account for free &lt;a href="https://metamask.io/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 7. Switch to the Polygon Mumbai test network
&lt;/h2&gt;

&lt;p&gt;After you create your MetaMask account, make sure to switch over to the “Mumbai Test Network”.&lt;/p&gt;

&lt;p&gt;MetaMask doesn't come with the Mumbai Test Network by default, so you will need to make some changes to create the connection.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1x3gtdxqq2d1qkca4x03.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1x3gtdxqq2d1qkca4x03.png" alt="Example MetaMask Mumbai Network"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can do this by clicking on your MetaMask profile icon and going down to settings.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1kmzumcr4oarrkybsuls.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1kmzumcr4oarrkybsuls.png" alt="Settings"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then click on "Networks" and then the "Add network" button.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1u1uqp88w4k6l4fooit1.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1u1uqp88w4k6l4fooit1.png" alt="Networks"&gt;&lt;/a&gt;&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqi2k7bwt5je9jfd890p4.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqi2k7bwt5je9jfd890p4.png" alt="Add Network"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Input the following settings:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Network Name: Polygon Mumbai&lt;/li&gt;
&lt;li&gt;New RPC URL: &lt;/li&gt;
&lt;li&gt;Chain ID: 80001&lt;/li&gt;
&lt;li&gt;Currency Symbol: MATIC&lt;/li&gt;
&lt;li&gt;Block Explorer URL&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mumbai.polygonscan.com" rel="noopener noreferrer"&gt;https://mumbai.polygonscan.com&lt;/a&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwch6qk2dwm71e4769yfh.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwch6qk2dwm71e4769yfh.png" alt="Polygon Mumbai network settings"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After you confirm the settings, MetaMask should automatically be connected to the new Polygon Mumbai test network.&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 8. Get some free test ETH from a faucet
&lt;/h2&gt;

&lt;p&gt;Go to &lt;a href="https://mumbaifaucet.com/" rel="noopener noreferrer"&gt;https://mumbaifaucet.com/&lt;/a&gt; and input your wallet address (ethereum account address) from MetaMask.&lt;/p&gt;

&lt;p&gt;You can get your wallet address by opening MetaMask and copying the long string that goes &lt;code&gt;0x...&lt;/code&gt; at the top.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Finoed8l2jrx5et5ohz75.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Finoed8l2jrx5et5ohz75.png" alt="Copy Wallet Address"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you input your wallet address into the faucet input box and click "Send Me MATIC", you will see a new transaction link show up. That links you to the polygonscan page where you can view a receipt of the faucet transaction. Here is an &lt;a href="https://mumbai.polygonscan.com/tx/0x9c20ebc97f9569ce66826d3e9956a750de867b38585ee24111519abd15167740" rel="noopener noreferrer"&gt;example&lt;/a&gt;.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh0t35jom5i40fkpm4mbh.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh0t35jom5i40fkpm4mbh.png" alt="Completed faucet request"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Good stuff! Now that you have some "money", we can actually go back to our contract and deploy it!&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 9. Connect MetaMask and Alchemy to your project.
&lt;/h2&gt;

&lt;p&gt;We’ve created a MetaMask wallet, Alchemy account, and written our smart contract, now it’s time to connect the three.&lt;/p&gt;

&lt;p&gt;Every transaction sent from your virtual wallet requires a signature using your unique private key. To provide our program with this permission, we can safely store our private key (and Alchemy API key) in an environment file.&lt;/p&gt;

&lt;p&gt;First, install the &lt;a href="https://www.npmjs.com/package/dotenv" rel="noopener noreferrer"&gt;dotenv&lt;/a&gt; package in your project directory:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install &lt;/span&gt;dotenv &lt;span class="nt"&gt;--save&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, create a &lt;code&gt;.env&lt;/code&gt; file in the root directory of our project, and add your MetaMask private key and HTTP Alchemy API URL to it.&lt;/p&gt;

&lt;p&gt;NOTE: Your environment file must be named &lt;code&gt;.env&lt;/code&gt; or it won't be recognized as an environment file. Do not name it &lt;code&gt;process.env&lt;/code&gt; or &lt;code&gt;.env-custom&lt;/code&gt; or anything else.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Follow &lt;a href="https://metamask.zendesk.com/hc/en-us/articles/360015289632-How-to-Export-an-Account-Private-Key" rel="noopener noreferrer"&gt;these instructions&lt;/a&gt; to export your private key&lt;/li&gt;
&lt;li&gt;Review the end of Step 5 to get your HTTP Alchemy API URL&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So at this point, your &lt;code&gt;.env&lt;/code&gt; file should look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;API_URL = "https://polygon-mumbai.g.alchemy.com/v2/&amp;lt;your-api-key&amp;gt;"
PRIVATE_KEY = "your-metamask-private-key"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now let's make sure these environment variables are correctly loaded in our hardhat project.&lt;/p&gt;

&lt;p&gt;We'll use the &lt;code&gt;dotenv&lt;/code&gt; module inside our &lt;code&gt;hardhat.config.js&lt;/code&gt; file to do so.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 13: Update hardhat.config.js
&lt;/h2&gt;

&lt;p&gt;We’ve added several dependencies and plugins so far, now we need to update hardhat.config.js so that our project knows about all of them.&lt;/p&gt;

&lt;p&gt;Update your &lt;code&gt;hardhat.config.js&lt;/code&gt; to look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@nomiclabs/hardhat-waffle&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;dotenv&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;config&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;API_URL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;PRIVATE_KEY&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// This is a sample Hardhat task. To learn how to create your own go to&lt;/span&gt;
&lt;span class="c1"&gt;// https://hardhat.org/guides/create-task.html&lt;/span&gt;
&lt;span class="nf"&gt;task&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;accounts&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Prints the list of accounts&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;taskArgs&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;hre&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;accounts&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;hre&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ethers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getSigners&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

  &lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;account&lt;/span&gt; &lt;span class="k"&gt;of&lt;/span&gt; &lt;span class="nx"&gt;accounts&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;account&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;address&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="c1"&gt;// You need to export an object to set up your config&lt;/span&gt;
&lt;span class="c1"&gt;// Go to https://hardhat.org/config/ to learn more&lt;/span&gt;

&lt;span class="cm"&gt;/**
 * @type import('hardhat/config').HardhatUserConfig
 */&lt;/span&gt;
&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;solidity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;0.8.4&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;networks&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;mumbai&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;API_URL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;accounts&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;`0x&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;PRIVATE_KEY&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note that with &lt;code&gt;dotenv&lt;/code&gt;, we can access variables defined in our &lt;code&gt;.env&lt;/code&gt; file by using &lt;code&gt;process.env&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Inside the [hardhat config], we define a new network called &lt;code&gt;mumbai&lt;/code&gt; that uses the Alchemy HTTP URL and our MetaMask account to talk to the blockchain.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 14: Compile our contract
&lt;/h2&gt;

&lt;p&gt;To make sure everything is working so far, let’s compile our contract. The &lt;code&gt;compile&lt;/code&gt; task is one of the built-in hardhat tasks.&lt;/p&gt;

&lt;p&gt;From the command line run:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;If all goes well, you should see something like this output in your terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;thatguyintech@albert new % npx hardhat compile
Compiled 1 Solidity file successfully
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you have any issues, please check previous discsussions on  &lt;a href="https://ethereum.stackexchange.com/" rel="noopener noreferrer"&gt;Ethereum Stackexchange&lt;/a&gt; using the "Alchemy" and "Polygon" tags, or create your own question!&lt;/p&gt;

&lt;p&gt;And if you'd like to chat with others who may have expertise, join the Alchemy Discord: &lt;a href="https://alchemy.com/discord" rel="noopener noreferrer"&gt;https://alchemy.com/discord&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 15: Deploy our contract
&lt;/h2&gt;

&lt;p&gt;We’re finally ready to deploy our smart contract! Navigate to the command line and run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx hardhat run scripts/sample-script.js &lt;span class="nt"&gt;--network&lt;/span&gt; mumbai
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should then see output similar to this (with different address string):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Greeter deployed to: 0x8Fab93D28e52a93d4b00E25Eaa04B64223382f89
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can now paste this contract address into &lt;a href="https://mumbai.polygonscan.com/" rel="noopener noreferrer"&gt;https://mumbai.polygonscan.com/&lt;/a&gt; and find details about your deployed contract.&lt;/p&gt;

&lt;p&gt;For example, you can see when the contract was deployed, how much the transaction fee cost, and which wallet address was responsible for the deployment.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgf90snj91w6z5umqofpy.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgf90snj91w6z5umqofpy.png" alt="Mumbai Polygonscan Example"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Congrats! You just deployed a smart contract to the Polygon sidechain 🎉&lt;/p&gt;

&lt;p&gt;To understand what’s going on under the hood, let’s navigate to the Explorer tab in our &lt;a href="https://dashboard.alchemyapi.io/explorer" rel="noopener noreferrer"&gt;Alchemy dashboard&lt;/a&gt;. If you have multiple Alchemy apps, make sure to filter by app and select "Polygon Smart Contract".&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm0hlw0183udmwiyw5sqr.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm0hlw0183udmwiyw5sqr.png" alt="Alchemy Explorer"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here you’ll see a handful of JSON-RPC calls that Hardhat/Ethers made under the hood for us when we called the &lt;code&gt;.deploy()&lt;/code&gt; function. Two important ones to call out here are &lt;a href="https://docs.alchemy.com/alchemy/apis/ethereum/eth_sendrawtransaction" rel="noopener noreferrer"&gt;eth_sendRawTransaction&lt;/a&gt;, which is the request to actually write our contract onto the Polygon chain, and &lt;a href="https://docs.alchemy.com/alchemy/apis/ethereum/eth_gettransactionbyhash" rel="noopener noreferrer"&gt;eth_getTransactionByHash&lt;/a&gt; which is a request to read information about our transaction given the hash (a typical pattern when sending transactions).&lt;/p&gt;

&lt;p&gt;That's all for now! You've learned a little bit about Solidity, set up some key accounts and tooling for building smart contracts, and then deployed your first smart contract to Polygon! You're well on your way to becoming a blockchain developer :) &lt;/p&gt;

&lt;p&gt;If you enjoyed this tutorial, give us a tweet &lt;a href="https://twitter.com/AlchemyPlatform" rel="noopener noreferrer"&gt;@AlchemyPlatform&lt;/a&gt;!&lt;/p&gt;

</description>
      <category>polygon</category>
      <category>solidity</category>
      <category>blockchain</category>
      <category>alchemy</category>
    </item>
  </channel>
</rss>
