ETH Price: $3,168.02 (+1.03%)

Contract

0x9D18D2A4aA80779Ed15Fd95a57465C31f0159398
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Sell207932092024-09-20 17:11:2351 days ago1726852283IN
0x9D18D2A4...1f0159398
0 ETH0.0017561220.04508313
Sell200033322024-06-02 9:46:35161 days ago1717321595IN
0x9D18D2A4...1f0159398
0 ETH0.000744928.2385457
Buy199318862024-05-23 10:08:11171 days ago1716458891IN
0x9D18D2A4...1f0159398
0 ETH0.000668238.11831057
Buy199317972024-05-23 9:50:23171 days ago1716457823IN
0x9D18D2A4...1f0159398
0 ETH0.0009016510.95406485
Buy198220712024-05-08 1:29:59186 days ago1715131799IN
0x9D18D2A4...1f0159398
0 ETH0.000415785.05127309
Buy198220372024-05-08 1:22:59186 days ago1715131379IN
0x9D18D2A4...1f0159398
0 ETH0.000477494.09823849
Sell188463222023-12-23 5:05:47323 days ago1703307947IN
0x9D18D2A4...1f0159398
0 ETH0.0017061719.47482645
Buy188384032023-12-22 2:26:11324 days ago1703211971IN
0x9D18D2A4...1f0159398
0 ETH0.0035002926.19746228
Sell187844982023-12-14 12:52:23332 days ago1702558343IN
0x9D18D2A4...1f0159398
0 ETH0.004375449.9423731
Set Sell Fee187744112023-12-13 2:55:47333 days ago1702436147IN
0x9D18D2A4...1f0159398
0 ETH0.001605756.13571685
Set Buy Fee187744052023-12-13 2:54:35333 days ago1702436075IN
0x9D18D2A4...1f0159398
0 ETH0.0014124449.33946692
Sell187606802023-12-11 4:48:23335 days ago1702270103IN
0x9D18D2A4...1f0159398
0 ETH0.0022394121.97936041
Buy187384992023-12-08 2:15:11338 days ago1702001711IN
0x9D18D2A4...1f0159398
0 ETH0.005880942.48839794
Sell186053652023-11-19 10:48:59357 days ago1700390939IN
0x9D18D2A4...1f0159398
0 ETH0.0013932115.90264671
Buy185624462023-11-13 10:40:11363 days ago1699872011IN
0x9D18D2A4...1f0159398
0 ETH0.0036669631.47282249
Sell180332332023-08-31 8:02:47437 days ago1693468967IN
0x9D18D2A4...1f0159398
0 ETH0.0013315.1811583
Buy180107022023-08-28 4:17:35440 days ago1693196255IN
0x9D18D2A4...1f0159398
0 ETH0.0012170612.24410067
Buy179766482023-08-23 9:55:35445 days ago1692784535IN
0x9D18D2A4...1f0159398
0 ETH0.0025499118.42264586
Sell179699962023-08-22 11:36:23446 days ago1692704183IN
0x9D18D2A4...1f0159398
0 ETH0.0019603618.8351772
Buy170429842023-04-14 4:09:11576 days ago1681445351IN
0x9D18D2A4...1f0159398
0 ETH0.0031753326.18009988
Sell170096782023-04-09 8:50:59581 days ago1681030259IN
0x9D18D2A4...1f0159398
0 ETH0.0018551421.17532082
Buy165270102023-01-31 13:09:23649 days ago1675170563IN
0x9D18D2A4...1f0159398
0 ETH0.0017526116.81782878
Buy154885802022-09-07 5:37:25795 days ago1662529045IN
0x9D18D2A4...1f0159398
0 ETH0.0009777511.87866174
Buy154310632022-08-29 0:53:02804 days ago1661734382IN
0x9D18D2A4...1f0159398
0 ETH0.001103789.47361269
Sell149673282022-06-15 11:45:09879 days ago1655293509IN
0x9D18D2A4...1f0159398
0 ETH0.0034130138.9573752
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Stabilizer

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
File 1 of 3 : Stabilizer.sol
pragma solidity ^0.5.16;

import "./SafeMath.sol";
import "./ERC20.sol";

interface IStrat {
    function invest() external; // underlying amount must be sent from vault to strat address before
    function divest(uint amount) external; // should send requested amount to vault directly, not less or more
    function calcTotalValue() external returns (uint);
    function underlying() external view returns (address);
}

contract Stabilizer {
    using SafeMath for uint;

    uint public constant MAX_FEE = 1000; // 10%
    uint public constant FEE_DENOMINATOR = 10000;
    uint public buyFee;
    uint public sellFee;
    uint public supplyCap;
    uint public supply;
    ERC20 public synth;
    ERC20 public reserve;
    address public operator;
    IStrat public strat;
    address public governance;

    constructor(ERC20 synth_, ERC20 reserve_, address gov_, uint buyFee_, uint sellFee_, uint supplyCap_) public {
        require(buyFee_ <= MAX_FEE, "STABILIZER:BUYFEE_TOO_HIGH");
        require(sellFee_ <= MAX_FEE, "STABILIZER:SELLFEE_TOO_HIGH");
        synth = synth_;
        reserve = reserve_;
        governance = gov_;
        buyFee = buyFee_;
        sellFee = sellFee_;
        operator = msg.sender;
        supplyCap = supplyCap_;
    }

    modifier onlyOperator {
        require(msg.sender == operator || msg.sender == governance, "STABILIZER:ONLY_OPERATOR_OR_GOV");
        _;
    }

    modifier onlyGovernance {
        require(msg.sender == governance, "STABILIZER:ONLY_GOV");
        _;
    }

    function setOperator(address operator_) public {
        require(msg.sender == governance || msg.sender == operator, "STABILIZER:ONLY_GOV_OR_OPERATOR");
        require(operator_ != address(0), "STABILIZER:NO_ADDRESS_ZERO");
        operator = operator_;
    }

    function setBuyFee(uint amount) public onlyGovernance {
        require(amount <= MAX_FEE, "STABILIZER:AMOUNT_TOO_HIGH");
        buyFee = amount;
    }

    function setSellFee(uint amount) public onlyGovernance {
        require(amount <= MAX_FEE, "STABILIZER:AMOUNT_TOO_HIGH");
        sellFee = amount;
    }
    
    function setCap(uint amount) public onlyOperator {
        supplyCap = amount;
    }

    function setGovernance(address gov_) public onlyGovernance {
        require(gov_ != address(0), "STABILIZER:NO_ADDRESS_ZERO");
        governance = gov_;
    }

    function setStrat(IStrat newStrat) public onlyGovernance {
        require(newStrat.underlying() == address(reserve), "STABILIZER:INVALID_STRAT");
        if(address(strat) != address(0)) {
            uint prevTotalValue = strat.calcTotalValue();
            strat.divest(prevTotalValue);
        }
        reserve.transfer(address(newStrat), reserve.balanceOf(address(this)));
        newStrat.invest();
        strat = newStrat;
    }

    function removeStrat() public onlyGovernance {
        uint prevTotalValue = strat.calcTotalValue();
        strat.divest(prevTotalValue);

        strat = IStrat(address(0));
    }

    function takeProfit() public {
        uint totalReserves = getTotalReserves();
        if(totalReserves > supply) {
            uint profit = totalReserves - supply; // underflow prevented by if condition
            if(address(strat) != address(0)) {
                uint bal = reserve.balanceOf(address(this));
                if(bal < profit) {
                    strat.divest(profit - bal); // underflow prevented by if condition
                }
            }
            reserve.transfer(governance, profit);
        }
    }

    function buy(uint amount) public {
        require(supply.add(amount) <= supplyCap, "STABILIZER:SUPPLY_EXCEEDED_CAP");
        if(address(strat) != address(0)) {
            reserve.transferFrom(msg.sender, address(strat), amount);
            strat.invest();
        } else {
            reserve.transferFrom(msg.sender, address(this), amount);
        }

        if(buyFee > 0) {
            uint fee = amount.mul(buyFee).div(FEE_DENOMINATOR);
            reserve.transferFrom(msg.sender, governance, fee);
            emit Buy(msg.sender, amount, amount.add(fee));
        } else {
            emit Buy(msg.sender, amount, amount);
        }

        synth.mint(msg.sender, amount);
        supply = supply.add(amount);
    }

    function sell(uint amount) public {
        synth.transferFrom(msg.sender, address(this), amount);
        synth.burn(amount);

        uint reserveBal = reserve.balanceOf(address(this));
        if(address(strat) != address(0) && reserveBal < amount) {
            strat.divest(amount - reserveBal); // underflow prevented by if condition
        }

        uint afterFee;
        if(sellFee > 0) {
            uint fee = amount.mul(sellFee).div(FEE_DENOMINATOR);
            afterFee = amount.sub(fee);
            reserve.transfer(governance, fee);
        } else {
            afterFee = amount;
        }
        
        reserve.transfer(msg.sender, afterFee);
        supply = supply.sub(amount);
        emit Sell(msg.sender, amount, afterFee);
    }

    function rescue(ERC20 token) public onlyGovernance {
        require(token != reserve, "STABILIZER:RESERVE_NOT_RESCUED");
        token.transfer(governance, token.balanceOf(address(this)));
    }

    function getTotalReserves() internal returns (uint256 bal) { // new view function because strat.calcTotalValue() is not view function
        bal = reserve.balanceOf(address(this));
        if(address(strat) != address(0)) {
            bal = bal.add(strat.calcTotalValue());
        }
    }

    event Buy(address indexed user, uint purchased, uint spent);
    event Sell(address indexed user, uint sold, uint received);
}

File 2 of 3 : ERC20.sol
pragma solidity ^0.5.16;

import "./SafeMath.sol";

contract ERC20 {
    using SafeMath for uint;

    string public name;
    string public symbol;
    uint8 public decimals;
    uint  public totalSupply;
    address public operator;
    address public pendingOperator;
    mapping(address => uint) public balanceOf;
    mapping(address => mapping(address => uint)) public allowance;
    mapping (address => bool) public minters;

    bytes32 public DOMAIN_SEPARATOR;
    // keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");
    bytes32 public constant PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9;
    mapping(address => uint) public nonces;

    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);
    event AddMinter(address indexed minter);
    event RemoveMinter(address indexed minter);
    event ChangeOperator(address indexed newOperator);

    modifier onlyOperator {
        require(msg.sender == operator, "ERC20:ONLY_OPERATOR");
        _;
    }

    constructor(string memory name_, string memory symbol_, uint8 decimals_) public {
        name = name_;
        symbol = symbol_;
        decimals = decimals_;
        operator = msg.sender;
        uint chainId;
        assembly {
            chainId := chainid
        }
        DOMAIN_SEPARATOR = keccak256(
            abi.encode(
                keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'),
                keccak256(bytes(name)),
                keccak256(bytes('1')),
                chainId,
                address(this)
            )
        );
    }

    function setPendingOperator(address newOperator_) public onlyOperator {
        pendingOperator = newOperator_;
    }

    function claimOperator() public {
        require(msg.sender == pendingOperator, "ERC20:ONLY_PENDING_OPERATOR");
        operator = pendingOperator;
        pendingOperator = address(0);
        emit ChangeOperator(operator);
    }

    function addMinter(address minter_) public onlyOperator {
        minters[minter_] = true;
        emit AddMinter(minter_);
    }

    function removeMinter(address minter_) public onlyOperator {
        minters[minter_] = false;
        emit RemoveMinter(minter_);
    }

    function mint(address to, uint amount) public {
        require(minters[msg.sender] == true || msg.sender == operator, "ERC20:ONLY_MINTERS_OR_OPERATOR");
        _mint(to, amount);
    }

    function burn(uint amount) public {
        _burn(msg.sender, amount);
    }

    function _mint(address to, uint value) internal {
        totalSupply = totalSupply.add(value);
        balanceOf[to] = balanceOf[to].add(value);
        emit Transfer(address(0), to, value);
    }

    function _burn(address from, uint value) internal {
        balanceOf[from] = balanceOf[from].sub(value);
        totalSupply = totalSupply.sub(value);
        emit Transfer(from, address(0), value);
    }

    function _approve(address owner, address spender, uint value) private {
        allowance[owner][spender] = value;
        emit Approval(owner, spender, value);
    }

    function _transfer(address from, address to, uint value) private {
        balanceOf[from] = balanceOf[from].sub(value);
        balanceOf[to] = balanceOf[to].add(value);
        emit Transfer(from, to, value);
    }

    function approve(address spender, uint value) external returns (bool) {
        _approve(msg.sender, spender, value);
        return true;
    }

    function transfer(address to, uint value) external returns (bool) {
        _transfer(msg.sender, to, value);
        return true;
    }

    function transferFrom(address from, address to, uint value) external returns (bool) {
        if (allowance[from][msg.sender] != uint(-1)) {
            allowance[from][msg.sender] = allowance[from][msg.sender].sub(value);
        }
        _transfer(from, to, value);
        return true;
    }

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external {
        require(deadline >= block.timestamp, 'ERC20:EXPIRED');
        bytes32 digest = keccak256(
            abi.encodePacked(
                '\x19\x01',
                DOMAIN_SEPARATOR,
                keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, nonces[owner]++, deadline))
            )
        );
        address recoveredAddress = ecrecover(digest, v, r, s);
        require(recoveredAddress != address(0) && recoveredAddress == owner, 'ERC20:SIGNATURE_INVALID');
        _approve(owner, spender, value);
    }
}

File 3 of 3 : SafeMath.sol
pragma solidity ^0.5.16;

// From https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/math/Math.sol
// Subject to the MIT license.

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SAFEMATH:ADD_OVERFLOW");

        return c;
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting with custom message on overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, errorMessage);

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on underflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot underflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SAFEMATH:SUB_UNDERFLOW");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on underflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot underflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SAFEMATH:MUL_OVERFLOW");

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, errorMessage);

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers.
     * Reverts on division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers.
     * Reverts with custom message on division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

Settings
{
  "evmVersion": "istanbul",
  "libraries": {},
  "metadata": {
    "useLiteralContent": true
  },
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "remappings": [],
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"contract ERC20","name":"synth_","type":"address"},{"internalType":"contract ERC20","name":"reserve_","type":"address"},{"internalType":"address","name":"gov_","type":"address"},{"internalType":"uint256","name":"buyFee_","type":"uint256"},{"internalType":"uint256","name":"sellFee_","type":"uint256"},{"internalType":"uint256","name":"supplyCap_","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"purchased","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"spent","type":"uint256"}],"name":"Buy","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"sold","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"received","type":"uint256"}],"name":"Sell","type":"event"},{"constant":true,"inputs":[],"name":"FEE_DENOMINATOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MAX_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"buy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"governance","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"removeStrat","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract ERC20","name":"token","type":"address"}],"name":"rescue","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"reserve","outputs":[{"internalType":"contract ERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sell","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setBuyFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setCap","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"gov_","type":"address"}],"name":"setGovernance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"operator_","type":"address"}],"name":"setOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setSellFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract IStrat","name":"newStrat","type":"address"}],"name":"setStrat","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"strat","outputs":[{"internalType":"contract IStrat","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"supply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"supplyCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"synth","outputs":[{"internalType":"contract ERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"takeProfit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b50604051611b72380380611b72833981810160405260c081101561003357600080fd5b508051602082015160408301516060840151608085015160a09095015193949293919290916103e88311156100af576040805162461bcd60e51b815260206004820152601a60248201527f53544142494c495a45523a4255594645455f544f4f5f48494748000000000000604482015290519081900360640190fd5b6103e8821115610106576040805162461bcd60e51b815260206004820152601b60248201527f53544142494c495a45523a53454c4c4645455f544f4f5f484947480000000000604482015290519081900360640190fd5b600480546001600160a01b039788166001600160a01b03199182161790915560058054968816968216969096179095556008805494909616938516939093179094556000556001929092556006805490911633179055600255611a048061016e6000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c8063839006f2116100b8578063bc063e1a1161007c578063bc063e1a146102ae578063cd3293de146102b6578063d73792a9146102be578063d96a094a146102c6578063e4849b32146102e3578063f4de5aa11461030057610142565b8063839006f2146102175780638b4cee081461023d5780638f770ad01461025a578063ab033ea914610262578063b3ab15fb1461028857610142565b80632b14ca561161010a5780632b14ca56146101d257806347062402146101da57806347786d37146101e2578063570ca735146101ff5780635aa6e6751461020757806370c105781461020f57610142565b8063047fc9aa14610147578063059b2a10146101615780630cc835a314610185578063115f4fee146101a457806316cc3b07146101ac575b600080fd5b61014f610308565b60408051918252519081900360200190f35b61016961030e565b604080516001600160a01b039092168252519081900360200190f35b6101a26004803603602081101561019b57600080fd5b503561031d565b005b6101696103ce565b6101a2600480360360208110156101c257600080fd5b50356001600160a01b03166103dd565b61014f610764565b61014f61076a565b6101a2600480360360208110156101f857600080fd5b5035610770565b6101696107e9565b6101696107f8565b6101a2610807565b6101a26004803603602081101561022d57600080fd5b50356001600160a01b03166109a9565b6101a26004803603602081101561025357600080fd5b5035610b60565b61014f610c11565b6101a26004803603602081101561027857600080fd5b50356001600160a01b0316610c17565b6101a26004803603602081101561029e57600080fd5b50356001600160a01b0316610ce9565b61014f610dda565b610169610de0565b61014f610def565b6101a2600480360360208110156102dc57600080fd5b5035610df5565b6101a2600480360360208110156102f957600080fd5b50356111b5565b6101a2611540565b60035481565b6007546001600160a01b031681565b6008546001600160a01b03163314610372576040805162461bcd60e51b815260206004820152601360248201527229aa20a124a624ad22a91d27a7262cafa3a7ab60691b604482015290519081900360640190fd5b6103e88111156103c9576040805162461bcd60e51b815260206004820152601a60248201527f53544142494c495a45523a414d4f554e545f544f4f5f48494748000000000000604482015290519081900360640190fd5b600055565b6004546001600160a01b031681565b6008546001600160a01b03163314610432576040805162461bcd60e51b815260206004820152601360248201527229aa20a124a624ad22a91d27a7262cafa3a7ab60691b604482015290519081900360640190fd5b60055460408051636f307dc360e01b815290516001600160a01b0392831692841691636f307dc3916004808301926020929190829003018186803b15801561047957600080fd5b505afa15801561048d573d6000803e3d6000fd5b505050506040513d60208110156104a357600080fd5b50516001600160a01b031614610500576040805162461bcd60e51b815260206004820152601860248201527f53544142494c495a45523a494e56414c49445f53545241540000000000000000604482015290519081900360640190fd5b6007546001600160a01b0316156105ed576007546040805163500128e360e11b815290516000926001600160a01b03169163a00251c691600480830192602092919082900301818787803b15801561055757600080fd5b505af115801561056b573d6000803e3d6000fd5b505050506040513d602081101561058157600080fd5b505160075460408051638ca1799560e01b81526004810184905290519293506001600160a01b0390911691638ca179959160248082019260009290919082900301818387803b1580156105d357600080fd5b505af11580156105e7573d6000803e3d6000fd5b50505050505b600554604080516370a0823160e01b815230600482015290516001600160a01b039092169163a9059cbb91849184916370a08231916024808301926020929190829003018186803b15801561064157600080fd5b505afa158015610655573d6000803e3d6000fd5b505050506040513d602081101561066b57600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091525160448083019260209291908290030181600087803b1580156106bc57600080fd5b505af11580156106d0573d6000803e3d6000fd5b505050506040513d60208110156106e657600080fd5b50506040805163e8b5e51f60e01b815290516001600160a01b0383169163e8b5e51f91600480830192600092919082900301818387803b15801561072957600080fd5b505af115801561073d573d6000803e3d6000fd5b5050600780546001600160a01b0319166001600160a01b0394909416939093179092555050565b60015481565b60005481565b6006546001600160a01b031633148061079357506008546001600160a01b031633145b6107e4576040805162461bcd60e51b815260206004820152601f60248201527f53544142494c495a45523a4f4e4c595f4f50455241544f525f4f525f474f5600604482015290519081900360640190fd5b600255565b6006546001600160a01b031681565b6008546001600160a01b031681565b6000610811611682565b90506003548111156109a657600354600754908203906001600160a01b03161561091f57600554604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561088057600080fd5b505afa158015610894573d6000803e3d6000fd5b505050506040513d60208110156108aa57600080fd5b505190508181101561091d5760075460408051638ca1799560e01b8152838503600482015290516001600160a01b0390921691638ca179959160248082019260009290919082900301818387803b15801561090457600080fd5b505af1158015610918573d6000803e3d6000fd5b505050505b505b6005546008546040805163a9059cbb60e01b81526001600160a01b039283166004820152602481018590529051919092169163a9059cbb9160448083019260209291908290030181600087803b15801561097857600080fd5b505af115801561098c573d6000803e3d6000fd5b505050506040513d60208110156109a257600080fd5b5050505b50565b6008546001600160a01b031633146109fe576040805162461bcd60e51b815260206004820152601360248201527229aa20a124a624ad22a91d27a7262cafa3a7ab60691b604482015290519081900360640190fd5b6005546001600160a01b0382811691161415610a61576040805162461bcd60e51b815260206004820152601e60248201527f53544142494c495a45523a524553455256455f4e4f545f524553435545440000604482015290519081900360640190fd5b600854604080516370a0823160e01b815230600482015290516001600160a01b038085169363a9059cbb9391169184916370a08231916024808301926020929190829003018186803b158015610ab657600080fd5b505afa158015610aca573d6000803e3d6000fd5b505050506040513d6020811015610ae057600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091525160448083019260209291908290030181600087803b158015610b3157600080fd5b505af1158015610b45573d6000803e3d6000fd5b505050506040513d6020811015610b5b57600080fd5b505050565b6008546001600160a01b03163314610bb5576040805162461bcd60e51b815260206004820152601360248201527229aa20a124a624ad22a91d27a7262cafa3a7ab60691b604482015290519081900360640190fd5b6103e8811115610c0c576040805162461bcd60e51b815260206004820152601a60248201527f53544142494c495a45523a414d4f554e545f544f4f5f48494748000000000000604482015290519081900360640190fd5b600155565b60025481565b6008546001600160a01b03163314610c6c576040805162461bcd60e51b815260206004820152601360248201527229aa20a124a624ad22a91d27a7262cafa3a7ab60691b604482015290519081900360640190fd5b6001600160a01b038116610cc7576040805162461bcd60e51b815260206004820152601a60248201527f53544142494c495a45523a4e4f5f414444524553535f5a45524f000000000000604482015290519081900360640190fd5b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6008546001600160a01b0316331480610d0c57506006546001600160a01b031633145b610d5d576040805162461bcd60e51b815260206004820152601f60248201527f53544142494c495a45523a4f4e4c595f474f565f4f525f4f50455241544f5200604482015290519081900360640190fd5b6001600160a01b038116610db8576040805162461bcd60e51b815260206004820152601a60248201527f53544142494c495a45523a4e4f5f414444524553535f5a45524f000000000000604482015290519081900360640190fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6103e881565b6005546001600160a01b031681565b61271081565b600254600354610e0b908363ffffffff61179416565b1115610e5e576040805162461bcd60e51b815260206004820152601e60248201527f53544142494c495a45523a535550504c595f45584345454445445f4341500000604482015290519081900360640190fd5b6007546001600160a01b031615610f5d57600554600754604080516323b872dd60e01b81523360048201526001600160a01b03928316602482015260448101859052905191909216916323b872dd9160648083019260209291908290030181600087803b158015610ece57600080fd5b505af1158015610ee2573d6000803e3d6000fd5b505050506040513d6020811015610ef857600080fd5b50506007546040805163e8b5e51f60e01b815290516001600160a01b039092169163e8b5e51f9160048082019260009290919082900301818387803b158015610f4057600080fd5b505af1158015610f54573d6000803e3d6000fd5b50505050610fe4565b600554604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b158015610fb757600080fd5b505af1158015610fcb573d6000803e3d6000fd5b505050506040513d6020811015610fe157600080fd5b50505b600054156110f4576000611015612710611009600054856117ef90919063ffffffff16565b9063ffffffff61185616565b600554600854604080516323b872dd60e01b81523360048201526001600160a01b0392831660248201526044810185905290519394509116916323b872dd916064808201926020929091908290030181600087803b15801561107657600080fd5b505af115801561108a573d6000803e3d6000fd5b505050506040513d60208110156110a057600080fd5b503390507f1cbc5ab135991bd2b6a4b034a04aa2aa086dac1371cb9b16b8b5e2ed6b036bed836110d6818563ffffffff61179416565b6040805192835260208301919091528051918290030190a25061112f565b6040805182815260208101839052815133927f1cbc5ab135991bd2b6a4b034a04aa2aa086dac1371cb9b16b8b5e2ed6b036bed928290030190a25b60048054604080516340c10f1960e01b8152339381019390935260248301849052516001600160a01b03909116916340c10f1991604480830192600092919082900301818387803b15801561118357600080fd5b505af1158015611197573d6000803e3d6000fd5b50506003546111af925090508263ffffffff61179416565b60035550565b60048054604080516323b872dd60e01b8152339381019390935230602484015260448301849052516001600160a01b03909116916323b872dd9160648083019260209291908290030181600087803b15801561121057600080fd5b505af1158015611224573d6000803e3d6000fd5b505050506040513d602081101561123a57600080fd5b50506004805460408051630852cd8d60e31b8152928301849052516001600160a01b03909116916342966c6891602480830192600092919082900301818387803b15801561128757600080fd5b505af115801561129b573d6000803e3d6000fd5b5050600554604080516370a0823160e01b81523060048201529051600094506001600160a01b0390921692506370a08231916024808301926020929190829003018186803b1580156112ec57600080fd5b505afa158015611300573d6000803e3d6000fd5b505050506040513d602081101561131657600080fd5b50516007549091506001600160a01b03161580159061133457508181105b156113a05760075460408051638ca1799560e01b8152838503600482015290516001600160a01b0390921691638ca179959160248082019260009290919082900301818387803b15801561138757600080fd5b505af115801561139b573d6000803e3d6000fd5b505050505b600154600090156114685760006113c8612710611009600154876117ef90919063ffffffff16565b90506113da848263ffffffff61189816565b6005546008546040805163a9059cbb60e01b81526001600160a01b03928316600482015260248101869052905193955091169163a9059cbb916044808201926020929091908290030181600087803b15801561143557600080fd5b505af1158015611449573d6000803e3d6000fd5b505050506040513d602081101561145f57600080fd5b5061146b915050565b50815b6005546040805163a9059cbb60e01b81523360048201526024810184905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b1580156114bf57600080fd5b505af11580156114d3573d6000803e3d6000fd5b505050506040513d60208110156114e957600080fd5b50506003546114fe908463ffffffff61189816565b6003556040805184815260208101839052815133927fed7a144fad14804d5c249145e3e0e2b63a9eb455b76aee5bc92d711e9bba3e4a928290030190a2505050565b6008546001600160a01b03163314611595576040805162461bcd60e51b815260206004820152601360248201527229aa20a124a624ad22a91d27a7262cafa3a7ab60691b604482015290519081900360640190fd5b6007546040805163500128e360e11b815290516000926001600160a01b03169163a00251c691600480830192602092919082900301818787803b1580156115db57600080fd5b505af11580156115ef573d6000803e3d6000fd5b505050506040513d602081101561160557600080fd5b505160075460408051638ca1799560e01b81526004810184905290519293506001600160a01b0390911691638ca179959160248082019260009290919082900301818387803b15801561165757600080fd5b505af115801561166b573d6000803e3d6000fd5b5050600780546001600160a01b0319169055505050565b600554604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156116cd57600080fd5b505afa1580156116e1573d6000803e3d6000fd5b505050506040513d60208110156116f757600080fd5b50516007549091506001600160a01b031615611791576007546040805163500128e360e11b8152905161178e926001600160a01b03169163a00251c69160048083019260209291908290030181600087803b15801561175557600080fd5b505af1158015611769573d6000803e3d6000fd5b505050506040513d602081101561177f57600080fd5b5051829063ffffffff61179416565b90505b90565b6000828201838110156117e6576040805162461bcd60e51b8152602060048201526015602482015274534146454d4154483a4144445f4f564552464c4f5760581b604482015290519081900360640190fd5b90505b92915050565b6000826117fe575060006117e9565b8282028284828161180b57fe5b04146117e6576040805162461bcd60e51b8152602060048201526015602482015274534146454d4154483a4d554c5f4f564552464c4f5760581b604482015290519081900360640190fd5b60006117e683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506118d3565b60006117e6838360405180604001604052806016815260200175534146454d4154483a5355425f554e444552464c4f5760501b815250611975565b6000818361195f5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561192457818101518382015260200161190c565b50505050905090810190601f1680156119515780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161196b57fe5b0495945050505050565b600081848411156119c75760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561192457818101518382015260200161190c565b50505090039056fea265627a7a723158206aefd2811ac8b8e4165e6d1ffee51563eba5cbfc37e8a16d880401f645f2313764736f6c6343000510003200000000000000000000000003b471d24cec15829fa602d38b046b4f2e8cdaf00000000000000000000000006b175474e89094c44da98b954eedeac495271d0f0000000000000000000000001dd1fb688200be97d312399ece57cda7fdaa5aab000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000d3c21bcecceda1000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101425760003560e01c8063839006f2116100b8578063bc063e1a1161007c578063bc063e1a146102ae578063cd3293de146102b6578063d73792a9146102be578063d96a094a146102c6578063e4849b32146102e3578063f4de5aa11461030057610142565b8063839006f2146102175780638b4cee081461023d5780638f770ad01461025a578063ab033ea914610262578063b3ab15fb1461028857610142565b80632b14ca561161010a5780632b14ca56146101d257806347062402146101da57806347786d37146101e2578063570ca735146101ff5780635aa6e6751461020757806370c105781461020f57610142565b8063047fc9aa14610147578063059b2a10146101615780630cc835a314610185578063115f4fee146101a457806316cc3b07146101ac575b600080fd5b61014f610308565b60408051918252519081900360200190f35b61016961030e565b604080516001600160a01b039092168252519081900360200190f35b6101a26004803603602081101561019b57600080fd5b503561031d565b005b6101696103ce565b6101a2600480360360208110156101c257600080fd5b50356001600160a01b03166103dd565b61014f610764565b61014f61076a565b6101a2600480360360208110156101f857600080fd5b5035610770565b6101696107e9565b6101696107f8565b6101a2610807565b6101a26004803603602081101561022d57600080fd5b50356001600160a01b03166109a9565b6101a26004803603602081101561025357600080fd5b5035610b60565b61014f610c11565b6101a26004803603602081101561027857600080fd5b50356001600160a01b0316610c17565b6101a26004803603602081101561029e57600080fd5b50356001600160a01b0316610ce9565b61014f610dda565b610169610de0565b61014f610def565b6101a2600480360360208110156102dc57600080fd5b5035610df5565b6101a2600480360360208110156102f957600080fd5b50356111b5565b6101a2611540565b60035481565b6007546001600160a01b031681565b6008546001600160a01b03163314610372576040805162461bcd60e51b815260206004820152601360248201527229aa20a124a624ad22a91d27a7262cafa3a7ab60691b604482015290519081900360640190fd5b6103e88111156103c9576040805162461bcd60e51b815260206004820152601a60248201527f53544142494c495a45523a414d4f554e545f544f4f5f48494748000000000000604482015290519081900360640190fd5b600055565b6004546001600160a01b031681565b6008546001600160a01b03163314610432576040805162461bcd60e51b815260206004820152601360248201527229aa20a124a624ad22a91d27a7262cafa3a7ab60691b604482015290519081900360640190fd5b60055460408051636f307dc360e01b815290516001600160a01b0392831692841691636f307dc3916004808301926020929190829003018186803b15801561047957600080fd5b505afa15801561048d573d6000803e3d6000fd5b505050506040513d60208110156104a357600080fd5b50516001600160a01b031614610500576040805162461bcd60e51b815260206004820152601860248201527f53544142494c495a45523a494e56414c49445f53545241540000000000000000604482015290519081900360640190fd5b6007546001600160a01b0316156105ed576007546040805163500128e360e11b815290516000926001600160a01b03169163a00251c691600480830192602092919082900301818787803b15801561055757600080fd5b505af115801561056b573d6000803e3d6000fd5b505050506040513d602081101561058157600080fd5b505160075460408051638ca1799560e01b81526004810184905290519293506001600160a01b0390911691638ca179959160248082019260009290919082900301818387803b1580156105d357600080fd5b505af11580156105e7573d6000803e3d6000fd5b50505050505b600554604080516370a0823160e01b815230600482015290516001600160a01b039092169163a9059cbb91849184916370a08231916024808301926020929190829003018186803b15801561064157600080fd5b505afa158015610655573d6000803e3d6000fd5b505050506040513d602081101561066b57600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091525160448083019260209291908290030181600087803b1580156106bc57600080fd5b505af11580156106d0573d6000803e3d6000fd5b505050506040513d60208110156106e657600080fd5b50506040805163e8b5e51f60e01b815290516001600160a01b0383169163e8b5e51f91600480830192600092919082900301818387803b15801561072957600080fd5b505af115801561073d573d6000803e3d6000fd5b5050600780546001600160a01b0319166001600160a01b0394909416939093179092555050565b60015481565b60005481565b6006546001600160a01b031633148061079357506008546001600160a01b031633145b6107e4576040805162461bcd60e51b815260206004820152601f60248201527f53544142494c495a45523a4f4e4c595f4f50455241544f525f4f525f474f5600604482015290519081900360640190fd5b600255565b6006546001600160a01b031681565b6008546001600160a01b031681565b6000610811611682565b90506003548111156109a657600354600754908203906001600160a01b03161561091f57600554604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561088057600080fd5b505afa158015610894573d6000803e3d6000fd5b505050506040513d60208110156108aa57600080fd5b505190508181101561091d5760075460408051638ca1799560e01b8152838503600482015290516001600160a01b0390921691638ca179959160248082019260009290919082900301818387803b15801561090457600080fd5b505af1158015610918573d6000803e3d6000fd5b505050505b505b6005546008546040805163a9059cbb60e01b81526001600160a01b039283166004820152602481018590529051919092169163a9059cbb9160448083019260209291908290030181600087803b15801561097857600080fd5b505af115801561098c573d6000803e3d6000fd5b505050506040513d60208110156109a257600080fd5b5050505b50565b6008546001600160a01b031633146109fe576040805162461bcd60e51b815260206004820152601360248201527229aa20a124a624ad22a91d27a7262cafa3a7ab60691b604482015290519081900360640190fd5b6005546001600160a01b0382811691161415610a61576040805162461bcd60e51b815260206004820152601e60248201527f53544142494c495a45523a524553455256455f4e4f545f524553435545440000604482015290519081900360640190fd5b600854604080516370a0823160e01b815230600482015290516001600160a01b038085169363a9059cbb9391169184916370a08231916024808301926020929190829003018186803b158015610ab657600080fd5b505afa158015610aca573d6000803e3d6000fd5b505050506040513d6020811015610ae057600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091525160448083019260209291908290030181600087803b158015610b3157600080fd5b505af1158015610b45573d6000803e3d6000fd5b505050506040513d6020811015610b5b57600080fd5b505050565b6008546001600160a01b03163314610bb5576040805162461bcd60e51b815260206004820152601360248201527229aa20a124a624ad22a91d27a7262cafa3a7ab60691b604482015290519081900360640190fd5b6103e8811115610c0c576040805162461bcd60e51b815260206004820152601a60248201527f53544142494c495a45523a414d4f554e545f544f4f5f48494748000000000000604482015290519081900360640190fd5b600155565b60025481565b6008546001600160a01b03163314610c6c576040805162461bcd60e51b815260206004820152601360248201527229aa20a124a624ad22a91d27a7262cafa3a7ab60691b604482015290519081900360640190fd5b6001600160a01b038116610cc7576040805162461bcd60e51b815260206004820152601a60248201527f53544142494c495a45523a4e4f5f414444524553535f5a45524f000000000000604482015290519081900360640190fd5b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6008546001600160a01b0316331480610d0c57506006546001600160a01b031633145b610d5d576040805162461bcd60e51b815260206004820152601f60248201527f53544142494c495a45523a4f4e4c595f474f565f4f525f4f50455241544f5200604482015290519081900360640190fd5b6001600160a01b038116610db8576040805162461bcd60e51b815260206004820152601a60248201527f53544142494c495a45523a4e4f5f414444524553535f5a45524f000000000000604482015290519081900360640190fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6103e881565b6005546001600160a01b031681565b61271081565b600254600354610e0b908363ffffffff61179416565b1115610e5e576040805162461bcd60e51b815260206004820152601e60248201527f53544142494c495a45523a535550504c595f45584345454445445f4341500000604482015290519081900360640190fd5b6007546001600160a01b031615610f5d57600554600754604080516323b872dd60e01b81523360048201526001600160a01b03928316602482015260448101859052905191909216916323b872dd9160648083019260209291908290030181600087803b158015610ece57600080fd5b505af1158015610ee2573d6000803e3d6000fd5b505050506040513d6020811015610ef857600080fd5b50506007546040805163e8b5e51f60e01b815290516001600160a01b039092169163e8b5e51f9160048082019260009290919082900301818387803b158015610f4057600080fd5b505af1158015610f54573d6000803e3d6000fd5b50505050610fe4565b600554604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b158015610fb757600080fd5b505af1158015610fcb573d6000803e3d6000fd5b505050506040513d6020811015610fe157600080fd5b50505b600054156110f4576000611015612710611009600054856117ef90919063ffffffff16565b9063ffffffff61185616565b600554600854604080516323b872dd60e01b81523360048201526001600160a01b0392831660248201526044810185905290519394509116916323b872dd916064808201926020929091908290030181600087803b15801561107657600080fd5b505af115801561108a573d6000803e3d6000fd5b505050506040513d60208110156110a057600080fd5b503390507f1cbc5ab135991bd2b6a4b034a04aa2aa086dac1371cb9b16b8b5e2ed6b036bed836110d6818563ffffffff61179416565b6040805192835260208301919091528051918290030190a25061112f565b6040805182815260208101839052815133927f1cbc5ab135991bd2b6a4b034a04aa2aa086dac1371cb9b16b8b5e2ed6b036bed928290030190a25b60048054604080516340c10f1960e01b8152339381019390935260248301849052516001600160a01b03909116916340c10f1991604480830192600092919082900301818387803b15801561118357600080fd5b505af1158015611197573d6000803e3d6000fd5b50506003546111af925090508263ffffffff61179416565b60035550565b60048054604080516323b872dd60e01b8152339381019390935230602484015260448301849052516001600160a01b03909116916323b872dd9160648083019260209291908290030181600087803b15801561121057600080fd5b505af1158015611224573d6000803e3d6000fd5b505050506040513d602081101561123a57600080fd5b50506004805460408051630852cd8d60e31b8152928301849052516001600160a01b03909116916342966c6891602480830192600092919082900301818387803b15801561128757600080fd5b505af115801561129b573d6000803e3d6000fd5b5050600554604080516370a0823160e01b81523060048201529051600094506001600160a01b0390921692506370a08231916024808301926020929190829003018186803b1580156112ec57600080fd5b505afa158015611300573d6000803e3d6000fd5b505050506040513d602081101561131657600080fd5b50516007549091506001600160a01b03161580159061133457508181105b156113a05760075460408051638ca1799560e01b8152838503600482015290516001600160a01b0390921691638ca179959160248082019260009290919082900301818387803b15801561138757600080fd5b505af115801561139b573d6000803e3d6000fd5b505050505b600154600090156114685760006113c8612710611009600154876117ef90919063ffffffff16565b90506113da848263ffffffff61189816565b6005546008546040805163a9059cbb60e01b81526001600160a01b03928316600482015260248101869052905193955091169163a9059cbb916044808201926020929091908290030181600087803b15801561143557600080fd5b505af1158015611449573d6000803e3d6000fd5b505050506040513d602081101561145f57600080fd5b5061146b915050565b50815b6005546040805163a9059cbb60e01b81523360048201526024810184905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b1580156114bf57600080fd5b505af11580156114d3573d6000803e3d6000fd5b505050506040513d60208110156114e957600080fd5b50506003546114fe908463ffffffff61189816565b6003556040805184815260208101839052815133927fed7a144fad14804d5c249145e3e0e2b63a9eb455b76aee5bc92d711e9bba3e4a928290030190a2505050565b6008546001600160a01b03163314611595576040805162461bcd60e51b815260206004820152601360248201527229aa20a124a624ad22a91d27a7262cafa3a7ab60691b604482015290519081900360640190fd5b6007546040805163500128e360e11b815290516000926001600160a01b03169163a00251c691600480830192602092919082900301818787803b1580156115db57600080fd5b505af11580156115ef573d6000803e3d6000fd5b505050506040513d602081101561160557600080fd5b505160075460408051638ca1799560e01b81526004810184905290519293506001600160a01b0390911691638ca179959160248082019260009290919082900301818387803b15801561165757600080fd5b505af115801561166b573d6000803e3d6000fd5b5050600780546001600160a01b0319169055505050565b600554604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156116cd57600080fd5b505afa1580156116e1573d6000803e3d6000fd5b505050506040513d60208110156116f757600080fd5b50516007549091506001600160a01b031615611791576007546040805163500128e360e11b8152905161178e926001600160a01b03169163a00251c69160048083019260209291908290030181600087803b15801561175557600080fd5b505af1158015611769573d6000803e3d6000fd5b505050506040513d602081101561177f57600080fd5b5051829063ffffffff61179416565b90505b90565b6000828201838110156117e6576040805162461bcd60e51b8152602060048201526015602482015274534146454d4154483a4144445f4f564552464c4f5760581b604482015290519081900360640190fd5b90505b92915050565b6000826117fe575060006117e9565b8282028284828161180b57fe5b04146117e6576040805162461bcd60e51b8152602060048201526015602482015274534146454d4154483a4d554c5f4f564552464c4f5760581b604482015290519081900360640190fd5b60006117e683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506118d3565b60006117e6838360405180604001604052806016815260200175534146454d4154483a5355425f554e444552464c4f5760501b815250611975565b6000818361195f5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561192457818101518382015260200161190c565b50505050905090810190601f1680156119515780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161196b57fe5b0495945050505050565b600081848411156119c75760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561192457818101518382015260200161190c565b50505090039056fea265627a7a723158206aefd2811ac8b8e4165e6d1ffee51563eba5cbfc37e8a16d880401f645f2313764736f6c63430005100032

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

00000000000000000000000003b471d24cec15829fa602d38b046b4f2e8cdaf00000000000000000000000006b175474e89094c44da98b954eedeac495271d0f0000000000000000000000001dd1fb688200be97d312399ece57cda7fdaa5aab000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000d3c21bcecceda1000000

-----Decoded View---------------
Arg [0] : synth_ (address): 0x03b471D24cEC15829FA602D38b046B4F2e8cdAF0
Arg [1] : reserve_ (address): 0x6B175474E89094C44Da98b954EedeAC495271d0F
Arg [2] : gov_ (address): 0x1DD1FB688200BE97d312399ECe57CDA7FDAa5aAb
Arg [3] : buyFee_ (uint256): 10
Arg [4] : sellFee_ (uint256): 10
Arg [5] : supplyCap_ (uint256): 1000000000000000000000000

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 00000000000000000000000003b471d24cec15829fa602d38b046b4f2e8cdaf0
Arg [1] : 0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f
Arg [2] : 0000000000000000000000001dd1fb688200be97d312399ece57cda7fdaa5aab
Arg [3] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [4] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [5] : 00000000000000000000000000000000000000000000d3c21bcecceda1000000


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  ]

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.