问题标签 [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.
javascript - 尽管有官方测试文档,但通过 Hardhat 导入以太币失败
根据 Hardhat 的官方测试文档,ethers
应该在全局范围内隐式可用;但是,它可以选择require
显式地 d ,如下所示:
这对我的本地项目失败。
我的包清单似乎包含正确的依赖项:
我的单元测试文件似乎也与 Hardhat 文档中的工作示例相匹配:
尽管如此,运行测试还是失败了:
我该如何解决?
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
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
并可能是用松露编译的。我正在尝试使用Hardhat
and 0.8.0
。代码复制如下:
注意我改变pragma
了顶部。对我来说一切都很好,所以我不确定问题出在哪里,除了它在这条线上: bstr[k--] = byte(uint8(48 + _i % 10));
ethereum - 如何预先为安全帽本地节点地址提供资金
在本地启动安全帽节点时,我获得了 10 个预先用 10k ETH 资助的地址。但是当我将它连接到 localhost:8545 时,这些都没有出现在 metamask 上。结果,我无法与本地部署的 dapp 交互
难道我做错了什么?
ethereum - 在安全帽合同中导入 openzeppelin 错误
我正在尝试使用一些 @openzeppelin/contracts 导入来部署合同。
合同:
包.json:
@openzeppelin/contracts 在我的 node_modules 中,我运行了一个 npm 我再次安装。
预期结果:成功导入deps。
实际结果:终端中的错误消息:
编辑:删除 '../node_modules' 也不能解决这个问题。
这会产生 lint 错误:
错误是:
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 设置是:
这对应于我的项目结构
我按照此处的说明进行了广泛的研究,但不幸的是无法使其正常工作。
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上以人类可读的方式验证与这些字符的合同?就像我上面提供的第一个示例一样工作。
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
过时的,我应该以其他方式开始安全帽项目吗?
blockchain - 如何使用 HardHat 调用应付账款 Solidity 函数?
我有一个名为“收养狗”的可靠函数,如下所示,它基本上是合同中的一个应付函数。
// 这失败了,因为我不知道如何在 HARDHAT/ETHER.JS 中传递 ETHERS
哈特哈特
合同
blockchain - 使用 Hardhat/Solidty 设置 MetaMask Eth 值
我正在开发一个测试智能合约,我希望用户将 eth 发送到该合约。我已经在solidity中设置了一个功能作为应付。当我访问 msg.value 时,它始终为零。在元掩码弹出窗口中,没有选项可以增加我要发送给合约的 eth 的值。使用安全帽样板,我如何调整发送到合同的 eth 数量?
我正在使用安全帽提供的上下文。
下面是智能合约功能:
当我启动 openPool 函数时,metamask 窗口打开并显示 gas 费用,但 eth 始终设置为零,我无法更改它。我应该使用安全帽样板提供的上下文吗?我看到了一些使用 web3 函数来更改交易值的 yt 视频,但如果这已经用安全帽处理了,那就别想了。