juice-shop

Форк
0
/
nftUnlockChallenge_1.sol 
43 строки · 1.2 Кб
1
pragma solidity ^0.8.4;
2

3
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
4
import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";
5
import "@openzeppelin/contracts/access/Ownable.sol";
6
import "@openzeppelin/contracts/utils/Counters.sol";
7

8
contract JuiceShopSBT is ERC721, ERC721URIStorage, Ownable {
9
    using Counters for Counters.Counter;
10

11
    Counters.Counter private _tokenIdCounter;
12

13
    constructor() ERC721("JuiceShopSBT", "JS") {}
14

15
    function safeMint(address to, string memory uri) public onlyOwner {
16
        uint256 tokenId = _tokenIdCounter.current();
17
        _tokenIdCounter.increment();
18
        _safeMint(to, tokenId);
19
        _setTokenURI(tokenId, uri);
20
    }
21

22
    function _beforeTokenTransfer(
23
    address from,
24
    address to,
25
    uint256 tokenId
26
    ) internal override virtual {
27
    require(from == address(0), "Err: token transfer is BLOCKED");
28
    super._beforeTokenTransfer(from, to, tokenId);
29
    }
30

31
    function _burn(uint256 tokenId) internal override(ERC721, ERC721URIStorage) {
32
        super._burn(tokenId);
33
    }
34

35
    function tokenURI(uint256 tokenId)
36
        public
37
        view
38
        override(ERC721, ERC721URIStorage)
39
        returns (string memory)
40
    {
41
        return super.tokenURI(tokenId);
42
    }
43
}

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.