How to deploy smart contract on Goerli testnet with help of truffle and infura in detail

How to deploy smart contract on Goerli testnet with help of truffle and infura in detail

Before deploying smart contract on mainnet we have to deploy in testnet so we can test that our smart contract is working properly or not. we are going to deploy our smart contract on Goerli testnet. We are going to discuss below topics in this blog.

  • how to install truffle

  • create a project using truffle

  • create smart contract

  • compile smart contract

  • deploy smart contract on goerli testnet

I assume that you already created account on Metamask and Infura.

Step 1: Install truffle

Follow the below instruction to Install the truffle.

  • Open the command prompt.

  • Run the npm install -g truffle command.


Step 2: Initiating a project in Truffle

Follow below instruction for initiating a project in truffle.

  • Choose you project directory and create empty folder.

  • Now open that folder in vscode.

  • Open terminal and run truffle init command.


This command will create some files and folder in your working directory.


Step 4: Create and migrate smart contract in truffle

Follow below instruction for create smart contract.

  • Create Counter.sol file in contract directory.

  • Copy and paste below code in Counter.sol file

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.3;

contract Counter {
    uint public counter = 0;

    function Increment () public {

    function Decrement () public {

    function showCounter() public view returns(uint) {
        return counter;
  • Create 1_counter_migration.js file inside migrations folder and copy paste below code.
const Coumter = artifacts.require('Coumter');

module.exports = function (deployer) {
  • Now we are going to compile our smart contract for that run truffle compile command


Now we are going to deploy smart contract on Goerli testnet

  • Run npm install @truffle/hdwallet-provider command


this will install require packages and create node module folder on your root directory.

  • Now open truffle-config.js file. This file contain configurations of truffle and testnet.

  • Create .env file inside root directory and put MNEMONIC of your metamask wallet.


  • Now you have to uncomment below code inside truffle-config.js file.


  • Now run truffle migrate --network goerli command


Note: If you are getting error something like below while running truffle migrate --network goerli command


Then you have to replace code from this

provider: () => new HDWalletProvider(MNEMONIC,`${PROJECT_ID}`),

to this

provider: () => new HDWalletProvider(MNEMONIC,`wss://${PROJECT_ID}`),
  • Now copy transaction hash.



  • You will get Detail of your transaction.


Now you successfully deploy your smart contract to goerli testnet.