Source Code
Overview
CELO Balance
CELO Value
$0.00Multichain Info
Latest 25 from a total of 4,307 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Start Game | 42491028 | 178 days ago | IN | 0 CELO | 0.001334 | ||||
| Start Game | 42491025 | 178 days ago | IN | 0 CELO | 0.001334 | ||||
| Start Game | 42491022 | 178 days ago | IN | 0 CELO | 0.001334 | ||||
| Start Game | 42491019 | 178 days ago | IN | 0 CELO | 0.001334 | ||||
| Start Game | 42491016 | 178 days ago | IN | 0 CELO | 0.001334 | ||||
| Start Game | 42491012 | 178 days ago | IN | 0 CELO | 0.001334 | ||||
| Start Game | 42491008 | 178 days ago | IN | 0 CELO | 0.001334 | ||||
| Start Game | 42491005 | 178 days ago | IN | 0 CELO | 0.001334 | ||||
| Start Game | 42491000 | 178 days ago | IN | 0 CELO | 0.001334 | ||||
| Start Game | 42490996 | 178 days ago | IN | 0 CELO | 0.001334 | ||||
| Start Game | 42490727 | 178 days ago | IN | 0 CELO | 0.001334 | ||||
| Start Game | 42490724 | 178 days ago | IN | 0 CELO | 0.001334 | ||||
| Start Game | 42490720 | 178 days ago | IN | 0 CELO | 0.001334 | ||||
| Start Game | 42490717 | 178 days ago | IN | 0 CELO | 0.001334 | ||||
| Start Game | 42490714 | 178 days ago | IN | 0 CELO | 0.001334 | ||||
| Start Game | 42490711 | 178 days ago | IN | 0 CELO | 0.001334 | ||||
| Start Game | 42490707 | 178 days ago | IN | 0 CELO | 0.001334 | ||||
| Start Game | 42490703 | 178 days ago | IN | 0 CELO | 0.001334 | ||||
| Start Game | 42490699 | 178 days ago | IN | 0 CELO | 0.001334 | ||||
| Start Game | 42490695 | 178 days ago | IN | 0 CELO | 0.001334 | ||||
| Start Game | 42490423 | 178 days ago | IN | 0 CELO | 0.001334 | ||||
| Start Game | 42490420 | 178 days ago | IN | 0 CELO | 0.001334 | ||||
| Start Game | 42490417 | 178 days ago | IN | 0 CELO | 0.001334 | ||||
| Start Game | 42490413 | 178 days ago | IN | 0 CELO | 0.001334 | ||||
| Start Game | 42490409 | 178 days ago | IN | 0 CELO | 0.001334 |
Cross-Chain Transactions
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0xd23AEA7C...0d1c8dC09 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
MemoryGame
Compiler Version
v0.8.26+commit.8a97fa7a
Optimization Enabled:
Yes with 200 runs
Other Settings:
cancun EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;
contract MemoryGame {
struct Player {
uint8 currentRound;
uint8 livesRemaining;
uint256 score;
uint256 bestRound;
uint256 totalGamesPlayed;
bool isActive;
uint256 roundStartTime;
}
struct GameSession {
uint8[] currentPattern;
bool isComplete;
uint256 startTime;
}
mapping(address => Player) public players;
mapping(address => GameSession) public gameSessions;
// Leaderboard
address[] public leaderboard;
mapping(address => uint256) public leaderboardIndex;
uint8 public constant MAX_ROUNDS = 99;
uint8 public constant STARTING_LIVES = 3;
uint8 public constant STARTING_PATTERN_LENGTH = 3;
uint8 public constant NUM_COLORS = 4; // 0, 1, 2, 3 representing different colors
uint256 public constant TIME_BONUS_THRESHOLD = 10; // seconds
uint256 public constant POINTS_PER_ROUND = 100;
uint256 public constant TIME_BONUS_MULTIPLIER = 2;
event GameStarted(address indexed player, uint8[] pattern);
event PatternGuessed(address indexed player, uint8[] guess, bool correct);
event RoundCompleted(address indexed player, uint8 round, uint256 score);
event GameCompleted(address indexed player, uint256 finalScore, bool won);
event LifeLost(address indexed player, uint8 livesRemaining);
event LeaderboardUpdated(address indexed player, uint256 bestRound);
error GameNotActive();
error GameAlreadyActive();
error InvalidPatternLength();
error InvalidColorValue();
error NoLivesRemaining();
error PatternLengthMismatch();
function startGame() external {
Player storage player = players[msg.sender];
player.currentRound = 1;
player.livesRemaining = STARTING_LIVES;
player.score = 0;
player.isActive = true;
player.totalGamesPlayed++;
_generatePattern();
emit GameStarted(msg.sender, gameSessions[msg.sender].currentPattern);
}
function submitGuess(uint8[] calldata guess) external {
Player storage player = players[msg.sender];
GameSession storage session = gameSessions[msg.sender];
uint8 expectedLength = STARTING_PATTERN_LENGTH + player.currentRound - 1;
if (guess.length != expectedLength) revert PatternLengthMismatch();
// Validate color values
for (uint256 i = 0; i < guess.length; i++) {
if (guess[i] >= NUM_COLORS) revert InvalidColorValue();
}
bool correct = _checkPattern(guess, session.currentPattern);
emit PatternGuessed(msg.sender, guess, correct);
if (correct) {
_handleCorrectGuess();
} else {
_handleIncorrectGuess();
}
}
function _generatePattern() internal {
Player storage player = players[msg.sender];
GameSession storage session = gameSessions[msg.sender];
uint8 patternLength = STARTING_PATTERN_LENGTH + player.currentRound - 1;
session.currentPattern = new uint8[](patternLength);
// Generate pseudo-random pattern using block data and player address
uint256 seed =
uint256(keccak256(abi.encodePacked(block.timestamp, block.difficulty, msg.sender, player.currentRound)));
for (uint8 i = 0; i < patternLength; i++) {
session.currentPattern[i] = uint8(uint256(keccak256(abi.encodePacked(seed, i))) % NUM_COLORS);
}
player.roundStartTime = block.timestamp;
}
function _checkPattern(uint8[] calldata guess, uint8[] memory pattern) internal pure returns (bool) {
if (guess.length != pattern.length) return false;
for (uint256 i = 0; i < guess.length; i++) {
if (guess[i] != pattern[i]) return false;
}
return true;
}
function _handleCorrectGuess() internal {
Player storage player = players[msg.sender];
// Calculate score with time bonus
uint256 roundScore = POINTS_PER_ROUND;
uint256 timeTaken = block.timestamp - player.roundStartTime;
if (timeTaken <= TIME_BONUS_THRESHOLD) {
roundScore *= TIME_BONUS_MULTIPLIER;
}
player.score += roundScore;
emit RoundCompleted(msg.sender, player.currentRound, roundScore);
if (player.currentRound >= MAX_ROUNDS) {
_completeGame(true);
} else {
player.currentRound++;
_generatePattern();
emit GameStarted(msg.sender, gameSessions[msg.sender].currentPattern);
}
}
function _handleIncorrectGuess() internal {
Player storage player = players[msg.sender];
player.livesRemaining--;
emit LifeLost(msg.sender, player.livesRemaining);
if (player.livesRemaining == 0) {
_completeGame(false);
}
// If lives remain, player can try the same pattern again
}
function _completeGame(bool won) internal {
Player storage player = players[msg.sender];
if (player.currentRound > player.bestRound) {
player.bestRound = player.currentRound;
_updateLeaderboard();
}
player.isActive = false;
gameSessions[msg.sender].isComplete = true;
emit GameCompleted(msg.sender, player.score, won);
}
function _updateLeaderboard() internal {
address player = msg.sender;
// If player not in leaderboard, add them
if (leaderboardIndex[player] == 0 && (leaderboard.length == 0 || leaderboard[0] != player)) {
leaderboard.push(player);
leaderboardIndex[player] = leaderboard.length;
}
// Bubble sort to maintain leaderboard order (top scores first)
uint256 currentIndex = leaderboardIndex[player] - 1;
while (
currentIndex > 0
&& players[leaderboard[currentIndex]].bestRound > players[leaderboard[currentIndex - 1]].bestRound
) {
// Swap positions
address temp = leaderboard[currentIndex];
leaderboard[currentIndex] = leaderboard[currentIndex - 1];
leaderboard[currentIndex - 1] = temp;
// Update indices
leaderboardIndex[leaderboard[currentIndex]] = currentIndex + 1;
leaderboardIndex[leaderboard[currentIndex - 1]] = currentIndex;
currentIndex--;
}
emit LeaderboardUpdated(player, players[player].bestRound);
}
// View functions
function getCurrentPattern() external view returns (uint8[] memory) {
return gameSessions[msg.sender].currentPattern;
}
function getPlayerStats(address playerAddr)
external
view
returns (
uint8 currentRound,
uint8 livesRemaining,
uint256 score,
uint256 bestRound,
uint256 totalGamesPlayed,
bool isActive
)
{
Player memory player = players[playerAddr];
return (
player.currentRound,
player.livesRemaining,
player.score,
player.bestRound,
player.totalGamesPlayed,
player.isActive
);
}
function getLeaderboard() external view returns (address[] memory, uint256[] memory) {
uint256[] memory scores = new uint256[](leaderboard.length);
for (uint256 i = 0; i < leaderboard.length; i++) {
scores[i] = players[leaderboard[i]].bestRound;
}
return (leaderboard, scores);
}
function getTopPlayers(uint256 count) external view returns (address[] memory, uint256[] memory) {
uint256 returnCount = count > leaderboard.length ? leaderboard.length : count;
address[] memory topPlayers = new address[](returnCount);
uint256[] memory topScores = new uint256[](returnCount);
for (uint256 i = 0; i < returnCount; i++) {
topPlayers[i] = leaderboard[i];
topScores[i] = players[leaderboard[i]].bestRound;
}
return (topPlayers, topScores);
}
function forfeitGame() external {
_completeGame(false);
}
}{
"remappings": [
"@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
"erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/",
"forge-std/=lib/forge-std/src/",
"halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/",
"openzeppelin-contracts/=lib/openzeppelin-contracts/"
],
"optimizer": {
"enabled": true,
"runs": 200
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "ipfs",
"appendCBOR": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "cancun",
"viaIR": true,
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"name":"GameAlreadyActive","type":"error"},{"inputs":[],"name":"GameNotActive","type":"error"},{"inputs":[],"name":"InvalidColorValue","type":"error"},{"inputs":[],"name":"InvalidPatternLength","type":"error"},{"inputs":[],"name":"NoLivesRemaining","type":"error"},{"inputs":[],"name":"PatternLengthMismatch","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"player","type":"address"},{"indexed":false,"internalType":"uint256","name":"finalScore","type":"uint256"},{"indexed":false,"internalType":"bool","name":"won","type":"bool"}],"name":"GameCompleted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"player","type":"address"},{"indexed":false,"internalType":"uint8[]","name":"pattern","type":"uint8[]"}],"name":"GameStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"player","type":"address"},{"indexed":false,"internalType":"uint256","name":"bestRound","type":"uint256"}],"name":"LeaderboardUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"player","type":"address"},{"indexed":false,"internalType":"uint8","name":"livesRemaining","type":"uint8"}],"name":"LifeLost","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"player","type":"address"},{"indexed":false,"internalType":"uint8[]","name":"guess","type":"uint8[]"},{"indexed":false,"internalType":"bool","name":"correct","type":"bool"}],"name":"PatternGuessed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"player","type":"address"},{"indexed":false,"internalType":"uint8","name":"round","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"score","type":"uint256"}],"name":"RoundCompleted","type":"event"},{"inputs":[],"name":"MAX_ROUNDS","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NUM_COLORS","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"POINTS_PER_ROUND","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"STARTING_LIVES","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"STARTING_PATTERN_LENGTH","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TIME_BONUS_MULTIPLIER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TIME_BONUS_THRESHOLD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"forfeitGame","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"gameSessions","outputs":[{"internalType":"bool","name":"isComplete","type":"bool"},{"internalType":"uint256","name":"startTime","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentPattern","outputs":[{"internalType":"uint8[]","name":"","type":"uint8[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLeaderboard","outputs":[{"internalType":"address[]","name":"","type":"address[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"playerAddr","type":"address"}],"name":"getPlayerStats","outputs":[{"internalType":"uint8","name":"currentRound","type":"uint8"},{"internalType":"uint8","name":"livesRemaining","type":"uint8"},{"internalType":"uint256","name":"score","type":"uint256"},{"internalType":"uint256","name":"bestRound","type":"uint256"},{"internalType":"uint256","name":"totalGamesPlayed","type":"uint256"},{"internalType":"bool","name":"isActive","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"count","type":"uint256"}],"name":"getTopPlayers","outputs":[{"internalType":"address[]","name":"","type":"address[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"leaderboard","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"leaderboardIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"players","outputs":[{"internalType":"uint8","name":"currentRound","type":"uint8"},{"internalType":"uint8","name":"livesRemaining","type":"uint8"},{"internalType":"uint256","name":"score","type":"uint256"},{"internalType":"uint256","name":"bestRound","type":"uint256"},{"internalType":"uint256","name":"totalGamesPlayed","type":"uint256"},{"internalType":"bool","name":"isActive","type":"bool"},{"internalType":"uint256","name":"roundStartTime","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startGame","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8[]","name":"guess","type":"uint8[]"}],"name":"submitGuess","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
0x6080806040523460155761187b908161001a8239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c90816326a0308f14610bd65750806331c79f1114610bbb57806334bf52201461016b5780633b55555414610b7f57806341d3558214610b645780634fd66eae14610aa057806363f6f2d0146105395780636662a779146104ec578063693ccff9146104705780636d763a6e146103945780637249db4d146103795780637780ea1a1461035f578063951bd12914610344578063ba3c00671461026d578063bf3683991461022b578063d65ab5f214610170578063dc028bd01461016b5763e2eb41ff146100e2575f80fd5b34610167576020366003190112610167576004356001600160a01b03811690819003610167575f525f60205260e060405f208054906001810154906002810154600382015490600560ff6004850154169301549360ff60405196818116885260081c166020870152604086015260608501526080840152151560a083015260c0820152f35b5f80fd5b610bef565b34610167575f36600319011261016757335f908152602081905260408120805461ffff191661030117815560018082019290925560048101805460ff191690921790915560030180545f1981146102175760010190556101ce6115f4565b335f52600160205260405f207f77314433301d1b8c5eba4c09f7713f65f12b19a56e2e1d16ed26b288911e25a8604051602081528061021233946020830190610d46565b0390a2005b634e487b7160e01b5f52601160045260245ffd5b346101675760203660031901126101675760043560025481101561016757610254602091610c85565b905460405160039290921b1c6001600160a01b03168152f35b34610167576020366003190112610167576002546004358181111561033d57505b610297816112d7565b6102a46040519182610ce3565b818152601f196102b3836112d7565b013660208301376102c3826112ef565b915f5b8181106102e25750506102de60405192839283610c0a565b0390f35b806102ee600192610c85565b838060a01b0391549060031b1c166103068286611321565b5261031081610c85565b838060a01b0391549060031b1c165f525f602052600260405f2001546103368287611321565b52016102c6565b905061028e565b34610167575f36600319011261016757602060405160648152f35b34610167575f3660031901126101675761037761138d565b005b34610167575f36600319011261016757602060405160048152f35b34610167575f366003190112610167576002546103b0816112ef565b905f5b8181106104375750602090604051809281838593520160025f527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace925f5b81811061041557505061040692500382610ce3565b6102de60405192839283610c0a565b84546001600160a01b03168352600194850194869450602090930192016103f1565b80610443600192610c85565b838060a01b0391549060031b1c165f525f602052600260405f2001546104698286611321565b52016103b3565b34610167575f36600319011261016757335f52600160205261049e6104a560405f2060405192838092610d46565b0382610ce3565b6040518091602082016020835281518091526020604084019201905f5b8181106104d0575050500390f35b825160ff168452859450602093840193909201916001016104c2565b34610167576020366003190112610167576004356001600160a01b03811690819003610167575f5260016020526040805f20600260ff600183015416910154825191151582526020820152f35b346101675760203660031901126101675760043567ffffffffffffffff811161016757366023820112156101675780600401359067ffffffffffffffff8211610167576024810190602436918460051b01011161016757335f525f60205260405f20335f52600160205260ff6105bd6105b88260405f20945416610d05565b610d16565b168303610a91575f5b838110610a5c575061049e6105e46105eb9260405192838092610d46565b8383611335565b9160405190806040830160408452526060820192905f905b808210610a37575050507f1012be3ef0102674ab9858a4ef5edaff92f163131ea9f0612dc101db7894f1e29083151560208201528033930390a2156109c457335f525f60205260405f2060646005820154420342811161021757600a10156109bc575b60018201805490828201809211610217575560ff825416906040519082825260208201527f169624da02c064c9ac6a7550c8c3dc17a752e1aa0901d973ce7376356ab7413560403392a26063811061099c575050335f525f60205260405f2060ff8154166002820180548211610736575b50508060046001920160ff198154169055335f52816020528160405f20018260ff198254161790550154604051908152600160208201527f77933355c8068f8af7dd0b53182eebd0e8c7610d373d4cb7590dd5f8819c67bc60403392a2005b55335f52600360205260405f2054158061096f575b610906575b335f52600360205260405f20545f198101908111610217575b80158015806108a8575b156108615761078182610c85565b90545f198401939160031b1c6001600160a01b0316818411610217576107f5906107ec6107ad86610c85565b905460039190911b1c6001600160a01b03166107c885610c85565b81546001600160a01b0393841660039290921b91821b9390911b1916919091179055565b6107c885610c85565b600181018082116102175761080982610c85565b60018060a01b0391549060031b1c165f52600360205260405f205561082d83610c85565b60018060a01b0391549060031b1c165f52600360205260405f20551561076957634e487b7160e01b5f52601160045260245ffd5b5050600190335f525f602052600260405f2001546040519081527f24e225604268d6416871b32db1be8e49f497caf8360393b31d71a34a4ce2669360203392a290826106d7565b506108b282610c85565b60018060a01b0391549060031b1c165f525f602052600260405f2001545f198301838111610217576108e390610c85565b60018060a01b0391549060031b1c165f525f602052600260405f20015410610773565b600254600160401b81101561095b576109288160016109469301600255610c85565b81546001600160a01b0360039290921b91821b19163390911b179055565b600254335f52600360205260405f2055610750565b634e487b7160e01b5f52604160045260245ffd5b50600254158061074b5750610982610cb1565b905460039190911b1c6001600160a01b031633141561074b565b60ff811461021757600160ff91011660ff198254161790556101ce6115f4565b5060c8610666565b335f525f60205260405f2060ff815460081c169081156102175760ff9161ff008254915f190160081b169061ff0019161781555460081c166040518181527fd948b7282d54ef44bf4fb0b1d38f0626adb9b838dd1bdc33c53a117a7f03b53060203392a215610a2f57005b61037761138d565b90919384359060ff821680920361016757602081600193829352019501920190610603565b600460ff610a73610a6e848888610d28565b610d38565b161015610a82576001016105c6565b6387796d3960e01b5f5260045ffd5b63f244a36d60e01b5f5260045ffd5b34610167576020366003190112610167576004356001600160a01b03811690819003610167575f525f60205260405f2060405160e081019181831067ffffffffffffffff84111761095b5760c09260405280549160ff8084169384835260081c16806020830152600183015480604084015260028401549182606085015260038501549384608082015287600560ff6004890154161515978860a08501520154910152604051958652602086015260408501526060840152608083015260a0820152f35b34610167575f36600319011261016757602060405160638152f35b34610167576020366003190112610167576004356001600160a01b03811690819003610167575f526003602052602060405f2054604051908152f35b34610167575f36600319011261016757602060405160028152f35b34610167575f3660031901126101675780600a60209252f35b34610167575f36600319011261016757602060405160038152f35b604081016040825282518091526020606083019301905f5b818110610c66575050506020818303910152602080835192838152019201905f5b818110610c505750505090565b8251845260209384019390920191600101610c43565b82516001600160a01b0316855260209485019490920191600101610c22565b600254811015610c9d5760025f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b60025415610c9d5760025f9081527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace91565b90601f8019910116810190811067ffffffffffffffff82111761095b57604052565b60ff166003019060ff821161021757565b60ff5f199116019060ff821161021757565b9190811015610c9d5760051b0190565b3560ff811681036101675790565b80548083525f91825260208083209301925b81601f840110611135575491818110611121575b81811061110a575b8181106110f3575b8181106110dc575b8181106110c6575b8181106110af575b818110611098575b818110611081575b81811061106a575b818110611053575b81811061103c575b818110611025575b81811061100e575b818110610ff7575b818110610fe0575b818110610fc9575b818110610fb2575b818110610f9b575b818110610f84575b818110610f6d575b818110610f56575b818110610f3f575b818110610f28575b818110610f11575b818110610efa575b818110610ee3575b818110610ecc575b818110610eb5575b818110610e9e575b818110610e87575b818110610e70575b10610e65575090565b60f81c815260200190565b92602060019160ff8560f01c168152019301610e5c565b92602060019160ff8560e81c168152019301610e54565b92602060019160ff8560e01c168152019301610e4c565b92602060019160ff8560d81c168152019301610e44565b92602060019160ff8560d01c168152019301610e3c565b92602060019160ff8560c81c168152019301610e34565b92602060019160ff8560c01c168152019301610e2c565b92602060019160ff8560b81c168152019301610e24565b92602060019160ff8560b01c168152019301610e1c565b92602060019160ff8560a81c168152019301610e14565b92602060019160ff8560a01c168152019301610e0c565b92602060019160ff8560981c168152019301610e04565b92602060019160ff8560901c168152019301610dfc565b92602060019160ff8560881c168152019301610df4565b92602060019160ff8560801c168152019301610dec565b92602060019160ff8560781c168152019301610de4565b92602060019160ff8560701c168152019301610ddc565b92602060019160ff8560681c168152019301610dd4565b92602060019160ff8560601c168152019301610dcc565b92602060019160ff8560581c168152019301610dc4565b92602060019160ff8560501c168152019301610dbc565b92602060019160ff8560481c168152019301610db4565b92602060019160ff8560401c168152019301610dac565b92602060019160ff8560381c168152019301610da4565b92602060019160ff8560301c168152019301610d9c565b92602060019160ff8560281c168152019301610d94565b92602060019160ff85831c168152019301610d8c565b92602060019160ff8560181c168152019301610d84565b92602060019160ff8560101c168152019301610d7c565b92602060019160ff8560081c168152019301610d74565b92602060019160ff85168152019301610d6c565b926001610400602092865460ff8116825260ff8160081c168583015260ff8160101c16604083015260ff8160181c16606083015260ff81861c16608083015260ff8160281c1660a083015260ff8160301c1660c083015260ff8160381c1660e083015260ff8160401c1661010083015260ff8160481c1661012083015260ff8160501c1661014083015260ff8160581c1661016083015260ff8160601c1661018083015260ff8160681c166101a083015260ff8160701c166101c083015260ff8160781c166101e083015260ff8160801c1661020083015260ff8160881c1661022083015260ff8160901c1661024083015260ff8160981c1661026083015260ff8160a01c1661028083015260ff8160a81c166102a083015260ff8160b01c166102c083015260ff8160b81c166102e083015260ff8160c01c1661030083015260ff8160c81c1661032083015260ff8160d01c1661034083015260ff8160d81c1661036083015260ff8160e01c1661038083015260ff8160e81c166103a083015260ff8160f01c166103c083015260f81c6103e0820152019401920191610d58565b67ffffffffffffffff811161095b5760051b60200190565b906112f9826112d7565b6113066040519182610ce3565b8281528092611317601f19916112d7565b0190602036910137565b8051821015610c9d5760209160051b010190565b91909181518303611386575f5b8381106113525750505050600190565b611360610a6e828685610d28565b60ff8061136d8487611321565b511691160361137e57600101611342565b505050505f90565b5050505f90565b335f525f60205260405f2060ff8154166002820180548211611408575b50508060046001920160ff198154169055335f52816020528160405f20018260ff1982541617905501546040519081525f60208201527f77933355c8068f8af7dd0b53182eebd0e8c7610d373d4cb7590dd5f8819c67bc60403392a2565b55335f52600360205260405f205415806115c7575b611590575b335f52600360205260405f20545f198101908111610217575b8015801580611532575b156114eb5761145382610c85565b90545f198401939160031b1c6001600160a01b03168184116102175761147f906107ec6107ad86610c85565b600181018082116102175761149382610c85565b60018060a01b0391549060031b1c165f52600360205260405f20556114b783610c85565b60018060a01b0391549060031b1c165f52600360205260405f20551561143b57634e487b7160e01b5f52601160045260245ffd5b5050600190335f525f602052600260405f2001546040519081527f24e225604268d6416871b32db1be8e49f497caf8360393b31d71a34a4ce2669360203392a2905f6113aa565b5061153c82610c85565b60018060a01b0391549060031b1c165f525f602052600260405f2001545f1983018381116102175761156d90610c85565b60018060a01b0391549060031b1c165f525f602052600260405f20015410611445565b600254600160401b81101561095b576109288160016115b29301600255610c85565b600254335f52600360205260405f2055611422565b50600254158061141d57506115da610cb1565b905460039190911b1c6001600160a01b031633141561141d565b335f525f60205260405f20335f52600160205260405f2060ff61161c6105b882855416610d05565b1690611627826112d7565b6116346040519182610ce3565b828152611640836112d7565b602082019190601f1901368337519067ffffffffffffffff821161095b57600160401b821161095b5782548284558083106117ee575b5090825f5260205f208160051c915f5b8381106117af5750601f198116900380611765575b50505050825460405160208101914283524460408301523360601b606083015260ff60f81b9060f81b166074820152605581526116d9607582610ce3565b5190205f5b8360ff8216106116f45750505050600542910155565b6003604051602081019084825260ff60f81b8460f81b1660408201526021815261171f604182610ce3565b519020168354821015610c9d5760ff91600191855f5261175c60205f208360051c0191601f841683549060ff809160031b9316831b921b19161790565b905501166116de565b925f935f5b81811061177f5750505001555f80808061169b565b90919460206117a56001928460ff8a5116919060ff809160031b9316831b921b19161790565b960192910161176a565b5f805b602081106117c7575083820155600101611686565b865190969160019160209160ff60038b901b81811b199092169216901b17920196016117b2565b835f5260205f20601f80850160051c8201920160051c0190601f84168061182a575b505b81811061181f5750611676565b5f8155600101611812565b5f198201908154905f199060200360031b1c1690555f61181056fea2646970667358221220acf548bff531195086269c8e8a5b07002b4ebca7a1222eca52075fd4c917a89164736f6c634300081a0033
Deployed Bytecode
0x6080806040526004361015610012575f80fd5b5f3560e01c90816326a0308f14610bd65750806331c79f1114610bbb57806334bf52201461016b5780633b55555414610b7f57806341d3558214610b645780634fd66eae14610aa057806363f6f2d0146105395780636662a779146104ec578063693ccff9146104705780636d763a6e146103945780637249db4d146103795780637780ea1a1461035f578063951bd12914610344578063ba3c00671461026d578063bf3683991461022b578063d65ab5f214610170578063dc028bd01461016b5763e2eb41ff146100e2575f80fd5b34610167576020366003190112610167576004356001600160a01b03811690819003610167575f525f60205260e060405f208054906001810154906002810154600382015490600560ff6004850154169301549360ff60405196818116885260081c166020870152604086015260608501526080840152151560a083015260c0820152f35b5f80fd5b610bef565b34610167575f36600319011261016757335f908152602081905260408120805461ffff191661030117815560018082019290925560048101805460ff191690921790915560030180545f1981146102175760010190556101ce6115f4565b335f52600160205260405f207f77314433301d1b8c5eba4c09f7713f65f12b19a56e2e1d16ed26b288911e25a8604051602081528061021233946020830190610d46565b0390a2005b634e487b7160e01b5f52601160045260245ffd5b346101675760203660031901126101675760043560025481101561016757610254602091610c85565b905460405160039290921b1c6001600160a01b03168152f35b34610167576020366003190112610167576002546004358181111561033d57505b610297816112d7565b6102a46040519182610ce3565b818152601f196102b3836112d7565b013660208301376102c3826112ef565b915f5b8181106102e25750506102de60405192839283610c0a565b0390f35b806102ee600192610c85565b838060a01b0391549060031b1c166103068286611321565b5261031081610c85565b838060a01b0391549060031b1c165f525f602052600260405f2001546103368287611321565b52016102c6565b905061028e565b34610167575f36600319011261016757602060405160648152f35b34610167575f3660031901126101675761037761138d565b005b34610167575f36600319011261016757602060405160048152f35b34610167575f366003190112610167576002546103b0816112ef565b905f5b8181106104375750602090604051809281838593520160025f527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace925f5b81811061041557505061040692500382610ce3565b6102de60405192839283610c0a565b84546001600160a01b03168352600194850194869450602090930192016103f1565b80610443600192610c85565b838060a01b0391549060031b1c165f525f602052600260405f2001546104698286611321565b52016103b3565b34610167575f36600319011261016757335f52600160205261049e6104a560405f2060405192838092610d46565b0382610ce3565b6040518091602082016020835281518091526020604084019201905f5b8181106104d0575050500390f35b825160ff168452859450602093840193909201916001016104c2565b34610167576020366003190112610167576004356001600160a01b03811690819003610167575f5260016020526040805f20600260ff600183015416910154825191151582526020820152f35b346101675760203660031901126101675760043567ffffffffffffffff811161016757366023820112156101675780600401359067ffffffffffffffff8211610167576024810190602436918460051b01011161016757335f525f60205260405f20335f52600160205260ff6105bd6105b88260405f20945416610d05565b610d16565b168303610a91575f5b838110610a5c575061049e6105e46105eb9260405192838092610d46565b8383611335565b9160405190806040830160408452526060820192905f905b808210610a37575050507f1012be3ef0102674ab9858a4ef5edaff92f163131ea9f0612dc101db7894f1e29083151560208201528033930390a2156109c457335f525f60205260405f2060646005820154420342811161021757600a10156109bc575b60018201805490828201809211610217575560ff825416906040519082825260208201527f169624da02c064c9ac6a7550c8c3dc17a752e1aa0901d973ce7376356ab7413560403392a26063811061099c575050335f525f60205260405f2060ff8154166002820180548211610736575b50508060046001920160ff198154169055335f52816020528160405f20018260ff198254161790550154604051908152600160208201527f77933355c8068f8af7dd0b53182eebd0e8c7610d373d4cb7590dd5f8819c67bc60403392a2005b55335f52600360205260405f2054158061096f575b610906575b335f52600360205260405f20545f198101908111610217575b80158015806108a8575b156108615761078182610c85565b90545f198401939160031b1c6001600160a01b0316818411610217576107f5906107ec6107ad86610c85565b905460039190911b1c6001600160a01b03166107c885610c85565b81546001600160a01b0393841660039290921b91821b9390911b1916919091179055565b6107c885610c85565b600181018082116102175761080982610c85565b60018060a01b0391549060031b1c165f52600360205260405f205561082d83610c85565b60018060a01b0391549060031b1c165f52600360205260405f20551561076957634e487b7160e01b5f52601160045260245ffd5b5050600190335f525f602052600260405f2001546040519081527f24e225604268d6416871b32db1be8e49f497caf8360393b31d71a34a4ce2669360203392a290826106d7565b506108b282610c85565b60018060a01b0391549060031b1c165f525f602052600260405f2001545f198301838111610217576108e390610c85565b60018060a01b0391549060031b1c165f525f602052600260405f20015410610773565b600254600160401b81101561095b576109288160016109469301600255610c85565b81546001600160a01b0360039290921b91821b19163390911b179055565b600254335f52600360205260405f2055610750565b634e487b7160e01b5f52604160045260245ffd5b50600254158061074b5750610982610cb1565b905460039190911b1c6001600160a01b031633141561074b565b60ff811461021757600160ff91011660ff198254161790556101ce6115f4565b5060c8610666565b335f525f60205260405f2060ff815460081c169081156102175760ff9161ff008254915f190160081b169061ff0019161781555460081c166040518181527fd948b7282d54ef44bf4fb0b1d38f0626adb9b838dd1bdc33c53a117a7f03b53060203392a215610a2f57005b61037761138d565b90919384359060ff821680920361016757602081600193829352019501920190610603565b600460ff610a73610a6e848888610d28565b610d38565b161015610a82576001016105c6565b6387796d3960e01b5f5260045ffd5b63f244a36d60e01b5f5260045ffd5b34610167576020366003190112610167576004356001600160a01b03811690819003610167575f525f60205260405f2060405160e081019181831067ffffffffffffffff84111761095b5760c09260405280549160ff8084169384835260081c16806020830152600183015480604084015260028401549182606085015260038501549384608082015287600560ff6004890154161515978860a08501520154910152604051958652602086015260408501526060840152608083015260a0820152f35b34610167575f36600319011261016757602060405160638152f35b34610167576020366003190112610167576004356001600160a01b03811690819003610167575f526003602052602060405f2054604051908152f35b34610167575f36600319011261016757602060405160028152f35b34610167575f3660031901126101675780600a60209252f35b34610167575f36600319011261016757602060405160038152f35b604081016040825282518091526020606083019301905f5b818110610c66575050506020818303910152602080835192838152019201905f5b818110610c505750505090565b8251845260209384019390920191600101610c43565b82516001600160a01b0316855260209485019490920191600101610c22565b600254811015610c9d5760025f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b60025415610c9d5760025f9081527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace91565b90601f8019910116810190811067ffffffffffffffff82111761095b57604052565b60ff166003019060ff821161021757565b60ff5f199116019060ff821161021757565b9190811015610c9d5760051b0190565b3560ff811681036101675790565b80548083525f91825260208083209301925b81601f840110611135575491818110611121575b81811061110a575b8181106110f3575b8181106110dc575b8181106110c6575b8181106110af575b818110611098575b818110611081575b81811061106a575b818110611053575b81811061103c575b818110611025575b81811061100e575b818110610ff7575b818110610fe0575b818110610fc9575b818110610fb2575b818110610f9b575b818110610f84575b818110610f6d575b818110610f56575b818110610f3f575b818110610f28575b818110610f11575b818110610efa575b818110610ee3575b818110610ecc575b818110610eb5575b818110610e9e575b818110610e87575b818110610e70575b10610e65575090565b60f81c815260200190565b92602060019160ff8560f01c168152019301610e5c565b92602060019160ff8560e81c168152019301610e54565b92602060019160ff8560e01c168152019301610e4c565b92602060019160ff8560d81c168152019301610e44565b92602060019160ff8560d01c168152019301610e3c565b92602060019160ff8560c81c168152019301610e34565b92602060019160ff8560c01c168152019301610e2c565b92602060019160ff8560b81c168152019301610e24565b92602060019160ff8560b01c168152019301610e1c565b92602060019160ff8560a81c168152019301610e14565b92602060019160ff8560a01c168152019301610e0c565b92602060019160ff8560981c168152019301610e04565b92602060019160ff8560901c168152019301610dfc565b92602060019160ff8560881c168152019301610df4565b92602060019160ff8560801c168152019301610dec565b92602060019160ff8560781c168152019301610de4565b92602060019160ff8560701c168152019301610ddc565b92602060019160ff8560681c168152019301610dd4565b92602060019160ff8560601c168152019301610dcc565b92602060019160ff8560581c168152019301610dc4565b92602060019160ff8560501c168152019301610dbc565b92602060019160ff8560481c168152019301610db4565b92602060019160ff8560401c168152019301610dac565b92602060019160ff8560381c168152019301610da4565b92602060019160ff8560301c168152019301610d9c565b92602060019160ff8560281c168152019301610d94565b92602060019160ff85831c168152019301610d8c565b92602060019160ff8560181c168152019301610d84565b92602060019160ff8560101c168152019301610d7c565b92602060019160ff8560081c168152019301610d74565b92602060019160ff85168152019301610d6c565b926001610400602092865460ff8116825260ff8160081c168583015260ff8160101c16604083015260ff8160181c16606083015260ff81861c16608083015260ff8160281c1660a083015260ff8160301c1660c083015260ff8160381c1660e083015260ff8160401c1661010083015260ff8160481c1661012083015260ff8160501c1661014083015260ff8160581c1661016083015260ff8160601c1661018083015260ff8160681c166101a083015260ff8160701c166101c083015260ff8160781c166101e083015260ff8160801c1661020083015260ff8160881c1661022083015260ff8160901c1661024083015260ff8160981c1661026083015260ff8160a01c1661028083015260ff8160a81c166102a083015260ff8160b01c166102c083015260ff8160b81c166102e083015260ff8160c01c1661030083015260ff8160c81c1661032083015260ff8160d01c1661034083015260ff8160d81c1661036083015260ff8160e01c1661038083015260ff8160e81c166103a083015260ff8160f01c166103c083015260f81c6103e0820152019401920191610d58565b67ffffffffffffffff811161095b5760051b60200190565b906112f9826112d7565b6113066040519182610ce3565b8281528092611317601f19916112d7565b0190602036910137565b8051821015610c9d5760209160051b010190565b91909181518303611386575f5b8381106113525750505050600190565b611360610a6e828685610d28565b60ff8061136d8487611321565b511691160361137e57600101611342565b505050505f90565b5050505f90565b335f525f60205260405f2060ff8154166002820180548211611408575b50508060046001920160ff198154169055335f52816020528160405f20018260ff1982541617905501546040519081525f60208201527f77933355c8068f8af7dd0b53182eebd0e8c7610d373d4cb7590dd5f8819c67bc60403392a2565b55335f52600360205260405f205415806115c7575b611590575b335f52600360205260405f20545f198101908111610217575b8015801580611532575b156114eb5761145382610c85565b90545f198401939160031b1c6001600160a01b03168184116102175761147f906107ec6107ad86610c85565b600181018082116102175761149382610c85565b60018060a01b0391549060031b1c165f52600360205260405f20556114b783610c85565b60018060a01b0391549060031b1c165f52600360205260405f20551561143b57634e487b7160e01b5f52601160045260245ffd5b5050600190335f525f602052600260405f2001546040519081527f24e225604268d6416871b32db1be8e49f497caf8360393b31d71a34a4ce2669360203392a2905f6113aa565b5061153c82610c85565b60018060a01b0391549060031b1c165f525f602052600260405f2001545f1983018381116102175761156d90610c85565b60018060a01b0391549060031b1c165f525f602052600260405f20015410611445565b600254600160401b81101561095b576109288160016115b29301600255610c85565b600254335f52600360205260405f2055611422565b50600254158061141d57506115da610cb1565b905460039190911b1c6001600160a01b031633141561141d565b335f525f60205260405f20335f52600160205260405f2060ff61161c6105b882855416610d05565b1690611627826112d7565b6116346040519182610ce3565b828152611640836112d7565b602082019190601f1901368337519067ffffffffffffffff821161095b57600160401b821161095b5782548284558083106117ee575b5090825f5260205f208160051c915f5b8381106117af5750601f198116900380611765575b50505050825460405160208101914283524460408301523360601b606083015260ff60f81b9060f81b166074820152605581526116d9607582610ce3565b5190205f5b8360ff8216106116f45750505050600542910155565b6003604051602081019084825260ff60f81b8460f81b1660408201526021815261171f604182610ce3565b519020168354821015610c9d5760ff91600191855f5261175c60205f208360051c0191601f841683549060ff809160031b9316831b921b19161790565b905501166116de565b925f935f5b81811061177f5750505001555f80808061169b565b90919460206117a56001928460ff8a5116919060ff809160031b9316831b921b19161790565b960192910161176a565b5f805b602081106117c7575083820155600101611686565b865190969160019160209160ff60038b901b81811b199092169216901b17920196016117b2565b835f5260205f20601f80850160051c8201920160051c0190601f84168061182a575b505b81811061181f5750611676565b5f8155600101611812565b5f198201908154905f199060200360031b1c1690555f61181056fea2646970667358221220acf548bff531195086269c8e8a5b07002b4ebca7a1222eca52075fd4c917a89164736f6c634300081a0033
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.