Deploy a contract with Hardhat
Hardhat is one of the popular smart contract development frameworks. It is the ZKFair’s preferred framework, and therefore used in the ZKFair as a default for deploying and automatically verifying smart contracts.
This document is a guide on how to deploy a smart contract on the ZKFair network using Hardhat.
Hardhat smart contract
mkdir <project-name>;cd <project-name>
Initialize a project with Hardhat:
npx hardhat
.Next, (… To avoid failure … please go slow with this cli dialogue…),
So then,
Press
<ENTER>
to set the project root.Press
<ENTER>
again to accept addition of.gitignore
.Type
n
to reject installingsample project's dependencies
.The idea here is to postpone installing dependencies to later steps due to a possible version-related bug.
Open the
hardhat.config.js
file and paste the below code:Note that a different path to artifacts is added so that the React app will be able to read the contract ABI within the
src
folder.
Add scripts
Create a new file, in the contracts folder, named
Counter.sol
:touch contracts/Counter.sol
.Copy the below code and paste it in the Counter contract code:
Create a new file in the scripts folder
deploy-counter.js
:touch scripts/deploy-counter.js
.Add the code below to the
deploy-counter.js
file:Before compiling the contract, you need to install the toolbox. You may need to change directory to install outside the project. Use this command:
Compile your contract code (i.e., go back to the project root in the CLI):
Now run the scripts:
Here’s an output example:
Counter contract deployed to
https://explorer.public.zkevm-test.net
/address/0x5FbDB2315678afecb367f032d93F642f64180aa3
Update frontend
The next step is to turn Counter.sol
into a dApp by importing the ethers
and the Counter
file, as well as logging the contract’s ABI.
Include the below code in the
App.js
file:Update the
counterAddress
to your deployed address.It is the hexadecimal number found at the tail-end of the output of the last
npx hardhat run ...
command and looks like this0x5FbDB2315678afecb367f032d93F642f64180aa3
.It must be pasted in the
App.js
to replaceyour-contract-address
. Be sure to use the deployed address from your own implementation!
Update frontend counter to read from blockchain. Include the below code in the
App.js
file:Also, to import
useEffect
, insert it like this:To be able to track a loader, add this to your state:
This is within the
App()
function.
Let frontend counter write to the blockchain by adding the below
requestAccount
andupdateCounter
functions:Place these two functions above the
readCounterValue()
function in theApp.js
file.Replace the
incrementCounter
function with this one:Update the increment button code to:
Now, run the Counter dApp by simply using npm start
in CLI at the project root.
Congratulations for reaching this far. You have successfully deployed a dApp on the ZKFair testnet.
Last updated