Contract
0xA1C16E4E538A8ff0c8e7b87A7A75f60AA48C12b7
Source Code
More Info
Private Name Tags
ContractCreator
Funded By
N/A
Latest 25 from a total of 1,325 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Claim Prize | 16755558 | 1088 days ago | IN | 0 ETH | 0.00375924 | ||||
| Claim Prize | 16755555 | 1088 days ago | IN | 0 ETH | 0.00347376 | ||||
| Claim Prize | 16755523 | 1088 days ago | IN | 0 ETH | 0.00347376 | ||||
| Claim Prize | 16755512 | 1088 days ago | IN | 0 ETH | 0.00347376 | ||||
| Claim Prize | 16755502 | 1088 days ago | IN | 0 ETH | 0.00357376 | ||||
| Kill | 16755308 | 1088 days ago | IN | 0 ETH | 0.00536275 | ||||
| Claim Tokens | 16745278 | 1089 days ago | IN | 0 ETH | 0.00168503 | ||||
| Attack Player | 15163035 | 1317 days ago | IN | 0.001 ETH | 0.00059327 | ||||
| Kill | 14430134 | 1436 days ago | IN | 0 ETH | 0.00342111 | ||||
| Kill | 14049508 | 1495 days ago | IN | 0 ETH | 0.01637104 | ||||
| Kill | 14049508 | 1495 days ago | IN | 0 ETH | 0.01320531 | ||||
| Kill | 14049460 | 1495 days ago | IN | 0 ETH | 0.01513301 | ||||
| Kill | 14049458 | 1495 days ago | IN | 0 ETH | 0.01525736 | ||||
| Buy Power Up | 13876755 | 1521 days ago | IN | 0 ETH | 0.00446146 | ||||
| Attack Player | 13876752 | 1521 days ago | IN | 0.1 ETH | 0.0040681 | ||||
| Buy Power Up | 13876750 | 1521 days ago | IN | 0 ETH | 0.00454478 | ||||
| Buy Power Up | 13876744 | 1521 days ago | IN | 0 ETH | 0.00452805 | ||||
| Claim Tokens | 13695919 | 1550 days ago | IN | 0 ETH | 0.00371287 | ||||
| Buy Power Up | 13491045 | 1582 days ago | IN | 0 ETH | 0.00661099 | ||||
| Claim Tokens | 13491035 | 1582 days ago | IN | 0 ETH | 0.00686661 | ||||
| Register | 13449015 | 1589 days ago | IN | 0 ETH | 0.00631225 | ||||
| Kill | 13428346 | 1592 days ago | IN | 0 ETH | 0.00233687 | ||||
| Register | 13302779 | 1612 days ago | IN | 0 ETH | 0.00104306 | ||||
| Buy Power Up | 13302643 | 1612 days ago | IN | 0 ETH | 0.00430803 | ||||
| Claim Tokens | 13302606 | 1612 days ago | IN | 0 ETH | 0.00371542 |
Latest 11 internal transactions
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 16755558 | 1088 days ago | 8.8408 ETH | ||||
| Transfer | 16755558 | 1088 days ago | 1.1051 ETH | ||||
| Transfer | 16755558 | 1088 days ago | 1.1051 ETH | ||||
| Transfer | 16755555 | 1088 days ago | 1.1051 ETH | ||||
| Transfer | 16755555 | 1088 days ago | 1.1051 ETH | ||||
| Transfer | 16755523 | 1088 days ago | 1.1051 ETH | ||||
| Transfer | 16755523 | 1088 days ago | 1.1051 ETH | ||||
| Transfer | 16755512 | 1088 days ago | 1.1051 ETH | ||||
| Transfer | 16755512 | 1088 days ago | 1.1051 ETH | ||||
| Transfer | 16755502 | 1088 days ago | 1.1051 ETH | ||||
| Transfer | 16755502 | 1088 days ago | 1.1051 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Self Destruct called at Txn Hash 0xbb9c7d0773fd5a09edbc14be2d293740e1ff78387fb2d20b44e9993db95640cf
Contract Name:
Game
Compiler Version
v0.8.0+commit.c7dfd78e
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
pragma solidity ^0.8.0;
/*
.-"-. .-"-. .-"-. .-"-.
_/_-.-_\_ _/.-.-.\_ _/.-.-.\_ _/.-.-.\_
/ __} {__ \ /|( o o )|\ ( ( o o ) ) ( ( o o ) )
/ // " \\ \ | // " \\ | |/ " \| |/ " \|
/ / \'---'/ \ \ / / \'---'/ \ \ \'/^\'/ \ .-. /
\ \_/`"""`\_/ / \ \_/`"""`\_/ / /`\ /`\ /`"""`\
\ / \ / / /|\ \ / \
-={ see no evil }={ hear no evil }={ speak no evil }={ have no fun }=-
*/
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/security/ReentrancyGuard.sol";
import "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
import "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol";
import "@openzeppelin/contracts/token/ERC721/IERC721.sol";
import "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol";
import "@openzeppelin/contracts/token/ERC1155/IERC1155.sol";
// Interface for our erc20 token
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address tokenOwner)
external
view
returns (uint256 balance);
function allowance(address tokenOwner, address spender)
external
view
returns (uint256 remaining);
function transfer(address to, uint256 tokens)
external
returns (bool success);
function approve(address spender, uint256 tokens)
external
returns (bool success);
function transferFrom(
address from,
address to,
uint256 tokens
) external returns (bool success);
function mint(address to, uint256 amount) external;
function burn(uint256 amount) external;
function burnFrom(address account, uint256 amount) external;
}
contract Game is Ownable, IERC721Receiver, IERC1155Receiver, ReentrancyGuard {
address payable public daves =
payable(address(0x4B5922ABf25858d012d12bb1184e5d3d0B6D6BE4));
address payable public dao =
payable(address(0x6fBa46974b2b1bEfefA034e236A32e1f10C5A148));
using EnumerableSet for EnumerableSet.UintSet;
mapping(address => EnumerableSet.UintSet) private _player;
uint256 public playerId = 1;
uint256 public playersAlive = 0;
bool public gameEnded;
mapping(uint256 => uint256) public timeWenDed; //time player is going to die
mapping(uint256 => uint256) public timeWenBorn; //time player is going to die
mapping(uint256 => uint256) public attackTodDecrease; //time to decrease from current tod
mapping(uint256 => uint256) public attackPrice;
mapping(uint256 => uint256) public attackGives;
mapping(address => uint256) public tokensToClaim; //keep track of how many tokens a user can claim to save gas
mapping(address => uint256) public lastTimeClaimed; //when was last claimed
uint256 public longestLiving;
uint256 public longestLivingId;
address public longestLivingOwner;
uint256 public tokenBurnt;
uint256 public timeStarted;
IERC20 public TOKEN;
IERC20 public MUSE;
struct Player {
address nft;
uint256 nftId;
address owner;
bool isErc1155;
}
mapping(uint256 => Player) players;
event ClaimedRewards(address who, uint256 amount);
event NewPlayer(address who, uint256 id);
event Kill(address killer, uint256 opponentId);
event Attak(address who, uint256 opponentId, uint256 attackId);
event BuyPowerUp(uint256 to, uint256 amount);
constructor(address _token, address _muse) {
TOKEN = IERC20(_token);
MUSE = IERC20(_muse);
gameEnded = false;
timeStarted = block.timestamp;
}
modifier isOwner(uint256 _playerId) {
Player memory player = players[_playerId];
require(player.owner == msg.sender, "!forbidden");
_;
}
// Helpers to get pets by users
function balanceOf(address _owner) public view returns (uint256) {
return _player[_owner].length();
}
function playersOfAddressByIndex(address _owner, uint256 index)
public
view
returns (uint256)
{
return _player[_owner].at(index);
}
// time remaining for death
function timeUntilDeath(uint256 _playerId) public view returns (uint256) {
if (block.timestamp >= timeWenDed[_playerId]) {
return 0;
} else {
return timeWenDed[_playerId] - block.timestamp;
}
}
// score goes up every second basically
function getScore(uint256 _id) public view returns (uint256) {
return block.timestamp - timeWenBorn[_id];
}
function getEarnings(address _user) public view returns (uint256) {
uint256 amount = tokensToClaim[_user];
uint256 amtOfPets = balanceOf(_user);
uint256 sinceLastTimeClaimed =
((block.timestamp - lastTimeClaimed[_user]) / 1 minutes) *
4791666666666667 * // 0,2875 tokens per hour. 6.9 tokens per day.
amtOfPets;
return amount + sinceLastTimeClaimed;
}
// check if pet alive
function isAlive(uint256 _playerId) public view returns (bool) {
return timeUntilDeath(_playerId) > 0;
}
function getInfo(uint256 _id)
public
view
returns (
uint256 _playerId,
bool _isAlive,
uint256 _score,
uint256 _expectedReward,
uint256 _timeUntilDeath,
uint256 _timeBorn,
address _owner,
address _nftOrigin,
uint256 _nftId,
uint256 _timeOfDeath
)
{
Player memory player = players[_id];
_playerId = _id;
_isAlive = isAlive(_id);
_score = getScore(_id);
_expectedReward = getEarnings(player.owner);
_timeUntilDeath = timeUntilDeath(_id);
_timeBorn = timeWenBorn[_id];
_owner = player.owner;
_nftOrigin = player.nft;
_nftId = player.nftId;
_timeOfDeath = timeWenDed[_id];
}
/*
This functions returns the amount of TOD in minutes added for x token burned depending on the curve
https://www.desmos.com/calculator/g6wvwk85id
*/
function getAmountOfTOD(uint256 _tokenAmount)
public
view
returns (uint256)
{
uint256 price_per_token =
(10000000000) / sqrt(((tokenBurnt / (10**12)) + 800000000) / 200);
uint256 result = (_tokenAmount * price_per_token);
result = ((result * 1 hours) / 10**24);
return result;
}
function register(
address _nft,
uint256 _nftId,
bool _is1155
) external nonReentrant {
require(!gameEnded, "ended");
claimTokens(); //we claim any owned tokens before
// Maybe block registration after a few days? or make price increase for later regstration?
if (!_is1155) {
IERC721(_nft).safeTransferFrom(msg.sender, address(this), _nftId);
} else {
IERC1155(_nft).safeTransferFrom(
msg.sender,
address(this),
_nftId,
1,
"0x0"
);
}
Player storage player = players[playerId];
player.nft = _nft;
player.owner = msg.sender;
player.nftId = _nftId;
player.isErc1155 = _is1155;
_player[msg.sender].add(playerId);
timeWenDed[playerId] = block.timestamp + 3 days;
timeWenBorn[playerId] = block.timestamp;
TOKEN.burnFrom(msg.sender, 90 * 1 ether); //burn 40 royal to join and get 3 days.
emit NewPlayer(msg.sender, playerId);
playersAlive++;
playerId++;
}
function buyPowerUp(uint256 _id, uint256 _amount) public {
require(isAlive(_id), "!alive");
require(_amount >= 1 * 10**17); //min 0.1 token
TOKEN.burnFrom(msg.sender, _amount);
timeWenDed[_id] += getAmountOfTOD(_amount);
tokenBurnt += _amount;
emit BuyPowerUp(_id, _amount);
}
function attackPlayer(uint256 _opponent, uint256 _attackId)
external
payable
{
require(isAlive(_opponent), "!alive");
require(msg.value >= attackPrice[_attackId], "!money");
require(balanceOf(msg.sender) >= 1 || playersAlive == 1, "!pets");
uint256 timeToDecrease = attackTodDecrease[_attackId];
//can't kil someone with attacks + leave 8 hours to sleep, etc
require(timeUntilDeath(_opponent) > timeToDecrease + 6 hours, "!kill");
tokensToClaim[msg.sender] += attackGives[_attackId];
timeWenDed[_opponent] -= timeToDecrease;
emit Attak(msg.sender, _opponent, _attackId);
}
// user can claim tokens earned at any time and reset his tokens to 0
function claimTokens() public {
if (lastTimeClaimed[msg.sender] == 0) {
lastTimeClaimed[msg.sender] = block.timestamp;
}
uint256 amount = getEarnings(msg.sender);
tokensToClaim[msg.sender] = 0;
lastTimeClaimed[msg.sender] = block.timestamp;
if (amount > 0) TOKEN.mint(msg.sender, amount);
emit ClaimedRewards(msg.sender, amount);
}
function kill(uint256 _opponentId) public nonReentrant {
require(balanceOf(msg.sender) >= 1 || playersAlive <= 5, "!pets");
require(!isAlive(_opponentId), "alive");
Player memory oppoonent = players[_opponentId];
emit Kill(msg.sender, _opponentId);
if (!oppoonent.isErc1155) {
IERC721(oppoonent.nft).safeTransferFrom(
address(this),
oppoonent.owner,
oppoonent.nftId
);
} else {
IERC1155(oppoonent.nft).safeTransferFrom(
address(this),
oppoonent.owner,
oppoonent.nftId,
1,
"0x0"
);
}
// total time lived
uint256 timeLived = block.timestamp - timeWenBorn[_opponentId];
// we record longest living user to know who wins at the end.
if (timeLived > longestLiving) {
longestLiving = timeLived;
longestLivingId = _opponentId;
longestLivingOwner = oppoonent.owner;
}
// we remove this player
_player[oppoonent.owner].remove(_opponentId);
delete players[_opponentId]; //we remove the player struct
// give 10 token for killing.
TOKEN.mint(msg.sender, 50 * 10**18);
playersAlive--;
}
// attack and rug pulls all eth if you hold over 69% of the supply.
function rugPull() public {
require(
TOKEN.balanceOf(msg.sender) >= (TOKEN.totalSupply() * 69) / 100 &&
TOKEN.totalSupply() > 100000 * 10**18 &&
playersAlive >= 15,
"Can't rugpull"
);
address payable playerAddress = payable(msg.sender);
uint256 ethbal = address(this).balance;
uint256 distribution = (ethbal * 10) / 100;
if (MUSE.balanceOf(address(this)) > 0) {
MUSE.transferFrom(
address(this),
msg.sender,
MUSE.balanceOf(address(this))
);
}
daves.transfer(distribution); //10% for daves
dao.transfer(distribution); //10% for dao
playerAddress.transfer(address(this).balance); //don't kill ocntract because players still need to withdraw nfts
}
function claimPrize() public {
require(playersAlive == 0, "game is not finished"); //when no pets the game can end.
gameEnded = true;
// send wins//
address payable playerAddress = payable(longestLivingOwner);
uint256 ethbal = address(this).balance;
uint256 distribution = (ethbal * 10) / 100;
if (MUSE.balanceOf(address(this)) > 0) {
MUSE.transferFrom(
address(this),
longestLivingOwner,
MUSE.balanceOf(address(this))
);
}
daves.transfer(distribution); //10% for daves
dao.transfer(distribution); //10% for dao
selfdestruct(playerAddress); // kill contract and send all remaining balance to winner
}
function startGame(bool start) external onlyOwner {
gameEnded = start;
timeStarted = block.timestamp;
}
function addAttack(
uint256 _id,
uint256 _attack,
uint256 _price,
uint256 _tokensToGive
) external onlyOwner {
attackTodDecrease[_id] = _attack;
attackPrice[_id] = _price;
attackGives[_id] = _tokensToGive;
}
// babylonian method (https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method)
// From UniswapV2 Math library:
// https://github.com/Uniswap/uniswap-v2-core/blob/v1.0.1/contracts/libraries/Math.sol
function sqrt(uint256 y) internal pure returns (uint256 z) {
if (y > 3) {
z = y;
uint256 x = y / 2 + 1;
while (x < z) {
z = x;
x = (y / x + x) / 2;
}
} else if (y != 0) {
z = 1;
}
}
function onERC721Received(
address,
address,
uint256,
bytes memory
) public virtual override returns (bytes4) {
return this.onERC721Received.selector;
}
function onERC1155Received(
address,
address,
uint256,
uint256,
bytes memory
) public virtual override returns (bytes4) {
return this.onERC1155Received.selector;
}
function onERC1155BatchReceived(
address,
address,
uint256[] memory,
uint256[] memory,
bytes memory
) public virtual override returns (bytes4) {
return this.onERC1155BatchReceived.selector;
}
function supportsInterface(bytes4 interfaceId)
external
view
override
returns (bool)
{
return (true);
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "../utils/Context.sol";
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor () {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
_;
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
/**
* @dev Contract module that helps prevent reentrant calls to a function.
*
* Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
* available, which can be applied to functions to make sure there are no nested
* (reentrant) calls to them.
*
* Note that because there is a single `nonReentrant` guard, functions marked as
* `nonReentrant` may not call one another. This can be worked around by making
* those functions `private`, and then adding `external` `nonReentrant` entry
* points to them.
*
* TIP: If you would like to learn more about reentrancy and alternative ways
* to protect against it, check out our blog post
* https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
*/
abstract contract ReentrancyGuard {
// Booleans are more expensive than uint256 or any type that takes up a full
// word because each write operation emits an extra SLOAD to first read the
// slot's contents, replace the bits taken up by the boolean, and then write
// back. This is the compiler's defense against contract upgrades and
// pointer aliasing, and it cannot be disabled.
// The values being non-zero value makes deployment a bit more expensive,
// but in exchange the refund on every call to nonReentrant will be lower in
// amount. Since refunds are capped to a percentage of the total
// transaction's gas, it is best to keep them low in cases like this one, to
// increase the likelihood of the full refund coming into effect.
uint256 private constant _NOT_ENTERED = 1;
uint256 private constant _ENTERED = 2;
uint256 private _status;
constructor () {
_status = _NOT_ENTERED;
}
/**
* @dev Prevents a contract from calling itself, directly or indirectly.
* Calling a `nonReentrant` function from another `nonReentrant`
* function is not supported. It is possible to prevent this from happening
* by making the `nonReentrant` function external, and make it call a
* `private` function that does the actual work.
*/
modifier nonReentrant() {
// On the first call to nonReentrant, _notEntered will be true
require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
// Any calls to nonReentrant after this point will fail
_status = _ENTERED;
_;
// By storing the original value once again, a refund is triggered (see
// https://eips.ethereum.org/EIPS/eip-2200)
_status = _NOT_ENTERED;
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
/**
* @dev Library for managing
* https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive
* types.
*
* Sets have the following properties:
*
* - Elements are added, removed, and checked for existence in constant time
* (O(1)).
* - Elements are enumerated in O(n). No guarantees are made on the ordering.
*
* ```
* contract Example {
* // Add the library methods
* using EnumerableSet for EnumerableSet.AddressSet;
*
* // Declare a set state variable
* EnumerableSet.AddressSet private mySet;
* }
* ```
*
* As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)
* and `uint256` (`UintSet`) are supported.
*/
library EnumerableSet {
// To implement this library for multiple types with as little code
// repetition as possible, we write it in terms of a generic Set type with
// bytes32 values.
// The Set implementation uses private functions, and user-facing
// implementations (such as AddressSet) are just wrappers around the
// underlying Set.
// This means that we can only create new EnumerableSets for types that fit
// in bytes32.
struct Set {
// Storage of set values
bytes32[] _values;
// Position of the value in the `values` array, plus 1 because index 0
// means a value is not in the set.
mapping (bytes32 => uint256) _indexes;
}
/**
* @dev Add a value to a set. O(1).
*
* Returns true if the value was added to the set, that is if it was not
* already present.
*/
function _add(Set storage set, bytes32 value) private returns (bool) {
if (!_contains(set, value)) {
set._values.push(value);
// The value is stored at length-1, but we add 1 to all indexes
// and use 0 as a sentinel value
set._indexes[value] = set._values.length;
return true;
} else {
return false;
}
}
/**
* @dev Removes a value from a set. O(1).
*
* Returns true if the value was removed from the set, that is if it was
* present.
*/
function _remove(Set storage set, bytes32 value) private returns (bool) {
// We read and store the value's index to prevent multiple reads from the same storage slot
uint256 valueIndex = set._indexes[value];
if (valueIndex != 0) { // Equivalent to contains(set, value)
// To delete an element from the _values array in O(1), we swap the element to delete with the last one in
// the array, and then remove the last element (sometimes called as 'swap and pop').
// This modifies the order of the array, as noted in {at}.
uint256 toDeleteIndex = valueIndex - 1;
uint256 lastIndex = set._values.length - 1;
// When the value to delete is the last one, the swap operation is unnecessary. However, since this occurs
// so rarely, we still do the swap anyway to avoid the gas cost of adding an 'if' statement.
bytes32 lastvalue = set._values[lastIndex];
// Move the last value to the index where the value to delete is
set._values[toDeleteIndex] = lastvalue;
// Update the index for the moved value
set._indexes[lastvalue] = toDeleteIndex + 1; // All indexes are 1-based
// Delete the slot where the moved value was stored
set._values.pop();
// Delete the index for the deleted slot
delete set._indexes[value];
return true;
} else {
return false;
}
}
/**
* @dev Returns true if the value is in the set. O(1).
*/
function _contains(Set storage set, bytes32 value) private view returns (bool) {
return set._indexes[value] != 0;
}
/**
* @dev Returns the number of values on the set. O(1).
*/
function _length(Set storage set) private view returns (uint256) {
return set._values.length;
}
/**
* @dev Returns the value stored at position `index` in the set. O(1).
*
* Note that there are no guarantees on the ordering of values inside the
* array, and it may change when more values are added or removed.
*
* Requirements:
*
* - `index` must be strictly less than {length}.
*/
function _at(Set storage set, uint256 index) private view returns (bytes32) {
require(set._values.length > index, "EnumerableSet: index out of bounds");
return set._values[index];
}
// Bytes32Set
struct Bytes32Set {
Set _inner;
}
/**
* @dev Add a value to a set. O(1).
*
* Returns true if the value was added to the set, that is if it was not
* already present.
*/
function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {
return _add(set._inner, value);
}
/**
* @dev Removes a value from a set. O(1).
*
* Returns true if the value was removed from the set, that is if it was
* present.
*/
function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {
return _remove(set._inner, value);
}
/**
* @dev Returns true if the value is in the set. O(1).
*/
function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {
return _contains(set._inner, value);
}
/**
* @dev Returns the number of values in the set. O(1).
*/
function length(Bytes32Set storage set) internal view returns (uint256) {
return _length(set._inner);
}
/**
* @dev Returns the value stored at position `index` in the set. O(1).
*
* Note that there are no guarantees on the ordering of values inside the
* array, and it may change when more values are added or removed.
*
* Requirements:
*
* - `index` must be strictly less than {length}.
*/
function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {
return _at(set._inner, index);
}
// AddressSet
struct AddressSet {
Set _inner;
}
/**
* @dev Add a value to a set. O(1).
*
* Returns true if the value was added to the set, that is if it was not
* already present.
*/
function add(AddressSet storage set, address value) internal returns (bool) {
return _add(set._inner, bytes32(uint256(uint160(value))));
}
/**
* @dev Removes a value from a set. O(1).
*
* Returns true if the value was removed from the set, that is if it was
* present.
*/
function remove(AddressSet storage set, address value) internal returns (bool) {
return _remove(set._inner, bytes32(uint256(uint160(value))));
}
/**
* @dev Returns true if the value is in the set. O(1).
*/
function contains(AddressSet storage set, address value) internal view returns (bool) {
return _contains(set._inner, bytes32(uint256(uint160(value))));
}
/**
* @dev Returns the number of values in the set. O(1).
*/
function length(AddressSet storage set) internal view returns (uint256) {
return _length(set._inner);
}
/**
* @dev Returns the value stored at position `index` in the set. O(1).
*
* Note that there are no guarantees on the ordering of values inside the
* array, and it may change when more values are added or removed.
*
* Requirements:
*
* - `index` must be strictly less than {length}.
*/
function at(AddressSet storage set, uint256 index) internal view returns (address) {
return address(uint160(uint256(_at(set._inner, index))));
}
// UintSet
struct UintSet {
Set _inner;
}
/**
* @dev Add a value to a set. O(1).
*
* Returns true if the value was added to the set, that is if it was not
* already present.
*/
function add(UintSet storage set, uint256 value) internal returns (bool) {
return _add(set._inner, bytes32(value));
}
/**
* @dev Removes a value from a set. O(1).
*
* Returns true if the value was removed from the set, that is if it was
* present.
*/
function remove(UintSet storage set, uint256 value) internal returns (bool) {
return _remove(set._inner, bytes32(value));
}
/**
* @dev Returns true if the value is in the set. O(1).
*/
function contains(UintSet storage set, uint256 value) internal view returns (bool) {
return _contains(set._inner, bytes32(value));
}
/**
* @dev Returns the number of values on the set. O(1).
*/
function length(UintSet storage set) internal view returns (uint256) {
return _length(set._inner);
}
/**
* @dev Returns the value stored at position `index` in the set. O(1).
*
* Note that there are no guarantees on the ordering of values inside the
* array, and it may change when more values are added or removed.
*
* Requirements:
*
* - `index` must be strictly less than {length}.
*/
function at(UintSet storage set, uint256 index) internal view returns (uint256) {
return uint256(_at(set._inner, index));
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
/**
* @title ERC721 token receiver interface
* @dev Interface for any contract that wants to support safeTransfers
* from ERC721 asset contracts.
*/
interface IERC721Receiver {
/**
* @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}
* by `operator` from `from`, this function is called.
*
* It must return its Solidity selector to confirm the token transfer.
* If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.
*
* The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`.
*/
function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data) external returns (bytes4);
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "../../utils/introspection/IERC165.sol";
/**
* @dev Required interface of an ERC721 compliant contract.
*/
interface IERC721 is IERC165 {
/**
* @dev Emitted when `tokenId` token is transferred from `from` to `to`.
*/
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
/**
* @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.
*/
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
/**
* @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.
*/
event ApprovalForAll(address indexed owner, address indexed operator, bool approved);
/**
* @dev Returns the number of tokens in ``owner``'s account.
*/
function balanceOf(address owner) external view returns (uint256 balance);
/**
* @dev Returns the owner of the `tokenId` token.
*
* Requirements:
*
* - `tokenId` must exist.
*/
function ownerOf(uint256 tokenId) external view returns (address owner);
/**
* @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
* are aware of the ERC721 protocol to prevent tokens from being forever locked.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `tokenId` token must exist and be owned by `from`.
* - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.
* - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
*
* Emits a {Transfer} event.
*/
function safeTransferFrom(address from, address to, uint256 tokenId) external;
/**
* @dev Transfers `tokenId` token from `from` to `to`.
*
* WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `tokenId` token must be owned by `from`.
* - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
*
* Emits a {Transfer} event.
*/
function transferFrom(address from, address to, uint256 tokenId) external;
/**
* @dev Gives permission to `to` to transfer `tokenId` token to another account.
* The approval is cleared when the token is transferred.
*
* Only a single account can be approved at a time, so approving the zero address clears previous approvals.
*
* Requirements:
*
* - The caller must own the token or be an approved operator.
* - `tokenId` must exist.
*
* Emits an {Approval} event.
*/
function approve(address to, uint256 tokenId) external;
/**
* @dev Returns the account approved for `tokenId` token.
*
* Requirements:
*
* - `tokenId` must exist.
*/
function getApproved(uint256 tokenId) external view returns (address operator);
/**
* @dev Approve or remove `operator` as an operator for the caller.
* Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.
*
* Requirements:
*
* - The `operator` cannot be the caller.
*
* Emits an {ApprovalForAll} event.
*/
function setApprovalForAll(address operator, bool _approved) external;
/**
* @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.
*
* See {setApprovalForAll}
*/
function isApprovedForAll(address owner, address operator) external view returns (bool);
/**
* @dev Safely transfers `tokenId` token from `from` to `to`.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `tokenId` token must exist and be owned by `from`.
* - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
* - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
*
* Emits a {Transfer} event.
*/
function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "../../utils/introspection/IERC165.sol";
/**
* _Available since v3.1._
*/
interface IERC1155Receiver is IERC165 {
/**
@dev Handles the receipt of a single ERC1155 token type. This function is
called at the end of a `safeTransferFrom` after the balance has been updated.
To accept the transfer, this must return
`bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))`
(i.e. 0xf23a6e61, or its own function selector).
@param operator The address which initiated the transfer (i.e. msg.sender)
@param from The address which previously owned the token
@param id The ID of the token being transferred
@param value The amount of tokens being transferred
@param data Additional data with no specified format
@return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed
*/
function onERC1155Received(
address operator,
address from,
uint256 id,
uint256 value,
bytes calldata data
)
external
returns(bytes4);
/**
@dev Handles the receipt of a multiple ERC1155 token types. This function
is called at the end of a `safeBatchTransferFrom` after the balances have
been updated. To accept the transfer(s), this must return
`bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))`
(i.e. 0xbc197c81, or its own function selector).
@param operator The address which initiated the batch transfer (i.e. msg.sender)
@param from The address which previously owned the token
@param ids An array containing ids of each token being transferred (order and length must match values array)
@param values An array containing amounts of each token being transferred (order and length must match ids array)
@param data Additional data with no specified format
@return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` if transfer is allowed
*/
function onERC1155BatchReceived(
address operator,
address from,
uint256[] calldata ids,
uint256[] calldata values,
bytes calldata data
)
external
returns(bytes4);
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "../../utils/introspection/IERC165.sol";
/**
* @dev Required interface of an ERC1155 compliant contract, as defined in the
* https://eips.ethereum.org/EIPS/eip-1155[EIP].
*
* _Available since v3.1._
*/
interface IERC1155 is IERC165 {
/**
* @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.
*/
event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);
/**
* @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all
* transfers.
*/
event TransferBatch(address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values);
/**
* @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to
* `approved`.
*/
event ApprovalForAll(address indexed account, address indexed operator, bool approved);
/**
* @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.
*
* If an {URI} event was emitted for `id`, the standard
* https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value
* returned by {IERC1155MetadataURI-uri}.
*/
event URI(string value, uint256 indexed id);
/**
* @dev Returns the amount of tokens of token type `id` owned by `account`.
*
* Requirements:
*
* - `account` cannot be the zero address.
*/
function balanceOf(address account, uint256 id) external view returns (uint256);
/**
* @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.
*
* Requirements:
*
* - `accounts` and `ids` must have the same length.
*/
function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids) external view returns (uint256[] memory);
/**
* @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,
*
* Emits an {ApprovalForAll} event.
*
* Requirements:
*
* - `operator` cannot be the caller.
*/
function setApprovalForAll(address operator, bool approved) external;
/**
* @dev Returns true if `operator` is approved to transfer ``account``'s tokens.
*
* See {setApprovalForAll}.
*/
function isApprovedForAll(address account, address operator) external view returns (bool);
/**
* @dev Transfers `amount` tokens of token type `id` from `from` to `to`.
*
* Emits a {TransferSingle} event.
*
* Requirements:
*
* - `to` cannot be the zero address.
* - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}.
* - `from` must have a balance of tokens of type `id` of at least `amount`.
* - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
* acceptance magic value.
*/
function safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes calldata data) external;
/**
* @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.
*
* Emits a {TransferBatch} event.
*
* Requirements:
*
* - `ids` and `amounts` must have the same length.
* - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
* acceptance magic value.
*/
function safeBatchTransferFrom(address from, address to, uint256[] calldata ids, uint256[] calldata amounts, bytes calldata data) external;
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
/*
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC165 standard, as defined in the
* https://eips.ethereum.org/EIPS/eip-165[EIP].
*
* Implementers can declare support of contract interfaces, which can then be
* queried by others ({ERC165Checker}).
*
* For an implementation, see {ERC165}.
*/
interface IERC165 {
/**
* @dev Returns true if this contract implements the interface defined by
* `interfaceId`. See the corresponding
* https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
* to learn more about how these ids are created.
*
* This function call must use less than 30 000 gas.
*/
function supportsInterface(bytes4 interfaceId) external view returns (bool);
}{
"optimizer": {
"enabled": true,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"abi"
]
}
},
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_muse","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"who","type":"address"},{"indexed":false,"internalType":"uint256","name":"opponentId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"attackId","type":"uint256"}],"name":"Attak","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"to","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BuyPowerUp","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"who","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ClaimedRewards","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"killer","type":"address"},{"indexed":false,"internalType":"uint256","name":"opponentId","type":"uint256"}],"name":"Kill","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"who","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"}],"name":"NewPlayer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"MUSE","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOKEN","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"_attack","type":"uint256"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_tokensToGive","type":"uint256"}],"name":"addAttack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"attackGives","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_opponent","type":"uint256"},{"internalType":"uint256","name":"_attackId","type":"uint256"}],"name":"attackPlayer","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"attackPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"attackTodDecrease","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"buyPowerUp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimPrize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dao","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"daves","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gameEnded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenAmount","type":"uint256"}],"name":"getAmountOfTOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getEarnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"getInfo","outputs":[{"internalType":"uint256","name":"_playerId","type":"uint256"},{"internalType":"bool","name":"_isAlive","type":"bool"},{"internalType":"uint256","name":"_score","type":"uint256"},{"internalType":"uint256","name":"_expectedReward","type":"uint256"},{"internalType":"uint256","name":"_timeUntilDeath","type":"uint256"},{"internalType":"uint256","name":"_timeBorn","type":"uint256"},{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_nftOrigin","type":"address"},{"internalType":"uint256","name":"_nftId","type":"uint256"},{"internalType":"uint256","name":"_timeOfDeath","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"getScore","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_playerId","type":"uint256"}],"name":"isAlive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_opponentId","type":"uint256"}],"name":"kill","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastTimeClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"longestLiving","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"longestLivingId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"longestLivingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"playerId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"playersAlive","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"playersOfAddressByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_nft","type":"address"},{"internalType":"uint256","name":"_nftId","type":"uint256"},{"internalType":"bool","name":"_is1155","type":"bool"}],"name":"register","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rugPull","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"start","type":"bool"}],"name":"startGame","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timeStarted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_playerId","type":"uint256"}],"name":"timeUntilDeath","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"timeWenBorn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"timeWenDed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenBurnt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tokensToClaim","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
6080604052600280546001600160a01b0319908116734b5922abf25858d012d12bb1184e5d3d0b6d6be41790915560038054909116736fba46974b2b1befefa034e236a32e1f10c5a148179055600160055560006006553480156200006357600080fd5b506040516200297838038062002978833981016040819052620000869162000141565b60006200009262000120565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060018055601480546001600160a01b039384166001600160a01b031991821617909155601580549290931691161790556007805460ff191690554260135562000178565b3390565b80516001600160a01b03811681146200013c57600080fd5b919050565b6000806040838503121562000154578182fd5b6200015f8362000124565b91506200016f6020840162000124565b90509250929050565b6127f080620001886000396000f3fe60806040526004361061025c5760003560e01c806376e569c511610144578063c45eb68e116100b6578063dd6adb401161007a578063dd6adb40146106a4578063e7664bdb146106c4578063f23a6e61146106d9578063f2fde38b146106f9578063f300438a14610719578063fd47b0f5146107395761025c565b8063c45eb68e14610604578063c5dc820b14610624578063c71a1ec814610644578063d29a002514610664578063d84b2361146106845761025c565b806394d498a21161010857806394d498a21461055a57806396dccaf41461056f5780639d98702c1461058f578063b943573e146105af578063b9d76bbd146105c4578063bc197c81146105e45761025c565b806376e569c5146104dd5780637918d00a146104fd57806382bfefc814610510578063869dc6d0146105255780638da5cb5b146105455761025c565b80634162169f116101dd578063638f6575116101a1578063638f65751461044957806367f7bb821461045e57806370740ac91461047e57806370a0823114610493578063713c0e1a146104b3578063715018a6146104c85761025c565b80634162169f146103d557806348c54b9d146103ea578063505ff574146103ff5780635262712f1461041f5780636166f25d146104345761025c565b80631c48e5ab116102245780631c48e5ab146103475780631e868334146103695780632190dfd0146103895780632f6fe3961461039e57806332cda6fe146103b35761025c565b806301ffc9a7146102615780630e1af57b14610297578063131b9c04146102c4578063150b7a02146102e45780631a3cd59a14610311575b600080fd5b34801561026d57600080fd5b5061028161027c3660046122c6565b61074e565b60405161028e9190612426565b60405180910390f35b3480156102a357600080fd5b506102b76102b23660046122ee565b610756565b60405161028e919061264b565b3480156102d057600080fd5b506102b76102df36600461209d565b610775565b3480156102f057600080fd5b506103046102ff36600461215d565b6107fe565b60405161028e9190612431565b34801561031d57600080fd5b5061033161032c3660046122ee565b61080e565b60405161028e9a99989796959493929190612654565b34801561035357600080fd5b5061036761036236600461233f565b6108e6565b005b34801561037557600080fd5b506102b761038436600461209d565b610958565b34801561039557600080fd5b5061036761096a565b3480156103aa57600080fd5b50610281610d8e565b3480156103bf57600080fd5b506103c8610d97565b60405161028e9190612370565b3480156103e157600080fd5b506103c8610da6565b3480156103f657600080fd5b50610367610db5565b34801561040b57600080fd5b5061036761041a36600461224f565b610eaf565b34801561042b57600080fd5b506103c8611153565b34801561044057600080fd5b506102b7611162565b34801561045557600080fd5b506102b7611168565b34801561046a57600080fd5b5061036761047936600461228e565b61116e565b34801561048a57600080fd5b506103676111c4565b34801561049f57600080fd5b506102b76104ae36600461209d565b611427565b3480156104bf57600080fd5b506102b7611448565b3480156104d457600080fd5b5061036761144e565b3480156104e957600080fd5b506102b76104f83660046122ee565b6114d7565b61036761050b36600461231e565b6114e9565b34801561051c57600080fd5b506103c8611649565b34801561053157600080fd5b5061036761054036600461231e565b611658565b34801561055157600080fd5b506103c8611779565b34801561056657600080fd5b506102b7611788565b34801561057b57600080fd5b506102b761058a3660046122ee565b61178e565b34801561059b57600080fd5b506102b76105aa36600461209d565b6117a0565b3480156105bb57600080fd5b506102b76117b2565b3480156105d057600080fd5b506102b76105df3660046122ee565b6117b8565b3480156105f057600080fd5b506103046105ff3660046120b7565b6117ca565b34801561061057600080fd5b506102b761061f366004612226565b6117db565b34801561063057600080fd5b506102b761063f3660046122ee565b611804565b34801561065057600080fd5b506102b761065f3660046122ee565b611816565b34801561067057600080fd5b5061036761067f3660046122ee565b611828565b34801561069057600080fd5b5061028161069f3660046122ee565b611b64565b3480156106b057600080fd5b506102b76106bf3660046122ee565b611b77565b3480156106d057600080fd5b506103c8611bb5565b3480156106e557600080fd5b506103046106f43660046121c3565b611bc4565b34801561070557600080fd5b5061036761071436600461209d565b611bd5565b34801561072557600080fd5b506102b76107343660046122ee565b611c95565b34801561074557600080fd5b506102b7611d15565b60015b919050565b60008181526009602052604081205461076f9042612734565b92915050565b6001600160a01b0381166000908152600d60205260408120548161079884611427565b6001600160a01b0385166000908152600e6020526040812054919250908290603c906107c49042612734565b6107ce91906126f5565b6107df90661105fed58c7aab612715565b6107e99190612715565b90506107f581846126dd565b95945050505050565b630a85bd0160e11b949350505050565b6000818152601660209081526040808320815160808101835281546001600160a01b03908116825260018301549482019490945260029091015492831691810191909152600160a01b90910460ff1615156060820152829190819081908190819081908190819081906108808b611b64565b995061088b8c610756565b985061089a8160400151610775565b97506108a58c611b77565b60009c8d52600960209081526040808f205484820151855195840151600890945291909f20549d9f9c9e9b9d9a9c929b9a9099509297509550909350915050565b6108ee611d1b565b6001600160a01b03166108ff611779565b6001600160a01b03161461092e5760405162461bcd60e51b815260040161092590612554565b60405180910390fd5b6000938452600a6020908152604080862094909455600b815283852092909255600c909152912055565b600d6020526000908152604090205481565b601454604080516318160ddd60e01b815290516064926001600160a01b0316916318160ddd916004808301926020929190829003018186803b1580156109af57600080fd5b505afa1580156109c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e79190612306565b6109f2906045612715565b6109fc91906126f5565b6014546040516370a0823160e01b81526001600160a01b03909116906370a0823190610a2c903390600401612370565b60206040518083038186803b158015610a4457600080fd5b505afa158015610a58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7c9190612306565b10158015610b0d5750601454604080516318160ddd60e01b8152905169152d02c7e14af6800000926001600160a01b0316916318160ddd916004808301926020929190829003018186803b158015610ad357600080fd5b505afa158015610ae7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0b9190612306565b115b8015610b1c5750600f60065410155b610b385760405162461bcd60e51b81526004016109259061252d565b334760006064610b4983600a612715565b610b5391906126f5565b6015546040516370a0823160e01b81529192506000916001600160a01b03909116906370a0823190610b89903090600401612370565b60206040518083038186803b158015610ba157600080fd5b505afa158015610bb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd99190612306565b1115610cdd576015546040516370a0823160e01b81526001600160a01b03909116906323b872dd903090339084906370a0823190610c1b908590600401612370565b60206040518083038186803b158015610c3357600080fd5b505afa158015610c47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6b9190612306565b6040518463ffffffff1660e01b8152600401610c8993929190612384565b602060405180830381600087803b158015610ca357600080fd5b505af1158015610cb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cdb91906122aa565b505b6002546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610d17573d6000803e3d6000fd5b506003546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610d52573d6000803e3d6000fd5b506040516001600160a01b038416904780156108fc02916000818181858888f19350505050158015610d88573d6000803e3d6000fd5b50505050565b60075460ff1681565b6002546001600160a01b031681565b6003546001600160a01b031681565b336000908152600e6020526040902054610ddc57336000908152600e602052604090204290555b6000610de733610775565b336000908152600d60209081526040808320839055600e909152902042905590508015610e73576014546040516340c10f1960e01b81526001600160a01b03909116906340c10f1990610e4090339085906004016123ec565b600060405180830381600087803b158015610e5a57600080fd5b505af1158015610e6e573d6000803e3d6000fd5b505050505b7f2d5429efdeca7741a8cd94067b18d988bc4e5f1d5b8272c37b7bfc31e9bfa32c3382604051610ea49291906123ec565b60405180910390a150565b60026001541415610ed25760405162461bcd60e51b8152600401610925906125f5565b600260015560075460ff1615610efa5760405162461bcd60e51b81526004016109259061262c565b610f02610db5565b80610f6e57604051632142170760e11b81526001600160a01b038416906342842e0e90610f3790339030908790600401612384565b600060405180830381600087803b158015610f5157600080fd5b505af1158015610f65573d6000803e3d6000fd5b50505050610fd4565b604051637921219560e11b81526001600160a01b0384169063f242432a90610fa1903390309087906001906004016123a8565b600060405180830381600087803b158015610fbb57600080fd5b505af1158015610fcf573d6000803e3d6000fd5b505050505b60058054600090815260166020908152604080832080546001600160a01b03199081166001600160a01b038a16178255600282018054600184018a9055339216821760ff60a01b1916600160a01b891515021790559454948452600490925290912090916110429190611d1f565b50611050426203f4806126dd565b60058054600090815260086020908152604080832094909455915481526009909152819020429055601454905163079cc67960e41b81526001600160a01b03909116906379cc6790906110b29033906804e1003b28d9280000906004016123ec565b600060405180830381600087803b1580156110cc57600080fd5b505af11580156110e0573d6000803e3d6000fd5b505050507f6b8fe0f067804a78a12efa88b8428446c8d8a703d5604dffc63ac27fcbdcfd0d336005546040516111179291906123ec565b60405180910390a16006805490600061112f83612762565b90915550506005805490600061114483612762565b90915550506001805550505050565b6015546001600160a01b031681565b60105481565b60135481565b611176611d1b565b6001600160a01b0316611187611779565b6001600160a01b0316146111ad5760405162461bcd60e51b815260040161092590612554565b6007805460ff191691151591909117905542601355565b600654156111e45760405162461bcd60e51b8152600401610925906125a8565b6007805460ff191660011790556011546001600160a01b0316476000606461120d83600a612715565b61121791906126f5565b6015546040516370a0823160e01b81529192506000916001600160a01b03909116906370a082319061124d903090600401612370565b60206040518083038186803b15801561126557600080fd5b505afa158015611279573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129d9190612306565b11156113a5576015546011546040516370a0823160e01b81526001600160a01b03928316926323b872dd92309291169084906370a08231906112e3908590600401612370565b60206040518083038186803b1580156112fb57600080fd5b505afa15801561130f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113339190612306565b6040518463ffffffff1660e01b815260040161135193929190612384565b602060405180830381600087803b15801561136b57600080fd5b505af115801561137f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a391906122aa565b505b6002546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156113df573d6000803e3d6000fd5b506003546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561141a573d6000803e3d6000fd5b50826001600160a01b0316ff5b6001600160a01b038116600090815260046020526040812061076f90611d2b565b60055481565b611456611d1b565b6001600160a01b0316611467611779565b6001600160a01b03161461148d5760405162461bcd60e51b815260040161092590612554565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600c6020526000908152604090205481565b6114f282611b64565b61150e5760405162461bcd60e51b815260040161092590612488565b6000818152600b602052604090205434101561153c5760405162461bcd60e51b81526004016109259061250d565b600161154733611427565b10158061155657506006546001145b6115725760405162461bcd60e51b8152600401610925906125d6565b6000818152600a602052604090205461158d816154606126dd565b61159684611b77565b116115b35760405162461bcd60e51b8152600401610925906124ee565b6000828152600c6020908152604080832054338452600d90925282208054919290916115e09084906126dd565b909155505060008381526008602052604081208054839290611603908490612734565b90915550506040517fdc26b212a84696c5d462dfcb8d7c8cbcf47fb0a0a618b39d5431ca48ea46db3e9061163c90339086908690612405565b60405180910390a1505050565b6014546001600160a01b031681565b61166182611b64565b61167d5760405162461bcd60e51b815260040161092590612488565b67016345785d8a000081101561169257600080fd5b60145460405163079cc67960e41b81526001600160a01b03909116906379cc6790906116c490339085906004016123ec565b600060405180830381600087803b1580156116de57600080fd5b505af11580156116f2573d6000803e3d6000fd5b505050506116ff81611c95565b6000838152600860205260408120805490919061171d9084906126dd565b92505081905550806012600082825461173691906126dd565b90915550506040517f99afb513fb3b20b30e9d227fdf95bd2ef3737ba202c59b151f04cb86c57b4d019061176d90849084906126a5565b60405180910390a15050565b6000546001600160a01b031690565b600f5481565b600a6020526000908152604090205481565b600e6020526000908152604090205481565b60125481565b60096020526000908152604090205481565b63bc197c8160e01b95945050505050565b6001600160a01b03821660009081526004602052604081206117fd9083611d36565b9392505050565b60086020526000908152604090205481565b600b6020526000908152604090205481565b6002600154141561184b5760405162461bcd60e51b8152600401610925906125f5565b6002600190815561185b33611427565b10158061186b5750600560065411155b6118875760405162461bcd60e51b8152600401610925906125d6565b61189081611b64565b156118ad5760405162461bcd60e51b815260040161092590612589565b600081815260166020908152604091829020825160808101845281546001600160a01b03908116825260018301549382019390935260029091015491821681840152600160a01b90910460ff161515606082015290517f81cefddd1e92b9503b5e7278f343418c2e6b39262d42dd97531b7828363adfeb9061193290339085906123ec565b60405180910390a180606001516119b65780600001516001600160a01b03166342842e0e30836040015184602001516040518463ffffffff1660e01b815260040161197f93929190612384565b600060405180830381600087803b15801561199957600080fd5b505af11580156119ad573d6000803e3d6000fd5b50505050611a28565b80600001516001600160a01b031663f242432a308360400151846020015160016040518563ffffffff1660e01b81526004016119f594939291906123a8565b600060405180830381600087803b158015611a0f57600080fd5b505af1158015611a23573d6000803e3d6000fd5b505050505b600082815260096020526040812054611a419042612734565b9050600f54811115611a7c57600f81905560108390556040820151601180546001600160a01b0319166001600160a01b039092169190911790555b6040808301516001600160a01b03166000908152600460205220611aa09084611d42565b5060008381526016602052604080822080546001600160a01b03191681556001810192909255600290910180546001600160a81b031916905560145490516340c10f1960e01b81526001600160a01b03909116906340c10f1990611b139033906802b5e3af16b1880000906004016123ec565b600060405180830381600087803b158015611b2d57600080fd5b505af1158015611b41573d6000803e3d6000fd5b505060068054925090506000611b568361274b565b909155505060018055505050565b600080611b7083611b77565b1192915050565b6000818152600860205260408120544210611b9457506000610751565b600082815260086020526040902054611bae904290612734565b9050610751565b6011546001600160a01b031681565b63f23a6e6160e01b95945050505050565b611bdd611d1b565b6001600160a01b0316611bee611779565b6001600160a01b031614611c145760405162461bcd60e51b815260040161092590612554565b6001600160a01b038116611c3a5760405162461bcd60e51b8152600401610925906124a8565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600080611ccd60c864e8d4a51000601254611cb091906126f5565b611cbe90632faf08006126dd565b611cc891906126f5565b611d4e565b611cdc906402540be4006126f5565b90506000611cea8285612715565b905069d3c21bcecceda1000000611d0382610e10612715565b611d0d91906126f5565b949350505050565b60065481565b3390565b60006117fd8383611dbd565b600061076f82611e07565b60006117fd8383611e0b565b60006117fd8383611e64565b60006003821115611daf5750806000611d686002836126f5565b611d739060016126dd565b90505b81811015611da957905080600281611d8e81866126f5565b611d9891906126dd565b611da291906126f5565b9050611d76565b50610751565b811561075157506001919050565b6000611dc98383611f81565b611dff5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561076f565b50600061076f565b5490565b81546000908210611e2e5760405162461bcd60e51b815260040161092590612446565b826000018281548110611e5157634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905092915050565b60008181526001830160205260408120548015611f77576000611e88600183612734565b8554909150600090611e9c90600190612734565b90506000866000018281548110611ec357634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905080876000018481548110611ef457634e487b7160e01b600052603260045260246000fd5b600091825260209091200155611f0b8360016126dd565b60008281526001890160205260409020558654879080611f3b57634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160009055905586600101600087815260200190815260200160002060009055600194505050505061076f565b600091505061076f565b60009081526001919091016020526040902054151590565b80356001600160a01b038116811461075157600080fd5b600082601f830112611fc0578081fd5b8135602067ffffffffffffffff821115611fdc57611fdc612793565b808202611fea8282016126b3565b838152828101908684018388018501891015612004578687fd5b8693505b85841015612026578035835260019390930192918401918401612008565b50979650505050505050565b600082601f830112612042578081fd5b813567ffffffffffffffff81111561205c5761205c612793565b61206f601f8201601f19166020016126b3565b818152846020838601011115612083578283fd5b816020850160208301379081016020019190915292915050565b6000602082840312156120ae578081fd5b6117fd82611f99565b600080600080600060a086880312156120ce578081fd5b6120d786611f99565b94506120e560208701611f99565b9350604086013567ffffffffffffffff80821115612101578283fd5b61210d89838a01611fb0565b94506060880135915080821115612122578283fd5b61212e89838a01611fb0565b93506080880135915080821115612143578283fd5b5061215088828901612032565b9150509295509295909350565b60008060008060808587031215612172578384fd5b61217b85611f99565b935061218960208601611f99565b925060408501359150606085013567ffffffffffffffff8111156121ab578182fd5b6121b787828801612032565b91505092959194509250565b600080600080600060a086880312156121da578081fd5b6121e386611f99565b94506121f160208701611f99565b93506040860135925060608601359150608086013567ffffffffffffffff81111561221a578182fd5b61215088828901612032565b60008060408385031215612238578182fd5b61224183611f99565b946020939093013593505050565b600080600060608486031215612263578283fd5b61226c84611f99565b9250602084013591506040840135612283816127a9565b809150509250925092565b60006020828403121561229f578081fd5b81356117fd816127a9565b6000602082840312156122bb578081fd5b81516117fd816127a9565b6000602082840312156122d7578081fd5b81356001600160e01b0319811681146117fd578182fd5b6000602082840312156122ff578081fd5b5035919050565b600060208284031215612317578081fd5b5051919050565b60008060408385031215612330578182fd5b50508035926020909101359150565b60008060008060808587031215612354578182fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0394851681529290931660208301526040820152606081019190915260a0608082018190526003908201526203078360ec1b60c082015260e00190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039390931683526020830191909152604082015260600190565b901515815260200190565b6001600160e01b031991909116815260200190565b60208082526022908201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e604082015261647360f01b606082015260800190565b60208082526006908201526521616c69766560d01b604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b602080825260059082015264085ada5b1b60da1b604082015260600190565b602080825260069082015265216d6f6e657960d01b604082015260600190565b6020808252600d908201526c10d85b89dd081c9d59dc1d5b1b609a1b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b602080825260059082015264616c69766560d81b604082015260600190565b60208082526014908201527319d85b59481a5cc81b9bdd08199a5b9a5cda195960621b604082015260600190565b602080825260059082015264217065747360d81b604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b602080825260059082015264195b99195960da1b604082015260600190565b90815260200190565b998a5297151560208a015260408901969096526060880194909452608087019290925260a08601526001600160a01b0390811660c08601521660e08401526101008301526101208201526101400190565b918252602082015260400190565b60405181810167ffffffffffffffff811182821017156126d5576126d5612793565b604052919050565b600082198211156126f0576126f061277d565b500190565b60008261271057634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561272f5761272f61277d565b500290565b6000828210156127465761274661277d565b500390565b60008161275a5761275a61277d565b506000190190565b60006000198214156127765761277661277d565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b80151581146127b757600080fd5b5056fea26469706673582212202ce02907347009ef6ceac0f8cdd8e5efb1f065bce33948e011450457f40c2fa364736f6c63430008000033000000000000000000000000c0844fdf1bcbde59a3af0859455d964d350a2cb6000000000000000000000000b6ca7399b4f9ca56fc27cbff44f4d2e4eef1fc81
Deployed Bytecode
0x60806040526004361061025c5760003560e01c806376e569c511610144578063c45eb68e116100b6578063dd6adb401161007a578063dd6adb40146106a4578063e7664bdb146106c4578063f23a6e61146106d9578063f2fde38b146106f9578063f300438a14610719578063fd47b0f5146107395761025c565b8063c45eb68e14610604578063c5dc820b14610624578063c71a1ec814610644578063d29a002514610664578063d84b2361146106845761025c565b806394d498a21161010857806394d498a21461055a57806396dccaf41461056f5780639d98702c1461058f578063b943573e146105af578063b9d76bbd146105c4578063bc197c81146105e45761025c565b806376e569c5146104dd5780637918d00a146104fd57806382bfefc814610510578063869dc6d0146105255780638da5cb5b146105455761025c565b80634162169f116101dd578063638f6575116101a1578063638f65751461044957806367f7bb821461045e57806370740ac91461047e57806370a0823114610493578063713c0e1a146104b3578063715018a6146104c85761025c565b80634162169f146103d557806348c54b9d146103ea578063505ff574146103ff5780635262712f1461041f5780636166f25d146104345761025c565b80631c48e5ab116102245780631c48e5ab146103475780631e868334146103695780632190dfd0146103895780632f6fe3961461039e57806332cda6fe146103b35761025c565b806301ffc9a7146102615780630e1af57b14610297578063131b9c04146102c4578063150b7a02146102e45780631a3cd59a14610311575b600080fd5b34801561026d57600080fd5b5061028161027c3660046122c6565b61074e565b60405161028e9190612426565b60405180910390f35b3480156102a357600080fd5b506102b76102b23660046122ee565b610756565b60405161028e919061264b565b3480156102d057600080fd5b506102b76102df36600461209d565b610775565b3480156102f057600080fd5b506103046102ff36600461215d565b6107fe565b60405161028e9190612431565b34801561031d57600080fd5b5061033161032c3660046122ee565b61080e565b60405161028e9a99989796959493929190612654565b34801561035357600080fd5b5061036761036236600461233f565b6108e6565b005b34801561037557600080fd5b506102b761038436600461209d565b610958565b34801561039557600080fd5b5061036761096a565b3480156103aa57600080fd5b50610281610d8e565b3480156103bf57600080fd5b506103c8610d97565b60405161028e9190612370565b3480156103e157600080fd5b506103c8610da6565b3480156103f657600080fd5b50610367610db5565b34801561040b57600080fd5b5061036761041a36600461224f565b610eaf565b34801561042b57600080fd5b506103c8611153565b34801561044057600080fd5b506102b7611162565b34801561045557600080fd5b506102b7611168565b34801561046a57600080fd5b5061036761047936600461228e565b61116e565b34801561048a57600080fd5b506103676111c4565b34801561049f57600080fd5b506102b76104ae36600461209d565b611427565b3480156104bf57600080fd5b506102b7611448565b3480156104d457600080fd5b5061036761144e565b3480156104e957600080fd5b506102b76104f83660046122ee565b6114d7565b61036761050b36600461231e565b6114e9565b34801561051c57600080fd5b506103c8611649565b34801561053157600080fd5b5061036761054036600461231e565b611658565b34801561055157600080fd5b506103c8611779565b34801561056657600080fd5b506102b7611788565b34801561057b57600080fd5b506102b761058a3660046122ee565b61178e565b34801561059b57600080fd5b506102b76105aa36600461209d565b6117a0565b3480156105bb57600080fd5b506102b76117b2565b3480156105d057600080fd5b506102b76105df3660046122ee565b6117b8565b3480156105f057600080fd5b506103046105ff3660046120b7565b6117ca565b34801561061057600080fd5b506102b761061f366004612226565b6117db565b34801561063057600080fd5b506102b761063f3660046122ee565b611804565b34801561065057600080fd5b506102b761065f3660046122ee565b611816565b34801561067057600080fd5b5061036761067f3660046122ee565b611828565b34801561069057600080fd5b5061028161069f3660046122ee565b611b64565b3480156106b057600080fd5b506102b76106bf3660046122ee565b611b77565b3480156106d057600080fd5b506103c8611bb5565b3480156106e557600080fd5b506103046106f43660046121c3565b611bc4565b34801561070557600080fd5b5061036761071436600461209d565b611bd5565b34801561072557600080fd5b506102b76107343660046122ee565b611c95565b34801561074557600080fd5b506102b7611d15565b60015b919050565b60008181526009602052604081205461076f9042612734565b92915050565b6001600160a01b0381166000908152600d60205260408120548161079884611427565b6001600160a01b0385166000908152600e6020526040812054919250908290603c906107c49042612734565b6107ce91906126f5565b6107df90661105fed58c7aab612715565b6107e99190612715565b90506107f581846126dd565b95945050505050565b630a85bd0160e11b949350505050565b6000818152601660209081526040808320815160808101835281546001600160a01b03908116825260018301549482019490945260029091015492831691810191909152600160a01b90910460ff1615156060820152829190819081908190819081908190819081906108808b611b64565b995061088b8c610756565b985061089a8160400151610775565b97506108a58c611b77565b60009c8d52600960209081526040808f205484820151855195840151600890945291909f20549d9f9c9e9b9d9a9c929b9a9099509297509550909350915050565b6108ee611d1b565b6001600160a01b03166108ff611779565b6001600160a01b03161461092e5760405162461bcd60e51b815260040161092590612554565b60405180910390fd5b6000938452600a6020908152604080862094909455600b815283852092909255600c909152912055565b600d6020526000908152604090205481565b601454604080516318160ddd60e01b815290516064926001600160a01b0316916318160ddd916004808301926020929190829003018186803b1580156109af57600080fd5b505afa1580156109c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e79190612306565b6109f2906045612715565b6109fc91906126f5565b6014546040516370a0823160e01b81526001600160a01b03909116906370a0823190610a2c903390600401612370565b60206040518083038186803b158015610a4457600080fd5b505afa158015610a58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7c9190612306565b10158015610b0d5750601454604080516318160ddd60e01b8152905169152d02c7e14af6800000926001600160a01b0316916318160ddd916004808301926020929190829003018186803b158015610ad357600080fd5b505afa158015610ae7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0b9190612306565b115b8015610b1c5750600f60065410155b610b385760405162461bcd60e51b81526004016109259061252d565b334760006064610b4983600a612715565b610b5391906126f5565b6015546040516370a0823160e01b81529192506000916001600160a01b03909116906370a0823190610b89903090600401612370565b60206040518083038186803b158015610ba157600080fd5b505afa158015610bb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd99190612306565b1115610cdd576015546040516370a0823160e01b81526001600160a01b03909116906323b872dd903090339084906370a0823190610c1b908590600401612370565b60206040518083038186803b158015610c3357600080fd5b505afa158015610c47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6b9190612306565b6040518463ffffffff1660e01b8152600401610c8993929190612384565b602060405180830381600087803b158015610ca357600080fd5b505af1158015610cb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cdb91906122aa565b505b6002546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610d17573d6000803e3d6000fd5b506003546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610d52573d6000803e3d6000fd5b506040516001600160a01b038416904780156108fc02916000818181858888f19350505050158015610d88573d6000803e3d6000fd5b50505050565b60075460ff1681565b6002546001600160a01b031681565b6003546001600160a01b031681565b336000908152600e6020526040902054610ddc57336000908152600e602052604090204290555b6000610de733610775565b336000908152600d60209081526040808320839055600e909152902042905590508015610e73576014546040516340c10f1960e01b81526001600160a01b03909116906340c10f1990610e4090339085906004016123ec565b600060405180830381600087803b158015610e5a57600080fd5b505af1158015610e6e573d6000803e3d6000fd5b505050505b7f2d5429efdeca7741a8cd94067b18d988bc4e5f1d5b8272c37b7bfc31e9bfa32c3382604051610ea49291906123ec565b60405180910390a150565b60026001541415610ed25760405162461bcd60e51b8152600401610925906125f5565b600260015560075460ff1615610efa5760405162461bcd60e51b81526004016109259061262c565b610f02610db5565b80610f6e57604051632142170760e11b81526001600160a01b038416906342842e0e90610f3790339030908790600401612384565b600060405180830381600087803b158015610f5157600080fd5b505af1158015610f65573d6000803e3d6000fd5b50505050610fd4565b604051637921219560e11b81526001600160a01b0384169063f242432a90610fa1903390309087906001906004016123a8565b600060405180830381600087803b158015610fbb57600080fd5b505af1158015610fcf573d6000803e3d6000fd5b505050505b60058054600090815260166020908152604080832080546001600160a01b03199081166001600160a01b038a16178255600282018054600184018a9055339216821760ff60a01b1916600160a01b891515021790559454948452600490925290912090916110429190611d1f565b50611050426203f4806126dd565b60058054600090815260086020908152604080832094909455915481526009909152819020429055601454905163079cc67960e41b81526001600160a01b03909116906379cc6790906110b29033906804e1003b28d9280000906004016123ec565b600060405180830381600087803b1580156110cc57600080fd5b505af11580156110e0573d6000803e3d6000fd5b505050507f6b8fe0f067804a78a12efa88b8428446c8d8a703d5604dffc63ac27fcbdcfd0d336005546040516111179291906123ec565b60405180910390a16006805490600061112f83612762565b90915550506005805490600061114483612762565b90915550506001805550505050565b6015546001600160a01b031681565b60105481565b60135481565b611176611d1b565b6001600160a01b0316611187611779565b6001600160a01b0316146111ad5760405162461bcd60e51b815260040161092590612554565b6007805460ff191691151591909117905542601355565b600654156111e45760405162461bcd60e51b8152600401610925906125a8565b6007805460ff191660011790556011546001600160a01b0316476000606461120d83600a612715565b61121791906126f5565b6015546040516370a0823160e01b81529192506000916001600160a01b03909116906370a082319061124d903090600401612370565b60206040518083038186803b15801561126557600080fd5b505afa158015611279573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129d9190612306565b11156113a5576015546011546040516370a0823160e01b81526001600160a01b03928316926323b872dd92309291169084906370a08231906112e3908590600401612370565b60206040518083038186803b1580156112fb57600080fd5b505afa15801561130f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113339190612306565b6040518463ffffffff1660e01b815260040161135193929190612384565b602060405180830381600087803b15801561136b57600080fd5b505af115801561137f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a391906122aa565b505b6002546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156113df573d6000803e3d6000fd5b506003546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561141a573d6000803e3d6000fd5b50826001600160a01b0316ff5b6001600160a01b038116600090815260046020526040812061076f90611d2b565b60055481565b611456611d1b565b6001600160a01b0316611467611779565b6001600160a01b03161461148d5760405162461bcd60e51b815260040161092590612554565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600c6020526000908152604090205481565b6114f282611b64565b61150e5760405162461bcd60e51b815260040161092590612488565b6000818152600b602052604090205434101561153c5760405162461bcd60e51b81526004016109259061250d565b600161154733611427565b10158061155657506006546001145b6115725760405162461bcd60e51b8152600401610925906125d6565b6000818152600a602052604090205461158d816154606126dd565b61159684611b77565b116115b35760405162461bcd60e51b8152600401610925906124ee565b6000828152600c6020908152604080832054338452600d90925282208054919290916115e09084906126dd565b909155505060008381526008602052604081208054839290611603908490612734565b90915550506040517fdc26b212a84696c5d462dfcb8d7c8cbcf47fb0a0a618b39d5431ca48ea46db3e9061163c90339086908690612405565b60405180910390a1505050565b6014546001600160a01b031681565b61166182611b64565b61167d5760405162461bcd60e51b815260040161092590612488565b67016345785d8a000081101561169257600080fd5b60145460405163079cc67960e41b81526001600160a01b03909116906379cc6790906116c490339085906004016123ec565b600060405180830381600087803b1580156116de57600080fd5b505af11580156116f2573d6000803e3d6000fd5b505050506116ff81611c95565b6000838152600860205260408120805490919061171d9084906126dd565b92505081905550806012600082825461173691906126dd565b90915550506040517f99afb513fb3b20b30e9d227fdf95bd2ef3737ba202c59b151f04cb86c57b4d019061176d90849084906126a5565b60405180910390a15050565b6000546001600160a01b031690565b600f5481565b600a6020526000908152604090205481565b600e6020526000908152604090205481565b60125481565b60096020526000908152604090205481565b63bc197c8160e01b95945050505050565b6001600160a01b03821660009081526004602052604081206117fd9083611d36565b9392505050565b60086020526000908152604090205481565b600b6020526000908152604090205481565b6002600154141561184b5760405162461bcd60e51b8152600401610925906125f5565b6002600190815561185b33611427565b10158061186b5750600560065411155b6118875760405162461bcd60e51b8152600401610925906125d6565b61189081611b64565b156118ad5760405162461bcd60e51b815260040161092590612589565b600081815260166020908152604091829020825160808101845281546001600160a01b03908116825260018301549382019390935260029091015491821681840152600160a01b90910460ff161515606082015290517f81cefddd1e92b9503b5e7278f343418c2e6b39262d42dd97531b7828363adfeb9061193290339085906123ec565b60405180910390a180606001516119b65780600001516001600160a01b03166342842e0e30836040015184602001516040518463ffffffff1660e01b815260040161197f93929190612384565b600060405180830381600087803b15801561199957600080fd5b505af11580156119ad573d6000803e3d6000fd5b50505050611a28565b80600001516001600160a01b031663f242432a308360400151846020015160016040518563ffffffff1660e01b81526004016119f594939291906123a8565b600060405180830381600087803b158015611a0f57600080fd5b505af1158015611a23573d6000803e3d6000fd5b505050505b600082815260096020526040812054611a419042612734565b9050600f54811115611a7c57600f81905560108390556040820151601180546001600160a01b0319166001600160a01b039092169190911790555b6040808301516001600160a01b03166000908152600460205220611aa09084611d42565b5060008381526016602052604080822080546001600160a01b03191681556001810192909255600290910180546001600160a81b031916905560145490516340c10f1960e01b81526001600160a01b03909116906340c10f1990611b139033906802b5e3af16b1880000906004016123ec565b600060405180830381600087803b158015611b2d57600080fd5b505af1158015611b41573d6000803e3d6000fd5b505060068054925090506000611b568361274b565b909155505060018055505050565b600080611b7083611b77565b1192915050565b6000818152600860205260408120544210611b9457506000610751565b600082815260086020526040902054611bae904290612734565b9050610751565b6011546001600160a01b031681565b63f23a6e6160e01b95945050505050565b611bdd611d1b565b6001600160a01b0316611bee611779565b6001600160a01b031614611c145760405162461bcd60e51b815260040161092590612554565b6001600160a01b038116611c3a5760405162461bcd60e51b8152600401610925906124a8565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600080611ccd60c864e8d4a51000601254611cb091906126f5565b611cbe90632faf08006126dd565b611cc891906126f5565b611d4e565b611cdc906402540be4006126f5565b90506000611cea8285612715565b905069d3c21bcecceda1000000611d0382610e10612715565b611d0d91906126f5565b949350505050565b60065481565b3390565b60006117fd8383611dbd565b600061076f82611e07565b60006117fd8383611e0b565b60006117fd8383611e64565b60006003821115611daf5750806000611d686002836126f5565b611d739060016126dd565b90505b81811015611da957905080600281611d8e81866126f5565b611d9891906126dd565b611da291906126f5565b9050611d76565b50610751565b811561075157506001919050565b6000611dc98383611f81565b611dff5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561076f565b50600061076f565b5490565b81546000908210611e2e5760405162461bcd60e51b815260040161092590612446565b826000018281548110611e5157634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905092915050565b60008181526001830160205260408120548015611f77576000611e88600183612734565b8554909150600090611e9c90600190612734565b90506000866000018281548110611ec357634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905080876000018481548110611ef457634e487b7160e01b600052603260045260246000fd5b600091825260209091200155611f0b8360016126dd565b60008281526001890160205260409020558654879080611f3b57634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160009055905586600101600087815260200190815260200160002060009055600194505050505061076f565b600091505061076f565b60009081526001919091016020526040902054151590565b80356001600160a01b038116811461075157600080fd5b600082601f830112611fc0578081fd5b8135602067ffffffffffffffff821115611fdc57611fdc612793565b808202611fea8282016126b3565b838152828101908684018388018501891015612004578687fd5b8693505b85841015612026578035835260019390930192918401918401612008565b50979650505050505050565b600082601f830112612042578081fd5b813567ffffffffffffffff81111561205c5761205c612793565b61206f601f8201601f19166020016126b3565b818152846020838601011115612083578283fd5b816020850160208301379081016020019190915292915050565b6000602082840312156120ae578081fd5b6117fd82611f99565b600080600080600060a086880312156120ce578081fd5b6120d786611f99565b94506120e560208701611f99565b9350604086013567ffffffffffffffff80821115612101578283fd5b61210d89838a01611fb0565b94506060880135915080821115612122578283fd5b61212e89838a01611fb0565b93506080880135915080821115612143578283fd5b5061215088828901612032565b9150509295509295909350565b60008060008060808587031215612172578384fd5b61217b85611f99565b935061218960208601611f99565b925060408501359150606085013567ffffffffffffffff8111156121ab578182fd5b6121b787828801612032565b91505092959194509250565b600080600080600060a086880312156121da578081fd5b6121e386611f99565b94506121f160208701611f99565b93506040860135925060608601359150608086013567ffffffffffffffff81111561221a578182fd5b61215088828901612032565b60008060408385031215612238578182fd5b61224183611f99565b946020939093013593505050565b600080600060608486031215612263578283fd5b61226c84611f99565b9250602084013591506040840135612283816127a9565b809150509250925092565b60006020828403121561229f578081fd5b81356117fd816127a9565b6000602082840312156122bb578081fd5b81516117fd816127a9565b6000602082840312156122d7578081fd5b81356001600160e01b0319811681146117fd578182fd5b6000602082840312156122ff578081fd5b5035919050565b600060208284031215612317578081fd5b5051919050565b60008060408385031215612330578182fd5b50508035926020909101359150565b60008060008060808587031215612354578182fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0394851681529290931660208301526040820152606081019190915260a0608082018190526003908201526203078360ec1b60c082015260e00190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039390931683526020830191909152604082015260600190565b901515815260200190565b6001600160e01b031991909116815260200190565b60208082526022908201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e604082015261647360f01b606082015260800190565b60208082526006908201526521616c69766560d01b604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b602080825260059082015264085ada5b1b60da1b604082015260600190565b602080825260069082015265216d6f6e657960d01b604082015260600190565b6020808252600d908201526c10d85b89dd081c9d59dc1d5b1b609a1b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b602080825260059082015264616c69766560d81b604082015260600190565b60208082526014908201527319d85b59481a5cc81b9bdd08199a5b9a5cda195960621b604082015260600190565b602080825260059082015264217065747360d81b604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b602080825260059082015264195b99195960da1b604082015260600190565b90815260200190565b998a5297151560208a015260408901969096526060880194909452608087019290925260a08601526001600160a01b0390811660c08601521660e08401526101008301526101208201526101400190565b918252602082015260400190565b60405181810167ffffffffffffffff811182821017156126d5576126d5612793565b604052919050565b600082198211156126f0576126f061277d565b500190565b60008261271057634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561272f5761272f61277d565b500290565b6000828210156127465761274661277d565b500390565b60008161275a5761275a61277d565b506000190190565b60006000198214156127765761277661277d565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b80151581146127b757600080fd5b5056fea26469706673582212202ce02907347009ef6ceac0f8cdd8e5efb1f065bce33948e011450457f40c2fa364736f6c63430008000033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000c0844fdf1bcbde59a3af0859455d964d350a2cb6000000000000000000000000b6ca7399b4f9ca56fc27cbff44f4d2e4eef1fc81
-----Decoded View---------------
Arg [0] : _token (address): 0xC0844FDF1bcbDE59a3AF0859455D964D350A2cb6
Arg [1] : _muse (address): 0xB6Ca7399B4F9CA56FC27cBfF44F4d2e4Eef1fc81
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000c0844fdf1bcbde59a3af0859455d964d350a2cb6
Arg [1] : 000000000000000000000000b6ca7399b4f9ca56fc27cbff44f4d2e4eef1fc81
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ 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.