Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 19 from a total of 19 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Can Claim | 8843754 | 1829 days ago | IN | 0 ETH | 0.00005516 | ||||
Callback | 6781407 | 2166 days ago | IN | 0 ETH | 0.00028104 | ||||
Claim | 6567858 | 2201 days ago | IN | 0 ETH | 0.00424423 | ||||
Set Owner | 6026931 | 2291 days ago | IN | 0 ETH | 0.00057174 | ||||
Callback | 6025957 | 2291 days ago | IN | 0 ETH | 0.00037518 | ||||
Purchase | 6025953 | 2292 days ago | IN | 0.423 ETH | 0.00026278 | ||||
Callback | 5974427 | 2300 days ago | IN | 0 ETH | 0.00018241 | ||||
Callback | 5974427 | 2300 days ago | IN | 0 ETH | 0.00093796 | ||||
Callback | 5974423 | 2300 days ago | IN | 0 ETH | 0.00093796 | ||||
Purchase | 5974391 | 2300 days ago | IN | 0.06375 ETH | 0.0005086 | ||||
Purchase | 5974367 | 2300 days ago | IN | 0.06375 ETH | 0.0005086 | ||||
Callback | 5973903 | 2300 days ago | IN | 0 ETH | 0.00046905 | ||||
Purchase | 5973387 | 2300 days ago | IN | 0.06375 ETH | 0.0005086 | ||||
Callback | 5971833 | 2301 days ago | IN | 0 ETH | 0.00028138 | ||||
Claim Multiple | 5971827 | 2301 days ago | IN | 0 ETH | 0.00651711 | ||||
Callback | 5971667 | 2301 days ago | IN | 0 ETH | 0.00023449 | ||||
Claim Multiple | 5971625 | 2301 days ago | IN | 0 ETH | 0.00587343 | ||||
Purchase | 5971489 | 2301 days ago | IN | 0.3825 ETH | 0.00066255 | ||||
0x60806040 | 5970495 | 2301 days ago | IN | 0 ETH | 0.12099741 |
Loading...
Loading
Contract Name:
EpicPackThree
Compiler Version
v0.4.24+commit.e67f0147
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-07-17 */ pragma solidity 0.4.24; contract Ownable { address public owner; constructor() public { owner = msg.sender; } function setOwner(address _owner) public onlyOwner { owner = _owner; } modifier onlyOwner { require(msg.sender == owner); _; } } contract Vault is Ownable { function () public payable { } function getBalance() public view returns (uint) { return address(this).balance; } function withdraw(uint amount) public onlyOwner { require(address(this).balance >= amount); owner.transfer(amount); } function withdrawAll() public onlyOwner { withdraw(address(this).balance); } } contract CappedVault is Vault { uint public limit; uint withdrawn = 0; constructor() public { limit = 33333 ether; } function () public payable { require(total() + msg.value <= limit); } function total() public view returns(uint) { return getBalance() + withdrawn; } function withdraw(uint amount) public onlyOwner { require(address(this).balance >= amount); owner.transfer(amount); withdrawn += amount; } } contract PreviousInterface { function ownerOf(uint id) public view returns (address); function getCard(uint id) public view returns (uint16, uint16); function totalSupply() public view returns (uint); function burnCount() public view returns (uint); } contract Pausable is Ownable { event Pause(); event Unpause(); bool public paused = false; /** * @dev Modifier to make a function callable only when the contract is not paused. */ modifier whenNotPaused() { require(!paused); _; } /** * @dev Modifier to make a function callable only when the contract is paused. */ modifier whenPaused() { require(paused); _; } /** * @dev called by the owner to pause, triggers stopped state */ function pause() onlyOwner whenNotPaused public { paused = true; emit Pause(); } /** * @dev called by the owner to unpause, returns to normal state */ function unpause() onlyOwner whenPaused public { paused = false; emit Unpause(); } } contract Governable { event Pause(); event Unpause(); address public governor; bool public paused = false; constructor() public { governor = msg.sender; } function setGovernor(address _gov) public onlyGovernor { governor = _gov; } modifier onlyGovernor { require(msg.sender == governor); _; } /** * @dev Modifier to make a function callable only when the contract is not paused. */ modifier whenNotPaused() { require(!paused); _; } /** * @dev Modifier to make a function callable only when the contract is paused. */ modifier whenPaused() { require(paused); _; } /** * @dev called by the owner to pause, triggers stopped state */ function pause() onlyGovernor whenNotPaused public { paused = true; emit Pause(); } /** * @dev called by the owner to unpause, returns to normal state */ function unpause() onlyGovernor whenPaused public { paused = false; emit Unpause(); } } contract CardBase is Governable { struct Card { uint16 proto; uint16 purity; } function getCard(uint id) public view returns (uint16 proto, uint16 purity) { Card memory card = cards[id]; return (card.proto, card.purity); } function getShine(uint16 purity) public pure returns (uint8) { return uint8(purity / 1000); } Card[] public cards; } contract CardProto is CardBase { event NewProtoCard( uint16 id, uint8 season, uint8 god, Rarity rarity, uint8 mana, uint8 attack, uint8 health, uint8 cardType, uint8 tribe, bool packable ); struct Limit { uint64 limit; bool exists; } // limits for mythic cards mapping(uint16 => Limit) public limits; // can only set limits once function setLimit(uint16 id, uint64 limit) public onlyGovernor { Limit memory l = limits[id]; require(!l.exists); limits[id] = Limit({ limit: limit, exists: true }); } function getLimit(uint16 id) public view returns (uint64 limit, bool set) { Limit memory l = limits[id]; return (l.limit, l.exists); } // could make these arrays to save gas // not really necessary - will be update a very limited no of times mapping(uint8 => bool) public seasonTradable; mapping(uint8 => bool) public seasonTradabilityLocked; uint8 public currentSeason; function makeTradable(uint8 season) public onlyGovernor { seasonTradable[season] = true; } function makeUntradable(uint8 season) public onlyGovernor { require(!seasonTradabilityLocked[season]); seasonTradable[season] = false; } function makePermanantlyTradable(uint8 season) public onlyGovernor { require(seasonTradable[season]); seasonTradabilityLocked[season] = true; } function isTradable(uint16 proto) public view returns (bool) { return seasonTradable[protos[proto].season]; } function nextSeason() public onlyGovernor { //Seasons shouldn't go to 0 if there is more than the uint8 should hold, the governor should know this ¯\_(ツ)_/¯ -M require(currentSeason <= 255); currentSeason++; mythic.length = 0; legendary.length = 0; epic.length = 0; rare.length = 0; common.length = 0; } enum Rarity { Common, Rare, Epic, Legendary, Mythic } uint8 constant SPELL = 1; uint8 constant MINION = 2; uint8 constant WEAPON = 3; uint8 constant HERO = 4; struct ProtoCard { bool exists; uint8 god; uint8 season; uint8 cardType; Rarity rarity; uint8 mana; uint8 attack; uint8 health; uint8 tribe; } // there is a particular design decision driving this: // need to be able to iterate over mythics only for card generation // don't store 5 different arrays: have to use 2 ids // better to bear this cost (2 bytes per proto card) // rather than 1 byte per instance uint16 public protoCount; mapping(uint16 => ProtoCard) protos; uint16[] public mythic; uint16[] public legendary; uint16[] public epic; uint16[] public rare; uint16[] public common; function addProtos( uint16[] externalIDs, uint8[] gods, Rarity[] rarities, uint8[] manas, uint8[] attacks, uint8[] healths, uint8[] cardTypes, uint8[] tribes, bool[] packable ) public onlyGovernor returns(uint16) { for (uint i = 0; i < externalIDs.length; i++) { ProtoCard memory card = ProtoCard({ exists: true, god: gods[i], season: currentSeason, cardType: cardTypes[i], rarity: rarities[i], mana: manas[i], attack: attacks[i], health: healths[i], tribe: tribes[i] }); _addProto(externalIDs[i], card, packable[i]); } } function addProto( uint16 externalID, uint8 god, Rarity rarity, uint8 mana, uint8 attack, uint8 health, uint8 cardType, uint8 tribe, bool packable ) public onlyGovernor returns(uint16) { ProtoCard memory card = ProtoCard({ exists: true, god: god, season: currentSeason, cardType: cardType, rarity: rarity, mana: mana, attack: attack, health: health, tribe: tribe }); _addProto(externalID, card, packable); } function addWeapon( uint16 externalID, uint8 god, Rarity rarity, uint8 mana, uint8 attack, uint8 durability, bool packable ) public onlyGovernor returns(uint16) { ProtoCard memory card = ProtoCard({ exists: true, god: god, season: currentSeason, cardType: WEAPON, rarity: rarity, mana: mana, attack: attack, health: durability, tribe: 0 }); _addProto(externalID, card, packable); } function addSpell(uint16 externalID, uint8 god, Rarity rarity, uint8 mana, bool packable) public onlyGovernor returns(uint16) { ProtoCard memory card = ProtoCard({ exists: true, god: god, season: currentSeason, cardType: SPELL, rarity: rarity, mana: mana, attack: 0, health: 0, tribe: 0 }); _addProto(externalID, card, packable); } function addMinion( uint16 externalID, uint8 god, Rarity rarity, uint8 mana, uint8 attack, uint8 health, uint8 tribe, bool packable ) public onlyGovernor returns(uint16) { ProtoCard memory card = ProtoCard({ exists: true, god: god, season: currentSeason, cardType: MINION, rarity: rarity, mana: mana, attack: attack, health: health, tribe: tribe }); _addProto(externalID, card, packable); } function _addProto(uint16 externalID, ProtoCard memory card, bool packable) internal { require(!protos[externalID].exists); card.exists = true; protos[externalID] = card; protoCount++; emit NewProtoCard( externalID, currentSeason, card.god, card.rarity, card.mana, card.attack, card.health, card.cardType, card.tribe, packable ); if (packable) { Rarity rarity = card.rarity; if (rarity == Rarity.Common) { common.push(externalID); } else if (rarity == Rarity.Rare) { rare.push(externalID); } else if (rarity == Rarity.Epic) { epic.push(externalID); } else if (rarity == Rarity.Legendary) { legendary.push(externalID); } else if (rarity == Rarity.Mythic) { mythic.push(externalID); } else { require(false); } } } function getProto(uint16 id) public view returns( bool exists, uint8 god, uint8 season, uint8 cardType, Rarity rarity, uint8 mana, uint8 attack, uint8 health, uint8 tribe ) { ProtoCard memory proto = protos[id]; return ( proto.exists, proto.god, proto.season, proto.cardType, proto.rarity, proto.mana, proto.attack, proto.health, proto.tribe ); } function getRandomCard(Rarity rarity, uint16 random) public view returns (uint16) { // modulo bias is fine - creates rarity tiers etc // will obviously revert is there are no cards of that type: this is expected - should never happen if (rarity == Rarity.Common) { return common[random % common.length]; } else if (rarity == Rarity.Rare) { return rare[random % rare.length]; } else if (rarity == Rarity.Epic) { return epic[random % epic.length]; } else if (rarity == Rarity.Legendary) { return legendary[random % legendary.length]; } else if (rarity == Rarity.Mythic) { // make sure a mythic is available uint16 id; uint64 limit; bool set; for (uint i = 0; i < mythic.length; i++) { id = mythic[(random + i) % mythic.length]; (limit, set) = getLimit(id); if (set && limit > 0){ return id; } } // if not, they get a legendary :( return legendary[random % legendary.length]; } require(false); return 0; } // can never adjust tradable cards // each season gets a 'balancing beta' // totally immutable: season, rarity function replaceProto( uint16 index, uint8 god, uint8 cardType, uint8 mana, uint8 attack, uint8 health, uint8 tribe ) public onlyGovernor { ProtoCard memory pc = protos[index]; require(!seasonTradable[pc.season]); protos[index] = ProtoCard({ exists: true, god: god, season: pc.season, cardType: cardType, rarity: pc.rarity, mana: mana, attack: attack, health: health, tribe: tribe }); } } contract MigrationInterface { function createCard(address user, uint16 proto, uint16 purity) public returns (uint); function getRandomCard(CardProto.Rarity rarity, uint16 random) public view returns (uint16); function migrate(uint id) public; } contract CardPackThree { MigrationInterface public migration; uint public creationBlock; constructor(MigrationInterface _core) public payable { migration = _core; creationBlock = 5939061 + 2000; // set to creation block of first contracts + 8 hours for down time } event Referral(address indexed referrer, uint value, address purchaser); /** * purchase 'count' of this type of pack */ function purchase(uint16 packCount, address referrer) public payable; // store purity and shine as one number to save users gas function _getPurity(uint16 randOne, uint16 randTwo) internal pure returns (uint16) { if (randOne >= 998) { return 3000 + randTwo; } else if (randOne >= 988) { return 2000 + randTwo; } else if (randOne >= 938) { return 1000 + randTwo; } else { return randTwo; } } } contract FirstPheonix is Pausable { MigrationInterface core; constructor(MigrationInterface _core) public { core = _core; } address[] public approved; uint16 PHEONIX_PROTO = 380; mapping(address => bool) public claimed; function approvePack(address toApprove) public onlyOwner { approved.push(toApprove); } function isApproved(address test) public view returns (bool) { for (uint i = 0; i < approved.length; i++) { if (approved[i] == test) { return true; } } return false; } // pause once cards become tradable function claimPheonix(address user) public returns (bool){ require(isApproved(msg.sender)); if (claimed[user] || paused){ return false; } claimed[user] = true; core.createCard(user, PHEONIX_PROTO, 0); return true; } } contract PresalePackThree is CardPackThree, Pausable { CappedVault public vault; Purchase[] public purchases; function getPurchaseCount() public view returns (uint) { return purchases.length; } struct Purchase { uint16 current; uint16 count; address user; uint randomness; uint64 commit; } event PacksPurchased(uint indexed id, address indexed user, uint16 count); event PackOpened(uint indexed id, uint16 startIndex, address indexed user, uint[] cardIDs); event RandomnessReceived(uint indexed id, address indexed user, uint16 count, uint randomness); constructor(MigrationInterface _core, CappedVault _vault) public payable CardPackThree(_core) { vault = _vault; } function basePrice() public returns (uint); function getCardDetails(uint16 packIndex, uint8 cardIndex, uint result) public view returns (uint16 proto, uint16 purity); function packSize() public view returns (uint8) { return 5; } function packsPerClaim() public view returns (uint16) { return 15; } // start in bytes, length in bytes function extract(uint num, uint length, uint start) internal pure returns (uint) { return (((1 << (length * 8)) - 1) & (num >> ((start * 8) - 1))); } function purchase(uint16 packCount, address referrer) whenNotPaused public payable { require(packCount > 0); require(referrer != msg.sender); uint price = calculatePrice(basePrice(), packCount); require(msg.value >= price); Purchase memory p = Purchase({ user: msg.sender, count: packCount, commit: uint64(block.number), randomness: 0, current: 0 }); uint id = purchases.push(p) - 1; emit PacksPurchased(id, msg.sender, packCount); if (referrer != address(0)) { uint commission = price / 10; referrer.transfer(commission); price -= commission; emit Referral(referrer, commission, msg.sender); } address(vault).transfer(price); } // can be called by anybody // can miners withhold blocks --> not really // giving up block reward for extra chance --> still really low function callback(uint id) public { Purchase storage p = purchases[id]; require(p.randomness == 0); bytes32 bhash = blockhash(p.commit); // will get the same on every block // only use properties which can't be altered by the user uint random = uint(keccak256(abi.encodePacked(bhash, p.user, address(this), p.count))); // can't callback on the original block require(uint64(block.number) != p.commit); if (uint(bhash) == 0) { // should never happen (must call within next 256 blocks) // if it does, just give them 1: will become common and therefore less valuable // set to 1 rather than 0 to avoid calling claim before randomness p.randomness = 1; } else { p.randomness = random; } emit RandomnessReceived(id, p.user, p.count, p.randomness); } function claim(uint id) public { Purchase storage p = purchases[id]; require(canClaim); uint16 proto; uint16 purity; uint16 count = p.count; uint result = p.randomness; uint8 size = packSize(); address user = p.user; uint16 current = p.current; require(result != 0); // have to wait for the callback // require(user == msg.sender); // not needed require(count > 0); uint[] memory ids = new uint[](size); uint16 end = current + packsPerClaim() > count ? count : current + packsPerClaim(); require(end > current); for (uint16 i = current; i < end; i++) { for (uint8 j = 0; j < size; j++) { (proto, purity) = getCardDetails(i, j, result); ids[j] = migration.createCard(user, proto, purity); } emit PackOpened(id, (i * size), user, ids); } p.current += (end - current); } function predictPacks(uint id) external view returns (uint16[] protos, uint16[] purities) { Purchase memory p = purchases[id]; uint16 proto; uint16 purity; uint16 count = p.count; uint result = p.randomness; uint8 size = packSize(); purities = new uint16[](size * count); protos = new uint16[](size * count); for (uint16 i = 0; i < count; i++) { for (uint8 j = 0; j < size; j++) { (proto, purity) = getCardDetails(i, j, result); purities[(i * size) + j] = purity; protos[(i * size) + j] = proto; } } return (protos, purities); } function calculatePrice(uint base, uint16 packCount) public view returns (uint) { // roughly 6k blocks per day uint difference = block.number - creationBlock; uint numDays = difference / 6000; if (20 > numDays) { return (base - (((20 - numDays) * base) / 100)) * packCount; } return base * packCount; } function _getCommonPlusRarity(uint32 rand) internal pure returns (CardProto.Rarity) { if (rand == 999999) { return CardProto.Rarity.Mythic; } else if (rand >= 998345) { return CardProto.Rarity.Legendary; } else if (rand >= 986765) { return CardProto.Rarity.Epic; } else if (rand >= 924890) { return CardProto.Rarity.Rare; } else { return CardProto.Rarity.Common; } } function _getRarePlusRarity(uint32 rand) internal pure returns (CardProto.Rarity) { if (rand == 999999) { return CardProto.Rarity.Mythic; } else if (rand >= 981615) { return CardProto.Rarity.Legendary; } else if (rand >= 852940) { return CardProto.Rarity.Epic; } else { return CardProto.Rarity.Rare; } } function _getEpicPlusRarity(uint32 rand) internal pure returns (CardProto.Rarity) { if (rand == 999999) { return CardProto.Rarity.Mythic; } else if (rand >= 981615) { return CardProto.Rarity.Legendary; } else { return CardProto.Rarity.Epic; } } function _getLegendaryPlusRarity(uint32 rand) internal pure returns (CardProto.Rarity) { if (rand == 999999) { return CardProto.Rarity.Mythic; } else { return CardProto.Rarity.Legendary; } } bool public canClaim = true; function setCanClaim(bool claim) public onlyOwner { canClaim = claim; } function getComponents( uint16 i, uint8 j, uint rand ) internal returns ( uint random, uint32 rarityRandom, uint16 purityOne, uint16 purityTwo, uint16 protoRandom ) { random = uint(keccak256(abi.encodePacked(i, rand, j))); rarityRandom = uint32(extract(random, 4, 10) % 1000000); purityOne = uint16(extract(random, 2, 4) % 1000); purityTwo = uint16(extract(random, 2, 6) % 1000); protoRandom = uint16(extract(random, 2, 8) % (2**16-1)); return (random, rarityRandom, purityOne, purityTwo, protoRandom); } function withdraw() public onlyOwner { owner.transfer(address(this).balance); } } contract PackMultiplier is PresalePackThree { address[] public packs; uint16 public multiplier = 3; FirstPheonix pheonix; PreviousInterface old; uint16 public packLimit = 5; constructor(PreviousInterface _old, address[] _packs, MigrationInterface _core, CappedVault vault, FirstPheonix _pheonix) public PresalePackThree(_core, vault) { packs = _packs; pheonix = _pheonix; old = _old; } function getCardCount() internal view returns (uint) { return old.totalSupply() + old.burnCount(); } function isPriorPack(address test) public view returns(bool) { for (uint i = 0; i < packs.length; i++) { if (packs[i] == test) { return true; } } return false; } event Status(uint before, uint aft); function claimMultiple(address pack, uint purchaseID) public returns (uint16, address) { require(isPriorPack(pack)); uint length = getCardCount(); PresalePackThree(pack).claim(purchaseID); uint lengthAfter = getCardCount(); require(lengthAfter > length); uint16 cardDifference = uint16(lengthAfter - length); require(cardDifference % 5 == 0); uint16 packCount = cardDifference / 5; uint16 extra = packCount * multiplier; address lastCardOwner = old.ownerOf(lengthAfter - 1); Purchase memory p = Purchase({ user: lastCardOwner, count: extra, commit: uint64(block.number), randomness: 0, current: 0 }); uint id = purchases.push(p) - 1; emit PacksPurchased(id, lastCardOwner, extra); // try to give them a first pheonix pheonix.claimPheonix(lastCardOwner); emit Status(length, lengthAfter); if (packCount <= packLimit) { for (uint i = 0; i < cardDifference; i++) { migration.migrate(lengthAfter - 1 - i); } } return (extra, lastCardOwner); } function setPackLimit(uint16 limit) public onlyOwner { packLimit = limit; } } contract EpicPackThree is PackMultiplier { function basePrice() public returns (uint) { return 75 finney; } constructor(PreviousInterface _old, address[] _packs, MigrationInterface _core, CappedVault vault, FirstPheonix _pheonix) public PackMultiplier(_old, _packs, _core, vault, _pheonix) { } function getCardDetails(uint16 packIndex, uint8 cardIndex, uint result) public view returns (uint16 proto, uint16 purity) { uint random; uint32 rarityRandom; uint16 protoRandom; uint16 purityOne; uint16 purityTwo; CardProto.Rarity rarity; (random, rarityRandom, purityOne, purityTwo, protoRandom) = getComponents(packIndex, cardIndex, result); if (cardIndex == 4) { rarity = _getEpicPlusRarity(rarityRandom); } else { rarity = _getCommonPlusRarity(rarityRandom); } purity = _getPurity(purityOne, purityTwo); proto = migration.getRandomCard(rarity, protoRandom); return (proto, purity); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"packSize","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"migration","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"creationBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"multiplier","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"id","type":"uint256"}],"name":"claim","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"packCount","type":"uint16"},{"name":"referrer","type":"address"}],"name":"purchase","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"pack","type":"address"},{"name":"purchaseID","type":"uint256"}],"name":"claimMultiple","outputs":[{"name":"","type":"uint16"},{"name":"","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"canClaim","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"purchases","outputs":[{"name":"current","type":"uint16"},{"name":"count","type":"uint16"},{"name":"user","type":"address"},{"name":"randomness","type":"uint256"},{"name":"commit","type":"uint64"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"packsPerClaim","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"packs","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"test","type":"address"}],"name":"isPriorPack","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getPurchaseCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"packIndex","type":"uint16"},{"name":"cardIndex","type":"uint8"},{"name":"result","type":"uint256"}],"name":"getCardDetails","outputs":[{"name":"proto","type":"uint16"},{"name":"purity","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"claim","type":"bool"}],"name":"setCanClaim","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"basePrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"id","type":"uint256"}],"name":"predictPacks","outputs":[{"name":"protos","type":"uint16[]"},{"name":"purities","type":"uint16[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"limit","type":"uint16"}],"name":"setPackLimit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"base","type":"uint256"},{"name":"packCount","type":"uint16"}],"name":"calculatePrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"packLimit","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"vault","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"id","type":"uint256"}],"name":"callback","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_old","type":"address"},{"name":"_packs","type":"address[]"},{"name":"_core","type":"address"},{"name":"vault","type":"address"},{"name":"_pheonix","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"before","type":"uint256"},{"indexed":false,"name":"aft","type":"uint256"}],"name":"Status","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"id","type":"uint256"},{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"count","type":"uint16"}],"name":"PacksPurchased","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"id","type":"uint256"},{"indexed":false,"name":"startIndex","type":"uint16"},{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"cardIDs","type":"uint256[]"}],"name":"PackOpened","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"id","type":"uint256"},{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"count","type":"uint16"},{"indexed":false,"name":"randomness","type":"uint256"}],"name":"RandomnessReceived","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"referrer","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"purchaser","type":"address"}],"name":"Referral","type":"event"}]
Contract Creation Code
60806040526002805460a060020a60ff02191690556005805460ff191660011790556007805461ffff19166003179055600880547405000000000000000000000000000000000000000060a060020a61ffff02199091161790553480156200006657600080fd5b5060405162001df638038062001df68339810160409081528151602080840151928401516060850151608086015160008054600160a060020a03808616600160a060020a031992831617909255625aa745600155600280548216331790556003805492851692909116919091179055949095018051939590949193909286918691869186918691620000ff91600691908701906200014b565b50600780546201000060b060020a03191662010000600160a060020a039384160217905560088054600160a060020a031916959091169490941790935550620001df9650505050505050565b828054828255906000526020600020908101928215620001a3579160200282015b82811115620001a35782518254600160a060020a031916600160a060020a039091161782556020909201916001909101906200016c565b50620001b1929150620001b5565b5090565b620001dc91905b80821115620001b1578054600160a060020a0319168155600101620001bc565b90565b611c0780620001ef6000396000f3006080604052600436106101505763ffffffff60e060020a60003504166306a628d4811461015557806313af4035146101805780631705a3bd146101a357806317634514146101d45780631b3ed722146101fb578063379607f514610227578063396c82281461023f5780633ccfd60b1461025a5780633f4ba83a1461026f5780635c975abb146102845780636bc3e4a8146102ad5780636dc7a627146102f75780638392fe311461030c5780638456cb59146103685780638be4339b1461037d5780638da5cb5b14610392578063b84c1392146103a7578063bd6cac4f146103bf578063becd283f146103e0578063c2f0bb29146103f5578063c503101e1461043b578063c7876ea414610455578063ca2bf0471461046a578063d42a50111461051b578063e3f7faaf14610537578063eb1098b814610556578063fbfa77cf1461056b578063ff585caf14610580575b600080fd5b34801561016157600080fd5b5061016a610598565b6040805160ff9092168252519081900360200190f35b34801561018c57600080fd5b506101a1600160a060020a036004351661059d565b005b3480156101af57600080fd5b506101b86105e3565b60408051600160a060020a039092168252519081900360200190f35b3480156101e057600080fd5b506101e96105f2565b60408051918252519081900360200190f35b34801561020757600080fd5b506102106105f8565b6040805161ffff9092168252519081900360200190f35b34801561023357600080fd5b506101a1600435610602565b6101a161ffff60043516600160a060020a03602435166108ec565b34801561026657600080fd5b506101a1610ba1565b34801561027b57600080fd5b506101a1610bf5565b34801561029057600080fd5b50610299610c6d565b604080519115158252519081900360200190f35b3480156102b957600080fd5b506102d1600160a060020a0360043516602435610c7d565b6040805161ffff9093168352600160a060020a0390911660208301528051918290030190f35b34801561030357600080fd5b50610299611104565b34801561031857600080fd5b5061032460043561110d565b6040805161ffff9687168152949095166020850152600160a060020a0390921683850152606083015267ffffffffffffffff16608082015290519081900360a00190f35b34801561037457600080fd5b506101a1611169565b34801561038957600080fd5b506102106111e6565b34801561039e57600080fd5b506101b86111eb565b3480156103b357600080fd5b506101b86004356111fa565b3480156103cb57600080fd5b50610299600160a060020a0360043516611222565b3480156103ec57600080fd5b506101e9611280565b34801561040157600080fd5b5061041a61ffff6004351660ff60243516604435611286565b6040805161ffff938416815291909216602082015281519081900390910190f35b34801561044757600080fd5b506101a160043515156113a0565b34801561046157600080fd5b506101e96113ca565b34801561047657600080fd5b506104826004356113d6565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156104c65781810151838201526020016104ae565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156105055781810151838201526020016104ed565b5050505090500194505050505060405180910390f35b34801561052757600080fd5b506101a161ffff6004351661159b565b34801561054357600080fd5b506101e960043561ffff602435166115e5565b34801561056257600080fd5b50610210611626565b34801561057757600080fd5b506101b8611637565b34801561058c57600080fd5b506101a1600435611646565b600590565b600254600160a060020a031633146105b457600080fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600054600160a060020a031681565b60015481565b60075461ffff1681565b6000806000806000806000806060600080600060048d81548110151561062457fe5b600091825260209091206005546003909202019c5060ff16151561064757600080fd5b8b5460018d01546201000090910461ffff1699509750610665610598565b8c54909750600160a060020a03640100000000820416965061ffff16945087151561068f57600080fd5b600061ffff8a16116106a057600080fd5b8660ff166040519080825280602002602001820160405280156106cd578160200160208202803883390190505b5093508861ffff166106dd6111e6565b860161ffff16116106f7576106f06111e6565b85016106f9565b885b925061ffff8086169084161161070e57600080fd5b8491505b8261ffff168261ffff1610156108c5575060005b8660ff168160ff1610156108255761073f82828a611286565b809b50819c5050506000809054906101000a9004600160a060020a0316600160a060020a031663fb36eba1878d8d6040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a031681526020018361ffff1661ffff1681526020018261ffff1661ffff1681526020019350505050602060405180830381600087803b1580156107d657600080fd5b505af11580156107ea573d6000803e3d6000fd5b505050506040513d602081101561080057600080fd5b50518451859060ff841690811061081357fe5b60209081029091010152600101610726565b85600160a060020a03168d7f69ac64af86d3ef40c9def928534f6a6a9e12d85ec3af2948bd66b802afcc10468960ff16850287604051808361ffff1661ffff16815260200180602001828103825283818151815260200191508051906020019060200280838360005b838110156108a657818101518382015260200161088e565b50505050905001935050505060405180910390a3600190910190610712565b5050895461ffff1981169390910361ffff9182160116919091179097555050505050505050565b60006108f6611bad565b600254600090819060a060020a900460ff161561091257600080fd5b600061ffff87161161092357600080fd5b600160a060020a03851633141561093957600080fd5b61094a6109446113ca565b876115e5565b93503484111561095957600080fd5b6040805160a081018252600080825261ffff8981166020808501828152338688018181526060880187815267ffffffffffffffff43811660808b01908152600480546001810182559a528a5160038b027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b8101805498519651600160a060020a03166401000000000277ffffffffffffffffffffffffffffffffffffffff0000000019978d16620100000263ffff00001994909d1661ffff19909a1699909917929092169a909a179490941695909517909255517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c87015591517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19d90950180549590921667ffffffffffffffff19909516949094179055855191825294519397509195509285927f861fd6f8fe14603acc05fa404f8cca86371619cac8a65a92edf687f81b9bafbd9281900390910190a3600160a060020a03851615610b5e5750604051600a840490600160a060020a0386169082156108fc029083906000818181858888f19350505050158015610b15573d6000803e3d6000fd5b506040805182815233602082015281519583900395600160a060020a038816927f13aa7090696e2a1d666cfc6046f2f72f1c4e0290649b47bab28d1b370ad73783928290030190a25b600354604051600160a060020a039091169085156108fc029086906000818181858888f19350505050158015610b98573d6000803e3d6000fd5b50505050505050565b600254600160a060020a03163314610bb857600080fd5b600254604051600160a060020a0390911690303180156108fc02916000818181858888f19350505050158015610bf2573d6000803e3d6000fd5b50565b600254600160a060020a03163314610c0c57600080fd5b60025460a060020a900460ff161515610c2457600080fd5b6002805474ff0000000000000000000000000000000000000000191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b60025460a060020a900460ff1681565b600080600080600080600080610c91611bad565b600080610c9d8d611222565b1515610ca857600080fd5b610cb061180f565b98508c600160a060020a031663379607f58d6040518263ffffffff1660e060020a02815260040180828152602001915050600060405180830381600087803b158015610cfb57600080fd5b505af1158015610d0f573d6000803e3d6000fd5b50505050610d1b61180f565b9750888811610d2957600080fd5b8888039650600561ffff88160661ffff1615610d4457600080fd5b600561ffff8816600754600854604080517f6352211e0000000000000000000000000000000000000000000000000000000081526000198e016004820152905194909304995061ffff90911689029750600160a060020a031691636352211e916024808201926020929091908290030181600087803b158015610dc657600080fd5b505af1158015610dda573d6000803e3d6000fd5b505050506040513d6020811015610df057600080fd5b50516040805160a081018252600080825261ffff8981166020848101828152600160a060020a038089168789018181526060890188815267ffffffffffffffff43811660808c01908152600480546001810182559b528b5160038c027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b81018054995196519098166401000000000277ffffffffffffffffffffffffffffffffffffffff0000000019968d16620100000263ffff00001993909d1661ffff19909a1699909917919091169a909a17939093169590951790935591517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c87015590517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19d90950180549590921667ffffffffffffffff19909516949094179055855191825294519599509297509095509285927f861fd6f8fe14603acc05fa404f8cca86371619cac8a65a92edf687f81b9bafbd928290030190a3600754604080517ff88218e0000000000000000000000000000000000000000000000000000000008152600160a060020a0387811660048301529151620100009093049091169163f88218e0916024808201926020929091908290030181600087803b158015610fd857600080fd5b505af1158015610fec573d6000803e3d6000fd5b505050506040513d602081101561100257600080fd5b5050604080518a8152602081018a905281517f31a1adb447f9b6b89f24bf104f0b7a06975ad9f35670dbfaf7ce29190ec54762929181900390910190a160085461ffff60a060020a9091048116908716116110f1575060005b8661ffff168110156110f15760008054604080517f454b0608000000000000000000000000000000000000000000000000000000008152848c036000190160048201529051600160a060020a039092169263454b06089260248084019382900301818387803b1580156110cd57600080fd5b505af11580156110e1573d6000803e3d6000fd5b50506001909201915061105b9050565b50929b919a509098505050505050505050565b60055460ff1681565b600480548290811061111b57fe5b600091825260209091206003909102018054600182015460029092015461ffff80831694506201000083041692640100000000909204600160a060020a0316919067ffffffffffffffff1685565b600254600160a060020a0316331461118057600080fd5b60025460a060020a900460ff161561119757600080fd5b6002805474ff0000000000000000000000000000000000000000191660a060020a1790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b600f90565b600254600160a060020a031681565b600680548290811061120857fe5b600091825260209091200154600160a060020a0316905081565b6000805b6006548110156112755782600160a060020a031660068281548110151561124957fe5b600091825260209091200154600160a060020a0316141561126d576001915061127a565b600101611226565b600091505b50919050565b60045490565b60008060008060008060008061129d8b8b8b61192c565b9399509197509195509093509150600460ff8b1614156112c7576112c085611a93565b90506112d3565b6112d085611acf565b90505b6112dd8383611b3a565b6000546040517fcaa19168000000000000000000000000000000000000000000000000000000008152919850600160a060020a03169063caa1916890839087906004908101908190849081111561133057fe5b60ff1681526020018261ffff1661ffff16815260200192505050602060405180830381600087803b15801561136457600080fd5b505af1158015611378573d6000803e3d6000fd5b505050506040513d602081101561138e57600080fd5b50519750505050505050935093915050565b600254600160a060020a031633146113b757600080fd5b6005805460ff1916911515919091179055565b67010a741a4627800090565b6060806113e1611bad565b600080600080600080600060048b8154811015156113fb57fe5b60009182526020918290206040805160a0810182526003909302909101805461ffff808216855262010000820416948401859052600160a060020a03640100000000909104169183019190915260018101546060830181905260029091015467ffffffffffffffff1660808301529099509095509350611479610598565b9250848360ff160261ffff166040519080825280602002602001820160405280156114ae578160200160208202803883390190505b509850848360ff160261ffff166040519080825280602002602001820160405280156114e4578160200160208202803883390190505b509950600091505b8461ffff168261ffff16101561158e575060005b8260ff168160ff16101561158357611519828286611286565b8a51919850965086908a9061ffff60ff8781168702908616011690811061153c57fe5b61ffff928316602091820290920101528a5188918c9160ff87811687029086160190911690811061156957fe5b61ffff909216602092830290910190910152600101611500565b6001909101906114ec565b5050505050505050915091565b600254600160a060020a031633146115b257600080fd5b6008805461ffff90921660a060020a0275ffff000000000000000000000000000000000000000019909216919091179055565b6001546000904303611770810460148110156116145761ffff841660646014839003870204860302925061161e565b8361ffff16850292505b505092915050565b60085460a060020a900461ffff1681565b600354600160a060020a031681565b600080600060048481548110151561165a57fe5b906000526020600020906003020192508260010154600014151561167d57600080fd5b600283015483546040805167ffffffffffffffff9093164060208085018290526401000000008404600160a060020a03166c0100000000000000000000000090810286850152300260548601526201000090930461ffff167e010000000000000000000000000000000000000000000000000000000000000260688501528151808503604a018152606a90940191829052835190955090918291908401908083835b6020831061173e5780518252601f19909201916020918201910161171f565b5181516000196020949094036101000a93909301928316921916919091179052604051920182900390912060028701549094504367ffffffffffffffff90811691161415925061179091505057600080fd5b8115156117a2576001838101556117aa565b600183018190555b825460018401546040805162010000840461ffff16815260208101929092528051640100000000909304600160a060020a03169287927fedb5ce4012b6e9c5904afa2ffad9811d5c2e91e6bca8914cf7e3ffc28e630c5792908290030190a350505050565b600854604080517f524773ce0000000000000000000000000000000000000000000000000000000081529051600092600160a060020a03169163524773ce91600480830192602092919082900301818787803b15801561186e57600080fd5b505af1158015611882573d6000803e3d6000fd5b505050506040513d602081101561189857600080fd5b5051600854604080517f18160ddd0000000000000000000000000000000000000000000000000000000081529051600160a060020a03909216916318160ddd916004808201926020929091908290030181600087803b1580156118fa57600080fd5b505af115801561190e573d6000803e3d6000fd5b505050506040513d602081101561192457600080fd5b505101905090565b6000806000806000878688604051602001808461ffff1661ffff167e010000000000000000000000000000000000000000000000000000000000000281526002018381526020018260ff1660ff167f010000000000000000000000000000000000000000000000000000000000000002815260010193505050506040516020818303038152906040526040518082805190602001908083835b602083106119e45780518252601f1990920191602091820191016119c5565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020600190049450620f4240611a28866004600a611b8d565b811515611a3157fe5b0693506103e8611a448660026004611b8d565b811515611a4d57fe5b0692506103e8611a608660026006611b8d565b811515611a6957fe5b06915061ffff611a7c8660026008611b8d565b811515611a8557fe5b069050939792965093509350565b60008163ffffffff16620f423f1415611aae57506004611aca565b620efa6f63ffffffff831610611ac657506003611aca565b5060025b919050565b60008163ffffffff16620f423f1415611aea57506004611aca565b620f3bc963ffffffff831610611b0257506003611aca565b620f0e8d63ffffffff831610611b1a57506002611aca565b620e1cda63ffffffff831610611b3257506001611aca565b506000611aca565b60006103e661ffff841610611b545750610bb88101611b87565b6103dc61ffff841610611b6c57506107d08101611b87565b6103aa61ffff841610611b8457506103e88101611b87565b50805b92915050565b6008828102600290810a60001990810192840201900a8404169392505050565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152905600a165627a7a723058207c6817fdd3557af4d3de29850a70f076ba2e94538659ed3c9cdb5dbc654774590029000000000000000000000000512fbd15bde6570ff09e4438af27ede60402451500000000000000000000000000000000000000000000000000000000000000a00000000000000000000000006ebeaf8e8e946f0716e6533a6f2cefc83f60e8ab00000000000000000000000091b9d2835ad914bc1dcfe09bd1816febd04fd689000000000000000000000000657c8982d63f58ddd6a54c75591a572d4180cec80000000000000000000000000000000000000000000000000000000000000002000000000000000000000000e5dc9d1b58fd5a95fc20a6c6afaa76d44d70a7df0000000000000000000000006e0051c750b81f583f42f93a48d56497779992d8
Deployed Bytecode
0x6080604052600436106101505763ffffffff60e060020a60003504166306a628d4811461015557806313af4035146101805780631705a3bd146101a357806317634514146101d45780631b3ed722146101fb578063379607f514610227578063396c82281461023f5780633ccfd60b1461025a5780633f4ba83a1461026f5780635c975abb146102845780636bc3e4a8146102ad5780636dc7a627146102f75780638392fe311461030c5780638456cb59146103685780638be4339b1461037d5780638da5cb5b14610392578063b84c1392146103a7578063bd6cac4f146103bf578063becd283f146103e0578063c2f0bb29146103f5578063c503101e1461043b578063c7876ea414610455578063ca2bf0471461046a578063d42a50111461051b578063e3f7faaf14610537578063eb1098b814610556578063fbfa77cf1461056b578063ff585caf14610580575b600080fd5b34801561016157600080fd5b5061016a610598565b6040805160ff9092168252519081900360200190f35b34801561018c57600080fd5b506101a1600160a060020a036004351661059d565b005b3480156101af57600080fd5b506101b86105e3565b60408051600160a060020a039092168252519081900360200190f35b3480156101e057600080fd5b506101e96105f2565b60408051918252519081900360200190f35b34801561020757600080fd5b506102106105f8565b6040805161ffff9092168252519081900360200190f35b34801561023357600080fd5b506101a1600435610602565b6101a161ffff60043516600160a060020a03602435166108ec565b34801561026657600080fd5b506101a1610ba1565b34801561027b57600080fd5b506101a1610bf5565b34801561029057600080fd5b50610299610c6d565b604080519115158252519081900360200190f35b3480156102b957600080fd5b506102d1600160a060020a0360043516602435610c7d565b6040805161ffff9093168352600160a060020a0390911660208301528051918290030190f35b34801561030357600080fd5b50610299611104565b34801561031857600080fd5b5061032460043561110d565b6040805161ffff9687168152949095166020850152600160a060020a0390921683850152606083015267ffffffffffffffff16608082015290519081900360a00190f35b34801561037457600080fd5b506101a1611169565b34801561038957600080fd5b506102106111e6565b34801561039e57600080fd5b506101b86111eb565b3480156103b357600080fd5b506101b86004356111fa565b3480156103cb57600080fd5b50610299600160a060020a0360043516611222565b3480156103ec57600080fd5b506101e9611280565b34801561040157600080fd5b5061041a61ffff6004351660ff60243516604435611286565b6040805161ffff938416815291909216602082015281519081900390910190f35b34801561044757600080fd5b506101a160043515156113a0565b34801561046157600080fd5b506101e96113ca565b34801561047657600080fd5b506104826004356113d6565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156104c65781810151838201526020016104ae565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156105055781810151838201526020016104ed565b5050505090500194505050505060405180910390f35b34801561052757600080fd5b506101a161ffff6004351661159b565b34801561054357600080fd5b506101e960043561ffff602435166115e5565b34801561056257600080fd5b50610210611626565b34801561057757600080fd5b506101b8611637565b34801561058c57600080fd5b506101a1600435611646565b600590565b600254600160a060020a031633146105b457600080fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600054600160a060020a031681565b60015481565b60075461ffff1681565b6000806000806000806000806060600080600060048d81548110151561062457fe5b600091825260209091206005546003909202019c5060ff16151561064757600080fd5b8b5460018d01546201000090910461ffff1699509750610665610598565b8c54909750600160a060020a03640100000000820416965061ffff16945087151561068f57600080fd5b600061ffff8a16116106a057600080fd5b8660ff166040519080825280602002602001820160405280156106cd578160200160208202803883390190505b5093508861ffff166106dd6111e6565b860161ffff16116106f7576106f06111e6565b85016106f9565b885b925061ffff8086169084161161070e57600080fd5b8491505b8261ffff168261ffff1610156108c5575060005b8660ff168160ff1610156108255761073f82828a611286565b809b50819c5050506000809054906101000a9004600160a060020a0316600160a060020a031663fb36eba1878d8d6040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a031681526020018361ffff1661ffff1681526020018261ffff1661ffff1681526020019350505050602060405180830381600087803b1580156107d657600080fd5b505af11580156107ea573d6000803e3d6000fd5b505050506040513d602081101561080057600080fd5b50518451859060ff841690811061081357fe5b60209081029091010152600101610726565b85600160a060020a03168d7f69ac64af86d3ef40c9def928534f6a6a9e12d85ec3af2948bd66b802afcc10468960ff16850287604051808361ffff1661ffff16815260200180602001828103825283818151815260200191508051906020019060200280838360005b838110156108a657818101518382015260200161088e565b50505050905001935050505060405180910390a3600190910190610712565b5050895461ffff1981169390910361ffff9182160116919091179097555050505050505050565b60006108f6611bad565b600254600090819060a060020a900460ff161561091257600080fd5b600061ffff87161161092357600080fd5b600160a060020a03851633141561093957600080fd5b61094a6109446113ca565b876115e5565b93503484111561095957600080fd5b6040805160a081018252600080825261ffff8981166020808501828152338688018181526060880187815267ffffffffffffffff43811660808b01908152600480546001810182559a528a5160038b027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b8101805498519651600160a060020a03166401000000000277ffffffffffffffffffffffffffffffffffffffff0000000019978d16620100000263ffff00001994909d1661ffff19909a1699909917929092169a909a179490941695909517909255517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c87015591517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19d90950180549590921667ffffffffffffffff19909516949094179055855191825294519397509195509285927f861fd6f8fe14603acc05fa404f8cca86371619cac8a65a92edf687f81b9bafbd9281900390910190a3600160a060020a03851615610b5e5750604051600a840490600160a060020a0386169082156108fc029083906000818181858888f19350505050158015610b15573d6000803e3d6000fd5b506040805182815233602082015281519583900395600160a060020a038816927f13aa7090696e2a1d666cfc6046f2f72f1c4e0290649b47bab28d1b370ad73783928290030190a25b600354604051600160a060020a039091169085156108fc029086906000818181858888f19350505050158015610b98573d6000803e3d6000fd5b50505050505050565b600254600160a060020a03163314610bb857600080fd5b600254604051600160a060020a0390911690303180156108fc02916000818181858888f19350505050158015610bf2573d6000803e3d6000fd5b50565b600254600160a060020a03163314610c0c57600080fd5b60025460a060020a900460ff161515610c2457600080fd5b6002805474ff0000000000000000000000000000000000000000191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b60025460a060020a900460ff1681565b600080600080600080600080610c91611bad565b600080610c9d8d611222565b1515610ca857600080fd5b610cb061180f565b98508c600160a060020a031663379607f58d6040518263ffffffff1660e060020a02815260040180828152602001915050600060405180830381600087803b158015610cfb57600080fd5b505af1158015610d0f573d6000803e3d6000fd5b50505050610d1b61180f565b9750888811610d2957600080fd5b8888039650600561ffff88160661ffff1615610d4457600080fd5b600561ffff8816600754600854604080517f6352211e0000000000000000000000000000000000000000000000000000000081526000198e016004820152905194909304995061ffff90911689029750600160a060020a031691636352211e916024808201926020929091908290030181600087803b158015610dc657600080fd5b505af1158015610dda573d6000803e3d6000fd5b505050506040513d6020811015610df057600080fd5b50516040805160a081018252600080825261ffff8981166020848101828152600160a060020a038089168789018181526060890188815267ffffffffffffffff43811660808c01908152600480546001810182559b528b5160038c027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b81018054995196519098166401000000000277ffffffffffffffffffffffffffffffffffffffff0000000019968d16620100000263ffff00001993909d1661ffff19909a1699909917919091169a909a17939093169590951790935591517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c87015590517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19d90950180549590921667ffffffffffffffff19909516949094179055855191825294519599509297509095509285927f861fd6f8fe14603acc05fa404f8cca86371619cac8a65a92edf687f81b9bafbd928290030190a3600754604080517ff88218e0000000000000000000000000000000000000000000000000000000008152600160a060020a0387811660048301529151620100009093049091169163f88218e0916024808201926020929091908290030181600087803b158015610fd857600080fd5b505af1158015610fec573d6000803e3d6000fd5b505050506040513d602081101561100257600080fd5b5050604080518a8152602081018a905281517f31a1adb447f9b6b89f24bf104f0b7a06975ad9f35670dbfaf7ce29190ec54762929181900390910190a160085461ffff60a060020a9091048116908716116110f1575060005b8661ffff168110156110f15760008054604080517f454b0608000000000000000000000000000000000000000000000000000000008152848c036000190160048201529051600160a060020a039092169263454b06089260248084019382900301818387803b1580156110cd57600080fd5b505af11580156110e1573d6000803e3d6000fd5b50506001909201915061105b9050565b50929b919a509098505050505050505050565b60055460ff1681565b600480548290811061111b57fe5b600091825260209091206003909102018054600182015460029092015461ffff80831694506201000083041692640100000000909204600160a060020a0316919067ffffffffffffffff1685565b600254600160a060020a0316331461118057600080fd5b60025460a060020a900460ff161561119757600080fd5b6002805474ff0000000000000000000000000000000000000000191660a060020a1790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b600f90565b600254600160a060020a031681565b600680548290811061120857fe5b600091825260209091200154600160a060020a0316905081565b6000805b6006548110156112755782600160a060020a031660068281548110151561124957fe5b600091825260209091200154600160a060020a0316141561126d576001915061127a565b600101611226565b600091505b50919050565b60045490565b60008060008060008060008061129d8b8b8b61192c565b9399509197509195509093509150600460ff8b1614156112c7576112c085611a93565b90506112d3565b6112d085611acf565b90505b6112dd8383611b3a565b6000546040517fcaa19168000000000000000000000000000000000000000000000000000000008152919850600160a060020a03169063caa1916890839087906004908101908190849081111561133057fe5b60ff1681526020018261ffff1661ffff16815260200192505050602060405180830381600087803b15801561136457600080fd5b505af1158015611378573d6000803e3d6000fd5b505050506040513d602081101561138e57600080fd5b50519750505050505050935093915050565b600254600160a060020a031633146113b757600080fd5b6005805460ff1916911515919091179055565b67010a741a4627800090565b6060806113e1611bad565b600080600080600080600060048b8154811015156113fb57fe5b60009182526020918290206040805160a0810182526003909302909101805461ffff808216855262010000820416948401859052600160a060020a03640100000000909104169183019190915260018101546060830181905260029091015467ffffffffffffffff1660808301529099509095509350611479610598565b9250848360ff160261ffff166040519080825280602002602001820160405280156114ae578160200160208202803883390190505b509850848360ff160261ffff166040519080825280602002602001820160405280156114e4578160200160208202803883390190505b509950600091505b8461ffff168261ffff16101561158e575060005b8260ff168160ff16101561158357611519828286611286565b8a51919850965086908a9061ffff60ff8781168702908616011690811061153c57fe5b61ffff928316602091820290920101528a5188918c9160ff87811687029086160190911690811061156957fe5b61ffff909216602092830290910190910152600101611500565b6001909101906114ec565b5050505050505050915091565b600254600160a060020a031633146115b257600080fd5b6008805461ffff90921660a060020a0275ffff000000000000000000000000000000000000000019909216919091179055565b6001546000904303611770810460148110156116145761ffff841660646014839003870204860302925061161e565b8361ffff16850292505b505092915050565b60085460a060020a900461ffff1681565b600354600160a060020a031681565b600080600060048481548110151561165a57fe5b906000526020600020906003020192508260010154600014151561167d57600080fd5b600283015483546040805167ffffffffffffffff9093164060208085018290526401000000008404600160a060020a03166c0100000000000000000000000090810286850152300260548601526201000090930461ffff167e010000000000000000000000000000000000000000000000000000000000000260688501528151808503604a018152606a90940191829052835190955090918291908401908083835b6020831061173e5780518252601f19909201916020918201910161171f565b5181516000196020949094036101000a93909301928316921916919091179052604051920182900390912060028701549094504367ffffffffffffffff90811691161415925061179091505057600080fd5b8115156117a2576001838101556117aa565b600183018190555b825460018401546040805162010000840461ffff16815260208101929092528051640100000000909304600160a060020a03169287927fedb5ce4012b6e9c5904afa2ffad9811d5c2e91e6bca8914cf7e3ffc28e630c5792908290030190a350505050565b600854604080517f524773ce0000000000000000000000000000000000000000000000000000000081529051600092600160a060020a03169163524773ce91600480830192602092919082900301818787803b15801561186e57600080fd5b505af1158015611882573d6000803e3d6000fd5b505050506040513d602081101561189857600080fd5b5051600854604080517f18160ddd0000000000000000000000000000000000000000000000000000000081529051600160a060020a03909216916318160ddd916004808201926020929091908290030181600087803b1580156118fa57600080fd5b505af115801561190e573d6000803e3d6000fd5b505050506040513d602081101561192457600080fd5b505101905090565b6000806000806000878688604051602001808461ffff1661ffff167e010000000000000000000000000000000000000000000000000000000000000281526002018381526020018260ff1660ff167f010000000000000000000000000000000000000000000000000000000000000002815260010193505050506040516020818303038152906040526040518082805190602001908083835b602083106119e45780518252601f1990920191602091820191016119c5565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020600190049450620f4240611a28866004600a611b8d565b811515611a3157fe5b0693506103e8611a448660026004611b8d565b811515611a4d57fe5b0692506103e8611a608660026006611b8d565b811515611a6957fe5b06915061ffff611a7c8660026008611b8d565b811515611a8557fe5b069050939792965093509350565b60008163ffffffff16620f423f1415611aae57506004611aca565b620efa6f63ffffffff831610611ac657506003611aca565b5060025b919050565b60008163ffffffff16620f423f1415611aea57506004611aca565b620f3bc963ffffffff831610611b0257506003611aca565b620f0e8d63ffffffff831610611b1a57506002611aca565b620e1cda63ffffffff831610611b3257506001611aca565b506000611aca565b60006103e661ffff841610611b545750610bb88101611b87565b6103dc61ffff841610611b6c57506107d08101611b87565b6103aa61ffff841610611b8457506103e88101611b87565b50805b92915050565b6008828102600290810a60001990810192840201900a8404169392505050565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152905600a165627a7a723058207c6817fdd3557af4d3de29850a70f076ba2e94538659ed3c9cdb5dbc654774590029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000512fbd15bde6570ff09e4438af27ede60402451500000000000000000000000000000000000000000000000000000000000000a00000000000000000000000006ebeaf8e8e946f0716e6533a6f2cefc83f60e8ab00000000000000000000000091b9d2835ad914bc1dcfe09bd1816febd04fd689000000000000000000000000657c8982d63f58ddd6a54c75591a572d4180cec80000000000000000000000000000000000000000000000000000000000000002000000000000000000000000e5dc9d1b58fd5a95fc20a6c6afaa76d44d70a7df0000000000000000000000006e0051c750b81f583f42f93a48d56497779992d8
-----Decoded View---------------
Arg [0] : _old (address): 0x512Fbd15BDE6570ff09E4438Af27edE604024515
Arg [1] : _packs (address[]): 0xe5dC9d1B58fD5a95fC20A6c6AfAA76d44D70A7DF,0x6e0051C750b81f583f42f93A48d56497779992d8
Arg [2] : _core (address): 0x6EbeAf8e8E946F0716E6533A6f2cefc83f60e8Ab
Arg [3] : vault (address): 0x91B9d2835AD914bc1dcFE09Bd1816FeBd04fd689
Arg [4] : _pheonix (address): 0x657C8982D63F58Ddd6A54c75591a572D4180ceC8
-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 000000000000000000000000512fbd15bde6570ff09e4438af27ede604024515
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 0000000000000000000000006ebeaf8e8e946f0716e6533a6f2cefc83f60e8ab
Arg [3] : 00000000000000000000000091b9d2835ad914bc1dcfe09bd1816febd04fd689
Arg [4] : 000000000000000000000000657c8982d63f58ddd6a54c75591a572d4180cec8
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [6] : 000000000000000000000000e5dc9d1b58fd5a95fc20a6c6afaa76d44d70a7df
Arg [7] : 0000000000000000000000006e0051c750b81f583f42f93a48d56497779992d8
Swarm Source
bzzr://7c6817fdd3557af4d3de29850a70f076ba2e94538659ed3c9cdb5dbc65477459
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.