¡Ayuda! Remix me presenta el siguiente error de compilación: <blockquote> DeclarationError: Undeclared identifier. –&gt; contracts/NFT_Pl...

Carlos Santaniello

Carlos Santaniello

Pregunta
studenthace 4 años

¡Ayuda!

Remix me presenta el siguiente error de compilación:

DeclarationError: Undeclared identifier.

–> contracts/NFT_Platzi.sol:19:9:

|

19 | _setTokenURI(newTokenId, tokenURI);

| ^^^^^^^^^^^^

Mi código es el siguiente:

// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC721/ERC721.sol"; import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Counters.sol"; contract Mi_NFT is ERC721{ using Counters for Counters.Counter; Counters.Counter private _tokenIds; constructor() ERC721("TokenCarlos", "CARL"){} function mintNTF(address receiver, string memory tokenURI) public returns (uint256){ _tokenIds.increment(); uint256 newTokenId = _tokenIds.current(); _mint(receiver, newTokenId); _setTokenURI(newTokenId, tokenURI); return newTokenId; } }

Lo pueden ver aquí:

9 respuestas
para escribir tu comentario
    Jason paez

    Jason paez

    studenthace 3 años

    ninguna de estas respuestas me resuelve el problema de paso de la primera parte

    Jason paez

    Jason paez

    studenthace 3 años

    no pasa de esta parte

    Alejandro Missael Ochoa Ramirez

    Alejandro Missael Ochoa Ramirez

    studenthace 3 años

    Eso pasa porque la función _setBaseUri fue eliminada, pueden dejar el código como lo tengo y funcionará, también aquí les dejo la razón de eso: https://forum.openzeppelin.com/t/declarationerror-undeclared-identifier-error-when-using-setbaseuri/6947/10

    pragma solidity ^0.8.0; import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC721/ERC721.sol"; import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Counters.sol"; contract MY_NFT is ERC721 { using Counters for Counters.Counter; Counters.Counter private _tokenIds; string internal baseURI; constructor() ERC721("TokenPlatzi", "TPLA"){} function minNFT(address receiver, string memory tokenURI) public returns (uint256){ _tokenIds.increment(); uint256 newTokenId = _tokenIds.current(); _mint(receiver, newTokenId); baseURI = _baseURI(); return newTokenId; } function _baseURI() internal view override returns (string memory) { return baseURI; } }
    Carlos Santaniello

    Carlos Santaniello

    studenthace 3 años

    Lo he resuelto de la siguiente forma:

    • Comentar la línea 19
    • Eliminar string memory tokenURI del argumento de la función mintNFT

    El código queda así:

    // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC721/ERC721.sol"; import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Counters.sol"; contract Mi_NFT is ERC721{ using Counters for Counters.Counter; Counters.Counter private _tokenIds; constructor() ERC721("TokenPlatzi", "PLAT"){} function mintNTF(address receiver) public returns (uint256){ _tokenIds.increment(); uint256 newTokenId = _tokenIds.current(); _mint(receiver, newTokenId); //_setTokenURI(newTokenId, tokenURI); return newTokenId; } }
    Kazuo Izumi

    Kazuo Izumi

    studenthace 3 años

    me quede aqui.... que puedo hacer.... no soy programador, pero quiero terminar el curso de creación de NFT bien....

    Juan Enrique Morales Rodríguez

    Juan Enrique Morales Rodríguez

    studenthace 3 años

    mismo error creo esta desactualizado el curso porque en github esta actualizado el ttoken ERC721

    Luis Berenguer

    Luis Berenguer

    studenthace 3 años

    Mismo error, mi codigo es:

    // SPDX-License-Identifier: MIT pragma solidity ^0.8.2; import "@openzeppelin/contracts/token/ERC721/ERC721.sol"; import "@openzeppelin/contracts/utils/Counters.sol"; contract LuisBerenguerNFT is ERC721 { using Counters for Counters.Counter; Counters.Counter private _tokenId; constructor() ERC721("LuisBerenguerNFT", "LB") {} function mintNFT(address reciever, string memory tokenURI) public returns(uint256) { _tokenId.increments(); uint256 newTokenId = _tokenId.current(); _mint(reciever, newTokenId); _setTokenURI(newTokenId, tokenURI); return newTokenId; } }
    Johan Andres Acosta Ortiz

    Johan Andres Acosta Ortiz

    studenthace 3 años

    Me pasa lo mismo, es un error por la version del compilador, aunque no logro solucionarlo del todo tampoco, prueben con cambiar el pragma (les permitirá hacer deploy) a algo como:

    pragma solidity >=0.6.0 <0.8.0;
    Edward Rodriguez

    Edward Rodriguez

    studenthace 4 años

    Mismo error

Curso de Creación de NFT [Empieza Gratis]

Curso de Creación de NFT [Empieza Gratis]

Descubre el potencial de los NFT como prueba de autenticidad de un archivo digital a través de blockchain.

Curso de Creación de NFT [Empieza Gratis]
Curso de Creación de NFT [Empieza Gratis]

Curso de Creación de NFT [Empieza Gratis]

Descubre el potencial de los NFT como prueba de autenticidad de un archivo digital a través de blockchain.