Initial commit with 🏗️ Scaffold-ETH 2 @ 1.0.5
This commit is contained in:
49
packages/hardhat/contracts/YourCollectible.sol
Normal file
49
packages/hardhat/contracts/YourCollectible.sol
Normal file
@@ -0,0 +1,49 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
pragma solidity ^0.8.20;
|
||||
|
||||
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
|
||||
import "@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol";
|
||||
import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";
|
||||
import "@openzeppelin/contracts/access/Ownable.sol";
|
||||
|
||||
contract YourCollectible is ERC721, ERC721Enumerable, ERC721URIStorage, Ownable {
|
||||
uint256 public tokenIdCounter;
|
||||
|
||||
constructor() ERC721("YourCollectible", "YCB") Ownable(msg.sender) {}
|
||||
|
||||
function _baseURI() internal pure override returns (string memory) {
|
||||
return "https://ipfs.io/ipfs/";
|
||||
}
|
||||
|
||||
function mintItem(address to, string memory uri) public returns (uint256) {
|
||||
tokenIdCounter++;
|
||||
uint256 tokenId = tokenIdCounter;
|
||||
_safeMint(to, tokenId);
|
||||
_setTokenURI(tokenId, uri);
|
||||
return tokenId;
|
||||
}
|
||||
|
||||
// Override functions from OpenZeppelin ERC721, ERC721Enumerable and ERC721URIStorage
|
||||
|
||||
function _update(
|
||||
address to,
|
||||
uint256 tokenId,
|
||||
address auth
|
||||
) internal override(ERC721, ERC721Enumerable) returns (address) {
|
||||
return super._update(to, tokenId, auth);
|
||||
}
|
||||
|
||||
function _increaseBalance(address account, uint128 value) internal override(ERC721, ERC721Enumerable) {
|
||||
super._increaseBalance(account, value);
|
||||
}
|
||||
|
||||
function tokenURI(uint256 tokenId) public view override(ERC721, ERC721URIStorage) returns (string memory) {
|
||||
return super.tokenURI(tokenId);
|
||||
}
|
||||
|
||||
function supportsInterface(
|
||||
bytes4 interfaceId
|
||||
) public view override(ERC721, ERC721Enumerable, ERC721URIStorage) returns (bool) {
|
||||
return super.supportsInterface(interfaceId);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user