VSCode + Solidity + HardHat
该文章根据B站Solidity视频教程编写,以此来记录学习笔记
下载Visual Studio Code
安装NodeJs
- 官网下载
- 建议下载 LTS 版本,LTS表示长期支持(Long Term Support)
- 安装好后打开VSCode工具在终端运行如下命令是否正常
node --version
VSCode中安装插件
Solidity
(黄色帽子那个插件)prettier
+prettier-plugin-solidity
(代码格式化) 官网
项目安装 prettier
+ prettier-plugin-solidity
- 执行命令
npm install --save-dev prettier prettier-plugin-solidity
- 设置代码格式,比如JS每行的
;
分号不写;'
单引号变双引号;等 - 在项目根目录新建
.prettierrc
(需要格式化设置) 和.prettierignore
(不需要格式化设置的文件) .prettierrc
{
"tabWidth": 4,
"useTabs": false,
"semi": false,
"singleQuote": false
}
.prettierignore
node_modules
package.json
img
artifacts
cache
coverage
.env
.*
README.md
coverage.json
设置VSCode保存自动格式化
Ctrl + Shift + P
打开命令面板,输入settings
- 选择
Open Workspace Settings (JSON)
,在settings.json
文件中配置 - 格式化Solidity代码配置
"[solidity]": {
"editor.defaultFormatter": "NomicFoundation.hardhat-solidity"
}
- 格式化JS代码配置
{
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
}
}
- 配置好后,再打开命令行面板,选择
Open User Settings
- 搜索
Format On Save
- 打开设置,
Format On Save
打钩即可
切换用yarn
- 禁用
corepack
,新版本的Nodejs中默认会安装该插件
corepack enable
- 如果无法禁用
corepack
插件,则表示当前没有安装该插件,直接安装yarn
插件即可 - 安装
yarn
npm install -g yarn
- 查看
yarn
版本
yarn --version
安装Solidity编译工具Solc-js
npm install -g solc
或者
yarn add solc
目录说明
- package.json: 项目包依赖关系
- yarn.lock: 项目使用包确切版本
添加Solidity编译版本
- 格式 : yarn add solc@solidity版本-fixed
- 查看Solc能编译的版本有哪些?参考
yarn add solc@0.8.7-fixed
- 查看Solc命令列表
yarn solcjs --help
- 查看当前Solc编译版本
yarn solcjs --version
Solc编译Solidity指定文件
yarn solcjs --bin --abi --include-path node_modules/ --base-path . -o . XXX.sol
- “–bin” : 二进制文件
- “–abi” : abi文件
- “–include-path node_modules/”: 包含所有合约或文件
- “–base-path”: 起始路径
- “-o” : bin文件和abi文件输出路径
Ganache
Ethers.js
yarn add ethers@5.7
安装dotenv
yarn add dotenv
创建 HardHat 项目
- 创建新项目,并
cd
到该目录下 - 执行
yarn init
,会有提示输入信息,一路回车即可 - 再执行
yarn add --dev hardhat
或npm install --dev hardhat
yarn hardhat
或npx hardhat
- 选择
Create a JavaScript project
,后面也是一路回写即可 注意:后续需要自己手动去安装依赖包
,或一次性执行如下命令来安装,因为后面需要用hardhat
命令,否则导致有些hardhat
命令无法使用
yarn add --dev "hardhat@^2.14.0" "@nomicfoundation/hardhat-network-helpers@^1.0.0" "@nomicfoundation/hardhat-verify@^1.0.0" "chai@^4.2.0" "hardhat-gas-reporter@^1.0.8" "solidity-coverage@^0.8.0" "@nomicfoundation/hardhat-toolbox@^3.0.0" "@nomicfoundation/hardhat-chai-matchers@^2.0.0" "@nomicfoundation/hardhat-ethers@^3.0.0" "ethers@^6.4.0" "@typechain/hardhat@^8.0.0" "typechain@^8.1.0" "@typechain/ethers-v6@^0.4.0"
部署到BSC Testnet
deploy.js
const { ethers } = require("hardhat")
async function main() {
const simpleStorageFactory = await ethers.getContractFactory("SimpleStorage")
console.log("Deploying contract...")
const simpleStorage = await simpleStorageFactory.deploy()
await simpleStorage.waitForDeployment()
console.log(`Deployed contract address: ${ simpleStorage .target }`)
}
main().then(() => {
process.exit(0)
}).catch((error) => {
console.log(error)
process.exit(1)
})
- 在
hardhat.config.js
文件中配置
module.exports = {
defaultNetwork: "hardhat",
networks: {
bsctest: {
url: BSCTEST_RPC_URL, // BSC Testnet RPC URL
accounts: [PRIVATE_KEY], // 私钥
gasPrice: 1500000000, // gasPrice,注:第一次部署的时候没有写,会报错:ProviderError: transaction underpriced
chainId: 97 // BSC Testnet chainId
}
},
solidity: "0.8.19",
};
- 执行命令
yarn hardhat run .\scripts\deploy.js --network bsctest
- 部署结果,会得到一个部署成功的合约地址,在BSC Testnet区块浏览器上查看
Deploying contract...
Deployed contract address: 0x61432B23cf8C6507288E755756e7EacF4AD127a7
Done in 17.63s.
- 注意:因为刚部署的合约没有验证,因此无法查看具体的Solidity代码