ETH Price: $3,695.46 (-4.33%)

Contract

0x070A5C8a99002F50C18B52B90e938BC477611b16

Overview

ETH Balance

0 ETH

ETH Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

Please try again later

View more zero value Internal Transactions in Advanced View mode

Advanced mode:

Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SynthToken Burner

Compiler Version
vyper:0.3.7

Optimization Enabled:
N/A

Other Settings:
default evmVersion, None license

Contract Source Code (Vyper language format)

# @version 0.3.7
"""
@title SynthToken Burner
@notice Swaps synths
"""

interface ERC20:
    def transfer(_to: address, _value: uint256) -> bool: nonpayable
    def balanceOf(_owner: address) -> uint256: view

interface synthERC20:
    def balanceOf(_owner: address) -> uint256: view
    def transfer(_to: address, _value: uint256) -> bool: nonpayable
    def transferFrom(_from: address, _to: address, _value: uint256) -> bool: nonpayable
    def withdraw(_amount: uint256, _to: address): nonpayable
    def currencyKey() -> bytes32: nonpayable

interface Proxy:
    def burners(_coin: address) -> address: view

interface Synthetix:
    def exchangeWithTracking(
        sourceCurrencyKey: bytes32,
        sourceAmount: uint256,
        destinationCurrencyKey: bytes32,
        rewardAddress: address,
        trackingCode: bytes32,
    ) -> uint256: nonpayable
    def settle(currencyKey: bytes32) -> uint256[3]: nonpayable


struct SwapData:
    currency_key: bytes32
    to: synthERC20  # Same for coins to withdraw

struct SwapDataInput:
    coin: synthERC20
    to: synthERC20


SNX: immutable(Synthetix)
TRACKING_CODE: constant(bytes32) = 0x4355525645000000000000000000000000000000000000000000000000000000

swap_data: public(HashMap[synthERC20, SwapData])
sink_coin: public(synthERC20)  # Default coin to swap to

ETH_ADDRESS: constant(address) = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE
PROXY: public(immutable(Proxy))

is_killed: public(bool)
killed_coin: public(HashMap[synthERC20, bool])

owner: public(address)
emergency_owner: public(address)
future_owner: public(address)
future_emergency_owner: public(address)


@external
def __init__(_proxy: Proxy, _owner: address, _emergency_owner: address):
    """
    @notice Contract constructor
    @param _proxy Owner of admin fees
    @param _owner Owner address. Can kill the contract.
    @param _emergency_owner Emergency owner address. Can kill the contract.
    """
    PROXY = _proxy
    self.owner = _owner
    self.emergency_owner = _emergency_owner

    SNX = Synthetix(0x8700dAec35aF8Ff88c16BdF0418774CB3D7599B4)
    self.sink_coin = synthERC20(0x8c6f28f2F1A3C87F0f938b96d27520d9751ec8d9)  # sUSD


@internal
def _fetch_swap_data(_coin: synthERC20) -> SwapData:
    swap_data: SwapData = self.swap_data[_coin]
    if swap_data.currency_key == empty(bytes32):
        swap_data = SwapData({
            currency_key: _coin.currencyKey(),
            to: self.sink_coin,
        })
        self.swap_data[_coin] = swap_data
    return swap_data


@internal
def _burn(_coin: synthERC20, _amount: uint256):
    """
    @notice Burn implementation
    """
    assert not self.is_killed and not self.killed_coin[_coin], "Is killed"

    swap_data: SwapData = self._fetch_swap_data(_coin)
    if swap_data.to == _coin:
        SNX.settle(swap_data.currency_key)
        _coin.transfer(PROXY.address, _amount)
    else:
        SNX.exchangeWithTracking(
            swap_data.currency_key,
            _amount,
            self._fetch_swap_data(swap_data.to).currency_key,
            PROXY.address,
            TRACKING_CODE,
        )
        amount: uint256 = swap_data.to.balanceOf(self)
        swap_data.to.transfer(PROXY.address, amount)


@external
def burn(_coin: synthERC20) -> bool:
    """
    @notice Unwrap `_coin`
    @param _coin Address of the coin being unwrapped
    @return bool Success, remained for compatibility
    """
    amount: uint256 = _coin.balanceOf(msg.sender)
    if amount != 0:
        _coin.transferFrom(msg.sender, self, amount)

    amount = _coin.balanceOf(self)

    if amount != 0:
        self._burn(_coin, amount)

    return True


@external
def burn_amount(_coin: synthERC20, _amount_to_burn: uint256):
    """
    @notice Burn a specific quantity of `_coin`
    @dev Useful when the total amount to burn is so large that it fails
    @param _coin Address of the coin being converted
    @param _amount_to_burn Amount of the coin to burn
    """
    amount: uint256 = _coin.balanceOf(PROXY.address)
    if amount != 0 and PROXY.burners(_coin.address) == self:
        _coin.transferFrom(PROXY.address, self, amount)

    amount = _coin.balanceOf(self)
    assert amount >= _amount_to_burn, "Insufficient balance"

    self._burn(_coin, _amount_to_burn)


@external
@view
def burns_to(_coin: synthERC20) -> DynArray[address, 8]:
    """
    @notice Get resulting coins of burning `_coin`
    @param _coin Coin to burn
    """
    return [self.swap_data[_coin].to.address]


@external
def set_swap_data(_swap_data: DynArray[SwapDataInput, 16]):
    """
    @notice Set custom swap data, needed for old pools
    @param _swap_data Data needed for burning
    """
    assert msg.sender in [self.owner, self.emergency_owner], "Only owner"

    for data_input in _swap_data:
        swap_data: SwapData = SwapData({
            currency_key: data_input.coin.currencyKey(),
            to: data_input.to,
        })
        self.swap_data[data_input.coin] = swap_data


@external
def set_new_sink_coin(_coin: synthERC20):
    """
    @notice Set default coin to swap to, will be used for synths with no swap_data set
    @param _coin Address of the coin
    """
    assert msg.sender in [self.owner, self.emergency_owner], "Only owner"

    self.sink_coin = _coin


@external
def recover_balance(_coin: ERC20, _amount: uint256=max_value(uint256)):
    """
    @notice Recover ERC20 tokens or Ether from this contract
    @dev Tokens are sent to proxy
    @param _coin Token address
    @param _amount Amount to recover
    """
    amount: uint256 = _amount
    if _coin.address == ETH_ADDRESS:
        if amount == max_value(uint256):
            amount = self.balance
        raw_call(PROXY.address, b"", value=amount)
    else:
        if amount == max_value(uint256):
            amount = _coin.balanceOf(self)
        _coin.transfer(PROXY.address, amount)  # do not need safe transfer


@external
def set_killed(_is_killed: bool, _coin: synthERC20=empty(synthERC20)):
    """
    @notice Stop a contract or specific coin to be burnt
    @dev Executable only via owner or emergency owner
    @param _is_killed Boolean value to set
    @param _coin Coin to stop from burning, ZERO_ADDRESS to kill all coins (by default)
    """
    assert msg.sender in [self.owner, self.emergency_owner], "Only owner"

    if _coin == empty(synthERC20):
        self.is_killed = _is_killed
    else:
        self.killed_coin[_coin] = _is_killed


@external
def commit_transfer_ownership(_future_owner: address) -> bool:
    """
    @notice Commit a transfer of ownership
    @dev Must be accepted by the new owner via `accept_transfer_ownership`
    @param _future_owner New owner address
    @return bool success
    """
    assert msg.sender == self.owner, "Only owner"
    self.future_owner = _future_owner

    return True


@external
def accept_transfer_ownership() -> bool:
    """
    @notice Accept a transfer of ownership
    @return bool success
    """
    assert msg.sender == self.future_owner, "Only owner"
    self.owner = msg.sender

    return True


@external
def commit_transfer_emergency_ownership(_future_owner: address) -> bool:
    """
    @notice Commit a transfer of emergency ownership
    @dev Must be accepted by the new owner via `accept_transfer_emergency_ownership`
    @param _future_owner New owner address
    @return bool success
    """
    assert msg.sender == self.emergency_owner, "Only owner"
    self.future_emergency_owner = _future_owner

    return True


@external
def accept_transfer_emergency_ownership() -> bool:
    """
    @notice Accept a transfer of emergency ownership
    @return bool success
    """
    assert msg.sender == self.future_emergency_owner, "Only owner"
    self.emergency_owner = msg.sender

    return True

Contract Security Audit

Contract ABI

[{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"_proxy","type":"address"},{"name":"_owner","type":"address"},{"name":"_emergency_owner","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"burn","inputs":[{"name":"_coin","type":"address"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"nonpayable","type":"function","name":"burn_amount","inputs":[{"name":"_coin","type":"address"},{"name":"_amount_to_burn","type":"uint256"}],"outputs":[]},{"stateMutability":"view","type":"function","name":"burns_to","inputs":[{"name":"_coin","type":"address"}],"outputs":[{"name":"","type":"address[]"}]},{"stateMutability":"nonpayable","type":"function","name":"set_swap_data","inputs":[{"name":"_swap_data","type":"tuple[]","components":[{"name":"coin","type":"address"},{"name":"to","type":"address"}]}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_new_sink_coin","inputs":[{"name":"_coin","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"recover_balance","inputs":[{"name":"_coin","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"recover_balance","inputs":[{"name":"_coin","type":"address"},{"name":"_amount","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_killed","inputs":[{"name":"_is_killed","type":"bool"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_killed","inputs":[{"name":"_is_killed","type":"bool"},{"name":"_coin","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"commit_transfer_ownership","inputs":[{"name":"_future_owner","type":"address"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"nonpayable","type":"function","name":"accept_transfer_ownership","inputs":[],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"nonpayable","type":"function","name":"commit_transfer_emergency_ownership","inputs":[{"name":"_future_owner","type":"address"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"nonpayable","type":"function","name":"accept_transfer_emergency_ownership","inputs":[],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"view","type":"function","name":"swap_data","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"tuple","components":[{"name":"currency_key","type":"bytes32"},{"name":"to","type":"address"}]}]},{"stateMutability":"view","type":"function","name":"sink_coin","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"PROXY","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"is_killed","inputs":[],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"view","type":"function","name":"killed_coin","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"view","type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"emergency_owner","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"future_owner","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"future_emergency_owner","inputs":[],"outputs":[{"name":"","type":"address"}]}]

60206110236000396000518060a01c61101e5760405260206110436000396000518060a01c61101e5760605260206110636000396000518060a01c61101e576080523461101e57604051610fa152606051600455608051600555738700daec35af8ff88c16bdf0418774cb3d7599b4610f8152738c6f28f2f1a3c87f0f938b96d27520d9751ec8d9600155610f8161009c61000039610fc1610000f36003361161000c57610c36565b60003560e01c34610f6f576389afcb44811861014a5760243610610f6f576004358060a01c610f6f5761026052610260516370a082316102a052336102c05260206102a060246102bc845afa610067573d600060003e3d6000fd5b60203d10610f6f576102a09050516102805261028051156100dd57610260516323b872dd6102a052336102c052306102e052610280516103005260206102a060646102bc6000855af16100bf573d600060003e3d6000fd5b60203d10610f6f576102a0518060011c610f6f576103205261032050505b610260516370a082316102a052306102c05260206102a060246102bc845afa61010b573d600060003e3d6000fd5b60203d10610f6f576102a090505161028052610280511561013d576102605160e052610280516101005261013d610ccd565b60016102a05260206102a0f35b637afb0ed181186103555760443610610f6f576004358060a01c610f6f5761026052610260516370a082316102a0526020610fa16000396000516102c05260206102a060246102bc845afa6101a4573d600060003e3d6000fd5b60203d10610f6f576102a090505161028052610280511561021d57306020610fa16000396000516303d41e0e6102a052610260516102c05260206102a060246102bc845afa6101f8573d600060003e3d6000fd5b60203d10610f6f576102a0518060a01c610f6f576102e0526102e09050511815610220565b60005b1561028a57610260516323b872dd610300526020610fa160003960005161032052306103405261028051610360526020610300606461031c6000855af161026c573d600060003e3d6000fd5b60203d10610f6f57610300518060011c610f6f576103805261038050505b610260516370a082316102a052306102c05260206102a060246102bc845afa6102b8573d600060003e3d6000fd5b60203d10610f6f576102a09050516102805260243561028051101561033d5760146102a0527f496e73756666696369656e742062616c616e63650000000000000000000000006102c0526102a0506102a051806102c001601f826000031636823750506308c379a061026052602061028052601f19601f6102a051011660440161027cfd5b6102605160e05260243561010052610353610ccd565b005b632b482c2181186103f75760243610610f6f576004358060a01c610f6f5760405260208060605280606001600060016101a05260006040516020526000526040600020600181019050546101c05260006101a0518084528060051b60008260088111610f6f5780156103e157905b8060051b6101c001518160051b6020890101526001018181186103c3575b5050820160200191505090509050810190506060f35b630c33f26c81186105965760443610610f6f576004356004016010813511610f6f5780358060405260008160108111610f6f57801561046d57905b8060061b6060018160061b602086010180358060a01c610f6f57825260208101358060a01c610f6f5760208301525050600101818118610432575b50505050336004548118610482576001610489565b6005548118155b90506104f557600a610480527f4f6e6c79206f776e6572000000000000000000000000000000000000000000006104a0526104805061048051806104a001601f826000031636823750506308c379a061044052602061046052601f19601f61048051011660440161045cfd5b600060405160108111610f6f57801561059257905b8060061b606001805161046052602081015161048052506104605163dbd06c856104e05260206104e060046104fc6000855af161054c573d600060003e3d6000fd5b60203d10610f6f576104e09050516104a052610480516104c05260006104605160205260005260406000206104a05181556104c05160018201555060010181811861050a575b5050005b633ab9caa5811861063a5760243610610f6f576004358060a01c610f6f576040523360045481186105c85760016105cf565b6005548118155b905061063257600a6080527f4f6e6c79206f776e65720000000000000000000000000000000000000000000060a0526080506080518060a001601f826000031636823750506308c379a06040526020606052601f19601f6080510116604401605cfd5b604051600155005b63db2f5f7981186106765760243610610f6f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff606052610690565b630cb491e1811861079e5760443610610f6f576024356060525b6004358060a01c610f6f5760405260605160805273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6040511861070257608051196106ce57476080525b600060a05260a0506000600060a05160c06080516020610fa16000396000515af161079c573d600060003e3d6000fd61079c565b60805119610744576040516370a0823160a0523060c052602060a0602460bc845afa610733573d600060003e3d6000fd5b60203d10610f6f5760a09050516080525b60405163a9059cbb60a0526020610fa160003960005160c05260805160e052602060a0604460bc6000855af161077f573d600060003e3d6000fd5b60203d10610f6f5760a0518060011c610f6f576101005261010050505b005b6390b2299781186107bb5760243610610f6f5760006060526107dd565b63ce91764f811861088f5760443610610f6f576024358060a01c610f6f576060525b6004358060011c610f6f576040523360045481186107fc576001610803565b6005548118155b905061086657600a60a0527f4f6e6c79206f776e65720000000000000000000000000000000000000000000060c05260a05060a0518060c001601f826000031636823750506308c379a06060526020608052601f19601f60a0510116604401607cfd5b6060516108785760405160025561088d565b60405160036060516020526000526040600020555b005b636b441a4081186109285760243610610f6f576004358060a01c610f6f5760405260045433181561091757600a6060527f4f6e6c79206f776e65720000000000000000000000000000000000000000000060805260605060605180608001601f826000031636823750506308c379a06020526020604052601f19601f6060510116604401603cfd5b604051600655600160605260206060f35b63e5ea47b881186109b15760043610610f6f576006543318156109a257600a6040527f4f6e6c79206f776e65720000000000000000000000000000000000000000000060605260405060405180606001601f826000031636823750506308c379a06000526020602052601f19601f6040510116604401601cfd5b33600455600160405260206040f35b6395c899158118610a4a5760243610610f6f576004358060a01c610f6f57604052600554331815610a3957600a6060527f4f6e6c79206f776e65720000000000000000000000000000000000000000000060805260605060605180608001601f826000031636823750506308c379a06020526020604052601f19601f6060510116604401603cfd5b604051600755600160605260206060f35b632d2cb6758118610ad35760043610610f6f57600754331815610ac457600a6040527f4f6e6c79206f776e65720000000000000000000000000000000000000000000060605260405060405180606001601f826000031636823750506308c379a06000526020602052601f19601f6040510116604401601cfd5b33600555600160405260206040f35b6312946aae8118610b185760243610610f6f576004358060a01c610f6f5760405260006040516020526000526040600020805460605260018101546080525060406060f35b63de918bbc8118610b375760043610610f6f5760015460405260206040f35b63a8c92d488118610b5e5760043610610f6f576020610fa160003960005160405260206040f35b639c868ac08118610b7d5760043610610f6f5760025460405260206040f35b636392be7d8118610bb85760243610610f6f576004358060a01c610f6f57604052600360405160205260005260406000205460605260206060f35b638da5cb5b8118610bd75760043610610f6f5760045460405260206040f35b6363a4042a8118610bf65760043610610f6f5760055460405260206040f35b631ec0cdc18118610c155760043610610f6f5760065460405260206040f35b63e19f994c8118610c345760043610610f6f5760075460405260206040f35b505b60006000fd5b600060405160205260005260406000208054606052600181015460805250606051610cbd5760405163dbd06c8560a052602060a0600460bc6000855af1610c88573d600060003e3d6000fd5b60203d10610f6f5760a09050516060526001546080526000604051602052600052604060002060605181556080516001820155505b6060518152608051602082015250565b600254610ceb57600360e05160205260005260406000205415610cee565b60005b610d56576009610120527f4973206b696c6c656400000000000000000000000000000000000000000000006101405261012050610120518061014001601f826000031636823750506308c379a060e052602061010052601f19601f61012051011660440160fcfd5b60e051604052610d67610160610c3c565b6101608051610120526020810151610140525060e0516101405118610e30576020610f8160003960005163987757dd6101605261012051610180526060610160602461017c6000855af1610dc0573d600060003e3d6000fd5b60603d10610f6f57610160505060e05163a9059cbb610160526020610fa160003960005161018052610100516101a0526020610160604461017c6000855af1610e0e573d600060003e3d6000fd5b60203d10610f6f57610160518060011c610f6f576101c0526101c05050610f6d565b6020610f816000396000516330ead7606101a052610120516101c052610100516101e05261014051604052610e66610160610c3c565b61016051610200526020610fa1600039600051610220527f43555256450000000000000000000000000000000000000000000000000000006102405260206101a060a46101bc6000855af1610ec0573d600060003e3d6000fd5b60203d10610f6f576101a05050610140516370a0823161018052306101a0526020610180602461019c845afa610efb573d600060003e3d6000fd5b60203d10610f6f57610180905051610160526101405163a9059cbb610180526020610fa16000396000516101a052610160516101c0526020610180604461019c6000855af1610f4f573d600060003e3d6000fd5b60203d10610f6f57610180518060011c610f6f576101e0526101e050505b565b600080fda165767970657283000307000b005b600080fd000000000000000000000000bf7e49483881c76487b0989cd7d9a8239b20ca41000000000000000000000000b055ebbacc8eefc166c169e9ce2886d0406ab49b000000000000000000000000b055ebbacc8eefc166c169e9ce2886d0406ab49b

Deployed Bytecode

0x6003361161000c57610c36565b60003560e01c34610f6f576389afcb44811861014a5760243610610f6f576004358060a01c610f6f5761026052610260516370a082316102a052336102c05260206102a060246102bc845afa610067573d600060003e3d6000fd5b60203d10610f6f576102a09050516102805261028051156100dd57610260516323b872dd6102a052336102c052306102e052610280516103005260206102a060646102bc6000855af16100bf573d600060003e3d6000fd5b60203d10610f6f576102a0518060011c610f6f576103205261032050505b610260516370a082316102a052306102c05260206102a060246102bc845afa61010b573d600060003e3d6000fd5b60203d10610f6f576102a090505161028052610280511561013d576102605160e052610280516101005261013d610ccd565b60016102a05260206102a0f35b637afb0ed181186103555760443610610f6f576004358060a01c610f6f5761026052610260516370a082316102a0526020610fa16000396000516102c05260206102a060246102bc845afa6101a4573d600060003e3d6000fd5b60203d10610f6f576102a090505161028052610280511561021d57306020610fa16000396000516303d41e0e6102a052610260516102c05260206102a060246102bc845afa6101f8573d600060003e3d6000fd5b60203d10610f6f576102a0518060a01c610f6f576102e0526102e09050511815610220565b60005b1561028a57610260516323b872dd610300526020610fa160003960005161032052306103405261028051610360526020610300606461031c6000855af161026c573d600060003e3d6000fd5b60203d10610f6f57610300518060011c610f6f576103805261038050505b610260516370a082316102a052306102c05260206102a060246102bc845afa6102b8573d600060003e3d6000fd5b60203d10610f6f576102a09050516102805260243561028051101561033d5760146102a0527f496e73756666696369656e742062616c616e63650000000000000000000000006102c0526102a0506102a051806102c001601f826000031636823750506308c379a061026052602061028052601f19601f6102a051011660440161027cfd5b6102605160e05260243561010052610353610ccd565b005b632b482c2181186103f75760243610610f6f576004358060a01c610f6f5760405260208060605280606001600060016101a05260006040516020526000526040600020600181019050546101c05260006101a0518084528060051b60008260088111610f6f5780156103e157905b8060051b6101c001518160051b6020890101526001018181186103c3575b5050820160200191505090509050810190506060f35b630c33f26c81186105965760443610610f6f576004356004016010813511610f6f5780358060405260008160108111610f6f57801561046d57905b8060061b6060018160061b602086010180358060a01c610f6f57825260208101358060a01c610f6f5760208301525050600101818118610432575b50505050336004548118610482576001610489565b6005548118155b90506104f557600a610480527f4f6e6c79206f776e6572000000000000000000000000000000000000000000006104a0526104805061048051806104a001601f826000031636823750506308c379a061044052602061046052601f19601f61048051011660440161045cfd5b600060405160108111610f6f57801561059257905b8060061b606001805161046052602081015161048052506104605163dbd06c856104e05260206104e060046104fc6000855af161054c573d600060003e3d6000fd5b60203d10610f6f576104e09050516104a052610480516104c05260006104605160205260005260406000206104a05181556104c05160018201555060010181811861050a575b5050005b633ab9caa5811861063a5760243610610f6f576004358060a01c610f6f576040523360045481186105c85760016105cf565b6005548118155b905061063257600a6080527f4f6e6c79206f776e65720000000000000000000000000000000000000000000060a0526080506080518060a001601f826000031636823750506308c379a06040526020606052601f19601f6080510116604401605cfd5b604051600155005b63db2f5f7981186106765760243610610f6f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff606052610690565b630cb491e1811861079e5760443610610f6f576024356060525b6004358060a01c610f6f5760405260605160805273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6040511861070257608051196106ce57476080525b600060a05260a0506000600060a05160c06080516020610fa16000396000515af161079c573d600060003e3d6000fd61079c565b60805119610744576040516370a0823160a0523060c052602060a0602460bc845afa610733573d600060003e3d6000fd5b60203d10610f6f5760a09050516080525b60405163a9059cbb60a0526020610fa160003960005160c05260805160e052602060a0604460bc6000855af161077f573d600060003e3d6000fd5b60203d10610f6f5760a0518060011c610f6f576101005261010050505b005b6390b2299781186107bb5760243610610f6f5760006060526107dd565b63ce91764f811861088f5760443610610f6f576024358060a01c610f6f576060525b6004358060011c610f6f576040523360045481186107fc576001610803565b6005548118155b905061086657600a60a0527f4f6e6c79206f776e65720000000000000000000000000000000000000000000060c05260a05060a0518060c001601f826000031636823750506308c379a06060526020608052601f19601f60a0510116604401607cfd5b6060516108785760405160025561088d565b60405160036060516020526000526040600020555b005b636b441a4081186109285760243610610f6f576004358060a01c610f6f5760405260045433181561091757600a6060527f4f6e6c79206f776e65720000000000000000000000000000000000000000000060805260605060605180608001601f826000031636823750506308c379a06020526020604052601f19601f6060510116604401603cfd5b604051600655600160605260206060f35b63e5ea47b881186109b15760043610610f6f576006543318156109a257600a6040527f4f6e6c79206f776e65720000000000000000000000000000000000000000000060605260405060405180606001601f826000031636823750506308c379a06000526020602052601f19601f6040510116604401601cfd5b33600455600160405260206040f35b6395c899158118610a4a5760243610610f6f576004358060a01c610f6f57604052600554331815610a3957600a6060527f4f6e6c79206f776e65720000000000000000000000000000000000000000000060805260605060605180608001601f826000031636823750506308c379a06020526020604052601f19601f6060510116604401603cfd5b604051600755600160605260206060f35b632d2cb6758118610ad35760043610610f6f57600754331815610ac457600a6040527f4f6e6c79206f776e65720000000000000000000000000000000000000000000060605260405060405180606001601f826000031636823750506308c379a06000526020602052601f19601f6040510116604401601cfd5b33600555600160405260206040f35b6312946aae8118610b185760243610610f6f576004358060a01c610f6f5760405260006040516020526000526040600020805460605260018101546080525060406060f35b63de918bbc8118610b375760043610610f6f5760015460405260206040f35b63a8c92d488118610b5e5760043610610f6f576020610fa160003960005160405260206040f35b639c868ac08118610b7d5760043610610f6f5760025460405260206040f35b636392be7d8118610bb85760243610610f6f576004358060a01c610f6f57604052600360405160205260005260406000205460605260206060f35b638da5cb5b8118610bd75760043610610f6f5760045460405260206040f35b6363a4042a8118610bf65760043610610f6f5760055460405260206040f35b631ec0cdc18118610c155760043610610f6f5760065460405260206040f35b63e19f994c8118610c345760043610610f6f5760075460405260206040f35b505b60006000fd5b600060405160205260005260406000208054606052600181015460805250606051610cbd5760405163dbd06c8560a052602060a0600460bc6000855af1610c88573d600060003e3d6000fd5b60203d10610f6f5760a09050516060526001546080526000604051602052600052604060002060605181556080516001820155505b6060518152608051602082015250565b600254610ceb57600360e05160205260005260406000205415610cee565b60005b610d56576009610120527f4973206b696c6c656400000000000000000000000000000000000000000000006101405261012050610120518061014001601f826000031636823750506308c379a060e052602061010052601f19601f61012051011660440160fcfd5b60e051604052610d67610160610c3c565b6101608051610120526020810151610140525060e0516101405118610e30576020610f8160003960005163987757dd6101605261012051610180526060610160602461017c6000855af1610dc0573d600060003e3d6000fd5b60603d10610f6f57610160505060e05163a9059cbb610160526020610fa160003960005161018052610100516101a0526020610160604461017c6000855af1610e0e573d600060003e3d6000fd5b60203d10610f6f57610160518060011c610f6f576101c0526101c05050610f6d565b6020610f816000396000516330ead7606101a052610120516101c052610100516101e05261014051604052610e66610160610c3c565b61016051610200526020610fa1600039600051610220527f43555256450000000000000000000000000000000000000000000000000000006102405260206101a060a46101bc6000855af1610ec0573d600060003e3d6000fd5b60203d10610f6f576101a05050610140516370a0823161018052306101a0526020610180602461019c845afa610efb573d600060003e3d6000fd5b60203d10610f6f57610180905051610160526101405163a9059cbb610180526020610fa16000396000516101a052610160516101c0526020610180604461019c6000855af1610f4f573d600060003e3d6000fd5b60203d10610f6f57610180518060011c610f6f576101e0526101e050505b565b600080fda165767970657283000307000b0000000000000000000000008700daec35af8ff88c16bdf0418774cb3d7599b4000000000000000000000000bf7e49483881c76487b0989cd7d9a8239b20ca41

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

000000000000000000000000bf7e49483881c76487b0989cd7d9a8239b20ca41000000000000000000000000b055ebbacc8eefc166c169e9ce2886d0406ab49b000000000000000000000000b055ebbacc8eefc166c169e9ce2886d0406ab49b

-----Decoded View---------------
Arg [0] : _proxy (address): 0xbF7E49483881C76487b0989CD7d9A8239B20CA41
Arg [1] : _owner (address): 0xB055EbbAcc8Eefc166c169e9Ce2886D0406aB49b
Arg [2] : _emergency_owner (address): 0xB055EbbAcc8Eefc166c169e9Ce2886D0406aB49b

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000bf7e49483881c76487b0989cd7d9a8239b20ca41
Arg [1] : 000000000000000000000000b055ebbacc8eefc166c169e9ce2886d0406ab49b
Arg [2] : 000000000000000000000000b055ebbacc8eefc166c169e9ce2886d0406ab49b


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

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.