Using Hardhat
Hardhat is a development environment to compile, deploy, test, and debug your Ethereum software.
Once your environment is ready, we can create an empty folder and init a Hardhat project in it.
$ mkdir my-thundercore-project && cd $_
# We choose a basic sample project and install its dependences here:
$ npx hardhat init
✔ What do you want to do? · Create a basic sample project
✔ Do you want to install this sample project's dependencies with npm (hardhat @nomiclabs/hardhat-waffle ethereum-waffle chai @nomiclabs/hardhat-ethers ethers)? (Y/n) · y
After initialization, we can test the project with the
hardhat compile
command:npm
Yarn
$ npm exec -- hardhat compile
Downloading compiler 0.8.4
Compiling 2 files with 0.8.4
Compilation finished successfully
$ yarn hardhat compile
Compiling 2 files with 0.8.4
Compilation finished successfully
Done in 1.22s.
To start developing on ThunderCore, we'll make some changes to the Hardhat config file. A great option is to use the tt-hardhat plugin.
yarn add -D tt-hardhat
Then, in hardhat.config, simply paste
import "tt-hardhat";
at the top. We'll now be able to use networks thunder-testnet
and thunder-mainnet
.Alternatively, we can configure the network manually. Open and edit
hardhat.config.js
in the root directory of your project.yarn add -D dotenv // loading env plugin
hardhat.config.js
import * as dotenv from "dotenv";
dotenv.config();
module.exports = {
networks: {
'thunder-testnet': {
url: 'https://testnet-rpc.thundercore.com',
chainId: 18,
gas: 90000000,
gasPrice: 15e9,
accounts: process.env.KEY ? [process.env.KEY] : [],
},
'thunder-mainnet': {
url: 'https://mainnet-rpc.thundercore.com',
chainId: 108,
gas: 90000000,
gasPrice: 15e9,
accounts: process.env.KEY ? [process.env.KEY] : [],
},
},
}
Never store your private key directly in
hardhat.config.js
Let's deploy the first contract.
You'll need some gas tokens to deploy contracts. To test on ThunderCore testnet, you can get some testnet tokens from ThunderCore testnet Faucet
Unix-like system
Windows CMD
Windows Powershell
# Using NPM
KEY=0xPrivateKey npm exec -- hardhat run scripts/sample-script.js --network thunder-testnet
# or using Yarn
KEY=0xPrivateKey yarn hardhat run scripts/sample-script.js --network thunder-testnet
# Using NPM
set KEY=0xPrivateKey & npm exec -- hardhat run scripts/sample-script.js --network thunder-testnet
# or using Yarn
set KEY=0xPrivateKey & yarn hardhat run scripts/sample-script.js --network thunder-testnet
# Using NPM
$env:KEY='0xPrivateKey';npm exec -- hardhat run scripts/sample-script.js --network thunder-testnet
# or using Yarn
$env:KEY='0xPrivateKey';yarn hardhat run scripts/sample-script.js --network thunder-testnet
By using the
tt-hardhat
plugin, you can import logDeployContracts
from hardhat to log your deployed contracts. More infoCongratulations! You have successfully deployed a smart contract onto the ThunderCore network, you will find the deployed messages look like:
Greeter deployed to: 0xGreeterContractAddress
Once you deployed your contract, you might want to verify your contract code.
On ThunderCore testnet, we provide Blockscout as our block explorer. You can use
hardhat-etherscan
plugin to verify your contract.yarn add -D @nomiclabs/hardhat-etherscan
after installed the package, modify your
hardhat.config.js
hardhat.config.js
module.exports = {
etherscan: {
apiKey: {
"thunder-testnet": "unused",
},
customChains: [
{
network: "thunder-testnet",
chainId: 18,
urls: {
apiURL: "https://explorer-testnet.thundercore.com/api",
browserURL: "https://explorer-testnet.thundercore.com",
},
},
],
},
}
Now, you can verify your contract by command:
yarn hardhat verify --network thunder-testnet ADDRESS "CONSTRUCTOR_ARGUMENT"
Last modified 8d ago