问题标签 [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 回答
1490 浏览

javascript - 尽管有官方测试文档,但通过 Hardhat 导入以太币失败

根据 Hardhat 的官方测试文档ethers应该在全局范围内隐式可用;但是,它可以选择require显式地 d ,如下所示:

这对我的本地项目失败。

我的包清单似乎包含正确的依赖项:

我的单元测试文件似乎也与 Hardhat 文档中的工作示例相匹配:

尽管如此,运行测试还是失败了:

我该如何解决?

0 投票
1 回答
375 浏览

solidity - Get chain name in hardhat (not chainId)

In hardhat, you can get the chainId by calling await getChainId(). However, I'm looking for the chain name. Is there a way to get the chain name without explicitly creating a mapping myself?

EDIT: You can only use this getChainId functionality with hardhat-deploy

0 投票
1 回答
570 浏览

ethereum - 用于字节操作的 Solidity 代码无法使用带有 Solidity 0.8.0 的安全帽编译器进行编译

我正在编译Sol 0.5.0使用0.8.0编译器编写的 OpenSea 项目的代码,但出现错误:

原始代码位于:https ://github.com/ProjectOpenSea/opensea-creatures/blob/master/contracts/Strings.sol ,它使用Sol 0.5.0并可能是用松露编译的。我正在尝试使用Hardhatand 0.8.0。代码复制如下:

注意我改变pragma了顶部。对我来说一切都很好,所以我不确定问题出在哪里,除了它在这条线上: bstr[k--] = byte(uint8(48 + _i % 10));

0 投票
1 回答
240 浏览

ethereum - 如何预先为安全帽本地节点地址提供资金

在本地启动安全帽节点时,我获得了 10 个预先用 10k ETH 资助的地址。但是当我将它连接到 localhost:8545 时,这些都没有出现在 metamask 上。结果,我无法与本地部署的 dapp 交互

难道我做错了什么?

0 投票
2 回答
2907 浏览

ethereum - 在安全帽合同中导入 openzeppelin 错误

我正在尝试使用一些 @openzeppelin/contracts 导入来部署合同。

合同:

包.json:

@openzeppelin/contracts 在我的 node_modules 中,我运行了一个 npm 我再次安装。

预期结果:成功导入deps。

实际结果:终端中的错误消息:

编辑:删除 '../node_modules' 也不能解决这个问题。

这会产生 lint 错误:

错误是:

0 投票
1 回答
1770 浏览

visual-studio-code - VScode Solidity 扩展 - 找不到 openzepplin 导入

我正在尝试从一个非常简单的 Solidity 合约开始,但 VSCode 让我很难过。我正在使用 Juan Blancos solidity 插件,但 VSCode 找不到 openzepplin 导入

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";

错误是:

未找到源“@openzeppelin/contracts/token/ERC20/ERC20.sol”:不支持文件导入回调

即使 vscode 显示红色波浪线,我也可以通过hardhat compile成功编译。

如果我将路径更改为

import "../node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol";

VScode 停止抱怨,但后来我无法通过硬硬编译,错误是:

找不到源“node_modules/@openzeppelin/contracts/security/Pausable.sol”:文件超出允许的目录。

我的用户和工作区的 Solidity 扩展的 VSCode 设置是:

这对应于我的项目结构

我按照此处的说明进行了广泛的研究,但不幸的是无法使其正常工作。

0 投票
1 回答
180 浏览

solidity - 具有 UTF-8 解码字符的 Solidity ERC20 合约

我需要编写一份使用基于拉丁语言的措辞的合同。这需要特殊字符,例如é, ç, ã, ôetc....

我正在使用安全帽来编写它。

我在这里找到了一个例子,也使用了开放的 Zeppelin:

有效的例子

在此处输入图像描述

当试图在我的合同中写类似的东西时,我得到一个错误:Invalid character in string.

然后,我将 UTF-8 编码添加到这些字符中,希望能够在 BSCScan 或 EtherScan 上正确编译:

IEstring public constant tokenMinuta = "C\xC3\xA9u, Carra\xC3\xA7o";

上面的编译应该在我的终端中看到这里: 在此处输入图像描述

但是,当我将源代码添加到 BSCScan 或 EtherScan 时,它不起作用。

未以人类可读方式编译的特殊字符

看看我在哪里添加了 UTF-8 - 我希望这将以人类可读的方式编译,而不是像这样:

在此处输入图像描述

我的问题是:如何在合同正文中写入这些特殊字符而不会出现编译错误,从而能够在 BSCSan 或 EtherScan上以人类可读的方式验证与这些字符的合同?就像我上面提供的第一个示例一样工作。

0 投票
0 回答
1507 浏览

npm - 无法为 Hardhat 项目安装软件包

我想使用 Hardhat 环境创建一个项目。我已经尝试从他们身边遵循https://hardhat.org/getting-started/教程。在那里,我们有一个提示来安装所有必需的软件包。不幸的是,当我npm install --save-dev @nomiclabs/hardhat-waffle ethereum-waffle chai @nomiclabs/hardhat-ethers ethers第一次运行时,我可以看到很多关于已弃用软件包的警告,然后

我试过安装ethereum-waffle选择的特定版本等。它总是以同样的错误结束。

你知道如何克服它吗?为什么在安装过程中不推荐使用这么多软件包?这是getting-started过时的,我应该以其他方式开始安全帽项目吗?

0 投票
1 回答
2460 浏览

blockchain - 如何使用 HardHat 调用应付账款 Solidity 函数?

我有一个名为“收养狗”的可靠函数,如下所示,它基本上是合同中的一个应付函数。

// 这失败了,因为我不知道如何在 HARDHAT/ETHER.JS 中传递 ETHERS

哈特哈特

合同

0 投票
0 回答
245 浏览

blockchain - 使用 Hardhat/Solidty 设置 MetaMask Eth 值

我正在开发一个测试智能合约,我希望用户将 eth 发送到该合约。我已经在solidity中设置了一个功能作为应付。当我访问 msg.value 时,它​​始终为零。在元掩码弹出窗口中,没有选项可以增加我要发送给合约的 eth 的值。使用安全帽样板,我如何调整发送到合同的 eth 数量?

我正在使用安全帽提供的上下文。

下面是智能合约功能:

当我启动 openPool 函数时,metamask 窗口打开并显示 gas 费用,但 eth 始终设置为零,我无法更改它。我应该使用安全帽样板提供的上下文吗?我看到了一些使用 web3 函数来更改交易值的 yt 视频,但如果这已经用安全帽处理了,那就别想了。

在此处输入图像描述