问题标签 [hardhat]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2798 浏览

testing - 无法解码交易数据

我正在尝试使用 Ethers.js 文档中的说明对智能合约测试中的交易数据进行解码,但我一直认为第一个参数(片段)无效:

Ethers.js

ABI

Interface

AddLiquidityETH function on UniswapV2Router02.sol

Main snippet on my test

我试过:

  1. 函数名称:"addLiquidityETH".
  2. 函数签名:"addLiquidityETH(address,uint,uint,uint,address,uint)""addLiquidityETH(address,uint,uint,uint,address,uint) external payable returns (uint,uint,uint)"
  3. 两个签名的叹息:"0x1a3042d8""0x251511cc"
  4. interface.decodeFunctionResult( fragment , data )

...但错误仍然出现。

Error

谢谢您的帮助!

Full test

0 投票
1 回答
1580 浏览

ethereum - 如何使用不同的地址来调用 Hardhat 测试和脚本中的函数?

运行测试和脚本时,所有函数都由 Hardhat 提供的第一个地址调用。

我想知道是否有办法在同一个测试或脚本中更改调用地址。

提前致谢!

0 投票
2 回答
623 浏览

debugging - 在 WebStorm 中调试安全帽可靠性测试

在控制台中运行 Hardhat 测试后,npx hardhat test我决定能够设置断点将帮助我更快地迭代。

我怎样才能让 Webstorm 运行启动的底层函数,npx hardhat test以便我可以使用内置的调试器?

0 投票
1 回答
689 浏览

hardhat - 如何测试将以太币发送到具有“应付”功能的合约?

我正在为我编写的 Solidity 合约编写安全帽测试。合约包含一个receive() external payable { ... }函数。我怎么能从一个有以太量的测试中调用它?

0 投票
1 回答
12 浏览

ethereum - 当`require`评估为false时如何继续执行函数

我有一个关于修饰符、需求和功能流程的问题。

这是我的观点的一个简单示例。

假设我用addNumbers([11, 12, 13, 8, 20, 21, 5, 22, 23]);

当它达到 8 时,我会收到错误消息。

有没有办法继续运行具有以下值的函数?

我之前曾想过添加一个if“捕获”错误,但也许有更好的方法。

提前致谢!

0 投票
3 回答
4964 浏览

compiler-errors - 无法编译多个 Solidity 版本

我正在尝试(通过 Hardhat)编译一个合同,该合同导入了几个具有不同 Solidity 版本的接口,但我收到以下错误:

Flashloaner.sol:

问题出在@aave/protocol-v2/contracts/interfaces/ILendingPool.sol. 如果我把它注释掉,我的合同就很好了。

IlendingPool.sol:pragma solidity 0.6.12;

IERC20.sol:pragma solidity ^0.5.0;

IWETH.sol:pragma solidity >=0.5.0;

安全帽配置:

0 投票
2 回答
6064 浏览

javascript - 如何在 node.js 应用程序中使用 ethers.js contract.on() 监听来自智能合约的事件?

我正在尝试在 node.js 应用程序中使用 ethers.js(不是 web3)监听 USDT 合约传输函数发出的事件。

当我运行脚本时,代码运行没有错误,然后快速退出。我希望得到事件日志。我不确定我错过了哪一步。

我已经通过调用 getOwner() 方法和控制台记录该结果来测试这个脚本,这工作正常,所以我与主网的连接是好的。

我正在使用炼金术 websocket。

我的 index.js 文件

我的 hardhat.config.js 文件

0 投票
1 回答
873 浏览

typescript - 使用 @nomiclabs/hardhat-waffle 实现夹具

在官方 waffle 文档中,您可能会找到实现固定装置的下一种方法:

但是,在安全帽上使用插件时,这将不起作用。插件文档中没有给出官方说明。

下面回答。

0 投票
0 回答
20 浏览

javascript - 为什么即使我不导入/需要顶部的模块,我的节点文件的依赖项也能工作?

我正在浏览炼金术/hardhat 教程(https://docs.alchemy.com/alchemy/tutorials/hello-world-smart-contract)和“第 15 步:编写我们的部署脚本”deploy.js 能够使用 ethers 框架,即使它在文件顶部没有 require 语句。这是如何运作的?

0 投票
0 回答
1224 浏览

ethereum - ethers.js 合约实例中没有 safeTransferFrom 函数?

我在安全帽控制台中创建了一个合约实例,如下所示:

合同对象具有所有公共/外部功能,除了safeTransferFrom. 为什么?

当我用contract.safeTransferFrom(…)它调用它时,会抛出 JavaScript 错误“safeTransferFrom 不是函数”。这是一个错误还是我不明白什么?safeTransferFrom功能在 ABI 中列出。

我使用 OpenZeppelin (v. 4.2) 721 令牌模板,Ethers.js (v. 5.4.1) 和 hardhat (v. 2.4.1)。

更新: 问题解决了。safeTransferFrom 是一个重载函数。在 ethers 中,调用重载合约函数的语法与非重载函数不同。 Ethers.js 文档

错误的:

正确的: