# 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 "me@hoelee.com" git init . git add . git checkout -b main git commit -m "Initial Commit" git remote set-url origin https://username:accessToken@git.hoelee.com/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 solc@0.8.7fixed 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 +60175885290 . Or You can email me@hoelee.com now. Thanks. ## 5. Like this project? If you are feeling generous, buy me a coffee! - buymeacoffee.com/hoelee