Contract 0x79A198b2355CA2aef695d8a4987582E093911EBb 1

 

Contract Overview

Balance:
0 Ether

EtherValue:
$0.00

Token:
Txn Hash
Method
Block
From
To
Value
0x607aed6a88d04e1fb099fa68e1381512fdcfbc1296fdd720c1107c0ff45909e4Unpause140902952022-01-27 22:06:40191 days 18 hrs agoCryptobots.me: Deployer IN  0x79a198b2355ca2aef695d8a4987582e093911ebb0 Ether0.00619606 224.73114931
0x4bea833b191e51d83be6e52bc0674a8cb555d22d7b200b6602e5ce8605a4adeeCancel Auction W...140902252022-01-27 21:48:24191 days 18 hrs agoCryptobots.me: Deployer IN  0x79a198b2355ca2aef695d8a4987582e093911ebb0 Ether0.01425525 219.32178067
0x7a5a35009640f4211ea3b013724086d6fd6cfd784ec9aba39ffabd0d71b34d20Cancel Auction W...140902182022-01-27 21:46:36191 days 18 hrs agoCryptobots.me: Deployer IN  0x79a198b2355ca2aef695d8a4987582e093911ebb0 Ether0.0150463 231.49222906
0xb25b5f418b07ad2060b9b2255db4b88c62c14a2eed6da9f23ab8306d3f84f53eCancel Auction W...140902182022-01-27 21:46:36191 days 18 hrs agoCryptobots.me: Deployer IN  0x79a198b2355ca2aef695d8a4987582e093911ebb0 Ether0.0150463 231.49222906
0xaf96ef61ec616a07d2cb03ad2da3eb506d76807cfc907a8916a00303cdde34f8Cancel Auction W...140902012022-01-27 21:41:56191 days 18 hrs agoCryptobots.me: Deployer IN  0x79a198b2355ca2aef695d8a4987582e093911ebb0 Ether0.01323069 203.55856905
0x8b3fed97db94e7a5be67d8aafeb73fc3e5f3897f6b3e645197ce943c53fb9190Pause140901952022-01-27 21:41:18191 days 18 hrs agoCryptobots.me: Deployer IN  0x79a198b2355ca2aef695d8a4987582e093911ebb0 Ether0.0067317 242.77646117
0xcc37a30b2817a15ae575b5394c3145486477965dcea7f6280a3ae544cd116989Cancel Auction140765932022-01-25 19:19:51193 days 21 hrs ago0xaba8930a413c4b4d39bc6b5c1f9f6eedc949d799 IN  0x79a198b2355ca2aef695d8a4987582e093911ebb0 Ether0.00799812 127.54345316
0x5f30f7ae263a2acf089daa04768e2ecf3e74305ee0054e9d09dfe3ea089f9a34Cancel Auction133268922021-09-30 11:44:39311 days 4 hrs ago0x3665a5ec39cc862f355e433a116bb55ef710f6f3 IN  0x79a198b2355ca2aef695d8a4987582e093911ebb0 Ether0.00356625 56.86991909
0x56a545bc5345dd2b5c5976c572ed25035452850ba961f9bea1c396f116633723Cancel Auction133268712021-09-30 11:39:25311 days 4 hrs ago0x3665a5ec39cc862f355e433a116bb55ef710f6f3 IN  0x79a198b2355ca2aef695d8a4987582e093911ebb0 Ether0.00409966 65.37596764
0xb626b919192951178103aa213600737a331901047e4c2ed8e97c00b7fefc5063Cancel Auction133268662021-09-30 11:37:48311 days 4 hrs ago0x3665a5ec39cc862f355e433a116bb55ef710f6f3 IN  0x79a198b2355ca2aef695d8a4987582e093911ebb0 Ether0.00301803 48.12769209
0xb420c82c3d59e1b027605b2f5efa39f0879d7bb01f21882595d4ce159f1156e6Cancel Auction133268642021-09-30 11:37:25311 days 4 hrs ago0x3665a5ec39cc862f355e433a116bb55ef710f6f3 IN  0x79a198b2355ca2aef695d8a4987582e093911ebb0 Ether0.00317887 50.69246232
0xd81fb754555978a141074efa9472dc7f05bfaa2194aacbe9a200e01da24aea85Cancel Auction133268552021-09-30 11:35:25311 days 4 hrs ago0x3665a5ec39cc862f355e433a116bb55ef710f6f3 IN  0x79a198b2355ca2aef695d8a4987582e093911ebb0 Ether0.00367183 58.55355172
0xde02eb601725cda18a02810d96cf4924575ff7e888846b576bee2d2cd9220d69Cancel Auction133268542021-09-30 11:34:57311 days 4 hrs ago0x3665a5ec39cc862f355e433a116bb55ef710f6f3 IN  0x79a198b2355ca2aef695d8a4987582e093911ebb0 Ether0.00341373 54.43767013
0xda8de124f013a74922ce0a9106de7df74c819620123cbc36cdb8fc7a73a00488Cancel Auction133268522021-09-30 11:34:44311 days 4 hrs ago0x3665a5ec39cc862f355e433a116bb55ef710f6f3 IN  0x79a198b2355ca2aef695d8a4987582e093911ebb0 Ether0.00346623 55.27486725
0x2b42348aaa51baac9c7b6fd14c3ae3cbf9c47c1ddaffd5bd4af0c56b462c8ec0Cancel Auction133268502021-09-30 11:33:35311 days 4 hrs ago0x3665a5ec39cc862f355e433a116bb55ef710f6f3 IN  0x79a198b2355ca2aef695d8a4987582e093911ebb0 Ether0.00343716 54.8114233
0x8646d70f8254c3a25327f7d4590ad9e88795540adb8a4b542febc945d951788fCancel Auction133268502021-09-30 11:33:35311 days 4 hrs ago0x3665a5ec39cc862f355e433a116bb55ef710f6f3 IN  0x79a198b2355ca2aef695d8a4987582e093911ebb0 Ether0.00343716 54.8114233
0xf73c5d3b9255a45760e43d577a7dd8c02734b3e7b0e1997e964a378a37ec756bCancel Auction133268292021-09-30 11:28:25311 days 4 hrs ago0x3665a5ec39cc862f355e433a116bb55ef710f6f3 IN  0x79a198b2355ca2aef695d8a4987582e093911ebb0 Ether0.00326197 52.01759676
0xd56fef8e89bfb7c741f9a8436ec47bbb0ac3880cd4a25dc8827baa6f7e853c80Cancel Auction133268222021-09-30 11:26:23311 days 4 hrs ago0x3665a5ec39cc862f355e433a116bb55ef710f6f3 IN  0x79a198b2355ca2aef695d8a4987582e093911ebb0 Ether0.00246274 39.27253397
0x38dd3577513df3425c08eacc79db04699e6638211fdd288242133f48022319c1Cancel Auction133268182021-09-30 11:25:41311 days 5 hrs ago0x3665a5ec39cc862f355e433a116bb55ef710f6f3 IN  0x79a198b2355ca2aef695d8a4987582e093911ebb0 Ether0.00234938 37.46481064
0xa716897afaeccc1e774347bc82abed8a16d2a6afce6a5a6a6d0a5d328a59c85fCancel Auction133268182021-09-30 11:25:41311 days 5 hrs ago0x3665a5ec39cc862f355e433a116bb55ef710f6f3 IN  0x79a198b2355ca2aef695d8a4987582e093911ebb0 Ether0.00234938 37.46481064
0x6b856698fc3dddcf5fddd0c32a477dc754489e48437f27cc1c4895c73ad6bb40Cancel Auction133268132021-09-30 11:24:45311 days 5 hrs ago0x3665a5ec39cc862f355e433a116bb55ef710f6f3 IN  0x79a198b2355ca2aef695d8a4987582e093911ebb0 Ether0.00244347 38.96525445
0xe2e44ff26a897b1c6c271dda998c49e2bca44bf4664609c246925df39aa139daCancel Auction133267842021-09-30 11:18:57311 days 5 hrs ago0x3665a5ec39cc862f355e433a116bb55ef710f6f3 IN  0x79a198b2355ca2aef695d8a4987582e093911ebb0 Ether0.00296347 47.25756658
0x62fbbcb2dcb8c6fffbb1113e287a99605730b424e2ed159cabce9b4627458eecCancel Auction133267752021-09-30 11:17:48311 days 5 hrs ago0x3665a5ec39cc862f355e433a116bb55ef710f6f3 IN  0x79a198b2355ca2aef695d8a4987582e093911ebb0 Ether0.00320615 51.12744451
0x91c6d1e8c47cd89eed519f4bcca9cf943aa860e8478a2e31ef67996d9166dd4bCancel Auction133267612021-09-30 11:14:17311 days 5 hrs ago0x3665a5ec39cc862f355e433a116bb55ef710f6f3 IN  0x79a198b2355ca2aef695d8a4987582e093911ebb0 Ether0.00309036 49.28097964
0xba22f6a9cc99ee14d61e96b99eebb432bd22e20509bf45fa1564ab7c12a750a9Cancel Auction133267552021-09-30 11:12:48311 days 5 hrs ago0x3665a5ec39cc862f355e433a116bb55ef710f6f3 IN  0x79a198b2355ca2aef695d8a4987582e093911ebb0 Ether0.0029389 46.86574445
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x812b132bfed61b7a92d4ebed99dd905c6d411dca31569bfd313eeb13de0c462d133257842021-09-30 7:32:16311 days 8 hrs ago 0x79a198b2355ca2aef695d8a4987582e093911ebb CryptoBots: CBT Token0.00078 Ether
0xf6db23b3df3db775da830cc09ff5acaad427a70a69bf2b0bb6a3de64f0e3217476780512019-05-01 22:56:171193 days 17 hrs ago 0x79a198b2355ca2aef695d8a4987582e093911ebb0x63ef7186879c5b4bf8c5b2a8a0385c255f037e0e0.00873 Ether
0xf6db23b3df3db775da830cc09ff5acaad427a70a69bf2b0bb6a3de64f0e3217476780512019-05-01 22:56:171193 days 17 hrs ago CryptoBots: CBT Token 0x79a198b2355ca2aef695d8a4987582e093911ebb0.009 Ether
0x94866da9365fb652b100490e866e55c4740e28caade04cd558d8d211fa4f14bd76775112019-05-01 20:56:191193 days 19 hrs ago 0x79a198b2355ca2aef695d8a4987582e093911ebb0x4b5fac831877621c8b192725f0048670f3850d000.0097 Ether
0x94866da9365fb652b100490e866e55c4740e28caade04cd558d8d211fa4f14bd76775112019-05-01 20:56:191193 days 19 hrs ago CryptoBots: CBT Token 0x79a198b2355ca2aef695d8a4987582e093911ebb0.01 Ether
0x7e77fccc27071cbeddd5d2a0450285013a0f3646bbe06b21fff7f0759c2c6f7e76775022019-05-01 20:54:321193 days 19 hrs ago 0x79a198b2355ca2aef695d8a4987582e093911ebbENS Name kirienzo.eth0.00679 Ether
0x7e77fccc27071cbeddd5d2a0450285013a0f3646bbe06b21fff7f0759c2c6f7e76775022019-05-01 20:54:321193 days 19 hrs ago CryptoBots: CBT Token 0x79a198b2355ca2aef695d8a4987582e093911ebb0.007 Ether
0x5ac364f57e689f00ed8200afb68367efdbad1f899f18e6c8e13e8542f2ba100074434082019-03-26 9:20:261230 days 7 hrs ago 0x79a198b2355ca2aef695d8a4987582e093911ebb CryptoBots: CBT Token0.000321 Ether
0x73c0fe8b88262c980106ea4f744d7c13d1011a4f195c7613c6d92aee38c7499470472962019-01-11 9:36:201304 days 6 hrs ago 0x79a198b2355ca2aef695d8a4987582e093911ebb0x577aa9045c9ebd5b6980d56badcd8506e2dffca40.000679 Ether
0x73c0fe8b88262c980106ea4f744d7c13d1011a4f195c7613c6d92aee38c7499470472962019-01-11 9:36:201304 days 6 hrs ago CryptoBots: CBT Token 0x79a198b2355ca2aef695d8a4987582e093911ebb0.0007 Ether
0x7d34f7fae0fea5f67db38c5354ea536dabea380db2bd8252efc0732154d221a570026962019-01-03 9:54:411312 days 6 hrs ago 0x79a198b2355ca2aef695d8a4987582e093911ebbENS Name edmlove.eth0.0097 Ether
0x7d34f7fae0fea5f67db38c5354ea536dabea380db2bd8252efc0732154d221a570026962019-01-03 9:54:411312 days 6 hrs ago CryptoBots: CBT Token 0x79a198b2355ca2aef695d8a4987582e093911ebb0.01 Ether
0x9a18406ee543e4920fc579626f23beead6814dc2aa1cf190201b6f83432de1cf68720132018-12-12 8:54:241334 days 7 hrs ago 0x79a198b2355ca2aef695d8a4987582e093911ebb CryptoBots: CBT Token0.000105 Ether
0x1d1c1945fc1ff4cad2a4edaf765e09329c234287f2bf29289ec72d5b05e09acb67084252018-11-15 10:09:431361 days 6 hrs ago 0x79a198b2355ca2aef695d8a4987582e093911ebb0x205ee1373fed0b38da12a3f4d1cbab5694c8783a0.002425 Ether
0x1d1c1945fc1ff4cad2a4edaf765e09329c234287f2bf29289ec72d5b05e09acb67084252018-11-15 10:09:431361 days 6 hrs ago CryptoBots: CBT Token 0x79a198b2355ca2aef695d8a4987582e093911ebb0.0025 Ether
0x07267c399ae52d2b09254cc02989fea1cd1a43861bc2e8cafc77497946bd3a2a66820762018-11-11 2:39:071365 days 13 hrs ago 0x79a198b2355ca2aef695d8a4987582e093911ebb0x4b5fac831877621c8b192725f0048670f3850d000.00097 Ether
0x07267c399ae52d2b09254cc02989fea1cd1a43861bc2e8cafc77497946bd3a2a66820762018-11-11 2:39:071365 days 13 hrs ago CryptoBots: CBT Token 0x79a198b2355ca2aef695d8a4987582e093911ebb0.001 Ether
0x90efdeb5a27d1959856d5f355e1af56b0b9b24f725eb9b384aed2b4fd2d01a9d66054832018-10-29 13:13:421378 days 3 hrs ago 0x79a198b2355ca2aef695d8a4987582e093911ebb CryptoBots: CBT Token0.00772792 Ether
0x786e40be08964e0a5a55fd993a104ac56e3dc19b2d585922f02ae93c81583a5365337522018-10-17 19:48:061389 days 20 hrs ago 0x79a198b2355ca2aef695d8a4987582e093911ebb CryptoBots: CBT Token0.00000904 Ether
0x786e40be08964e0a5a55fd993a104ac56e3dc19b2d585922f02ae93c81583a5365337522018-10-17 19:48:061389 days 20 hrs ago 0x79a198b2355ca2aef695d8a4987582e093911ebb0x205ee1373fed0b38da12a3f4d1cbab5694c8783a0.00241622 Ether
0x786e40be08964e0a5a55fd993a104ac56e3dc19b2d585922f02ae93c81583a5365337522018-10-17 19:48:061389 days 20 hrs ago CryptoBots: CBT Token 0x79a198b2355ca2aef695d8a4987582e093911ebb0.0025 Ether
0xc98fb08329a49914eae5b20a1d258ba43ff0e896c26ead184375f69d19b560f865336952018-10-17 19:34:421389 days 20 hrs ago 0x79a198b2355ca2aef695d8a4987582e093911ebb0xec28c8158fcac205c658068b9caec90c088728600.00388 Ether
0xc98fb08329a49914eae5b20a1d258ba43ff0e896c26ead184375f69d19b560f865336952018-10-17 19:34:421389 days 20 hrs ago CryptoBots: CBT Token 0x79a198b2355ca2aef695d8a4987582e093911ebb0.004 Ether
0xcde4bd56aab50de3d3c2e4e6ee2c43e6ad01a86ec63149cdf388bbe51b922a2365001602018-10-12 8:22:101395 days 8 hrs ago 0x79a198b2355ca2aef695d8a4987582e093911ebb0x4b5fac831877621c8b192725f0048670f3850d000.00097 Ether
0xcde4bd56aab50de3d3c2e4e6ee2c43e6ad01a86ec63149cdf388bbe51b922a2365001602018-10-12 8:22:101395 days 8 hrs ago CryptoBots: CBT Token 0x79a198b2355ca2aef695d8a4987582e093911ebb0.001 Ether
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SiringClockAuction

Compiler Version
v0.4.19+commit.c4cbbb05

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-02-05
*/

pragma solidity ^0.4.11;


contract Ownable {
    address public owner;

    function Ownable() public {
        owner = msg.sender;
    }

    modifier onlyOwner() {
        require(msg.sender == owner);
        _;
    }

    function transferOwnership(address newOwner) public onlyOwner {
        if (newOwner != address(0)) {
            owner = newOwner;
        }
    }
}


contract ERC721 {
    function totalSupply() public view returns (uint256 total);
    function balanceOf(address _owner) public view returns (uint256 balance);
    function ownerOf(uint256 _tokenId) external view returns (address owner);
    function approve(address _to, uint256 _tokenId) external;
    function transfer(address _to, uint256 _tokenId) external;
    function transferFrom(address _from, address _to, uint256 _tokenId) external;
    event Transfer(address from, address to, uint256 tokenId);
    event Approval(address owner, address approved, uint256 tokenId);
}

contract GeneScienceInterface {
    function isGeneScience() public pure returns (bool);
    function mixGenes(uint256 genes1, uint256 genes2, uint256 targetBlock) public returns (uint256);
}

contract BotAccessControl {
    event ContractUpgrade(address newContract);
    address public ceoAddress;
    address public cfoAddress;
    address public cooAddress;
    bool public paused = false;

    modifier onlyCEO() {
        require(msg.sender == ceoAddress);
        _;
    }

    modifier onlyCFO() {
        require(msg.sender == cfoAddress);
        _;
    }

    modifier onlyCOO() {
        require(msg.sender == cooAddress);
        _;
    }

    modifier onlyCLevel() {
        require(
            msg.sender == cooAddress ||
            msg.sender == ceoAddress ||
            msg.sender == cfoAddress
        );
        _;
    }

    function setCEO(address _newCEO) external onlyCEO {
        require(_newCEO != address(0));

        ceoAddress = _newCEO;
    }

    function setCFO(address _newCFO) external onlyCEO {
        require(_newCFO != address(0));

        cfoAddress = _newCFO;
    }

    function setCOO(address _newCOO) external onlyCEO {
        require(_newCOO != address(0));

        cooAddress = _newCOO;
    }

    modifier whenNotPaused() {
        require(!paused);
        _;
    }

    modifier whenPaused {
        require(paused);
        _;
    }

    function pause() external onlyCLevel whenNotPaused {
        paused = true;
    }

    function unpause() public onlyCEO whenPaused {
        paused = false;
    }
}


contract BotBase is BotAccessControl {
    event Birth(
      address owner,
      uint256 botId,
      uint256 matronId,
      uint256 sireId,
      uint256 genes,
      uint256 birthTime
    );

    event Transfer(address from, address to, uint256 tokenId);

    struct Bot {
        uint256 genes;
        uint64 birthTime;
        uint64 cooldownEndBlock;
        uint32 matronId;
        uint32 sireId;
        uint32 siringWithId;
        uint16 cooldownIndex;
        uint16 generation;
    }

    uint32[14] public cooldowns = [
        uint32(1 minutes),
        uint32(2 minutes),
        uint32(5 minutes),
        uint32(10 minutes),
        uint32(30 minutes),
        uint32(1 hours),
        uint32(2 hours),
        uint32(4 hours),
        uint32(8 hours),
        uint32(16 hours),
        uint32(1 days),
        uint32(2 days),
        uint32(4 days),
        uint32(7 days)
    ];

    uint256 public secondsPerBlock = 15;

    Bot[] bots;

    mapping (uint256 => address) public botIndexToOwner;
    mapping (address => uint256) ownershipTokenCount;
    mapping (uint256 => address) public botIndexToApproved;
    mapping (uint256 => address) public sireAllowedToAddress;
    uint32 public destroyedBots;
    SaleClockAuction public saleAuction;
    SiringClockAuction public siringAuction;

    function _transfer(address _from, address _to, uint256 _tokenId) internal {
        if (_to == address(0)) {
            delete botIndexToOwner[_tokenId];
        } else {
            ownershipTokenCount[_to]++;
            botIndexToOwner[_tokenId] = _to;
        }
        if (_from != address(0)) {
            ownershipTokenCount[_from]--;
            delete sireAllowedToAddress[_tokenId];
            delete botIndexToApproved[_tokenId];
        }
        Transfer(_from, _to, _tokenId);
    }

    function _createBot(
        uint256 _matronId,
        uint256 _sireId,
        uint256 _generation,
        uint256 _genes,
        address _owner
    )
        internal
        returns (uint)
    {
        require(_matronId == uint256(uint32(_matronId)));
        require(_sireId == uint256(uint32(_sireId)));
        require(_generation == uint256(uint16(_generation)));

        uint16 cooldownIndex = uint16(_generation / 2);
        if (cooldownIndex > 13) {
            cooldownIndex = 13;
        }

        Bot memory _bot = Bot({
            genes: _genes,
            birthTime: uint64(now),
            cooldownEndBlock: 0,
            matronId: uint32(_matronId),
            sireId: uint32(_sireId),
            siringWithId: 0,
            cooldownIndex: cooldownIndex,
            generation: uint16(_generation)
        });
        uint256 newBotId = bots.push(_bot) - 1;

        require(newBotId == uint256(uint32(newBotId)));

        Birth(
            _owner,
            newBotId,
            uint256(_bot.matronId),
            uint256(_bot.sireId),
            _bot.genes,
            uint256(_bot.birthTime)
       );

        _transfer(0, _owner, newBotId);

        return newBotId;
    }

    function _destroyBot(uint256 _botId) internal {
        require(_botId > 0);
        address from = botIndexToOwner[_botId];
        require(from != address(0));
        destroyedBots++;
        _transfer(from, 0, _botId);
    }

    function setSecondsPerBlock(uint256 secs) external onlyCLevel {
        require(secs < cooldowns[0]);
        secondsPerBlock = secs;
    }
}


contract BotExtension is BotBase {
    event Lock(uint256 botId, uint16 mask);
    mapping (address => bool) extensions;
    mapping (uint256 => uint16) locks;
    uint16 constant LOCK_BREEDING = 1;
    uint16 constant LOCK_TRANSFER = 2;
    uint16 constant LOCK_ALL = LOCK_BREEDING | LOCK_TRANSFER;

    function addExtension(address _contract) external onlyCEO {
        extensions[_contract] = true;
    }

    function removeExtension(address _contract) external onlyCEO {
        delete extensions[_contract];
    }

    modifier onlyExtension() {
        require(extensions[msg.sender] == true);
        _;
    }

    function extCreateBot(
        uint256 _matronId,
        uint256 _sireId,
        uint256 _generation,
        uint256 _genes,
        address _owner
    )
        public
        onlyExtension
        returns (uint)
    {
        return _createBot(_matronId, _sireId, _generation, _genes, _owner);
    }

    function extDestroyBot(uint256 _botId)
        public
        onlyExtension
    {
        require(locks[_botId] == 0);

        _destroyBot(_botId);
    }

    function extLockBot(uint256 _botId, uint16 _mask)
        public
        onlyExtension
    {
        _lockBot(_botId, _mask);
    }

    function _lockBot(uint256 _botId, uint16 _mask)
        internal
    {
        require(_mask > 0);

        uint16 mask = locks[_botId];
        require(mask & _mask == 0);

        if (_mask & LOCK_BREEDING > 0) {
            Bot storage bot = bots[_botId];
            require(bot.siringWithId == 0);
        }

        if (_mask & LOCK_TRANSFER > 0) {
            address owner = botIndexToOwner[_botId];
            require(owner != address(saleAuction));
            require(owner != address(siringAuction));
        }

        mask |= _mask;

        locks[_botId] = mask;

        Lock(_botId, mask);
    }

    function extUnlockBot(uint256 _botId, uint16 _mask)
        public
        onlyExtension
        returns (uint16)
    {
        _unlockBot(_botId, _mask);
    }

    function _unlockBot(uint256 _botId, uint16 _mask)
        internal
    {
        require(_mask > 0);

        uint16 mask = locks[_botId];
        require(mask & _mask == _mask);
        mask ^= _mask;

        locks[_botId] = mask;

        Lock(_botId, mask);
    }

    function extGetLock(uint256 _botId)
        public
        view
        onlyExtension
        returns (uint16)
    {
        return locks[_botId];
    }
}


contract BotOwnership is BotExtension, ERC721 {
    string public constant name = "CryptoBots";
    string public constant symbol = "CBT";

    function _owns(address _claimant, uint256 _tokenId) internal view returns (bool) {
        return botIndexToOwner[_tokenId] == _claimant;
    }

    function _approvedFor(address _claimant, uint256 _tokenId) internal view returns (bool) {
        return botIndexToApproved[_tokenId] == _claimant;
    }

    function _approve(uint256 _tokenId, address _approved) internal {
        botIndexToApproved[_tokenId] = _approved;
    }

    function balanceOf(address _owner) public view returns (uint256 count) {
        return ownershipTokenCount[_owner];
    }

    function transfer(
        address _to,
        uint256 _tokenId
    )
        external
        whenNotPaused
    {
        require(_to != address(0));
        require(_to != address(this));
        require(_to != address(saleAuction));
        require(_to != address(siringAuction));
        require(_owns(msg.sender, _tokenId));
        require(locks[_tokenId] & LOCK_TRANSFER == 0);
        _transfer(msg.sender, _to, _tokenId);
    }

    function approve(
        address _to,
        uint256 _tokenId
    )
        external
        whenNotPaused
    {
        require(_owns(msg.sender, _tokenId));
        require(locks[_tokenId] & LOCK_TRANSFER == 0);
        _approve(_tokenId, _to);
        Approval(msg.sender, _to, _tokenId);
    }

    function transferFrom(
        address _from,
        address _to,
        uint256 _tokenId
    )
        external
        whenNotPaused
    {
        require(_to != address(0));
        require(_to != address(this));
        require(_approvedFor(msg.sender, _tokenId));
        require(_owns(_from, _tokenId));
        require(locks[_tokenId] & LOCK_TRANSFER == 0);
        _transfer(_from, _to, _tokenId);
    }

    function totalSupply() public view returns (uint) {
        return bots.length - destroyedBots;
    }

    function ownerOf(uint256 _tokenId)
        external
        view
        returns (address owner)
    {
        owner = botIndexToOwner[_tokenId];
        require(owner != address(0));
    }

    function tokensOfOwner(address _owner) external view returns(uint256[] ownerTokens) {
        uint256 tokenCount = balanceOf(_owner);

        if (tokenCount == 0) {
            return new uint256[](0);
        } else {
            uint256[] memory result = new uint256[](tokenCount);
            uint256 totalBots = bots.length - 1;
            uint256 resultIndex = 0;
            uint256 botId;
            for (botId = 0; botId <= totalBots; botId++) {
                if (botIndexToOwner[botId] == _owner) {
                    result[resultIndex] = botId;
                    resultIndex++;
                }
            }

            return result;
        }
    }
}


contract BotBreeding is BotOwnership {
    event Pregnant(address owner, uint256 matronId, uint256 sireId, uint256 cooldownEndBlock);
    uint256 public autoBirthFee = 2 finney;
    uint256 public pregnantBots;
    GeneScienceInterface public geneScience;

    function setGeneScienceAddress(address _address) external onlyCEO {
        GeneScienceInterface candidateContract = GeneScienceInterface(_address);
        require(candidateContract.isGeneScience());
        geneScience = candidateContract;
    }

    function _isReadyToBreed(uint256 _botId, Bot _bot) internal view returns (bool) {
        return
            (_bot.siringWithId == 0) &&
            (_bot.cooldownEndBlock <= uint64(block.number)) &&
            (locks[_botId] & LOCK_BREEDING == 0);
    }

    function _isSiringPermitted(uint256 _sireId, uint256 _matronId) internal view returns (bool) {
        address matronOwner = botIndexToOwner[_matronId];
        address sireOwner = botIndexToOwner[_sireId];
        return (matronOwner == sireOwner || sireAllowedToAddress[_sireId] == matronOwner);
    }

    function _triggerCooldown(Bot storage _bot) internal {
        _bot.cooldownEndBlock = uint64((cooldowns[_bot.cooldownIndex]/secondsPerBlock) + block.number);
        if (_bot.cooldownIndex < 13) {
            _bot.cooldownIndex += 1;
        }
    }

    function approveSiring(address _addr, uint256 _sireId)
        external
        whenNotPaused
    {
        require(_owns(msg.sender, _sireId));
        sireAllowedToAddress[_sireId] = _addr;
    }

    function setAutoBirthFee(uint256 val) external onlyCOO {
        autoBirthFee = val;
    }

    function _isReadyToGiveBirth(Bot _matron) private view returns (bool) {
        return (_matron.siringWithId != 0) && (_matron.cooldownEndBlock <= uint64(block.number));
    }

    function isReadyToBreed(uint256 _botId)
        public
        view
        returns (bool)
    {
        Bot storage bot = bots[_botId];
        return _botId > 0 && _isReadyToBreed(_botId, bot);
    }

    function isPregnant(uint256 _botId)
        public
        view
        returns (bool)
    {
        return _botId > 0 && bots[_botId].siringWithId != 0;
    }

    function _isValidMatingPair(
        Bot storage _matron,
        uint256 _matronId,
        Bot storage _sire,
        uint256 _sireId
    )
        private
        view
        returns(bool)
    {
        if (_matronId == _sireId) {
            return false;
        }
        if (_matron.matronId == _sireId || _matron.sireId == _sireId) {
            return false;
        }
        if (_sire.matronId == _matronId || _sire.sireId == _matronId) {
            return false;
        }
        if (_sire.matronId == 0 || _matron.matronId == 0) {
            return true;
        }
        if (_sire.matronId == _matron.matronId || _sire.matronId == _matron.sireId) {
            return false;
        }
        if (_sire.sireId == _matron.matronId || _sire.sireId == _matron.sireId) {
            return false;
        }
        return true;
    }

    function _canBreedWithViaAuction(uint256 _matronId, uint256 _sireId)
        internal
        view
        returns (bool)
    {
        Bot storage matron = bots[_matronId];
        Bot storage sire = bots[_sireId];
        return _isValidMatingPair(matron, _matronId, sire, _sireId);
    }

    function canBreedWith(uint256 _matronId, uint256 _sireId)
        external
        view
        returns(bool)
    {
        require(_matronId > 0);
        require(_sireId > 0);
        Bot storage matron = bots[_matronId];
        Bot storage sire = bots[_sireId];
        return _isValidMatingPair(matron, _matronId, sire, _sireId) &&
            _isSiringPermitted(_sireId, _matronId);
    }

    function _breedWith(uint256 _matronId, uint256 _sireId) internal {
        Bot storage sire = bots[_sireId];
        Bot storage matron = bots[_matronId];
        matron.siringWithId = uint32(_sireId);
        _triggerCooldown(sire);
        _triggerCooldown(matron);
        delete sireAllowedToAddress[_matronId];
        delete sireAllowedToAddress[_sireId];
        pregnantBots++;
        Pregnant(botIndexToOwner[_matronId], _matronId, _sireId, matron.cooldownEndBlock);
    }

    function breedWithAuto(uint256 _matronId, uint256 _sireId)
        external
        payable
        whenNotPaused
    {
        require(msg.value >= autoBirthFee);
        require(_owns(msg.sender, _matronId));
        require(_isSiringPermitted(_sireId, _matronId));
        Bot storage matron = bots[_matronId];
        require(_isReadyToBreed(_matronId, matron));
        Bot storage sire = bots[_sireId];
        require(_isReadyToBreed(_sireId, sire));
        require(_isValidMatingPair(
            matron,
            _matronId,
            sire,
            _sireId
        ));
        _breedWith(_matronId, _sireId);
    }

    function giveBirth(uint256 _matronId)
        external
        whenNotPaused
        returns(uint256)
    {
        Bot storage matron = bots[_matronId];
        require(matron.birthTime != 0);
        require(_isReadyToGiveBirth(matron));
        uint256 sireId = matron.siringWithId;
        Bot storage sire = bots[sireId];
        uint16 parentGen = matron.generation;
        if (sire.generation > matron.generation) {
            parentGen = sire.generation;
        }
        uint256 childGenes = geneScience.mixGenes(matron.genes, sire.genes, matron.cooldownEndBlock - 1);
        address owner = botIndexToOwner[_matronId];
        uint256 botId = _createBot(_matronId, matron.siringWithId, parentGen + 1, childGenes, owner);
        delete matron.siringWithId;
        pregnantBots--;
        msg.sender.send(autoBirthFee);
        return botId;
    }
}


contract ClockAuctionBase {
    struct Auction {
        address seller;
        uint128 startingPrice;
        uint128 endingPrice;
        uint64 duration;
        uint64 startedAt;
    }
    ERC721 public nonFungibleContract;
    uint256 public ownerCut;
    mapping (uint256 => Auction) tokenIdToAuction;
    event AuctionCreated(
      address seller,
      uint256 tokenId,
      uint256 startingPrice,
      uint256 endingPrice,
      uint256 creationTime,
      uint256 duration
    );
    event AuctionSuccessful(uint256 tokenId, uint256 totalPrice, address seller, address winner, uint256 time);
    event AuctionCancelled(uint256 tokenId, address seller, uint256 time);

    function _owns(address _claimant, uint256 _tokenId) internal view returns (bool) {
        return (nonFungibleContract.ownerOf(_tokenId) == _claimant);
    }

    function _escrow(address _owner, uint256 _tokenId) internal {
        nonFungibleContract.transferFrom(_owner, this, _tokenId);
    }

    function _transfer(address _receiver, uint256 _tokenId) internal {
        nonFungibleContract.transfer(_receiver, _tokenId);
    }

    function _addAuction(uint256 _tokenId, Auction _auction) internal {
        require(_auction.duration >= 1 minutes);
        tokenIdToAuction[_tokenId] = _auction;
        AuctionCreated(
            _auction.seller,
            uint256(_tokenId),
            uint256(_auction.startingPrice),
            uint256(_auction.endingPrice),
            uint256(_auction.startedAt),
            uint256(_auction.duration)
        );
    }

    function _cancelAuction(uint256 _tokenId, address _seller) internal {
        _removeAuction(_tokenId);
        _transfer(_seller, _tokenId);
        AuctionCancelled(_tokenId, _seller, uint256(now));
    }

    function _bid(uint256 _tokenId, uint256 _bidAmount)
        internal
        returns (uint256)
    {
        Auction storage auction = tokenIdToAuction[_tokenId];
        require(_isOnAuction(auction));
        uint256 price = _currentPrice(auction);
        require(_bidAmount >= price);
        address seller = auction.seller;
        _removeAuction(_tokenId);
        if (price > 0) {
            uint256 auctioneerCut = _computeCut(price);
            uint256 sellerProceeds = price - auctioneerCut;
            seller.transfer(sellerProceeds);
        }
        uint256 bidExcess = _bidAmount - price;
        msg.sender.transfer(bidExcess);
        AuctionSuccessful(_tokenId, price, seller, msg.sender, uint256(now));
        return price;
    }

    function _removeAuction(uint256 _tokenId) internal {
        delete tokenIdToAuction[_tokenId];
    }

    function _isOnAuction(Auction storage _auction) internal view returns (bool) {
        return (_auction.startedAt > 0);
    }

    function _currentPrice(Auction storage _auction)
        internal
        view
        returns (uint256)
    {
        uint256 secondsPassed = 0;
        if (now > _auction.startedAt) {
            secondsPassed = now - _auction.startedAt;
        }
        return _computeCurrentPrice(
            _auction.startingPrice,
            _auction.endingPrice,
            _auction.duration,
            secondsPassed
        );
    }

    function _computeCurrentPrice(
        uint256 _startingPrice,
        uint256 _endingPrice,
        uint256 _duration,
        uint256 _secondsPassed
    )
        internal
        pure
        returns (uint256)
    {
        if (_secondsPassed >= _duration) {
            return _endingPrice;
        } else {
            int256 totalPriceChange = int256(_endingPrice) - int256(_startingPrice);
            int256 currentPriceChange = totalPriceChange * int256(_secondsPassed) / int256(_duration);
            int256 currentPrice = int256(_startingPrice) + currentPriceChange;
            return uint256(currentPrice);
        }
    }

    function _computeCut(uint256 _price) internal view returns (uint256) {
        return _price * ownerCut / 10000;
    }
}


contract Pausable is Ownable {
    event Pause();
    event Unpause();
    bool public paused = false;

    modifier whenNotPaused() {
        require(!paused);
        _;
    }

    modifier whenPaused {
        require(paused);
        _;
    }

    function pause() public onlyOwner whenNotPaused returns (bool) {
        paused = true;
        Pause();
        return true;
    }

    function unpause() public onlyOwner whenPaused returns (bool) {
        paused = false;
        Unpause();
        return true;
    }
}


contract ClockAuction is Pausable, ClockAuctionBase {
    function ClockAuction(address _nftAddress, uint256 _cut) public {
        require(_cut <= 10000);
        ownerCut = _cut;

        ERC721 candidateContract = ERC721(_nftAddress);
        nonFungibleContract = candidateContract;
    }

    function withdrawBalance() external {
        address nftAddress = address(nonFungibleContract);
        require(
            msg.sender == owner ||
            msg.sender == nftAddress
        );
        bool res = nftAddress.send(this.balance);
    }

    function createAuction(
        uint256 _tokenId,
        uint256 _startingPrice,
        uint256 _endingPrice,
        uint256 _duration,
        address _seller
    )
        external
        whenNotPaused
    {
        require(_startingPrice == uint256(uint128(_startingPrice)));
        require(_endingPrice == uint256(uint128(_endingPrice)));
        require(_duration == uint256(uint64(_duration)));
        require(_owns(msg.sender, _tokenId));
        _escrow(msg.sender, _tokenId);
        Auction memory auction = Auction(
            _seller,
            uint128(_startingPrice),
            uint128(_endingPrice),
            uint64(_duration),
            uint64(now)
        );
        _addAuction(_tokenId, auction);
    }

    function bid(uint256 _tokenId)
        external
        payable
        whenNotPaused
    {
        _bid(_tokenId, msg.value);
        _transfer(msg.sender, _tokenId);
    }

    function cancelAuction(uint256 _tokenId)
        external
    {
        Auction storage auction = tokenIdToAuction[_tokenId];
        require(_isOnAuction(auction));
        address seller = auction.seller;
        require(msg.sender == seller);
        _cancelAuction(_tokenId, seller);
    }

    function cancelAuctionWhenPaused(uint256 _tokenId)
        external
        whenPaused
        onlyOwner
    {
        Auction storage auction = tokenIdToAuction[_tokenId];
        require(_isOnAuction(auction));
        _cancelAuction(_tokenId, auction.seller);
    }

    function getAuction(uint256 _tokenId)
        external
        view
        returns
    (
        address seller,
        uint256 startingPrice,
        uint256 endingPrice,
        uint256 duration,
        uint256 startedAt
    )
    {
        Auction storage auction = tokenIdToAuction[_tokenId];
        require(_isOnAuction(auction));
        return (
            auction.seller,
            auction.startingPrice,
            auction.endingPrice,
            auction.duration,
            auction.startedAt
        );
    }

    function getCurrentPrice(uint256 _tokenId)
        external
        view
        returns (uint256)
    {
        Auction storage auction = tokenIdToAuction[_tokenId];
        require(_isOnAuction(auction));
        return _currentPrice(auction);
    }

}


contract SiringClockAuction is ClockAuction {
    bool public isSiringClockAuction = true;

    function SiringClockAuction(address _nftAddr, uint256 _cut) public
        ClockAuction(_nftAddr, _cut) {}

    function createAuction(
        uint256 _tokenId,
        uint256 _startingPrice,
        uint256 _endingPrice,
        uint256 _duration,
        address _seller
    )
        external
    {
        require(_startingPrice == uint256(uint128(_startingPrice)));
        require(_endingPrice == uint256(uint128(_endingPrice)));
        require(_duration == uint256(uint64(_duration)));
        require(msg.sender == address(nonFungibleContract));
        _escrow(_seller, _tokenId);
        Auction memory auction = Auction(
            _seller,
            uint128(_startingPrice),
            uint128(_endingPrice),
            uint64(_duration),
            uint64(now)
        );
        _addAuction(_tokenId, auction);
    }

    function bid(uint256 _tokenId)
        external
        payable
    {
        require(msg.sender == address(nonFungibleContract));
        address seller = tokenIdToAuction[_tokenId].seller;
        _bid(_tokenId, msg.value);
        _transfer(seller, _tokenId);
    }

}


contract SaleClockAuction is ClockAuction {
    bool public isSaleClockAuction = true;
    uint256 public gen0SaleCount;
    uint256[5] public lastGen0SalePrices;

    function SaleClockAuction(address _nftAddr, uint256 _cut) public
        ClockAuction(_nftAddr, _cut) {}

    function createAuction(
        uint256 _tokenId,
        uint256 _startingPrice,
        uint256 _endingPrice,
        uint256 _duration,
        address _seller
    )
        external
    {
        require(_startingPrice == uint256(uint128(_startingPrice)));
        require(_endingPrice == uint256(uint128(_endingPrice)));
        require(_duration == uint256(uint64(_duration)));
        require(msg.sender == address(nonFungibleContract));
        _escrow(_seller, _tokenId);
        Auction memory auction = Auction(
            _seller,
            uint128(_startingPrice),
            uint128(_endingPrice),
            uint64(_duration),
            uint64(now)
        );
        _addAuction(_tokenId, auction);
    }

    function bid(uint256 _tokenId)
        external
        payable
    {
        address seller = tokenIdToAuction[_tokenId].seller;
        uint256 price = _bid(_tokenId, msg.value);
        _transfer(msg.sender, _tokenId);
        if (seller == address(nonFungibleContract)) {
            lastGen0SalePrices[gen0SaleCount % 5] = price;
            gen0SaleCount++;
        }
    }

    function averageGen0SalePrice() external view returns (uint256) {
        uint256 sum = 0;
        for (uint256 i = 0; i < 5; i++) {
            sum += lastGen0SalePrices[i];
        }
        return sum / 5;
    }

}


contract BotAuction is BotBreeding {
    function setSaleAuctionAddress(address _address) external onlyCEO {
        SaleClockAuction candidateContract = SaleClockAuction(_address);
        require(candidateContract.isSaleClockAuction());
        saleAuction = candidateContract;
    }

    function setSiringAuctionAddress(address _address) external onlyCEO {
        SiringClockAuction candidateContract = SiringClockAuction(_address);
        require(candidateContract.isSiringClockAuction());
        siringAuction = candidateContract;
    }

    function createSaleAuction(
        uint256 _botId,
        uint256 _startingPrice,
        uint256 _endingPrice,
        uint256 _duration
    )
        external
        whenNotPaused
    {
        require(_owns(msg.sender, _botId));
        require(!isPregnant(_botId));
        _approve(_botId, saleAuction);
        saleAuction.createAuction(
            _botId,
            _startingPrice,
            _endingPrice,
            _duration,
            msg.sender
        );
    }

    function createSiringAuction(
        uint256 _botId,
        uint256 _startingPrice,
        uint256 _endingPrice,
        uint256 _duration
    )
        external
        whenNotPaused
    {
        require(_owns(msg.sender, _botId));
        require(isReadyToBreed(_botId));
        _approve(_botId, siringAuction);
        siringAuction.createAuction(
            _botId,
            _startingPrice,
            _endingPrice,
            _duration,
            msg.sender
        );
    }

    function bidOnSiringAuction(
        uint256 _sireId,
        uint256 _matronId
    )
        external
        payable
        whenNotPaused
    {
        require(_owns(msg.sender, _matronId));
        require(isReadyToBreed(_matronId));
        require(_canBreedWithViaAuction(_matronId, _sireId));
        uint256 currentPrice = siringAuction.getCurrentPrice(_sireId);
        require(msg.value >= currentPrice + autoBirthFee);
        siringAuction.bid.value(msg.value - autoBirthFee)(_sireId);
        _breedWith(uint32(_matronId), uint32(_sireId));
    }

    function withdrawAuctionBalances() external onlyCLevel {
        saleAuction.withdrawBalance();
        siringAuction.withdrawBalance();
    }
}


contract BotMinting is BotAuction {
    uint256 public constant PROMO_CREATION_LIMIT = 5000;
    uint256 public constant GEN0_CREATION_LIMIT = 45000;
    uint256 public constant GEN0_STARTING_PRICE = 10 finney;
    uint256 public constant GEN0_AUCTION_DURATION = 1 days;
    uint256 public promoCreatedCount;
    uint256 public gen0CreatedCount;

    function createPromoBot(uint256 _genes, address _owner) external onlyCOO {
        address botOwner = _owner;
        if (botOwner == address(0)) {
            botOwner = cooAddress;
        }
        require(promoCreatedCount < PROMO_CREATION_LIMIT);

        promoCreatedCount++;
        _createBot(0, 0, 0, _genes, botOwner);
    }

    function createGen0Auction(uint256 _genes) external onlyCOO {
        require(gen0CreatedCount < GEN0_CREATION_LIMIT);

        uint256 botId = _createBot(0, 0, 0, _genes, address(this));
        _approve(botId, saleAuction);

        saleAuction.createAuction(
            botId,
            _computeNextGen0Price(),
            0,
            GEN0_AUCTION_DURATION,
            address(this)
        );

        gen0CreatedCount++;
    }

    function _computeNextGen0Price() internal view returns (uint256) {
        uint256 avePrice = saleAuction.averageGen0SalePrice();
        require(avePrice == uint256(uint128(avePrice)));
        uint256 nextPrice = avePrice + (avePrice / 2);
        if (nextPrice < GEN0_STARTING_PRICE) {
            nextPrice = GEN0_STARTING_PRICE;
        }
        return nextPrice;
    }
}


contract BotCore is BotMinting {
    address public newContractAddress;

    function BotCore() public {
        paused = true;
        ceoAddress = msg.sender;
        cooAddress = msg.sender;
        _createBot(0, 0, 0, uint256(-1), msg.sender);
    }

    function setNewAddress(address _v2Address) external onlyCEO whenPaused {
        newContractAddress = _v2Address;
        ContractUpgrade(_v2Address);
    }

    function() external payable {
        require(
            msg.sender == address(saleAuction) ||
            msg.sender == address(siringAuction)
        );
    }

    function getBot(uint256 _id)
        external
        view
        returns (
        bool isGestating,
        bool isReady,
        uint256 cooldownIndex,
        uint256 nextActionAt,
        uint256 siringWithId,
        uint256 birthTime,
        uint256 matronId,
        uint256 sireId,
        uint256 generation,
        uint256 genes
    )
    {
        require(botIndexToOwner[_id] != address(0));
        Bot storage bot = bots[_id];
        isGestating = (bot.siringWithId != 0);
        isReady = (bot.cooldownEndBlock <= block.number);
        cooldownIndex = uint256(bot.cooldownIndex);
        nextActionAt = uint256(bot.cooldownEndBlock);
        siringWithId = uint256(bot.siringWithId);
        birthTime = uint256(bot.birthTime);
        matronId = uint256(bot.matronId);
        sireId = uint256(bot.sireId);
        generation = uint256(bot.generation);
        genes = bot.genes;
    }

    function unpause() public onlyCEO whenPaused {
        require(saleAuction != address(0));
        require(siringAuction != address(0));
        require(geneScience != address(0));
        require(newContractAddress == address(0));
        super.unpause();
    }

    function withdrawBalance() external onlyCFO {
        uint256 balance = this.balance;
        uint256 subtractFees = (pregnantBots + 1) * autoBirthFee;
        if (balance > subtractFees) {
            cfoAddress.send(balance - subtractFees);
        }
    }

    function destroyBot(uint256 _botId) external onlyCEO {
        require(locks[_botId] == 0);
        _destroyBot(_botId);
    }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"_startingPrice","type":"uint256"},{"name":"_endingPrice","type":"uint256"},{"name":"_duration","type":"uint256"},{"name":"_seller","type":"address"}],"name":"createAuction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"bid","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdrawBalance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isSiringClockAuction","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"getAuction","outputs":[{"name":"seller","type":"address"},{"name":"startingPrice","type":"uint256"},{"name":"endingPrice","type":"uint256"},{"name":"duration","type":"uint256"},{"name":"startedAt","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ownerCut","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"cancelAuctionWhenPaused","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"cancelAuction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"getCurrentPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"nonFungibleContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_nftAddr","type":"address"},{"name":"_cut","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"seller","type":"address"},{"indexed":false,"name":"tokenId","type":"uint256"},{"indexed":false,"name":"startingPrice","type":"uint256"},{"indexed":false,"name":"endingPrice","type":"uint256"},{"indexed":false,"name":"creationTime","type":"uint256"},{"indexed":false,"name":"duration","type":"uint256"}],"name":"AuctionCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenId","type":"uint256"},{"indexed":false,"name":"totalPrice","type":"uint256"},{"indexed":false,"name":"seller","type":"address"},{"indexed":false,"name":"winner","type":"address"},{"indexed":false,"name":"time","type":"uint256"}],"name":"AuctionSuccessful","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenId","type":"uint256"},{"indexed":false,"name":"seller","type":"address"},{"indexed":false,"name":"time","type":"uint256"}],"name":"AuctionCancelled","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"}]

606060405260008060146101000a81548160ff0219169083151502179055506001600460006101000a81548160ff021916908315150217905550341561004457600080fd5b60405160408061175a8339810160405280805190602001909190805190602001909190505081816000336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061271082111515156100be57600080fd5b8160028190555082905080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505061163d8061011d6000396000f3006060604052600436106100db576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806327ebe40a146100e05780633f4ba83a1461013d578063454a2ab31461016a5780635c975abb146101825780635fd8c710146101af57806376190f8f146101c457806378bd7935146101f157806383b5ff8b146102705780638456cb5914610299578063878eb368146102c65780638da5cb5b146102e957806396b5a7551461033e578063c55d0f5614610361578063dd1b7a0f14610398578063f2fde38b146103ed575b600080fd5b34156100eb57600080fd5b61013b600480803590602001909190803590602001909190803590602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610426565b005b341561014857600080fd5b610150610576565b604051808215151515815260200191505060405180910390f35b610180600480803590602001909190505061063b565b005b341561018d57600080fd5b6101956106eb565b604051808215151515815260200191505060405180910390f35b34156101ba57600080fd5b6101c26106fe565b005b34156101cf57600080fd5b6101d7610809565b604051808215151515815260200191505060405180910390f35b34156101fc57600080fd5b610212600480803590602001909190505061081c565b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018281526020019550505050505060405180910390f35b341561027b57600080fd5b61028361093f565b6040518082815260200191505060405180910390f35b34156102a457600080fd5b6102ac610945565b604051808215151515815260200191505060405180910390f35b34156102d157600080fd5b6102e76004808035906020019091905050610a0c565b005b34156102f457600080fd5b6102fc610ade565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561034957600080fd5b61035f6004808035906020019091905050610b03565b005b341561036c57600080fd5b6103826004808035906020019091905050610b9f565b6040518082815260200191505060405180910390f35b34156103a357600080fd5b6103ab610bdc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103f857600080fd5b610424600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c02565b005b61042e611593565b846fffffffffffffffffffffffffffffffff168514151561044e57600080fd5b836fffffffffffffffffffffffffffffffff168414151561046e57600080fd5b8267ffffffffffffffff168314151561048657600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156104e257600080fd5b6104ec8287610cd7565b60a0604051908101604052808373ffffffffffffffffffffffffffffffffffffffff168152602001866fffffffffffffffffffffffffffffffff168152602001856fffffffffffffffffffffffffffffffff1681526020018467ffffffffffffffff1681526020014267ffffffffffffffff16815250905061056e8682610de7565b505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105d357600080fd5b600060149054906101000a900460ff1615156105ee57600080fd5b60008060146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a16001905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561069957600080fd5b6003600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506106dc823461101a565b506106e781836111f5565b5050565b600060149054906101000a900460ff1681565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806107ac57508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156107b757600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f1935050505090505050565b600460009054906101000a900460ff1681565b600080600080600080600360008881526020019081526020016000209050610843816112d1565b151561084e57600080fd5b8060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160010160009054906101000a90046fffffffffffffffffffffffffffffffff168260010160109054906101000a90046fffffffffffffffffffffffffffffffff168360020160009054906101000a900467ffffffffffffffff168460020160089054906101000a900467ffffffffffffffff16836fffffffffffffffffffffffffffffffff169350826fffffffffffffffffffffffffffffffff1692508167ffffffffffffffff1691508067ffffffffffffffff169050955095509550955095505091939590929450565b60025481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109a257600080fd5b600060149054906101000a900460ff161515156109be57600080fd5b6001600060146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a16001905090565b60008060149054906101000a900460ff161515610a2857600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a8357600080fd5b600360008381526020019081526020016000209050610aa1816112d1565b1515610aac57600080fd5b610ada828260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166112ff565b5050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600360008481526020019081526020016000209150610b24826112d1565b1515610b2f57600080fd5b8160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b9057600080fd5b610b9a83826112ff565b505050565b600080600360008481526020019081526020016000209050610bc0816112d1565b1515610bcb57600080fd5b610bd481611389565b915050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c5d57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610cd457806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd8330846040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1515610dcf57600080fd5b6102c65a03f11515610de057600080fd5b5050505050565b603c816060015167ffffffffffffffff1610151515610e0557600080fd5b806003600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060408201518160010160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060608201518160020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060808201518160020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050507fabdd2430f9e10eb5db384c1218c42f980dd5fcda760a680a0d95ec506f0963cb81600001518383602001516fffffffffffffffffffffffffffffffff1684604001516fffffffffffffffffffffffffffffffff16856080015167ffffffffffffffff16866060015167ffffffffffffffff16604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001868152602001858152602001848152602001838152602001828152602001965050505050505060405180910390a15050565b6000806000806000806000600360008a81526020019081526020016000209550611043866112d1565b151561104e57600080fd5b61105786611389565b945084881015151561106857600080fd5b8560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1693506110988961147c565b60008511156110f2576110aa85611538565b925082850391508373ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f1935050505015156110f157600080fd5b5b84880390503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050151561113757600080fd5b7fc2a394cb356728b3540b84dee72ea6de41f44fd94de223565258efe1549ee06f8986863342604051808681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019550505050505060405180910390a184965050505050505092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15156112b957600080fd5b6102c65a03f115156112ca57600080fd5b5050505050565b6000808260020160089054906101000a900467ffffffffffffffff1667ffffffffffffffff16119050919050565b6113088261147c565b61131281836111f5565b7f6a3d5a07d548e27ae884a742682e9b929c0a0e4040990bc28c04637c5c077104828242604051808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a15050565b600080600090508260020160089054906101000a900467ffffffffffffffff1667ffffffffffffffff164211156113e2578260020160089054906101000a900467ffffffffffffffff1667ffffffffffffffff16420390505b6114748360010160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168460010160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168560020160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1684611553565b915050919050565b60036000828152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160006101000a8154906fffffffffffffffffffffffffffffffff02191690556001820160106101000a8154906fffffffffffffffffffffffffffffffff02191690556002820160006101000a81549067ffffffffffffffff02191690556002820160086101000a81549067ffffffffffffffff0219169055505050565b6000612710600254830281151561154b57fe5b049050919050565b600080600080858510151561156a57869350611588565b87870392508585840281151561157c57fe5b05915081880190508093505b505050949350505050565b60a060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160006fffffffffffffffffffffffffffffffff16815260200160006fffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250905600a165627a7a7230582071c1285791d6db7351f727478d1603250dbbf3429534694086d3a0f8907a086c0029000000000000000000000000f7a6e15dfd5cdd9ef12711bd757a9b6021abf643000000000000000000000000000000000000000000000000000000000000012c

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000f7a6e15dfd5cdd9ef12711bd757a9b6021abf643000000000000000000000000000000000000000000000000000000000000012c

-----Decoded View---------------
Arg [0] : _nftAddr (address): 0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf643
Arg [1] : _cut (uint256): 300

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000f7a6e15dfd5cdd9ef12711bd757a9b6021abf643
Arg [1] : 000000000000000000000000000000000000000000000000000000000000012c


Swarm Source

bzzr://71c1285791d6db7351f727478d1603250dbbf3429534694086d3a0f8907a086c
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.

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.