问题标签 [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 投票
0 回答
284 浏览

solidity - Solidity - 使用 OpenZeppelin 将覆盖方法转换为应付

我正在实施 ERC721 合同,但我需要将支付关键字添加到 safeTransferFrom 但我收到此错误:

在此处输入图像描述

ERC721 默认有payable 关键字,但open zeppelin 没有。

}

0 投票
1 回答
671 浏览

ethereum - 从其他智能合约铸造新的 ERC20 代币

最近,我在开发具有 Staking 功能的智能合约时遇到了一个问题。通过 IERC20 接口,我设法与另一个合约中的 Erc20 代币进行交互,但仍然存在一个困惑。我正在开发一个智能合约,用户可以在智能合约中质押我的代币(代币已经部署在网络中),当质押期限结束时,利益相关者可以获得他们的质押金额以及奖励代币。对于奖励代币,我想铸造新代币,以在我的智能合约中向利益相关者提供奖励。如何在另一个智能合约中使用 mint 功能?我想在我的 Staking 智能合约中使用 Erc20 mint 功能。等待您的积极回应。

转移和批准工作正常,但在 IERC20 中没有薄荷选项

0 投票
0 回答
1523 浏览

ethereum - 使用 BaseURI 在 IPFS 上存储 NFT 元数据,我可以在生成令牌时动态更新 JSON 吗?

我正在尝试创建一个包含 10,000 个(ERC-721)令牌的集合,其元数据存储在 IPFS 上。与令牌关联的每个图像都将使用其唯一的 CDI 预先上传到 IPFS。

由于不会一次全部生成令牌,因此首先我希望每个元数据 json 为空并链接到占位符图像。

我的问题是:如果没有在我的合同中设置特定的 TokenURI(我想避免),如何在铸造时更改与令牌关联的 json 文件,而不更改所有令牌必须通用的 BaseURI?

这是它应该如何工作的:

我想它应该涉及 IPNS,但我找不到关于最佳实践的具体指南。尽管我看到这种方法一直都在使用,例如甚至被 Bored Ape Yacht Club 系列所使用。

0 投票
1 回答
177 浏览

blockchain - OpenZeppelin Context.sol 智能合约是抽象的,为什么?

我正在研究这个 OZ 智能合约:

https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Context.sol

如您所见,它只有两个函数来处理 metatxs。我不明白为什么这个合约被定义为抽象的,因为这两个功能都实现了。在此先感谢大家!

0 投票
1 回答
50 浏览

ethereum - 找出 ERC20 合约中的地址

我正在编写一个 ERC20 合约,它允许另一个 ERC20 能够使用我的合约,并且不确定如何在下面给出的场景中获取特定地址。

说我的合同是CoinA,别人的合同是PartnerCoin。我被代理了,他们可能会也可能不会(在这种情况下,我已经知道他们是否被代理了)。假设我使用 OpenZeppelin 作为我的代理。我代币的代理合约地址是 0x123,他们的代币合约(或代理)地址是 0x456。可以说,如果PartnerCoin被代理了,那么它们的实现地址就是0x192。

人 Bob 来了,想把他的 10 个转给PartnerCoin他的朋友 John。Bob 的钱包地址是 0x987,John 的钱包地址是 0x654。PartnerCoin对它的传输函数有一个要求,它必须从它可以调用的公共函数接收特定的响应CoinA,否则它不会传输。它调用函数,我们将调用它SuperFunction,onCoinA并等待响应。

我只想PartnerCoin能够打电话SuperFunction,至少现在是这样,而且我知道PartnerCoin地址是什么。

在我的实施合同中,比如 0x384,我相信是这样的:

msg.sender会返回 0x123,我自己的代理,因为我的代理正在调用我的实现,对吗?

_msgSender()将返回 0x987,因为他们是实际的最终用户。

什么会返回 0x456,PartnerCoin的合约地址,以便CoinA检查它确实PartnerCoin是在调用SuperFunction,而不是其他硬币?

感谢您的帮助!

0 投票
0 回答
72 浏览

upgrade - 升级后智能合约所有者为0x0

我正在使用 Hardhat 和 OpenZeppelin 可升级合同。到目前为止,部署合约 V1 时一切正常。但是,当我升级到 V2 时,出于某种原因,所有者设置为地址 0x0。预期的行为是合约的所有者应该保持不变,因为升级是由所有者发起的。

./scripts/prepare_upgrade.js

我在这里想念什么?

0 投票
0 回答
64 浏览

openzeppelin - ERC1155 和钱包余额

好奇钱包(例如元掩码/其他)究竟是如何知道可能在其所有权下的任何 ERC1155 代币的?

例如,我可能有一个 ERC1155 合同,它发出 100000 个不同类型的令牌(每个都有不同的 tokenId)

ERC1155 接口确实有一个balanceOf(account, id)功能,但这当然需要钱包预先了解各种 tokenId 才能使用它。

钱包可以监听钱包地址的所有 TransferSingle 事件并从中获取代币余额,但这肯定也是有问题的,因为代币可能已经转移到其他钱包。

可以在合约中维护一个映射,该映射维护一个地址持有的 tokenIds,例如

mapping(address => uint256[] ) tokenIdsInWallet

虽然这可以工作,但它不是标准的接口功能,所以钱包不会知道它

0 投票
1 回答
458 浏览

ethereum - 交易完成,但 NFT 未转移

我创建了一个智能合约,铸造了一个 nft,现在尝试转移它。我的问题是交易完成得很好——我可以在 etherscan 等中看到它,但 nft 没有被转移。可能的根本原因是什么?

还有合同。我实际上并没有调用传输函数,因为我期望使用 openzeppelin transferFrom 函数。但是如果我使用合同中的转移函数 - 结果是一样的:

  • 交易被执行

  • NFT 不会被转移。

    }

0 投票
1 回答
464 浏览

solidity - 限制公众只铸造一个 ERC721 代币 (NFT) 且铸币价格为零的 Solidity 功能?

我想请求一些帮助来开发一个铸币功能,该功能限制公共用户只铸币一个,铸币价格为 0(不包括汽油费)的 NFT - 在促销赠品的情况下。这甚至可能吗?我欢迎任何建议,甚至是补充集中式解决方案。

到目前为止,这是我的功能。目前,我可以限制免费铸币 NFT 数量的唯一方法是合约所有者执行铸币。但我希望公共用户执行此功能,特别是如果免费 NFT 的数量很多,因此会产生相关的 gas 费用。它基于 OpenZeppelin 合约:

0 投票
1 回答
75 浏览

inheritance - 在solidity中覆盖函数,访问内部函数

我想从Ownable覆盖 transferOwnership但是,内部函数 _transferOwnership 未被识别。我要么必须有办法调用它,要么直接更改 _transferOwnership。