当前位置: 首页 > news >正文

新余专业做淘宝网站2022年最新热点素材

新余专业做淘宝网站,2022年最新热点素材,汕头网页制作,线上营销的优势引言:告别繁琐的调试脚本 作为一名智能合约开发者,大家一定经历过这样的场景:刚刚在本地网络部署了新版本的合约,只是想快速调用一个函数,看看返回值是否符合预期。为此,我们不得不又写一个小的 task 或者 …
引言:告别繁琐的调试脚本

作为一名智能合约开发者,大家一定经历过这样的场景:刚刚在本地网络部署了新版本的合约,只是想快速调用一个函数,看看返回值是否符合预期。为此,我们不得不又写一个小的 task 或者 script,然后再次运行 npx hardhat run ...。整个过程虽然不复杂,但频繁操作起来却十分繁琐,打断了开发的流畅感。

如果有一个交互式的环境,能让我们像在浏览器里打开开发者工具的 Console 一样,直接与本地链和合约对话,那该多好?

这正是 npx hardhat console 的价值所在。它是一个被许多开发者低估了的强大工具,一个能让我们实时、动态地与我们的智能合约进行交互的“瑞士军刀”。本文带大家深入探索 hardhat console 的常用功能,让大家彻底掌握这个调试利器。在这里插入图片描述

准备工作:在开始之前,请确保我们已经在项目下启动了一个本地Hardhat节点。

npx hardhat node

然后,在另一个终端窗口中,我们将通过以下命令进入本文的主角——Hardhat控制台:

npx hardhat console --network localhost
核心功能一:查询链上状态

当我们进入控制台后,我们就处在一个已经预配置好 ethers.js 的JavaScript交互式环境(REPL)中。我们可以直接使用 ethers 对象来执行各种操作。

1. 查看可用账户

Hardhat默认为我们创建了20个测试账户。在控制台中,获取它们非常简单:

// 获取所有签名者对象(Signer)
const signers = await ethers.getSigners();// signers 是一个包含20个Signer实例的数组
// 我们可以获取第一个账户的地址
const account0 = signers[0];
console.log("第一个账户的地址:", account0.address);

实用建议getSigners() 返回的是 Signer 对象,而不仅仅是地址。Signer 对象可以用来签名和发送交易,这在后续的合约写入操作中至关重要。

2. 查询账户余额

想知道某个账户有多少ETH?一条命令即可搞定。

// 查询第一个账户的余额
const balanceWei = await ethers.provider.getBalance(signers[0].address);// 返回值是 BigNumber 类型,单位是 Wei
console.log("账户余额 (Wei):", balanceWei.toString());// 使用 ethers 的工具函数将其格式化为 Ether,更具可读性
console.log("账户余额 (Ether):", ethers.formatEther(balanceWei));
3. 获取当前区块号

这是一个简单但常用的命令,用于确认我们的本地链是否在正常出块。

const blockNumber = await ethers.provider.getBlockNumber();
console.log("当前区块高度:", blockNumber);
核心功能二:与已部署的合约交互

这才是 hardhat console 最激动人心的部分。假设我们已经通过部署脚本,将一个名为 Greeter 的合约部署到了本地网络。

我们的部署脚本 (scripts/deploy.js) 可能像这样,并且在运行时打印了合约地址:

// scripts/deploy.js
async function main() {const Greeter = await ethers.getContractFactory("Greeter");const greeter = await Greeter.deploy("Hello, Hardhat!");await greeter.deployed();console.log("Greeter deployed to:", greeter.address); // <-- 我们需要这个地址
}
main();

现在,我们要在控制台中与这个已部署的合约交互。

交互流程建模

下面的流程图清晰地展示了在控制台中与合约交互的步骤:
在这里插入图片描述

1. 获取并“附着”到合约

首先,我们需要告诉 ethers 我们要操作的是哪个合约,以及它在哪里。

// 1. 获取合约工厂 (ContractFactory),需要合约名字
const Greeter = await ethers.getContractFactory("Greeter");// 2. 使用 attach() 方法附着到已部署的合约地址上
//    请将 "0x..." 替换为我们的部署脚本输出的真实地址
const greeter = await Greeter.attach("0x5FbDB2315678afecb367f032d93F642f64180aa3");console.log("成功连接到Greeter合约,地址:", greeter.target);
console.log("成功连接到Greeter合约,地址:", greeter.runner.address);
2. 调用只读函数 (Read)

附着成功后,我们就可以像操作一个普通的JavaScript对象一样调用合约的 viewpure 函数了。

// 调用合约的 greet() 函数
const currentGreeting = await greeter.greet();
console.log("当前的问候语:", currentGreeting);
3. 调用写入函数 (Write)

调用会改变合约状态的函数同样简单。默认情况下,ethers 会使用 signers[0] 这个账户来签名并发送交易。

// 调用 setGreeting() 函数,修改问候语
const tx = await greeter.setGreeting("Hola, Hardhat Console!");// 等待交易被矿工打包
await tx.wait(); console.log("问候语已更新!交易哈希:", tx.hash);

实用建议:写入操作返回的是一个交易对象(TransactionResponse),而不是函数的返回值。我们需要调用 .wait() 来等待交易上链确认。

现在,我们可以再次调用只读函数来验证状态是否真的改变了:

const newGreeting = await greeter.greet();
console.log("更新后的问候语:", newGreeting); // 输出: "Hola, Hardhat Console!"
总结:我们的开发流程加速器

hardhat console 远不止这些功能。我们还可以用它发送ETH、查询历史事件、甚至利用Hardhat Network的特殊RPC接口(如 evm_mine 手动挖矿)来精细控制我们的测试环境。

它完美地填补了“编写代码”和“编写自动化测试”之间的空白,为我们提供了一个即时反馈的游乐场。当我们下次需要快速验证一个想法或调试一个问题时,请毫不犹豫地打开 npx hardhat console。我们会发现,它能为我们节省大量的时间和精力,让智能合约开发变得更加流畅和愉快。

http://www.dtcms.com/a/403409.html

相关文章:

  • 马鞍山网站建设制作中文网站怎么做英文版
  • GeoServer安装,并发布MapBox使用的矢量切片服务(pbf格式)(基于windows操作系统,使用shape文件发布)
  • 以AI科技重塑乳业生态,以京北品质服务健康中国 链农科技总经理马旭海专访
  • VMware安装 Rocky Linux 为后续docker k8s 实验做准备 自用 实践笔记(一)
  • Pyqt6开发的可以hexo博客一键创文章,发文章,统计文章。命令包装工具。
  • 链农科技亮相龙岗万达广场:“京北助力·舞动岭南”文艺展演
  • C语言(长期更新)第23讲:编译和链接
  • 怎么做网站后端手机登录凡科网
  • 如何自查家里宽带是否有公网IPv4?就几步。
  • Android studio导入OpenCV报“Unresolved reference: android“
  • 如何管理网站域名服务器做php网站
  • (Arxiv-2025)OmniInsert:无遮罩视频插入任意参考通过扩散 Transformer 模型
  • 大模型实战:通义万相2.1-文生视频-1.3B
  • 【C语言】统计二进制中1的个数:三种方法的比较与分析
  • C语言:数组元素逆序存放
  • C++(day1)
  • 如何让百度抓取网站wordpress 免费插件
  • 无人机无线电测距模块技术要点与难点
  • 逻辑回归中的成本损失函数全解析:从数学推导到实际应用
  • 组件化思维(下):表单与交互组件,倾听用户的心声
  • 机器学习——逻辑回归详解
  • wordpress做英文站最打动人心的广告语
  • 支持向量机深度解析:从数学原理到工程实践的完整指南——流式在线学习、增量 SVM 与万亿参数时代的挑战
  • 时间复杂度与空间复杂度系统梳理与实战
  • 三轴正交磁力矩器输出力矩计算原理及实现
  • 小组网站建设方案书网站seo优化关键词快速排名上首页
  • 淘宝cms建站wordpress调取某页面
  • STM32的HAL库驱动ADS124S08进行PT100温度采集
  • 软件报错处理合集,大部分情况需要下载Webview2、.NET4.8、获取C盘管理员权限等
  • Jakarta EE 实验 — Web 聊天室(过滤器、监听器版)进阶