问题标签 [openzeppelin]

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 投票
7 回答
11692 浏览

solidity - 如何正确将 SafeMath.sol 导入合约

这是我一直在处理的一个问题。我的临时解决方案是在我的 Contracts 目录中创建一个 SafeMath.sol 文件并直接从那里导入它。但是,我一直在寻找一个“更清晰的解决方案”......旧方式似乎是直接从 GitHub 链接导入它,如在一些 repos 和其他类似这样的堆栈溢出帖子中所见

但是,这样做的正确方法似乎是安装相应的 oz 包(@openzeppelin/contracts-ethereum-package)并将文件直接导入所需的合约,即

import "@openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol";

但是,使用 VSCode,我仍然得到错误Source "@openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol" not found: File import callback not supported

也就是说,我怎样才能正确导入 SafeMath?

编辑:我正在使用pragma solidity ^0.6.0;

0 投票
1 回答
1024 浏览

solidity - 如何编译旧的 zeppelin-solidity 合约实现

我使用 npm 安装了 zeppelin-solidity 包,以使用 erc-721 合约。

但问题是,当我使用 truffle compile 时,会出现以下错误:

编译失败。看上面。

我看到的一些答案建议将 pragma solidity 提高到 0.5,但是如何更改包含文件中的版本?

另外,如果这个合同是旧的,我应该使用它,还是有更好的 erc721 实现可用?

更新:我尝试如下更改 solc 编译器,但错误仍然存​​在:

0 投票
0 回答
1423 浏览

solidity - 我的是元掩码返回 RPC 错误:错误:[ethjs-rpc] rpc 错误与有效负载,元掩码显示失败 [object, object]

我的元掩码显示 ALERT: Transaction Error。合约代码中抛出异常。当我要使用 truffle 传输时,在 localhost:7545 上打开 zeppelin 和 ganache

确认交易后显示

我的众筹代码

deploy_contract.js

这与具有初始供应的 ERC20 代币相关联。

我尝试重新安装元掩码并清除缓存,我启用了 ethereum.enable();,尝试使用 truffle 开发帐户、ganache CLI 和 GUI,更改气体限制和气体。我该如何解决?

0 投票
1 回答
1085 浏览

ethereum - 返回错误:方法 web3_clientVersion 不存在/不可用

我一直在尝试在使用 EVM 和 Solidity 的 Harmony 区块链中使用 openzeppelin 制作可升级的智能合约......它在不使用 openzeppelin 时是可部署的,但是当我这样做时,它会抛出上述错误......还有我的一个队友能够毫无错误地部署它...

我不知道这是我的系统的问题,还是 Harmony 的 TruffleProvider 的问题......他们似乎正在尝试解决这个问题并在这个分支上构建https://github.com/harmony-one/sdk/tree/ truffle_provider,我的队友终于能够部署它,但我仍然遇到同样的错误:

$盎司部署

无需编译,所有合同都是最新的。

? 选择要实例化的合约:Ball

? 选择网络:稳定

✓ 新增合同:Ball

返回错误:方法 web3_clientVersion 不存在/不可用

0 投票
1 回答
410 浏览

solidity - Solidity 库 @openzeppelin/contracts/access/Ownable.sol 没有解析 ownerOnly()

我正在尝试切换我的合同以使用'import "@openzeppelin/contracts/access/Ownable.sol"',但我收到以下错误

contract/InvoiceTracker.sol:93:9:DeclarationError:未声明的标识符。所有者()

对于此代码: function addClient(address _clientID, string memory _name) public ownerOnly() noDupClient(_clientID, _name) {}

我已经安装了:“@openzeppelin/cli”:“^2.8.2”、“@openzeppelin/contracts”:“^3.1.0”、“@openzeppelin/test-helpers”:“^0.5.6”</p >

你能告诉我为什么会这样吗?

0 投票
1 回答
573 浏览

solidity - 我们如何(在 Remix 上)获得必须使用库的智能合约的字节码?

我正在使用 Remix 来编译一个简单的 ERC20 智能合约,我很想使用诸如 SafeMath 之类的库。你知道如何获取这样的合约的字节码https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol吗?你知道如何让 Remix 编译一个使用库的智能合约吗?非常感谢您的时间和帮助:)

0 投票
2 回答
665 浏览

ethereum - 安装 openzeppelin/contracts 库

我创建了一个 node.js 项目,在其中创建了一个 truffle 目录并初始化了它的项目。我已经在这个 truffle 项目目录中安装了 openzeppelin (npm install @openzeppelin/contracts) 库,但似乎没有安装任何东西,尽管在安装过程中我没有收到任何错误。我项目中的 import 语句显示以下错误:

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

0 投票
0 回答
935 浏览

solidity - 错误:返回错误:处理事务时出现 VM 异常:还原

我有一个合约GetNewToken接收OldToken并通过函数buyTokens提供NewToken

OldTokensNewTokens是标准的 ERC20 实现。其中一个如下所示(除名称和符号外,其他完全相同)

2_deployed_token.js如下所示。它还将一些NewToken转移到GetNewToken合约,并将一些OldToken转移到账户[1],然后将用于调用buyTokens函数。

truffle-config.js看起来像:

现在编译和迁移工作正常(我使用 ganache 作为本地区块链):

地址如下(在 ganache 中): OldToken 0xaA47e5555db895b230A16AF6860bf5DF442C7dB9

新令牌 0x43C68Efa858a9eA2F2DdD4e1AbDeA90a96f5C56E

GetNewToken 0x4b4a5d3Ad0ed472876e50FB0daa6ED2FA78488e2

以下是随后在 truffle 控制台中执行的步骤:

然后返回错误:

使用truffle debug 0xdf7af41dd709d19a75b497c25cde854328ea50176c35c6661416a316c382d9ad调试事务哈希并按o突出显示GetNewToken函数buyTokens行下方

请忽略行号,因为我在 GetNewToken.sol 文件中几乎没有评论

  1. 为什么我无法使用 transferFrom?账户[1] 已经有 OldTokens(根据迁移)。

  2. 另外,当我使用松露控制台时

为什么我没有得到 1000000000000000000000(根据迁移脚本)?

谢谢!

0 投票
1 回答
913 浏览

ethereum - 从 github.com 上的 openZeppelin 合约导入哪个版本的 safeMath?

safeMathon有多个版本openZeppelin。在master分支上,URL 是:

除了master分支之外,还有很多其他版本可用。这是版本 3.0.0:

如果有人想safeMath在她/他的智能联系人开发中使用,应该导入哪个版本?master要随时导入分支吗?

master分支:

0 投票
1 回答
1154 浏览

ethereum - 该合约与 EtherScan 上合约源代码的部署字节码匹配

使用 Openzeppelin CLI,我创建了可升级智能合约并将其部署在我的 rinkeby 测试网络上,一切正常。但部署后,我在https://rinkeby.etherscan.io/上检查了我的合约的源代码, 它显示我的合约已经过验证并且笔记:

此合约与合约 0xEe03719900bcf6295871846DAe4711F7446b70C6 的源代码的已部署字节码匹配。

etherscan 上的源代码不是我的合约源代码。

在此处输入图像描述