介绍
一个开源solidity合集仓库 https://github.com/qdwds/smart-contracts 智能合约姨太坊ERC721全栈开发开NFT合集从入门到项目实战项目 https://learnblockchain.cn/course/31 https://edu.51cto.com/course/33566.html
hardhat
Hardhat是一个编译、部署、测试和调试姨太坊应用的开发环境。它可以帮助开发人员管理和自动化构建智能合约和dApps过程中固有的重复性任务,并围绕这一工作流程轻松引入更多功能。这意味着hardhat在最核心的地方是编译、运行和测试智能合约。
Hardhat框架优点
- Hardhat 拥有大量插件,并允许自定义、灵活性和可扩展性。
- Hardhat 运行内置ether.js 5
- Hardhat 有良好的 console.log() 调试能力;会在调试时提供代码中发生的堆栈跟踪。
- Hardhat 提供原生Typescript支持,并且还有一个Vscode扩展,为 Vscode 编辑器添加了可靠的支持。
- Hardhat 带有一个内置的本地姨太坊网络,称为Hardhat Network,用于在本地机器上运行和部署智能合约,是一个专为开发而设计的本地姨太坊网络节点。
- Hardaht 可以fork网络节点到本地上模拟调用使用
创建项目
npx hardhat init
编译合同
编译合同是把xx.sol智能合约编译成hardhat可读的数据,并不是部署智能合约。
npx hardhat compile
测试合同
npx hardhat test
节点启动
新启动的节点是一个干净EVM环境
,主要用于我们在本地开发调试项目使用。
npx hardhat node
fork主网
当我们项目本地开发完成之后可以把主网拉到本地进行调试。
// hardhat.config.ts
networks: {
hardhat: {
forking: {
url: "https://mainnet.infura.io/v3/<key>",
}
}
}
设置完主网之后在控制台输入npx hardhat node
,如果报错重新启动或者更换节点
.也可以不在hardhat.config.ts
中设置,在启动节点的时候设置要fork的网络
npx hardhat node --fork <fork url>
配置多个solidity版本
如果在项目开发中设置到了使用多个版本可以在hardhat.config.ts
中配置
import { HardhatUserConfig } from "hardhat/config";
const config: HardhatUserConfig = {
defaultNetwork:"hardhat",
solidity:{
compilers:[
{version: "0.8.0"},
{version: "0.4.2"},
]
},
networks:{
ubuntu:{
url:"http://192.168.0.104:8545/"
}
},
...
};
部署合约
部署智能合约如果后面没有更--network xxnetwork
的时候默认把合约部署到本地网络。 如果想要把合约部署到其他网络需要先配置网络,比如上面hardhat.config.ts
我创建了一个名为ubuntu
的网络的是我在服务器中启动的一个节点。这时候如果要把合约部署到ubuntu
中就需要在命令后面跟上--network ubuntu
,这样合约就会部署到ubuntu
节点中
npx hardhat run scripts/token.sol