
Carlos Santaniello
Pregunta¡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í:
- Comentar la línea 19
- Eliminar string memory tokenURI del argumento de la función mintNFT

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

Jason paez
no pasa de esta parte
Alejandro Missael Ochoa Ramirez
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
Lo he resuelto de la siguiente forma:
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
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
mismo error creo esta desactualizado el curso porque en github esta actualizado el ttoken ERC721

Luis Berenguer
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
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
Mismo error