ETH Price: $3,318.74 (+1.81%)
Gas: 3 Gwei

Contract

0x8573f2F5A3Bd960eeE3D998473e50C75cDbE6828
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
0x6060604055339132018-04-30 20:05:022282 days ago1525118702IN
 Create: Minter
0 ETH0.010589786

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
106863322020-08-18 20:51:041440 days ago1597783864
0x8573f2F5...5cDbE6828
23.11451281 ETH
106720172020-08-16 15:56:591443 days ago1597593419
0x8573f2F5...5cDbE6828
0.00559412 ETH
106588892020-08-14 15:20:291445 days ago1597418429
0x8573f2F5...5cDbE6828
4 ETH
106339312020-08-10 19:00:151449 days ago1597086015
0x8573f2F5...5cDbE6828
0.00000172 ETH
106151052020-08-07 21:19:361451 days ago1596835176
0x8573f2F5...5cDbE6828
2 ETH
106089492020-08-06 22:32:441452 days ago1596753164
0x8573f2F5...5cDbE6828
0.0307628 ETH
105756862020-08-01 18:59:071458 days ago1596308347
0x8573f2F5...5cDbE6828
0.0000973 ETH
105160322020-07-23 13:48:081467 days ago1595512088
0x8573f2F5...5cDbE6828
0.3 ETH
104772942020-07-17 13:39:461473 days ago1594993186
0x8573f2F5...5cDbE6828
0.03428263 ETH
104725972020-07-16 20:11:011473 days ago1594930261
0x8573f2F5...5cDbE6828
1.1 ETH
104592592020-07-14 18:31:511476 days ago1594751511
0x8573f2F5...5cDbE6828
0.00001048 ETH
104388422020-07-11 14:43:321479 days ago1594478612
0x8573f2F5...5cDbE6828
0.0000172 ETH
104317552020-07-10 12:26:351480 days ago1594383995
0x8573f2F5...5cDbE6828
0.59333333 ETH
104317402020-07-10 12:23:441480 days ago1594383824
0x8573f2F5...5cDbE6828
0.6 ETH
104165162020-07-08 3:45:001482 days ago1594179900
0x8573f2F5...5cDbE6828
0.78907184 ETH
104142112020-07-07 19:20:261483 days ago1594149626
0x8573f2F5...5cDbE6828
2 ETH
104030252020-07-06 1:51:141484 days ago1594000274
0x8573f2F5...5cDbE6828
0.0000013 ETH
102555382020-06-13 5:46:511507 days ago1592027211
0x8573f2F5...5cDbE6828
0.02 ETH
102519892020-06-12 16:32:551508 days ago1591979575
0x8573f2F5...5cDbE6828
0.00003293 ETH
102003632020-06-04 16:23:011516 days ago1591287781
0x8573f2F5...5cDbE6828
1 ETH
101822892020-06-01 21:08:431518 days ago1591045723
0x8573f2F5...5cDbE6828
0.00124441 ETH
101681992020-05-30 16:27:031521 days ago1590856023
0x8573f2F5...5cDbE6828
0.00007352 ETH
101617222020-05-29 16:25:101522 days ago1590769510
0x8573f2F5...5cDbE6828
0.00007199 ETH
101484942020-05-27 14:54:131524 days ago1590591253
0x8573f2F5...5cDbE6828
0.00500045 ETH
101246092020-05-23 21:42:201527 days ago1590270140
0x8573f2F5...5cDbE6828
0.5 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Minter

Compiler Version
v0.4.18+commit.9cf6e910

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2019-07-27
*/

/**
 *Submitted for verification at Etherscan.io on 2018-04-30
*/

pragma solidity 0.4.18;

/**
 * @title ERC20Basic
 * @dev Simpler version of ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/179
 */
contract ERC20Basic {
  uint256 public totalSupply;
  function balanceOf(address who) public view returns (uint256);
  function transfer(address to, uint256 value) public returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
}

/**
 * @title ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
contract ERC20 is ERC20Basic {
  function allowance(address owner, address spender) public view returns (uint256);
  function transferFrom(address from, address to, uint256 value) public returns (bool);
  function approve(address spender, uint256 value) public returns (bool);
  event Approval(address indexed owner, address indexed spender, uint256 value);
}

/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {
  address public owner;


  event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);


  /**
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  function Ownable() public {
    owner = msg.sender;
  }


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


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

}

/**
 * @title Pausable
 * @dev Base contract which allows children to implement an emergency stop mechanism.
 */
contract Pausable is Ownable {
    event Pause();
    event Unpause();

    bool public paused = false;


    /**
     * @dev Modifier to make a function callable only when the contract is not paused.
     */
    modifier whenNotPaused() {
        require(!paused);
        _;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is paused.
     */
    modifier whenPaused() {
        require(paused);
        _;
    }

    /**
     * @dev called by the owner to pause, triggers stopped state
     */
    function pause() onlyOwner whenNotPaused public {
        paused = true;
        Pause();
    }

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

/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    if (a == 0) {
      return 0;
    }
    uint256 c = a * b;
    assert(c / a == b);
    return c;
  }

  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    // assert(b > 0); // Solidity automatically throws when dividing by 0
    uint256 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return c;
  }

  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }

  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    assert(c >= a);
    return c;
  }
}

library MathUtils {
    using SafeMath for uint256;

    // Divisor used for representing percentages
    uint256 public constant PERC_DIVISOR = 1000000;

    /*
     * @dev Returns whether an amount is a valid percentage out of PERC_DIVISOR
     * @param _amount Amount that is supposed to be a percentage
     */
    function validPerc(uint256 _amount) internal pure returns (bool) {
        return _amount <= PERC_DIVISOR;
    }

    /*
     * @dev Compute percentage of a value with the percentage represented by a fraction
     * @param _amount Amount to take the percentage of
     * @param _fracNum Numerator of fraction representing the percentage
     * @param _fracDenom Denominator of fraction representing the percentage
     */
    function percOf(uint256 _amount, uint256 _fracNum, uint256 _fracDenom) internal pure returns (uint256) {
        return _amount.mul(percPoints(_fracNum, _fracDenom)).div(PERC_DIVISOR);
    }

    /*
     * @dev Compute percentage of a value with the percentage represented by a fraction over PERC_DIVISOR
     * @param _amount Amount to take the percentage of
     * @param _fracNum Numerator of fraction representing the percentage with PERC_DIVISOR as the denominator
     */
    function percOf(uint256 _amount, uint256 _fracNum) internal pure returns (uint256) {
        return _amount.mul(_fracNum).div(PERC_DIVISOR);
    }

    /*
     * @dev Compute percentage representation of a fraction
     * @param _fracNum Numerator of fraction represeting the percentage
     * @param _fracDenom Denominator of fraction represeting the percentage
     */
    function percPoints(uint256 _fracNum, uint256 _fracDenom) internal pure returns (uint256) {
        return _fracNum.mul(PERC_DIVISOR).div(_fracDenom);
    }
}

contract ILivepeerToken is ERC20, Ownable {
    function mint(address _to, uint256 _amount) public returns (bool);
    function burn(uint256 _amount) public;
}

contract IController is Pausable {
    event SetContractInfo(bytes32 id, address contractAddress, bytes20 gitCommitHash);

    function setContractInfo(bytes32 _id, address _contractAddress, bytes20 _gitCommitHash) external;
    function updateController(bytes32 _id, address _controller) external;
    function getContract(bytes32 _id) public view returns (address);
}

contract IManager {
    event SetController(address controller);
    event ParameterUpdate(string param);

    function setController(address _controller) external;
}

contract Manager is IManager {
    // Controller that contract is registered with
    IController public controller;

    // Check if sender is controller
    modifier onlyController() {
        require(msg.sender == address(controller));
        _;
    }

    // Check if sender is controller owner
    modifier onlyControllerOwner() {
        require(msg.sender == controller.owner());
        _;
    }

    // Check if controller is not paused
    modifier whenSystemNotPaused() {
        require(!controller.paused());
        _;
    }

    // Check if controller is paused
    modifier whenSystemPaused() {
        require(controller.paused());
        _;
    }

    function Manager(address _controller) public {
        controller = IController(_controller);
    }

    /*
     * @dev Set controller. Only callable by current controller
     * @param _controller Controller contract address
     */
    function setController(address _controller) external onlyController {
        controller = IController(_controller);

        SetController(_controller);
    }
}

/*
 * @title Interface for BondingManager
 */
contract IBondingManager {
    event TranscoderUpdate(address indexed transcoder, uint256 pendingRewardCut, uint256 pendingFeeShare, uint256 pendingPricePerSegment, bool registered);
    event TranscoderEvicted(address indexed transcoder);
    event TranscoderResigned(address indexed transcoder);
    event TranscoderSlashed(address indexed transcoder, address finder, uint256 penalty, uint256 finderReward);
    event Reward(address indexed transcoder, uint256 amount);
    event Bond(address indexed delegate, address indexed delegator);
    event Unbond(address indexed delegate, address indexed delegator);
    event WithdrawStake(address indexed delegator);
    event WithdrawFees(address indexed delegator);

    // External functions
    function setActiveTranscoders() external;
    function updateTranscoderWithFees(address _transcoder, uint256 _fees, uint256 _round) external;
    function slashTranscoder(address _transcoder, address _finder, uint256 _slashAmount, uint256 _finderFee) external;
    function electActiveTranscoder(uint256 _maxPricePerSegment, bytes32 _blockHash, uint256 _round) external view returns (address);

    // Public functions
    function transcoderTotalStake(address _transcoder) public view returns (uint256);
    function activeTranscoderTotalStake(address _transcoder, uint256 _round) public view returns (uint256);
    function isRegisteredTranscoder(address _transcoder) public view returns (bool);
    function getTotalBonded() public view returns (uint256);
}

/**
 * @title RoundsManager interface
 */
contract IRoundsManager {
    // Events
    event NewRound(uint256 round);

    // External functions
    function initializeRound() external;

    // Public functions
    function blockNum() public view returns (uint256);
    function blockHash(uint256 _block) public view returns (bytes32);
    function currentRound() public view returns (uint256);
    function currentRoundStartBlock() public view returns (uint256);
    function currentRoundInitialized() public view returns (bool);
    function currentRoundLocked() public view returns (bool);
}

/**
 * @title Minter interface
 */
contract IMinter {
    // Events
    event SetCurrentRewardTokens(uint256 currentMintableTokens, uint256 currentInflation);

    // External functions
    function createReward(uint256 _fracNum, uint256 _fracDenom) external returns (uint256);
    function trustedTransferTokens(address _to, uint256 _amount) external;
    function trustedBurnTokens(uint256 _amount) external;
    function trustedWithdrawETH(address _to, uint256 _amount) external;
    function depositETH() external payable returns (bool);
    function setCurrentRewardTokens() external;

    // Public functions
    function getController() public view returns (IController);
}

/**
 * @title Minter
 * @dev Manages inflation rate and the minting of new tokens for each round of the Livepeer protocol
 */
contract Minter is Manager, IMinter {
    using SafeMath for uint256;

    // Per round inflation rate
    uint256 public inflation;
    // Change in inflation rate per round until the target bonding rate is achieved
    uint256 public inflationChange;
    // Target bonding rate
    uint256 public targetBondingRate;

    // Current number of mintable tokens. Reset every round
    uint256 public currentMintableTokens;
    // Current number of minted tokens. Reset every round
    uint256 public currentMintedTokens;

    // Checks if caller is BondingManager
    modifier onlyBondingManager() {
        require(msg.sender == controller.getContract(keccak256("BondingManager")));
        _;
    }

    // Checks if caller is RoundsManager
    modifier onlyRoundsManager() {
        require(msg.sender == controller.getContract(keccak256("RoundsManager")));
        _;
    }

    // Checks if caller is either BondingManager or JobsManager
    modifier onlyBondingManagerOrJobsManager() {
        require(msg.sender == controller.getContract(keccak256("BondingManager")) || msg.sender == controller.getContract(keccak256("JobsManager")));
        _;
    }

    // Checks if caller is either the currently registered Minter or JobsManager
    modifier onlyMinterOrJobsManager() {
        require(msg.sender == controller.getContract(keccak256("Minter")) || msg.sender == controller.getContract(keccak256("JobsManager")));
        _;
    }

    /**
     * @dev Minter constructor
     * @param _inflation Base inflation rate as a percentage of current total token supply
     * @param _inflationChange Change in inflation rate each round (increase or decrease) if target bonding rate is not achieved
     * @param _targetBondingRate Target bonding rate as a percentage of total bonded tokens / total token supply
     */
    function Minter(address _controller, uint256 _inflation, uint256 _inflationChange, uint256 _targetBondingRate) public Manager(_controller) {
        // Inflation must be valid percentage
        require(MathUtils.validPerc(_inflation));
        // Inflation change must be valid percentage
        require(MathUtils.validPerc(_inflationChange));
        // Target bonding rate must be valid percentage
        require(MathUtils.validPerc(_targetBondingRate));

        inflation = _inflation;
        inflationChange = _inflationChange;
        targetBondingRate = _targetBondingRate;
    }

    /**
     * @dev Set targetBondingRate. Only callable by Controller owner
     * @param _targetBondingRate Target bonding rate as a percentage of total bonded tokens / total token supply
     */
    function setTargetBondingRate(uint256 _targetBondingRate) external onlyControllerOwner {
        // Must be valid percentage
        require(MathUtils.validPerc(_targetBondingRate));

        targetBondingRate = _targetBondingRate;

        ParameterUpdate("targetBondingRate");
    }

    /**
     * @dev Set inflationChange. Only callable by Controller owner
     * @param _inflationChange Inflation change as a percentage of total token supply
     */
    function setInflationChange(uint256 _inflationChange) external onlyControllerOwner {
        // Must be valid percentage
        require(MathUtils.validPerc(_inflationChange));

        inflationChange = _inflationChange;

        ParameterUpdate("inflationChange");
    }

    /**
     * @dev Migrate to a new Minter by transferring ownership of the token as well
     * as the current Minter's token balance to the new Minter. Only callable by Controller when system is paused
     * @param _newMinter Address of new Minter
     */
    function migrateToNewMinter(IMinter _newMinter) external onlyControllerOwner whenSystemPaused {
        // New Minter cannot be the current Minter
        require(_newMinter != this);
        // Check for null address
        require(address(_newMinter) != address(0));

        IController newMinterController = _newMinter.getController();
        // New Minter must have same Controller as current Minter
        require(newMinterController == controller);
        // New Minter's Controller must have the current Minter registered
        require(newMinterController.getContract(keccak256("Minter")) == address(this));

        // Transfer ownership of token to new Minter
        livepeerToken().transferOwnership(_newMinter);
        // Transfer current Minter's token balance to new Minter
        livepeerToken().transfer(_newMinter, livepeerToken().balanceOf(this));
        // Transfer current Minter's ETH balance to new Minter
        _newMinter.depositETH.value(this.balance)();
    }

    /**
     * @dev Create reward based on a fractional portion of the mintable tokens for the current round
     * @param _fracNum Numerator of fraction (active transcoder's stake)
     * @param _fracDenom Denominator of fraction (total active stake)
     */
    function createReward(uint256 _fracNum, uint256 _fracDenom) external onlyBondingManager whenSystemNotPaused returns (uint256) {
        // Compute and mint fraction of mintable tokens to include in reward
        uint256 mintAmount = MathUtils.percOf(currentMintableTokens, _fracNum, _fracDenom);
        // Update amount of minted tokens for round
        currentMintedTokens = currentMintedTokens.add(mintAmount);
        // Minted tokens must not exceed mintable tokens
        require(currentMintedTokens <= currentMintableTokens);
        // Mint new tokens
        livepeerToken().mint(this, mintAmount);

        // Reward = minted tokens
        return mintAmount;
    }

    /**
     * @dev Transfer tokens to a receipient. Only callable by BondingManager - always trusts BondingManager
     * @param _to Recipient address
     * @param _amount Amount of tokens
     */
    function trustedTransferTokens(address _to, uint256 _amount) external onlyBondingManager whenSystemNotPaused {
        livepeerToken().transfer(_to, _amount);
    }

    /**
     * @dev Burn tokens. Only callable by BondingManager - always trusts BondingManager
     * @param _amount Amount of tokens to burn
     */
    function trustedBurnTokens(uint256 _amount) external onlyBondingManager whenSystemNotPaused {
        livepeerToken().burn(_amount);
    }

    /**
     * @dev Withdraw ETH to a recipient. Only callable by BondingManager or JobsManager - always trusts these two contracts
     * @param _to Recipient address
     * @param _amount Amount of ETH
     */
    function trustedWithdrawETH(address _to, uint256 _amount) external onlyBondingManagerOrJobsManager whenSystemNotPaused {
        _to.transfer(_amount);
    }

    /**
     * @dev Deposit ETH to this contract. Only callable by the currently registered Minter or JobsManager
     */
    function depositETH() external payable onlyMinterOrJobsManager whenSystemNotPaused returns (bool) {
        return true;
    }

    /**
     * @dev Set inflation and mintable tokens for the round. Only callable by the RoundsManager
     */
    function setCurrentRewardTokens() external onlyRoundsManager whenSystemNotPaused {
        setInflation();

        // Set mintable tokens based upon current inflation and current total token supply
        currentMintableTokens = MathUtils.percOf(livepeerToken().totalSupply(), inflation);
        currentMintedTokens = 0;

        SetCurrentRewardTokens(currentMintableTokens, inflation);
    }

    /**
     * @dev Returns Controller interface
     */
    function getController() public view returns (IController) {
        return controller;
    }

    /**
     * @dev Set inflation based upon the current bonding rate and target bonding rate
     */
    function setInflation() internal {
        uint256 currentBondingRate = 0;
        uint256 totalSupply = livepeerToken().totalSupply();

        if (totalSupply > 0) {
            uint256 totalBonded = bondingManager().getTotalBonded();
            currentBondingRate = MathUtils.percPoints(totalBonded, totalSupply);
        }

        if (currentBondingRate < targetBondingRate) {
            // Bonding rate is below the target - increase inflation
            inflation = inflation.add(inflationChange);
        } else if (currentBondingRate > targetBondingRate) {
            // Bonding rate is above the target - decrease inflation
            if (inflationChange > inflation) {
                inflation = 0;
            } else {
                inflation = inflation.sub(inflationChange);
            }
        }
    }

    /**
     * @dev Returns LivepeerToken interface
     */
    function livepeerToken() internal view returns (ILivepeerToken) {
        return ILivepeerToken(controller.getContract(keccak256("LivepeerToken")));
    }

    /**
     * @dev Returns BondingManager interface
     */
    function bondingManager() internal view returns (IBondingManager) {
        return IBondingManager(controller.getContract(keccak256("BondingManager")));
    }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"_inflationChange","type":"uint256"}],"name":"setInflationChange","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newMinter","type":"address"}],"name":"migrateToNewMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"trustedWithdrawETH","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"currentMintedTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getController","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_targetBondingRate","type":"uint256"}],"name":"setTargetBondingRate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_fracNum","type":"uint256"},{"name":"_fracDenom","type":"uint256"}],"name":"createReward","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"targetBondingRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_controller","type":"address"}],"name":"setController","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"currentMintableTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"inflationChange","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"inflation","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"trustedBurnTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"trustedTransferTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"setCurrentRewardTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"depositETH","outputs":[{"name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"controller","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_controller","type":"address"},{"name":"_inflation","type":"uint256"},{"name":"_inflationChange","type":"uint256"},{"name":"_targetBondingRate","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"currentMintableTokens","type":"uint256"},{"indexed":false,"name":"currentInflation","type":"uint256"}],"name":"SetCurrentRewardTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"controller","type":"address"}],"name":"SetController","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"param","type":"string"}],"name":"ParameterUpdate","type":"event"}]

606060405234156200001057600080fd5b604051608080620018db8339810160405280805191906020018051919060200180519190602001805160008054600160a060020a031916600160a060020a038816179055915062000071905083640100000000620000da81026200145b1704565b15156200007d57600080fd5b62000096826401000000006200145b620000da82021704565b1515620000a257600080fd5b620000bb816401000000006200145b620000da82021704565b1515620000c757600080fd5b60019290925560025560035550620000e4565b620f424090111590565b6117e780620000f46000396000f3006060604052600436106100d75763ffffffff60e060020a600035041663010e3c1c81146100dc57806318d217ad146100f457806320283da9146101135780632de22cdb146101355780633018205f1461015a57806377bde142146101895780637dbedad51461019f578063821b771f146101b857806392eefe9b146101cb5780639ae6309a146101ea578063a7c83514146101fd578063be0522e014610210578063c7ee98c214610223578063e7a49c2b14610239578063ece2064c1461025b578063f6326fb31461026e578063f77c47911461028a575b600080fd5b34156100e757600080fd5b6100f260043561029d565b005b34156100ff57600080fd5b6100f2600160a060020a03600435166103a1565b341561011e57600080fd5b6100f2600160a060020a03600435166024356107d0565b341561014057600080fd5b6101486109d3565b60405190815260200160405180910390f35b341561016557600080fd5b61016d6109d9565b604051600160a060020a03909116815260200160405180910390f35b341561019457600080fd5b6100f26004356109e8565b34156101aa57600080fd5b610148600435602435610aec565b34156101c357600080fd5b610148610cc8565b34156101d657600080fd5b6100f2600160a060020a0360043516610cce565b34156101f557600080fd5b610148610d51565b341561020857600080fd5b610148610d57565b341561021b57600080fd5b610148610d5d565b341561022e57600080fd5b6100f2600435610d63565b341561024457600080fd5b6100f2600160a060020a0360043516602435610ede565b341561026657600080fd5b6100f2611078565b610276611265565b604051901515815260200160405180910390f35b341561029557600080fd5b61016d61144c565b60008054600160a060020a031690638da5cb5b90604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156102e657600080fd5b6102c65a03f115156102f757600080fd5b50505060405180519050600160a060020a031633600160a060020a031614151561032057600080fd5b6103298161145b565b151561033457600080fd5b60028190557f9f5033568d78ae30f29f01e944f97b2216493bd19d1b46d429673acff3dcd6746040516020808252600f908201527f696e666c6174696f6e4368616e676500000000000000000000000000000000006040808301919091526060909101905180910390a150565b60008054600160a060020a0316638da5cb5b82604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156103e957600080fd5b6102c65a03f115156103fa57600080fd5b50505060405180519050600160a060020a031633600160a060020a031614151561042357600080fd5b60008054600160a060020a031690635c975abb90604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561046c57600080fd5b6102c65a03f1151561047d57600080fd5b50505060405180519050151561049257600080fd5b30600160a060020a031682600160a060020a0316141515156104b357600080fd5b600160a060020a03821615156104c857600080fd5b81600160a060020a0316633018205f6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561050e57600080fd5b6102c65a03f1151561051f57600080fd5b5050506040518051600054909250600160a060020a03808416911614905061054657600080fd5b30600160a060020a031681600160a060020a031663e16c7d986040517f4d696e74657200000000000000000000000000000000000000000000000000008152600601604051809103902060006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156105cf57600080fd5b6102c65a03f115156105e057600080fd5b50505060405180519050600160a060020a03161415156105ff57600080fd5b610607611465565b600160a060020a031663f2fde38b8360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b151561065457600080fd5b6102c65a03f1151561066557600080fd5b505050610670611465565b600160a060020a031663a9059cbb83610687611465565b600160a060020a03166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156106dd57600080fd5b6102c65a03f115156106ee57600080fd5b5050506040518051905060006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561074457600080fd5b6102c65a03f1151561075557600080fd5b505050604051805190505081600160a060020a031663f6326fb330600160a060020a0316316000604051602001526040518263ffffffff1660e060020a0281526004016020604051808303818588803b15156107b057600080fd5b6125ee5a03f115156107c157600080fd5b50505050604051805150505050565b600054600160a060020a031663e16c7d9860405160008051602061179c8339815191528152600e01604051809103902060006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561083f57600080fd5b6102c65a03f1151561085057600080fd5b50505060405180519050600160a060020a031633600160a060020a031614806109255750600054600160a060020a031663e16c7d986040517f4a6f62734d616e616765720000000000000000000000000000000000000000008152600b01604051809103902060006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156108f557600080fd5b6102c65a03f1151561090657600080fd5b50505060405180519050600160a060020a031633600160a060020a0316145b151561093057600080fd5b60008054600160a060020a031690635c975abb90604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561097957600080fd5b6102c65a03f1151561098a57600080fd5b505050604051805115905061099e57600080fd5b600160a060020a03821681156108fc0282604051600060405180830381858888f1935050505015156109cf57600080fd5b5050565b60055481565b600054600160a060020a031690565b60008054600160a060020a031690638da5cb5b90604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610a3157600080fd5b6102c65a03f11515610a4257600080fd5b50505060405180519050600160a060020a031633600160a060020a0316141515610a6b57600080fd5b610a748161145b565b1515610a7f57600080fd5b60038190557f9f5033568d78ae30f29f01e944f97b2216493bd19d1b46d429673acff3dcd67460405160208082526011908201527f746172676574426f6e64696e67526174650000000000000000000000000000006040808301919091526060909101905180910390a150565b600080548190600160a060020a031663e16c7d9860405160008051602061179c8339815191528152600e01604051809103902060006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610b5e57600080fd5b6102c65a03f11515610b6f57600080fd5b50505060405180519050600160a060020a031633600160a060020a0316141515610b9857600080fd5b60008054600160a060020a031690635c975abb90604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610be157600080fd5b6102c65a03f11515610bf257600080fd5b5050506040518051159050610c0657600080fd5b610c136004548585611506565b600554909150610c29908263ffffffff61153d16565b6005819055600454901115610c3d57600080fd5b610c45611465565b600160a060020a03166340c10f19308360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610ca157600080fd5b6102c65a03f11515610cb257600080fd5b50505060405180519050508091505b5092915050565b60035481565b60005433600160a060020a03908116911614610ce957600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790557f4ff638452bbf33c012645d18ae6f05515ff5f2d1dfb0cece8cbf018c60903f7081604051600160a060020a03909116815260200160405180910390a150565b60045481565b60025481565b60015481565b600054600160a060020a031663e16c7d9860405160008051602061179c8339815191528152600e01604051809103902060006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610dd257600080fd5b6102c65a03f11515610de357600080fd5b50505060405180519050600160a060020a031633600160a060020a0316141515610e0c57600080fd5b60008054600160a060020a031690635c975abb90604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610e5557600080fd5b6102c65a03f11515610e6657600080fd5b5050506040518051159050610e7a57600080fd5b610e82611465565b600160a060020a03166342966c688260405160e060020a63ffffffff84160281526004810191909152602401600060405180830381600087803b1515610ec757600080fd5b6102c65a03f11515610ed857600080fd5b50505050565b600054600160a060020a031663e16c7d9860405160008051602061179c8339815191528152600e01604051809103902060006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610f4d57600080fd5b6102c65a03f11515610f5e57600080fd5b50505060405180519050600160a060020a031633600160a060020a0316141515610f8757600080fd5b60008054600160a060020a031690635c975abb90604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610fd057600080fd5b6102c65a03f11515610fe157600080fd5b5050506040518051159050610ff557600080fd5b610ffd611465565b600160a060020a031663a9059cbb838360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561105957600080fd5b6102c65a03f1151561106a57600080fd5b505050604051805150505050565b600054600160a060020a031663e16c7d986040517f526f756e64734d616e61676572000000000000000000000000000000000000008152600d01604051809103902060006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156110f957600080fd5b6102c65a03f1151561110a57600080fd5b50505060405180519050600160a060020a031633600160a060020a031614151561113357600080fd5b60008054600160a060020a031690635c975abb90604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561117c57600080fd5b6102c65a03f1151561118d57600080fd5b50505060405180511590506111a157600080fd5b6111a9611553565b61121c6111b4611465565b600160a060020a03166318160ddd6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156111f957600080fd5b6102c65a03f1151561120a57600080fd5b505050604051805190506001546116a5565b600481905560006005556001547f39567a366345edf17f50c1967a31b597745186c4632f34c4f8ebe06b6890784d919060405191825260208201526040908101905180910390a1565b60008054600160a060020a031663e16c7d986040517f4d696e74657200000000000000000000000000000000000000000000000000008152600601604051809103902060006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156112e757600080fd5b6102c65a03f115156112f857600080fd5b50505060405180519050600160a060020a031633600160a060020a031614806113cd5750600054600160a060020a031663e16c7d986040517f4a6f62734d616e616765720000000000000000000000000000000000000000008152600b01604051809103902060006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561139d57600080fd5b6102c65a03f115156113ae57600080fd5b50505060405180519050600160a060020a031633600160a060020a0316145b15156113d857600080fd5b60008054600160a060020a031690635c975abb90604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561142157600080fd5b6102c65a03f1151561143257600080fd5b505050604051805115905061144657600080fd5b50600190565b600054600160a060020a031681565b620f424090111590565b60008054600160a060020a031663e16c7d986040517f4c69766570656572546f6b656e000000000000000000000000000000000000008152600d01604051809103902060006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156114e757600080fd5b6102c65a03f115156114f857600080fd5b505050604051805191505090565b6000611535620f424061152961151c86866116be565b879063ffffffff6116d716565b9063ffffffff61170216565b949350505050565b60008282018381101561154c57fe5b9392505050565b6000808061155f611465565b600160a060020a03166318160ddd6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156115a457600080fd5b6102c65a03f115156115b557600080fd5b50505060405180519250506000821115611640576115d1611719565b600160a060020a0316635c50c3566000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561161657600080fd5b6102c65a03f1151561162757600080fd5b50505060405180519050905061163d81836116be565b92505b6003548310156116675760025460015461165f9163ffffffff61153d16565b6001556116a0565b6003548311156116a05760015460025411156116875760006001556116a0565b60025460015461169c9163ffffffff61178916565b6001555b505050565b600061154c620f4240611529858563ffffffff6116d716565b600061154c8261152985620f424063ffffffff6116d716565b6000808315156116ea5760009150610cc1565b508282028284828115156116fa57fe5b041461154c57fe5b600080828481151561171057fe5b04949350505050565b60008054600160a060020a031663e16c7d9860405160008051602061179c8339815191528152600e01604051809103902060006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156114e757600080fd5b60008282111561179557fe5b509003905600426f6e64696e674d616e61676572000000000000000000000000000000000000a165627a7a723058203c09df31724f13ee9a43289804c31b45cfcfd6a9df4b3a67d85543eb2a5fdbe90029000000000000000000000000f96d54e490317c557a967abfa5d6e33006be69b300000000000000000000000000000000000000000000000000000000000000890000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000007a120

Deployed Bytecode

0x6060604052600436106100d75763ffffffff60e060020a600035041663010e3c1c81146100dc57806318d217ad146100f457806320283da9146101135780632de22cdb146101355780633018205f1461015a57806377bde142146101895780637dbedad51461019f578063821b771f146101b857806392eefe9b146101cb5780639ae6309a146101ea578063a7c83514146101fd578063be0522e014610210578063c7ee98c214610223578063e7a49c2b14610239578063ece2064c1461025b578063f6326fb31461026e578063f77c47911461028a575b600080fd5b34156100e757600080fd5b6100f260043561029d565b005b34156100ff57600080fd5b6100f2600160a060020a03600435166103a1565b341561011e57600080fd5b6100f2600160a060020a03600435166024356107d0565b341561014057600080fd5b6101486109d3565b60405190815260200160405180910390f35b341561016557600080fd5b61016d6109d9565b604051600160a060020a03909116815260200160405180910390f35b341561019457600080fd5b6100f26004356109e8565b34156101aa57600080fd5b610148600435602435610aec565b34156101c357600080fd5b610148610cc8565b34156101d657600080fd5b6100f2600160a060020a0360043516610cce565b34156101f557600080fd5b610148610d51565b341561020857600080fd5b610148610d57565b341561021b57600080fd5b610148610d5d565b341561022e57600080fd5b6100f2600435610d63565b341561024457600080fd5b6100f2600160a060020a0360043516602435610ede565b341561026657600080fd5b6100f2611078565b610276611265565b604051901515815260200160405180910390f35b341561029557600080fd5b61016d61144c565b60008054600160a060020a031690638da5cb5b90604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156102e657600080fd5b6102c65a03f115156102f757600080fd5b50505060405180519050600160a060020a031633600160a060020a031614151561032057600080fd5b6103298161145b565b151561033457600080fd5b60028190557f9f5033568d78ae30f29f01e944f97b2216493bd19d1b46d429673acff3dcd6746040516020808252600f908201527f696e666c6174696f6e4368616e676500000000000000000000000000000000006040808301919091526060909101905180910390a150565b60008054600160a060020a0316638da5cb5b82604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156103e957600080fd5b6102c65a03f115156103fa57600080fd5b50505060405180519050600160a060020a031633600160a060020a031614151561042357600080fd5b60008054600160a060020a031690635c975abb90604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561046c57600080fd5b6102c65a03f1151561047d57600080fd5b50505060405180519050151561049257600080fd5b30600160a060020a031682600160a060020a0316141515156104b357600080fd5b600160a060020a03821615156104c857600080fd5b81600160a060020a0316633018205f6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561050e57600080fd5b6102c65a03f1151561051f57600080fd5b5050506040518051600054909250600160a060020a03808416911614905061054657600080fd5b30600160a060020a031681600160a060020a031663e16c7d986040517f4d696e74657200000000000000000000000000000000000000000000000000008152600601604051809103902060006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156105cf57600080fd5b6102c65a03f115156105e057600080fd5b50505060405180519050600160a060020a03161415156105ff57600080fd5b610607611465565b600160a060020a031663f2fde38b8360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b151561065457600080fd5b6102c65a03f1151561066557600080fd5b505050610670611465565b600160a060020a031663a9059cbb83610687611465565b600160a060020a03166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156106dd57600080fd5b6102c65a03f115156106ee57600080fd5b5050506040518051905060006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561074457600080fd5b6102c65a03f1151561075557600080fd5b505050604051805190505081600160a060020a031663f6326fb330600160a060020a0316316000604051602001526040518263ffffffff1660e060020a0281526004016020604051808303818588803b15156107b057600080fd5b6125ee5a03f115156107c157600080fd5b50505050604051805150505050565b600054600160a060020a031663e16c7d9860405160008051602061179c8339815191528152600e01604051809103902060006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561083f57600080fd5b6102c65a03f1151561085057600080fd5b50505060405180519050600160a060020a031633600160a060020a031614806109255750600054600160a060020a031663e16c7d986040517f4a6f62734d616e616765720000000000000000000000000000000000000000008152600b01604051809103902060006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156108f557600080fd5b6102c65a03f1151561090657600080fd5b50505060405180519050600160a060020a031633600160a060020a0316145b151561093057600080fd5b60008054600160a060020a031690635c975abb90604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561097957600080fd5b6102c65a03f1151561098a57600080fd5b505050604051805115905061099e57600080fd5b600160a060020a03821681156108fc0282604051600060405180830381858888f1935050505015156109cf57600080fd5b5050565b60055481565b600054600160a060020a031690565b60008054600160a060020a031690638da5cb5b90604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610a3157600080fd5b6102c65a03f11515610a4257600080fd5b50505060405180519050600160a060020a031633600160a060020a0316141515610a6b57600080fd5b610a748161145b565b1515610a7f57600080fd5b60038190557f9f5033568d78ae30f29f01e944f97b2216493bd19d1b46d429673acff3dcd67460405160208082526011908201527f746172676574426f6e64696e67526174650000000000000000000000000000006040808301919091526060909101905180910390a150565b600080548190600160a060020a031663e16c7d9860405160008051602061179c8339815191528152600e01604051809103902060006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610b5e57600080fd5b6102c65a03f11515610b6f57600080fd5b50505060405180519050600160a060020a031633600160a060020a0316141515610b9857600080fd5b60008054600160a060020a031690635c975abb90604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610be157600080fd5b6102c65a03f11515610bf257600080fd5b5050506040518051159050610c0657600080fd5b610c136004548585611506565b600554909150610c29908263ffffffff61153d16565b6005819055600454901115610c3d57600080fd5b610c45611465565b600160a060020a03166340c10f19308360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610ca157600080fd5b6102c65a03f11515610cb257600080fd5b50505060405180519050508091505b5092915050565b60035481565b60005433600160a060020a03908116911614610ce957600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790557f4ff638452bbf33c012645d18ae6f05515ff5f2d1dfb0cece8cbf018c60903f7081604051600160a060020a03909116815260200160405180910390a150565b60045481565b60025481565b60015481565b600054600160a060020a031663e16c7d9860405160008051602061179c8339815191528152600e01604051809103902060006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610dd257600080fd5b6102c65a03f11515610de357600080fd5b50505060405180519050600160a060020a031633600160a060020a0316141515610e0c57600080fd5b60008054600160a060020a031690635c975abb90604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610e5557600080fd5b6102c65a03f11515610e6657600080fd5b5050506040518051159050610e7a57600080fd5b610e82611465565b600160a060020a03166342966c688260405160e060020a63ffffffff84160281526004810191909152602401600060405180830381600087803b1515610ec757600080fd5b6102c65a03f11515610ed857600080fd5b50505050565b600054600160a060020a031663e16c7d9860405160008051602061179c8339815191528152600e01604051809103902060006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610f4d57600080fd5b6102c65a03f11515610f5e57600080fd5b50505060405180519050600160a060020a031633600160a060020a0316141515610f8757600080fd5b60008054600160a060020a031690635c975abb90604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610fd057600080fd5b6102c65a03f11515610fe157600080fd5b5050506040518051159050610ff557600080fd5b610ffd611465565b600160a060020a031663a9059cbb838360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561105957600080fd5b6102c65a03f1151561106a57600080fd5b505050604051805150505050565b600054600160a060020a031663e16c7d986040517f526f756e64734d616e61676572000000000000000000000000000000000000008152600d01604051809103902060006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156110f957600080fd5b6102c65a03f1151561110a57600080fd5b50505060405180519050600160a060020a031633600160a060020a031614151561113357600080fd5b60008054600160a060020a031690635c975abb90604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561117c57600080fd5b6102c65a03f1151561118d57600080fd5b50505060405180511590506111a157600080fd5b6111a9611553565b61121c6111b4611465565b600160a060020a03166318160ddd6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156111f957600080fd5b6102c65a03f1151561120a57600080fd5b505050604051805190506001546116a5565b600481905560006005556001547f39567a366345edf17f50c1967a31b597745186c4632f34c4f8ebe06b6890784d919060405191825260208201526040908101905180910390a1565b60008054600160a060020a031663e16c7d986040517f4d696e74657200000000000000000000000000000000000000000000000000008152600601604051809103902060006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156112e757600080fd5b6102c65a03f115156112f857600080fd5b50505060405180519050600160a060020a031633600160a060020a031614806113cd5750600054600160a060020a031663e16c7d986040517f4a6f62734d616e616765720000000000000000000000000000000000000000008152600b01604051809103902060006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561139d57600080fd5b6102c65a03f115156113ae57600080fd5b50505060405180519050600160a060020a031633600160a060020a0316145b15156113d857600080fd5b60008054600160a060020a031690635c975abb90604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561142157600080fd5b6102c65a03f1151561143257600080fd5b505050604051805115905061144657600080fd5b50600190565b600054600160a060020a031681565b620f424090111590565b60008054600160a060020a031663e16c7d986040517f4c69766570656572546f6b656e000000000000000000000000000000000000008152600d01604051809103902060006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156114e757600080fd5b6102c65a03f115156114f857600080fd5b505050604051805191505090565b6000611535620f424061152961151c86866116be565b879063ffffffff6116d716565b9063ffffffff61170216565b949350505050565b60008282018381101561154c57fe5b9392505050565b6000808061155f611465565b600160a060020a03166318160ddd6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156115a457600080fd5b6102c65a03f115156115b557600080fd5b50505060405180519250506000821115611640576115d1611719565b600160a060020a0316635c50c3566000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561161657600080fd5b6102c65a03f1151561162757600080fd5b50505060405180519050905061163d81836116be565b92505b6003548310156116675760025460015461165f9163ffffffff61153d16565b6001556116a0565b6003548311156116a05760015460025411156116875760006001556116a0565b60025460015461169c9163ffffffff61178916565b6001555b505050565b600061154c620f4240611529858563ffffffff6116d716565b600061154c8261152985620f424063ffffffff6116d716565b6000808315156116ea5760009150610cc1565b508282028284828115156116fa57fe5b041461154c57fe5b600080828481151561171057fe5b04949350505050565b60008054600160a060020a031663e16c7d9860405160008051602061179c8339815191528152600e01604051809103902060006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156114e757600080fd5b60008282111561179557fe5b509003905600426f6e64696e674d616e61676572000000000000000000000000000000000000a165627a7a723058203c09df31724f13ee9a43289804c31b45cfcfd6a9df4b3a67d85543eb2a5fdbe90029

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

000000000000000000000000f96d54e490317c557a967abfa5d6e33006be69b300000000000000000000000000000000000000000000000000000000000000890000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000007a120

-----Decoded View---------------
Arg [0] : _controller (address): 0xF96D54E490317c557A967ABfA5d6e33006BE69b3
Arg [1] : _inflation (uint256): 137
Arg [2] : _inflationChange (uint256): 3
Arg [3] : _targetBondingRate (uint256): 500000

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000f96d54e490317c557a967abfa5d6e33006be69b3
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000089
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [3] : 000000000000000000000000000000000000000000000000000000000007a120


Deployed Bytecode Sourcemap

10473:9118:0:-;;;;;;;;;-1:-1:-1;;;10473:9118:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13625:279;;;;;;;;;;;;;;;;14177:1014;;;;;;;;;;-1:-1:-1;;;;;14177:1014:0;;;;;17060:159;;;;;;;;;;-1:-1:-1;;;;;17060:159:0;;;;;;;10969:34;;;;;;;;;;;;;;;;;;;;;;;;;;;18075:95;;;;;;;;;;;;;;;-1:-1:-1;;;;;18075:95:0;;;;;;;;;;;;;;13153:291;;;;;;;;;;;;;;15464:690;;;;;;;;;;;;;;;;10765:32;;;;;;;;;;;;7277:163;;;;;;;;;;-1:-1:-1;;;;;7277:163:0;;;;;10867:36;;;;;;;;;;;;10700:30;;;;;;;;;;;;10584:24;;;;;;;;;;;;16695:140;;;;;;;;;;;;;;16366:166;;;;;;;;;;-1:-1:-1;;;;;16366:166:0;;;;;;;17603:404;;;;;;;;;;;;17352:128;;;;;;;;;;;;;;;;;;;;;6419:29;;;;;;;;;;;;13625:279;6710:10;;;-1:-1:-1;;;;;6710:10:0;;:16;;:18;;;;;;;;;;-1:-1:-1;;;6710:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6696:32:0;:10;-1:-1:-1;;;;;6696:32:0;;6688:41;;;;;;;;13764:37;13784:16;13764:19;:37::i;:::-;13756:46;;;;;;;;13815:15;:34;;;13862;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13625:279;:::o;14177:1014::-;14462:31;6710:10;;-1:-1:-1;;;;;6710:10:0;:16;14462:31;6710:18;;;;;;;;;;-1:-1:-1;;;6710:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6696:32:0;:10;-1:-1:-1;;;;;6696:32:0;;6688:41;;;;;;;;6983:10;;;-1:-1:-1;;;;;6983:10:0;;:17;;:19;;;;;;;;;;-1:-1:-1;;;6983:19:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6975:28;;;;;;;;14356:4;-1:-1:-1;;;;;14342:18:0;:10;-1:-1:-1;;;;;14342:18:0;;;14334:27;;;;;;;;-1:-1:-1;;;;;14415:33:0;;;;14407:42;;;;;;14496:10;-1:-1:-1;;;;;14496:24:0;;:26;;;;;;;;;;;-1:-1:-1;;;14496:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14631:10;;14496:26;;-1:-1:-1;;;;;;14608:33:0;;;14631:10;;14608:33;;-1:-1:-1;14600:42:0;;;;;;14801:4;-1:-1:-1;;;;;14737:69:0;:19;-1:-1:-1;;;;;14737:31:0;;14769:19;;;;;;;;;;;;;;14737:52;;;;;;;;-1:-1:-1;;;14737:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14737:69:0;;14729:78;;;;;;;;14874:15;:13;:15::i;:::-;-1:-1:-1;;;;;14874:33:0;;14908:10;14874:45;;-1:-1:-1;;;14874:45:0;;;;;;-1:-1:-1;;;;;14874:45:0;;;;;;;;;-1:-1:-1;14874:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14996:15;:13;:15::i;:::-;-1:-1:-1;;;;;14996:24:0;;15021:10;15033:15;:13;:15::i;:::-;-1:-1:-1;;;;;15033:25:0;;15059:4;15033:31;;;;;;;;-1:-1:-1;;;15033:31:0;;;;;;-1:-1:-1;;;;;15033:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14996:69;;;;;;;;-1:-1:-1;;;14996:69:0;;;;;;-1:-1:-1;;;;;14996:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15140:10;-1:-1:-1;;;;;15140:21:0;;15168:4;-1:-1:-1;;;;;15168:12:0;;15140:43;;;;;;;;;;;-1:-1:-1;;;15140:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;14177:1014:0:o;17060:159::-;11522:10;;-1:-1:-1;;;;;11522:10:0;:22;11545:27;;-1:-1:-1;;;;;;;;;;;11545:27:0;;;;;;;;;;;11522:51;;;;;;;;-1:-1:-1;;;11522:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11508:65:0;:10;-1:-1:-1;;;;;11508:65:0;;:131;;;-1:-1:-1;11591:10:0;;-1:-1:-1;;;;;11591:10:0;:22;11614:24;;;;;;;;;;;;;;11591:48;;;;;;;;-1:-1:-1;;;11591:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11577:62:0;:10;-1:-1:-1;;;;;11577:62:0;;11508:131;11500:140;;;;;;;;6850:10;;;-1:-1:-1;;;;;6850:10:0;;:17;;:19;;;;;;;;;;-1:-1:-1;;;6850:19:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6849:20;;-1:-1:-1;6841:29:0;;;;;;-1:-1:-1;;;;;17190:12:0;;:21;;;;17203:7;17190:21;;;;;;;;;;;;;;;;;;;;;;;;;;17060:159;;:::o;10969:34::-;;;;:::o;18075:95::-;18121:11;18152:10;-1:-1:-1;;;;;18152:10:0;18075:95;:::o;13153:291::-;6710:10;;;-1:-1:-1;;;;;6710:10:0;;:16;;:18;;;;;;;;;;-1:-1:-1;;;6710:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6696:32:0;:10;-1:-1:-1;;;;;6696:32:0;;6688:41;;;;;;;;13296:39;13316:18;13296:19;:39::i;:::-;13288:48;;;;;;;;13349:17;:38;;;13400:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13153:291;:::o;15464:690::-;15581:7;11118:10;;15581:7;;-1:-1:-1;;;;;11118:10:0;:22;11141:27;;-1:-1:-1;;;;;;;;;;;11141:27:0;;;;;;;;;;;11118:51;;;;;;;;-1:-1:-1;;;11118:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11104:65:0;:10;-1:-1:-1;;;;;11104:65:0;;11096:74;;;;;;;;6850:10;;;-1:-1:-1;;;;;6850:10:0;;:17;;:19;;;;;;;;;;-1:-1:-1;;;6850:19:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6849:20;;-1:-1:-1;6841:29:0;;;;;;15700:61;15717:21;;15740:8;15750:10;15700:16;:61::i;:::-;15847:19;;15679:82;;-1:-1:-1;15847:35:0;;15679:82;15847:35;:23;:35;:::i;:::-;15825:19;:57;;;15982:21;;15959:44;;;15951:53;;;;;;16043:15;:13;:15::i;:::-;-1:-1:-1;;;;;16043:20:0;;16064:4;16070:10;16043:38;;;;;;;;-1:-1:-1;;;16043:38:0;;;;;;-1:-1:-1;;;;;16043:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16136:10;16129:17;;6881:1;15464:690;;;;;:::o;10765:32::-;;;;:::o;7277:163::-;6562:10;;6540;-1:-1:-1;;;;;6540:33:0;;;6562:10;;6540:33;6532:42;;;;;;7356:10;:37;;-1:-1:-1;;7356:37:0;-1:-1:-1;;;;;7356:37:0;;;;;7406:26;7356:37;7406:26;;-1:-1:-1;;;;;7406:26:0;;;;;;;;;;;;;;7277:163;:::o;10867:36::-;;;;:::o;10700:30::-;;;;:::o;10584:24::-;;;;:::o;16695:140::-;11118:10;;-1:-1:-1;;;;;11118:10:0;:22;11141:27;;-1:-1:-1;;;;;;;;;;;11141:27:0;;;;;;;;;;;11118:51;;;;;;;;-1:-1:-1;;;11118:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11104:65:0;:10;-1:-1:-1;;;;;11104:65:0;;11096:74;;;;;;;;6850:10;;;-1:-1:-1;;;;;6850:10:0;;:17;;:19;;;;;;;;;;-1:-1:-1;;;6850:19:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6849:20;;-1:-1:-1;6841:29:0;;;;;;16798:15;:13;:15::i;:::-;-1:-1:-1;;;;;16798:20:0;;16819:7;16798:29;;-1:-1:-1;;;16798:29:0;;;;;;;;;;;;;;;-1:-1:-1;16798:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16695:140;:::o;16366:166::-;11118:10;;-1:-1:-1;;;;;11118:10:0;:22;11141:27;;-1:-1:-1;;;;;;;;;;;11141:27:0;;;;;;;;;;;11118:51;;;;;;;;-1:-1:-1;;;11118:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11104:65:0;:10;-1:-1:-1;;;;;11104:65:0;;11096:74;;;;;;;;6850:10;;;-1:-1:-1;;;;;6850:10:0;;:17;;:19;;;;;;;;;;-1:-1:-1;;;6850:19:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6849:20;;-1:-1:-1;6841:29:0;;;;;;16486:15;:13;:15::i;:::-;-1:-1:-1;;;;;16486:24:0;;16511:3;16516:7;16486:38;;;;;;;;-1:-1:-1;;;16486:38:0;;;;;;-1:-1:-1;;;;;16486:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;16366:166:0:o;17603:404::-;11302:10;;-1:-1:-1;;;;;11302:10:0;:22;11325:26;;;;;;;;;;;;;;11302:50;;;;;;;;-1:-1:-1;;;11302:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11288:64:0;:10;-1:-1:-1;;;;;11288:64:0;;11280:73;;;;;;;;6850:10;;;-1:-1:-1;;;;;6850:10:0;;:17;;:19;;;;;;;;;;-1:-1:-1;;;6850:19:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6849:20;;-1:-1:-1;6841:29:0;;;;;;17695:14;:12;:14::i;:::-;17838:58;17855:15;:13;:15::i;:::-;-1:-1:-1;;;;;17855:27:0;;:29;;;;;;;;;;;-1:-1:-1;;;17855:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17886:9;;17838:16;:58::i;:::-;17814:21;:82;;;17929:1;17907:19;:23;17989:9;;17943:56;;17814:82;17943:56;;;;;;;;;;;;;;;;;;;;17603:404::o;17352:128::-;17444:4;11818:10;;-1:-1:-1;;;;;11818:10:0;:22;11841:19;;;;;;;;;;;;;;11818:43;;;;;;;;-1:-1:-1;;;11818:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11804:57:0;:10;-1:-1:-1;;;;;11804:57:0;;:123;;;-1:-1:-1;11879:10:0;;-1:-1:-1;;;;;11879:10:0;:22;11902:24;;;;;;;;;;;;;;11879:48;;;;;;;;-1:-1:-1;;;11879:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11865:62:0;:10;-1:-1:-1;;;;;11865:62:0;;11804:123;11796:132;;;;;;;;6850:10;;;-1:-1:-1;;;;;6850:10:0;;:17;;:19;;;;;;;;;;-1:-1:-1;;;6850:19:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6849:20;;-1:-1:-1;6841:29:0;;;;;;-1:-1:-1;17468:4:0;17352:128;:::o;6419:29::-;;;-1:-1:-1;;;;;6419:29:0;;:::o;4135:114::-;3955:7;4218:23;;;;4135:114::o;19200:156::-;19248:14;19297:10;;-1:-1:-1;;;;;19297:10:0;:22;19320:26;;;;;;;;;;;;;;19297:50;;;;;;;;-1:-1:-1;;;19297:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19200:156:0;:::o;4571:192::-;4665:7;4692:63;3955:7;4692:45;4704:32;4715:8;4725:10;4704;:32::i;:::-;4692:7;;:45;:11;:45;:::i;:::-;:49;:63;:49;:63;:::i;:::-;4685:70;4571:192;-1:-1:-1;;;;4571:192:0:o;3666:133::-;3724:7;3752:5;;;3771:6;;;;3764:14;;;;3792:1;3666:133;-1:-1:-1;;;3666:133:0:o;18283:846::-;18327:26;;;18390:15;:13;:15::i;:::-;-1:-1:-1;;;;;18390:27:0;;:29;;;;;;;;;;;-1:-1:-1;;;18390:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18450:1:0;18436:15;;18432:185;;;18490:16;:14;:16::i;:::-;-1:-1:-1;;;;;18490:31:0;;:33;;;;;;;;;;;-1:-1:-1;;;18490:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18468:55;;18559:46;18580:11;18593;18559:20;:46::i;:::-;18538:67;;18432:185;18654:17;;18633:18;:38;18629:493;;;18784:15;;18770:9;;:30;;;:13;:30;:::i;:::-;18758:9;:42;18629:493;;;18843:17;;18822:18;:38;18818:304;;;18969:9;;18951:15;;:27;18947:164;;;19011:1;18999:9;:13;18947:164;;;19079:15;;19065:9;;:30;;;:13;:30;:::i;:::-;19053:9;:42;18947:164;18283:846;;;:::o;5062:148::-;5136:7;5163:39;3955:7;5163:21;:7;5175:8;5163:21;:11;:21;:::i;5446:158::-;5527:7;5554:42;5585:10;5554:26;:8;3955:7;5554:26;:12;:26;:::i;3085:180::-;3143:7;;3163:6;;3159:37;;;3187:1;3180:8;;;;3159:37;-1:-1:-1;3214:5:0;;;3218:1;3214;:5;3233;;;;;;;;:10;3226:18;;;3271:270;3329:7;3420:9;3436:1;3432;:5;;;;;;;;;3271:270;-1:-1:-1;;;;3271:270:0:o;19428:160::-;19477:15;19528:10;;-1:-1:-1;;;;;19528:10:0;:22;19551:27;;-1:-1:-1;;;;;;;;;;;19551:27:0;;;;;;;;;;;19528:51;;;;;;;;-1:-1:-1;;;19528:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3547:113;3605:7;3628:6;;;;3621:14;;;;-1:-1:-1;3649:5:0;;;3547:113::o

Swarm Source

bzzr://3c09df31724f13ee9a43289804c31b45cfcfd6a9df4b3a67d85543eb2a5fdbe9

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.