首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将变量作为字符串传递给实体中的构造函数

如何将变量作为字符串传递给实体中的构造函数
EN

Ethereum用户
提问于 2022-07-02 11:48:10
回答 1查看 257关注 0票数 0

我目前正在使用nfts的openzeppelin ERC721标准进行NFT项目。

当从openzeppelin继承ERC721 NFT合同标准时,需要在构造函数中传递nft的"tokenName“和"tokenSymbol”。

我的问题是,为了做到这一点,在部署之前,我需要硬代码 nft的名称和契约中的符号。此代码片段来自将从不同契约(主契约)控制的NFT合同,我需要能够将信息( e:g tokenName和tokenSymbol)从主合同传递给nft契约。

将tokenName和tokenSymbol硬编码到这个nft合同中是个问题。

与硬编码不同,我希望在从主契约部署契约时,能够给NFT一个动态的名称和符号。

坚固版0.8.4

这是openzeppelin的常规ERC721构造函数;令牌名"Metaverse令牌“和符号"METT”被硬编码到契约中。

代码语言:javascript
复制
constructor (address marketPlaceAddress) ERC721 ("Metaverse Tokens", "METT") {
    contractAddress = marketPlaceAddress;
}

这是我修改的代码;令牌名称和符号被收集为来自契约中的构造函数的输入。

//导入erc721令牌标准导入erc721

//导入扩展设置令牌uri导入"@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";

契约NFT是ERC721URIStorage { // NFT分发器地址contractAddress的合同地址;//跟踪令牌uint256公共tokenCount;字符串公共tokenName;字符串公共tokenSymbol;

代码语言:javascript
复制
constructor (address Dispenser, string memory _tokenName, string memory _tokenSymbol) 
ERC721 (  tokenName  ,  tokenSymbol) {
    // use Dispenser address to deploy NFT contract 
    contractAddress = Dispenser;
    // set the name of the token
    tokenName = _tokenName;
    // set the symbol of the token
    tokenSymbol = _tokenSymbol;
    // set the tokenCount to 0 on deployment 
    tokenCount = 0;
}

我的代码的问题是,它不会将名称和符号传递给它继承的ERC721契约,但是未经修改的代码会传递它们(名称和符号)。

因此,我的问题如下:

  1. 如何将变量作为字符串传递给实体中的构造函数
  2. 我的代码正确吗?我需要用我的代码来改变什么才能使它工作?
  3. openZeppelin ERC721合同不支持这一点吗?
  4. 我是不是走错路了,你觉得我问错问题了吗?

请帮帮忙

EN

回答 1

Ethereum用户

发布于 2022-07-02 17:40:29

试试这个:

代码语言:javascript
复制
    string tokenName = "TokenName";
    string tokenSymbol = "TKS";
     address contractAddress;

    constructor (address Dispenser,) ERC721 (  tokenName  ,  tokenSymbol) 
   {
          //your other codes here, excluding token name and symbol//
          contractAddress = Dispenser;

     }

您的方法不起作用,因为构造函数在部署时运行,而且您的ERC721继承的契约需要立即在它自己的构造函数中设置令牌名称和符号,因为您导入了它。

另一种方法是

代码语言:javascript
复制
    constructor() ERC721("TokenName", "Symbol") {
        //your other codes here
    }
票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/131075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档