Deploy using Hardhat
Hardhat is a development environment for Ethereum software. It consists of different components for editing, compiling, debugging and deploying your smart contracts and dApps, all of which work together to create a complete development environment.
Before you Begin
Check if you are using the right network configuration
Have enough test tokens in your wallet
Hardhat Setup
Start by creating a folder plume-hardhat
. Open a terminal pointing to this folder and run the below command to initialize a node.js project.
npm init -y
Followed by installing hardhat and other necessary libraries using the below command.
npm install --save-dev hardhat @openzeppelin/contracts @nomicfoundation/hardhat-ignition-ethers dotenv
Let's create a hardhat project using npx hardhat init
now. We are using a JavaScript template from the list of options to facilitate the deployment and choosing the configuration for the project as shown below.
√ What do you want to do? · Create a JavaScript project
√ Hardhat project root: · \Users\...\plume-hardhat
√ Do you want to add a .gitignore? (Y/n) · y
√ Do you want to install this sample project's dependencies with npm (@nomicfoundation/hardhat-toolbox)? (Y/n) · y
Configure and prepping to deploy
Let's create a .env
file to store the private key inside it safely.
touch .env
echo "PRIVATE_KEY=<your-wallet-private-key>" >> .env
Make the following adjustments to the auto-generated hardhat.config.js
file to prepare to deploy to the Plume Testnet for instance:
Import the
hardhat-toolbox
andhardhat-ignition-ethers
plugin into the Hardhat Runtime Environment.Add the Plume Testnet network details.
require("@nomicfoundation/hardhat-toolbox");
require("@nomicfoundation/hardhat-ignition-ethers");
require('dotenv').config();
/** @type import('hardhat/config').HardhatUserConfig */
module.exports = {
solidity: "0.8.28",
settings: {
evmVersion: "cancun"
},
networks: {
hardhat: {},
"plume-testnet": {
url: "https://testnet-rpc.plume.org",
chainId: 98867,
accounts: [process.env.PRIVATE_KEY]
}
},
etherscan: {
apiKey: {
"plume-testnet": "testnet"
},
customChains: [
{
network: "plume-testnet",
chainId: 98867,
urls: {
apiURL: "https://testnet-explorer.plume.org/api",
browserURL: "https://testnet-explorer.plume.org"
}
}
]
}
};
Compile and Deploy
We'll be using a sample contract, you can replace this with your own codebase. Make sure you place the contract in "Contracts" directory within your Hardhat project.
Compile the contract(s) using the below command:
npx hardhat compile
Let's create a ignition module to deploy the contract(s). Create a file as <Your-Contract>.js
at ignition/modules/<Your-Contract>.js
. Here's a sample module we used with the above sample contract.
const { buildModule } = require("@nomicfoundation/hardhat-ignition/modules");
module.exports = buildModule("DeployRolexYachtMaster40", (m) => {
const RolexYachtMaster40 = m.contract("RolexYachtMaster40", [
/** constructor args */
]);
return { RolexYachtMaster40 };
});
Deploy your contract(s) to the Plume Testnet using the following command:
npx hardhat ignition deploy ./ignition/modules/<Your-Contract>.js --network plume-testnet
Sample Output
√ Confirm deploy to network plume-testnet (98867)? ... yes
Hardhat Ignition 🚀
Deploying [ DeployRolexYachtMaster40 ]
Batch #1
Executed DeployRolexYachtMaster40#RolexYachtMaster40
[ DeployRolexYachtMaster40 ] successfully deployed 🚀
Deployed Addresses
DeployRolexYachtMaster40#RolexYachtMaster40 - 0x0c14F7df7f2B0c6F55851610849BA09f97732C9B
You can view the deployed contract on the Plume Testnet Explorer.
Last updated