Marketplace has launched, further enabling blockchain developers! Learn more

How to Deploy a Smart Contract on MATIC/Polygon

September 23, 2022

Overview

Ethereum is a very lovely blockchain to work with, but recently, heavy traffic and many people building on it have resulted in the chain being a bit congested. Layer 2 solutions solve this issue by extending Ethereum's scalability. Polygon (FKA MATIC) is one such solution. It is an Ethereum sidechain with lower gas fees along with the security of Ethereum. Today in this guide, we will learn more about the Matic/Polygon chain and how to deploy a smart contract on Matic/Polygon.

Prerequisites
  • A Polygon node.
  • Web browser.
  • MetaMask installed in the browser.
  • Love of polygon.

Why Polygon?

With the rapid adoption of Ethereum, the problem of scalability arose, where gas prices started getting higher as more and more people wanted to get that precious Ethereum block space. Polygon, which was launched as MATIC network, was created to provide a scalable solution to Ethereum. It is a Proof-of-stake blockchain, just like other PoS blockchains, with the exception that transactions are collected and then settled on the Ethereum blockchain. This gives Polygon the interoperability, liquidity, and security of Ethereum.

Polygon's main chain is a Proof-of-Stake (PoS) sidechain. Where MATIC, the native token of Polygon network, is used as staking token to validate transactions and vote on network upgrades. MATIC is also used to pay for the gas fees on Polygon.

Now that we know what Polygon is let us deploy a contract on this fantastic network.

Booting your Polygon node

We'll deploy our contract on Polygon Mumbai testnet. We can simply get a free trial node from QuickNode, which is much better than investing time looking at different custom configs to launch your own node.

Screenshot of Quicknode Mumbai Endpoint


Copy the HTTP URL, which will be needed in the next step.

Setting up MetaMask with Polygon node.

After creating your QuickNode Polygon Node, we’ll have to set it up in the MetaMask wallet as a custom RPC

Getting test MATIC

We will need some test MATIC to pay for gas fees to deploy and interact with the smart contract.

Copy your address from MetaMask, paste it into the address field of Polygon faucet, and click on submit. The faucet will send you 0.1 test MATIC.

Writing the contract

Time to write our smart contract, go to REMIX Ethereum and make a new solidity file, for example: mumbai01.sol

Paste the following code into your new Solidity script:

writing the contract

Copy
// SPDX-License-Identifier: MIT
pragma solidity >=0.4.0 <0.7.0;
contract SimpleStorage {
    uint storedData;
    function set(uint x) public {
        storedData = x;
    }
    function get() public view returns (uint) {
        return storedData;
    }
}

Explanation of the code above.

Line 1: Specifying SPDX license type, which is an addition after Solidity ^0.6.8. 

Whenever the source code of a smart contract is made available to the public, these licenses can help resolve/avoid copyright issues. If you do not wish to specify any license type, you can use a special license UNLICENSED or simply skip the whole comment (it won’t result in an error, just a warning).
 
Line 2: On the first line, we are declaring which Solidity compiler we want to use. For instance, we are targeting any version between ≥ 0.4.0 and <0.7.0.

Line 3: We are declaring our contract here and naming it as SimpleStorage.

Line 4: Declaring a uint (Unsigned Integer) variable named storedData, this variable will be used to store data.

Line 5-7: Next, we will add a set function, using which we will change the value of our variable storeData. The set function accepts a parameter x whose value we are placing into storeData. In addition, the function is marked as public which means that the function can be called outside the scope of this function and by other contracts.

Line 8-10: We will add a get function to retrieve the value of storeData variable. This function is marked as view, which tells the Solidity compiler that this is a read-only function.

Other than that, the get function also has returns (uint), which means that the function will return a uint value.

Deploying the contract

Now click on the Solidity logo from the left menu and click on compile. After successful compilation, a green tick will appear on the Solidity logo.


Now, click on the option from the left menu to deploy the complied contract and select Injected Web3 as the environment. Below the environment, the name and chainid of our network will appear. In this case, 'custom 80001' for Matic testnet. Make sure you have the correct contract name selected under the contract option. Once you have checked everything, click on "Deploy" and accept the transaction from the MetaMask pop-up window.


Once the contract deployment transaction is approved, the deployed contract will appear under the `Deployed Contracts` section.


Expand the deployed contract and click on "get". It will return the value of storedData, which is currently zero since we have not input any number yet.


To input a value, enter a number in the field near the set button, click on "set" and approve the transaction from the MetaMask pop-up. Once the transaction is approved, the value of storedData will be the input number. To verify this, click on "get", and the previously input value will be printed.


This is how contracts are deployed Polygon!

Conclusion

A big thank you and kudos if you are reading this; you learned what MATIC/Polygon is, how to set up a QuickNode Polygon node in MetaMask, get test MATIC, deploy a smart contract, and interact with it!

Subscribe to our newsletter for more articles and guides on Ethereum. If you have any feedback, feel free to reach out to us via Twitter. You can always chat with us on our Discord community server, featuring some of the coolest developers you’ll ever meet :)

Related articles 18

Solidity vs Vyper
Originally Published On: Aug 18, 2021
Updated On: Sep 23, 2022

With the introduction to smart... When we think of blockchains,... Introduction IntroductionVyper is... Now, the million dollar question...

Continue reading
How to write an Ethereum smart contract using Solidity
Originally Published On: Apr 5, 2020
Updated On: Sep 23, 2022

This article is intended for... Before getting started with... The smart contract term was... As we saw that smart contracts... Now, let's write a simple smart... After writing a smart contract... So we have successfully created...

Continue reading
How to Setup Local Development Environment for Solidity
Originally Published On: Jul 10, 2021
Updated On: Sep 23, 2022

The success story of blockchain... According to the Now that you are geared up with... Installation Now that our contract is ready... Now, let's write some test... The last thing, we need to do is... For deploying using hardhat, you... Here we saw how to work with...

Continue reading
How to Create a BEP20 Token
Originally Published On: Jul 3, 2021
Updated On: Sep 23, 2022

BEP20 is the Binance Smart Chain... The first thing you will want to... The Next thing we will need to... Because BSC uses the EVM, the... With the initial BEP20.sol... In order to view this in your... Congratulations! You made it to...

Continue reading
What is an ABI?
Originally Published On: Mar 20, 2021
Updated On: Sep 23, 2022

While interacting with a smart... ABI (Application Binary... The JSON format of a contract’s... One of the most common ways is... Now that you know what ABI is,...

Continue reading
How to call another smart contract from your solidity code
Originally Published On: Jan 30, 2021
Updated On: Sep 23, 2022

Smart contracts are the most... Smart contracts are computer... We’ll deploy our contracts on... Now to achieve our goal we'll... Now you will see two contracts... Now click on count button under... Now let's update the value of... Let's check if the INTERFACE... Here we successfully saw how we...

Continue reading
How to create and deploy an ERC-721 (NFT)
Originally Published On: Mar 6, 2021
Updated On: Sep 23, 2022

Digital collectibles compatible... Fungible means to be the same or... ERC stands for Ethereum Request... Digital art (or... Now that we know what ERC-721... Before writing our NFT contract,... For ease and security, we’ll use... Congratulations on creating your...

Continue reading
How to deploy a smart contract with Brownie
Originally Published On: Jul 23, 2021
Updated On: Sep 23, 2022

Python is one of the most... Smart contract development is... Brownie is built on top of... First of all, lets cd into the... We will deploy our contract on... We need to set up our QuickNode... As our contract will be deployed... Before deploying the contract,... So, today we learned brownies...

Continue reading
How to Write a Secure Smart Contract in Vyper
Originally Published On: Feb 2, 2022
Updated On: Sep 23, 2022

Hey readers! If you are familiar... In this project we will be... First things first, if we are... We can begin by writing our... Here we will write the code... Congrats on making it to the...

Continue reading
Como crear un Token BEP20
Originally Published On: Jan 10, 2022
Updated On: Sep 23, 2022

BEP20 es en Binance Smart Chain... La primera cosa que hay que... El próximo paso que deberás... Como BSC usa la EVM, el código... Con el contrato BEP20.sol... Para poder ver esto en la... ¡Felicidades! Acabas de terminar...

Continue reading
How to Create a Dutch Auction Smart Contract
Originally Published On: Feb 11, 2022
Updated On: Sep 23, 2022

Often to perform any transaction... Auctions are platforms for... A Dutch auction, also known as... We will deploy our contract on... Before moving further, it is... Now that our Dutch auction... If you made it here,...

Continue reading