-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathLotteryNFT.sol
62 lines (54 loc) · 2.08 KB
/
LotteryNFT.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
51
52
53
54
55
56
57
58
59
60
61
62
pragma solidity 0.6.12;
pragma experimental ABIEncoderV2;
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import "@openzeppelin/contracts/utils/Counters.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
contract LotteryNFT is ERC721, Ownable {
using Counters for Counters.Counter;
Counters.Counter private _tokenIds;
mapping (uint256 => uint8[4]) public lotteryInfo;
mapping (uint256 => uint256) public lotteryAmount;
mapping (uint256 => uint256) public issueIndex;
mapping (uint256 => bool) public claimInfo;
constructor(
string memory _name,
string memory _ticker
) public ERC721(_name,_ticker) {}
function newLotteryItem(address player, uint8[4] memory _lotteryNumbers, uint256 _amount, uint256 _issueIndex)
public onlyOwner
returns (uint256)
{
_tokenIds.increment();
uint256 newItemId = _tokenIds.current();
_mint(player, newItemId);
lotteryInfo[newItemId] = _lotteryNumbers;
lotteryAmount[newItemId] = _amount;
issueIndex[newItemId] = _issueIndex;
// claimInfo[newItemId] = false; default is false here
// _setTokenURI(newItemId, tokenURI);
return newItemId;
}
function getLotteryNumbers(uint256 tokenId) external view returns (uint8[4] memory) {
return lotteryInfo[tokenId];
}
function getLotteryAmount(uint256 tokenId) external view returns (uint256) {
return lotteryAmount[tokenId];
}
function getLotteryIssueIndex(uint256 tokenId) external view returns (uint256) {
return issueIndex[tokenId];
}
function claimReward(uint256 tokenId) external onlyOwner {
claimInfo[tokenId] = true;
}
function multiClaimReward(uint256[] memory _tokenIds) external onlyOwner {
for (uint i = 0; i < _tokenIds.length; i++) {
claimInfo[_tokenIds[i]] = true;
}
}
function burn(uint256 tokenId) external onlyOwner {
_burn(tokenId);
}
function getClaimStatus(uint256 tokenId) external view returns (bool) {
return claimInfo[tokenId];
}
}