Latest 3 txns

TxHash Age From To Value [TxFee]
0x1e82fec681b787ef05ca030c503c282c90acdde2dce0defb4e469dc2f6fcd9bd131 days 6 hrs ago0x49d8621f8862c423abba0dfae4916f838cd264f6  IN   0xc710292c90d9243d9f860832ea46977ac46e93a30 Ether0.00035116038
0x1ec14198773b49144f3859c7ae00be22474dc6690aba2e0dd98eb033188b82d3131 days 18 hrs ago0x49d8621f8862c423abba0dfae4916f838cd264f6  IN   0xc710292c90d9243d9f860832ea46977ac46e93a30 Ether0.00034800444
0x127967b1e73825d88ef0c77339d70cae306a72ddd8346b4562a1ea3bc4be44fd132 days 5 hrs ago0x49d8621f8862c423abba0dfae4916f838cd264f6  IN    Contract Creation0 Ether0.04909484196
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
View All
ParentTxHash Block Age From To Value
Contract Source Code Verified (Similar Match)
Note: This contract matches the deployed ByteCode of the Verified Source Code for Contract 0x24Cfa0BFc7C7E4892cA2ECd308b61ac7D3C76276
Contract Name: FxxxLandRush
Compiler Version: v0.4.25+commit.59dbf8f1
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.25;

// ----------------------------------------------------------------------------
// Fxxx Land Rush Contract - Purchase land parcels with GZE and ETH
//
// Enjoy.
//
// (c) BokkyPooBah / Bok Consulting Pty Ltd for GazeCoin 2018. The MIT Licence.
// ----------------------------------------------------------------------------


// ----------------------------------------------------------------------------
// Owned contract
// ----------------------------------------------------------------------------
contract Owned {
    address public owner;
    address public newOwner;
    bool private initialised;

    event OwnershipTransferred(address indexed _from, address indexed _to);

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

    function initOwned(address _owner) internal {
        require(!initialised);
        owner = _owner;
        initialised = true;
    }
    function transferOwnership(address _newOwner) public onlyOwner {
        newOwner = _newOwner;
    }
    function acceptOwnership() public {
        require(msg.sender == newOwner);
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
        newOwner = address(0);
    }
    function transferOwnershipImmediately(address _newOwner) public onlyOwner {
        emit OwnershipTransferred(owner, _newOwner);
        owner = _newOwner;
    }
}

// ----------------------------------------------------------------------------
// Safe maths
// ----------------------------------------------------------------------------
library SafeMath {
    function add(uint a, uint b) internal pure returns (uint c) {
        c = a + b;
        require(c >= a);
    }
    function sub(uint a, uint b) internal pure returns (uint c) {
        require(b <= a);
        c = a - b;
    }
    function mul(uint a, uint b) internal pure returns (uint c) {
        c = a * b;
        require(a == 0 || c / a == b);
    }
    function div(uint a, uint b) internal pure returns (uint c) {
        require(b > 0);
        c = a / b;
    }
    function max(uint a, uint b) internal pure returns (uint c) {
        c = a >= b ? a : b;
    }
    function min(uint a, uint b) internal pure returns (uint c) {
        c = a <= b ? a : b;
    }
}

// ----------------------------------------------------------------------------
// BokkyPooBah's Token Teleportation Service Interface v1.10
//
// https://github.com/bokkypoobah/BokkyPooBahsTokenTeleportationServiceSmartContract
//
// Enjoy. (c) BokkyPooBah / Bok Consulting Pty Ltd 2018. The MIT Licence.
// ----------------------------------------------------------------------------


// ----------------------------------------------------------------------------
// ERC Token Standard #20 Interface
// https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md
// ----------------------------------------------------------------------------
contract ERC20Interface {
    event Transfer(address indexed from, address indexed to, uint tokens);
    event Approval(address indexed tokenOwner, address indexed spender, uint tokens);

    function totalSupply() public constant returns (uint);
    function balanceOf(address tokenOwner) public constant returns (uint balance);
    function allowance(address tokenOwner, address spender) public constant returns (uint remaining);
    function transfer(address to, uint tokens) public returns (bool success);
    function approve(address spender, uint tokens) public returns (bool success);
    function transferFrom(address from, address to, uint tokens) public returns (bool success);
}

// ----------------------------------------------------------------------------
// Contracts that can have tokens approved, and then a function executed
// ----------------------------------------------------------------------------
contract ApproveAndCallFallBack {
    function receiveApproval(address from, uint256 tokens, address token, bytes data) public;
}


// ----------------------------------------------------------------------------
// BokkyPooBah's Token Teleportation Service Interface v1.10
//
// Enjoy. (c) BokkyPooBah / Bok Consulting Pty Ltd 2018. The MIT Licence.
// ----------------------------------------------------------------------------
contract BTTSTokenInterface is ERC20Interface {
    uint public constant bttsVersion = 110;

    bytes public constant signingPrefix = "\x19Ethereum Signed Message:\n32";
    bytes4 public constant signedTransferSig = "\x75\x32\xea\xac";
    bytes4 public constant signedApproveSig = "\xe9\xaf\xa7\xa1";
    bytes4 public constant signedTransferFromSig = "\x34\x4b\xcc\x7d";
    bytes4 public constant signedApproveAndCallSig = "\xf1\x6f\x9b\x53";

    event OwnershipTransferred(address indexed from, address indexed to);
    event MinterUpdated(address from, address to);
    event Mint(address indexed tokenOwner, uint tokens, bool lockAccount);
    event MintingDisabled();
    event TransfersEnabled();
    event AccountUnlocked(address indexed tokenOwner);

    function symbol() public view returns (string);
    function name() public view returns (string);
    function decimals() public view returns (uint8);

    function approveAndCall(address spender, uint tokens, bytes data) public returns (bool success);

    // ------------------------------------------------------------------------
    // signed{X} functions
    // ------------------------------------------------------------------------
    function signedTransferHash(address tokenOwner, address to, uint tokens, uint fee, uint nonce) public view returns (bytes32 hash);
    function signedTransferCheck(address tokenOwner, address to, uint tokens, uint fee, uint nonce, bytes sig, address feeAccount) public view returns (CheckResult result);
    function signedTransfer(address tokenOwner, address to, uint tokens, uint fee, uint nonce, bytes sig, address feeAccount) public returns (bool success);

    function signedApproveHash(address tokenOwner, address spender, uint tokens, uint fee, uint nonce) public view returns (bytes32 hash);
    function signedApproveCheck(address tokenOwner, address spender, uint tokens, uint fee, uint nonce, bytes sig, address feeAccount) public view returns (CheckResult result);
    function signedApprove(address tokenOwner, address spender, uint tokens, uint fee, uint nonce, bytes sig, address feeAccount) public returns (bool success);

    function signedTransferFromHash(address spender, address from, address to, uint tokens, uint fee, uint nonce) public view returns (bytes32 hash);
    function signedTransferFromCheck(address spender, address from, address to, uint tokens, uint fee, uint nonce, bytes sig, address feeAccount) public view returns (CheckResult result);
    function signedTransferFrom(address spender, address from, address to, uint tokens, uint fee, uint nonce, bytes sig, address feeAccount) public returns (bool success);

    function signedApproveAndCallHash(address tokenOwner, address spender, uint tokens, bytes _data, uint fee, uint nonce) public view returns (bytes32 hash);
    function signedApproveAndCallCheck(address tokenOwner, address spender, uint tokens, bytes _data, uint fee, uint nonce, bytes sig, address feeAccount) public view returns (CheckResult result);
    function signedApproveAndCall(address tokenOwner, address spender, uint tokens, bytes _data, uint fee, uint nonce, bytes sig, address feeAccount) public returns (bool success);

    function mint(address tokenOwner, uint tokens, bool lockAccount) public returns (bool success);
    function unlockAccount(address tokenOwner) public;
    function disableMinting() public;
    function enableTransfers() public;

    // ------------------------------------------------------------------------
    // signed{X}Check return status
    // ------------------------------------------------------------------------
    enum CheckResult {
        Success,                           // 0 Success
        NotTransferable,                   // 1 Tokens not transferable yet
        AccountLocked,                     // 2 Account locked
        SignerMismatch,                    // 3 Mismatch in signing account
        InvalidNonce,                      // 4 Invalid nonce
        InsufficientApprovedTokens,        // 5 Insufficient approved tokens
        InsufficientApprovedTokensForFees, // 6 Insufficient approved tokens for fees
        InsufficientTokens,                // 7 Insufficient tokens
        InsufficientTokensForFees,         // 8 Insufficient tokens for fees
        OverflowError                      // 9 Overflow error
    }
}

// ----------------------------------------------------------------------------
// PriceFeed Interface - _live is true if the rate is valid, false if invalid
// ----------------------------------------------------------------------------
contract PriceFeedInterface {
    function name() public view returns (string);
    function getRate() public view returns (uint _rate, bool _live);
}

// ----------------------------------------------------------------------------
// Bonus List interface
// ----------------------------------------------------------------------------
contract BonusListInterface {
    function isInBonusList(address account) public view returns (bool);
}


// ----------------------------------------------------------------------------
// FxxxLandRush Contract
// ----------------------------------------------------------------------------
contract FxxxLandRush is Owned, ApproveAndCallFallBack {
    using SafeMath for uint;

    uint private constant TENPOW18 = 10 ** 18;

    BTTSTokenInterface public parcelToken;
    BTTSTokenInterface public gzeToken;
    PriceFeedInterface public ethUsdPriceFeed;
    PriceFeedInterface public gzeEthPriceFeed;
    BonusListInterface public bonusList;

    address public wallet;
    uint public startDate;
    uint public endDate;
    uint public maxParcels;
    uint public parcelUsd;                  // USD per parcel, e.g., USD 1,500 * 10^18
    uint public usdLockAccountThreshold;    // e.g., USD 7,000 * 10^18
    uint public gzeBonusOffList;            // e.g., 20 = 20% bonus
    uint public gzeBonusOnList;             // e.g., 30 = 30% bonus

    uint public parcelsSold;
    uint public contributedGze;
    uint public contributedEth;
    bool public finalised;

    event WalletUpdated(address indexed oldWallet, address indexed newWallet);
    event StartDateUpdated(uint oldStartDate, uint newStartDate);
    event EndDateUpdated(uint oldEndDate, uint newEndDate);
    event MaxParcelsUpdated(uint oldMaxParcels, uint newMaxParcels);
    event ParcelUsdUpdated(uint oldParcelUsd, uint newParcelUsd);
    event UsdLockAccountThresholdUpdated(uint oldUsdLockAccountThreshold, uint newUsdLockAccountThreshold);
    event GzeBonusOffListUpdated(uint oldGzeBonusOffList, uint newGzeBonusOffList);
    event GzeBonusOnListUpdated(uint oldGzeBonusOnList, uint newGzeBonusOnList);
    event Purchased(address indexed addr, uint parcels, uint gzeToTransfer, uint ethToTransfer, uint parcelsSold, uint contributedGze, uint contributedEth, bool lockAccount);

    constructor(address _parcelToken, address _gzeToken, address _ethUsdPriceFeed, address _gzeEthPriceFeed, address _bonusList, address _wallet, uint _startDate, uint _endDate, uint _maxParcels, uint _parcelUsd, uint _usdLockAccountThreshold, uint _gzeBonusOffList, uint _gzeBonusOnList) public {
        require(_parcelToken != address(0) && _gzeToken != address(0));
        require(_ethUsdPriceFeed != address(0) && _gzeEthPriceFeed != address(0) && _bonusList != address(0));
        require(_wallet != address(0));
        require(_startDate >= now && _endDate > _startDate);
        require(_maxParcels > 0 && _parcelUsd > 0);
        initOwned(msg.sender);
        parcelToken = BTTSTokenInterface(_parcelToken);
        gzeToken = BTTSTokenInterface(_gzeToken);
        ethUsdPriceFeed = PriceFeedInterface(_ethUsdPriceFeed);
        gzeEthPriceFeed = PriceFeedInterface(_gzeEthPriceFeed);
        bonusList = BonusListInterface(_bonusList);
        wallet = _wallet;
        startDate = _startDate;
        endDate = _endDate;
        maxParcels = _maxParcels;
        parcelUsd = _parcelUsd;
        usdLockAccountThreshold = _usdLockAccountThreshold;
        gzeBonusOffList = _gzeBonusOffList;
        gzeBonusOnList = _gzeBonusOnList;
    }
    function setWallet(address _wallet) public onlyOwner {
        require(!finalised);
        require(_wallet != address(0));
        emit WalletUpdated(wallet, _wallet);
        wallet = _wallet;
    }
    function setStartDate(uint _startDate) public onlyOwner {
        require(!finalised);
        require(_startDate >= now);
        emit StartDateUpdated(startDate, _startDate);
        startDate = _startDate;
    }
    function setEndDate(uint _endDate) public onlyOwner {
        require(!finalised);
        require(_endDate > startDate);
        emit EndDateUpdated(endDate, _endDate);
        endDate = _endDate;
    }
    function setMaxParcels(uint _maxParcels) public onlyOwner {
        require(!finalised);
        require(_maxParcels >= parcelsSold);
        emit MaxParcelsUpdated(maxParcels, _maxParcels);
        maxParcels = _maxParcels;
    }
    function setParcelUsd(uint _parcelUsd) public onlyOwner {
        require(!finalised);
        require(_parcelUsd > 0);
        emit ParcelUsdUpdated(parcelUsd, _parcelUsd);
        parcelUsd = _parcelUsd;
    }
    function setUsdLockAccountThreshold(uint _usdLockAccountThreshold) public onlyOwner {
        require(!finalised);
        emit UsdLockAccountThresholdUpdated(usdLockAccountThreshold, _usdLockAccountThreshold);
        usdLockAccountThreshold = _usdLockAccountThreshold;
    }
    function setGzeBonusOffList(uint _gzeBonusOffList) public onlyOwner {
        require(!finalised);
        emit GzeBonusOffListUpdated(gzeBonusOffList, _gzeBonusOffList);
        gzeBonusOffList = _gzeBonusOffList;
    }
    function setGzeBonusOnList(uint _gzeBonusOnList) public onlyOwner {
        require(!finalised);
        emit GzeBonusOnListUpdated(gzeBonusOnList, _gzeBonusOnList);
        gzeBonusOnList = _gzeBonusOnList;
    }

    function symbol() public view returns (string _symbol) {
        _symbol = parcelToken.symbol();
    }
    function name() public view returns (string _name) {
        _name = parcelToken.name();
    }

    // USD per ETH, e.g., 221.99 * 10^18
    function ethUsd() public view returns (uint _rate, bool _live) {
        return ethUsdPriceFeed.getRate();
    }
    // ETH per GZE, e.g., 0.00004366 * 10^18
    function gzeEth() public view returns (uint _rate, bool _live) {
        return gzeEthPriceFeed.getRate();
    }
    // USD per GZE, e.g., 0.0096920834 * 10^18
    function gzeUsd() public view returns (uint _rate, bool _live) {
        uint _ethUsd;
        bool _ethUsdLive;
        (_ethUsd, _ethUsdLive) = ethUsdPriceFeed.getRate();
        uint _gzeEth;
        bool _gzeEthLive;
        (_gzeEth, _gzeEthLive) = gzeEthPriceFeed.getRate();
        if (_ethUsdLive && _gzeEthLive) {
            _live = true;
            _rate = _ethUsd.mul(_gzeEth).div(TENPOW18);
        }
    }
    // ETH per parcel, e.g., 6.757061128879679264 * 10^18
    function parcelEth() public view returns (uint _rate, bool _live) {
        uint _ethUsd;
        (_ethUsd, _live) = ethUsd();
        if (_live) {
            _rate = parcelUsd.mul(TENPOW18).div(_ethUsd);
        }
    }
    // GZE per parcel, without bonus, e.g., 154765.486231783766945298 * 10^18
    function parcelGzeWithoutBonus() public view returns (uint _rate, bool _live) {
        uint _gzeUsd;
        (_gzeUsd, _live) = gzeUsd();
        if (_live) {
            _rate = parcelUsd.mul(TENPOW18).div(_gzeUsd);
        }
    }
    // GZE per parcel, with bonus but not on bonus list, e.g., 128971.238526486472454415 * 10^18
    function parcelGzeWithBonusOffList() public view returns (uint _rate, bool _live) {
        uint _parcelGzeWithoutBonus;
        (_parcelGzeWithoutBonus, _live) = parcelGzeWithoutBonus();
        if (_live) {
            _rate = _parcelGzeWithoutBonus.mul(100).div(gzeBonusOffList.add(100));
        }
    }
    // GZE per parcel, with bonus and on bonus list, e.g., 119050.374024449051496383 * 10^18
    function parcelGzeWithBonusOnList() public view returns (uint _rate, bool _live) {
        uint _parcelGzeWithoutBonus;
        (_parcelGzeWithoutBonus, _live) = parcelGzeWithoutBonus();
        if (_live) {
            _rate = _parcelGzeWithoutBonus.mul(100).div(gzeBonusOnList.add(100));
        }
    }

    // Account contributes by:
    // 1. calling GZE.approve(landRushAddress, tokens)
    // 2. calling this.purchaseWithGze(tokens)
    function purchaseWithGze(uint256 tokens) public {
        require(gzeToken.allowance(msg.sender, this) >= tokens);
        receiveApproval(msg.sender, tokens, gzeToken, "");
    }
    // Account contributes by calling GZE.approveAndCall(landRushAddress, tokens, "")
    function receiveApproval(address from, uint256 tokens, address token, bytes /* data */) public {
        require(now >= startDate && now <= endDate);
        require(token == address(gzeToken));
        uint _parcelGze;
        bool _live;
        if (bonusList.isInBonusList(from)) {
            (_parcelGze, _live) = parcelGzeWithBonusOnList();
        } else {
            (_parcelGze, _live) = parcelGzeWithBonusOffList();
        }
        require(_live);
        uint parcels = tokens.div(_parcelGze);
        if (parcelsSold.add(parcels) >= maxParcels) {
            parcels = maxParcels.sub(parcelsSold);
        }
        uint gzeToTransfer = parcels.mul(_parcelGze);
        contributedGze = contributedGze.add(gzeToTransfer);
        require(ERC20Interface(token).transferFrom(from, wallet, gzeToTransfer));
        bool lock = mintParcelTokens(from, parcels);
        emit Purchased(from, parcels, gzeToTransfer, 0, parcelsSold, contributedGze, contributedEth, lock);
    }
    // Account contributes by sending ETH
    function () public payable {
        require(now >= startDate && now <= endDate);
        uint _parcelEth;
        bool _live;
        (_parcelEth, _live) = parcelEth();
        require(_live);
        uint parcels = msg.value.div(_parcelEth);
        if (parcelsSold.add(parcels) >= maxParcels) {
            parcels = maxParcels.sub(parcelsSold);
        }
        uint ethToTransfer = parcels.mul(_parcelEth);
        contributedEth = contributedEth.add(ethToTransfer);
        uint ethToRefund = msg.value.sub(ethToTransfer);
        if (ethToRefund > 0) {
            msg.sender.transfer(ethToRefund);
        }
        bool lock = mintParcelTokens(msg.sender, parcels);
        emit Purchased(msg.sender, parcels, 0, ethToTransfer, parcelsSold, contributedGze, contributedEth, lock);
    }
    // Contract owner allocates parcels to tokenOwner for offline purchase
    function offlinePurchase(address tokenOwner, uint parcels) public onlyOwner {
        require(!finalised);
        if (parcelsSold.add(parcels) >= maxParcels) {
            parcels = maxParcels.sub(parcelsSold);
        }
        bool lock = mintParcelTokens(tokenOwner, parcels);
        emit Purchased(tokenOwner, parcels, 0, 0, parcelsSold, contributedGze, contributedEth, lock);
    }
    // Internal function to mint tokens and disable minting if maxParcels sold
    function mintParcelTokens(address account, uint parcels) internal returns (bool _lock) {
        require(parcels > 0);
        parcelsSold = parcelsSold.add(parcels);
        _lock = parcelToken.balanceOf(account).add(parcelUsd.mul(parcels)) >= usdLockAccountThreshold;
        require(parcelToken.mint(account, parcelUsd.mul(parcels), _lock));
        if (parcelsSold >= maxParcels) {
            parcelToken.disableMinting();
            finalised = true;
        }
    }
    // Contract owner finalises to disable parcel minting
    function finalise() public onlyOwner {
        require(!finalised);
        require(now > endDate || parcelsSold >= maxParcels);
        parcelToken.disableMinting();
        finalised = true;
    }
}

    Contract ABI  
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"_name","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"parcelsSold","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"startDate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"finalised","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"bonusList","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_endDate","type":"uint256"}],"name":"setEndDate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ethUsdPriceFeed","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"parcelGzeWithBonusOffList","outputs":[{"name":"_rate","type":"uint256"},{"name":"_live","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"gzeBonusOnList","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_gzeBonusOffList","type":"uint256"}],"name":"setGzeBonusOffList","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"wallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ethUsd","outputs":[{"name":"_rate","type":"uint256"},{"name":"_live","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"usdLockAccountThreshold","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"parcelUsd","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokens","type":"uint256"}],"name":"purchaseWithGze","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnershipImmediately","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_startDate","type":"uint256"}],"name":"setStartDate","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":"from","type":"address"},{"name":"tokens","type":"uint256"},{"name":"token","type":"address"},{"name":"","type":"bytes"}],"name":"receiveApproval","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"gzeEth","outputs":[{"name":"_rate","type":"uint256"},{"name":"_live","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxParcels","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_maxParcels","type":"uint256"}],"name":"setMaxParcels","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_parcelUsd","type":"uint256"}],"name":"setParcelUsd","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"_symbol","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenOwner","type":"address"},{"name":"parcels","type":"uint256"}],"name":"offlinePurchase","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"finalise","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"gzeEthPriceFeed","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"contributedGze","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"contributedEth","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"gzeBonusOffList","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"gzeUsd","outputs":[{"name":"_rate","type":"uint256"},{"name":"_live","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"endDate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"gzeToken","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"parcelToken","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_gzeBonusOnList","type":"uint256"}],"name":"setGzeBonusOnList","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"parcelGzeWithBonusOnList","outputs":[{"name":"_rate","type":"uint256"},{"name":"_live","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_wallet","type":"address"}],"name":"setWallet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"parcelEth","outputs":[{"name":"_rate","type":"uint256"},{"name":"_live","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_usdLockAccountThreshold","type":"uint256"}],"name":"setUsdLockAccountThreshold","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"parcelGzeWithoutBonus","outputs":[{"name":"_rate","type":"uint256"},{"name":"_live","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_parcelToken","type":"address"},{"name":"_gzeToken","type":"address"},{"name":"_ethUsdPriceFeed","type":"address"},{"name":"_gzeEthPriceFeed","type":"address"},{"name":"_bonusList","type":"address"},{"name":"_wallet","type":"address"},{"name":"_startDate","type":"uint256"},{"name":"_endDate","type":"uint256"},{"name":"_maxParcels","type":"uint256"},{"name":"_parcelUsd","type":"uint256"},{"name":"_usdLockAccountThreshold","type":"uint256"},{"name":"_gzeBonusOffList","type":"uint256"},{"name":"_gzeBonusOnList","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"oldWallet","type":"address"},{"indexed":true,"name":"newWallet","type":"address"}],"name":"WalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"oldStartDate","type":"uint256"},{"indexed":false,"name":"newStartDate","type":"uint256"}],"name":"StartDateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"oldEndDate","type":"uint256"},{"indexed":false,"name":"newEndDate","type":"uint256"}],"name":"EndDateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"oldMaxParcels","type":"uint256"},{"indexed":false,"name":"newMaxParcels","type":"uint256"}],"name":"MaxParcelsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"oldParcelUsd","type":"uint256"},{"indexed":false,"name":"newParcelUsd","type":"uint256"}],"name":"ParcelUsdUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"oldUsdLockAccountThreshold","type":"uint256"},{"indexed":false,"name":"newUsdLockAccountThreshold","type":"uint256"}],"name":"UsdLockAccountThresholdUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"oldGzeBonusOffList","type":"uint256"},{"indexed":false,"name":"newGzeBonusOffList","type":"uint256"}],"name":"GzeBonusOffListUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"oldGzeBonusOnList","type":"uint256"},{"indexed":false,"name":"newGzeBonusOnList","type":"uint256"}],"name":"GzeBonusOnListUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"parcels","type":"uint256"},{"indexed":false,"name":"gzeToTransfer","type":"uint256"},{"indexed":false,"name":"ethToTransfer","type":"uint256"},{"indexed":false,"name":"parcelsSold","type":"uint256"},{"indexed":false,"name":"contributedGze","type":"uint256"},{"indexed":false,"name":"contributedEth","type":"uint256"},{"indexed":false,"name":"lockAccount","type":"bool"}],"name":"Purchased","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

  Contract Creation Code Switch To Opcodes View
60806040523480156200001157600080fd5b506040516101a08062001ce383398101604090815281516020830151918301516060840151608085015160a086015160c087015160e08801516101008901516101208a01516101408b01516101608c0151610180909c0151999b989997989697959694959394929391929091600160a060020a038d16158015906200009e5750600160a060020a038c1615155b1515620000aa57600080fd5b600160a060020a038b1615801590620000cb5750600160a060020a038a1615155b8015620000e05750600160a060020a03891615155b1515620000ec57600080fd5b600160a060020a03881615156200010257600080fd5b4287101580156200011257508686115b15156200011e57600080fd5b6000851180156200012f5750600084115b15156200013b57600080fd5b6200014f33640100000000620001ec810204565b60028054600160a060020a039e8f16600160a060020a031991821617909155600380549d8f169d82169d909d17909c55600480549b8e169b8d169b909b17909a5560058054998d16998c169990991790985560068054978c16978b16979097179096556007805495909a169490981693909317909755600855600995909555600a94909455600b92909255600c92909255600d55600e556200025f565b60015474010000000000000000000000000000000000000000900460ff16156200021557600080fd5b60008054600160a060020a03909216600160a060020a03199092169190911790556001805460a060020a60ff02191674010000000000000000000000000000000000000000179055565b611a74806200026f6000396000f3006080604052600436106101f55763ffffffff60e060020a60003504166306fdde03811461036c57806309a9597a146103f65780630b97bc861461041d578063214bb60f146104325780632a8a8b191461045b5780633784f0001461048c57806342f6fb29146104a657806345b8c0c2146104bb578063460ee77b146104e95780634e2de9e1146104fe578063521eb273146105165780635a9602161461052b5780636249e93f146105405780636c5dbfa314610555578063727c2ff01461056a57806379ba5097146105825780637e71fb091461059757806382d95df5146105b85780638da5cb5b146105d05780638f4ffcb1146105e55780638fdb72f31461065557806391d75b981461066a5780639398ecb61461067f5780639532c4761461069757806395d89b41146106af578063a340d587146106c4578063a4399263146106e8578063a722819b146106fd578063b026d70b14610712578063b4d3ef5f14610727578063bcba33e41461073c578063c0b8251514610751578063c24a0f8b14610766578063c65de62f1461077b578063c949ce8014610790578063cca794da146107a5578063cf356f83146107bd578063d4ee1d90146107d2578063deaa59df146107e7578063e0f4ed0114610808578063ebb5a9961461081d578063f2fde38b14610835578063f314e97614610856575b600080600080600080600854421015801561021257506009544211155b151561021d57600080fd5b61022561086b565b909650945084151561023657600080fd5b610246348763ffffffff6108b716565b9350600a5461026085600f546108d890919063ffffffff16565b1061027d57600f54600a5461027a9163ffffffff6108ee16565b93505b61028d848763ffffffff61090316565b6011549093506102a3908463ffffffff6108d816565b6011556102b6348463ffffffff6108ee16565b915060008211156102f057604051339083156108fc029084906000818181858888f193505050501580156102ee573d6000803e3d6000fd5b505b6102fa3385610928565b600f5460105460115460408051898152600060208201528082018990526060810194909452608084019290925260a083015282151560c08301525191925033917f20fe12028d9f9484cae3903103a15de61b4e2269b7572e5357eed98ecaed54f39181900360e00190a2505050505050005b34801561037857600080fd5b50610381610b4a565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103bb5781810151838201526020016103a3565b50505050905090810190601f1680156103e85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561040257600080fd5b5061040b610c36565b60408051918252519081900360200190f35b34801561042957600080fd5b5061040b610c3c565b34801561043e57600080fd5b50610447610c42565b604080519115158252519081900360200190f35b34801561046757600080fd5b50610470610c4b565b60408051600160a060020a039092168252519081900360200190f35b34801561049857600080fd5b506104a4600435610c5a565b005b3480156104b257600080fd5b50610470610cd1565b3480156104c757600080fd5b506104d0610ce0565b6040805192835290151560208301528051918290030190f35b3480156104f557600080fd5b5061040b610d20565b34801561050a57600080fd5b506104a4600435610d26565b34801561052257600080fd5b50610470610d8f565b34801561053757600080fd5b506104d0610d9e565b34801561054c57600080fd5b5061040b610e38565b34801561056157600080fd5b5061040b610e3e565b34801561057657600080fd5b506104a4600435610e44565b34801561058e57600080fd5b506104a4610f12565b3480156105a357600080fd5b506104a4600160a060020a0360043516610f9a565b3480156105c457600080fd5b506104a4600435611019565b3480156105dc57600080fd5b5061047061108f565b3480156105f157600080fd5b50604080516020601f6064356004818101359283018490048402850184019095528184526104a494600160a060020a0381358116956024803596604435909316953695608494920191819084018382808284375094975061109e9650505050505050565b34801561066157600080fd5b506104d061134a565b34801561067657600080fd5b5061040b6113a9565b34801561068b57600080fd5b506104a46004356113af565b3480156106a357600080fd5b506104a4600435611427565b3480156106bb57600080fd5b5061038161149d565b3480156106d057600080fd5b506104a4600160a060020a03600435166024356114fc565b3480156106f457600080fd5b506104a46115d9565b34801561070957600080fd5b50610470611699565b34801561071e57600080fd5b5061040b6116a8565b34801561073357600080fd5b5061040b6116ae565b34801561074857600080fd5b5061040b6116b4565b34801561075d57600080fd5b506104d06116ba565b34801561077257600080fd5b5061040b61181c565b34801561078757600080fd5b50610470611822565b34801561079c57600080fd5b50610470611831565b3480156107b157600080fd5b506104a4600435611840565b3480156107c957600080fd5b506104d06118a9565b3480156107de57600080fd5b506104706118d8565b3480156107f357600080fd5b506104a4600160a060020a03600435166118e7565b34801561081457600080fd5b506104d061086b565b34801561082957600080fd5b506104a460043561198c565b34801561084157600080fd5b506104a4600160a060020a03600435166119f5565b34801561086257600080fd5b506104d0611a3b565b6000806000610878610d9e565b9250905081156108b2576108af816108a3670de0b6b3a7640000600b5461090390919063ffffffff16565b9063ffffffff6108b716565b92505b509091565b60008082116108c557600080fd5b81838115156108d057fe5b049392505050565b818101828110156108e857600080fd5b92915050565b6000828211156108fd57600080fd5b50900390565b81810282158061091d575081838281151561091a57fe5b04145b15156108e857600080fd5b600080821161093657600080fd5b600f54610949908363ffffffff6108d816565b600f55600c54600b54610a0690610966908563ffffffff61090316565b600254604080517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a038981166004830152915191909216916370a082319160248083019260209291908290030181600087803b1580156109ce57600080fd5b505af11580156109e2573d6000803e3d6000fd5b505050506040513d60208110156109f857600080fd5b50519063ffffffff6108d816565b600254600b5492909110159250600160a060020a03169063d1a1beb4908590610a35908663ffffffff61090316565b6040805160e060020a63ffffffff8616028152600160a060020a039093166004840152602483019190915284151560448301525160648083019260209291908290030181600087803b158015610a8a57600080fd5b505af1158015610a9e573d6000803e3d6000fd5b505050506040513d6020811015610ab457600080fd5b50511515610ac157600080fd5b600a54600f54106108e857600260009054906101000a9004600160a060020a0316600160a060020a0316637e5cd5c16040518163ffffffff1660e060020a028152600401600060405180830381600087803b158015610b1f57600080fd5b505af1158015610b33573d6000803e3d6000fd5b50506012805460ff19166001179055505092915050565b600254604080517f06fdde030000000000000000000000000000000000000000000000000000000081529051606092600160a060020a0316916306fdde0391600480830192600092919082900301818387803b158015610ba957600080fd5b505af1158015610bbd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610be657600080fd5b810190808051640100000000811115610bfe57600080fd5b82016020810184811115610c1157600080fd5b8151640100000000811182820187101715610c2b57600080fd5b509095945050505050565b600f5481565b60085481565b60125460ff1681565b600654600160a060020a031681565b600054600160a060020a03163314610c7157600080fd5b60125460ff1615610c8157600080fd5b6008548111610c8f57600080fd5b600954604080519182526020820183905280517f275dd536a6956e78302b90e20bb13c379fb11632284794aa77ad452d0f472a159281900390910190a1600955565b600454600160a060020a031681565b6000806000610ced611a3b565b9250905081156108b257600d546108af90610d0f90606463ffffffff6108d816565b6108a383606463ffffffff61090316565b600e5481565b600054600160a060020a03163314610d3d57600080fd5b60125460ff1615610d4d57600080fd5b600d54604080519182526020820183905280517f4c62351127406483444e8c77ed3d92ba47274904aa869a9eb0025ef1b444b1319281900390910190a1600d55565b600754600160a060020a031681565b60048054604080517f679aefce00000000000000000000000000000000000000000000000000000000815281516000948594600160a060020a03169363679aefce938083019391929082900301818787803b158015610dfc57600080fd5b505af1158015610e10573d6000803e3d6000fd5b505050506040513d6040811015610e2657600080fd5b50805160209091015190925090509091565b600c5481565b600b5481565b600354604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815233600482015230602482015290518392600160a060020a03169163dd62ed3e9160448083019260209291908290030181600087803b158015610eaf57600080fd5b505af1158015610ec3573d6000803e3d6000fd5b505050506040513d6020811015610ed957600080fd5b50511015610ee657600080fd5b600354604080516020810190915260008152610f0f9133918491600160a060020a03169061109e565b50565b600154600160a060020a03163314610f2957600080fd5b60015460008054604051600160a060020a0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600180546000805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03841617909155169055565b600054600160a060020a03163314610fb157600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600054600160a060020a0316331461103057600080fd5b60125460ff161561104057600080fd5b4281101561104d57600080fd5b600854604080519182526020820183905280517fb412a2d7de723b82b0a3cae8b10ae2d255e645dd0231a1a4c83cb8e3ebc05bd89281900390910190a1600855565b600054600160a060020a031681565b600080600080600060085442101580156110ba57506009544211155b15156110c557600080fd5b600354600160a060020a038881169116146110df57600080fd5b600654604080517f9773252a000000000000000000000000000000000000000000000000000000008152600160a060020a038c8116600483015291519190921691639773252a9160248083019260209291908290030181600087803b15801561114757600080fd5b505af115801561115b573d6000803e3d6000fd5b505050506040513d602081101561117157600080fd5b50511561118a576111806118a9565b9095509350611198565b611192610ce0565b90955093505b8315156111a457600080fd5b6111b4888663ffffffff6108b716565b9250600a546111ce84600f546108d890919063ffffffff16565b106111eb57600f54600a546111e89163ffffffff6108ee16565b92505b6111fb838663ffffffff61090316565b601054909250611211908363ffffffff6108d816565b601055600754604080517f23b872dd000000000000000000000000000000000000000000000000000000008152600160a060020a038c811660048301529283166024820152604481018590529051918916916323b872dd916064808201926020929091908290030181600087803b15801561128b57600080fd5b505af115801561129f573d6000803e3d6000fd5b505050506040513d60208110156112b557600080fd5b505115156112c257600080fd5b6112cc8984610928565b600f5460105460115460408051888152602081018890526000818301526060810194909452608084019290925260a083015282151560c083015251919250600160a060020a038b16917f20fe12028d9f9484cae3903103a15de61b4e2269b7572e5357eed98ecaed54f39181900360e00190a2505050505050505050565b600554604080517f679aefce00000000000000000000000000000000000000000000000000000000815281516000938493600160a060020a039091169263679aefce926004808301939282900301818787803b158015610dfc57600080fd5b600a5481565b600054600160a060020a031633146113c657600080fd5b60125460ff16156113d657600080fd5b600f548110156113e557600080fd5b600a54604080519182526020820183905280517f8aef90ae96fb6dbf7057a69540eba39446a248c62fd8944fda136b31328980d19281900390910190a1600a55565b600054600160a060020a0316331461143e57600080fd5b60125460ff161561144e57600080fd5b6000811161145b57600080fd5b600b54604080519182526020820183905280517f18cc2de91b21e64ed19efed59ce3534bf5f78761345905a5f3c2d5616232d6939281900390910190a1600b55565b600254604080517f95d89b410000000000000000000000000000000000000000000000000000000081529051606092600160a060020a0316916395d89b4191600480830192600092919082900301818387803b158015610ba957600080fd5b60008054600160a060020a0316331461151457600080fd5b60125460ff161561152457600080fd5b600a54600f5461153a908463ffffffff6108d816565b1061155757600f54600a546115549163ffffffff6108ee16565b91505b6115618383610928565b600f5460105460115460408051878152600060208201819052818301526060810194909452608084019290925260a083015282151560c083015251919250600160a060020a038516917f20fe12028d9f9484cae3903103a15de61b4e2269b7572e5357eed98ecaed54f39181900360e00190a2505050565b600054600160a060020a031633146115f057600080fd5b60125460ff161561160057600080fd5b6009544211806116145750600a54600f5410155b151561161f57600080fd5b600260009054906101000a9004600160a060020a0316600160a060020a0316637e5cd5c16040518163ffffffff1660e060020a028152600401600060405180830381600087803b15801561167257600080fd5b505af1158015611686573d6000803e3d6000fd5b50506012805460ff191660011790555050565b600554600160a060020a031681565b60105481565b60115481565b600d5481565b600080600080600080600460009054906101000a9004600160a060020a0316600160a060020a031663679aefce6040518163ffffffff1660e060020a0281526004016040805180830381600087803b15801561171557600080fd5b505af1158015611729573d6000803e3d6000fd5b505050506040513d604081101561173f57600080fd5b508051602090910151600554604080517f679aefce0000000000000000000000000000000000000000000000000000000081528151949850929650600160a060020a039091169263679aefce9260048082019392918290030181600087803b1580156117aa57600080fd5b505af11580156117be573d6000803e3d6000fd5b505050506040513d60408110156117d457600080fd5b50805160209091015190925090508280156117ec5750805b156118145760019450611811670de0b6b3a76400006108a3868563ffffffff61090316565b95505b505050509091565b60095481565b600354600160a060020a031681565b600254600160a060020a031681565b600054600160a060020a0316331461185757600080fd5b60125460ff161561186757600080fd5b600e54604080519182526020820183905280517fec87206008f9dda024d92dff1cd842c894c3b3b663a142304495bb85aeaa3beb9281900390910190a1600e55565b60008060006118b6611a3b565b9250905081156108b257600e546108af90610d0f90606463ffffffff6108d816565b600154600160a060020a031681565b600054600160a060020a031633146118fe57600080fd5b60125460ff161561190e57600080fd5b600160a060020a038116151561192357600080fd5b600754604051600160a060020a038084169216907f0f37c6733428a3a65d46b7f1853a5ce4bfa3cf92d25322507a50bf23a0b5a0a890600090a36007805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600054600160a060020a031633146119a357600080fd5b60125460ff16156119b357600080fd5b600c54604080519182526020820183905280517f0b01521689247a403cdcb55b1edbeba4487e4e234e98b7232cc0e4db44ed93f69281900390910190a1600c55565b600054600160a060020a03163314611a0c57600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60008060006108786116ba5600a165627a7a723058202f29928ea2b0007ca81090aaf5afb69b74b149026c8819c686e08e86cb921fa50029000000000000000000000000d5f08ad7105cf766853aef84b846258c9fd7bb84000000000000000000000000a579f55467d230afc54520e6e7f0ceb5ecc3f1a000000000000000000000000067c2e24f0ea4314cc7d2a85e7809dc2b43e6440a00000000000000000000000062ca617deeccea9d3ebf1ea354eba4300292071d000000000000000000000000e0a1b299cf4b4786e56fcd27bc20f656384073a000000000000000000000000074ed6eb23c21403d7a00bf388a2ec691b98ba8ed000000000000000000000000000000000000000000000000000000005bba14ad000000000000000000000000000000000000000000000000000000005bef4bf000000000000000000000000000000000000000000000000000000000000002b100000000000000000000000000000000000000000000005150ae84a8cdf0000000000000000000000000000000000000000000000000017b7883c069166000000000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001e

   Swarm Source:
bzzr://2f29928ea2b0007ca81090aaf5afb69b74b149026c8819c686e08e86cb921fa5

 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward