Skip to content

HydraPhyzer/Upgrading-Smart-Contract

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Upgradig Smart Contracts

In This Section We Will Learn How to Upgrade Smart Contracts.

Remembers Points 💡

  • Upgrading Smart Contract Does Not Compromise The Immutability of Smart Contract in Blockchain

  • In This Chapter We Will Be Using @openzeppelin/hardhat-upgrades Package For Upgrading our Smart COntract

  • When We Initially Deploy Contarct, It Deploy Three Contracts in Real.

    • Implementation Contract (Our Original)
    • ProxyAdmin Contract
    • Proxy Contarct

    We Deal With Proxy Contarct For Calling Our Specified Methods

  • When We Deploy a Contarct Using deployProxy Method, That Contract Instance Can Be Upgraded Later

  • Only The Address That Originally Deployed Has the Rights to Upgrade

  • On Upgrading, The State Values (Vairables) and Contarct Adress etc Remains Same as The Previous One

Necessary Packages 📦

    npm install @nomiclabs/hardhat-ethers
    npm install @nomiclabs/hardhat-waffle
    npm install @openzeppelin/hardhat-upgrades
    npm install ethereum-waffle
    npm install ethers
    npm install hardhat

And Dont Forget to Add Below Lines in hardhat.config.js

require("@nomiclabs/hardhat-waffle");
require("@openzeppelin/hardhat-upgrades");

Procedure 🧪

npm init -y
npm i hardhat
npx hardhat

Open Terminal and Run

npx hardhat node to Run Hardhat Local Blockchain

Now Deploy Our Contarc to Localhost

npx hardhat run Scripts/DeployOld.js --network localhost`

Now Copy The Address of This Deployed Smart Contract

Now Open Terminal and Type

npx hardhat console --network localhost

const A1=await ethers.getContarctFactory("Old")
const A2=await A1.attach("0x9AB3SHDJD .... ") //Contract Address
(await A2.Get()).toString() // Will Print Value of Num (1)

// Now Deploy Our New Contract
npx hardhat run Scripts/DeployNew.js --network localhost

//Now Run Again
const B1=await ethers.getContarctFactory("New")
const B2=await B1.attach("0x9AB3SHDJD .... ") //Contract Address
(await B2.Increment())
(await A2.Get()).toString() // Will Print Value of Num (2)

About

In This Repo We Will Learn How to Upgrade Smart Contract With the Help of Open Zeppellin Hardhat Upgrade Package

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors