Files
2024-08-03 04:33:33 +08:00

137 lines
4.3 KiB
Markdown

# Practical Sample With Hardhat + Solidity
A fully functional Smart Contract wrriten with ```solidity```, ```node.js``` and using ```Hardhat``` to show usage of all kinds of standard development features, including:
* running blockchain node in localhost - ```hardhat``` & ```ganache```
* solidity prettier code beautifier setup
* standard of developing Smart Contract with ```solidity```
* standard of developing ```node.js``` script to use ```hardhat``` library efficiently
* auto verify contract in Etherscan.io
* creating automate test cases
* creating tasks etc.
* gitea version control
This project mainly to keep as a reference for future Web 3.0 Developments.
---
### Success Deploy & Verified Of This Smart Contract To Sepolia Testnet
0xc2022b56eBC140B5FebCf9FBaB14c17db4C315C4
https://sepolia.etherscan.io/address/0xc2022b56eBC140B5FebCf9FBaB14c17db4C315C4#code
### Public Reported Hacked Code References:
This website is records of all kind previous hacked smart contract:
https://rekt.news/leaderboard/
## 1. Git Version Control
First time initialize:
```
git config --global user.name "hoelee"
git config --global user.email "[email protected]"
git init .
git add .
git checkout -b main
git commit -m "Initial Commit"
git remote set-url origin https://username:[email protected]/hoelee/ethers-simple-storage.git
git credential-cache exit // Fix Credential Error
```
Standard Update:
```
git add .
git commit -m "Describe what changes"
git push -u origin main
```
Development need exlude file can create root file with name .gitignore
```
.env
node_modules
.encryptedkey.json
```
## 2. Setup Visual Studio Code Development Environment
Windows need to download install WSL
```
wsl --set-default Ubuntu-22.04
mkdir theProjectFolderName
cd theProjectFolderName
code .
// Install nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
nvm install 16.14.2
nvm install node.js
nvm install 18 // Update node JS to v18
```
Visual Studio need to update code setting
```
"[solidity]": {
"editor.defaultFormatter":"NomicFoundation.hardhat-solidity"
}
```
Preparing of solidity development environment:
```
corepack enable // Enable yarn
yarn install solc
yarn add [email protected]
yarn solcjs --bin --abi --include-path node_modules/ --base-path . -o . SimpleStorage.sol
yarn add ethers // Compiler Error, Downgraded to v5.7.2
yarn add fs-extra
yarn add dotenv
yarn add prettier
yarn add prettier-plugin-solidity
```
Preparing of Hardhat Development Environment
```
yarn init
// Manual delete main: index.js in package.json
yarn add --dev hardhat // Production no need --dev
nvm install 18
nvm use 18
nvm alias default 18
corepack enable // Enable yarn
yarn hardhat
yarn add --dev prettier prettier-plugin-solidity
yarn add --dev dotenv
yarn add --dev @nomiclabs/hardhat-etherscan // Auto verify Etherscan Samrt Contract
```
Other Terminal Useful Command
```
// For Debuging Hardhat
npx hardhat --versose
// For Recompile
yarn hardhat clean // Or manual delete artifacts & cache folder
npm install
// For Listing Hardhat Local Blockchain node
yarn hardhat accounts
yarn hardhat node // Run in Dedicated Terminal, Getting Blockchain server
yarn hardhat console --network localhost // Short Life To Test Solidity Code In Terminal
yarn hardhat compile
yarn hardhat run scripts/deploy.js --network localhost
yarn hardhat custom-task-name
// Need create file in /tasks/custom-task-name.js
// Add import in hardhat.config.js -> requir("/tasks/custom-task-name");
yarn hardhat test
yarn hardhat test --grep customKeyword
// Only will run the test with describe test that contain "customKeyword"
```
## 3. Known Issue
* Cannot use ```expect``` in test, most probably due to the dependencies mismatched. Future will upgrade and test newer version dependencies.
### Find a bug?
If you found an issue or would like to submit an improvement to this demo project, please submit an issue using the issues tab above.
## 4. Looking Web 3.0 Developer For Your Project?
Mr Hoelee is Welcome Web 3.0 Remote Job, Contact Me Immediately Via WhatsApp <a href="https://wa.me/60175885290">+60175885290</a>
. Or You can email <a href="mailto:me@hoelee.com">me@hoelee.com</a> now. Thanks.
## 5. Like this project?
If you are feeling generous, buy me a coffee! - <a href="https://buymeacoffee.com/hoelee">buymeacoffee.com/hoelee</a>