Using Hardhat
Hardhat is an Ethereum development environment for flexible, extensible, and fast smart contract development.
You can use Hardhat to edit, compile, debug, and deploy your smart contracts to Ancient8.
Using Hardhat
This section will guide you through deploying an NFT smart contract (ERC-721) on the Ancient8 test network using Hardhat.
Objectives
By the end of this guide you should be able to do the following:
Setup Hardhat for Ancient8 Testnet
Create an NFT smart contract for Ancient8 Testnet
Compile a smart contract for Ancient8 Testnet
Deploy a smart contract to Ancient8 Testnet
Interact with a smart contract deployed on Ancient8 Testnet
Prerequisites
Node v18+
This guide requires you have Node version 18+ installed.
Wallet funds?
Deploying contracts to the blockchain requires a gas fee. Therefore, you will need to fund your wallet with Sepolia ETH to cover those gas fees.
Creating a project
Before you can begin deploying smart contracts to Ancient8 Testnet, you need to set up your development environment by creating a Node.js project.
To create a new Node.js project, run:
Next, you will need to install Hardhat and create a new Hardhat project
To install Hardhat, run:
To create a new Hardhat project, run:
Select Create a TypeScript project then press enter to confirm the project root.
Select y for both adding a .gitignore and loading the sample project. It will take a moment for the project setup process to complete.
Configuring Hardhat with Ancient8
In order to deploy smart contracts to the Ancient8 Testnet, you will need to configure your Hardhat project and add the Ancient8 Testnet.
To configure Hardhat to use Ancient8 Testnet, add Ancient8 Testnet as a network to your project's hardhat.config.ts
file:
Install Hardhat toolbox
The above configuration uses the @nomicfoundation/hardhat-toolbox
plugin to bundle all the commonly used packages and Hardhat plugins recommended to start developing with Hardhat.
To install @nomicfoundation/hardhat-toolbox
, run:
Loading environment variables
The above configuration also uses dotenv to load the WALLET_KEY
environment variable from a .env
file to process.env.WALLET_KEY
. You should use a similar method to avoid hardcoding your private keys within your source code.
To install dotenv
, run:
Once you have dotenv
installed, you can create a .env
file with the following content:
Substituting <YOUR_PRIVATE_KEY>
with the private key for your wallet.
CAUTION
WALLET_KEY
is the private key of the wallet to use when deploying a contract. For instructions on how to get your private key from Metamask, visit the Metamask documentation. It is critical that you do NOT commit this to a public repo
Compiling the smart contract
Below is a simple NFT smart contract (ERC-721) written in the Solidity programming language:
The Solidity code above defines a smart contract named NFT
. The code uses the ERC721
interface provided by the OpenZeppelin Contracts library to create an NFT smart contract. OpenZeppelin allows developers to leverage battle-tested smart contract implementations that adhere to official ERC standards.
To add the OpenZeppelin Contracts library to your project, run:
In your project, delete the contracts/Lock.sol
contract that was generated with the project and add the above code in a new file called contracts/NFT.sol
. (You can also delete the test/Lock.ts
test file, but you should add your own tests ASAP!).
To compile the contract using Hardhat, run:
Deploying the smart contract
Once your contract has been successfully compiled, you can deploy the contract to the Ancient8 Testnet.
To deploy the contract to the Ancient8 Testnet, you'll need to modify the scripts/deploy.ts
in your project:
You'll also need Sepolia ETH in your wallet. See the prerequisites if you haven't done that yet. Otherwise, the deployment attempt will fail.
Finally, run:
The contract will be deployed on the Ancient8 Testnet. You can view the deployment status and contract by using a block explorer and searching for the address returned by your deploy script. If you've deployed an exact copy of the NFT contract above, it will already be verified and you'll be able to read and write to the contract using the web interface.
INFO
If you'd like to deploy to mainnet, you'll modify the command like so:
Last updated