To run this project locally, follow these steps.
- Clone the project locally, change into the directory, and install the dependencies:
git clone https://github.com/dabit3/polygon-ethereum-nextjs-marketplace.git
cd polygon-ethereum-nextjs-marketplace
# install using NPM or Yarn
npm install
# or
yarn
- Create a file named
.secret
in the root directory of the project. Either leave it blank or paste in a test account private key if you are going to be deploying to Matic Mumbai.
Consider using an environment variable if working on Matic Mainnet with real tokens and not storing them in a file associated with the project.
- Start the local Hardhat node
npx hardhat node
- With the network running, deploy the contracts to the local network in a separate terminal window
npx hardhat run scripts/deploy.js --network localhost
-
Rename config.example.js to config.js and copy the
nftmarketaddress
andnftaddress
values to it. -
Start the app
npm run dev
The main configuration for this project to work successfully on Polygon is located in hardhat.config.js:
require("@nomiclabs/hardhat-waffle");
const fs = require('fs');
const privateKey = fs.readFileSync(".secret").toString().trim() || "";
// infuraId is optional if you are using Infura RPC
const infuraId = fs.readFileSync(".infuraid").toString().trim() || "";
module.exports = {
defaultNetwork: "hardhat",
networks: {
hardhat: {
chainId: 1337
},
mumbai: {
// Infura
// url: `https://polygon-mumbai.infura.io/v3/${infuraId}`
url: "https://rpc-mumbai.matic.today",
accounts: [privateKey]
},
matic: {
// Infura
// url: `https://polygon-mainnet.infura.io/v3/${infuraId}`,
url: "https://rpc-mainnet.maticvigil.com",
accounts: [privateKey]
}
},
solidity: {
version: "0.8.4",
settings: {
optimizer: {
enabled: true,
runs: 200
}
}
}
};
If using Infura, update .infuraid with your Infura project ID and, if you are planning on deploying to the main network, update .secret with the Private Key of the account that you would like to use to deploy.