Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00Token Holdings
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 227,975 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw | 20589533 | 43 days ago | IN | 0 ETH | 0.000022 | ||||
Purchase | 14823122 | 867 days ago | IN | 0.012 ETH | 0.00094244 | ||||
Purchase | 14823122 | 867 days ago | IN | 0.012 ETH | 0.00084819 | ||||
Purchase | 14365104 | 939 days ago | IN | 0.012 ETH | 0.00139374 | ||||
Purchase | 12585805 | 1216 days ago | IN | 0.012 ETH | 0.00086704 | ||||
Purchase | 12541694 | 1223 days ago | IN | 0.012 ETH | 0.00158658 | ||||
Claim | 11652644 | 1360 days ago | IN | 0 ETH | 0.00140298 | ||||
Purchase | 10243344 | 1577 days ago | IN | 0.012 ETH | 0.00247207 | ||||
Purchase | 9846062 | 1638 days ago | IN | 0.072 ETH | 0.00102066 | ||||
Purchase | 9714848 | 1659 days ago | IN | 0.072 ETH | 0.00111669 | ||||
Purchase | 9714844 | 1659 days ago | IN | 0.072 ETH | 0.00111669 | ||||
Claim | 9677065 | 1665 days ago | IN | 0 ETH | 0.00011685 | ||||
Claim | 9677065 | 1665 days ago | IN | 0 ETH | 0.00011685 | ||||
Claim | 9677065 | 1665 days ago | IN | 0 ETH | 0.00014022 | ||||
Claim | 9677065 | 1665 days ago | IN | 0 ETH | 0.00014022 | ||||
Purchase | 9664772 | 1666 days ago | IN | 0.072 ETH | 0.00123333 | ||||
Purchase | 9569394 | 1681 days ago | IN | 0.072 ETH | 0.00093768 | ||||
Purchase | 9510943 | 1690 days ago | IN | 0.072 ETH | 0.00076728 | ||||
Purchase | 9505222 | 1691 days ago | IN | 0.072 ETH | 0.00076719 | ||||
Purchase | 9505222 | 1691 days ago | IN | 0.072 ETH | 0.00076719 | ||||
Purchase | 9431683 | 1702 days ago | IN | 0.072 ETH | 0.00093768 | ||||
Purchase | 9426589 | 1703 days ago | IN | 0.072 ETH | 0.00110817 | ||||
Purchase | 9416881 | 1705 days ago | IN | 0.072 ETH | 0.00085244 | ||||
Purchase | 9416878 | 1705 days ago | IN | 0.072 ETH | 0.00085244 | ||||
Purchase | 9416778 | 1705 days ago | IN | 0.072 ETH | 0.00085244 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
20589533 | 43 days ago | 0.59076 ETH | ||||
14823122 | 867 days ago | 0.012 ETH | ||||
14823122 | 867 days ago | 0.012 ETH | ||||
14365104 | 939 days ago | 0.0108 ETH | ||||
14365104 | 939 days ago | 0.0012 ETH | ||||
12585805 | 1216 days ago | 0.012 ETH | ||||
12541694 | 1223 days ago | 0.0108 ETH | ||||
12541694 | 1223 days ago | 0.0012 ETH | ||||
10243344 | 1577 days ago | 0.012 ETH | ||||
9846062 | 1638 days ago | 0.0648 ETH | ||||
9846062 | 1638 days ago | 0.0072 ETH | ||||
9714848 | 1659 days ago | 0.072 ETH | ||||
9714844 | 1659 days ago | 0.072 ETH | ||||
9664772 | 1666 days ago | 0.0648 ETH | ||||
9664772 | 1666 days ago | 0.0072 ETH | ||||
9569394 | 1681 days ago | 0.072 ETH | ||||
9510943 | 1690 days ago | 0.072 ETH | ||||
9505222 | 1691 days ago | 0.072 ETH | ||||
9505222 | 1691 days ago | 0.072 ETH | ||||
9431683 | 1702 days ago | 0.072 ETH | ||||
9426589 | 1703 days ago | 0.072 ETH | ||||
9416881 | 1705 days ago | 0.072 ETH | ||||
9416878 | 1705 days ago | 0.072 ETH | ||||
9416778 | 1705 days ago | 0.072 ETH | ||||
9407817 | 1706 days ago | 0.072 ETH |
Loading...
Loading
Contract Name:
RarePackFour
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-16 */ 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 CardPackFour { 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 PresalePackFour is CardPackFour, 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); event Recommit(uint indexed id); constructor(MigrationInterface _core, CappedVault _vault) public payable CardPackFour(_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; } uint16 public perClaim = 15; function setPacksPerClaim(uint16 _perClaim) public onlyOwner { perClaim = _perClaim; } function packsPerClaim() public view returns (uint16) { return perClaim; } // 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 purchaseFor(address user, uint16 packCount, address referrer) whenNotPaused public payable { _purchase(user, packCount, referrer); } function purchase(uint16 packCount, address referrer) whenNotPaused public payable { _purchase(msg.sender, packCount, referrer); } function _purchase(address user, uint16 packCount, address referrer) internal { require(packCount > 0); require(referrer != user); uint price = calculatePrice(basePrice(), packCount); require(msg.value >= price); Purchase memory p = Purchase({ user: user, count: packCount, commit: uint64(block.number), randomness: 0, current: 0 }); uint id = purchases.push(p) - 1; emit PacksPurchased(id, user, packCount); if (referrer != address(0)) { uint commission = price / 10; referrer.transfer(commission); price -= commission; emit Referral(referrer, commission, user); } address(vault).transfer(price); } // can recommit // this gives you more chances // if no-one else sends the callback (should never happen) // still only get a random extra chance function recommit(uint id) public { Purchase storage p = purchases[id]; require(p.randomness == 0); require(block.number >= p.commit + 256); p.commit = uint64(block.number); emit Recommit(id); } // 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); // must be within last 256 blocks, otherwise recommit require(block.number - 256 < p.commit); // can't callback on the original block require(uint64(block.number) != p.commit); 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))); require(uint(bhash) != 0); 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 PackFourMultiplier is PresalePackFour { 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 PresalePackFour(_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(); PresalePackFour(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 RarePackFour is PackFourMultiplier { function basePrice() public returns (uint) { return 12 finney; } constructor(PreviousInterface _old, address[] _packs, MigrationInterface _core, CappedVault vault, FirstPheonix _pheonix) public PackFourMultiplier(_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 = _getRarePlusRarity(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":false,"inputs":[{"name":"id","type":"uint256"}],"name":"recommit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"perClaim","outputs":[{"name":"","type":"uint16"}],"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":false,"inputs":[{"name":"_perClaim","type":"uint16"}],"name":"setPacksPerClaim","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"user","type":"address"},{"name":"packCount","type":"uint16"},{"name":"referrer","type":"address"}],"name":"purchaseFor","outputs":[],"payable":true,"stateMutability":"payable","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":[{"indexed":true,"name":"id","type":"uint256"}],"name":"Recommit","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
60806040526002805460a060020a60ff02191690556005805462ff00001961ffff19918216600f17166201000017909155600780549091166003179055600880547405000000000000000000000000000000000000000060a060020a61ffff02199091161790553480156200007357600080fd5b5060405162001ff538038062001ff58339810160409081528151602080840151928401516060850151608086015160008054600160a060020a03808616600160a060020a031992831617909255625aa7456001556002805482163317905560038054928516929091169190911790559490950180519395909491939092869186918691869186916200010c916006919087019062000158565b50600780546201000060b060020a03191662010000600160a060020a039384160217905560088054600160a060020a031916959091169490941790935550620001ec9650505050505050565b828054828255906000526020600020908101928215620001b0579160200282015b82811115620001b05782518254600160a060020a031916600160a060020a0390911617825560209092019160019091019062000179565b50620001be929150620001c2565b5090565b620001e991905b80821115620001be578054600160a060020a0319168155600101620001c9565b90565b611df980620001fc6000396000f30060806040526004361061017c5763ffffffff60e060020a60003504166306a628d4811461018157806313af4035146101ac5780631705a3bd146101cf57806317634514146102005780631b3ed72214610227578063379607f514610253578063396c82281461026b5780633ccfd60b146102865780633f4ba83a1461029b57806345d63b66146102b05780635c975abb146102c85780635f9602e8146102f15780636bc3e4a8146103065780636dc7a627146103505780638392fe31146103655780638456cb59146103c15780638be4339b146103d65780638da5cb5b146103eb5780639a1f6a0f14610400578063b01d5b631461041c578063b84c13921461043e578063bd6cac4f14610456578063becd283f14610477578063c2f0bb291461048c578063c503101e146104d2578063c7876ea4146104ec578063ca2bf04714610501578063d42a5011146105b2578063e3f7faaf146105ce578063eb1098b8146105ed578063fbfa77cf14610602578063ff585caf14610617575b600080fd5b34801561018d57600080fd5b5061019661062f565b6040805160ff9092168252519081900360200190f35b3480156101b857600080fd5b506101cd600160a060020a0360043516610634565b005b3480156101db57600080fd5b506101e461067a565b60408051600160a060020a039092168252519081900360200190f35b34801561020c57600080fd5b50610215610689565b60408051918252519081900360200190f35b34801561023357600080fd5b5061023c61068f565b6040805161ffff9092168252519081900360200190f35b34801561025f57600080fd5b506101cd600435610699565b6101cd61ffff60043516600160a060020a036024351661098b565b34801561029257600080fd5b506101cd6109b1565b3480156102a757600080fd5b506101cd610a05565b3480156102bc57600080fd5b506101cd600435610a7d565b3480156102d457600080fd5b506102dd610b21565b604080519115158252519081900360200190f35b3480156102fd57600080fd5b5061023c610b31565b34801561031257600080fd5b5061032a600160a060020a0360043516602435610b3b565b6040805161ffff9093168352600160a060020a0390911660208301528051918290030190f35b34801561035c57600080fd5b506102dd610fc2565b34801561037157600080fd5b5061037d600435610fd1565b6040805161ffff9687168152949095166020850152600160a060020a0390921683850152606083015267ffffffffffffffff16608082015290519081900360a00190f35b3480156103cd57600080fd5b506101cd61102d565b3480156103e257600080fd5b5061023c6110aa565b3480156103f757600080fd5b506101e46110b4565b34801561040c57600080fd5b506101cd61ffff600435166110c3565b6101cd600160a060020a0360043581169061ffff6024351690604435166110f2565b34801561044a57600080fd5b506101e4600435611119565b34801561046257600080fd5b506102dd600160a060020a0360043516611141565b34801561048357600080fd5b5061021561119f565b34801561049857600080fd5b506104b161ffff6004351660ff602435166044356111a5565b6040805161ffff938416815291909216602082015281519081900390910190f35b3480156104de57600080fd5b506101cd60043515156112bf565b3480156104f857600080fd5b506102156112f2565b34801561050d57600080fd5b506105196004356112fd565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561055d578181015183820152602001610545565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561059c578181015183820152602001610584565b5050505090500194505050505060405180910390f35b3480156105be57600080fd5b506101cd61ffff600435166114c2565b3480156105da57600080fd5b5061021560043561ffff6024351661150c565b3480156105f957600080fd5b5061023c61154d565b34801561060e57600080fd5b506101e461155e565b34801561062357600080fd5b506101cd60043561156d565b600590565b600254600160a060020a0316331461064b57600080fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600054600160a060020a031681565b60015481565b60075461ffff1681565b6000806000806000806000806060600080600060048d8154811015156106bb57fe5b90600052602060002090600302019b50600560029054906101000a900460ff1615156106e657600080fd5b8b5460018d01546201000090910461ffff169950975061070461062f565b8c54909750600160a060020a03640100000000820416965061ffff16945087151561072e57600080fd5b600061ffff8a161161073f57600080fd5b8660ff1660405190808252806020026020018201604052801561076c578160200160208202803883390190505b5093508861ffff1661077c6110aa565b860161ffff16116107965761078f6110aa565b8501610798565b885b925061ffff808616908416116107ad57600080fd5b8491505b8261ffff168261ffff161015610964575060005b8660ff168160ff1610156108c4576107de82828a6111a5565b809b50819c5050506000809054906101000a9004600160a060020a0316600160a060020a031663fb36eba1878d8d6040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a031681526020018361ffff1661ffff1681526020018261ffff1661ffff1681526020019350505050602060405180830381600087803b15801561087557600080fd5b505af1158015610889573d6000803e3d6000fd5b505050506040513d602081101561089f57600080fd5b50518451859060ff84169081106108b257fe5b602090810290910101526001016107c5565b85600160a060020a03168d7f69ac64af86d3ef40c9def928534f6a6a9e12d85ec3af2948bd66b802afcc10468960ff16850287604051808361ffff1661ffff16815260200180602001828103825283818151815260200191508051906020019060200280838360005b8381101561094557818101518382015260200161092d565b50505050905001935050505060405180910390a36001909101906107b1565b5050895461ffff1981169390910361ffff9182160116919091179097555050505050505050565b60025460a060020a900460ff16156109a257600080fd5b6109ad338383611742565b5050565b600254600160a060020a031633146109c857600080fd5b600254604051600160a060020a0390911690303180156108fc02916000818181858888f19350505050158015610a02573d6000803e3d6000fd5b50565b600254600160a060020a03163314610a1c57600080fd5b60025460a060020a900460ff161515610a3457600080fd5b6002805474ff0000000000000000000000000000000000000000191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b6000600482815481101515610a8e57fe5b9060005260206000209060030201905080600101546000141515610ab157600080fd5b600281015467ffffffffffffffff9081166101000116431015610ad357600080fd5b60028101805467ffffffffffffffff19164367ffffffffffffffff1617905560405182907f29ef13d2827ff333d3fde4646988c3a7db16de1210f0c0b613fd0ac9773e4e7b90600090a25050565b60025460a060020a900460ff1681565b60055461ffff1681565b600080600080600080600080610b4f611d9f565b600080610b5b8d611141565b1515610b6657600080fd5b610b6e6119e9565b98508c600160a060020a031663379607f58d6040518263ffffffff1660e060020a02815260040180828152602001915050600060405180830381600087803b158015610bb957600080fd5b505af1158015610bcd573d6000803e3d6000fd5b50505050610bd96119e9565b9750888811610be757600080fd5b8888039650600561ffff88160661ffff1615610c0257600080fd5b600561ffff8816600754600854604080517f6352211e0000000000000000000000000000000000000000000000000000000081526000198e016004820152905194909304995061ffff90911689029750600160a060020a031691636352211e916024808201926020929091908290030181600087803b158015610c8457600080fd5b505af1158015610c98573d6000803e3d6000fd5b505050506040513d6020811015610cae57600080fd5b50516040805160a081018252600080825261ffff8981166020848101828152600160a060020a038089168789018181526060890188815267ffffffffffffffff43811660808c01908152600480546001810182559b528b5160038c027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b81018054995196519098166401000000000277ffffffffffffffffffffffffffffffffffffffff0000000019968d16620100000263ffff00001993909d1661ffff19909a1699909917919091169a909a17939093169590951790935591517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c87015590517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19d90950180549590921667ffffffffffffffff19909516949094179055855191825294519599509297509095509285927f861fd6f8fe14603acc05fa404f8cca86371619cac8a65a92edf687f81b9bafbd928290030190a3600754604080517ff88218e0000000000000000000000000000000000000000000000000000000008152600160a060020a0387811660048301529151620100009093049091169163f88218e0916024808201926020929091908290030181600087803b158015610e9657600080fd5b505af1158015610eaa573d6000803e3d6000fd5b505050506040513d6020811015610ec057600080fd5b5050604080518a8152602081018a905281517f31a1adb447f9b6b89f24bf104f0b7a06975ad9f35670dbfaf7ce29190ec54762929181900390910190a160085461ffff60a060020a909104811690871611610faf575060005b8661ffff16811015610faf5760008054604080517f454b0608000000000000000000000000000000000000000000000000000000008152848c036000190160048201529051600160a060020a039092169263454b06089260248084019382900301818387803b158015610f8b57600080fd5b505af1158015610f9f573d6000803e3d6000fd5b505060019092019150610f199050565b50929b919a509098505050505050505050565b60055462010000900460ff1681565b6004805482908110610fdf57fe5b600091825260209091206003909102018054600182015460029092015461ffff80831694506201000083041692640100000000909204600160a060020a0316919067ffffffffffffffff1685565b600254600160a060020a0316331461104457600080fd5b60025460a060020a900460ff161561105b57600080fd5b6002805474ff0000000000000000000000000000000000000000191660a060020a1790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b60055461ffff1690565b600254600160a060020a031681565b600254600160a060020a031633146110da57600080fd5b6005805461ffff191661ffff92909216919091179055565b60025460a060020a900460ff161561110957600080fd5b611114838383611742565b505050565b600680548290811061112757fe5b600091825260209091200154600160a060020a0316905081565b6000805b6006548110156111945782600160a060020a031660068281548110151561116857fe5b600091825260209091200154600160a060020a0316141561118c5760019150611199565b600101611145565b600091505b50919050565b60045490565b6000806000806000806000806111bc8b8b8b611b06565b9399509197509195509093509150600460ff8b1614156111e6576111df85611c6d565b90506111f2565b6111ef85611cc1565b90505b6111fc8383611d2c565b6000546040517fcaa19168000000000000000000000000000000000000000000000000000000008152919850600160a060020a03169063caa1916890839087906004908101908190849081111561124f57fe5b60ff1681526020018261ffff1661ffff16815260200192505050602060405180830381600087803b15801561128357600080fd5b505af1158015611297573d6000803e3d6000fd5b505050506040513d60208110156112ad57600080fd5b50519750505050505050935093915050565b600254600160a060020a031633146112d657600080fd5b60058054911515620100000262ff000019909216919091179055565b662aa1efb94e000090565b606080611308611d9f565b600080600080600080600060048b81548110151561132257fe5b60009182526020918290206040805160a0810182526003909302909101805461ffff808216855262010000820416948401859052600160a060020a03640100000000909104169183019190915260018101546060830181905260029091015467ffffffffffffffff16608083015290995090955093506113a061062f565b9250848360ff160261ffff166040519080825280602002602001820160405280156113d5578160200160208202803883390190505b509850848360ff160261ffff1660405190808252806020026020018201604052801561140b578160200160208202803883390190505b509950600091505b8461ffff168261ffff1610156114b5575060005b8260ff168160ff1610156114aa576114408282866111a5565b8a51919850965086908a9061ffff60ff8781168702908616011690811061146357fe5b61ffff928316602091820290920101528a5188918c9160ff87811687029086160190911690811061149057fe5b61ffff909216602092830290910190910152600101611427565b600190910190611413565b5050505050505050915091565b600254600160a060020a031633146114d957600080fd5b6008805461ffff90921660a060020a0275ffff000000000000000000000000000000000000000019909216919091179055565b60015460009043036117708104601481101561153b5761ffff8416606460148390038702048603029250611545565b8361ffff16850292505b505092915050565b60085460a060020a900461ffff1681565b600354600160a060020a031681565b600080600060048481548110151561158157fe5b90600052602060002090600302019250826001015460001415156115a457600080fd5b600283015467ffffffffffffffff1660ff194301106115c257600080fd5b60028301544367ffffffffffffffff908116911614156115e157600080fd5b600283015483546040805167ffffffffffffffff9093164060208085018290526401000000008404600160a060020a03166c0100000000000000000000000090810286850152300260548601526201000090930461ffff167e010000000000000000000000000000000000000000000000000000000000000260688501528151808503604a018152606a90940191829052835190955090918291908401908083835b602083106116a25780518252601f199092019160209182019101611683565b5181516020939093036101000a600019018019909116921691909117905260405192018290039091209350505082151590506116dd57600080fd5b6001830181905582546040805162010000830461ffff168152602081018490528151640100000000909304600160a060020a03169287927fedb5ce4012b6e9c5904afa2ffad9811d5c2e91e6bca8914cf7e3ffc28e630c57928290030190a350505050565b600061174c611d9f565b60008061ffff8616811061175f57600080fd5b600160a060020a03858116908816141561177857600080fd5b6117896117836112f2565b8761150c565b93503484111561179857600080fd5b6040805160a081018252600080825261ffff8981166020808501828152600160a060020a03808f168789018181526060890188815267ffffffffffffffff43811660808c01908152600480546001810182559b528b5160038c027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b81018054995196519098166401000000000277ffffffffffffffffffffffffffffffffffffffff0000000019968d16620100000263ffff00001993909d1661ffff19909a1699909917919091169a909a17939093169590951790935591517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c87015590517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19d90950180549590921667ffffffffffffffff19909516949094179055855191825294519397509195509285927f861fd6f8fe14603acc05fa404f8cca86371619cac8a65a92edf687f81b9bafbd9281900390910190a3600160a060020a038516156119a55750604051600a840490600160a060020a0386169082156108fc029083906000818181858888f19350505050158015611959573d6000803e3d6000fd5b5060408051828152600160a060020a03898116602083015282519684900396908816927f13aa7090696e2a1d666cfc6046f2f72f1c4e0290649b47bab28d1b370ad73783928290030190a25b600354604051600160a060020a039091169085156108fc029086906000818181858888f193505050501580156119df573d6000803e3d6000fd5b5050505050505050565b600854604080517f524773ce0000000000000000000000000000000000000000000000000000000081529051600092600160a060020a03169163524773ce91600480830192602092919082900301818787803b158015611a4857600080fd5b505af1158015611a5c573d6000803e3d6000fd5b505050506040513d6020811015611a7257600080fd5b5051600854604080517f18160ddd0000000000000000000000000000000000000000000000000000000081529051600160a060020a03909216916318160ddd916004808201926020929091908290030181600087803b158015611ad457600080fd5b505af1158015611ae8573d6000803e3d6000fd5b505050506040513d6020811015611afe57600080fd5b505101905090565b6000806000806000878688604051602001808461ffff1661ffff167e010000000000000000000000000000000000000000000000000000000000000281526002018381526020018260ff1660ff167f010000000000000000000000000000000000000000000000000000000000000002815260010193505050506040516020818303038152906040526040518082805190602001908083835b60208310611bbe5780518252601f199092019160209182019101611b9f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020600190049450620f4240611c02866004600a611d7f565b811515611c0b57fe5b0693506103e8611c1e8660026004611d7f565b811515611c2757fe5b0692506103e8611c3a8660026006611d7f565b811515611c4357fe5b06915061ffff611c568660026008611d7f565b811515611c5f57fe5b069050939792965093509350565b60008163ffffffff16620f423f1415611c8857506004611cbc565b620efa6f63ffffffff831610611ca057506003611cbc565b620d03cc63ffffffff831610611cb857506002611cbc565b5060015b919050565b60008163ffffffff16620f423f1415611cdc57506004611cbc565b620f3bc963ffffffff831610611cf457506003611cbc565b620f0e8d63ffffffff831610611d0c57506002611cbc565b620e1cda63ffffffff831610611d2457506001611cbc565b506000611cbc565b60006103e661ffff841610611d465750610bb88101611d79565b6103dc61ffff841610611d5e57506107d08101611d79565b6103aa61ffff841610611d7657506103e88101611d79565b50805b92915050565b6008828102600290810a60001990810192840201900a8404169392505050565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152905600a165627a7a72305820cd3d156a4f468bfe311e1c27db19b3b7e56d9e1fdcb58e4252e6ff088537c5a80029000000000000000000000000512fbd15bde6570ff09e4438af27ede60402451500000000000000000000000000000000000000000000000000000000000000a00000000000000000000000006ebeaf8e8e946f0716e6533a6f2cefc83f60e8ab00000000000000000000000091b9d2835ad914bc1dcfe09bd1816febd04fd689000000000000000000000000657c8982d63f58ddd6a54c75591a572d4180cec80000000000000000000000000000000000000000000000000000000000000002000000000000000000000000ca6746f65d53d2df5022b5d775817e62e8462690000000000000000000000000015531a044bae03bf4dab1ceabfc232a969b7175
Deployed Bytecode
0x60806040526004361061017c5763ffffffff60e060020a60003504166306a628d4811461018157806313af4035146101ac5780631705a3bd146101cf57806317634514146102005780631b3ed72214610227578063379607f514610253578063396c82281461026b5780633ccfd60b146102865780633f4ba83a1461029b57806345d63b66146102b05780635c975abb146102c85780635f9602e8146102f15780636bc3e4a8146103065780636dc7a627146103505780638392fe31146103655780638456cb59146103c15780638be4339b146103d65780638da5cb5b146103eb5780639a1f6a0f14610400578063b01d5b631461041c578063b84c13921461043e578063bd6cac4f14610456578063becd283f14610477578063c2f0bb291461048c578063c503101e146104d2578063c7876ea4146104ec578063ca2bf04714610501578063d42a5011146105b2578063e3f7faaf146105ce578063eb1098b8146105ed578063fbfa77cf14610602578063ff585caf14610617575b600080fd5b34801561018d57600080fd5b5061019661062f565b6040805160ff9092168252519081900360200190f35b3480156101b857600080fd5b506101cd600160a060020a0360043516610634565b005b3480156101db57600080fd5b506101e461067a565b60408051600160a060020a039092168252519081900360200190f35b34801561020c57600080fd5b50610215610689565b60408051918252519081900360200190f35b34801561023357600080fd5b5061023c61068f565b6040805161ffff9092168252519081900360200190f35b34801561025f57600080fd5b506101cd600435610699565b6101cd61ffff60043516600160a060020a036024351661098b565b34801561029257600080fd5b506101cd6109b1565b3480156102a757600080fd5b506101cd610a05565b3480156102bc57600080fd5b506101cd600435610a7d565b3480156102d457600080fd5b506102dd610b21565b604080519115158252519081900360200190f35b3480156102fd57600080fd5b5061023c610b31565b34801561031257600080fd5b5061032a600160a060020a0360043516602435610b3b565b6040805161ffff9093168352600160a060020a0390911660208301528051918290030190f35b34801561035c57600080fd5b506102dd610fc2565b34801561037157600080fd5b5061037d600435610fd1565b6040805161ffff9687168152949095166020850152600160a060020a0390921683850152606083015267ffffffffffffffff16608082015290519081900360a00190f35b3480156103cd57600080fd5b506101cd61102d565b3480156103e257600080fd5b5061023c6110aa565b3480156103f757600080fd5b506101e46110b4565b34801561040c57600080fd5b506101cd61ffff600435166110c3565b6101cd600160a060020a0360043581169061ffff6024351690604435166110f2565b34801561044a57600080fd5b506101e4600435611119565b34801561046257600080fd5b506102dd600160a060020a0360043516611141565b34801561048357600080fd5b5061021561119f565b34801561049857600080fd5b506104b161ffff6004351660ff602435166044356111a5565b6040805161ffff938416815291909216602082015281519081900390910190f35b3480156104de57600080fd5b506101cd60043515156112bf565b3480156104f857600080fd5b506102156112f2565b34801561050d57600080fd5b506105196004356112fd565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561055d578181015183820152602001610545565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561059c578181015183820152602001610584565b5050505090500194505050505060405180910390f35b3480156105be57600080fd5b506101cd61ffff600435166114c2565b3480156105da57600080fd5b5061021560043561ffff6024351661150c565b3480156105f957600080fd5b5061023c61154d565b34801561060e57600080fd5b506101e461155e565b34801561062357600080fd5b506101cd60043561156d565b600590565b600254600160a060020a0316331461064b57600080fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600054600160a060020a031681565b60015481565b60075461ffff1681565b6000806000806000806000806060600080600060048d8154811015156106bb57fe5b90600052602060002090600302019b50600560029054906101000a900460ff1615156106e657600080fd5b8b5460018d01546201000090910461ffff169950975061070461062f565b8c54909750600160a060020a03640100000000820416965061ffff16945087151561072e57600080fd5b600061ffff8a161161073f57600080fd5b8660ff1660405190808252806020026020018201604052801561076c578160200160208202803883390190505b5093508861ffff1661077c6110aa565b860161ffff16116107965761078f6110aa565b8501610798565b885b925061ffff808616908416116107ad57600080fd5b8491505b8261ffff168261ffff161015610964575060005b8660ff168160ff1610156108c4576107de82828a6111a5565b809b50819c5050506000809054906101000a9004600160a060020a0316600160a060020a031663fb36eba1878d8d6040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a031681526020018361ffff1661ffff1681526020018261ffff1661ffff1681526020019350505050602060405180830381600087803b15801561087557600080fd5b505af1158015610889573d6000803e3d6000fd5b505050506040513d602081101561089f57600080fd5b50518451859060ff84169081106108b257fe5b602090810290910101526001016107c5565b85600160a060020a03168d7f69ac64af86d3ef40c9def928534f6a6a9e12d85ec3af2948bd66b802afcc10468960ff16850287604051808361ffff1661ffff16815260200180602001828103825283818151815260200191508051906020019060200280838360005b8381101561094557818101518382015260200161092d565b50505050905001935050505060405180910390a36001909101906107b1565b5050895461ffff1981169390910361ffff9182160116919091179097555050505050505050565b60025460a060020a900460ff16156109a257600080fd5b6109ad338383611742565b5050565b600254600160a060020a031633146109c857600080fd5b600254604051600160a060020a0390911690303180156108fc02916000818181858888f19350505050158015610a02573d6000803e3d6000fd5b50565b600254600160a060020a03163314610a1c57600080fd5b60025460a060020a900460ff161515610a3457600080fd5b6002805474ff0000000000000000000000000000000000000000191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b6000600482815481101515610a8e57fe5b9060005260206000209060030201905080600101546000141515610ab157600080fd5b600281015467ffffffffffffffff9081166101000116431015610ad357600080fd5b60028101805467ffffffffffffffff19164367ffffffffffffffff1617905560405182907f29ef13d2827ff333d3fde4646988c3a7db16de1210f0c0b613fd0ac9773e4e7b90600090a25050565b60025460a060020a900460ff1681565b60055461ffff1681565b600080600080600080600080610b4f611d9f565b600080610b5b8d611141565b1515610b6657600080fd5b610b6e6119e9565b98508c600160a060020a031663379607f58d6040518263ffffffff1660e060020a02815260040180828152602001915050600060405180830381600087803b158015610bb957600080fd5b505af1158015610bcd573d6000803e3d6000fd5b50505050610bd96119e9565b9750888811610be757600080fd5b8888039650600561ffff88160661ffff1615610c0257600080fd5b600561ffff8816600754600854604080517f6352211e0000000000000000000000000000000000000000000000000000000081526000198e016004820152905194909304995061ffff90911689029750600160a060020a031691636352211e916024808201926020929091908290030181600087803b158015610c8457600080fd5b505af1158015610c98573d6000803e3d6000fd5b505050506040513d6020811015610cae57600080fd5b50516040805160a081018252600080825261ffff8981166020848101828152600160a060020a038089168789018181526060890188815267ffffffffffffffff43811660808c01908152600480546001810182559b528b5160038c027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b81018054995196519098166401000000000277ffffffffffffffffffffffffffffffffffffffff0000000019968d16620100000263ffff00001993909d1661ffff19909a1699909917919091169a909a17939093169590951790935591517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c87015590517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19d90950180549590921667ffffffffffffffff19909516949094179055855191825294519599509297509095509285927f861fd6f8fe14603acc05fa404f8cca86371619cac8a65a92edf687f81b9bafbd928290030190a3600754604080517ff88218e0000000000000000000000000000000000000000000000000000000008152600160a060020a0387811660048301529151620100009093049091169163f88218e0916024808201926020929091908290030181600087803b158015610e9657600080fd5b505af1158015610eaa573d6000803e3d6000fd5b505050506040513d6020811015610ec057600080fd5b5050604080518a8152602081018a905281517f31a1adb447f9b6b89f24bf104f0b7a06975ad9f35670dbfaf7ce29190ec54762929181900390910190a160085461ffff60a060020a909104811690871611610faf575060005b8661ffff16811015610faf5760008054604080517f454b0608000000000000000000000000000000000000000000000000000000008152848c036000190160048201529051600160a060020a039092169263454b06089260248084019382900301818387803b158015610f8b57600080fd5b505af1158015610f9f573d6000803e3d6000fd5b505060019092019150610f199050565b50929b919a509098505050505050505050565b60055462010000900460ff1681565b6004805482908110610fdf57fe5b600091825260209091206003909102018054600182015460029092015461ffff80831694506201000083041692640100000000909204600160a060020a0316919067ffffffffffffffff1685565b600254600160a060020a0316331461104457600080fd5b60025460a060020a900460ff161561105b57600080fd5b6002805474ff0000000000000000000000000000000000000000191660a060020a1790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b60055461ffff1690565b600254600160a060020a031681565b600254600160a060020a031633146110da57600080fd5b6005805461ffff191661ffff92909216919091179055565b60025460a060020a900460ff161561110957600080fd5b611114838383611742565b505050565b600680548290811061112757fe5b600091825260209091200154600160a060020a0316905081565b6000805b6006548110156111945782600160a060020a031660068281548110151561116857fe5b600091825260209091200154600160a060020a0316141561118c5760019150611199565b600101611145565b600091505b50919050565b60045490565b6000806000806000806000806111bc8b8b8b611b06565b9399509197509195509093509150600460ff8b1614156111e6576111df85611c6d565b90506111f2565b6111ef85611cc1565b90505b6111fc8383611d2c565b6000546040517fcaa19168000000000000000000000000000000000000000000000000000000008152919850600160a060020a03169063caa1916890839087906004908101908190849081111561124f57fe5b60ff1681526020018261ffff1661ffff16815260200192505050602060405180830381600087803b15801561128357600080fd5b505af1158015611297573d6000803e3d6000fd5b505050506040513d60208110156112ad57600080fd5b50519750505050505050935093915050565b600254600160a060020a031633146112d657600080fd5b60058054911515620100000262ff000019909216919091179055565b662aa1efb94e000090565b606080611308611d9f565b600080600080600080600060048b81548110151561132257fe5b60009182526020918290206040805160a0810182526003909302909101805461ffff808216855262010000820416948401859052600160a060020a03640100000000909104169183019190915260018101546060830181905260029091015467ffffffffffffffff16608083015290995090955093506113a061062f565b9250848360ff160261ffff166040519080825280602002602001820160405280156113d5578160200160208202803883390190505b509850848360ff160261ffff1660405190808252806020026020018201604052801561140b578160200160208202803883390190505b509950600091505b8461ffff168261ffff1610156114b5575060005b8260ff168160ff1610156114aa576114408282866111a5565b8a51919850965086908a9061ffff60ff8781168702908616011690811061146357fe5b61ffff928316602091820290920101528a5188918c9160ff87811687029086160190911690811061149057fe5b61ffff909216602092830290910190910152600101611427565b600190910190611413565b5050505050505050915091565b600254600160a060020a031633146114d957600080fd5b6008805461ffff90921660a060020a0275ffff000000000000000000000000000000000000000019909216919091179055565b60015460009043036117708104601481101561153b5761ffff8416606460148390038702048603029250611545565b8361ffff16850292505b505092915050565b60085460a060020a900461ffff1681565b600354600160a060020a031681565b600080600060048481548110151561158157fe5b90600052602060002090600302019250826001015460001415156115a457600080fd5b600283015467ffffffffffffffff1660ff194301106115c257600080fd5b60028301544367ffffffffffffffff908116911614156115e157600080fd5b600283015483546040805167ffffffffffffffff9093164060208085018290526401000000008404600160a060020a03166c0100000000000000000000000090810286850152300260548601526201000090930461ffff167e010000000000000000000000000000000000000000000000000000000000000260688501528151808503604a018152606a90940191829052835190955090918291908401908083835b602083106116a25780518252601f199092019160209182019101611683565b5181516020939093036101000a600019018019909116921691909117905260405192018290039091209350505082151590506116dd57600080fd5b6001830181905582546040805162010000830461ffff168152602081018490528151640100000000909304600160a060020a03169287927fedb5ce4012b6e9c5904afa2ffad9811d5c2e91e6bca8914cf7e3ffc28e630c57928290030190a350505050565b600061174c611d9f565b60008061ffff8616811061175f57600080fd5b600160a060020a03858116908816141561177857600080fd5b6117896117836112f2565b8761150c565b93503484111561179857600080fd5b6040805160a081018252600080825261ffff8981166020808501828152600160a060020a03808f168789018181526060890188815267ffffffffffffffff43811660808c01908152600480546001810182559b528b5160038c027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b81018054995196519098166401000000000277ffffffffffffffffffffffffffffffffffffffff0000000019968d16620100000263ffff00001993909d1661ffff19909a1699909917919091169a909a17939093169590951790935591517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c87015590517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19d90950180549590921667ffffffffffffffff19909516949094179055855191825294519397509195509285927f861fd6f8fe14603acc05fa404f8cca86371619cac8a65a92edf687f81b9bafbd9281900390910190a3600160a060020a038516156119a55750604051600a840490600160a060020a0386169082156108fc029083906000818181858888f19350505050158015611959573d6000803e3d6000fd5b5060408051828152600160a060020a03898116602083015282519684900396908816927f13aa7090696e2a1d666cfc6046f2f72f1c4e0290649b47bab28d1b370ad73783928290030190a25b600354604051600160a060020a039091169085156108fc029086906000818181858888f193505050501580156119df573d6000803e3d6000fd5b5050505050505050565b600854604080517f524773ce0000000000000000000000000000000000000000000000000000000081529051600092600160a060020a03169163524773ce91600480830192602092919082900301818787803b158015611a4857600080fd5b505af1158015611a5c573d6000803e3d6000fd5b505050506040513d6020811015611a7257600080fd5b5051600854604080517f18160ddd0000000000000000000000000000000000000000000000000000000081529051600160a060020a03909216916318160ddd916004808201926020929091908290030181600087803b158015611ad457600080fd5b505af1158015611ae8573d6000803e3d6000fd5b505050506040513d6020811015611afe57600080fd5b505101905090565b6000806000806000878688604051602001808461ffff1661ffff167e010000000000000000000000000000000000000000000000000000000000000281526002018381526020018260ff1660ff167f010000000000000000000000000000000000000000000000000000000000000002815260010193505050506040516020818303038152906040526040518082805190602001908083835b60208310611bbe5780518252601f199092019160209182019101611b9f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020600190049450620f4240611c02866004600a611d7f565b811515611c0b57fe5b0693506103e8611c1e8660026004611d7f565b811515611c2757fe5b0692506103e8611c3a8660026006611d7f565b811515611c4357fe5b06915061ffff611c568660026008611d7f565b811515611c5f57fe5b069050939792965093509350565b60008163ffffffff16620f423f1415611c8857506004611cbc565b620efa6f63ffffffff831610611ca057506003611cbc565b620d03cc63ffffffff831610611cb857506002611cbc565b5060015b919050565b60008163ffffffff16620f423f1415611cdc57506004611cbc565b620f3bc963ffffffff831610611cf457506003611cbc565b620f0e8d63ffffffff831610611d0c57506002611cbc565b620e1cda63ffffffff831610611d2457506001611cbc565b506000611cbc565b60006103e661ffff841610611d465750610bb88101611d79565b6103dc61ffff841610611d5e57506107d08101611d79565b6103aa61ffff841610611d7657506103e88101611d79565b50805b92915050565b6008828102600290810a60001990810192840201900a8404169392505050565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152905600a165627a7a72305820cd3d156a4f468bfe311e1c27db19b3b7e56d9e1fdcb58e4252e6ff088537c5a80029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000512fbd15bde6570ff09e4438af27ede60402451500000000000000000000000000000000000000000000000000000000000000a00000000000000000000000006ebeaf8e8e946f0716e6533a6f2cefc83f60e8ab00000000000000000000000091b9d2835ad914bc1dcfe09bd1816febd04fd689000000000000000000000000657c8982d63f58ddd6a54c75591a572d4180cec80000000000000000000000000000000000000000000000000000000000000002000000000000000000000000ca6746f65d53d2df5022b5d775817e62e8462690000000000000000000000000015531a044bae03bf4dab1ceabfc232a969b7175
-----Decoded View---------------
Arg [0] : _old (address): 0x512Fbd15BDE6570ff09E4438Af27edE604024515
Arg [1] : _packs (address[]): 0xCA6746f65D53D2dF5022b5d775817e62e8462690,0x015531A044BAe03bF4dAB1ceabfc232a969b7175
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] : 000000000000000000000000ca6746f65d53d2df5022b5d775817e62e8462690
Arg [7] : 000000000000000000000000015531a044bae03bf4dab1ceabfc232a969b7175
Swarm Source
bzzr://cd3d156a4f468bfe311e1c27db19b3b7e56d9e1fdcb58e4252e6ff088537c5a8
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 27 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $0.052216 | 838.7 | $43.79 |
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.