Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
EtherOrcsAllies
Compiler Version
v0.8.7+commit.e28d00a7
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity 0.8.7; import "../ERC20.sol"; import "./ERC721.sol"; import "../interfaces/Interfaces.sol"; contract EtherOrcsAllies is ERC721 { uint256 constant startId = 5050; mapping(uint256 => Ally) public allies; mapping(address => bool) public auth; uint16 public shSupply; uint16 public ogSupply; uint16 public mgSupply; uint16 public rgSupply; ERC20 boneShards; MetadataHandlerAllies metadaHandler; address public castle; bool public openForMint; bytes32 internal entropySauce; struct Ally {uint8 class; uint16 level; uint32 lvlProgress; uint16 modF; uint8 skillCredits; bytes22 details;} struct Shaman {uint8 body; uint8 featA; uint8 featB; uint8 helm; uint8 mainhand; uint8 offhand;} struct Ogre {uint8 body; uint8 mouth; uint8 nose; uint8 eyes; uint8 armor; uint8 mainhand; uint8 offhand;} struct Rogue {uint8 body; uint8 face; uint8 boots; uint8 pants; uint8 shirt; uint8 hair; uint8 armor; uint8 mainhand; uint8 offhand;} modifier noCheaters() { uint256 size = 0; address acc = msg.sender; assembly { size := extcodesize(acc)} require(auth[msg.sender] || (msg.sender == tx.origin && size == 0), "you're trying to cheat!"); _; // We'll use the last caller hash to add entropy to next caller entropySauce = keccak256(abi.encodePacked(acc, block.coinbase)); } function initialize(address ct, address bs, address meta) external { require(msg.sender == admin); castle = ct; boneShards = ERC20(bs); metadaHandler = MetadataHandlerAllies(meta); } function setAdmin(address admin_) external { require(msg.sender == admin); admin = admin_; auth[admin_] = true; } function setAuth(address add_, bool status) external { require(msg.sender == admin); auth[add_] = status; } function setMintOpen(bool open_) external { require(msg.sender == admin); openForMint = open_; } function tokenURI(uint256 id) external view returns(string memory) { Ally memory ally = allies[id]; return metadaHandler.getTokenURI(id, ally.class, ally.level, ally.modF, ally.skillCredits, ally.details); } function mintRogues(uint256 amount) external { for (uint256 i = 0; i < amount; i++) { mintRogue(); } } function mintRogue() public noCheaters { require(openForMint || auth[msg.sender], "not open for mint"); boneShards.burn(msg.sender, 60 ether); _mintRogue(_rand()); } // function mintOgres(uint256 amount) external { // for (uint256 i = 0; i < amount; i++) { // mintOgre(); // } // } // function mintOgre() public noCheaters { // require(openForMint || auth[msg.sender], "not open for mint"); // boneShards.burn(msg.sender, 60 ether); // _mintOgre(_rand()); // } function pull(address owner_, uint256[] calldata ids) external { require (auth[msg.sender], "not auth"); for (uint256 index = 0; index < ids.length; index++) { _transfer(owner_, msg.sender, ids[index]); } CastleLike(msg.sender).pullCallback(owner_, ids); } function adjustAlly(uint256 id, uint8 class_, uint16 level_, uint32 lvlProgress_, uint16 modF_, uint8 skillCredits_, bytes22 details_) external { require(auth[msg.sender], "not authorized"); allies[id] = Ally({class: class_, level: level_, lvlProgress: lvlProgress_, modF: modF_, skillCredits: skillCredits_, details: details_}); } function shaman(bytes22 details) external pure returns(Shaman memory sh) { uint8 body = uint8(bytes1(details)); uint8 featA = uint8(bytes1(details << 8)); uint8 featB = uint8(bytes1(details << 16)); uint8 helm = uint8(bytes1(details << 24)); uint8 mainhand = uint8(bytes1(details << 32)); uint8 offhand = uint8(bytes1(details << 40)); sh.body = body; sh.featA = featA; sh.featB = featB; sh.helm = helm; sh.mainhand = mainhand; sh.offhand = offhand; } function ogre(bytes22 details) external pure returns(Ogre memory og) { uint8 body = uint8(bytes1(details)); uint8 mouth = uint8(bytes1(details << 8)); uint8 nose = uint8(bytes1(details << 16)); uint8 eye = uint8(bytes1(details << 24)); uint8 armor = uint8(bytes1(details << 32)); uint8 mainhand = uint8(bytes1(details << 40)); uint8 offhand = uint8(bytes1(details << 48)); og.body = body; og.mouth = mouth; og.nose = nose; og.eyes = eye; og.armor = armor; og.mainhand = mainhand; og.offhand = offhand; } function rogue(bytes22 details) external pure returns(Rogue memory rg) { uint8 body = uint8(bytes1(details)); uint8 face = uint8(bytes1(details << 8)); uint8 boots = uint8(bytes1(details << 16)); uint8 pants = uint8(bytes1(details << 24)); uint8 shirt = uint8(bytes1(details << 32)); uint8 hair = uint8(bytes1(details << 40)); uint8 armor = uint8(bytes1(details << 48)); uint8 mainhand = uint8(bytes1(details << 56)); uint8 offhand = uint8(bytes1(details << 64)); rg.body = body; rg.face = face; rg.armor = armor; rg.mainhand = mainhand; rg.offhand = offhand; rg.boots = boots; rg.pants = pants; rg.shirt = shirt; rg.hair = hair; } function _mintOgre(uint256 rand) internal returns (uint16 id) { id = uint16(ogSupply + 3001 + startId); //check that supply is less than 3000 require(ogSupply++ <= 3000, "max supply reached"); // Getting Random traits uint8 body = uint8(_randomize(rand, "BODY", id) % 8) + 1; uint8 mouth = uint8(_randomize(rand, "MOUTH", id) % 3) + 1 + ((body - 1) * 3); uint8 nose = uint8(_randomize(rand, "NOSE", id) % 3) + 1 + ((body - 1) * 3); uint8 eyes = uint8(_randomize(rand, "EYES", id) % 3) + 1 + ((body - 1) * 3); uint8 armor = uint8(_randomize(rand, "ARMOR", id) % 6) + 1; uint8 mainhand = uint8(_randomize(rand, "MAINHAND", id) % 6) + 1; uint8 offhand = uint8(_randomize(rand, "OFFHAND", id) % 6) + 1; _mint(msg.sender, id); allies[id] = Ally({class: 2, level: 30, lvlProgress: 30000, modF: 0, skillCredits: 100, details: bytes22(abi.encodePacked(body, mouth, nose, eyes, armor, mainhand, offhand))}); } function _mintRogue(uint256 rand) internal returns (uint16 id) { id = uint16(rgSupply + 6001 + startId); //check that supply is less than 3000 require(rgSupply++ <= 3000, "max supply reached"); // Getting Random traits uint8 body = uint8(_randomize(rand, "BODY", id) % 2) + 1; uint8 face = uint8(_randomize(rand, "FACE", id) % 10) + 1 + ((body - 1) * 10); uint8 boots = uint8(_randomize(rand, "BOOTS", id) % 25) + 1; uint8 pants = uint8(_randomize(rand, "PANTS", id) % 21) + 1; uint8 shirt = uint8(_randomize(rand, "SHIRT", id) % 19) + 1; uint8 hair = uint8(_randomize(rand, "HAIR", id) % 21) + 1; _mint(msg.sender, id); allies[id] = Ally({class: 3, level: 30, lvlProgress: 30000, modF: 0, skillCredits: 100, details: bytes22(abi.encodePacked(body, face, boots, pants, shirt, hair, uint8(0), uint8(0), uint8(0)))}); } /// @dev Create a bit more of randomness function _randomize(uint256 rand, string memory val, uint256 spicy) internal pure returns (uint256) { return uint256(keccak256(abi.encode(rand, val, spicy))); } function _rand() internal view returns (uint256) { return uint256(keccak256(abi.encodePacked(msg.sender, block.timestamp, block.basefee, block.timestamp, entropySauce))); } }
// SPDX-License-Identifier: Unlicense pragma solidity 0.8.7; /// @notice Modern and gas efficient ERC20 + EIP-2612 implementation. /// @author Modified from Uniswap (https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2ERC20.sol) /// Taken from Solmate: https://github.com/Rari-Capital/solmate abstract contract ERC20 { /*/////////////////////////////////////////////////////////////// EVENTS //////////////////////////////////////////////////////////////*/ event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); /*/////////////////////////////////////////////////////////////// METADATA STORAGE //////////////////////////////////////////////////////////////*/ function name() external view virtual returns (string memory); function symbol() external view virtual returns (string memory); function decimals() external view virtual returns (uint8); // string public constant name = "ZUG"; // string public constant symbol = "ZUG"; // uint8 public constant decimals = 18; /*/////////////////////////////////////////////////////////////// ERC20 STORAGE //////////////////////////////////////////////////////////////*/ uint256 public totalSupply; mapping(address => uint256) public balanceOf; mapping(address => mapping(address => uint256)) public allowance; mapping(address => bool) public isMinter; address public ruler; /*/////////////////////////////////////////////////////////////// ERC20 LOGIC //////////////////////////////////////////////////////////////*/ constructor() { ruler = msg.sender;} function approve(address spender, uint256 value) external returns (bool) { allowance[msg.sender][spender] = value; emit Approval(msg.sender, spender, value); return true; } function transfer(address to, uint256 value) external returns (bool) { balanceOf[msg.sender] -= value; // This is safe because the sum of all user // balances can't exceed type(uint256).max! unchecked { balanceOf[to] += value; } emit Transfer(msg.sender, to, value); return true; } function transferFrom( address from, address to, uint256 value ) external returns (bool) { if (allowance[from][msg.sender] != type(uint256).max) { allowance[from][msg.sender] -= value; } balanceOf[from] -= value; // This is safe because the sum of all user // balances can't exceed type(uint256).max! unchecked { balanceOf[to] += value; } emit Transfer(from, to, value); return true; } /*/////////////////////////////////////////////////////////////// ORC PRIVILEGE //////////////////////////////////////////////////////////////*/ function mint(address to, uint256 value) external { require(isMinter[msg.sender], "FORBIDDEN TO MINT"); _mint(to, value); } function burn(address from, uint256 value) external { require(isMinter[msg.sender], "FORBIDDEN TO BURN"); _burn(from, value); } /*/////////////////////////////////////////////////////////////// Ruler Function //////////////////////////////////////////////////////////////*/ function setMinter(address minter, bool status) external { require(msg.sender == ruler, "NOT ALLOWED TO RULE"); isMinter[minter] = status; } function setRuler(address ruler_) external { require(msg.sender == ruler ||ruler == address(0), "NOT ALLOWED TO RULE"); ruler = ruler_; } /*/////////////////////////////////////////////////////////////// INTERNAL UTILS //////////////////////////////////////////////////////////////*/ function _mint(address to, uint256 value) internal { totalSupply += value; // This is safe because the sum of all user // balances can't exceed type(uint256).max! unchecked { balanceOf[to] += value; } emit Transfer(address(0), to, value); } function _burn(address from, uint256 value) internal { balanceOf[from] -= value; // This is safe because a user won't ever // have a balance larger than totalSupply! unchecked { totalSupply -= value; } emit Transfer(from, address(0), value); } }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity 0.8.7; /// @notice Modern and gas efficient ERC-721 + ERC-20/EIP-2612-like implementation, /// including the MetaData, and partially, Enumerable extensions. contract ERC721 { /*/////////////////////////////////////////////////////////////// EVENTS //////////////////////////////////////////////////////////////*/ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); event Approval(address indexed owner, address indexed spender, uint256 indexed tokenId); event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /*/////////////////////////////////////////////////////////////// METADATA STORAGE //////////////////////////////////////////////////////////////*/ address implementation_; address public admin; //Lame requirement from opensea /*/////////////////////////////////////////////////////////////// ERC-721 STORAGE //////////////////////////////////////////////////////////////*/ uint256 public totalSupply; mapping(address => uint256) public balanceOf; mapping(uint256 => address) public ownerOf; mapping(uint256 => address) public getApproved; mapping(address => mapping(address => bool)) public isApprovedForAll; /*/////////////////////////////////////////////////////////////// VIEW FUNCTION //////////////////////////////////////////////////////////////*/ function owner() external view returns (address) { return admin; } /*/////////////////////////////////////////////////////////////// ERC-20-LIKE LOGIC //////////////////////////////////////////////////////////////*/ function transfer(address to, uint256 tokenId) external { require(msg.sender == ownerOf[tokenId], "NOT_OWNER"); _transfer(msg.sender, to, tokenId); } /*/////////////////////////////////////////////////////////////// ERC-721 LOGIC //////////////////////////////////////////////////////////////*/ function supportsInterface(bytes4 interfaceId) external pure returns (bool supported) { supported = interfaceId == 0x80ac58cd || interfaceId == 0x5b5e139f; } function approve(address spender, uint256 tokenId) external { address owner_ = ownerOf[tokenId]; require(msg.sender == owner_ || isApprovedForAll[owner_][msg.sender], "NOT_APPROVED"); getApproved[tokenId] = spender; emit Approval(owner_, spender, tokenId); } function setApprovalForAll(address operator, bool approved) external { isApprovedForAll[msg.sender][operator] = approved; emit ApprovalForAll(msg.sender, operator, approved); } function transferFrom(address from, address to, uint256 tokenId) public { require( msg.sender == from || msg.sender == getApproved[tokenId] || isApprovedForAll[from][msg.sender], "NOT_APPROVED" ); _transfer(from, to, tokenId); } function safeTransferFrom(address from, address to, uint256 tokenId) external { safeTransferFrom(from, to, tokenId, ""); } function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory data) public { transferFrom(from, to, tokenId); if (to.code.length != 0) { // selector = `onERC721Received(address,address,uint,bytes)` (, bytes memory returned) = to.staticcall(abi.encodeWithSelector(0x150b7a02, msg.sender, address(0), tokenId, data)); bytes4 selector = abi.decode(returned, (bytes4)); require(selector == 0x150b7a02, "NOT_ERC721_RECEIVER"); } } /*/////////////////////////////////////////////////////////////// INTERNAL UTILS //////////////////////////////////////////////////////////////*/ function _transfer(address from, address to, uint256 tokenId) internal { require(ownerOf[tokenId] == from, "not owner"); balanceOf[from]--; balanceOf[to]++; delete getApproved[tokenId]; ownerOf[tokenId] = to; emit Transfer(from, to, tokenId); } function _mint(address to, uint256 tokenId) internal { require(ownerOf[tokenId] == address(0), "ALREADY_MINTED"); totalSupply++; // This is safe because the sum of all user // balances can't exceed type(uint256).max! unchecked { balanceOf[to]++; } ownerOf[tokenId] = to; emit Transfer(address(0), to, tokenId); } function _burn(uint256 tokenId) internal { address owner_ = ownerOf[tokenId]; require(ownerOf[tokenId] != address(0), "NOT_MINTED"); totalSupply--; balanceOf[owner_]--; delete ownerOf[tokenId]; emit Transfer(owner_, address(0), tokenId); } }
// SPDX-License-Identifier: Unlicense pragma solidity 0.8.7; interface OrcishLike { function pull(address owner, uint256[] calldata ids) external; function manuallyAdjustOrc(uint256 id, uint8 body, uint8 helm, uint8 mainhand, uint8 offhand, uint16 level, uint16 zugModifier, uint32 lvlProgress) external; function transfer(address to, uint256 tokenId) external; function orcs(uint256 id) external view returns(uint8 body, uint8 helm, uint8 mainhand, uint8 offhand, uint16 level, uint16 zugModifier, uint32 lvlProgress); function allies(uint256 id) external view returns (uint8 class, uint16 level, uint32 lvlProgress, uint16 modF, uint8 skillCredits, bytes22 details); function adjustAlly(uint256 id, uint8 class_, uint16 level_, uint32 lvlProgress_, uint16 modF_, uint8 skillCredits_, bytes22 details_) external; function ogres(uint256 id) external view returns(uint16 level, uint32 lvlProgress, uint16 modF, uint8 skillCredits, uint8 body, uint8 mouth, uint8 nose, uint8 eyes, uint8 armor, uint8 mainhand, uint8 offhand); function claim(uint256[] calldata ids) external; function rogue(bytes22 details) external pure returns(uint8 body, uint8 face, uint8 boots, uint8 pants,uint8 shirt,uint8 hair ,uint8 armor ,uint8 mainhand,uint8 offhand); } interface PortalLike { function sendMessage(bytes calldata message_) external; } interface OracleLike { function request() external returns (uint64 key); function getRandom(uint64 id) external view returns(uint256 rand); } interface MetadataHandlerLike { function getTokenURI(uint16 id, uint8 body, uint8 helm, uint8 mainhand, uint8 offhand, uint16 level, uint16 zugModifier) external view returns (string memory); } interface MetadataHandlerAllies { function getTokenURI(uint256 id_, uint256 class_, uint256 level_, uint256 modF_, uint256 skillCredits_, bytes22 details_) external view returns (string memory); } interface RaidsLike { function stakeManyAndStartCampaign(uint256[] calldata ids_, address owner_, uint256 location_, bool double_) external; function startCampaignWithMany(uint256[] calldata ids, uint256 location_, bool double_) external; function commanders(uint256 id) external returns(address); function unstake(uint256 id) external; } interface RaidsLikePoly { function stakeManyAndStartCampaign(uint256[] calldata ids_, address owner_, uint256 location_, bool double_, uint256[] calldata potions_, uint256[] calldata runes_) external; function startCampaignWithMany(uint256[] calldata ids, uint256 location_, bool double_, uint256[] calldata potions_, uint256[] calldata runes_) external; function commanders(uint256 id) external returns(address); function unstake(uint256 id) external; } interface CastleLike { function pullCallback(address owner, uint256[] calldata ids) external; } interface EtherOrcsLike { function ownerOf(uint256 id) external view returns (address owner_); function activities(uint256 id) external view returns (address owner, uint88 timestamp, uint8 action); function orcs(uint256 orcId) external view returns (uint8 body, uint8 helm, uint8 mainhand, uint8 offhand, uint16 level, uint16 zugModifier, uint32 lvlProgress); } interface ERC20Like { function balanceOf(address from) external view returns(uint256 balance); function burn(address from, uint256 amount) external; function mint(address from, uint256 amount) external; function transfer(address to, uint256 amount) external; } interface ERC1155Like { function balanceOf(address _owner, uint256 _id) external view returns (uint256); function mint(address to, uint256 id, uint256 amount) external; function burn(address from, uint256 id, uint256 amount) external; function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _amount, bytes memory _data) external; } interface ERC721Like { function transferFrom(address from, address to, uint256 id) external; function transfer(address to, uint256 id) external; function ownerOf(uint256 id) external returns (address owner); function mint(address to, uint256 tokenid) external; } interface HallOfChampionsLike { function joined(uint256 orcId) external view returns (uint256 joinDate); } interface AlliesLike { function allies(uint256 id) external view returns (uint8 class, uint16 level, uint32 lvlProgress, uint16 modF, uint8 skillCredits, bytes22 details); }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint8","name":"class_","type":"uint8"},{"internalType":"uint16","name":"level_","type":"uint16"},{"internalType":"uint32","name":"lvlProgress_","type":"uint32"},{"internalType":"uint16","name":"modF_","type":"uint16"},{"internalType":"uint8","name":"skillCredits_","type":"uint8"},{"internalType":"bytes22","name":"details_","type":"bytes22"}],"name":"adjustAlly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allies","outputs":[{"internalType":"uint8","name":"class","type":"uint8"},{"internalType":"uint16","name":"level","type":"uint16"},{"internalType":"uint32","name":"lvlProgress","type":"uint32"},{"internalType":"uint16","name":"modF","type":"uint16"},{"internalType":"uint8","name":"skillCredits","type":"uint8"},{"internalType":"bytes22","name":"details","type":"bytes22"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"auth","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"castle","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"ct","type":"address"},{"internalType":"address","name":"bs","type":"address"},{"internalType":"address","name":"meta","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mgSupply","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintRogue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintRogues","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ogSupply","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes22","name":"details","type":"bytes22"}],"name":"ogre","outputs":[{"components":[{"internalType":"uint8","name":"body","type":"uint8"},{"internalType":"uint8","name":"mouth","type":"uint8"},{"internalType":"uint8","name":"nose","type":"uint8"},{"internalType":"uint8","name":"eyes","type":"uint8"},{"internalType":"uint8","name":"armor","type":"uint8"},{"internalType":"uint8","name":"mainhand","type":"uint8"},{"internalType":"uint8","name":"offhand","type":"uint8"}],"internalType":"struct EtherOrcsAllies.Ogre","name":"og","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openForMint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"pull","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rgSupply","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes22","name":"details","type":"bytes22"}],"name":"rogue","outputs":[{"components":[{"internalType":"uint8","name":"body","type":"uint8"},{"internalType":"uint8","name":"face","type":"uint8"},{"internalType":"uint8","name":"boots","type":"uint8"},{"internalType":"uint8","name":"pants","type":"uint8"},{"internalType":"uint8","name":"shirt","type":"uint8"},{"internalType":"uint8","name":"hair","type":"uint8"},{"internalType":"uint8","name":"armor","type":"uint8"},{"internalType":"uint8","name":"mainhand","type":"uint8"},{"internalType":"uint8","name":"offhand","type":"uint8"}],"internalType":"struct EtherOrcsAllies.Rogue","name":"rg","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"admin_","type":"address"}],"name":"setAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"add_","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setAuth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"open_","type":"bool"}],"name":"setMintOpen","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"shSupply","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes22","name":"details","type":"bytes22"}],"name":"shaman","outputs":[{"components":[{"internalType":"uint8","name":"body","type":"uint8"},{"internalType":"uint8","name":"featA","type":"uint8"},{"internalType":"uint8","name":"featB","type":"uint8"},{"internalType":"uint8","name":"helm","type":"uint8"},{"internalType":"uint8","name":"mainhand","type":"uint8"},{"internalType":"uint8","name":"offhand","type":"uint8"}],"internalType":"struct EtherOrcsAllies.Shaman","name":"sh","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"supported","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50612102806100206000396000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c80638fd54c241161011a578063c87b56dd116100ad578063e985e9c51161007c578063e985e9c51461068b578063f734d723146106b9578063f8004d311461078d578063f851a440146107a0578063f9915c52146107b357600080fd5b8063c87b56dd1461062d578063cd5d21181461064d578063d046182514610670578063d23d24341461067857600080fd5b8063a9059cbb116100e9578063a9059cbb146105e0578063ae5b7a7d146105f3578063b88d4fde14610607578063c0c53b8b1461061a57600080fd5b80638fd54c24146104e857806397ce6a64146104fd578063a22cb465146105ba578063a3e9ec29146105cd57600080fd5b80633f19ac881161019d57806367d974571161016c57806367d9745714610360578063704b6c021461040a57806370a082311461041d5780637b96af3e1461043d5780638da5cb5b146104d757600080fd5b80633f19ac88146102fd57806342842e0e146103105780634429eda7146103235780636352211e1461033757600080fd5b806318160ddd116101d957806318160ddd1461029c57806323b872dd146102b357806326712942146102c65780633ca80508146102ef57600080fd5b806301ffc9a71461020b578063081812fc14610233578063095ea7b3146102745780630b44a21814610289575b600080fd5b61021e610219366004611b81565b6107c6565b60405190151581526020015b60405180910390f35b61025c610241366004611c32565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161022a565b610287610282366004611b21565b6107fd565b005b610287610297366004611af7565b6108e2565b6102a560025481565b60405190815260200161022a565b6102876102c136600461198a565b610924565b6009546102dc90640100000000900461ffff1681565b60405161ffff909116815260200161022a565b6009546102dc9061ffff1681565b600b5461025c906001600160a01b031681565b61028761031e36600461198a565b6109ca565b600b5461021e90600160a01b900460ff1681565b61025c610345366004611c32565b6004602052600090815260409020546001600160a01b031681565b6103bf61036e366004611c32565b60076020526000908152604090205460ff8082169161ffff610100820481169263ffffffff630100000084041692600160381b810490921691600160481b810490911690600160501b900460501b86565b6040805160ff978816815261ffff968716602082015263ffffffff909516908501529390911660608301529290921660808301526001600160501b03191660a082015260c00161022a565b6102876104183660046118f9565b6109e5565b6102a561042b3660046118f9565b60036020526000908152604090205481565b6104ca61044b366004611b66565b604080516101208101825260f883901c815260ff60f084901c8116602083015260c884901c811660c08084019190915284901c811660e08084019190915260b885901c821661010084015260e885901c8216938301939093529183901c8216606082015260d883901c8216608082015260d09290921c1660a082015290565b60405161022a9190611dba565b6001546001600160a01b031661025c565b6009546102dc90600160301b900461ffff1681565b61055f61050b366004611b66565b6040805160c08101825260f883901c815260ff60f084901c8116602083015260e884901c81169282019290925260e083901c8216606082015260d883901c8216608082015260d09290921c1660a082015290565b60405161022a9190600060c08201905060ff8084511683528060208501511660208401528060408501511660408401528060608501511660608401528060808501511660808401528060a08501511660a08401525092915050565b6102876105c8366004611af7565b610a37565b6102876105db366004611c32565b610aa3565b6102876105ee366004611b21565b610acc565b6009546102dc9062010000900461ffff1681565b6102876106153660046119c6565b610b29565b610287610628366004611947565b610c61565b61064061063b366004611c32565b610cce565b60405161022a9190611da7565b61021e61065b3660046118f9565b60086020526000908152604090205460ff1681565b610287610e00565b610287610686366004611c4b565b611000565b61021e610699366004611914565b600660209081526000928352604080842090915290825290205460ff1681565b6107266106c7366004611b66565b6040805160e0808201835260f884901c825260ff60f085901c8116602084015260e885901c81169383019390935283901c8216606082015260d883901c8216608082015260d083901c821660a082015260c89290921c1660c082015290565b60405161022a9190600060e08201905060ff8084511683528060208501511660208401528060408501511660408401528060608501511660608401528060808501511660808401528060a08501511660a08401528060c08501511660c08401525092915050565b61028761079b366004611b4b565b611141565b60015461025c906001600160a01b031681565b6102876107c1366004611a71565b611176565b60006380ac58cd60e01b6001600160e01b0319831614806107f75750635b5e139f60e01b6001600160e01b03198316145b92915050565b6000818152600460205260409020546001600160a01b03163381148061084657506001600160a01b038116600090815260066020908152604080832033845290915290205460ff165b6108865760405162461bcd60e51b815260206004820152600c60248201526b1393d517d054141493d5915160a21b60448201526064015b60405180910390fd5b60008281526005602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6001546001600160a01b031633146108f957600080fd5b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b336001600160a01b038416148061095157506000818152600560205260409020546001600160a01b031633145b8061097f57506001600160a01b038316600090815260066020908152604080832033845290915290205460ff165b6109ba5760405162461bcd60e51b815260206004820152600c60248201526b1393d517d054141493d5915160a21b604482015260640161087d565b6109c583838361125f565b505050565b6109c583838360405180602001604052806000815250610b29565b6001546001600160a01b031633146109fc57600080fd5b600180546001600160a01b039092166001600160a01b031990921682178155600091825260086020526040909120805460ff19169091179055565b3360008181526006602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b60005b81811015610ac857610ab6610e00565b80610ac081612034565b915050610aa6565b5050565b6000818152600460205260409020546001600160a01b03163314610b1e5760405162461bcd60e51b81526020600482015260096024820152682727aa2fa7aba722a960b91b604482015260640161087d565b610ac833838361125f565b610b34848484610924565b6001600160a01b0383163b15610c5b576000836001600160a01b031663150b7a023360008686604051602401610b6d9493929190611d1d565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051610ba69190611d01565b600060405180830381855afa9150503d8060008114610be1576040519150601f19603f3d011682016040523d82523d6000602084013e610be6565b606091505b50915050600081806020019051810190610c009190611b9e565b9050630a85bd0160e11b6001600160e01b0319821614610c585760405162461bcd60e51b81526020600482015260136024820152722727aa2fa2a9219b9918afa922a1a2a4ab22a960691b604482015260640161087d565b50505b50505050565b6001546001600160a01b03163314610c7857600080fd5b600b80546001600160a01b039485166001600160a01b03199182161790915560098054938516600160401b0268010000000000000000600160e01b031990941693909317909255600a8054919093169116179055565b600081815260076020908152604091829020825160c081018452905460ff808216808452610100830461ffff9081169585018690526301000000840463ffffffff1685880152600160381b8404166060808601829052600160481b850490931660808601819052600160501b90940460501b6001600160501b03191660a08601819052600a549751636aacfbd160e01b8152600481018a9052602481019390935260448301969096526064820152608481019290925260a4820193909352919290916001600160a01b0390911690636aacfbd19060c40160006040518083038186803b158015610dbd57600080fd5b505afa158015610dd1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610df99190810190611bbb565b9392505050565b33600081815260086020526040902054813b919060ff1680610e2a57503332148015610e2a575081155b610e765760405162461bcd60e51b815260206004820152601760248201527f796f7527726520747279696e6720746f20636865617421000000000000000000604482015260640161087d565b600b54600160a01b900460ff1680610e9d57503360009081526008602052604090205460ff165b610edd5760405162461bcd60e51b81526020600482015260116024820152701b9bdd081bdc195b88199bdc881b5a5b9d607a1b604482015260640161087d565b600954604051632770a7eb60e21b8152336004820152680340aad21b3b7000006024820152600160401b9091046001600160a01b031690639dc29fac90604401600060405180830381600087803b158015610f3757600080fd5b505af1158015610f4b573d6000803e3d6000fd5b50505050610fb7610fb2600c546040516bffffffffffffffffffffffff193360601b16602082015242603482018190524860548301526074820152609481019190915260009060b4016040516020818303038152906040528051906020012060001c905090565b611377565b506040516bffffffffffffffffffffffff19606083811b8216602084015241901b16603482015260480160408051601f198184030181529190528051602090910120600c555050565b3360009081526008602052604090205460ff166110505760405162461bcd60e51b815260206004820152600e60248201526d1b9bdd08185d5d1a1bdc9a5e995960921b604482015260640161087d565b6040805160c08101825260ff978816815261ffff968716602080830191825263ffffffff97881683850190815296891660608401908152958a16608084019081526001600160501b031990951660a0840190815260009b8c52600790915292909920905181549951955194519351925160501c600160501b02928916600160481b0269ffffffffffffffffffff1668ffffffffffffffffff948916600160381b0261ffff60381b19969098166301000000029590951668ffffffffffff00000019969098166101000262ffffff19909a16981697909717979097179290921693909317919091171617919091179055565b6001546001600160a01b0316331461115857600080fd5b600b8054911515600160a01b0260ff60a01b19909216919091179055565b3360009081526008602052604090205460ff166111c05760405162461bcd60e51b81526020600482015260086024820152670dcdee840c2eae8d60c31b604482015260640161087d565b60005b81811015611200576111ee84338585858181106111e2576111e2612087565b9050602002013561125f565b806111f881612034565b9150506111c3565b506040516397adec1160e01b815233906397adec119061122890869086908690600401611d5a565b600060405180830381600087803b15801561124257600080fd5b505af1158015611256573d6000803e3d6000fd5b50505050505050565b6000818152600460205260409020546001600160a01b038481169116146112b45760405162461bcd60e51b81526020600482015260096024820152683737ba1037bbb732b960b91b604482015260640161087d565b6001600160a01b03831660009081526003602052604081208054916112d883611ffb565b90915550506001600160a01b038216600090815260036020526040812080549161130183612034565b9091555050600081815260056020908152604080832080546001600160a01b0319908116909155600490925280832080546001600160a01b038781169190941681179091559051849391928716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6009546000906113ba9061139890600160301b900461ffff16611771611ee9565b61ffff166113a69190611f0f565b60098054919250610bb891600160301b900461ffff169060066113c883612012565b91906101000a81548161ffff021916908361ffff16021790555061ffff1611156114295760405162461bcd60e51b81526020600482015260126024820152711b585e081cdd5c1c1b1e481c995858da195960721b604482015260640161087d565b600060026114588460405180604001604052806004815260200163424f445960e01b8152508561ffff16611785565b611462919061204f565b61146d906001611f27565b9050600061147c600183611f75565b61148790600a611f4c565b600a6114b486604051806040016040528060048152602001634641434560e01b8152508761ffff16611785565b6114be919061204f565b6114c9906001611f27565b6114d39190611f27565b9050600060196115058660405180604001604052806005815260200164424f4f545360d81b8152508761ffff16611785565b61150f919061204f565b61151a906001611f27565b90506000601561154c876040518060400160405280600581526020016450414e545360d81b8152508861ffff16611785565b611556919061204f565b611561906001611f27565b905060006013611593886040518060400160405280600581526020016414d212549560da1b8152508961ffff16611785565b61159d919061204f565b6115a8906001611f27565b9050600060156115d989604051806040016040528060048152602001632420a4a960e11b8152508a61ffff16611785565b6115e3919061204f565b6115ee906001611f27565b90506115fe338861ffff166117bc565b6040805160c08101825260038152601e6020808301919091526175308284015260006060830181905260646080840152835160f88b811b6001600160f81b0319908116948301949094528a811b8416602183015289811b8416602283015288811b8416602383015287811b8416602483015286901b9092166025830152602682018190526027820181905260288201528251600981830301815260299091019092529060a08201906116af90611f98565b6001600160501b031916905261ffff8089166000908152600760209081526040918290208451815492860151938601516060870151608088015160a09098015160501c600160501b0260ff988916600160481b0269ffffffffffffffffffff1668ffffffffffffffffff928916600160381b0261ffff60381b1963ffffffff9095166301000000029490941668ffffffffffff00000019989099166101000262ffffff19909716999094169890981794909417949094169490941792909217169190911791909117905550949695505050505050565b600083838360405160200161179c93929190611e67565b60408051601f198184030181529190528051602090910120949350505050565b6000818152600460205260409020546001600160a01b0316156118125760405162461bcd60e51b815260206004820152600e60248201526d1053149150511657d3525395115160921b604482015260640161087d565b6002805490600061182283612034565b90915550506001600160a01b038216600081815260036020908152604080832080546001019055848352600490915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b80356001600160a01b03811681146118a957600080fd5b919050565b803580151581146118a957600080fd5b80356001600160501b0319811681146118a957600080fd5b803561ffff811681146118a957600080fd5b803560ff811681146118a957600080fd5b60006020828403121561190b57600080fd5b610df982611892565b6000806040838503121561192757600080fd5b61193083611892565b915061193e60208401611892565b90509250929050565b60008060006060848603121561195c57600080fd5b61196584611892565b925061197360208501611892565b915061198160408501611892565b90509250925092565b60008060006060848603121561199f57600080fd5b6119a884611892565b92506119b660208501611892565b9150604084013590509250925092565b600080600080608085870312156119dc57600080fd5b6119e585611892565b93506119f360208601611892565b925060408501359150606085013567ffffffffffffffff811115611a1657600080fd5b8501601f81018713611a2757600080fd5b8035611a3a611a3582611ec1565b611e90565b818152886020838501011115611a4f57600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b600080600060408486031215611a8657600080fd5b611a8f84611892565b9250602084013567ffffffffffffffff80821115611aac57600080fd5b818601915086601f830112611ac057600080fd5b813581811115611acf57600080fd5b8760208260051b8501011115611ae457600080fd5b6020830194508093505050509250925092565b60008060408385031215611b0a57600080fd5b611b1383611892565b915061193e602084016118ae565b60008060408385031215611b3457600080fd5b611b3d83611892565b946020939093013593505050565b600060208284031215611b5d57600080fd5b610df9826118ae565b600060208284031215611b7857600080fd5b610df9826118be565b600060208284031215611b9357600080fd5b8135610df9816120b3565b600060208284031215611bb057600080fd5b8151610df9816120b3565b600060208284031215611bcd57600080fd5b815167ffffffffffffffff811115611be457600080fd5b8201601f81018413611bf557600080fd5b8051611c03611a3582611ec1565b818152856020838501011115611c1857600080fd5b611c29826020830160208601611fcf565b95945050505050565b600060208284031215611c4457600080fd5b5035919050565b600080600080600080600060e0888a031215611c6657600080fd5b87359650611c76602089016118e8565b9550611c84604089016118d6565b9450606088013563ffffffff81168114611c9d57600080fd5b9350611cab608089016118d6565b9250611cb960a089016118e8565b9150611cc760c089016118be565b905092959891949750929550565b60008151808452611ced816020860160208601611fcf565b601f01601f19169290920160200192915050565b60008251611d13818460208701611fcf565b9190910192915050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611d5090830184611cd5565b9695505050505050565b6001600160a01b0384168152604060208201819052810182905260006001600160fb1b03831115611d8a57600080fd5b8260051b8085606085013760009201606001918252509392505050565b602081526000610df96020830184611cd5565b60006101208201905060ff835116825260ff60208401511660208301526040830151611deb604084018260ff169052565b506060830151611e00606084018260ff169052565b506080830151611e15608084018260ff169052565b5060a0830151611e2a60a084018260ff169052565b5060c0830151611e3f60c084018260ff169052565b5060e0830151611e5460e084018260ff169052565b506101009283015160ff16919092015290565b838152606060208201526000611e806060830185611cd5565b9050826040830152949350505050565b604051601f8201601f1916810167ffffffffffffffff81118282101715611eb957611eb961209d565b604052919050565b600067ffffffffffffffff821115611edb57611edb61209d565b50601f01601f191660200190565b600061ffff808316818516808303821115611f0657611f06612071565b01949350505050565b60008219821115611f2257611f22612071565b500190565b600060ff821660ff84168060ff03821115611f4457611f44612071565b019392505050565b600060ff821660ff84168160ff0481118215151615611f6d57611f6d612071565b029392505050565b600060ff821660ff841680821015611f8f57611f8f612071565b90039392505050565b805160208201516001600160501b03198082169291906016831015611fc75780818460160360031b1b83161693505b505050919050565b60005b83811015611fea578181015183820152602001611fd2565b83811115610c5b5750506000910152565b60008161200a5761200a612071565b506000190190565b600061ffff8083168181141561202a5761202a612071565b6001019392505050565b600060001982141561204857612048612071565b5060010190565b60008261206c57634e487b7160e01b600052601260045260246000fd5b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b0319811681146120c957600080fd5b5056fea26469706673582212205bec24c482628ce8b7bfbc4c39460f225f9958335d0c19120ca0ad3cc3a7a92a64736f6c63430008070033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106102065760003560e01c80638fd54c241161011a578063c87b56dd116100ad578063e985e9c51161007c578063e985e9c51461068b578063f734d723146106b9578063f8004d311461078d578063f851a440146107a0578063f9915c52146107b357600080fd5b8063c87b56dd1461062d578063cd5d21181461064d578063d046182514610670578063d23d24341461067857600080fd5b8063a9059cbb116100e9578063a9059cbb146105e0578063ae5b7a7d146105f3578063b88d4fde14610607578063c0c53b8b1461061a57600080fd5b80638fd54c24146104e857806397ce6a64146104fd578063a22cb465146105ba578063a3e9ec29146105cd57600080fd5b80633f19ac881161019d57806367d974571161016c57806367d9745714610360578063704b6c021461040a57806370a082311461041d5780637b96af3e1461043d5780638da5cb5b146104d757600080fd5b80633f19ac88146102fd57806342842e0e146103105780634429eda7146103235780636352211e1461033757600080fd5b806318160ddd116101d957806318160ddd1461029c57806323b872dd146102b357806326712942146102c65780633ca80508146102ef57600080fd5b806301ffc9a71461020b578063081812fc14610233578063095ea7b3146102745780630b44a21814610289575b600080fd5b61021e610219366004611b81565b6107c6565b60405190151581526020015b60405180910390f35b61025c610241366004611c32565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161022a565b610287610282366004611b21565b6107fd565b005b610287610297366004611af7565b6108e2565b6102a560025481565b60405190815260200161022a565b6102876102c136600461198a565b610924565b6009546102dc90640100000000900461ffff1681565b60405161ffff909116815260200161022a565b6009546102dc9061ffff1681565b600b5461025c906001600160a01b031681565b61028761031e36600461198a565b6109ca565b600b5461021e90600160a01b900460ff1681565b61025c610345366004611c32565b6004602052600090815260409020546001600160a01b031681565b6103bf61036e366004611c32565b60076020526000908152604090205460ff8082169161ffff610100820481169263ffffffff630100000084041692600160381b810490921691600160481b810490911690600160501b900460501b86565b6040805160ff978816815261ffff968716602082015263ffffffff909516908501529390911660608301529290921660808301526001600160501b03191660a082015260c00161022a565b6102876104183660046118f9565b6109e5565b6102a561042b3660046118f9565b60036020526000908152604090205481565b6104ca61044b366004611b66565b604080516101208101825260f883901c815260ff60f084901c8116602083015260c884901c811660c08084019190915284901c811660e08084019190915260b885901c821661010084015260e885901c8216938301939093529183901c8216606082015260d883901c8216608082015260d09290921c1660a082015290565b60405161022a9190611dba565b6001546001600160a01b031661025c565b6009546102dc90600160301b900461ffff1681565b61055f61050b366004611b66565b6040805160c08101825260f883901c815260ff60f084901c8116602083015260e884901c81169282019290925260e083901c8216606082015260d883901c8216608082015260d09290921c1660a082015290565b60405161022a9190600060c08201905060ff8084511683528060208501511660208401528060408501511660408401528060608501511660608401528060808501511660808401528060a08501511660a08401525092915050565b6102876105c8366004611af7565b610a37565b6102876105db366004611c32565b610aa3565b6102876105ee366004611b21565b610acc565b6009546102dc9062010000900461ffff1681565b6102876106153660046119c6565b610b29565b610287610628366004611947565b610c61565b61064061063b366004611c32565b610cce565b60405161022a9190611da7565b61021e61065b3660046118f9565b60086020526000908152604090205460ff1681565b610287610e00565b610287610686366004611c4b565b611000565b61021e610699366004611914565b600660209081526000928352604080842090915290825290205460ff1681565b6107266106c7366004611b66565b6040805160e0808201835260f884901c825260ff60f085901c8116602084015260e885901c81169383019390935283901c8216606082015260d883901c8216608082015260d083901c821660a082015260c89290921c1660c082015290565b60405161022a9190600060e08201905060ff8084511683528060208501511660208401528060408501511660408401528060608501511660608401528060808501511660808401528060a08501511660a08401528060c08501511660c08401525092915050565b61028761079b366004611b4b565b611141565b60015461025c906001600160a01b031681565b6102876107c1366004611a71565b611176565b60006380ac58cd60e01b6001600160e01b0319831614806107f75750635b5e139f60e01b6001600160e01b03198316145b92915050565b6000818152600460205260409020546001600160a01b03163381148061084657506001600160a01b038116600090815260066020908152604080832033845290915290205460ff165b6108865760405162461bcd60e51b815260206004820152600c60248201526b1393d517d054141493d5915160a21b60448201526064015b60405180910390fd5b60008281526005602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6001546001600160a01b031633146108f957600080fd5b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b336001600160a01b038416148061095157506000818152600560205260409020546001600160a01b031633145b8061097f57506001600160a01b038316600090815260066020908152604080832033845290915290205460ff165b6109ba5760405162461bcd60e51b815260206004820152600c60248201526b1393d517d054141493d5915160a21b604482015260640161087d565b6109c583838361125f565b505050565b6109c583838360405180602001604052806000815250610b29565b6001546001600160a01b031633146109fc57600080fd5b600180546001600160a01b039092166001600160a01b031990921682178155600091825260086020526040909120805460ff19169091179055565b3360008181526006602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b60005b81811015610ac857610ab6610e00565b80610ac081612034565b915050610aa6565b5050565b6000818152600460205260409020546001600160a01b03163314610b1e5760405162461bcd60e51b81526020600482015260096024820152682727aa2fa7aba722a960b91b604482015260640161087d565b610ac833838361125f565b610b34848484610924565b6001600160a01b0383163b15610c5b576000836001600160a01b031663150b7a023360008686604051602401610b6d9493929190611d1d565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051610ba69190611d01565b600060405180830381855afa9150503d8060008114610be1576040519150601f19603f3d011682016040523d82523d6000602084013e610be6565b606091505b50915050600081806020019051810190610c009190611b9e565b9050630a85bd0160e11b6001600160e01b0319821614610c585760405162461bcd60e51b81526020600482015260136024820152722727aa2fa2a9219b9918afa922a1a2a4ab22a960691b604482015260640161087d565b50505b50505050565b6001546001600160a01b03163314610c7857600080fd5b600b80546001600160a01b039485166001600160a01b03199182161790915560098054938516600160401b0268010000000000000000600160e01b031990941693909317909255600a8054919093169116179055565b600081815260076020908152604091829020825160c081018452905460ff808216808452610100830461ffff9081169585018690526301000000840463ffffffff1685880152600160381b8404166060808601829052600160481b850490931660808601819052600160501b90940460501b6001600160501b03191660a08601819052600a549751636aacfbd160e01b8152600481018a9052602481019390935260448301969096526064820152608481019290925260a4820193909352919290916001600160a01b0390911690636aacfbd19060c40160006040518083038186803b158015610dbd57600080fd5b505afa158015610dd1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610df99190810190611bbb565b9392505050565b33600081815260086020526040902054813b919060ff1680610e2a57503332148015610e2a575081155b610e765760405162461bcd60e51b815260206004820152601760248201527f796f7527726520747279696e6720746f20636865617421000000000000000000604482015260640161087d565b600b54600160a01b900460ff1680610e9d57503360009081526008602052604090205460ff165b610edd5760405162461bcd60e51b81526020600482015260116024820152701b9bdd081bdc195b88199bdc881b5a5b9d607a1b604482015260640161087d565b600954604051632770a7eb60e21b8152336004820152680340aad21b3b7000006024820152600160401b9091046001600160a01b031690639dc29fac90604401600060405180830381600087803b158015610f3757600080fd5b505af1158015610f4b573d6000803e3d6000fd5b50505050610fb7610fb2600c546040516bffffffffffffffffffffffff193360601b16602082015242603482018190524860548301526074820152609481019190915260009060b4016040516020818303038152906040528051906020012060001c905090565b611377565b506040516bffffffffffffffffffffffff19606083811b8216602084015241901b16603482015260480160408051601f198184030181529190528051602090910120600c555050565b3360009081526008602052604090205460ff166110505760405162461bcd60e51b815260206004820152600e60248201526d1b9bdd08185d5d1a1bdc9a5e995960921b604482015260640161087d565b6040805160c08101825260ff978816815261ffff968716602080830191825263ffffffff97881683850190815296891660608401908152958a16608084019081526001600160501b031990951660a0840190815260009b8c52600790915292909920905181549951955194519351925160501c600160501b02928916600160481b0269ffffffffffffffffffff1668ffffffffffffffffff948916600160381b0261ffff60381b19969098166301000000029590951668ffffffffffff00000019969098166101000262ffffff19909a16981697909717979097179290921693909317919091171617919091179055565b6001546001600160a01b0316331461115857600080fd5b600b8054911515600160a01b0260ff60a01b19909216919091179055565b3360009081526008602052604090205460ff166111c05760405162461bcd60e51b81526020600482015260086024820152670dcdee840c2eae8d60c31b604482015260640161087d565b60005b81811015611200576111ee84338585858181106111e2576111e2612087565b9050602002013561125f565b806111f881612034565b9150506111c3565b506040516397adec1160e01b815233906397adec119061122890869086908690600401611d5a565b600060405180830381600087803b15801561124257600080fd5b505af1158015611256573d6000803e3d6000fd5b50505050505050565b6000818152600460205260409020546001600160a01b038481169116146112b45760405162461bcd60e51b81526020600482015260096024820152683737ba1037bbb732b960b91b604482015260640161087d565b6001600160a01b03831660009081526003602052604081208054916112d883611ffb565b90915550506001600160a01b038216600090815260036020526040812080549161130183612034565b9091555050600081815260056020908152604080832080546001600160a01b0319908116909155600490925280832080546001600160a01b038781169190941681179091559051849391928716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6009546000906113ba9061139890600160301b900461ffff16611771611ee9565b61ffff166113a69190611f0f565b60098054919250610bb891600160301b900461ffff169060066113c883612012565b91906101000a81548161ffff021916908361ffff16021790555061ffff1611156114295760405162461bcd60e51b81526020600482015260126024820152711b585e081cdd5c1c1b1e481c995858da195960721b604482015260640161087d565b600060026114588460405180604001604052806004815260200163424f445960e01b8152508561ffff16611785565b611462919061204f565b61146d906001611f27565b9050600061147c600183611f75565b61148790600a611f4c565b600a6114b486604051806040016040528060048152602001634641434560e01b8152508761ffff16611785565b6114be919061204f565b6114c9906001611f27565b6114d39190611f27565b9050600060196115058660405180604001604052806005815260200164424f4f545360d81b8152508761ffff16611785565b61150f919061204f565b61151a906001611f27565b90506000601561154c876040518060400160405280600581526020016450414e545360d81b8152508861ffff16611785565b611556919061204f565b611561906001611f27565b905060006013611593886040518060400160405280600581526020016414d212549560da1b8152508961ffff16611785565b61159d919061204f565b6115a8906001611f27565b9050600060156115d989604051806040016040528060048152602001632420a4a960e11b8152508a61ffff16611785565b6115e3919061204f565b6115ee906001611f27565b90506115fe338861ffff166117bc565b6040805160c08101825260038152601e6020808301919091526175308284015260006060830181905260646080840152835160f88b811b6001600160f81b0319908116948301949094528a811b8416602183015289811b8416602283015288811b8416602383015287811b8416602483015286901b9092166025830152602682018190526027820181905260288201528251600981830301815260299091019092529060a08201906116af90611f98565b6001600160501b031916905261ffff8089166000908152600760209081526040918290208451815492860151938601516060870151608088015160a09098015160501c600160501b0260ff988916600160481b0269ffffffffffffffffffff1668ffffffffffffffffff928916600160381b0261ffff60381b1963ffffffff9095166301000000029490941668ffffffffffff00000019989099166101000262ffffff19909716999094169890981794909417949094169490941792909217169190911791909117905550949695505050505050565b600083838360405160200161179c93929190611e67565b60408051601f198184030181529190528051602090910120949350505050565b6000818152600460205260409020546001600160a01b0316156118125760405162461bcd60e51b815260206004820152600e60248201526d1053149150511657d3525395115160921b604482015260640161087d565b6002805490600061182283612034565b90915550506001600160a01b038216600081815260036020908152604080832080546001019055848352600490915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b80356001600160a01b03811681146118a957600080fd5b919050565b803580151581146118a957600080fd5b80356001600160501b0319811681146118a957600080fd5b803561ffff811681146118a957600080fd5b803560ff811681146118a957600080fd5b60006020828403121561190b57600080fd5b610df982611892565b6000806040838503121561192757600080fd5b61193083611892565b915061193e60208401611892565b90509250929050565b60008060006060848603121561195c57600080fd5b61196584611892565b925061197360208501611892565b915061198160408501611892565b90509250925092565b60008060006060848603121561199f57600080fd5b6119a884611892565b92506119b660208501611892565b9150604084013590509250925092565b600080600080608085870312156119dc57600080fd5b6119e585611892565b93506119f360208601611892565b925060408501359150606085013567ffffffffffffffff811115611a1657600080fd5b8501601f81018713611a2757600080fd5b8035611a3a611a3582611ec1565b611e90565b818152886020838501011115611a4f57600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b600080600060408486031215611a8657600080fd5b611a8f84611892565b9250602084013567ffffffffffffffff80821115611aac57600080fd5b818601915086601f830112611ac057600080fd5b813581811115611acf57600080fd5b8760208260051b8501011115611ae457600080fd5b6020830194508093505050509250925092565b60008060408385031215611b0a57600080fd5b611b1383611892565b915061193e602084016118ae565b60008060408385031215611b3457600080fd5b611b3d83611892565b946020939093013593505050565b600060208284031215611b5d57600080fd5b610df9826118ae565b600060208284031215611b7857600080fd5b610df9826118be565b600060208284031215611b9357600080fd5b8135610df9816120b3565b600060208284031215611bb057600080fd5b8151610df9816120b3565b600060208284031215611bcd57600080fd5b815167ffffffffffffffff811115611be457600080fd5b8201601f81018413611bf557600080fd5b8051611c03611a3582611ec1565b818152856020838501011115611c1857600080fd5b611c29826020830160208601611fcf565b95945050505050565b600060208284031215611c4457600080fd5b5035919050565b600080600080600080600060e0888a031215611c6657600080fd5b87359650611c76602089016118e8565b9550611c84604089016118d6565b9450606088013563ffffffff81168114611c9d57600080fd5b9350611cab608089016118d6565b9250611cb960a089016118e8565b9150611cc760c089016118be565b905092959891949750929550565b60008151808452611ced816020860160208601611fcf565b601f01601f19169290920160200192915050565b60008251611d13818460208701611fcf565b9190910192915050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611d5090830184611cd5565b9695505050505050565b6001600160a01b0384168152604060208201819052810182905260006001600160fb1b03831115611d8a57600080fd5b8260051b8085606085013760009201606001918252509392505050565b602081526000610df96020830184611cd5565b60006101208201905060ff835116825260ff60208401511660208301526040830151611deb604084018260ff169052565b506060830151611e00606084018260ff169052565b506080830151611e15608084018260ff169052565b5060a0830151611e2a60a084018260ff169052565b5060c0830151611e3f60c084018260ff169052565b5060e0830151611e5460e084018260ff169052565b506101009283015160ff16919092015290565b838152606060208201526000611e806060830185611cd5565b9050826040830152949350505050565b604051601f8201601f1916810167ffffffffffffffff81118282101715611eb957611eb961209d565b604052919050565b600067ffffffffffffffff821115611edb57611edb61209d565b50601f01601f191660200190565b600061ffff808316818516808303821115611f0657611f06612071565b01949350505050565b60008219821115611f2257611f22612071565b500190565b600060ff821660ff84168060ff03821115611f4457611f44612071565b019392505050565b600060ff821660ff84168160ff0481118215151615611f6d57611f6d612071565b029392505050565b600060ff821660ff841680821015611f8f57611f8f612071565b90039392505050565b805160208201516001600160501b03198082169291906016831015611fc75780818460160360031b1b83161693505b505050919050565b60005b83811015611fea578181015183820152602001611fd2565b83811115610c5b5750506000910152565b60008161200a5761200a612071565b506000190190565b600061ffff8083168181141561202a5761202a612071565b6001019392505050565b600060001982141561204857612048612071565b5060010190565b60008261206c57634e487b7160e01b600052601260045260246000fd5b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b0319811681146120c957600080fd5b5056fea26469706673582212205bec24c482628ce8b7bfbc4c39460f225f9958335d0c19120ca0ad3cc3a7a92a64736f6c63430008070033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
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.