Contract 0x652511eBd2C77AA00BC3F0b910928418708aD2Ee 2

 
Txn Hash
Method
Block
From
To
Value
0xb55ba32399462003a4176da1ada5d0b1916d496d730f3f2c5a628e7270d9baa3Swap Tokens96195482020-03-06 19:23:43892 days 6 hrs ago0x894897d125b79f93f9258f3a5e8151884b5bec7c IN  0x652511ebd2c77aa00bc3f0b910928418708ad2ee0 Ether0.‍000238631
0xb06a8095a70a9741b006be41d9673ae3f9cab16058c43bfd0800d4da756550b0Remove Liquidity96190082020-03-06 17:24:52892 days 8 hrs ago0x053b7f29bc6d95182f0e54efc86549938878647e IN  0x652511ebd2c77aa00bc3f0b910928418708ad2ee0 Ether0.‍000217251.‍25611615
0xdde70732ea16583d1e402bde0950f79606f6e07176676f92f3f39c52c2604c57Swap Tokens93920782020-01-31 20:03:25927 days 5 hrs ago0x1cf1587a03b2d404ecbb3ad59c3c708b4ea0ec3c IN  0x652511ebd2c77aa00bc3f0b910928418708ad2ee0 Ether0.‍000334041.‍5
0xcf61417399d5d87271e80700b593fd69cb6d3e90e0f1d908b085189e5f9cdb24Update Price Ora...90716832019-12-08 12:14:25981 days 13 hrs ago0x053b7f29bc6d95182f0e54efc86549938878647e IN  0x652511ebd2c77aa00bc3f0b910928418708ad2ee0 Ether0.‍000140274.‍8469314
0x6b9d6a98c15137a33bdae19113375cdb7dbc610425a00502125efdf7631ccc0fUpdate Input Tok...90716162019-12-08 11:54:05981 days 14 hrs ago0x053b7f29bc6d95182f0e54efc86549938878647e IN  0x652511ebd2c77aa00bc3f0b910928418708ad2ee0 Ether0.‍000149356.‍52996389
0x3fec780e460fdca60f8a4b76796bd516067b41d9f6f60a8037f0b645263c133eUpdate Price Ora...90715892019-12-08 11:46:57981 days 14 hrs ago0x053b7f29bc6d95182f0e54efc86549938878647e IN  0x652511ebd2c77aa00bc3f0b910928418708ad2ee0 Ether0.‍000148015.‍11407942
0x9518cdd57bd3eea8debe55d7a19578935471578cbf2406a68de21eeffd8fe874Update Price Ora...90052702019-11-26 16:59:55993 days 9 hrs ago0x053b7f29bc6d95182f0e54efc86549938878647e IN  0x652511ebd2c77aa00bc3f0b910928418708ad2ee0 Ether0.‍0003550812
0xf91ca5237f7ee06ad130b72e0b6c41a3213ff7a9df30520de4477852dfd7f375Update Input Tok...90052492019-11-26 16:53:05993 days 9 hrs ago0x053b7f29bc6d95182f0e54efc86549938878647e IN  0x652511ebd2c77aa00bc3f0b910928418708ad2ee0 Ether0.‍0005513112
0x335faf503b89da8e053c184df8cddff80b78d7254d5f89cfc12ef54dcde5f456Update Price Ora...90051502019-11-26 16:29:21993 days 9 hrs ago0x053b7f29bc6d95182f0e54efc86549938878647e IN  0x652511ebd2c77aa00bc3f0b910928418708ad2ee0 Ether0.‍0003550812
0xf44a9b909e8292fcd44d88a33e8c3205ffa050d08d227881ccfbea178b41dacaUpdate Price Ora...90051282019-11-26 16:24:08993 days 9 hrs ago0x053b7f29bc6d95182f0e54efc86549938878647e IN  0x652511ebd2c77aa00bc3f0b910928418708ad2ee0 Ether0.‍0003562212.‍03863167
0xb3de9fc75f55e544509caac0be8abc3285374e3ae3dc70c9a3dcab4102b03666Update Output To...90051152019-11-26 16:21:15993 days 9 hrs ago0x053b7f29bc6d95182f0e54efc86549938878647e IN  0x652511ebd2c77aa00bc3f0b910928418708ad2ee0 Ether0.‍0005610712.‍20464304
0xed6372c97ce19590f234245931179dd2256d15696aa00527fdb9b0f6fd90a1b9Remove Liquidity89969242019-11-25 6:11:16994 days 19 hrs ago0x053b7f29bc6d95182f0e54efc86549938878647e IN  0x652511ebd2c77aa00bc3f0b910928418708ad2ee0 Ether0.‍0027422722
0x83db274c0ec4a56051b3cb31f6b411ead5933acbfe334763b9fde250918a7a80Remove Liquidity89969162019-11-25 6:10:02994 days 19 hrs ago0x053b7f29bc6d95182f0e54efc86549938878647e IN  0x652511ebd2c77aa00bc3f0b910928418708ad2ee0 Ether0.‍0032482722
0xe98b905f4f540dd5b217a0876fca1399eb733984b0a2206aecec517361f6b42cRemove Liquidity89752452019-11-21 15:54:01998 days 10 hrs ago0x9a7f411a683d0a281a45994281c0cd387016e527 IN  0x652511ebd2c77aa00bc3f0b910928418708ad2ee0 Ether0.‍0014077311
0x10187089cca4d8da828eb7db8ec932bba677e5dfc860a2f28a5d83b04acbf693Remove Liquidity89721352019-11-21 3:28:59998 days 22 hrs ago0xc39f1316ff2cabc45ccb52f236e56947354845fa IN  0x652511ebd2c77aa00bc3f0b910928418708ad2ee0 Ether0.‍001211210
0x80cb7dd9058eebdac2da556aa5f33c16e71a7fbb206b378a655da73aba580f6cAdd Liquidity89721152019-11-21 3:23:49998 days 22 hrs ago0xc39f1316ff2cabc45ccb52f236e56947354845fa IN  0x652511ebd2c77aa00bc3f0b910928418708ad2ee0 Ether0.‍001461610
0xdd2e235be8ddccef5c2d88b29349af29a17145be25843ebf864e1fa3a8f650eeRemove Liquidity89709752019-11-20 22:57:21999 days 3 hrs ago0x9a7f411a683d0a281a45994281c0cd387016e527 IN  0x652511ebd2c77aa00bc3f0b910928418708ad2ee0 Ether0.‍000149211
0xa98e3ba8c7490ff1760aa2df00f7b28228487f0921b6d1de75f8cc2f85140cbdSwap Tokens89628642019-11-19 14:20:501000 days 11 hrs ago0x9317e25590aaa62be015aff026702f3b960131a7 IN  0x652511ebd2c77aa00bc3f0b910928418708ad2ee0 Ether0.‍0016658811
0xac1dcc7800c340f8a66a37f849a705fdaf9f0c6cc8c92f99bf7ac35660f4a8d5Swap Tokens89624282019-11-19 12:31:021000 days 13 hrs ago0x053b7f29bc6d95182f0e54efc86549938878647e IN  0x652511ebd2c77aa00bc3f0b910928418708ad2ee0 Ether0.‍00207110.‍9
0x5c87087ff52877c9b4e962a40574b6fecc561d95242a169254395028c9cc66aaUpdate Price Ora...89623682019-11-19 12:15:281000 days 13 hrs ago0x053b7f29bc6d95182f0e54efc86549938878647e IN  0x652511ebd2c77aa00bc3f0b910928418708ad2ee0 Ether0.‍0003225310.‍9
0x8b4c5d734fbeac396d2c7bf8af64c1b2f1f77d48a44fc2d28482c9ad9183ab64Update Output To...89623312019-11-19 12:05:261000 days 13 hrs ago0x053b7f29bc6d95182f0e54efc86549938878647e IN  0x652511ebd2c77aa00bc3f0b910928418708ad2ee0 Ether0.‍0004975410.‍9
0xa3e15fbdb3f3c5ce1e7100f3d6bd25dcb733e54722eb731c8a13251ac29f850bUpdate Input Tok...89623252019-11-19 12:04:431000 days 13 hrs ago0x053b7f29bc6d95182f0e54efc86549938878647e IN  0x652511ebd2c77aa00bc3f0b910928418708ad2ee0 Ether0.‍0004972210.‍9
0x12d7a08d2bb0c937869e97cee62b17b78f18b2e83ef4ba7187d351cc2494b091Update Output To...89623142019-11-19 12:02:191000 days 13 hrs ago0x053b7f29bc6d95182f0e54efc86549938878647e IN  0x652511ebd2c77aa00bc3f0b910928418708ad2ee0 Ether0.‍0001727310.‍9
0x302a1da489be0ca063b151aaa442e75e9becd4fdf84b5800b71eec40e2fbcef8Update Input Tok...89623132019-11-19 12:02:061000 days 14 hrs ago0x053b7f29bc6d95182f0e54efc86549938878647e IN  0x652511ebd2c77aa00bc3f0b910928418708ad2ee0 Ether0.‍0001724110.‍9
0x31a50a4fa022ded7567d845bcbe86f51cab46a33fb10d53985c7619d8f606e33Swap Tokens89622922019-11-19 11:58:461000 days 14 hrs ago0x053b7f29bc6d95182f0e54efc86549938878647e IN  0x652511ebd2c77aa00bc3f0b910928418708ad2ee0 Ether0.‍0019112210.‍9
[ Download CSV Export 
View more zero value Internal Transactions in Advanced View mode
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Vyper_contract

Compiler Version
vyper:0.1.0b11

Optimization Enabled:
N/A

Other Settings:
None license

Contract Source Code (Vyper language format)

contract ERC20():
    def transfer(_to: address, _value: uint256) -> bool: modifying
    def transferFrom(_from: address, _to: address, _value: uint256) -> bool: modifying
    def balanceOf(_owner: address) -> uint256: constant
    def allowance(_owner: address, _spender: address) -> uint256: constant
    def decimals() -> uint256: constant

contract PriceOracle():
    def poolSize(contract_address: address) -> uint256: constant
    def normalized_token_prices(token_address: address) -> uint256: constant

TOKEN_PRICE_MULTIPLIER: constant(uint256) = 100000000
FEE_MULTIPLIER: constant(uint256) = 100000
EXCHANGE_RATE_MULTIPLIER: constant(uint256) = 10000000000000000000000 #10**22

# ERC20 events
Transfer: event({_from: indexed(address), _to: indexed(address), _value: uint256})
Approval: event({_owner: indexed(address), _spender: indexed(address), _value: uint256})

OwnershipTransferred: event({previous_owner: indexed(address), new_owner: indexed(address)})
LiquidityAdded: event({provider: indexed(address), amount: indexed(uint256)})
LiquidityRemoved: event({provider: indexed(address), amount: indexed(uint256)})
Trade: event({input_token: indexed(address), output_token: indexed(address), input_amount: indexed(uint256)})
PermissionUpdated: event({name: indexed(string[32]), value: indexed(bool)})
FeeUpdated: event({name: indexed(string[32]), value: indexed(decimal)})
PriceOracleAddressUpdated: event({new_address: indexed(address)})

name: public(string[32])                                 # Stablecoinswap
symbol: public(string[6])                                # STL
owner: public(address)                                   # contract owner
decimals: public(uint256)                                # 18
totalSupply: public(uint256)                             # total number of contract tokens in existence
balanceOf: public(map(address, uint256))                 # balance of an address
allowance: public(map(address, map(address, uint256)))   # allowance of one address on another
inputTokens: public(map(address, bool))                  # addresses of the ERC20 tokens allowed to transfer into this contract
outputTokens: public(map(address, bool))                 # addresses of the ERC20 tokens allowed to transfer out of this contract
permissions: public(map(string[32], bool))               # pause / resume contract functions
feesInt: map(string[32], uint256)                        # trade / pool fees multiplied by FEE_MULTIPLIER
priceOracleAddress: public(address)                      # address of price oracle

@public
def __init__(token_addresses: address[3], price_oracle_addr: address):
    assert price_oracle_addr != ZERO_ADDRESS

    self.owner = msg.sender
    self.name = "Stablecoinswap"
    self.symbol = "STL"
    self.decimals = 18
    self.permissions["tradingAllowed"] = True
    self.permissions["liquidityAddingAllowed"] = True

    for i in range(3):
        assert token_addresses[i] != ZERO_ADDRESS
        self.inputTokens[token_addresses[i]] = True
        self.outputTokens[token_addresses[i]] = True

    self.feesInt['tradeFee'] = 200
    self.feesInt['ownerFee'] = 100

    self.priceOracleAddress = price_oracle_addr

@private
@constant
def tokenPrice(token_address: address) -> uint256:
    token_price: uint256 = PriceOracle(self.priceOracleAddress).normalized_token_prices(token_address)
    assert token_price > 0

    return token_price

# Deposit erc20 token
@public
@nonreentrant('lock')
def addLiquidity(token_address: address, erc20_token_amount: uint256, deadline: timestamp) -> uint256:
    assert self.inputTokens[token_address]
    assert deadline > block.timestamp and erc20_token_amount > 0
    assert self.permissions["liquidityAddingAllowed"]

    token_price: uint256 = self.tokenPrice(token_address)
    # It's better to divide at the very end for a higher precision
    new_liquidity: uint256 = token_price * erc20_token_amount / TOKEN_PRICE_MULTIPLIER
    if self.totalSupply > 0:
        new_liquidity = new_liquidity * self.totalSupply / PriceOracle(self.priceOracleAddress).poolSize(self)
    else:
        assert new_liquidity >= 1000000000

    self.balanceOf[msg.sender] += new_liquidity
    self.totalSupply += new_liquidity

    # Can't assert the result directly: https://github.com/ethereum/vyper/issues/1468
    transfer_from_result: bool = ERC20(token_address).transferFrom(msg.sender, self, erc20_token_amount)
    assert transfer_from_result

    log.LiquidityAdded(msg.sender, new_liquidity)

    return new_liquidity

# Withdraw erc20 token
@public
@nonreentrant('lock')
def removeLiquidity(token_address: address, stableswap_token_amount: uint256, erc20_min_output_amount: uint256, deadline: timestamp) -> uint256:
    assert self.outputTokens[token_address]
    assert stableswap_token_amount > 0 and deadline > block.timestamp
    assert self.balanceOf[msg.sender] >= stableswap_token_amount
    assert self.totalSupply > 0

    token_price: uint256 = self.tokenPrice(token_address)
    pool_size: uint256 = PriceOracle(self.priceOracleAddress).poolSize(self)
    # erc20_token_amount = stableswap_token_amount * pool_size / totalSupply / token_price * TOKEN_PRICE_MULTIPLIER
    # It's better to divide at the very end for a higher precision
    erc20_token_amount: uint256 = stableswap_token_amount * pool_size / self.totalSupply

    ownerFee: uint256 = 0

    if msg.sender != self.owner:
        ownerFee = stableswap_token_amount * self.feesInt['ownerFee'] / FEE_MULTIPLIER
        multiplier_after_fees: uint256 = FEE_MULTIPLIER - self.feesInt['ownerFee'] - self.feesInt['tradeFee']
        erc20_token_amount = erc20_token_amount * multiplier_after_fees / FEE_MULTIPLIER

    erc20_token_amount = erc20_token_amount * TOKEN_PRICE_MULTIPLIER / token_price

    self.balanceOf[msg.sender] -= stableswap_token_amount
    self.balanceOf[self.owner] += ownerFee
    self.totalSupply -= stableswap_token_amount - ownerFee

    assert erc20_token_amount >= erc20_min_output_amount

    # Can't assert the result directly: https://github.com/ethereum/vyper/issues/1468
    transfer_result: bool = ERC20(token_address).transfer(msg.sender, erc20_token_amount)
    assert transfer_result

    log.LiquidityRemoved(msg.sender, stableswap_token_amount)

    return erc20_token_amount

# Note that due to rounding, the fees could be slightly higher for the tokens with smaller decimal precision.
@public
@constant
def tokenExchangeRateAfterFees(input_token_address: address, output_token_address: address) -> uint256:
    input_token_price: uint256 = self.tokenPrice(input_token_address)
    output_token_price: uint256 = self.tokenPrice(output_token_address)

    multiplier_after_fees: uint256 = FEE_MULTIPLIER - self.feesInt['ownerFee'] - self.feesInt['tradeFee']
    exchange_rate: uint256 = EXCHANGE_RATE_MULTIPLIER * input_token_price * multiplier_after_fees / FEE_MULTIPLIER / output_token_price

    return exchange_rate

@public
@constant
def tokenOutputAmountAfterFees(input_token_amount: uint256, input_token_address: address, output_token_address: address) -> uint256:
    output_token_amount: uint256 = input_token_amount * self.tokenExchangeRateAfterFees(input_token_address, output_token_address) / EXCHANGE_RATE_MULTIPLIER
    return output_token_amount

# Trade one erc20 token for another
@public
@nonreentrant('lock')
def swapTokens(input_token: address, output_token: address, erc20_input_amount: uint256, erc20_min_output_amount: uint256, deadline: timestamp) -> uint256:
    assert self.inputTokens[input_token] and self.outputTokens[output_token]
    assert erc20_input_amount > 0 and erc20_min_output_amount > 0
    assert deadline > block.timestamp
    assert self.permissions["tradingAllowed"]

    input_token_price: uint256 = self.tokenPrice(input_token)
    # input_usd_value is a value of input multiplied by TOKEN_PRICE_MULTIPLIER
    input_usd_value: uint256 = erc20_input_amount * input_token_price
    tradeFee: uint256 = input_usd_value * self.feesInt['tradeFee'] / FEE_MULTIPLIER / TOKEN_PRICE_MULTIPLIER
    ownerFee: uint256 = input_usd_value * self.feesInt['ownerFee'] / FEE_MULTIPLIER / TOKEN_PRICE_MULTIPLIER

    pool_size_after_swap: uint256 = PriceOracle(self.priceOracleAddress).poolSize(self) + tradeFee
    new_owner_shares: uint256 = self.totalSupply * ownerFee / pool_size_after_swap

    erc20_output_amount: uint256 = self.tokenOutputAmountAfterFees(erc20_input_amount, input_token, output_token)
    assert erc20_output_amount >= erc20_min_output_amount

    self.balanceOf[self.owner] += new_owner_shares
    self.totalSupply += new_owner_shares

    # Can't assert the result directly: https://github.com/ethereum/vyper/issues/1468
    transfer_from_result: bool = ERC20(input_token).transferFrom(msg.sender, self, erc20_input_amount)
    assert transfer_from_result
    transfer_result: bool = ERC20(output_token).transfer(msg.sender, erc20_output_amount)
    assert transfer_result

    log.Trade(input_token, output_token, erc20_input_amount)

    return erc20_output_amount

@public
def updateInputToken(token_address: address, allowed: bool) -> bool:
    assert msg.sender == self.owner
    assert not self.inputTokens[token_address] == allowed
    assert ERC20(token_address).decimals() >= 2
    self.inputTokens[token_address] = allowed
    return True

@public
def updateOutputToken(token_address: address, allowed: bool) -> bool:
    assert msg.sender == self.owner
    assert not self.outputTokens[token_address] == allowed
    assert ERC20(token_address).decimals() >= 2
    self.outputTokens[token_address] = allowed
    return True

@public
def updatePermission(permission_name: string[32], value: bool) -> bool:
    assert msg.sender == self.owner
    self.permissions[permission_name] = value
    log.PermissionUpdated(permission_name, value)
    return True

# Return share of total liquidity belonging to the user
@public
@constant
def poolOwnership(user_address: address) -> decimal:
    user_balance: decimal = convert(self.balanceOf[user_address], decimal)
    total_liquidity: decimal = convert(self.totalSupply, decimal)
    share: decimal = user_balance / total_liquidity
    return share

@public
def transferOwnership(new_owner: address) -> bool:
    assert new_owner != ZERO_ADDRESS
    assert msg.sender == self.owner
    self.owner = new_owner
    log.OwnershipTransferred(self.owner, new_owner)
    return True

@public
def updateFee(fee_name: string[32], value: decimal) -> bool:
    assert msg.sender == self.owner
    self.feesInt[fee_name] = convert(floor(value * convert(FEE_MULTIPLIER, decimal)), uint256)
    log.FeeUpdated(fee_name, value)
    return True

@public
@constant
def fees(fee_name: string[32]) -> decimal:
    return convert(self.feesInt[fee_name], decimal) / convert(FEE_MULTIPLIER, decimal)

@public
def updatePriceOracleAddress(new_address: address) -> bool:
    assert msg.sender == self.owner
    self.priceOracleAddress = new_address
    log.PriceOracleAddressUpdated(new_address)
    return True

# ERC-20 functions

@public
def transfer(_to: address, _value: uint256) -> bool:
    self.balanceOf[msg.sender] -= _value
    self.balanceOf[_to] += _value
    log.Transfer(msg.sender, _to, _value)
    return True

@public
def transferFrom(_from: address, _to: address, _value: uint256) -> bool:
    self.balanceOf[_from] -= _value
    self.balanceOf[_to] += _value
    self.allowance[_from][msg.sender] -= _value
    log.Transfer(_from, _to, _value)
    return True

@public
def approve(_spender: address, _value: uint256) -> bool:
    self.allowance[msg.sender][_spender] = _value
    log.Approval(msg.sender, msg.sender, _value)
    return True

Contract Security Audit

Contract ABI

[{"name":"Transfer","inputs":[{"type":"address","name":"_from","indexed":true},{"type":"address","name":"_to","indexed":true},{"type":"uint256","name":"_value","indexed":false}],"anonymous":false,"type":"event"},{"name":"Approval","inputs":[{"type":"address","name":"_owner","indexed":true},{"type":"address","name":"_spender","indexed":true},{"type":"uint256","name":"_value","indexed":false}],"anonymous":false,"type":"event"},{"name":"OwnershipTransferred","inputs":[{"type":"address","name":"previous_owner","indexed":true},{"type":"address","name":"new_owner","indexed":true}],"anonymous":false,"type":"event"},{"name":"LiquidityAdded","inputs":[{"type":"address","name":"provider","indexed":true},{"type":"uint256","name":"amount","indexed":true}],"anonymous":false,"type":"event"},{"name":"LiquidityRemoved","inputs":[{"type":"address","name":"provider","indexed":true},{"type":"uint256","name":"amount","indexed":true}],"anonymous":false,"type":"event"},{"name":"Trade","inputs":[{"type":"address","name":"input_token","indexed":true},{"type":"address","name":"output_token","indexed":true},{"type":"uint256","name":"input_amount","indexed":true}],"anonymous":false,"type":"event"},{"name":"PermissionUpdated","inputs":[{"type":"string32","name":"name","indexed":true},{"type":"bool","name":"value","indexed":true}],"anonymous":false,"type":"event"},{"name":"FeeUpdated","inputs":[{"type":"string32","name":"name","indexed":true},{"type":"fixed168x10","name":"value","indexed":true}],"anonymous":false,"type":"event"},{"name":"PriceOracleAddressUpdated","inputs":[{"type":"address","name":"new_address","indexed":true}],"anonymous":false,"type":"event"},{"outputs":[],"inputs":[{"type":"address[3]","name":"token_addresses"},{"type":"address","name":"price_oracle_addr"}],"constant":false,"payable":false,"type":"constructor"},{"name":"addLiquidity","outputs":[{"type":"uint256","name":"out"}],"inputs":[{"type":"address","name":"token_address"},{"type":"uint256","name":"erc20_token_amount"},{"type":"uint256","unit":"sec","name":"deadline"}],"constant":false,"payable":false,"type":"function","gas":157451},{"name":"removeLiquidity","outputs":[{"type":"uint256","name":"out"}],"inputs":[{"type":"address","name":"token_address"},{"type":"uint256","name":"stableswap_token_amount"},{"type":"uint256","name":"erc20_min_output_amount"},{"type":"uint256","unit":"sec","name":"deadline"}],"constant":false,"payable":false,"type":"function","gas":198544},{"name":"tokenExchangeRateAfterFees","outputs":[{"type":"uint256","name":"out"}],"inputs":[{"type":"address","name":"input_token_address"},{"type":"address","name":"output_token_address"}],"constant":true,"payable":false,"type":"function","gas":9501},{"name":"tokenOutputAmountAfterFees","outputs":[{"type":"uint256","name":"out"}],"inputs":[{"type":"uint256","name":"input_token_amount"},{"type":"address","name":"input_token_address"},{"type":"address","name":"output_token_address"}],"constant":true,"payable":false,"type":"function","gas":15890},{"name":"swapTokens","outputs":[{"type":"uint256","name":"out"}],"inputs":[{"type":"address","name":"input_token"},{"type":"address","name":"output_token"},{"type":"uint256","name":"erc20_input_amount"},{"type":"uint256","name":"erc20_min_output_amount"},{"type":"uint256","unit":"sec","name":"deadline"}],"constant":false,"payable":false,"type":"function","gas":195199},{"name":"updateInputToken","outputs":[{"type":"bool","name":"out"}],"inputs":[{"type":"address","name":"token_address"},{"type":"bool","name":"allowed"}],"constant":false,"payable":false,"type":"function","gas":37622},{"name":"updateOutputToken","outputs":[{"type":"bool","name":"out"}],"inputs":[{"type":"address","name":"token_address"},{"type":"bool","name":"allowed"}],"constant":false,"payable":false,"type":"function","gas":37652},{"name":"updatePermission","outputs":[{"type":"bool","name":"out"}],"inputs":[{"type":"string","name":"permission_name"},{"type":"bool","name":"value"}],"constant":false,"payable":false,"type":"function","gas":37869},{"name":"poolOwnership","outputs":[{"type":"fixed168x10","name":"out"}],"inputs":[{"type":"address","name":"user_address"}],"constant":true,"payable":false,"type":"function","gas":1447},{"name":"transferOwnership","outputs":[{"type":"bool","name":"out"}],"inputs":[{"type":"address","name":"new_owner"}],"constant":false,"payable":false,"type":"function","gas":37769},{"name":"updateFee","outputs":[{"type":"bool","name":"out"}],"inputs":[{"type":"string","name":"fee_name"},{"type":"fixed168x10","name":"value"}],"constant":false,"payable":false,"type":"function","gas":37923},{"name":"fees","outputs":[{"type":"fixed168x10","name":"out"}],"inputs":[{"type":"string","name":"fee_name"}],"constant":true,"payable":false,"type":"function","gas":1421},{"name":"updatePriceOracleAddress","outputs":[{"type":"bool","name":"out"}],"inputs":[{"type":"address","name":"new_address"}],"constant":false,"payable":false,"type":"function","gas":37184},{"name":"transfer","outputs":[{"type":"bool","name":"out"}],"inputs":[{"type":"address","name":"_to"},{"type":"uint256","name":"_value"}],"constant":false,"payable":false,"type":"function","gas":74440},{"name":"transferFrom","outputs":[{"type":"bool","name":"out"}],"inputs":[{"type":"address","name":"_from"},{"type":"address","name":"_to"},{"type":"uint256","name":"_value"}],"constant":false,"payable":false,"type":"function","gas":110307},{"name":"approve","outputs":[{"type":"bool","name":"out"}],"inputs":[{"type":"address","name":"_spender"},{"type":"uint256","name":"_value"}],"constant":false,"payable":false,"type":"function","gas":38171},{"name":"name","outputs":[{"type":"string","name":"out"}],"inputs":[],"constant":true,"payable":false,"type":"function","gas":6822},{"name":"symbol","outputs":[{"type":"string","name":"out"}],"inputs":[],"constant":true,"payable":false,"type":"function","gas":2978},{"name":"owner","outputs":[{"type":"address","name":"out"}],"inputs":[],"constant":true,"payable":false,"type":"function","gas":1083},{"name":"decimals","outputs":[{"type":"uint256","name":"out"}],"inputs":[],"constant":true,"payable":false,"type":"function","gas":1113},{"name":"totalSupply","outputs":[{"type":"uint256","name":"out"}],"inputs":[],"constant":true,"payable":false,"type":"function","gas":1143},{"name":"balanceOf","outputs":[{"type":"uint256","name":"out"}],"inputs":[{"type":"address","name":"arg0"}],"constant":true,"payable":false,"type":"function","gas":1327},{"name":"allowance","outputs":[{"type":"uint256","name":"out"}],"inputs":[{"type":"address","name":"arg0"},{"type":"address","name":"arg1"}],"constant":true,"payable":false,"type":"function","gas":1511},{"name":"inputTokens","outputs":[{"type":"bool","name":"out"}],"inputs":[{"type":"address","name":"arg0"}],"constant":true,"payable":false,"type":"function","gas":1387},{"name":"outputTokens","outputs":[{"type":"bool","name":"out"}],"inputs":[{"type":"address","name":"arg0"}],"constant":true,"payable":false,"type":"function","gas":1417},{"name":"permissions","outputs":[{"type":"bool","name":"out"}],"inputs":[{"type":"string","name":"arg0"}],"constant":true,"payable":false,"type":"function","gas":1590},{"name":"priceOracleAddress","outputs":[{"type":"address","name":"out"}],"inputs":[],"constant":true,"payable":false,"type":"function","gas":1323}]

740100000000000000000000000000000000000000006020526f7fffffffffffffffffffffffffffffff6040527fffffffffffffffffffffffffffffffff8000000000000000000000000000000060605274012a05f1fffffffffffffffffffffffffdabf41c006080527ffffffffffffffffffffffffed5fa0e000000000000000000000000000000000060a052608061274d6101403934156100a157600080fd5b602061274d60c03960c05160205181106100ba57600080fd5b506020602061274d0160c03960c05160205181106100d757600080fd5b506020604061274d0160c03960c05160205181106100f457600080fd5b506020606061274d0160c03960c051602051811061011157600080fd5b5060006101a0511861012257600080fd5b33600255600e6101c0527f537461626c65636f696e737761700000000000000000000000000000000000006101e0526101c080600060c052602060c020602082510161012060006002818352015b82610120516020021115610183576101a5565b61012051602002850151610120518501555b8151600101808352811415610170575b5050505050506003610220527f53544c00000000000000000000000000000000000000000000000000000000006102405261022080600160c052602060c020602082510161012060006002818352015b826101205160200211156102085761022a565b61012051602002850151610120518501555b81516001018083528114156101f5575b505050505050601260035560016009600e610280527f74726164696e67416c6c6f7765640000000000000000000000000000000000006102a0526102805150610280516102a02060e05260c052604060c020556001600960166102e0527f6c6971756964697479416464696e67416c6c6f77656400000000000000000000610300526102e051506102e0516103002060e05260c052604060c0205561034060006003818352015b600061014061034051600381106102e757600080fd5b6020020151186102f657600080fd5b60016007610140610340516003811061030e57600080fd5b602002015160e05260c052604060c0205560016008610140610340516003811061033757600080fd5b602002015160e05260c052604060c020555b81516001018083528114156102d1575b505060c8600a6008610360527f7472616465466565000000000000000000000000000000000000000000000000610380526103605150610360516103802060e05260c052604060c020556064600a60086103c0527f6f776e65724665650000000000000000000000000000000000000000000000006103e0526103c051506103c0516103e02060e05260c052604060c020556101a051600b5561273556600035601c52740100000000000000000000000000000000000000006020526f7fffffffffffffffffffffffffffffff6040527fffffffffffffffffffffffffffffffff8000000000000000000000000000000060605274012a05f1fffffffffffffffffffffffffdabf41c006080527ffffffffffffffffffffffffed5fa0e000000000000000000000000000000000060a052600015610114575b6101605261014052600b543b6100b057600080fd5b600b5430186100be57600080fd5b6020610220602463f1bb10866101a052610140516101c0526101bc600b545afa6100e757600080fd5b60005061022051610180526000610180511161010257600080fd5b61018051600052600051610160515650005b6355776b77600051141561041e5762ffffff541561013157600080fd5b600162ffffff55341561014357600080fd5b600435602051811061015457600080fd5b50600760043560e05260c052604060c0205461016f57600080fd5b60006024351142604435111661018457600080fd5b60096016610140527f6c6971756964697479416464696e67416c6c6f77656400000000000000000000610160526101405150610140516101602060e05260c052604060c020546101d357600080fd5b6101405161016051610180516101a0516384ba3f696101e05260043561020052610200516006580161009b565b610260526101a052610180526101605261014052610260516101a0526305f5e10061022a57600080fd5b6305f5e1006101a0511515610240576000610263565b6024356101a0516024356101a05102041461025a57600080fd5b6024356101a051025b04610280526000600454111561030e57600b543b61028057600080fd5b600b54301861028e57600080fd5b6020610320602463fa75d1606102a052306102c0526102bc600b545afa6102b457600080fd5b6000506103205161034052610340516102cc57600080fd5b610340516102805115156102e1576000610304565b60045461028051600454610280510204146102fb57600080fd5b60045461028051025b0461028052610323565b633b9aca0061028051101561032257600080fd5b5b60053360e05260c052604060c020805461028051825401101561034557600080fd5b610280518154018155506004805461028051825401101561036557600080fd5b610280518154018155506004353b61037c57600080fd5b600435301861038a57600080fd5b602061044060646323b872dd61038052336103a052306103c0526024356103e05261039c60006004355af16103be57600080fd5b6000506104405161036052610360516103d657600080fd5b61028051337fc17cea59c2955cb181b03393209566960365771dbba9dc3d510180e7cb31208860006000a361028051600052600062ffffff5560206000f350600062ffffff55005b6393ca2f8a6000511415610a715762ffffff541561043b57600080fd5b600162ffffff55341561044d57600080fd5b600435602051811061045e57600080fd5b50600860043560e05260c052604060c0205461047957600080fd5b42606435116000602435111661048e57600080fd5b60243560053360e05260c052604060c0205410156104ab57600080fd5b6000600454116104ba57600080fd5b610140516384ba3f69610180526004356101a0526101a0516006580161009b565b61020052610140526102005161014052600b543b6104f857600080fd5b600b54301861050657600080fd5b60206102c0602463fa75d16061024052306102605261025c600b545afa61052c57600080fd5b6000506102c0516102205260045461054357600080fd5b6004546024351515610556576000610579565b610220516024356102205160243502041461057057600080fd5b61022051602435025b046102e0526000610300526002543318156108c757620186a061059b57600080fd5b620186a060243515156105af576000610698565b600a6008610320527f6f776e6572466565000000000000000000000000000000000000000000000000610340526103205150610320516103402060e05260c052604060c02054602435600a6008610320527f6f776e6572466565000000000000000000000000000000000000000000000000610340526103205150610320516103402060e05260c052604060c0205460243502041461064d57600080fd5b600a6008610320527f6f776e6572466565000000000000000000000000000000000000000000000000610340526103205150610320516103402060e05260c052604060c02054602435025b0461030052600a6008610400527f7472616465466565000000000000000000000000000000000000000000000000610420526104005150610400516104202060e05260c052604060c02054600a60086103a0527f6f776e65724665650000000000000000000000000000000000000000000000006103c0526103a051506103a0516103c02060e05260c052604060c02054620186a0101561073857600080fd5b600a60086103a0527f6f776e65724665650000000000000000000000000000000000000000000000006103c0526103a051506103a0516103c02060e05260c052604060c02054620186a003101561078e57600080fd5b600a6008610400527f7472616465466565000000000000000000000000000000000000000000000000610420526104005150610400516104202060e05260c052604060c02054600a60086103a0527f6f776e65724665650000000000000000000000000000000000000000000000006103c0526103a051506103a0516103c02060e05260c052604060c02054620186a0101561082957600080fd5b600a60086103a0527f6f776e65724665650000000000000000000000000000000000000000000000006103c0526103a051506103a0516103c02060e05260c052604060c02054620186a0030361038052620186a061088657600080fd5b620186a06102e051151561089b5760006108c1565b610380516102e051610380516102e0510204146108b757600080fd5b610380516102e051025b046102e0525b610140516108d457600080fd5b610140516102e05115156108e9576000610912565b6305f5e1006102e0516305f5e1006102e05102041461090757600080fd5b6305f5e1006102e051025b046102e05260053360e05260c052604060c0206024358154101561093557600080fd5b602435815403815550600560025460e05260c052604060c020805461030051825401101561096257600080fd5b61030051815401815550600461030051602435101561098057600080fd5b61030051602435038154101561099557600080fd5b6103005160243510156109a757600080fd5b61030051602435038154038155506044356102e05110156109c757600080fd5b6004353b6109d457600080fd5b60043530186109e257600080fd5b6020610520604463a9059cbb61048052336104a0526102e0516104c05261049c60006004355af1610a1257600080fd5b600050610520516104605261046051610a2a57600080fd5b602435337fc2c3f06e49b9f15e7b4af9055e183b0d73362e033ad82a07dec9bf984017171960006000a36102e051600052600062ffffff5560206000f350600062ffffff55005b6391b26ae06000511415610ece573415610a8a57600080fd5b6004356020518110610a9b57600080fd5b506024356020518110610aad57600080fd5b50610140516384ba3f69610180526004356101a0526101a0516006580161009b565b610200526101405261020051610140526101405161016051610180516101a0516101c0516101e05161020051610220516384ba3f696102605260243561028052610280516006580161009b565b6102e05261022052610200526101e0526101c0526101a0526101805261016052610140526102e05161022052600a6008610380527f74726164654665650000000000000000000000000000000000000000000000006103a0526103805150610380516103a02060e05260c052604060c02054600a6008610320527f6f776e6572466565000000000000000000000000000000000000000000000000610340526103205150610320516103402060e05260c052604060c02054620186a01015610be357600080fd5b600a6008610320527f6f776e6572466565000000000000000000000000000000000000000000000000610340526103205150610320516103402060e05260c052604060c02054620186a0031015610c3957600080fd5b600a6008610380527f74726164654665650000000000000000000000000000000000000000000000006103a0526103805150610380516103a02060e05260c052604060c02054600a6008610320527f6f776e6572466565000000000000000000000000000000000000000000000000610340526103205150610320516103402060e05260c052604060c02054620186a01015610cd457600080fd5b600a6008610320527f6f776e6572466565000000000000000000000000000000000000000000000000610340526103205150610320516103402060e05260c052604060c02054620186a003036103005261022051610d3157600080fd5b61022051620186a0610d4257600080fd5b620186a069021e19e0c9bab24000001515610d5e576000610d99565b6101405169021e19e0c9bab24000006101405169021e19e0c9bab2400000020414610d8857600080fd5b6101405169021e19e0c9bab2400000025b1515610da6576000610eb9565b6103005169021e19e0c9bab24000001515610dc2576000610dfd565b6101405169021e19e0c9bab24000006101405169021e19e0c9bab2400000020414610dec57600080fd5b6101405169021e19e0c9bab2400000025b6103005169021e19e0c9bab24000001515610e19576000610e54565b6101405169021e19e0c9bab24000006101405169021e19e0c9bab2400000020414610e4357600080fd5b6101405169021e19e0c9bab2400000025b020414610e6057600080fd5b6103005169021e19e0c9bab24000001515610e7c576000610eb7565b6101405169021e19e0c9bab24000006101405169021e19e0c9bab2400000020414610ea657600080fd5b6101405169021e19e0c9bab2400000025b025b04046103e0526103e05160005260206000f350005b63126603b56000511415610fa8573415610ee757600080fd5b6024356020518110610ef857600080fd5b506044356020518110610f0a57600080fd5b5069021e19e0c9bab2400000610f1f57600080fd5b69021e19e0c9bab2400000602061020060446391b26ae061016052602435610180526044356101a05261017c6000305af1610f5957600080fd5b61020051610220526004351515610f71576000610f94565b6102205160043561022051600435020414610f8b57600080fd5b61022051600435025b04610140526101405160005260206000f350005b6343d91bf160005114156115d65762ffffff5415610fc557600080fd5b600162ffffff553415610fd757600080fd5b6004356020518110610fe857600080fd5b506024356020518110610ffa57600080fd5b50600860243560e05260c052604060c02054600760043560e05260c052604060c020541661102757600080fd5b6000606435116000604435111661103d57600080fd5b426084351161104b57600080fd5b6009600e610140527f74726164696e67416c6c6f776564000000000000000000000000000000000000610160526101405150610140516101602060e05260c052604060c0205461109a57600080fd5b6101405161016051610180516101a0516384ba3f696101e05260043561020052610200516006580161009b565b610260526101a052610180526101605261014052610260516101a05260443515156110f3576000611116565b6101a0516044356101a05160443502041461110d57600080fd5b6101a051604435025b610280526305f5e10061112857600080fd5b6305f5e100620186a061113a57600080fd5b620186a061028051151561114f57600061123b565b600a60086102c0527f74726164654665650000000000000000000000000000000000000000000000006102e0526102c051506102c0516102e02060e05260c052604060c0205461028051600a60086102c0527f74726164654665650000000000000000000000000000000000000000000000006102e0526102c051506102c0516102e02060e05260c052604060c02054610280510204146111ef57600080fd5b600a60086102c0527f74726164654665650000000000000000000000000000000000000000000000006102e0526102c051506102c0516102e02060e05260c052604060c0205461028051025b04046102a0526305f5e10061124f57600080fd5b6305f5e100620186a061126157600080fd5b620186a0610280511515611276576000611362565b600a6008610340527f6f776e6572466565000000000000000000000000000000000000000000000000610360526103405150610340516103602060e05260c052604060c0205461028051600a6008610340527f6f776e6572466565000000000000000000000000000000000000000000000000610360526103405150610340516103602060e05260c052604060c020546102805102041461131657600080fd5b600a6008610340527f6f776e6572466565000000000000000000000000000000000000000000000000610360526103405150610340516103602060e05260c052604060c0205461028051025b040461032052600b543b61137557600080fd5b600b54301861138357600080fd5b6020610440602463fa75d1606103c052306103e0526103dc600b545afa6113a957600080fd5b6000506104405161046052610460516102a051610460510110156113cc57600080fd5b6102a05161046051016103a0526103a0516113e657600080fd5b6103a05160045415156113fa57600061141d565b610320516004546103205160045402041461141457600080fd5b61032051600454025b04610480526020610580606463126603b56104c0526044356104e05260043561050052602435610520526104dc6000305af161145857600080fd5b610580516104a0526064356104a051101561147257600080fd5b600560025460e05260c052604060c020805461048051825401101561149657600080fd5b61048051815401815550600480546104805182540110156114b657600080fd5b610480518154018155506004353b6114cd57600080fd5b60043530186114db57600080fd5b602061068060646323b872dd6105c052336105e0523061060052604435610620526105dc60006004355af161150f57600080fd5b600050610680516105a0526105a05161152757600080fd5b6024353b61153457600080fd5b602435301861154257600080fd5b6020610760604463a9059cbb6106c052336106e0526104a051610700526106dc60006024355af161157257600080fd5b600050610760516106a0526106a05161158a57600080fd5b6044356024356004357f0d49f50d6dd629f4e4070731edb0abd680823ab1cbd43d89590522da4b5b32e760006000a46104a051600052600062ffffff5560206000f350600062ffffff55005b6323d7d1a860005114156116b05734156115ef57600080fd5b600435602051811061160057600080fd5b506024356002811061161157600080fd5b50600254331461162057600080fd5b602435600760043560e05260c052604060c02054141561163f57600080fd5b60026004353b61164e57600080fd5b600435301861165c57600080fd5b60206101a0600463313ce5676101405261015c6004355afa61167d57600080fd5b6000506101a051101561168f57600080fd5b602435600760043560e05260c052604060c02055600160005260206000f350005b6344dbd334600051141561178a5734156116c957600080fd5b60043560205181106116da57600080fd5b50602435600281106116eb57600080fd5b5060025433146116fa57600080fd5b602435600860043560e05260c052604060c02054141561171957600080fd5b60026004353b61172857600080fd5b600435301861173657600080fd5b60206101a0600463313ce5676101405261015c6004355afa61175757600080fd5b6000506101a051101561176957600080fd5b602435600860043560e05260c052604060c02055600160005260206000f350005b63903a1001600051141561186c5734156117a357600080fd5b60406004356004016101403760206004356004013511156117c357600080fd5b602435600281106117d357600080fd5b5060025433146117e257600080fd5b6024356009610140516101602060e05260c052604060c0205560243561014080602001516000825180602090131561181957600080fd5b809190121561182757600080fd5b8061014051036101000a82049050905090507f22b59c94b6ec143f205f4ac5d8177280de0eab514e8d857330a1af17343e97bd60006000a3600160005260206000f350005b6380a0628b600051141561193357341561188557600080fd5b600435602051811061189657600080fd5b506402540be400600560043560e05260c052604060c02054026080518111156118be57600080fd5b610140526402540be400600454026080518111156118db57600080fd5b6101605260a0516101405161016051806118f457600080fd5b806402540be400830205905090508060805190131561191257600080fd5b809190121561192057600080fd5b610180526101805160005260206000f350005b63f2fde38b60005114156119ba57341561194c57600080fd5b600435602051811061195d57600080fd5b5060006004351861196d57600080fd5b600254331461197b57600080fd5b6004356002556004356002547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060006000a3600160005260206000f350005b63993f4a206000511415611bbb5734156119d357600080fd5b60406004356004016101403760206004356004013511156119f357600080fd5b6002543314611a0157600080fd5b600066038d7ea4c680006101a05260a0516101a0516024358181028115838383051417611a2d57600080fd5b6402540be400810590509050905080608051901315611a4b57600080fd5b8091901215611a5957600080fd5b1215611ac8576402540be4006402540be3ff66038d7ea4c680006101a05260a0516101a0516024358181028115838383051417611a9557600080fd5b6402540be400810590509050905080608051901315611ab357600080fd5b8091901215611ac157600080fd5b0305611b26565b6402540be40066038d7ea4c680006101a05260a0516101a0516024358181028115838383051417611af857600080fd5b6402540be400810590509050905080608051901315611b1657600080fd5b8091901215611b2457600080fd5b055b6000811215611b3457600080fd5b600a610140516101602060e05260c052604060c02055602435610140806020015160008251806020901315611b6857600080fd5b8091901215611b7657600080fd5b8061014051036101000a82049050905090507fd8dd23b660d1a2cd022ce86c6122d03c591f721b3c2af378ecb404c0b605ddc760006000a3600160005260206000f350005b63e005cbbf6000511415611c7c573415611bd457600080fd5b6040600435600401610140376020600435600401351115611bf457600080fd5b6402540be400600a610140516101602060e05260c052604060c0205402608051811115611c2057600080fd5b6101a05266038d7ea4c680006101c05260a0516101a0516101c05180611c4557600080fd5b806402540be4008302059050905080608051901315611c6357600080fd5b8091901215611c7157600080fd5b60005260206000f350005b6386d1e02b6000511415611cf1573415611c9557600080fd5b6004356020518110611ca657600080fd5b506002543314611cb557600080fd5b600435600b556004357f12ad2958c2383ce31dd51da097e673d81de88c202731500406f3afc70a8cf17060006000a2600160005260206000f350005b63a9059cbb6000511415611dae573415611d0a57600080fd5b6004356020518110611d1b57600080fd5b5060053360e05260c052604060c02060243581541015611d3a57600080fd5b602435815403815550600560043560e05260c052604060c02080546024358254011015611d6657600080fd5b60243581540181555060243561014052600435337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6020610140a3600160005260206000f350005b6323b872dd6000511415611eb6573415611dc757600080fd5b6004356020518110611dd857600080fd5b506024356020518110611dea57600080fd5b50600560043560e05260c052604060c02060443581541015611e0b57600080fd5b604435815403815550600560243560e05260c052604060c02080546044358254011015611e3757600080fd5b604435815401815550600660043560e05260c052604060c0203360e05260c052604060c02060443581541015611e6c57600080fd5b604435815403815550604435610140526024356004357fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6020610140a3600160005260206000f350005b63095ea7b36000511415611f3e573415611ecf57600080fd5b6004356020518110611ee057600080fd5b5060243560063360e05260c052604060c02060043560e05260c052604060c020556024356101405233337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256020610140a3600160005260206000f350005b6306fdde036000511415612022573415611f5757600080fd5b60008060c052602060c020610180602082540161012060006002818352015b82610120516020021115611f8957611fab565b61012051850154610120516020028501525b8151600101808352811415611f76575b5050505050506101805160206001820306601f82010390506101e0610180516020818352015b826101e0511115611fe157611ffd565b60006101e0516101a001535b8151600101808352811415611fd1575b5050506020610160526040610180510160206001820306601f8201039050610160f350005b6395d89b41600051141561210657341561203b57600080fd5b60018060c052602060c020610180602082540161012060006002818352015b8261012051602002111561206d5761208f565b61012051850154610120516020028501525b815160010180835281141561205a575b5050505050506101805160206001820306601f82010390506101e0610180516006818352015b826101e05111156120c5576120e1565b60006101e0516101a001535b81516001018083528114156120b5575b5050506020610160526040610180510160206001820306601f8201039050610160f350005b638da5cb5b600051141561212d57341561211f57600080fd5b60025460005260206000f350005b63313ce567600051141561215457341561214657600080fd5b60035460005260206000f350005b6318160ddd600051141561217b57341561216d57600080fd5b60045460005260206000f350005b6370a0823160005114156121c257341561219457600080fd5b60043560205181106121a557600080fd5b50600560043560e05260c052604060c0205460005260206000f350005b63dd62ed3e60005114156122295734156121db57600080fd5b60043560205181106121ec57600080fd5b5060243560205181106121fe57600080fd5b50600660043560e05260c052604060c02060243560e05260c052604060c0205460005260206000f350005b634999eb8f600051141561227057341561224257600080fd5b600435602051811061225357600080fd5b50600760043560e05260c052604060c0205460005260206000f350005b6351ecd2fa60005114156122b757341561228957600080fd5b600435602051811061229a57600080fd5b50600860043560e05260c052604060c0205460005260206000f350005b63752708fb60005114156123115734156122d057600080fd5b60406004356004016101403760206004356004013511156122f057600080fd5b6009610140516101602060e05260c052604060c0205460005260206000f350005b632bc51c6d600051141561233857341561232a57600080fd5b600b5460005260206000f350005b60006000fd5b6103f7612735036103f76000396103f7612735036000f3000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000089d24a6b4ccb1b6faa2625fe562bdd9a232603590000000000000000000000008e870d67f660d95d5be530380d0ec0bd388289e10000000000000000000000002b4ba323ab07da8250e896b6ff29bb96ddfe55a9

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

000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000089d24a6b4ccb1b6faa2625fe562bdd9a232603590000000000000000000000008e870d67f660d95d5be530380d0ec0bd388289e10000000000000000000000002b4ba323ab07da8250e896b6ff29bb96ddfe55a9
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
Arg [1] : 00000000000000000000000089d24a6b4ccb1b6faa2625fe562bdd9a23260359
Arg [2] : 0000000000000000000000008e870d67f660d95d5be530380d0ec0bd388289e1
Arg [3] : 0000000000000000000000002b4ba323ab07da8250e896b6ff29bb96ddfe55a9


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

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.