22 lines
753 B
Solidity
22 lines
753 B
Solidity
// SPDX-License-Identifier: MIT
|
|
pragma solidity 0.8.19;
|
|
|
|
contract ClaimHistory {
|
|
mapping(address user=> mapping(uint256 index => uint256 val)) private claimedBitMap;
|
|
|
|
function isClaimed(address user, uint256 index) public view returns (bool) {
|
|
uint256 claimedWordIndex = index / 256;
|
|
uint256 claimedBitIndex = index % 256;
|
|
uint256 claimedWord = claimedBitMap[user][claimedWordIndex];
|
|
uint256 mask = (1 << claimedBitIndex);
|
|
return claimedWord & mask == mask;
|
|
}
|
|
|
|
function setClaimed(address user, uint256 index) internal {
|
|
uint256 claimedWordIndex = index / 256;
|
|
uint256 claimedBitIndex = index % 256;
|
|
claimedBitMap[user][claimedWordIndex] = claimedBitMap[user][claimedWordIndex] | (1 << claimedBitIndex);
|
|
}
|
|
|
|
}
|