首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当使用ethers js运行hardhat测试时,协定事件侦听器不会触发。

ethers.js是一个用于与以太坊区块链进行交互的JavaScript库,而Hardhat是一个用于以太坊智能合约开发和测试的开发框架。在使用ethers.js运行Hardhat测试时,协定事件侦听器不会触发可能是由于以下几个原因:

  1. 合约代码中存在错误:首先需要检查智能合约的代码,确保事件的定义和触发逻辑正确无误。可以使用Hardhat提供的调试工具来检查合约代码是否存在问题。
  2. 事件侦听器未正确设置:在测试代码中,需要确保正确设置了事件侦听器。可以使用ethers.js提供的on方法来监听事件,并在事件触发时执行相应的逻辑。
  3. 测试环境配置问题:可能是由于测试环境的配置问题导致事件侦听器不触发。需要确保Hardhat配置文件中正确设置了测试网络的参数,并且网络连接正常。
  4. 版本兼容性问题:有时候,ethers.js和Hardhat的版本之间可能存在兼容性问题。建议使用最新版本的ethers.js和Hardhat,并确保它们之间的兼容性。

对于以上问题,可以尝试以下解决方案:

  1. 检查合约代码,确保事件的定义和触发逻辑正确无误。
  2. 确保测试代码中正确设置了事件侦听器。
  3. 检查测试环境配置,确保网络连接正常。
  4. 更新ethers.js和Hardhat的版本,确保它们之间的兼容性。

腾讯云提供了一系列与以太坊区块链相关的产品和服务,包括云服务器、云数据库、云存储等。您可以参考腾讯云的以太坊区块链解决方案,了解更多相关产品和服务的信息:腾讯云以太坊区块链解决方案

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

使用 React 和 ethers.js 构建DApp

在本教程中,我们将使用 Hardhat、React 和 ethers.js 构建 DAPP,它可以与用户控制的钱包如 MetaMask 一起使用。...运行像yarn hardhat compile这样的命令行时,如果没有网络参数(--network localhost),我们就运行一个进程内测试网。...还有更多的工作要做: MetaMask 切换账户,我们的 Web 应用不知道,也不会改变页面的显示,因此需要监听 MetaMask 的账户变化事件。...第 3 步:触发事件。一旦交易被确认,就会发出一个事件。你可以通过监听事件来获得链外的结果。...监听到一个事件,查询 currentAccount 的 token 余额并更新页面。 你可以在页面上或在 MetaMask 中从当前账户转账,你会看到页面在事件发生正在更新。

5.3K30

HardhatEthers引入并测试知名NFT智能合约

进入那个新文件夹,运行npm init -Y,然后安装 hardhat: npm i -D hardhat 现在运行 npx hardhat 并选择“Create an empty hardhat.config.js...我们可以使用内置的 compile 任务来执行此操作 - 我们需要做的就是运行: npx hardhat compile 当我们使用 Hardhat 编译合约,将为每个合约生成两个文件,并放置在 artifacts...然而,使用 TypeScript ,没有全局范围内可用的上下文,所以我们必须显式地导入实例。 让我们在根目录下的 test 文件夹中新建一个测试,并命名为 bored-ape.test.ts。...不用担心——这是我故意添加了一个在第一次运行时会失败的测试用例——这是一种很好的做法,有助于消除误报。如果我们一开始不添加一个失败的案例,我们就不能确定不会意外地编写一个总是返回 true 的测试。...当你编写自己的 Solidity 合约,可以遵循相同的流程,与前端存储库结合使用时,你将拥有完整的开发套件的强大功能,其中包含非常直观的流程和详尽的文档。

1.1K30

【Web3 开发系列教程—创建你的第一个智能合约(2)】部署第一个智能合约

当你正在创建帐户,或者如果你已经有帐户,请确保切换到右上角的“Goerli 测试网络”(这样我们就不会处理真钱)。...// 智能合约事件是你的合约将区块链上发生的事情传达给你的应用程序前端的一种方式,它可以“监听”某些事件并在它们发生采取行动。...第 12 步:安装 Ethers.js Ethers.js 是一个库,它通过使用更友好的方法包装标准** JSON-RPC **方法,使交互和向以太坊发出请求变得更加容易。...hardhat.config.js使用以太币。...使用 hardhat-ethers 为 ContractFactory 和 Contract 添加插件,实例默认连接到第一个签名者(所有者)。

82820

LayerZero跨链协议入门教程

初始化 hardhat 项目 创建一个空目录,在目录下运行npm init,按照提示,填写项目信息,完成之后,运行npm install --save-dev hardhat 安装 Hardhat。...payInZRO, _adapterParams ); } } LayerZeroDemo1 合约从源链向目标链发送一条消息,在合约构造使用了端点地址...测试跨链消息传递 为 Mumbai 测试网络创建一个 javascript 测试脚本: const hre = require("hardhat"); const { ethers } = require...使用 hardhat 运行脚本: npx hardhat run scripts/demo1_mumbai.js --network mumbai 接着在 Fantom 测试网创建一个 javascript...使用 Hardhat 运行脚本: npx hardhat run scripts/demo1_testnet.js --network testnet 脚本完成后,我们可以在 FTMScan 测试网中查找合约

1.1K20

hardhat 教程及 hardhat-deploy 插件使用

任务 每次你从 CLI 运行Hardhat,你都在运行一个任务,例如npx hardhat compile就是在运行compile任务。要查看项目中当前可用的任务,运行npx hardhat。...测试合约 在构建智能合约,编写自动化测试是至关重要的,因为这关系到用户的资金。为此我们将使用Hardhat 网络,这是一个为开发而设计的本地以太坊网络,是内置的,也是Hardhat中的默认网络。...在我们的测试中,将使用 ethers.js 与前面部署的以太坊合约进行交互,并使用Mocha[15]作为我们的测试运行器。...yarn hardhat test,如果合约在你上次运行测试后发生了变化,合约将被重新编译。...当你在Hardhat Network上运行合约和测试,可以在 Solidity 代码中调用console.log()打印日志信息和合约变量。

3.1K30

【翻译】升级智能合约(Hardhat)

// hardhat.config.js require('@nomiclabs/hardhat-ethers'); require('@openzeppelin/hardhat-upgrades');...注意 你可以让多个代理使用同一个实现合约,所以如果你计划部署同一个合约的多个副本,你可以使用这个模式来节省gas。 智能合约的用户总是与代理进行交互,代理永远不会改变其地址。...你可以随心所欲地改变合约的功能和事件。 注意 如果你不小心弄乱了合约的存储布局,尝试升级,升级插件提出警告。 前往Modifying Your Contracts 指南了解更多限制。...测试 为了测试可升级的合约,我们应该为实现合约创建单元测试,同时创建更高级别的测试,来测试与代理的交互。可以在测试使用deployProxy,就像我们部署一样。...要升级,我们应该为新的实现合约创建单元测试,同时创建更高级别的测试,以便在升级后使用 upgradeProxy 通过代理测试交互,检查在升级过程中是否保持状态一致。

2.4K10

Solidity 智能合约开发 - Hardhat 框架使用

Solidity 智能合约开发 - 玩转 Web3.py Solidity 智能合约开发 - 玩转 ethers.js 但是在真正的复杂业务场景中,我们往往会使用一些进一步封装的框架,如 HardHat...启动网络 我们可以直接运行脚本来启动一个 Hardhat 自带的网络,但该网络仅仅存活于脚本运行期间,想要启动一个本地可持续的网络,需要运行 yarn hardhat node 命令: 执行完成后,就生成了测试网络与测试账户...Hardhat 提供了完备的测试调试工具,可以在 tests 目录中编写测试脚本,通过 yarn hardhat test 命令运行测试。...编写测试脚本 为我们的部署脚本编写 test-deploy.js 测试程序,首先需要导入必要包: const { assert } = require("chai") const { ethers }...执行测试脚本 我们通过 yarn hardhat test 运行测试,且可以通过 yarn hardhat test --grep store 来指定测试方法。

1.4K20

在Polygon网络上构建应用的全栈开发指南

Polygon 建立一个 NFT 数字市场 在上一个以太坊教程以太坊全栈开发完全指南[7]中,我介绍了如何使用Hardhat[8]和Ethers.js[9]等现代工具在以太坊上构建一个基本应用。...npx hardhat test进行测试运行测试 如果测试成功运行,它应该记录出一个包含单一市场项目的数组。...将合约部署到本地网络上 当我们创建该项目Hardhat 在scripts/sample-script.js创建了一个部署脚本的例子。...hardhat run scripts/deploy.js --network localhost 部署完成后,CLI 应该打印出被部署的合约的地址: 使用这些地址,在项目根部创建一个名为config.js...运行以下命令部署到 Matic : npx hardhat run scripts/deploy.js --network mumbai 一旦合约部署完毕,你应该可以在你的项目中更新合约地址,并在新的网络上进行测试

2.3K31

使用hardhat 开发以太坊智能合约-发布合约

本文作者:全干攻城尸[1] 本系列课程: 第一节:使用 hardhat 开发以太坊智能合约-搭建环境[2] 第二节:使用 hardhat 开发以太坊智能合约-测试合约[3] 第三节:使用 hardhat...下面我们来学习一下如何使用 hardhat 发布一个合约到区块链网络上 一、部署脚本 1、脚本文件说明 在工程项目 scripts 中,我们可以找到一个名为 deploy.js,这个文件就是我们部署合约使用的脚本文件..."); 定义了一个 hardhat 运行时环境,按照官方介绍, 允许在 hre 可访问的地方使用任何功能,在下面的实际部署代码中,我们也可以看到,ehters 对象也是从 hre 中获取的 const...("1"); 这部分代码,主要是在处理合约部署需要的初始化变量,并不是我们部署合约必须的环节 const Lock = await hre.ethers.getContractFactory("...作为强大的合约开发辅助工具,其本身自带了一套以太坊区块链环境,当我们在执行部署命令,如果不指定网络,默认是使用自带的区块链环境 npx hardhat run .

1.5K20

使用hardhat 开发以太坊智能合约-测试合约

本文作者:全干攻城尸[1] 本系列课程: 第一节:使用 hardhat 开发以太坊智能合约-搭建环境[2] 第二节:使用 hardhat 开发以太坊智能合约-测试合约[3] 第三节:使用 hardhat...里面定义了 2 个变量,还有一个事件,以及一个调用方法,整个合约要实现的就是当事件满足一定条件的时候才可以从合约账号提现 下面,我们使用 hardhat 提供的命令对合约文件进行编译: npx hardhat...,必须将合约完全测试一遍 2.1 测试脚本介绍 我们回到 vscode,打开项目目录 test,这里已经有了一个名为 Lock.js 的脚本文件 让我们打开它,看一下它的主要构成 代码前 6 行定义了几个常用的测试辅助对象...expect 进行断言,判断合约对象里面存储的解锁时间是否与合约部署方法里定义的解锁时间相等 2.4 测试演示 接下来,让我们运行测试,来看一下测试的结果 使用如下命令来进行合约测试: npx hardhat...3] 使用hardhat开发以太坊智能合约-测试合约: https://learnblockchain.cn/article/4930 [4] 使用hardhat开发以太坊智能合约-发布合约: https

99320

Web3 全栈指南

因为我不希望这里变成一个介绍前端的文章,你可以参看我的html-js-ethers-connect[33]的例子,它向我们展示了如何自己运行示例。...设置本地 Hardhat 区块链和合约 现在,由于我们要测试函数交互,因此需要一个区块链来发送交易,以及相应的智能合约。...然后从 yarn hardhat node命令的输出中添加一个私钥。之后,你应该看到一个账户,在本地网络上,并且有一些测试 ETH。...使用原始 Ethers 完整代码在这里[47] 最简单的方法是使用一些你已经熟悉的工具,比如 Ethers,我们可以从复制粘贴在 HTML 设置中的内容到index.js文件中: import styles...使用示例 Nader Dabit Explainer[51] 另外,在下面的例子中,我打算从另一个文件中导入abi,这样就不会让文章的内容臃肿了。

4.8K21

本体技术视点 | 关于本体EVM合约开发,你必须知道的事(三)

第四部分 EVM 合约开发流程演示 下面我们将使用 Hardhat 工具来演示在本体网络中开发部署和测试 EVM 合约的完整流程。...在本例中我们设计以下两个事件: 发红包,合约会生成红包的 ID,该 ID 要通过事件推送给调用者 领取红包,需要推送一个事件用来记录领取的红包 ID 和 Token 数量 event SendRedPacket...4.3 使用 Hardhat 编译和测试合约 4.3.1 创建 Hardhat 项目 mkdir hardhatdemo cd hardhatdemo npm init npm install --save-dev...hardhat npx hardhat 4.3.2 修改 hardhat.config.js 文件 添加测试网节点配置信息 module.exports = { defaultNetwork...0.8.0 Compilation finished successfully 该命令执行完成后会生成如下的文件夹 ├── artifacts ├── cache ├── contracts ├── hardhat.config.js

46830

如何对接 Uniswap V2 兑换代币

mkdir uni_swap && cd uni_swap npm init -y 安装项目所需的依赖项,运行: npm install --save hardhat @nomiclabs/hardhat-ethers...初始化 Hardhat 项目 要初始化你的 Hardhat 项目,在 CLI 中运行npx hardhat命令,并创建一个空的config.js文件。...完整的看起来应该类似是这样: 使用命令npx hardhat compile来检查我们的智能合约中是否有错误。 现在,是时候为我们的合约运行一些测试了 4....编写测试脚本 在tests文件夹中创建一个文件,并将其命名为sample-test.js。...现在,我们要用npx hardhat test命令来运行这些测试。 结果应该是这样的: 正如你所看到的,我们的初始余额在兑换完成后有所增加。 而我们编写的测试也成功了!!。

1.3K30

如何搭建一个应用作为NFT

它可能不会成为下一个大生意,但它将是一个跳板,我希望它能激发人们的好奇心、创造力和胆量。 本教程不会专注于构建应用。相反,我们将使用 React 启动器应用程序作为一个例子。...有一个高于 1 的版本,意味着该应用还有更早的版本。这意味着人们或其他应用甚至可以使用该应用的旧版本,如果他们愿意的话。该函数返回与作为参数传入该函数的版本相对应的 URI。...这些测试的编写完之后,我们可以利用 hardhat CLI 来编译我们的合约并在内存中运行测试。...让我们用 Hardhat 的内存以太坊 EVM 做一个测试运行,只需要运行以下命令: npx hardhat run scripts/deploy.js 不会花费任何 Gas,因为这只是你电脑上的一个本地测试网...运行下面的命令: npx hardhat run scripts/deploy.js --network mumbai 完成后,你会看到与之前相同的输出,但有一个不同的合约地址。

87820

Solidity 智能合约开发 - 玩转 ethers.js

为了更好了解其原理,也为我们后续更好使用框架打好基础,我们这次通过 ethers.js 来与我们部署在 Alchemy 平台上的 Rinkeby 测试网络进行交互。...ethers.js ethers.js 是 Javascript 的一个开源库,可以与以太坊网络进行交互,其 GitHub 地址为 ethers.io/ethers.js,可以访问其官方文档进行使用。...安装 我们可以通过 yarn 安装 ethers.js,如下: yarn add ethers 使用 使用 require 导入库即可使用 const ethers = require('ethers...库与 Alchemy 的 Rinkeby 测试网络进行交互的步骤,在真正的生产项目开发中我们一般不会直接使用 ethers.js 这样的库,而是会使用 Brownie、HardHat 这样进一步封装的框架...后续我还会对 HardHat 框架的使用作进一步讲解。

1.1K20

重入漏洞分析-基于hardhat、solidity0.8环境

这个事件是以太坊历史上最大的事件。在这个事件里,黑客利用的漏洞就是重入攻击漏洞。 2....漏洞示例中就是使用了最不安全的 call.value()函数,导致如果调用合约,传入的 Gas 够大,可以达到重入的御环代码可以运行很久。...答案是:不会的,这笔交易的 Gas 用光,循环就会暂停,交易就会结束,但是在结束之前,从原合约中的 ether 已经转走到攻击合约中了… 正是因为call.value()没有Gas限制和fallback...如果在测试,遇到 attck 合约无法窃取或者窃取的 eth 很少的情况下,请加大 gasLimit 的设置。...为了避免重入漏洞,围绕着上述两点,给出下列的安全建议: 在转账使用 lock 等方式进行锁定。

35730

创建一个像Opensea一样的NFT市场

教程:用 Hardhat、React 和 ethers.js 构建 DApp https://dev.to/yakult/a-tutorial-build-dapp-with-hardhat-react-and-ethersjs...在 Dabit 的教程中,卖家将一个 NFT 项目上架市场上,他将 NFT 转移到市场合约中,并等待它被出售。作为一个 NFT 用户,我不喜欢这种模式。我想只授权 NFT 到市场合约。...webapp 项目 第 1 步:运行一个独立的本地测试网 在另一个终端,在chain/目录下运行: yarn hardhat node 第 2 步:将 BadgeToken(ERC721)部署到本地测试网中...一个 NFT 在市场上出售,上架费将被交给市场所有者。 在未来,我们可能会增加功能,将所有权转移到其他地址或多签钱包。为了使教程简单,我们跳过这些功能。 市场合约有一个固定的上架费用。...DApp 第 1 步:新的本地测试网络 在另一个终端,在chain/中运行 yarn hardhat node 第 2 步:为 webapp 准备数据 在chain/中运行: yarn hardhat

1.7K50

为Optimism Rollup Dapp 准备的脚手架

Optimism 团队短期内正在研究的难题: 目前 L2 还不支持用{ value }发送的交易,所以我们实例化一个ethers.js合约,并调用 transfer。...有一些细微的差别--我们不能使用内置的 Hardhat 网络,必须实例化我们自己的提供者和签名者。...L2DepositedERC20.sol:该合约部署在 L2 上,它也是一个 ERC20 的实现,新的代币从 L1 存入时,它就将其铸成新的代币,它们被提取,就将其销毁。...local-optimism 分支包含了去 Kovan 部署 Optimism 的配置选项,就像更新App.js中的selectedNetwork,以及从 Hardhat 部署的defaultNetwork...[18] Optimism ethers variant: https://hardhat.org/plugins/eth-optimism-plugins-hardhat-ethers.html [

78240

数百次采访后,我总结了 2021 年最好用的区块链开发框架

Hardhat Hardhat 是目前最好的框架之一,有着同类竞品中最快的测试、最好的教程和最简单的集成。老实说,喜欢 JS 框架的人们迟早都应该试一试 Hardhat。...他们使用 Waffle 和 Ethers.js 进行测试,这可以说是更好用的 JavaScript 智能合约框架,因为它们相比 web3.js 做了一些非常不错的改进。...区块链:Hardhat 运行时环境 / 本地,测试网,主网 有测试:Waffle 维护:非常活跃 支持:活跃 开源 2....Truffle 测试运行速度不如 Hardhat 那样快,并且由于前者的用户数量众多,支持获取起来可能会很困难。...人们想要签出你的合约以及你已部署的内容,除非他们具有 ABI 和合约地址,否则就无法签出。找到合约地址通常很容易,但是要获得 ABI 却很困难。

57720
领券