-
Notifications
You must be signed in to change notification settings - Fork 0
/
newNFT.sol
50 lines (44 loc) · 2.02 KB
/
newNFT.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
// contracts/GameItem.sol
// SPDX-License-Identifier: MIT
pragma solidity >=0.7.0 <0.9.0;
import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";
import "@openzeppelin/contracts/utils/Counters.sol";
contract newNFT is ERC721URIStorage {
using Counters for Counters.Counter;
Counters.Counter private _tokenIds;
address public manager;
string[8] public tknURIs = [
"https://ipfs.io/ipfs/QmQEuBDnjR7oGUBGhYX2k4jhoWSnCDVXUDrwebcFVAV9Eg?filename=Raspberry.jpg",
"https://ipfs.io/ipfs/Qma44ew9c9HFfytQfAdk86jRUT7ZUQezLAZBni6riWiYuZ?filename=Strawberry.jpg",
"https://ipfs.io/ipfs/QmT6hzsD7PJVjvDHoWNjYpqj6jjwqpq6EWj69vNTtWrYgs?filename=Grape.jpg",
"https://ipfs.io/ipfs/Qmeq3dcCc6eVcjFUt9rH1JR1djSbpkeEBNQGsAQqxevayx?filename=Banana.png",
"https://ipfs.io/ipfs/QmSaq7DsdUui7GHyjVz7CjKhtHHFEUVrsXpC7qWTmGQw21?filename=Pear.jpg",
"https://ipfs.io/ipfs/QmdjirE3bzBfv8ZYowde4eUTx2rCwGFpnE9EWx9qbaYqGj?filename=Apple.jpg",
"https://ipfs.io/ipfs/QmYUB6634bt9YXnpCizMQZGMNoHTUXZwNCHrDuXbqFBrsa?filename=Watermelon.jpg",
"https://ipfs.io/ipfs/QmPCDeN6Y2TX7CmNqiuVoUPrnHKuJC66t8zHYFJLmeTEtb?filename=Melon.jpg"
];
constructor() ERC721("newNFT", "ITM") {
manager = msg.sender;
}
function awardItem(uint index) //mint a new NFT given an index. the index mean
public
returns (uint256)
{
require(index >= 0 && index <= 7);
require(msg.sender == manager, "Only the lottery manager can mint new NFTs.");
uint256 newItemId = _tokenIds.current();
_mint(manager, newItemId);
_setTokenURI(newItemId, tknURIs[index]);
_tokenIds.increment();
return newItemId;
}
function rewardWinner(address winner, uint256 tokenId)
public
payable
returns (bool success)
{
require(winner != msg.sender && msg.sender == manager, "Lottery manager can't play the lottery.");
safeTransferFrom(manager, winner, tokenId);
return true;
}
}