使用 Hardhat 部署 HelloWorld 合约
本节将展示如何使用Hardhat创建新的Solidity合约,配置Berachain网络详细信息,将合约部署到Berachain,以及验证合约。
先决条件
开始之前,请确保你的本地设备上满足以下条件:
持有
$BERA代币的钱包(合约部署费用,参阅Berachain测试网水龙头文档)NVM或Node
v18.18.2pnpm,yarn或npm
创建HelloWorld代码设置
首先,为HelloWorld创建一个新的文件夹:
mkdir create-helloworld-contract-using-hardhat;
cd create-helloworld-contract-using-hardhat;然后,启动Hardhat,并创建viem模板:
# FROM ./create-helloworld-contract-using-hardhat;
npx hardhat init;
# [Expected Prompts]:
# 888 888 888 888 888
# 888 888 888 888 888
# 888 888 888 888 888
# 8888888888 8888b. 888d888 .d88888 88888b. 8888b. 888888
# 888 888 "88b 888P" d88" 888 888 "88b "88b 888
# 888 888 .d888888 888 888 888 888 888 .d888888 888
# 888 888 888 888 888 Y88b 888 888 888 888 888 Y88b.
# 888 888 "Y888888 888 "Y88888 888 888 "Y888888 "Y888
#
# 👷 Welcome to Hardhat v2.18.3 👷
#
# ✔ What do you want to do? · Create a TypeScript project (with Viem)
# ✔ Hardhat project root: · /path/to/create-helloworld-contract-using-hardhat
# ✔ Do you want to add a .gitignore? (Y/n) · y
# ✔ Do you want to install this sample project's dependencies with npm (hardhat @nomicfoundation/# hardhat-toolbox-viem)? (Y/n) · y安装dotenv依赖项,以便使用环境变量。
创建HelloWorld合约
上述操作,Hardhat创建了需要的文件。现在,已经准备好一切,可以创建一个新的Solidity合约了。
首先,将Hardhat创建的文件重命名为HelloWorld.sol:
然后,替换重命名的HelloWorld.sol文件中的现有代码。
文件位置:./contract/HelloWorld.sol,运行以下代码:
我们已经创建了一个新的Solidity合约,接下来测试合约能否成功编译:
你还可以通过对package.json文件进行一些修改,简化编译步骤。
文件位置:./package.json,运行以下代码:
现在,可以使用下方代码编译合约:
测试HelloWorld合约
合约成功创建后,需要通过编写一些测试程序来确保合约能正常运行。
首先,重命名Hardhat在/test目录中创建的测试文件:
然后,替换重命名的HelloWorld.test.ts文件中的现有代码。
文件位置:./test/HelloWorld.test.ts,运行以下代码:
接下来,运行下方代码以运行测试程序:
你还可以通过对package.json文件进行一些修改,以便更轻松地运行pnpm test测试程序。
文件位置:./package.json,运行以下代码:
为Berachain合约部署配置Hardhat
首先,为了正确设置hardhat.config.ts,需要使用dotenv安装包创建一个.env文件,用于声明环境变量,供配置读取。
然后,在新建的.env文件中,运行以下代码,文件位置:./.env。
设置好环境变量后,需要将它们加载到hardhat.config.ts文件。
文件位置:./hardhat.config.ts,运行以下代码:
在Berachain部署HelloWorld合约
我们已经完成了所有配置设置,现在尝试运行一个本地节点,并将其部署到本地环境。
首先,通过对package.json文件进行一些修改,让部署运行更轻松。
文件位置: ./package.json,运行以下代码:
接下来,配置./scripts/deploy.ts脚本,以确保合约正确部署。
文件位置: ./scripts/deploy.ts,运行以下代码:
部署脚本配置好后,我们可以在一个终端运行本地节点,并在另一个终端部署合约。
终端 1:部署合约
使用上方代码中提供的私钥Private Key,替换.env 文件中的WALLET_PRIVATE_KEY。
文件位置:./.env,运行以下代码:
终端 2:运行本地节点
现在,合约已成功部署到本地节点,接下来配置部署脚本,以便合约直接部署到Berachain网络。
文件位置:./scripts/deploy.ts,运行以下代码:
接下来,将WALLET_PRIVATE_KEY替换为一个拥有$BERA代币的钱包,可以从Berachain测试网水龙头获取测试网$BERA代币。
文件位置:./.env,运行以下代码:
现在,可以直接将合约部署到Berachain了。
你可以运行下方代码,在Berachain Beratrail区块浏览器中查看部署的合约:
你会看到合约已经成功部署,但未被验证,因为它仍显示合约字节码,接下来需要验证合约。
验证HelloWorld合约
为了验证合约,需要在hardhat.config.ts文件中添加一个额外配置。
文件位置:./hardhat.config.ts,运行以下代码:
完成额外配置后,通过向package.json添加 run 命令来查看更改。
文件位置:./package.json,运行以下代码:
最后,使用合约部署地址和初始参数Hello From Deployed Contract,运行下方代码验证合约。
在Beratail可以看到,合约已成功验证,并且可以查看到合约Solidity代码。
完整代码库
本节完整代码库,可在Github - Berachain Guides - hardhat-viem-helloworld中查看。
最后更新于