ETH Price: $2,731.86 (-2.50%)
Gas: 0.63 Gwei

Contract

0xbc6a666A840a2b3288190fAC38A65e92AFD97Df9
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdraw ETH57851472018-06-14 3:06:352445 days ago1528945595IN
0xbc6a666A...2AFD97Df9
0 ETH0.0003128810
Clear Zo Daily L...57316832018-06-04 16:17:062454 days ago1528129026IN
0xbc6a666A...2AFD97Df9
0 ETH0.0007245715
Clear Zo Daily L...57316712018-06-04 16:14:272454 days ago1528128867IN
0xbc6a666A...2AFD97Df9
0 ETH0.0007245715
Clear Zo Daily L...57316692018-06-04 16:13:552454 days ago1528128835IN
0xbc6a666A...2AFD97Df9
0 ETH0.0007245715
Clear Zo Daily L...57133202018-06-01 10:09:102458 days ago1527847750IN
0xbc6a666A...2AFD97Df9
0 ETH0.0007245715
Clear Zo Daily L...57133172018-06-01 10:08:202458 days ago1527847700IN
0xbc6a666A...2AFD97Df9
0 ETH0.0007245715
Clear Zo Daily L...56997292018-05-30 0:06:312460 days ago1527638791IN
0xbc6a666A...2AFD97Df9
0 ETH0.0007245715
Clear Zo Daily L...56940572018-05-28 23:58:432461 days ago1527551923IN
0xbc6a666A...2AFD97Df9
0 ETH0.0003442915
Clear Zo Daily L...56916642018-05-28 13:48:572461 days ago1527515337IN
0xbc6a666A...2AFD97Df9
0 ETH0.0003442915
Clear Zo Daily L...56898942018-05-28 6:24:122462 days ago1527488652IN
0xbc6a666A...2AFD97Df9
0 ETH0.0007245715
Clear Zo Daily L...56854782018-05-27 11:50:262462 days ago1527421826IN
0xbc6a666A...2AFD97Df9
0 ETH0.0007245715
Public Sell56849572018-05-27 9:46:012463 days ago1527414361IN
0xbc6a666A...2AFD97Df9
0 ETH0.0004879220
Clear Zo Daily L...56796212018-05-26 11:02:102463 days ago1527332530IN
0xbc6a666A...2AFD97Df9
0 ETH0.0007245715
Clear Zo Daily L...56776472018-05-26 2:51:502464 days ago1527303110IN
0xbc6a666A...2AFD97Df9
0 ETH0.0007245715
Clear Zo Daily L...56724662018-05-25 4:33:342465 days ago1527222814IN
0xbc6a666A...2AFD97Df9
0 ETH0.0004995715
Buy Zo Assets56711152018-05-24 22:53:372465 days ago1527202417IN
0xbc6a666A...2AFD97Df9
0.025 ETH0.000630655
Synthesize56711032018-05-24 22:51:182465 days ago1527202278IN
0xbc6a666A...2AFD97Df9
0.003 ETH0.0015
Clear Zo Daily L...56660472018-05-24 1:02:552466 days ago1527123775IN
0xbc6a666A...2AFD97Df9
0 ETH0.0003622915
Put On Sale56656172018-05-23 23:13:592466 days ago1527117239IN
0xbc6a666A...2AFD97Df9
0 ETH0.000488715
Buy Zo Assets56646172018-05-23 19:03:352466 days ago1527102215IN
0xbc6a666A...2AFD97Df9
0.0125 ETH0.000465666.1
Buy Zo Assets56645922018-05-23 18:57:362466 days ago1527101856IN
0xbc6a666A...2AFD97Df9
0.0125 ETH0.000465666.1
Buy Zo Assets56645892018-05-23 18:57:152466 days ago1527101835IN
0xbc6a666A...2AFD97Df9
0.0125 ETH0.000677896.1
Put On Sale56642612018-05-23 17:35:252466 days ago1527096925IN
0xbc6a666A...2AFD97Df9
0 ETH0.000745269
Get Synthesizati...56638922018-05-23 16:05:302466 days ago1527091530IN
0xbc6a666A...2AFD97Df9
0 ETH0.0012182515
Synthesize56638672018-05-23 16:00:102466 days ago1527091210IN
0xbc6a666A...2AFD97Df9
0.003 ETH0.00550525
View all transactions

Latest 12 internal transactions

Advanced mode:
Parent Transaction Hash Block
From
To
57851472018-06-14 3:06:352445 days ago1528945595
0xbc6a666A...2AFD97Df9
0.4336 ETH
56638922018-05-23 16:05:302466 days ago1527091530
0xbc6a666A...2AFD97Df9
0.003 ETH
56637452018-05-23 15:27:262466 days ago1527089246
0xbc6a666A...2AFD97Df9
0.003 ETH
56637212018-05-23 15:20:062466 days ago1527088806
0xbc6a666A...2AFD97Df9
0.003 ETH
56635962018-05-23 14:50:112466 days ago1527087011
0xbc6a666A...2AFD97Df9
0.003 ETH
56635852018-05-23 14:46:402466 days ago1527086800
0xbc6a666A...2AFD97Df9
0.003 ETH
56635722018-05-23 14:43:222466 days ago1527086602
0xbc6a666A...2AFD97Df9
0.003 ETH
56635552018-05-23 14:39:112466 days ago1527086351
0xbc6a666A...2AFD97Df9
0.003 ETH
56635502018-05-23 14:37:422466 days ago1527086262
0xbc6a666A...2AFD97Df9
0.003 ETH
56284622018-05-17 9:17:572473 days ago1526548677
0xbc6a666A...2AFD97Df9
0.0389 ETH
56204062018-05-15 23:09:412474 days ago1526425781
0xbc6a666A...2AFD97Df9
0.003 ETH
56146132018-05-14 22:45:002475 days ago1526337900
0xbc6a666A...2AFD97Df9
0.003 ETH
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xeAc5ba02...3C09aA629
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
AlchemyMove

Compiler Version
v0.4.23+commit.124ca40d

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

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

pragma solidity ^0.4.18;

contract Manager {
    address public ceo;
    address public cfo;
    address public coo;
    address public cao;

    event OwnershipTransferred(address previousCeo, address newCeo);
    event Pause();
    event Unpause();


    /**
    * @dev The Ownable constructor sets the original `owner` of the contract to the sender
    * account.
    */
    function Manager() public {
        coo = msg.sender; 
        cfo = 0x7810704C6197aFA95e940eF6F719dF32657AD5af;
        ceo = 0x96C0815aF056c5294Ad368e3FBDb39a1c9Ae4e2B;
        cao = 0xC4888491B404FfD15cA7F599D624b12a9D845725;
    }

    /**
    * @dev Throws if called by any account other than the owner.
    */
    modifier onlyCEO() {
        require(msg.sender == ceo);
        _;
    }

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

    modifier onlyCAO() {
        require(msg.sender == cao);
        _;
    }
    
    bool allowTransfer = false;
    
    function changeAllowTransferState() public onlyCOO {
        if (allowTransfer) {
            allowTransfer = false;
        } else {
            allowTransfer = true;
        }
    }
    
    modifier whenTransferAllowed() {
        require(allowTransfer);
        _;
    }

    /**
    * @dev Allows the current owner to transfer control of the contract to a newCeo.
    * @param newCeo The address to transfer ownership to.
    */
    function demiseCEO(address newCeo) public onlyCEO {
        require(newCeo != address(0));
        emit OwnershipTransferred(ceo, newCeo);
        ceo = newCeo;
    }

    function setCFO(address newCfo) public onlyCEO {
        require(newCfo != address(0));
        cfo = newCfo;
    }

    function setCOO(address newCoo) public onlyCEO {
        require(newCoo != address(0));
        coo = newCoo;
    }

    function setCAO(address newCao) public onlyCEO {
        require(newCao != address(0));
        cao = newCao;
    }

    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() onlyCAO whenNotPaused public {
        paused = true;
        emit Pause();
    }

    /**
    * @dev called by the owner to unpause, returns to normal state
    */
    function unpause() onlyCAO whenPaused public {
        paused = false;
        emit Unpause();
    }
}

contract AlchemyBase is Manager {

    // Assets of each account
    mapping (address => bytes32[8]) assets;

    // Event
    event Transfer(address from, address to);

    // Get all assets of a particular account
    function assetOf(address account) public view returns(bytes32[8]) {
        return assets[account];
    }

    function _checkAndAdd(bytes32 x, bytes32 y) internal pure returns(bytes32) {
        bytes32 mask = bytes32(255); // 0x11111111

        bytes32 result;

        uint maskedX;
        uint maskedY;
        uint maskedResult;

        for (uint i = 0; i < 31; i++) {
            // Get current mask
            if (i > 0) {
                mask = mask << 8;
            }

            // Get masked values
            maskedX = uint(x & mask);
            maskedY = uint(y & mask);
            maskedResult = maskedX + maskedY;

            // Prevent overflow
            require(maskedResult < (2 ** (8 * (i + 1))));

            // Clear result digits in masked position
            result = (result ^ mask) & result;

            // Write to result
            result = result | bytes32(maskedResult);
        }

        return result;
    }

    function _checkAndSub(bytes32 x, bytes32 y) internal pure returns(bytes32) {
        bytes32 mask = bytes32(255); // 0x11111111

        bytes32 result;

        uint maskedX;
        uint maskedY;
        uint maskedResult;

        for (uint i = 0; i < 31; i++) {
            // Get current mask
            if (i > 0) {
                mask = mask << 8;
            }

            // Get masked values
            maskedX = uint(x & mask);
            maskedY = uint(y & mask);

            // Ensure x >= y
            require(maskedX >= maskedY);

            // Calculate result
            maskedResult = maskedX - maskedY;

            // Clear result digits in masked position
            result = (result ^ mask) & result;

            // Write to result
            result = result | bytes32(maskedResult);
        }

        return result;
    }

    // Transfer assets from one account to another
    function transfer(address to, bytes32[8] value) public whenNotPaused whenTransferAllowed {
        // One can not transfer assets to self
        require(msg.sender != to);
        bytes32[8] memory assetFrom = assets[msg.sender];
        bytes32[8] memory assetTo = assets[to];

        for (uint256 i = 0; i < 8; i++) {
            assetFrom[i] = _checkAndSub(assetFrom[i], value[i]);
            assetTo[i] = _checkAndAdd(assetTo[i], value[i]);
        }

        assets[msg.sender] = assetFrom;
        assets[to] = assetTo;

        // Emit the transfer event
        emit Transfer(msg.sender, to);
    }

    // Withdraw ETH to the owner account. Ownable-->Pausable-->AlchemyBase
    function withdrawETH() external onlyCAO {
        cfo.transfer(address(this).balance);
    }
}


contract AlchemyPatent is AlchemyBase {

    // patent struct
    struct Patent {
        // current patent owner
        address patentOwner;
        // the time when owner get the patent
        uint256 beginTime;
        // whether this patent is on sale
        bool onSale; 
        // the sale price
        uint256 price;
        // last deal price
        uint256 lastPrice;
        // the time when this sale is put on
        uint256 sellTime;
    }

    // Creator of each kind of asset
    mapping (uint16 => Patent) public patents;

    // patent fee ratio
    // Values 0-10,000 map to 0%-100%
    uint256 public feeRatio = 9705;

    uint256 public patentValidTime = 2 days;
    uint256 public patentSaleTimeDelay = 2 hours;

    // Event
    event RegisterCreator(address account, uint16 kind);
    event SellPatent(uint16 assetId, uint256 sellPrice);
    event ChangePatentSale(uint16 assetId, uint256 newPrice);
    event BuyPatent(uint16 assetId, address buyer);

    // set the patent fee ratio
    function setPatentFee(uint256 newFeeRatio) external onlyCOO {
        require(newFeeRatio <= 10000);
        feeRatio = newFeeRatio;
    }

    // sell the patent
    function sellPatent(uint16 assetId, uint256 sellPrice) public whenNotPaused {
        Patent memory patent = patents[assetId];
        require(patent.patentOwner == msg.sender);
        if (patent.lastPrice > 0) {
            require(sellPrice <= 2 * patent.lastPrice);
        } else {
            require(sellPrice <= 1 ether);
        }
        
        require(!patent.onSale);

        patent.onSale = true;
        patent.price = sellPrice;
        patent.sellTime = now;

        patents[assetId] = patent;

        // Emit the event
        emit SellPatent(assetId, sellPrice);
    }

    function publicSell(uint16 assetId) public whenNotPaused {
        Patent memory patent = patents[assetId];
        require(patent.patentOwner != address(0));  // this is a valid patent
        require(!patent.onSale);
        require(patent.beginTime + patentValidTime < now);

        patent.onSale = true;
        patent.price = patent.lastPrice;
        patent.sellTime = now;

        patents[assetId] = patent;

        // Emit the event
        emit SellPatent(assetId, patent.lastPrice);
    }

    // change sell price
    function changePatentSale(uint16 assetId, uint256 newPrice) external whenNotPaused {
        Patent memory patent = patents[assetId];
        require(patent.patentOwner == msg.sender);
        if (patent.lastPrice > 0) {
            require(newPrice <= 2 * patent.lastPrice);
        } else {
            require(newPrice <= 1 ether);
        }
        require(patent.onSale == true);

        patent.price = newPrice;

        patents[assetId] = patent;

        // Emit the event
        emit ChangePatentSale(assetId, newPrice);
    }

    // buy patent
    function buyPatent(uint16 assetId) external payable whenNotPaused {
        Patent memory patent = patents[assetId];
        require(patent.patentOwner != address(0));  // this is a valid patent
        require(patent.patentOwner != msg.sender);
        require(patent.onSale);
        require(msg.value >= patent.price);
        require(now >= patent.sellTime + patentSaleTimeDelay);

        patent.patentOwner.transfer(patent.price / 10000 * feeRatio);
        patent.patentOwner = msg.sender;
        patent.beginTime = now;
        patent.onSale = false;
        patent.lastPrice = patent.price;

        patents[assetId] = patent;

        //Emit the event
        emit BuyPatent(assetId, msg.sender);
    }
}


contract ChemistryInterface {
    function isChemistry() public pure returns (bool);

    // function turnOnFurnace(bytes32 x0, bytes32 x1, bytes32 x2, bytes32 x3) public returns (bytes32 r0, bytes32 r1, bytes32 r2, bytes32 r3);
    function turnOnFurnace(uint16[5] inputAssets, uint128 addition) public returns (uint16[5]);

    function computeCooldownTime(uint128 typeAdd, uint256 baseTime) public returns (uint256);
}



contract SkinInterface {
    function getActiveSkin(address account) public view returns (uint128);
}




contract AlchemySynthesize is AlchemyPatent {

    // Synthesize formula
    ChemistryInterface public chemistry;
    SkinInterface public skinContract;

    // Cooldown after submit a after submit a transformation request
    uint256[9] public cooldownLevels = [
        5 minutes,
        10 minutes,
        15 minutes,
        20 minutes,
        25 minutes,
        30 minutes,
        35 minutes,
        40 minutes,
        45 minutes
    ];

    // patent fee for each level
    uint256[9] public pFees = [
        0,
        2 finney,
        4 finney,
        8 finney,
        12 finney,
        18 finney,
        26 finney,
        36 finney,
        48 finney
    ];

    // alchemy furnace struct
    struct Furnace {
        // the pending assets for synthesize
        uint16[5] pendingAssets;
        // cooldown end time of synthesise
        uint256 cooldownEndTime;
        // whether this furnace is using
        bool inSynthesization;
        //
        uint256 count;
    }

    uint256 public maxSCount = 10;

    // furnace of each account
    mapping (address => Furnace) public accountsToFurnace;

    // alchemy level of each asset
    mapping (uint16 => uint256) public assetLevel;

    // Pre-paid ether for synthesization, will be returned to user if the synthesization failed (minus gas).
    uint256 public prePaidFee = 1000000 * 3000000000; // (1million gas * 3 gwei)

    bool public isSynthesizeAllowed = false;

    // When a synthesization request starts, our daemon needs to call getSynthesizationResult() after cooldown.
    // event SynthesizeStart(address account);
    event AutoSynthesize(address account, uint256 cooldownEndTime);
    event SynthesizeSuccess(address account);

    // Initialize the asset level
    function initializeLevel() public onlyCOO {
        // Level of assets
        uint8[9] memory levelSplits = [4,     // end of level 0. start of level is 0
                                          19,    // end of level 1
                                          46,    // end of level 2
                                          82,    // end of level 3
                                          125,   // end of level 4
                                          156,
                                          180,
                                          195,
                                          198];  // end of level 8
        uint256 currentLevel = 0;
        for (uint8 i = 0; i < 198; i ++) {
            if (i == levelSplits[currentLevel]) {
                currentLevel ++;
            }
            assetLevel[uint16(i)] = currentLevel;
        }
    }

    function setAssetLevel(uint16 assetId, uint256 level) public onlyCOO {
        assetLevel[assetId] = level;
    }

    function setMaxCount(uint256 max) external onlyCOO {
        maxSCount = max;
    }

    function setPatentFees(uint256[9] newFees) external onlyCOO {
        for (uint256 i = 0; i < 9; i++) {
            pFees[i] = newFees[i];
        }
    }

    function changeSynthesizeAllowed(bool newState) external onlyCOO {
        isSynthesizeAllowed = newState;
    }

    // Get furnace information
    function getFurnace(address account) public view returns (uint16[5], uint256, bool, uint256) {
        return (accountsToFurnace[account].pendingAssets, accountsToFurnace[account].cooldownEndTime, accountsToFurnace[account].inSynthesization, accountsToFurnace[account].count);
    }

    // Set chemistry science contract address
    function setChemistryAddress(address chemistryAddress) external onlyCOO {
        ChemistryInterface candidateContract = ChemistryInterface(chemistryAddress);

        require(candidateContract.isChemistry());

        chemistry = candidateContract;
    }

    // Set skin contract address
    function setSkinContract(address skinAddress) external onlyCOO {
        skinContract = SkinInterface(skinAddress);
    }

    // setPrePaidFee: set advance amount, only owner can call this
    function setPrePaidFee(uint256 newPrePaidFee) external onlyCOO {
        prePaidFee = newPrePaidFee;
    }

    // _isCooldownReady: check whether cooldown period has been passed
    function _isCooldownReady(address account) internal view returns (bool) {
        return (accountsToFurnace[account].cooldownEndTime <= now);
    }

    // synthesize: call _isCooldownReady, pending assets, fire SynthesizeStart event
    function synthesize(uint16[5] inputAssets, uint256 sCount) public payable whenNotPaused {
        require(isSynthesizeAllowed == true);
        // Check msg.sender is not in another synthesizing process
        require(accountsToFurnace[msg.sender].inSynthesization == false);
        //
        require(sCount <= maxSCount && sCount > 0);

        // Check whether assets are valid
        bytes32[8] memory asset = assets[msg.sender];

        bytes32 mask; // 0x11111111
        uint256 maskedValue;
        uint256 count;
        bytes32 _asset;
        uint256 pos;
        uint256 maxLevel = 0;
        uint256 totalFee = 0;
        uint256 _assetLevel;
        Patent memory _patent;
        uint16 currentAsset;

        for (uint256 i = 0; i < 5; i++) {
            currentAsset = inputAssets[i];
            if (currentAsset < 248) {
                _asset = asset[currentAsset / 31];
                pos = currentAsset % 31;
                mask = bytes32(255) << (8 * pos);
                maskedValue = uint256(_asset & mask);

                require(maskedValue >= (sCount << (8*pos)));
                maskedValue -= (sCount << (8*pos));
                _asset = ((_asset ^ mask) & _asset) | bytes32(maskedValue);
                asset[currentAsset / 31] = _asset;
                count += 1;

                // handle patent fee
                _assetLevel = assetLevel[currentAsset];
                if (_assetLevel > maxLevel) {
                    maxLevel = _assetLevel;
                }

                if (_assetLevel > 0) {
                    _patent = patents[currentAsset];
                    if (_patent.patentOwner != address(0) && _patent.patentOwner != msg.sender && !_patent.onSale && (_patent.beginTime + patentValidTime > now)) {
                        maskedValue = pFees[_assetLevel] * sCount;
                        _patent.patentOwner.transfer(maskedValue / 10000 * feeRatio);
                        totalFee += maskedValue;
                    }
                }
            }
        }

        require(msg.value >= prePaidFee + totalFee);

        require(count >= 2 && count <= 5);

        // Check whether cooldown has ends
        require(_isCooldownReady(msg.sender));

        uint128 skinType = skinContract.getActiveSkin(msg.sender);
        uint256 _cooldownTime = chemistry.computeCooldownTime(skinType, cooldownLevels[maxLevel]);

        accountsToFurnace[msg.sender].pendingAssets = inputAssets;
        accountsToFurnace[msg.sender].cooldownEndTime = now + _cooldownTime;
        accountsToFurnace[msg.sender].inSynthesization = true;
        accountsToFurnace[msg.sender].count = sCount;
        assets[msg.sender] = asset;

        // Emit SnthesizeStart event
        // SynthesizeStart(msg.sender);
        emit AutoSynthesize(msg.sender, accountsToFurnace[msg.sender].cooldownEndTime);
    }

    function getPatentFee(address account, uint16[5] inputAssets, uint256 sCount) external view returns (uint256) {

        uint256 totalFee = 0;
        uint256 _assetLevel;
        Patent memory _patent;
        uint16 currentAsset;

        for (uint256 i = 0; i < 5; i++) {
            currentAsset = inputAssets[i];
            if (currentAsset < 248) {

                // handle patent fee
                _assetLevel = assetLevel[currentAsset];
                if (_assetLevel > 0) {
                    _patent = patents[currentAsset];
                    if (_patent.patentOwner != address(0) && _patent.patentOwner != account && !_patent.onSale && (_patent.beginTime + patentValidTime > now)) {
                        totalFee += pFees[_assetLevel] * sCount;
                    }
                }
            }
        }
        return totalFee;
    }

    // getSynthesizationResult: auto synthesize daemin call this. if cooldown time has passed, give final result
    // Anyone can call this function, if they are willing to pay the gas
    function getSynthesizationResult(address account) external whenNotPaused {

        // Make sure this account is in synthesization
        require(accountsToFurnace[account].inSynthesization);

        // Make sure the cooldown has ends
        require(_isCooldownReady(account));

        // Get result using pending assets
        uint16[5] memory _pendingAssets = accountsToFurnace[account].pendingAssets;
        uint128 skinType = skinContract.getActiveSkin(account);
        uint16[5] memory resultAssets; //= chemistry.turnOnFurnace(_pendingAssets, skinType);

        // Write result
        bytes32[8] memory asset = assets[account];

        bytes32 mask; // 0x11111111
        uint256 maskedValue;
        uint256 j;
        uint256 pos;

        for (uint256 k = 0; k < accountsToFurnace[account].count; k++) {
            resultAssets = chemistry.turnOnFurnace(_pendingAssets, skinType);
            for (uint256 i = 0; i < 5; i++) {
                if (resultAssets[i] < 248) {
                    j = resultAssets[i] / 31;
                    pos = resultAssets[i] % 31;
                    mask = bytes32(255) << (8 * pos);
                    maskedValue = uint256(asset[j] & mask);

                    require(maskedValue < (uint256(255) << (8*pos)));
                    maskedValue += (uint256(1) << (8*pos));
                    asset[j] = ((asset[j] ^ mask) & asset[j]) | bytes32(maskedValue);

                    // handle patent
                    if (resultAssets[i] > 3 && patents[resultAssets[i]].patentOwner == address(0)) {
                        patents[resultAssets[i]] = Patent({patentOwner: account,
                                                        beginTime: now,
                                                        onSale: false,
                                                        price: 0,
                                                        lastPrice: 100 finney,
                                                        sellTime: 0});
                        // Emit the event
                        emit RegisterCreator(account, resultAssets[i]);
                    }
                }
            }
        }


        // Mark this synthesization as finished
        accountsToFurnace[account].inSynthesization = false;
        accountsToFurnace[account].count = 0;
        assets[account] = asset;

        msg.sender.transfer(prePaidFee);

        emit SynthesizeSuccess(account);
    }
}


contract AlchemyMinting is AlchemySynthesize {

    // Limit the nubmer of zero order assets the owner can create every day
    uint256 public zoDailyLimit = 1000; // we can create 4 * 1000 = 4000 0-order asset each day
    uint256[4] public zoCreated;

    // Limit the number each account can buy every day
    mapping(address => bytes32) public accountsBoughtZoAsset;
    mapping(address => uint256) public accountsZoLastRefreshTime;

    // Price of zero order assets
    uint256 public zoPrice = 2500 szabo;

    // Last daily limit refresh time
    uint256 public zoLastRefreshTime = now;

    // Event
    event BuyZeroOrderAsset(address account, bytes32 values);

    // To ensure scarcity, we are unable to change the max numbers of zo assets every day.
    // We are only able to modify the price
    function setZoPrice(uint256 newPrice) external onlyCOO {
        zoPrice = newPrice;
    }

    // Buy zo assets from us
    function buyZoAssets(bytes32 values) external payable whenNotPaused {
        // Check whether we need to refresh the daily limit
        bytes32 history = accountsBoughtZoAsset[msg.sender];
        if (accountsZoLastRefreshTime[msg.sender] == uint256(0)) {
            // This account's first time to buy zo asset, we do not need to clear accountsBoughtZoAsset
            accountsZoLastRefreshTime[msg.sender] = zoLastRefreshTime;
        } else {
            if (accountsZoLastRefreshTime[msg.sender] < zoLastRefreshTime) {
                history = bytes32(0);
                accountsZoLastRefreshTime[msg.sender] = zoLastRefreshTime;
            }
        }

        uint256 currentCount = 0;
        uint256 count = 0;

        bytes32 mask = bytes32(255); // 0x11111111
        uint256 maskedValue;
        uint256 maskedResult;

        bytes32 asset = assets[msg.sender][0];

        for (uint256 i = 0; i < 4; i++) {
            if (i > 0) {
                mask = mask << 8;
            }
            maskedValue = uint256(values & mask);
            currentCount = maskedValue / 2 ** (8 * i);
            count += currentCount;

            // Check whether this account has bought too many assets
            maskedResult = uint256(history & mask);
            maskedResult += maskedValue;
            require(maskedResult < (2 ** (8 * (i + 1))));

            // Update account bought history
            history = ((history ^ mask) & history) | bytes32(maskedResult);

            // Check whether this account will have too many assets
            maskedResult = uint256(asset & mask);
            maskedResult += maskedValue;
            require(maskedResult < (2 ** (8 * (i + 1))));

            // Update user asset
            asset = ((asset ^ mask) & asset) | bytes32(maskedResult);

            // Check whether we have enough assets to sell
            require(zoCreated[i] + currentCount <= zoDailyLimit);

            // Update our creation history
            zoCreated[i] += currentCount;
        }

        // Ensure this account buy at least one zo asset
        require(count > 0);

        // Check whether there are enough money for payment
        require(msg.value >= count * zoPrice);

        // Write updated user asset
        assets[msg.sender][0] = asset;

        // Write updated history
        accountsBoughtZoAsset[msg.sender] = history;

        // Emit BuyZeroOrderAsset event
        emit BuyZeroOrderAsset(msg.sender, values);

    }

    // Our daemon will refresh daily limit
    function clearZoDailyLimit() external onlyCOO {
        uint256 nextDay = zoLastRefreshTime + 1 days;
        if (now > nextDay) {
            zoLastRefreshTime = nextDay;
            for (uint256 i = 0; i < 4; i++) {
                zoCreated[i] =0;
            }
        }
    }
}

contract AlchemyMarket is AlchemyMinting {

    // Sale order struct
    struct SaleOrder {
        // Asset id to be sold
        uint64 assetId;
        // Sale amount
        uint64 amount;
        // Desired price
        uint128 desiredPrice;
        // Seller
        address seller; 
    }

    // Max number of sale orders of each account 
    uint128 public maxSaleNum = 20;

    // Cut ratio for a transaction
    // Values 0-10,000 map to 0%-100%
    uint256 public trCut = 275;

    // Next sale id
    uint256 public nextSaleId = 1;

    // Sale orders list 
    mapping (uint256 => SaleOrder) public saleOrderList;

    // Sale information of each account
    mapping (address => uint256) public accountToSaleNum;

    // events
    event PutOnSale(address account, uint256 saleId);
    event WithdrawSale(address account, uint256 saleId);
    event ChangeSale(address account, uint256 saleId);
    event BuyInMarket(address buyer, uint256 saleId, uint256 amount);
    event SaleClear(uint256 saleId);

    // functions
    function setTrCut(uint256 newCut) public onlyCOO {
        trCut = newCut;
    }

    // Put asset on sale
    function putOnSale(uint256 assetId, uint256 amount, uint256 price) external whenNotPaused {
        // One account can have no more than maxSaleNum sale orders
        require(accountToSaleNum[msg.sender] < maxSaleNum);

        // check whether zero order asset is to be sold 
        // which is not allowed
        require(assetId > 3 && assetId < 248);
        require(amount > 0 && amount < 256);

        uint256 assetFloor = assetId / 31;
        uint256 assetPos = assetId - 31 * assetFloor;
        bytes32 allAsset = assets[msg.sender][assetFloor];

        bytes32 mask = bytes32(255) << (8 * assetPos); // 0x11111111
        uint256 maskedValue;
        uint256 maskedResult;
        uint256 addAmount = amount << (8 * assetPos);

        // check whether there are enough unpending assets to sell
        maskedValue = uint256(allAsset & mask);
        require(addAmount <= maskedValue);

        // Remove assets to be sold from owner
        maskedResult = maskedValue - addAmount;
        allAsset = ((allAsset ^ mask) & allAsset) | bytes32(maskedResult);

        assets[msg.sender][assetFloor] = allAsset;

        // Put on sale
        SaleOrder memory saleorder = SaleOrder(
            uint64(assetId),
            uint64(amount),
            uint128(price),
            msg.sender
        );

        saleOrderList[nextSaleId] = saleorder;
        nextSaleId += 1;

        accountToSaleNum[msg.sender] += 1;

        // Emit the Approval event
        emit PutOnSale(msg.sender, nextSaleId-1);
    }
  
    // Withdraw an sale order
    function withdrawSale(uint256 saleId) external whenNotPaused {
        // Can only withdraw self's sale order
        require(saleOrderList[saleId].seller == msg.sender);

        uint256 assetId = uint256(saleOrderList[saleId].assetId);
        uint256 assetFloor = assetId / 31;
        uint256 assetPos = assetId - 31 * assetFloor;
        bytes32 allAsset = assets[msg.sender][assetFloor];

        bytes32 mask = bytes32(255) << (8 * assetPos); // 0x11111111
        uint256 maskedValue;
        uint256 maskedResult;
        uint256 addAmount = uint256(saleOrderList[saleId].amount) << (8 * assetPos);

        // check whether this account will have too many assets
        maskedValue = uint256(allAsset & mask);
        require(addAmount + maskedValue < 2**(8 * (assetPos + 1)));

        // Retransfer asset to be sold from owner
        maskedResult = maskedValue + addAmount;
        allAsset = ((allAsset ^ mask) & allAsset) | bytes32(maskedResult);

        assets[msg.sender][assetFloor] = allAsset;

        // Delete sale order
        delete saleOrderList[saleId];

        accountToSaleNum[msg.sender] -= 1;

        // Emit the cancel event
        emit WithdrawSale(msg.sender, saleId);
    }
 
//     // Change sale order
//     function changeSale(uint256 assetId, uint256 amount, uint256 price, uint256 saleId) external whenNotPaused {
//         // Check if msg sender is the seller
//         require(msg.sender == saleOrderList[saleId].seller);
// 
//     }
 
    // Buy assets in market
    function buyInMarket(uint256 saleId, uint256 amount) external payable whenNotPaused {
        address seller = saleOrderList[saleId].seller;
        // Check whether the saleId is a valid sale order
        require(seller != address(0));

        // Check the sender isn't the seller
        require(msg.sender != seller);

        require(saleOrderList[saleId].amount >= uint64(amount));

        // Check whether pay value is enough
        require(msg.value / saleOrderList[saleId].desiredPrice >= amount);

        uint256 totalprice = amount * saleOrderList[saleId].desiredPrice;

        uint64 assetId = saleOrderList[saleId].assetId;

        uint256 assetFloor = assetId / 31;
        uint256 assetPos = assetId - 31 * assetFloor;
        bytes32 allAsset = assets[msg.sender][assetFloor];

        bytes32 mask = bytes32(255) << (8 * assetPos); // 0x11111111
        uint256 maskedValue;
        uint256 maskedResult;
        uint256 addAmount = amount << (8 * assetPos);

        // check whether this account will have too many assets
        maskedValue = uint256(allAsset & mask);
        require(addAmount + maskedValue < 2**(8 * (assetPos + 1)));

        // Transfer assets to buyer
        maskedResult = maskedValue + addAmount;
        allAsset = ((allAsset ^ mask) & allAsset) | bytes32(maskedResult);

        assets[msg.sender][assetFloor] = allAsset;

        saleOrderList[saleId].amount -= uint64(amount);

        // Cut and then send the proceeds to seller
        uint256 sellerProceeds = totalprice - _computeCut(totalprice);

        seller.transfer(sellerProceeds);

        // Emit the buy event
        emit BuyInMarket(msg.sender, saleId, amount);

        // If the sale has complete, clear this order
        if (saleOrderList[saleId].amount == 0) {
            accountToSaleNum[seller] -= 1;
            delete saleOrderList[saleId];

            // Emit the clear event
            emit SaleClear(saleId);
        }
    }

    // Compute the marketCut
    function _computeCut(uint256 _price) internal view returns (uint256) {
        return _price / 10000 * trCut;
    }
}


contract AlchemyMove is AlchemyMarket {

    // 
    bool public isMovingEnable = true;

    // 
    function disableMoving() external onlyCOO {
        isMovingEnable = false;
    }

    // move data of player
    function moveAccountData(address[] accounts, bytes32[] _assets, uint256[] saleNums) external onlyCOO {
        require(isMovingEnable);

        uint256 j;
        address account;
        for (uint256 i = 0; i < accounts.length; i++) {
            account = accounts[i];
            for (j = 0; j < 8; j++) {
                assets[account][j] = _assets[j + 8*i];
            }

            accountToSaleNum[account] = saleNums[i];
        }
    }

    function moveFurnaceData(address[] accounts, uint16[] _pendingAssets, uint256[] cooldownTimes, bool[] furnaceState, uint256[] counts) external onlyCOO {
        require(isMovingEnable);

        Furnace memory _furnace;
        uint256 j;
        address account;
        for (uint256 i = 0; i < accounts.length; i++) {
            account = accounts[i];

            for (j = 0; j < 5; j++) {
                _furnace.pendingAssets[j] = _pendingAssets[j + 5*i];
            }
            _furnace.cooldownEndTime = cooldownTimes[i];
            _furnace.inSynthesization = furnaceState[i];
            _furnace.count = counts[i];

            accountsToFurnace[account] = _furnace;
        }
    }


    function movePatentData(uint16[] ids, address[] owners, uint256[] beginTimes, bool[] onsaleStates, uint256[] prices, uint256[] lastprices, uint256[] selltimes) external onlyCOO {
        require(isMovingEnable);
        
        //Patent memory _patent;
        uint16 id;
        for (uint256 i = 0; i < ids.length; i++) {
            id = ids[i];
            /*_patent.patentOwner = owners[i];
            _patent.beginTime = beginTimes[i];
            _patent.onSale = onsaleStates[i];
            _patent.price = prices[i];
            _patent.lastPrice = lastprices[i];
            _patent.sellTime = selltimes[i];*/
            patents[id] = Patent({patentOwner: owners[i], beginTime: beginTimes[i], onSale: onsaleStates[i], price: prices[i], lastPrice: lastprices[i], sellTime: selltimes[i]});
        }
    }

    function moveMarketData(uint256[] saleIds, uint64[] assetIds, uint64[] amounts, uint128[] desiredPrices, address[] sellers) external onlyCOO {
        require(isMovingEnable);
        
        SaleOrder memory _saleOrder;
        uint256 _saleId;
        for (uint256 i = 0; i < saleIds.length; i++) {
            _saleId = saleIds[i];
            _saleOrder.assetId = assetIds[i];
            _saleOrder.amount = amounts[i];
            _saleOrder.desiredPrice = desiredPrices[i];
            _saleOrder.seller = sellers[i];
            saleOrderList[_saleId] = _saleOrder;
        }
    }

    function writeNextId(uint256 _id) external onlyCOO {
        require(isMovingEnable);
        nextSaleId = _id;
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"zoDailyLimit","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"saleId","type":"uint256"}],"name":"withdrawSale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"accounts","type":"address[]"},{"name":"_assets","type":"bytes32[]"},{"name":"saleNums","type":"uint256[]"}],"name":"moveAccountData","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"coo","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"chemistry","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"zoCreated","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"assetId","type":"uint256"},{"name":"amount","type":"uint256"},{"name":"price","type":"uint256"}],"name":"putOnSale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"saleOrderList","outputs":[{"name":"assetId","type":"uint64"},{"name":"amount","type":"uint64"},{"name":"desiredPrice","type":"uint128"},{"name":"seller","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"uint256"}],"name":"writeNextId","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"cfo","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"accountToSaleNum","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newFeeRatio","type":"uint256"}],"name":"setPatentFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newCoo","type":"address"}],"name":"setCOO","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"assetId","type":"uint16"},{"name":"sellPrice","type":"uint256"}],"name":"sellPatent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"accountsZoLastRefreshTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"skinAddress","type":"address"}],"name":"setSkinContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"cao","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"patentValidTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newPrice","type":"uint256"}],"name":"setZoPrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"feeRatio","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"assetId","type":"uint16"},{"name":"newPrice","type":"uint256"}],"name":"changePatentSale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newCfo","type":"address"}],"name":"setCFO","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"trCut","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"getFurnace","outputs":[{"name":"","type":"uint16[5]"},{"name":"","type":"uint256"},{"name":"","type":"bool"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isSynthesizeAllowed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"saleId","type":"uint256"},{"name":"amount","type":"uint256"}],"name":"buyInMarket","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"assetId","type":"uint16"}],"name":"publicSell","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"assetOf","outputs":[{"name":"","type":"bytes32[8]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"cooldownLevels","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"prePaidFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newState","type":"bool"}],"name":"changeSynthesizeAllowed","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"bytes32[8]"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"saleIds","type":"uint256[]"},{"name":"assetIds","type":"uint64[]"},{"name":"amounts","type":"uint64[]"},{"name":"desiredPrices","type":"uint128[]"},{"name":"sellers","type":"address[]"}],"name":"moveMarketData","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"accountsBoughtZoAsset","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint16"}],"name":"patents","outputs":[{"name":"patentOwner","type":"address"},{"name":"beginTime","type":"uint256"},{"name":"onSale","type":"bool"},{"name":"price","type":"uint256"},{"name":"lastPrice","type":"uint256"},{"name":"sellTime","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ceo","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"zoPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxSaleNum","outputs":[{"name":"","type":"uint128"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newPrePaidFee","type":"uint256"}],"name":"setPrePaidFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"clearZoDailyLimit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint16"}],"name":"assetLevel","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"max","type":"uint256"}],"name":"setMaxCount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"getSynthesizationResult","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"assetId","type":"uint16"}],"name":"buyPatent","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"inputAssets","type":"uint16[5]"},{"name":"sCount","type":"uint256"}],"name":"synthesize","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"values","type":"bytes32"}],"name":"buyZoAssets","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"newCao","type":"address"}],"name":"setCAO","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"disableMoving","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"changeAllowTransferState","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"accounts","type":"address[]"},{"name":"_pendingAssets","type":"uint16[]"},{"name":"cooldownTimes","type":"uint256[]"},{"name":"furnaceState","type":"bool[]"},{"name":"counts","type":"uint256[]"}],"name":"moveFurnaceData","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"},{"name":"inputAssets","type":"uint16[5]"},{"name":"sCount","type":"uint256"}],"name":"getPatentFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"zoLastRefreshTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"patentSaleTimeDelay","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isMovingEnable","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newCut","type":"uint256"}],"name":"setTrCut","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"pFees","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"ids","type":"uint16[]"},{"name":"owners","type":"address[]"},{"name":"beginTimes","type":"uint256[]"},{"name":"onsaleStates","type":"bool[]"},{"name":"prices","type":"uint256[]"},{"name":"lastprices","type":"uint256[]"},{"name":"selltimes","type":"uint256[]"}],"name":"movePatentData","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"nextSaleId","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdrawETH","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"chemistryAddress","type":"address"}],"name":"setChemistryAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"maxSCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"accountsToFurnace","outputs":[{"name":"cooldownEndTime","type":"uint256"},{"name":"inSynthesization","type":"bool"},{"name":"count","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"initializeLevel","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"assetId","type":"uint16"},{"name":"level","type":"uint256"}],"name":"setAssetLevel","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"skinContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newFees","type":"uint256[9]"}],"name":"setPatentFees","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newCeo","type":"address"}],"name":"demiseCEO","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"name":"account","type":"address"},{"indexed":false,"name":"saleId","type":"uint256"}],"name":"PutOnSale","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"account","type":"address"},{"indexed":false,"name":"saleId","type":"uint256"}],"name":"WithdrawSale","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"account","type":"address"},{"indexed":false,"name":"saleId","type":"uint256"}],"name":"ChangeSale","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"buyer","type":"address"},{"indexed":false,"name":"saleId","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"BuyInMarket","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"saleId","type":"uint256"}],"name":"SaleClear","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"account","type":"address"},{"indexed":false,"name":"values","type":"bytes32"}],"name":"BuyZeroOrderAsset","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"account","type":"address"},{"indexed":false,"name":"cooldownEndTime","type":"uint256"}],"name":"AutoSynthesize","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"account","type":"address"}],"name":"SynthesizeSuccess","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"account","type":"address"},{"indexed":false,"name":"kind","type":"uint16"}],"name":"RegisterCreator","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"assetId","type":"uint16"},{"indexed":false,"name":"sellPrice","type":"uint256"}],"name":"SellPatent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"assetId","type":"uint16"},{"indexed":false,"name":"newPrice","type":"uint256"}],"name":"ChangePatentSale","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"assetId","type":"uint16"},{"indexed":false,"name":"buyer","type":"address"}],"name":"BuyPatent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"from","type":"address"},{"indexed":false,"name":"to","type":"address"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"previousCeo","type":"address"},{"indexed":false,"name":"newCeo","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"}]

Deployed Bytecode

0x60806040526004361061031d5763ffffffff60e060020a600035041662e62620811461032257806302ce8ac91461034957806304812aaf1461036357806307cdee491461039b5780630f18a530146103cc57806311d32f7d146103e1578063121c5e91146103f95780631808c6a9146104175780631bcdd57d146104735780631ed203471461048b578063207b0266146104a057806321ac8967146104c15780632ba73c15146104d95780632cdf2bfd146104fa5780632ed15894146105195780632f1c935e1461053a5780632f94afba1461055b5780633463c5c7146105705780633e31c77f146105855780633f4ba83a1461059d57806341744dd4146105b257806341dc02cf146105c75780634e0a3379146105e657806356f913991461060757806357cfd2961461061c5780635a65f0041461068c5780635c975abb146106b557806369d0b5e2146106ca5780636f5eb4b5146106d857806371f96211146106f457806377f954441461074e5780637b04b1f81461076657806380c4e5c51461077b57806381f91c4a1461079557806382f2d8d7146107e657806383d3618f146108365780638456cb59146108575780638b7a8f6d1461086c578063908921fc146108c557806394efadea146108da57806395a4f76d146108ef57806397b3116e14610920578063990ae72714610938578063a1420a8c1461094d578063a35e617f14610969578063a6113c0d14610981578063acbd9563146109a2578063af5c6f38146109b1578063bc27c7bb146109e9578063bca3eb24146109f4578063bd8c564314610a15578063c04c68eb14610a2a578063c79403f514610a3f578063cec33f4e14610a8f578063d0cf49e914610ab5578063d1dfdc0714610aca578063d3bdd24214610adf578063dba9a8a214610af4578063dcbac58a14610b0c578063de326c1e14610b24578063deb077b914610b8c578063e086e5ec14610ba1578063eb0db6ac14610bb6578063f5878d4014610bd7578063f87f9b2214610bec578063f883dfb514610c2b578063f913b91914610c40578063fb98a40914610c5f578063fce1e3e914610c74578063fde1773314610c8b575b600080fd5b34801561032e57600080fd5b50610337610cac565b60408051918252519081900360200190f35b34801561035557600080fd5b50610361600435610cb2565b005b34801561036f57600080fd5b506103616024600480358281019290820135918135808301929082013591604435918201910135610e65565b3480156103a757600080fd5b506103b0610f63565b60408051600160a060020a039092168252519081900360200190f35b3480156103d857600080fd5b506103b0610f72565b3480156103ed57600080fd5b50610337600435610f81565b34801561040557600080fd5b50610361600435602435604435610f95565b34801561042357600080fd5b5061042f6004356111eb565b6040805167ffffffffffffffff95861681529390941660208401526001608060020a0390911682840152600160a060020a0316606082015290519081900360800190f35b34801561047f57600080fd5b50610361600435611249565b34801561049757600080fd5b506103b061127a565b3480156104ac57600080fd5b50610337600160a060020a0360043516611289565b3480156104cd57600080fd5b5061036160043561129b565b3480156104e557600080fd5b50610361600160a060020a03600435166112ca565b34801561050657600080fd5b5061036161ffff6004351660243561131c565b34801561052557600080fd5b50610337600160a060020a03600435166114bd565b34801561054657600080fd5b50610361600160a060020a03600435166114cf565b34801561056757600080fd5b506103b061150c565b34801561057c57600080fd5b5061033761151b565b34801561059157600080fd5b50610361600435611521565b3480156105a957600080fd5b50610361611541565b3480156105be57600080fd5b506103376115be565b3480156105d357600080fd5b5061036161ffff600435166024356115c4565b3480156105f257600080fd5b50610361600160a060020a036004351661175d565b34801561061357600080fd5b506103376117af565b34801561062857600080fd5b5061063d600160a060020a03600435166117b5565b604051808560a080838360005b8381101561066257818101518382015260200161064a565b50505050919091019485525050901515602083015260408083019190915251908190036060019150f35b34801561069857600080fd5b506106a1611852565b604080519115158252519081900360200190f35b3480156106c157600080fd5b506106a161185b565b61036160043560243561186b565b3480156106e457600080fd5b5061036161ffff60043516611bce565b34801561070057600080fd5b50610715600160a060020a0360043516611d47565b604051808261010080838360005b8381101561073b578181015183820152602001610723565b5050505090500191505060405180910390f35b34801561075a57600080fd5b50610337600435611d9b565b34801561077257600080fd5b50610337611da8565b34801561078757600080fd5b506103616004351515611dae565b3480156107a157600080fd5b50604080516101008082019092526103619160048035600160a060020a03169236926101249190602490600890839083908082843750939650611ddc95505050505050565b3480156107f257600080fd5b506103616024600480358281019290820135918135808301929082013591604435808301929082013591606435808301929082013591608435918201910135612001565b34801561084257600080fd5b50610337600160a060020a0360043516612194565b34801561086357600080fd5b506103616121a6565b34801561087857600080fd5b5061088861ffff60043516612228565b60408051600160a060020a0390971687526020870195909552921515858501526060850191909152608084015260a0830152519081900360c00190f35b3480156108d157600080fd5b506103b061226b565b3480156108e657600080fd5b5061033761227a565b3480156108fb57600080fd5b50610904612280565b604080516001608060020a039092168252519081900360200190f35b34801561092c57600080fd5b5061036160043561228f565b34801561094457600080fd5b506103616122af565b34801561095957600080fd5b5061033761ffff60043516612310565b34801561097557600080fd5b50610361600435612322565b34801561098d57600080fd5b50610361600160a060020a0360043516612342565b61036161ffff6004351661297d565b6040805160a081810190925261036191369160049160a4919083906005908390839080828437509396505092359350612b8492505050565b61036160043561317d565b348015610a0057600080fd5b50610361600160a060020a03600435166133a6565b348015610a2157600080fd5b506103616133f8565b348015610a3657600080fd5b5061036161341f565b348015610a4b57600080fd5b5061036160246004803582810192908201359181358083019290820135916044358083019290820135916064358083019290820135916084359182019101356134b8565b348015610a9b57600080fd5b50610337600160a060020a0360043516602460c43561363b565b348015610ac157600080fd5b50610337613778565b348015610ad657600080fd5b5061033761377e565b348015610aeb57600080fd5b506106a1613784565b348015610b0057600080fd5b5061036160043561378d565b348015610b1857600080fd5b506103376004356137ad565b348015610b3057600080fd5b50610361602460048035828101929082013591813580830192908201359160443580830192908201359160643580830192908201359160843580830192908201359160a43580830192908201359160c4359182019101356137ba565b348015610b9857600080fd5b5061033761395a565b348015610bad57600080fd5b50610361613960565b348015610bc257600080fd5b50610361600160a060020a03600435166139b9565b348015610be357600080fd5b50610337613a72565b348015610bf857600080fd5b50610c0d600160a060020a0360043516613a78565b60408051938452911515602084015282820152519081900360600190f35b348015610c3757600080fd5b50610361613a9f565b348015610c4c57600080fd5b5061036161ffff60043516602435613b6c565b348015610c6b57600080fd5b506103b0613b9e565b348015610c8057600080fd5b506103616004613bad565b348015610c9757600080fd5b50610361600160a060020a0360043516613c00565b60225481565b600080600080600080600080600360159054906101000a900460ff16151515610cda57600080fd5b6000898152602e602052604090206001015433600160a060020a03908116911614610d0457600080fd5b6000898152602e602052604090205467ffffffffffffffff169750601f88600160a060020a03331660009081526004602052604090209190049750601f8802890396508760088110610d5257fe5b015460008a8152602e602052604090205490955060ff6008888102600290810a928302975087891696506801000000000000000090930467ffffffffffffffff1690910292506001880102900a81840110610dac57600080fd5b33600160a060020a03166000908152600460205260409020818401868618909616861795925085908860088110610ddf57fe5b01556000898152602e602090815260408083208381556001018054600160a060020a031916905533600160a060020a0316808452602f835292819020805460001901905580519283529082018b905280517f0d0e55f4e2a77f6d27f3ecdbe59fb9f5b4f4de61c10b3243e99905d4763baab69281900390910190a1505050505050505050565b6002546000908190819033600160a060020a03908116911614610e8757600080fd5b60305460ff161515610e9857600080fd5b5060005b87811015610f5857888882818110610eb057fe5b90506020020135600160a060020a03169150600092505b6008831015610f1e578686600883028501818110610ee157fe5b600160a060020a0385166000908152600460209081526040909120910292909201359190508460088110610f1157fe5b0155600190920191610ec7565b848482818110610f2a57fe5b600160a060020a0385166000908152602f602090815260409091209102929092013590915550600101610e9c565b505050505050505050565b600254600160a060020a031681565b600954600160a060020a031681565b60238160048110610f8e57fe5b0154905081565b6000806000806000806000610fa8613d72565b60035460a860020a900460ff1615610fbf57600080fd5b602b54600160a060020a0333166000908152602f60205260409020546001608060020a0390911611610ff057600080fd5b60038b118015611000575060f88b105b151561100b57600080fd5b60008a11801561101c57506101008a105b151561102757600080fd5b33600160a060020a03166000908152600460205260409020601f808d04995089028c039750886008811061105757fe5b015495506008870260020a60ff8102955085871694508a0291508382111561107e57600080fd5b33600160a060020a031660009081526004602052604090208285038787189097168717969350869089600881106110b157fe5b0155506040805160808101825267ffffffffffffffff808d1682528b811660208084019182526001608060020a03808e16858701908152600160a060020a0333811660608801818152602d80546000908152602e88528b81208b5181549a519751891670010000000000000000000000000000000002978c1668010000000000000000026fffffffffffffffff00000000000000001991909c1667ffffffffffffffff19909b169a909a17999099169990991790951693909317865591516001958601805491909216600160a060020a0319909116179055815484018255808552602f8352938690208054909301909255905484519283526000190190820152825191927f490fad3155d80ff0da3b5e2676a2b0121544ec602724a25f5f41157862ad582a92918290030190a15050505050505050505050565b602e602052600090815260409020805460019091015467ffffffffffffffff80831692680100000000000000008104909116917001000000000000000000000000000000009091046001608060020a031690600160a060020a031684565b60025433600160a060020a0390811691161461126457600080fd5b60305460ff16151561127557600080fd5b602d55565b600154600160a060020a031681565b602f6020526000908152604090205481565b60025433600160a060020a039081169116146112b657600080fd5b6127108111156112c557600080fd5b600655565b60005433600160a060020a039081169116146112e557600080fd5b600160a060020a03811615156112fa57600080fd5b60028054600160a060020a031916600160a060020a0392909216919091179055565b611324613d99565b60035460a860020a900460ff161561133b57600080fd5b5061ffff8216600090815260056020818152604092839020835160c0810185528154600160a060020a03908116808352600184015494830194909452600283015460ff16151595820195909552600382015460608201526004820154608082015292015460a083015290913316146113b257600080fd5b6000816080015111156113d85760808101516002028211156113d357600080fd5b6113ed565b670de0b6b3a76400008211156113ed57600080fd5b6040810151156113fc57600080fd5b60016040828101828152606084018581524260a0860190815261ffff88166000818152600560208181529187902089518154600160a060020a031916600160a060020a03909116178155828a015198810198909855945160028801805460ff1916911515919091179055925160038701556080870151600487015590519490920193909355815190815291820184905280517fb45cdbf07b9b4ad1b38fb04c30a818fd2e90c821dcaf060686ea3ef2579280189281900390910190a1505050565b60286020526000908152604090205481565b60025433600160a060020a039081169116146114ea57600080fd5b600a8054600160a060020a031916600160a060020a0392909216919091179055565b600354600160a060020a031681565b60075481565b60025433600160a060020a0390811691161461153c57600080fd5b602955565b60035433600160a060020a0390811691161461155c57600080fd5b60035460a860020a900460ff16151561157457600080fd5b6003805475ff000000000000000000000000000000000000000000191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b60065481565b6115cc613d99565b60035460a860020a900460ff16156115e357600080fd5b5061ffff8216600090815260056020818152604092839020835160c0810185528154600160a060020a03908116808352600184015494830194909452600283015460ff16151595820195909552600382015460608201526004820154608082015292015460a0830152909133161461165a57600080fd5b60008160800151111561168057608081015160020282111561167b57600080fd5b611695565b670de0b6b3a764000082111561169557600080fd5b604081015115156001146116a857600080fd5b6060810182815261ffff841660008181526005602081815260409283902086518154600160a060020a031916600160a060020a039091161781558187015160018201558387015160028201805460ff1916911515919091179055945160038601556080860151600486015560a08601519490910193909355805191825291810184905281517f07a0d309f3fa6e1bde730dd9b564960ab61a43da521d1cb7dfd12c6ba159da4d929181900390910190a1505050565b60005433600160a060020a0390811691161461177857600080fd5b600160a060020a038116151561178d57600080fd5b60018054600160a060020a031916600160a060020a0392909216919091179055565b602c5481565b6117bd613ddb565b600160a060020a0382166000908152601e6020526040808220600181015460028201546003830154845160a081019586905286958695949360ff1692919085906005908289855b82829054906101000a900461ffff1661ffff16815260200190600201906020826001010492830192600103820291508084116118045790505050505050935093509350935093509193509193565b60215460ff1681565b60035460a860020a900460ff1681565b6000806000806000806000806000806000600360159054906101000a900460ff1615151561189857600080fd5b60008d8152602e6020526040902060010154600160a060020a03169a508a15156118c157600080fd5b8a600160a060020a031633600160a060020a0316141515156118e257600080fd5b60008d8152602e602052604090205467ffffffffffffffff808e166801000000000000000090920416101561191657600080fd5b60008d8152602e60205260409020548c9070010000000000000000000000000000000090046001608060020a03163481151561194e57fe5b04101561195a57600080fd5b60008d8152602e6020908152604080832054600160a060020a0333168452600490925290912070010000000000000000000000000000000082046001608060020a03168e029b5067ffffffffffffffff9182169a50601f808c0490921699509089028a03975088600881106119cb57fe5b015495506008808802600290810a60ff8102975087891696508e02935060018901909102900a848301106119fe57600080fd5b33600160a060020a03166000908152600460205260409020828501878718909716871796935086908960088110611a3157fe5b0181600019169055508b602e60008f815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550611a998a613c9a565b604051908b039150600160a060020a038c169082156108fc029083906000818181858888f19350505050158015611ad4573d6000803e3d6000fd5b5060408051600160a060020a0333168152602081018f90528082018e905290517f866fb457041aa925cda702a45b50856a602a57e61980bf5e172752908d5d92d89181900360600190a160008d8152602e602052604090205468010000000000000000900467ffffffffffffffff161515611bbf57600160a060020a038b166000908152602f6020908152604080832080546000190190558f8352602e82528083209283556001929092018054600160a060020a031916905581518f815291517fd3af65fc11919244eae04f3fc1081a6286128ba8cabfa4ccdb92921b65ed49a99281900390910190a15b50505050505050505050505050565b611bd6613d99565b60035460a860020a900460ff1615611bed57600080fd5b5061ffff8116600090815260056020818152604092839020835160c0810185528154600160a060020a0316808252600183015493820193909352600282015460ff1615159481019490945260038101546060850152600481015460808501529091015460a08301521515611c6057600080fd5b604081015115611c6f57600080fd5b600754602082015142910110611c8457600080fd5b60016040828101828152608084018051606086019081524260a0870190815261ffff8816600081815260056020818152918890208a518154600160a060020a031916600160a060020a03909116178155828b015199810199909955955160028901805460ff1916911515919091179055925160038801559251600487018190559051959093019490945582519081529283015280517fb45cdbf07b9b4ad1b38fb04c30a818fd2e90c821dcaf060686ea3ef2579280189281900390910190a15050565b611d4f613dfa565b600160a060020a0382166000908152600460205260409081902081516101008101928390529160089082845b81548152600190910190602001808311611d7b5750505050509050919050565b600b8160098110610f8e57fe5b60205481565b60025433600160a060020a03908116911614611dc957600080fd5b6021805460ff1916911515919091179055565b611de4613dfa565b611dec613dfa565b60035460009060a860020a900460ff1615611e0657600080fd5b60035474010000000000000000000000000000000000000000900460ff161515611e2f57600080fd5b84600160a060020a031633600160a060020a031614151515611e5057600080fd5b33600160a060020a03166000908152600460205260409081902081516101008101928390529160089082845b81548152600190910190602001808311611e7c5750505050600160a060020a038716600090815260046020526040908190208151610100810192839052939650915060089082845b81548152600190910190602001808311611ec45750505050509150600090505b6008811015611f6b57611f17838260088110611efc57fe5b6020020151858360088110611f0d57fe5b6020020151613ca7565b838260088110611f2357fe5b6020020152611f52828260088110611f3757fe5b6020020151858360088110611f4857fe5b6020020151613cf8565b828260088110611f5e57fe5b6020020152600101611ee4565b600160a060020a0333166000908152600460205260409020611f8f90846008613e1a565b50600160a060020a0385166000908152600460205260409020611fb490836008613e1a565b5060408051600160a060020a0333811682528716602082015281517f4853ae1b4d437c4255ac16cd3ceda3465975023f27cb141584cd9d44440fed82929181900390910190a15050505050565b612009613d72565b600254600090819033600160a060020a0390811691161461202957600080fd5b60305460ff16151561203a57600080fd5b5060005b8b811015611bbf578c8c8281811061205257fe5b9050602002013591508a8a82818110151561206957fe5b602002919091013567ffffffffffffffff1684525088888281811061208a57fe5b6020908102929092013567ffffffffffffffff1691850191909152508686828181106120b257fe5b60200291909101356001608060020a03166040850152508484828181106120d557fe5b60209081029290920135600160a060020a03908116606087019081526000868152602e855260409081902088518154968a0151928a015167ffffffffffffffff1990971667ffffffffffffffff918216176fffffffffffffffff00000000000000001916680100000000000000009190931602919091176001608060020a0390811670010000000000000000000000000000000091909616029490941784555160019384018054600160a060020a03191691909216179055500161203e565b60276020526000908152604090205481565b60035433600160a060020a039081169116146121c157600080fd5b60035460a860020a900460ff16156121d857600080fd5b6003805475ff000000000000000000000000000000000000000000191660a860020a1790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b6005602081905260009182526040909120805460018201546002830154600384015460048501549490950154600160a060020a0390931694919360ff9091169286565b600054600160a060020a031681565b60295481565b602b546001608060020a031681565b60025433600160a060020a039081169116146122aa57600080fd5b602055565b600254600090819033600160a060020a039081169116146122cf57600080fd5b602a54620151800191508142111561230c5750602a81905560005b600481101561230c5760006023826004811061230257fe5b01556001016122ea565b5050565b601f6020526000908152604090205481565b60025433600160a060020a0390811691161461233d57600080fd5b601d55565b61234a613ddb565b6000612354613ddb565b61235c613dfa565b600080600080600080600360159054906101000a900460ff1615151561238157600080fd5b600160a060020a038b166000908152601e602052604090206002015460ff1615156123ab57600080fd5b6123b48b613d51565b15156123bf57600080fd5b600160a060020a038b166000908152601e6020526040808220815160a08101928390529290916005918390855b82829054906101000a900461ffff1661ffff16815260200190600201906020826001010492830192600103820291508084116123ec57905050505050509950600a60009054906101000a9004600160a060020a0316600160a060020a03166390cd61708c6040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b15801561249b57600080fd5b505af11580156124af573d6000803e3d6000fd5b505050506040513d60208110156124c557600080fd5b5051600160a060020a038c16600090815260046020526040908190208151610100810192839052929b509060089082845b815481526001909101906020018083116124f65750505050509650600091505b600160a060020a038b166000908152601e60205260409020600301548210156128bb576009546040517f6d27a326000000000000000000000000000000000000000000000000000000008152600160a060020a0390911690636d27a326908c908c90600401808360a080838360005b8381101561259d578181015183820152602001612585565b50505050905001826001608060020a03166001608060020a031681526020019250505060a060405180830381600087803b1580156125da57600080fd5b505af11580156125ee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525060a081101561261357600080fd5b509750600090505b60058110156128b05760f888826005811061263257fe5b602002015161ffff1610156128a857601f88826005811061264f57fe5b602002015161ffff1681151561266157fe5b0461ffff169350601f888260058110151561267857fe5b602002015161ffff1681151561268a57fe5b0661ffff1692508260080260ff600102600019169060020a0295508587856008811015156126b457fe5b60200201511694506008830260020a60ff0285106126d157600080fd5b600880840260020a959095019485908890869081106126ec57fe5b6020020151878987600881106126fe57fe5b602002015118161787856008811061271257fe5b6020020152600388826005811061272557fe5b602002015161ffff1611801561276e575060006005818a8483811061274657fe5b6020908102919091015161ffff16825281019190915260400160002054600160a060020a0316145b156128a8576040805160c081018252600160a060020a038d16815242602082015260009181018290526060810182905267016345785d8a0000608082015260a08101829052906005908a848381106127c257fe5b6020908102919091015161ffff16825281810192909252604090810160002083518154600160a060020a031916600160a060020a0390911617815591830151600183015582015160028201805460ff1916911515919091179055606082015160038201556080820151600482015560a0909101516005918201557f633377e1aee66d4ee7f6fa8c861d9549e2535911b539befce37b7b0c610b5779908c908a908490811061286c57fe5b60200201516040518083600160a060020a0316600160a060020a031681526020018261ffff1661ffff1681526020019250505060405180910390a15b60010161261b565b600190910190612516565b600160a060020a038b166000908152601e6020908152604080832060028101805460ff19169055600301839055600490915290206128fb90886008613e1a565b50602054604051600160a060020a0333169180156108fc02916000818181858888f19350505050158015612933573d6000803e3d6000fd5b5060408051600160a060020a038d16815290517f88bcbf7d5a6bdf17bf2d6180a2b117fda17d75ec329a6ada78f3dd2cb5b1af469181900360200190a15050505050505050505050565b612985613d99565b60035460a860020a900460ff161561299c57600080fd5b5061ffff8116600090815260056020818152604092839020835160c0810185528154600160a060020a0316808252600183015493820193909352600282015460ff1615159481019490945260038101546060850152600481015460808501529091015460a08301521515612a0f57600080fd5b33600160a060020a03168160000151600160a060020a031614151515612a3457600080fd5b80604001511515612a4457600080fd5b6060810151341015612a5557600080fd5b60085460a082015101421015612a6a57600080fd5b8060000151600160a060020a03166108fc6006546127108460600151811515612a8f57fe5b04029081150290604051600060405180830381858888f19350505050158015612abc573d6000803e3d6000fd5b5033600160a060020a039081168083524260208085019182526000604080870182815260608801805160808a0190815261ffff8b168086526005808852958590208b518154600160a060020a0319169b169a909a178a55965160018a0155915160028901805460ff191691151591909117905551600388015551600487015560a08701519590910194909455835191825281019190915281517fab46795f5ab8b9a85edbf68b140d034895cdb237e456fe9004be017493a45e8e929181900390910190a15050565b612b8c613dfa565b600080600080600080600080612ba0613d99565b60035460009081908190819060a860020a900460ff1615612bc057600080fd5b60215460ff161515600114612bd457600080fd5b600160a060020a0333166000908152601e602052604090206002015460ff1615612bfd57600080fd5b601d548f11158015612c0f575060008f115b1515612c1a57600080fd5b33600160a060020a03166000908152600460205260409081902081516101008101928390529160089082845b81548152600190910190602001808311612c465750505050509d506000975060009650600092505b6005831015612e7d578f8360058110612c8357fe5b6020020151935060f88461ffff161015612e72578d601f61ffff86160461ffff16600881101515612cb057fe5b60200201519950601f61ffff851660ff91900661ffff166008810260020a9182029e508b8f169d5099508f028c1015612ce857600080fd5b6008890260020a8f02909b039a8c8a189099168b1798898e601f61ffff87160461ffff16600881101515612d1857fe5b6020908102919091019190915261ffff85166000908152601f909152604090205460019b909b019a955087861115612d4e578597505b6000861115612e725761ffff8416600090815260056020818152604092839020835160c0810185528154600160a060020a0316808252600183015493820193909352600282015460ff1615159481019490945260038101546060850152600481015460808501529091015460a083015290955015801590612de5575033600160a060020a03168560000151600160a060020a031614155b8015612df357508460400151155b8015612e06575042600754866020015101115b15612e72578e60148760098110612e1957fe5b0154029b508460000151600160a060020a03166108fc6006546127108f811515612e3f57fe5b04029081150290604051600060405180830381858888f19350505050158015612e6c573d6000803e3d6000fd5b50958b01955b600190920191612c6e565b6020548701341015612e8e57600080fd5b60028b10158015612ea0575060058b11155b1515612eab57600080fd5b612eb433613d51565b1515612ebf57600080fd5b600a54604080517f90cd6170000000000000000000000000000000000000000000000000000000008152600160a060020a033381166004830152915191909216916390cd61709160248083019260209291908290030181600087803b158015612f2757600080fd5b505af1158015612f3b573d6000803e3d6000fd5b505050506040513d6020811015612f5157600080fd5b505160098054919350600160a060020a03909116906388c91d24908490600b908c908110612f7b57fe5b01546040518363ffffffff1660e060020a02815260040180836001608060020a03166001608060020a0316815260200182815260200192505050602060405180830381600087803b158015612fcf57600080fd5b505af1158015612fe3573d6000803e3d6000fd5b505050506040513d6020811015612ff957600080fd5b810190808051906020019092919050505090508f601e600033600160a060020a0316600160a060020a03168152602001908152602001600020600001906005613043929190613e5a565b50804201601e600033600160a060020a0316600160a060020a03168152602001908152602001600020600101819055506001601e600033600160a060020a0316600160a060020a0316815260200190815260200160002060020160006101000a81548160ff0219169083151502179055508e601e600033600160a060020a0316600160a060020a03168152602001908152602001600020600301819055508d6004600033600160a060020a0316600160a060020a03168152602001908152602001600020906008613115929190613e1a565b50600160a060020a0333166000818152601e60209081526040918290206001015482519384529083015280517f4c6128220f623f71e1fd741c758736624b4c958a2632c88b65f1708ba396a01e9281900390910190a150505050505050505050505050505050565b600080600080600080600080600360159054906101000a900460ff161515156131a557600080fd5b600160a060020a03331660009081526027602090815260408083205460289092529091205490985015156131f457602a54600160a060020a033316600090815260286020526040902055613238565b602a54600160a060020a033316600090815260286020526040902054101561323857602a54600160a060020a03331660009081526028602052604081209190915597505b505033600160a060020a031660009081526004602052604081205490955085945060ff9350845b600481101561331e57600081111561327957610100909402935b88851693506008810260020a8481151561328f57fe5b04965094860194878516840192506008600182010260020a83106132b257600080fd5b84881890971690911795818416830191906008600182010260020a83106132d857600080fd5b60225485831890921683179187602383600481106132f257fe5b015401111561330057600080fd5b866023826004811061330e57fe5b018054909101905560010161325f565b6000861161332b57600080fd5b602954860234101561333c57600080fd5b33600160a060020a0316600081815260046020908152604080832086905560278252918290208b9055815192835282018b905280517fcfd83f2a84806a5664e01fb360426529f02468a8135b953d3ad27d9303908ba69281900390910190a1505050505050505050565b60005433600160a060020a039081169116146133c157600080fd5b600160a060020a03811615156133d657600080fd5b60038054600160a060020a031916600160a060020a0392909216919091179055565b60025433600160a060020a0390811691161461341357600080fd5b6030805460ff19169055565b60025433600160a060020a0390811691161461343a57600080fd5b60035474010000000000000000000000000000000000000000900460ff1615613480576003805474ff0000000000000000000000000000000000000000191690556134b6565b6003805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790555b565b6134c0613eec565b6002546000908190819033600160a060020a039081169116146134e257600080fd5b60305460ff1615156134f357600080fd5b5060005b8c81101561362b578d8d8281811061350b57fe5b90506020020135600160a060020a03169150600092505b6005831015613572578b8b60058302850181811061353c57fe5b9050602002013561ffff1684600001518460058110151561355957fe5b61ffff9092166020929092020152600190920191613522565b89898281811061357e57fe5b90506020020135846020018181525050878782818110151561359c57fe5b602002919091013515156040860152508585828181106135b857fe5b60209081029290920135606087015250600160a060020a0383166000908152601e9091526040902084518591906135f29082906005613e5a565b506020820151600182810191909155604083015160028301805460ff1916911515919091179055606090920151600390910155016134f7565b5050505050505050505050505050565b6000806000613648613d99565b6000925082805b600581101561376b5787816005811061366457fe5b602002013561ffff16915060f88261ffff1610156137635761ffff82166000908152601f602052604081205494508411156137635761ffff8216600090815260056020818152604092839020835160c0810185528154600160a060020a0316808252600183015493820193909352600282015460ff1615159481019490945260038101546060850152600481015460808501529091015460a083015290935015801590613727575088600160a060020a03168360000151600160a060020a031614155b801561373557508260400151155b8015613748575042600754846020015101115b1561376357866014856009811061375b57fe5b015402850194505b60010161364f565b5092979650505050505050565b602a5481565b60085481565b60305460ff1681565b60025433600160a060020a039081169116146137a857600080fd5b602c55565b60148160098110610f8e57fe5b600254600090819033600160a060020a039081169116146137da57600080fd5b60305460ff1615156137eb57600080fd5b5060005b8e811015613948578f8f8281811061380357fe5b9050602002013561ffff16915060c0604051908101604052808f8f84818110151561382a57fe5b90506020020135600160a060020a0316600160a060020a031681526020018d8d84818110151561385657fe5b9050602002013581526020018b8b84818110151561387057fe5b6020908102929092013515158352500189898481811061388c57fe5b90506020020135815260200187878481811015156138a657fe5b90506020020135815260200185858481811015156138c057fe5b6020908102929092013590925261ffff85166000908152600580835260409182902085518154600160a060020a031916600160a060020a03909116178155928501516001808501919091559185015160028401805460ff1916911515919091179055606085015160038401556080850151600484015560a090940151919093015550016137ef565b50505050505050505050505050505050565b602d5481565b60035433600160a060020a0390811691161461397b57600080fd5b600154604051600160a060020a039182169130163180156108fc02916000818181858888f193505050501580156139b6573d6000803e3d6000fd5b50565b60025460009033600160a060020a039081169116146139d757600080fd5b81905080600160a060020a03166309bb03b46040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015613a1857600080fd5b505af1158015613a2c573d6000803e3d6000fd5b505050506040513d6020811015613a4257600080fd5b50511515613a4f57600080fd5b60098054600160a060020a031916600160a060020a039290921691909117905550565b601d5481565b601e60205260009081526040902060018101546002820154600390920154909160ff169083565b613aa7613f1e565b600254600090819033600160a060020a03908116911614613ac757600080fd5b505060408051610120810182526004815260136020820152602e9181019190915260526060820152607d6080820152609c60a082015260b460c082015260c360e082015260c661010082015290506000805b60c68160ff161015613b6757828260098110613b3157fe5b602002015160ff168160ff161415613b4a576001909101905b60ff81166000908152601f60205260409020829055600101613b19565b505050565b60025433600160a060020a03908116911614613b8757600080fd5b61ffff9091166000908152601f6020526040902055565b600a54600160a060020a031681565b60025460009033600160a060020a03908116911614613bcb57600080fd5b5060005b600981101561230c57818160098110613be457fe5b602002013560148260098110613bf657fe5b0155600101613bcf565b60005433600160a060020a03908116911614613c1b57600080fd5b600160a060020a0381161515613c3057600080fd5b60005460408051600160a060020a039283168152918316602083015280517f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09281900390910190a160008054600160a060020a031916600160a060020a0392909216919091179055565b602c546127109091040290565b600060ff81808080805b601f81101561376b576000811115613ccb57610100909502945b8886169350878616925082841015613ce257600080fd5b8284038587189095168517949150600101613cb1565b600060ff81808080805b601f81101561376b576000811115613d1c57610100909502945b8886169350878616925082840191506008600182010260020a8210613d4057600080fd5b858518909416811793600101613d02565b600160a060020a03166000908152601e602052604090206001015442101590565b60408051608081018252600080825260208201819052918101829052606081019190915290565b60c0604051908101604052806000600160a060020a03168152602001600081526020016000151581526020016000815260200160008152602001600081525090565b60a0604051908101604052806005906020820280388339509192915050565b610100604051908101604052806008906020820280388339509192915050565b8260088101928215613e4a579160200282015b82811115613e4a5782518255602090920191600190910190613e2d565b50613e56929150613f3e565b5090565b600183019183908215613ee05791602002820160005b83821115613eb057835183826101000a81548161ffff021916908361ffff1602179055509260200192600201602081600101049283019260010302613e70565b8015613ede5782816101000a81549061ffff0219169055600201602081600101049283019260010302613eb0565b505b50613e56929150613f5b565b61010060405190810160405280613f01613ddb565b815260200160008152602001600015158152602001600081525090565b610120604051908101604052806009906020820280388339509192915050565b613f5891905b80821115613e565760008155600101613f44565b90565b613f5891905b80821115613e5657805461ffff19168155600101613f615600a165627a7a723058200540429efb7d1e83dfe496528ad0e2086a51e1e7e684de7f3cc88f5e65d7abd40029

Swarm Source

bzzr://0540429efb7d1e83dfe496528ad0e2086a51e1e7e684de7f3cc88f5e65d7abd4

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.