contract PresaleBenchmark {
uint256 private constant MAX_INT = 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff;
uint256[3] arr = [MAX_INT, MAX_INT, MAX_INT];
function claimTicketOrBlockTransaction(uint256 ticketNumber) external {
require(ticketNumber < arr.length * 256, "too large");
uint256 storageOffset = ticketNumber / 256;
uint256 offsetWithin256 = ticketNumber % 256;
uint256 storedBit = (arr[storageOffset] >> offsetWithin256) & uint256(1);
require(storedBit == 1, "already taken");
arr[storageOffset] = arr[storageOffset] & ~(uint256(1) << offsetWithin256);
}
}
Last active
January 11, 2022 01:30
-
-
Save DonkeVerse/752160ed164f4b2d2d71d0e61c09eadc to your computer and use it in GitHub Desktop.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment