ETH Price: $2,435.43 (-1.60%)

Contract

0x1ba4eB0F44AB82541E56669e18972b0d6037dfE0

Overview

ETH Balance

0 ETH

ETH Value

$0.00

Sponsored

Transaction Hash
Method
Block
From
To
Set Governance246701482022-09-22 23:59:34746 days ago1663891174IN
0x1ba4eB0F...d6037dfE0
0 ETH0.0000201543060.00100155
New Experimental...188853872022-08-12 18:10:00787 days ago1660327800IN
0x1ba4eB0F...d6037dfE0
0 ETH0.0000934963920.001
New Experimental...188853812022-08-12 18:10:00787 days ago1660327800IN
0x1ba4eB0F...d6037dfE0
0 ETH0.0000934963910.001
New Experimental...188853732022-08-12 18:09:45787 days ago1660327785IN
0x1ba4eB0F...d6037dfE0
0 ETH0.0000927892450.001
Endorse Vault187958092022-08-11 22:32:47788 days ago1660257167IN
0x1ba4eB0F...d6037dfE0
0 ETH0.0001350611150.001
New Experimental...184983652022-08-09 21:54:53790 days ago1660082093IN
0x1ba4eB0F...d6037dfE0
0 ETH0.0000733826580.001
New Experimental...181114962022-08-06 22:51:05793 days ago1659826265IN
0x1ba4eB0F...d6037dfE0
0 ETH0.0000406589230.001
New Experimental...181114922022-08-06 22:51:05793 days ago1659826265IN
0x1ba4eB0F...d6037dfE0
0 ETH0.0000473563730.001
New Experimental...181114902022-08-06 22:51:05793 days ago1659826265IN
0x1ba4eB0F...d6037dfE0
0 ETH0.0000473563730.001
New Experimental...181114872022-08-06 22:50:49793 days ago1659826249IN
0x1ba4eB0F...d6037dfE0
0 ETH0.0000473563730.001
New Experimental...181114852022-08-06 22:50:49793 days ago1659826249IN
0x1ba4eB0F...d6037dfE0
0 ETH0.0000471786770.001
New Experimental...181113292022-08-06 22:46:28793 days ago1659825988IN
0x1ba4eB0F...d6037dfE0
0 ETH0.0000291931180.001
New Experimental...181113262022-08-06 22:46:28793 days ago1659825988IN
0x1ba4eB0F...d6037dfE0
0 ETH0.0000291878950.001
New Experimental...181113242022-08-06 22:46:28793 days ago1659825988IN
0x1ba4eB0F...d6037dfE0
0 ETH0.0000281907770.001
New Experimental...181113202022-08-06 22:46:28793 days ago1659825988IN
0x1ba4eB0F...d6037dfE0
0 ETH0.0000291878940.001
New Experimental...181113182022-08-06 22:46:11793 days ago1659825971IN
0x1ba4eB0F...d6037dfE0
0 ETH0.000029074940.001
New Release180993702022-08-06 19:56:03793 days ago1659815763IN
0x1ba4eB0F...d6037dfE0
0 ETH0.0000125723480.001
0x33600755180973412022-08-06 19:43:27793 days ago1659815007IN
 Create: Vyper_contract
0 ETH0.0004795456040.001

Latest 14 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
188853872022-08-12 18:10:00787 days ago1660327800
0x1ba4eB0F...d6037dfE0
 Contract Creation0 ETH
188853812022-08-12 18:10:00787 days ago1660327800
0x1ba4eB0F...d6037dfE0
 Contract Creation0 ETH
188853732022-08-12 18:09:45787 days ago1660327785
0x1ba4eB0F...d6037dfE0
 Contract Creation0 ETH
184983652022-08-09 21:54:53790 days ago1660082093
0x1ba4eB0F...d6037dfE0
 Contract Creation0 ETH
181114962022-08-06 22:51:05793 days ago1659826265
0x1ba4eB0F...d6037dfE0
 Contract Creation0 ETH
181114922022-08-06 22:51:05793 days ago1659826265
0x1ba4eB0F...d6037dfE0
 Contract Creation0 ETH
181114902022-08-06 22:51:05793 days ago1659826265
0x1ba4eB0F...d6037dfE0
 Contract Creation0 ETH
181114872022-08-06 22:50:49793 days ago1659826249
0x1ba4eB0F...d6037dfE0
 Contract Creation0 ETH
181114852022-08-06 22:50:49793 days ago1659826249
0x1ba4eB0F...d6037dfE0
 Contract Creation0 ETH
181113292022-08-06 22:46:28793 days ago1659825988
0x1ba4eB0F...d6037dfE0
 Contract Creation0 ETH
181113262022-08-06 22:46:28793 days ago1659825988
0x1ba4eB0F...d6037dfE0
 Contract Creation0 ETH
181113242022-08-06 22:46:28793 days ago1659825988
0x1ba4eB0F...d6037dfE0
 Contract Creation0 ETH
181113202022-08-06 22:46:28793 days ago1659825988
0x1ba4eB0F...d6037dfE0
 Contract Creation0 ETH
181113182022-08-06 22:46:11793 days ago1659825971
0x1ba4eB0F...d6037dfE0
 Contract Creation0 ETH

Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Vyper_contract

Compiler Version
vyper:0.2.11

Optimization Enabled:
N/A

Other Settings:
None license

Contract Source Code (Vyper language format)

# @version 0.2.11


interface Vault:
    def token() -> address: view
    def apiVersion() -> String[28]: view
    def governance() -> address: view
    def initialize(
        token: address,
        governance: address,
        rewards: address,
        name: String[64],
        symbol: String[32],
        guardian: address,
    ): nonpayable


# len(releases)
numReleases: public(uint256)
releases: public(HashMap[uint256, address])

# Token => len(vaults)
numVaults: public(HashMap[address, uint256])
vaults: public(HashMap[address, HashMap[uint256, address]])

# Index of token added => token address
tokens: public(HashMap[uint256, address])
# len(tokens)
numTokens: public(uint256)
# Inclusion check for token
isRegistered: public(HashMap[address, bool])

# 2-phase commit
governance: public(address)
pendingGovernance: public(address)

tags: public(HashMap[address, String[120]])
banksy: public(HashMap[address, bool])  # could be anyone

event NewRelease:
    release_id: indexed(uint256)
    template: address
    api_version: String[28]

event NewVault:
    token: indexed(address)
    vault_id: indexed(uint256)
    vault: address
    api_version: String[28]

event NewExperimentalVault:
    token: indexed(address)
    deployer: indexed(address)
    vault: address
    api_version: String[28]

event NewGovernance:
    governance: address

event VaultTagged:
    vault: address
    tag: String[120]

@external
def __init__():
    self.governance = msg.sender


@external
def setGovernance(governance: address):
    """
    @notice Starts the 1st phase of the governance transfer.
    @dev Throws if the caller is not current governance.
    @param governance The next governance address
    """
    assert msg.sender == self.governance  # dev: unauthorized
    self.pendingGovernance = governance


@external
def acceptGovernance():
    """
    @notice Completes the 2nd phase of the governance transfer.
    @dev
        Throws if the caller is not the pending caller.
        Emits a `NewGovernance` event.
    """
    assert msg.sender == self.pendingGovernance  # dev: unauthorized
    self.governance = msg.sender
    log NewGovernance(msg.sender)


@view
@external
def latestRelease() -> String[28]:
    """
    @notice Returns the api version of the latest release.
    @dev Throws if no releases are registered yet.
    @return The api version of the latest release.
    """
    # NOTE: Throws if there has not been a release yet
    return Vault(self.releases[self.numReleases - 1]).apiVersion()  # dev: no release


@view
@external
def latestVault(token: address) -> address:
    """
    @notice Returns the latest deployed vault for the given token.
    @dev Throws if no vaults are endorsed yet for the given token.
    @param token The token address to find the latest vault for.
    @return The address of the latest vault for the given token.
    """
    # NOTE: Throws if there has not been a deployed vault yet for this token
    return self.vaults[token][self.numVaults[token] - 1]  # dev: no vault for token


@external
def newRelease(vault: address):
    """
    @notice
        Add a previously deployed Vault as the template contract for the latest release,
        to be used by further "forwarder-style" delegatecall proxy contracts that can be
        deployed from the registry throw other methods (to save gas).
    @dev
        Throws if caller isn't `self.governance`.
        Throws if `vault`'s governance isn't `self.governance`.
        Throws if the api version is the same as the previous release.
        Emits a `NewVault` event.
    @param vault The vault that will be used as the template contract for the next release.
    """
    assert msg.sender == self.governance  # dev: unauthorized

    # Check if the release is different from the current one
    # NOTE: This doesn't check for strict semver-style linearly increasing release versions
    release_id: uint256 = self.numReleases  # Next id in series
    if release_id > 0:
        assert (
            Vault(self.releases[release_id - 1]).apiVersion()
            != Vault(vault).apiVersion()
        )  # dev: same api version
    # else: we are adding the first release to the Registry!

    # Update latest release
    self.releases[release_id] = vault
    self.numReleases = release_id + 1

    # Log the release for external listeners (e.g. Graph)
    log NewRelease(release_id, vault, Vault(vault).apiVersion())


@internal
def _newProxyVault(
    token: address,
    governance: address,
    rewards: address,
    guardian: address,
    name: String[64],
    symbol: String[32],
    releaseTarget: uint256,
) -> address:
    release: address = self.releases[releaseTarget]
    assert release != ZERO_ADDRESS  # dev: unknown release
    vault: address = create_forwarder_to(release)

    # NOTE: Must initialize the Vault atomically with deploying it
    Vault(vault).initialize(token, governance, rewards, name, symbol, guardian)

    return vault


@internal
def _registerVault(token: address, vault: address):
    # Check if there is an existing deployment for this token at the particular api version
    # NOTE: This doesn't check for strict semver-style linearly increasing release versions
    vault_id: uint256 = self.numVaults[token]  # Next id in series
    if vault_id > 0:
        assert (
            Vault(self.vaults[token][vault_id - 1]).apiVersion()
            != Vault(vault).apiVersion()
        )  # dev: same api version
    # else: we are adding a new token to the Registry

    # Update the latest deployment
    self.vaults[token][vault_id] = vault
    self.numVaults[token] = vault_id + 1

    # Register tokens for endorsed vaults
    if not self.isRegistered[token]:
        self.isRegistered[token] = True
        self.tokens[self.numTokens] = token
        self.numTokens += 1

    # Log the deployment for external listeners (e.g. Graph)
    log NewVault(token, vault_id, vault, Vault(vault).apiVersion())


@external
def newVault(
    token: address,
    guardian: address,
    rewards: address,
    name: String[64],
    symbol: String[32],
    releaseDelta: uint256 = 0,  # NOTE: Uses latest by default
) -> address:
    """
    @notice
        Create a new vault for the given token using the latest release in the registry,
        as a simple "forwarder-style" delegatecall proxy to the latest release. Also adds
        the new vault to the list of "endorsed" vaults for that token.
    @dev
        `governance` is set in the new vault as `self.governance`, with no ability to override.
        Throws if caller isn't `self.governance`.
        Throws if no releases are registered yet.
        Throws if there already is a registered vault for the given token with the latest api version.
        Emits a `NewVault` event.
    @param token The token that may be deposited into the new Vault.
    @param guardian The address authorized for guardian interactions in the new Vault.
    @param rewards The address to use for collecting rewards in the new Vault
    @param name Specify a custom Vault name. Set to empty string for default choice.
    @param symbol Specify a custom Vault symbol name. Set to empty string for default choice.
    @param releaseDelta Specify the number of releases prior to the latest to use as a target. Default is latest.
    @return The address of the newly-deployed vault
    """
    assert msg.sender == self.governance  # dev: unauthorized

    # NOTE: Underflow if no releases created yet, or targeting prior to release history
    releaseTarget: uint256 = self.numReleases - 1 - releaseDelta  # dev: no releases
    vault: address = self._newProxyVault(token, msg.sender, rewards, guardian, name, symbol, releaseTarget)

    self._registerVault(token, vault)

    return vault


@external
def newExperimentalVault(
    token: address,
    governance: address,
    guardian: address,
    rewards: address,
    name: String[64],
    symbol: String[32],
    releaseDelta: uint256 = 0,  # NOTE: Uses latest by default
) -> address:
    """
    @notice
        Create a new vault for the given token using the latest release in the registry,
        as a simple "forwarder-style" delegatecall proxy to the latest release. Does not add
        the new vault to the list of "endorsed" vaults for that token.
    @dev
        Throws if no releases are registered yet.
        Emits a `NewExperimentalVault` event.
    @param token The token that may be deposited into the new Vault.
    @param governance The address authorized for governance interactions in the new Vault.
    @param guardian The address authorized for guardian interactions in the new Vault.
    @param rewards The address to use for collecting rewards in the new Vault
    @param name Specify a custom Vault name. Set to empty string for default choice.
    @param symbol Specify a custom Vault symbol name. Set to empty string for default choice.
    @param releaseDelta Specify the number of releases prior to the latest to use as a target. Default is latest.
    @return The address of the newly-deployed vault
    """
    # NOTE: Underflow if no releases created yet, or targeting prior to release history
    releaseTarget: uint256 = self.numReleases - 1 - releaseDelta  # dev: no releases
    # NOTE: Anyone can call this method, as a convenience to Strategist' experiments
    vault: address = self._newProxyVault(token, governance, rewards, guardian, name, symbol, releaseTarget)

    # NOTE: Not registered, so emit an "experiment" event here instead
    log NewExperimentalVault(token, msg.sender, vault, Vault(vault).apiVersion())

    return vault


@external
def endorseVault(vault: address, releaseDelta: uint256 = 0):
    """
    @notice
        Adds an existing vault to the list of "endorsed" vaults for that token.
    @dev
        `governance` is set in the new vault as `self.governance`, with no ability to override.
        Throws if caller isn't `self.governance`.
        Throws if `vault`'s governance isn't `self.governance`.
        Throws if no releases are registered yet.
        Throws if `vault`'s api version does not match latest release.
        Throws if there already is a deployment for the vault's token with the latest api version.
        Emits a `NewVault` event.
    @param vault The vault that will be endorsed by the Registry.
    @param releaseDelta Specify the number of releases prior to the latest to use as a target. Default is latest.
    """
    assert msg.sender == self.governance  # dev: unauthorized
    assert Vault(vault).governance() == msg.sender  # dev: not governed

    # NOTE: Underflow if no releases created yet, or targeting prior to release history
    releaseTarget: uint256 = self.numReleases - 1 - releaseDelta  # dev: no releases
    api_version: String[28] = Vault(self.releases[releaseTarget]).apiVersion()
    assert Vault(vault).apiVersion() == api_version  # dev: not target release

    # Add to the end of the list of vaults for token
    self._registerVault(Vault(vault).token(), vault)


@external
def setBanksy(tagger: address, allowed: bool = True):
    """
    @notice Set the ability of a particular tagger to tag current vaults.
    @dev Throws if caller is not `self.governance`.
    @param tagger The address to approve or deny access to tagging.
    @param allowed Whether to approve or deny `tagger`. Defaults to approve.
    """
    assert msg.sender == self.governance  # dev: unauthorized
    self.banksy[tagger] = allowed


@external
def tagVault(vault: address, tag: String[120]):
    """
    @notice Tag a Vault with a message.
    @dev
        Throws if caller is not `self.governance` or an approved tagger.
        Emits a `VaultTagged` event.
    @param vault The address to tag with the given `tag` message.
    @param tag The message to tag `vault` with.
    """
    if msg.sender != self.governance:
        assert self.banksy[msg.sender]  # dev: not banksy
    # else: we are governance, we can do anything banksy can do

    self.tags[vault] = tag
    log VaultTagged(vault, tag)

Contract Security Audit

Contract ABI

[{"name":"NewRelease","inputs":[{"name":"release_id","type":"uint256","indexed":true},{"name":"template","type":"address","indexed":false},{"name":"api_version","type":"string","indexed":false}],"anonymous":false,"type":"event"},{"name":"NewVault","inputs":[{"name":"token","type":"address","indexed":true},{"name":"vault_id","type":"uint256","indexed":true},{"name":"vault","type":"address","indexed":false},{"name":"api_version","type":"string","indexed":false}],"anonymous":false,"type":"event"},{"name":"NewExperimentalVault","inputs":[{"name":"token","type":"address","indexed":true},{"name":"deployer","type":"address","indexed":true},{"name":"vault","type":"address","indexed":false},{"name":"api_version","type":"string","indexed":false}],"anonymous":false,"type":"event"},{"name":"NewGovernance","inputs":[{"name":"governance","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"VaultTagged","inputs":[{"name":"vault","type":"address","indexed":false},{"name":"tag","type":"string","indexed":false}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"constructor","inputs":[],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"setGovernance","inputs":[{"name":"governance","type":"address"}],"outputs":[],"gas":36245},{"stateMutability":"nonpayable","type":"function","name":"acceptGovernance","inputs":[],"outputs":[],"gas":37517},{"stateMutability":"view","type":"function","name":"latestRelease","inputs":[],"outputs":[{"name":"","type":"string"}],"gas":6831},{"stateMutability":"view","type":"function","name":"latestVault","inputs":[{"name":"token","type":"address"}],"outputs":[{"name":"","type":"address"}],"gas":2587},{"stateMutability":"nonpayable","type":"function","name":"newRelease","inputs":[{"name":"vault","type":"address"}],"outputs":[],"gas":82588},{"stateMutability":"nonpayable","type":"function","name":"newVault","inputs":[{"name":"token","type":"address"},{"name":"guardian","type":"address"},{"name":"rewards","type":"address"},{"name":"name","type":"string"},{"name":"symbol","type":"string"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"nonpayable","type":"function","name":"newVault","inputs":[{"name":"token","type":"address"},{"name":"guardian","type":"address"},{"name":"rewards","type":"address"},{"name":"name","type":"string"},{"name":"symbol","type":"string"},{"name":"releaseDelta","type":"uint256"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"nonpayable","type":"function","name":"newExperimentalVault","inputs":[{"name":"token","type":"address"},{"name":"governance","type":"address"},{"name":"guardian","type":"address"},{"name":"rewards","type":"address"},{"name":"name","type":"string"},{"name":"symbol","type":"string"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"nonpayable","type":"function","name":"newExperimentalVault","inputs":[{"name":"token","type":"address"},{"name":"governance","type":"address"},{"name":"guardian","type":"address"},{"name":"rewards","type":"address"},{"name":"name","type":"string"},{"name":"symbol","type":"string"},{"name":"releaseDelta","type":"uint256"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"nonpayable","type":"function","name":"endorseVault","inputs":[{"name":"vault","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"endorseVault","inputs":[{"name":"vault","type":"address"},{"name":"releaseDelta","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"setBanksy","inputs":[{"name":"tagger","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"setBanksy","inputs":[{"name":"tagger","type":"address"},{"name":"allowed","type":"bool"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"tagVault","inputs":[{"name":"vault","type":"address"},{"name":"tag","type":"string"}],"outputs":[],"gas":186064},{"stateMutability":"view","type":"function","name":"numReleases","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":1388},{"stateMutability":"view","type":"function","name":"releases","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"address"}],"gas":1533},{"stateMutability":"view","type":"function","name":"numVaults","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"uint256"}],"gas":1663},{"stateMutability":"view","type":"function","name":"vaults","inputs":[{"name":"arg0","type":"address"},{"name":"arg1","type":"uint256"}],"outputs":[{"name":"","type":"address"}],"gas":1808},{"stateMutability":"view","type":"function","name":"tokens","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"address"}],"gas":1623},{"stateMutability":"view","type":"function","name":"numTokens","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":1538},{"stateMutability":"view","type":"function","name":"isRegistered","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"bool"}],"gas":1783},{"stateMutability":"view","type":"function","name":"governance","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":1598},{"stateMutability":"view","type":"function","name":"pendingGovernance","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":1628},{"stateMutability":"view","type":"function","name":"tags","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"string"}],"gas":10229},{"stateMutability":"view","type":"function","name":"banksy","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"bool"}],"gas":1903}]

336007556115eb56600436101561000d576110f9565b600035601c52600051341561002157600080fd5b63ab033ea98114156100535760043560a01c1561003d57600080fd5b600754331461004b57600080fd5b600435600855005b63238efcbc81141561009f57600854331461006d57600080fd5b3360075533610140527f4f386975ea1c2f7cf1845b08bee00626fbb624ecad16254d63d9bb9ba86526de6020610140a1005b637be0ca5e8114156101735760606101a0600463258294106101405261015c60016000546001808210156100d257600080fd5b8082039050905060e05260c052604060c020545afa6100f057600080fd5b603f3d116100fd57600080fd5b601d6101a06101a05101511061011257600080fd5b6000506101c08051602001806102408284600060045af161013257600080fd5b5050610240518061026001818260206001820306601f82010390500336823750506020610220526040610240510160206001820306601f8201039050610220f35b63e177dc708114156101db5760043560a01c1561018f57600080fd5b600360043560e05260c052604060c020600260043560e05260c052604060c020546001808210156101bf57600080fd5b8082039050905060e05260c052604060c0205460005260206000f35b6333990d4b8114156104315760043560a01c156101f757600080fd5b600754331461020557600080fd5b6000546101405260006101405111156102e1576060610400600463258294106103a0526103bc6004355afa61023957600080fd5b603f3d1161024657600080fd5b601d6104006104005101511061025b57600080fd5b600050610420602001516060610340600463258294106102e0526102fc60016101405160018082101561028d57600080fd5b8082039050905060e05260c052604060c020545afa6102ab57600080fd5b603f3d116102b857600080fd5b601d610340610340510151106102cd57600080fd5b60005061036060200151186102e157600080fd5b60043560016101405160e05260c052604060c0205561014051600181818301101561030b57600080fd5b8082019050905060005560606101c0600463258294106101605261017c6004355afa61033657600080fd5b603f3d1161034357600080fd5b601d6101c06101c05101511061035857600080fd5b6000506101e08051602001806102208284600060045af161037857600080fd5b50506004356102c052604061028052610280516102e052610220805160200180610280516102c0018284600060045af16103b157600080fd5b5050610280516102c00151806020610280516102c0010101818260206001820306601f82010390500336823750506020610280516102c0015160206001820306601f820103905061028051010161028052610140517fa6fbd216b6734f34092f1be6b7247e1551a6d4f2d5000c53721cfdc119a5b7cf610280516102c0a2005b63108ca11e81141561044857600061022052610469565b63b0b40fce81141561046457602060a461022037600050610469565b6106f4565b60043560a01c1561047957600080fd5b60243560a01c1561048957600080fd5b60443560a01c1561049957600080fd5b60606064356004016101403760406064356004013511156104b957600080fd5b60406084356004016101c03760206084356004013511156104d957600080fd5b60075433146104e757600080fd5b6000546001808210156104f957600080fd5b80820390509050610220518082101561051157600080fd5b80820390509050610240526101405161016051610180516101a0516101c0516101e0516102005161022051610240516102605160e060043561028052336102a0526044356102c0526024356102e05280610300526101408080516020018084610280018284600060045af161058557600080fd5b50508051820160206001820306601f820103905060200191505080610320526101c08080516020018084610280018284600060045af16105c457600080fd5b50505061024051610340525061032051806102800180518060206001820306601f82010390508201610440525050505b6103606104405110156106065761061b565b610440515160206104405103610440526105f4565b6103405161032051610300516102e0516102c0516102a05161028051600658016110ff565b61046052610260526102405261022052610200526101e0526101c0526101a05261018052610160526101405261046051610260526101405161016051610180516101a0516101c0516101e0516102005161022051610240516102605160043561028052610260516102a0526102a0516102805160065801611302565b610260526102405261022052610200526101e0526101c0526101a0526101805261016052610140526000506102605160005260206000f35b635b73aa0d81141561070b5760006102205261072c565b635bd4b0f281141561072757602060c46102203760005061072c565b610a64565b60043560a01c1561073c57600080fd5b60243560a01c1561074c57600080fd5b60443560a01c1561075c57600080fd5b60643560a01c1561076c57600080fd5b606060843560040161014037604060843560040135111561078c57600080fd5b604060a4356004016101c037602060a4356004013511156107ac57600080fd5b6000546001808210156107be57600080fd5b8082039050905061022051808210156107d657600080fd5b80820390509050610240526101405161016051610180516101a0516101c0516101e0516102005161022051610240516102605160e0600435610280526024356102a0526064356102c0526044356102e05280610300526101408080516020018084610280018284600060045af161084c57600080fd5b50508051820160206001820306601f820103905060200191505080610320526101c08080516020018084610280018284600060045af161088b57600080fd5b50505061024051610340525061032051806102800180518060206001820306601f82010390508201610440525050505b6103606104405110156108cd576108e2565b610440515160206104405103610440526108bb565b6103405161032051610300516102e0516102c0516102a05161028051600658016110ff565b61046052610260526102405261022052610200526101e0526101c0526101a052610180526101605261014052610460516102605260606102e0600463258294106102805261029c610260515afa61095d57600080fd5b603f3d1161096a57600080fd5b601d6102e06102e05101511061097f57600080fd5b6000506103008051602001806103408284600060045af161099f57600080fd5b5050610260516103e05260406103a0526103a051610400526103408051602001806103a0516103e0018284600060045af16109d957600080fd5b50506103a0516103e001518060206103a0516103e0010101818260206001820306601f820103905003368237505060206103a0516103e0015160206001820306601f82010390506103a05101016103a052336004357f57a9cdc2a05e05f66e76769bdbe88e21ec45d9ee0f97d4cb60395d4c75dcbcda6103a0516103e0a36102605160005260206000f35b6329b2e0c6811415610a7b57600061014052610a9c565b63b366a35c811415610a97576020602461014037600050610a9c565b610cac565b60043560a01c15610aac57600080fd5b6007543314610aba57600080fd5b3360206101c06004635aa6e6756101605261017c6004355afa610adc57600080fd5b601f3d11610ae957600080fd5b6000506101c05114610afa57600080fd5b600054600180821015610b0c57600080fd5b808203905090506101405180821015610b2457600080fd5b80820390509050610160526060610240600463258294106101e0526101fc60016101605160e05260c052604060c020545afa610b5f57600080fd5b603f3d11610b6c57600080fd5b601d61024061024051015110610b8157600080fd5b6000506102608051602001806101808284600060045af1610ba157600080fd5b50506101a0516060610300600463258294106102a0526102bc6004355afa610bc857600080fd5b603f3d11610bd557600080fd5b601d61030061030051015110610bea57600080fd5b6000506103206020015114610bfe57600080fd5b6020610240600463fc0c546a6101e0526101fc6004355afa610c1f57600080fd5b601f3d11610c2c57600080fd5b60005061024051610260526101405161016051610180516101a0516101c0516101e0516102005161022051610240516102605161026051610280526004356102a0526102a0516102805160065801611302565b610260526102405261022052610200526101e0526101c0526101a052610180526101605261014052600050005b632cad8f9f811415610cc357600161014052610cf4565b635e05f6af811415610cef5760243560011c15610cdf57600080fd5b6020602461014037600050610cf4565b610d29565b60043560a01c15610d0457600080fd5b6007543314610d1257600080fd5b61014051600a60043560e05260c052604060c02055005b6360bd68f8811415610ea25760043560a01c15610d4557600080fd5b6098602435600401610140376078602435600401351115610d6557600080fd5b600754331815610d8757600a3360e05260c052604060c02054610d8757600080fd5b61014080600960043560e05260c052604060c02060c052602060c020602082510161012060006005818352015b82610120516020021115610dc757610de9565b61012051602002850151610120518501555b8151600101808352811415610db4575b50505050505060043561024052604061020052610200516102605261014080516020018061020051610240018284600060045af1610e2657600080fd5b505061020051610240015180602061020051610240010101818260206001820306601f8201039050033682375050602061020051610240015160206001820306601f8201039050610200510101610200527f07bd58794c2ca0ae152f7719eb5f02c654476de972cadec0e8191ae8be42096d61020051610240a1005b6356e0a94b811415610eba5760005460005260206000f35b63b6a9f40f811415610ee057600160043560e05260c052604060c0205460005260206000f35b63f9c7bba5811415610f165760043560a01c15610efc57600080fd5b600260043560e05260c052604060c0205460005260206000f35b637bbfc69e811415610f5a5760043560a01c15610f3257600080fd5b600360043560e05260c052604060c02060243560e05260c052604060c0205460005260206000f35b634f64b2be811415610f8057600460043560e05260c052604060c0205460005260206000f35b638e499bcf811415610f985760055460005260206000f35b63c3c5a547811415610fce5760043560a01c15610fb457600080fd5b600660043560e05260c052604060c0205460005260206000f35b635aa6e675811415610fe65760075460005260206000f35b63f39c38a0811415610ffe5760085460005260206000f35b6358b8f8428114156110c15760043560a01c1561101a57600080fd5b600960043560e05260c052604060c0208060c052602060c020610180602082540161012060006005818352015b8261012051602002111561105a5761107c565b61012051850154610120516020028501525b8151600101808352811415611047575b50505050505061018051806101a001818260206001820306601f82010390500336823750506020610160526040610180510160206001820306601f8201039050610160f35b63ee711ed58114156110f75760043560a01c156110dd57600080fd5b600a60043560e05260c052604060c0205460005260206000f35b505b60006000fd5b610220526101405261016052610180526101a0526101c0526101e05261020052610240526000610320525b6102405160206001820306601f82010390506103205110151561114c57611165565b610320516102600152610320516020016103205261112a565b6102c0526000610320525b6102c05160206001820306601f820103905061032051101515611192576111ab565b610320516102e001526103205160200161032052611170565b60005060016102005160e05260c052604060c0205461034052600061034051186111d457600080fd5b7f602d3d8160093d39f3363d3d373d3d3d363d7300000000000000000000000000610380526103405160601b610393527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006103a75260366103806000f061036052610360513b61124357600080fd5b6000600061016460c063a5b81fdf61038052610140516103a052610160516103c052610180516103e052806104005261024080805160200180846103a0018284600060045af161129257600080fd5b50508051820160206001820306601f820103905060200191505080610420526102c080805160200180846103a0018284600060045af16112d157600080fd5b5050506101a0516104405261039c90506000610360515af16112f257600080fd5b6103605160005260005161022051565b61018052610140526101605260026101405160e05260c052604060c020546101a05260006101a0511115611409576060610460600463258294106104005261041c610160515afa61135257600080fd5b603f3d1161135f57600080fd5b601d6104606104605101511061137457600080fd5b6000506104806020015160606103a0600463258294106103405261035c60036101405160e05260c052604060c0206101a0516001808210156113b557600080fd5b8082039050905060e05260c052604060c020545afa6113d357600080fd5b603f3d116113e057600080fd5b601d6103a06103a0510151106113f557600080fd5b6000506103c0602001511861140957600080fd5b6101605160036101405160e05260c052604060c0206101a05160e05260c052604060c020556101a051600181818301101561144357600080fd5b8082019050905060026101405160e05260c052604060c0205560066101405160e05260c052604060c0205415156114bd57600160066101405160e05260c052604060c0205561014051600460055460e05260c052604060c020556005805460018181830110156114b257600080fd5b808201905090508155505b6060610220600463258294106101c0526101dc610160515afa6114df57600080fd5b603f3d116114ec57600080fd5b601d6102206102205101511061150157600080fd5b6000506102408051602001806102808284600060045af161152157600080fd5b5050610160516103205260406102e0526102e051610340526102808051602001806102e051610320018284600060045af161155b57600080fd5b50506102e05161032001518060206102e051610320010101818260206001820306601f820103905003368237505060206102e051610320015160206001820306601f82010390506102e05101016102e0526101a051610140517fce089905ba4a4d622553bcb5646fd23e895c256f0376eee04e99e61cec1dc7e86102e051610320a361018051565b6100086115eb036100086000396100086115eb036000f3

Deployed Bytecode

0x600436101561000d576110f9565b600035601c52600051341561002157600080fd5b63ab033ea98114156100535760043560a01c1561003d57600080fd5b600754331461004b57600080fd5b600435600855005b63238efcbc81141561009f57600854331461006d57600080fd5b3360075533610140527f4f386975ea1c2f7cf1845b08bee00626fbb624ecad16254d63d9bb9ba86526de6020610140a1005b637be0ca5e8114156101735760606101a0600463258294106101405261015c60016000546001808210156100d257600080fd5b8082039050905060e05260c052604060c020545afa6100f057600080fd5b603f3d116100fd57600080fd5b601d6101a06101a05101511061011257600080fd5b6000506101c08051602001806102408284600060045af161013257600080fd5b5050610240518061026001818260206001820306601f82010390500336823750506020610220526040610240510160206001820306601f8201039050610220f35b63e177dc708114156101db5760043560a01c1561018f57600080fd5b600360043560e05260c052604060c020600260043560e05260c052604060c020546001808210156101bf57600080fd5b8082039050905060e05260c052604060c0205460005260206000f35b6333990d4b8114156104315760043560a01c156101f757600080fd5b600754331461020557600080fd5b6000546101405260006101405111156102e1576060610400600463258294106103a0526103bc6004355afa61023957600080fd5b603f3d1161024657600080fd5b601d6104006104005101511061025b57600080fd5b600050610420602001516060610340600463258294106102e0526102fc60016101405160018082101561028d57600080fd5b8082039050905060e05260c052604060c020545afa6102ab57600080fd5b603f3d116102b857600080fd5b601d610340610340510151106102cd57600080fd5b60005061036060200151186102e157600080fd5b60043560016101405160e05260c052604060c0205561014051600181818301101561030b57600080fd5b8082019050905060005560606101c0600463258294106101605261017c6004355afa61033657600080fd5b603f3d1161034357600080fd5b601d6101c06101c05101511061035857600080fd5b6000506101e08051602001806102208284600060045af161037857600080fd5b50506004356102c052604061028052610280516102e052610220805160200180610280516102c0018284600060045af16103b157600080fd5b5050610280516102c00151806020610280516102c0010101818260206001820306601f82010390500336823750506020610280516102c0015160206001820306601f820103905061028051010161028052610140517fa6fbd216b6734f34092f1be6b7247e1551a6d4f2d5000c53721cfdc119a5b7cf610280516102c0a2005b63108ca11e81141561044857600061022052610469565b63b0b40fce81141561046457602060a461022037600050610469565b6106f4565b60043560a01c1561047957600080fd5b60243560a01c1561048957600080fd5b60443560a01c1561049957600080fd5b60606064356004016101403760406064356004013511156104b957600080fd5b60406084356004016101c03760206084356004013511156104d957600080fd5b60075433146104e757600080fd5b6000546001808210156104f957600080fd5b80820390509050610220518082101561051157600080fd5b80820390509050610240526101405161016051610180516101a0516101c0516101e0516102005161022051610240516102605160e060043561028052336102a0526044356102c0526024356102e05280610300526101408080516020018084610280018284600060045af161058557600080fd5b50508051820160206001820306601f820103905060200191505080610320526101c08080516020018084610280018284600060045af16105c457600080fd5b50505061024051610340525061032051806102800180518060206001820306601f82010390508201610440525050505b6103606104405110156106065761061b565b610440515160206104405103610440526105f4565b6103405161032051610300516102e0516102c0516102a05161028051600658016110ff565b61046052610260526102405261022052610200526101e0526101c0526101a05261018052610160526101405261046051610260526101405161016051610180516101a0516101c0516101e0516102005161022051610240516102605160043561028052610260516102a0526102a0516102805160065801611302565b610260526102405261022052610200526101e0526101c0526101a0526101805261016052610140526000506102605160005260206000f35b635b73aa0d81141561070b5760006102205261072c565b635bd4b0f281141561072757602060c46102203760005061072c565b610a64565b60043560a01c1561073c57600080fd5b60243560a01c1561074c57600080fd5b60443560a01c1561075c57600080fd5b60643560a01c1561076c57600080fd5b606060843560040161014037604060843560040135111561078c57600080fd5b604060a4356004016101c037602060a4356004013511156107ac57600080fd5b6000546001808210156107be57600080fd5b8082039050905061022051808210156107d657600080fd5b80820390509050610240526101405161016051610180516101a0516101c0516101e0516102005161022051610240516102605160e0600435610280526024356102a0526064356102c0526044356102e05280610300526101408080516020018084610280018284600060045af161084c57600080fd5b50508051820160206001820306601f820103905060200191505080610320526101c08080516020018084610280018284600060045af161088b57600080fd5b50505061024051610340525061032051806102800180518060206001820306601f82010390508201610440525050505b6103606104405110156108cd576108e2565b610440515160206104405103610440526108bb565b6103405161032051610300516102e0516102c0516102a05161028051600658016110ff565b61046052610260526102405261022052610200526101e0526101c0526101a052610180526101605261014052610460516102605260606102e0600463258294106102805261029c610260515afa61095d57600080fd5b603f3d1161096a57600080fd5b601d6102e06102e05101511061097f57600080fd5b6000506103008051602001806103408284600060045af161099f57600080fd5b5050610260516103e05260406103a0526103a051610400526103408051602001806103a0516103e0018284600060045af16109d957600080fd5b50506103a0516103e001518060206103a0516103e0010101818260206001820306601f820103905003368237505060206103a0516103e0015160206001820306601f82010390506103a05101016103a052336004357f57a9cdc2a05e05f66e76769bdbe88e21ec45d9ee0f97d4cb60395d4c75dcbcda6103a0516103e0a36102605160005260206000f35b6329b2e0c6811415610a7b57600061014052610a9c565b63b366a35c811415610a97576020602461014037600050610a9c565b610cac565b60043560a01c15610aac57600080fd5b6007543314610aba57600080fd5b3360206101c06004635aa6e6756101605261017c6004355afa610adc57600080fd5b601f3d11610ae957600080fd5b6000506101c05114610afa57600080fd5b600054600180821015610b0c57600080fd5b808203905090506101405180821015610b2457600080fd5b80820390509050610160526060610240600463258294106101e0526101fc60016101605160e05260c052604060c020545afa610b5f57600080fd5b603f3d11610b6c57600080fd5b601d61024061024051015110610b8157600080fd5b6000506102608051602001806101808284600060045af1610ba157600080fd5b50506101a0516060610300600463258294106102a0526102bc6004355afa610bc857600080fd5b603f3d11610bd557600080fd5b601d61030061030051015110610bea57600080fd5b6000506103206020015114610bfe57600080fd5b6020610240600463fc0c546a6101e0526101fc6004355afa610c1f57600080fd5b601f3d11610c2c57600080fd5b60005061024051610260526101405161016051610180516101a0516101c0516101e0516102005161022051610240516102605161026051610280526004356102a0526102a0516102805160065801611302565b610260526102405261022052610200526101e0526101c0526101a052610180526101605261014052600050005b632cad8f9f811415610cc357600161014052610cf4565b635e05f6af811415610cef5760243560011c15610cdf57600080fd5b6020602461014037600050610cf4565b610d29565b60043560a01c15610d0457600080fd5b6007543314610d1257600080fd5b61014051600a60043560e05260c052604060c02055005b6360bd68f8811415610ea25760043560a01c15610d4557600080fd5b6098602435600401610140376078602435600401351115610d6557600080fd5b600754331815610d8757600a3360e05260c052604060c02054610d8757600080fd5b61014080600960043560e05260c052604060c02060c052602060c020602082510161012060006005818352015b82610120516020021115610dc757610de9565b61012051602002850151610120518501555b8151600101808352811415610db4575b50505050505060043561024052604061020052610200516102605261014080516020018061020051610240018284600060045af1610e2657600080fd5b505061020051610240015180602061020051610240010101818260206001820306601f8201039050033682375050602061020051610240015160206001820306601f8201039050610200510101610200527f07bd58794c2ca0ae152f7719eb5f02c654476de972cadec0e8191ae8be42096d61020051610240a1005b6356e0a94b811415610eba5760005460005260206000f35b63b6a9f40f811415610ee057600160043560e05260c052604060c0205460005260206000f35b63f9c7bba5811415610f165760043560a01c15610efc57600080fd5b600260043560e05260c052604060c0205460005260206000f35b637bbfc69e811415610f5a5760043560a01c15610f3257600080fd5b600360043560e05260c052604060c02060243560e05260c052604060c0205460005260206000f35b634f64b2be811415610f8057600460043560e05260c052604060c0205460005260206000f35b638e499bcf811415610f985760055460005260206000f35b63c3c5a547811415610fce5760043560a01c15610fb457600080fd5b600660043560e05260c052604060c0205460005260206000f35b635aa6e675811415610fe65760075460005260206000f35b63f39c38a0811415610ffe5760085460005260206000f35b6358b8f8428114156110c15760043560a01c1561101a57600080fd5b600960043560e05260c052604060c0208060c052602060c020610180602082540161012060006005818352015b8261012051602002111561105a5761107c565b61012051850154610120516020028501525b8151600101808352811415611047575b50505050505061018051806101a001818260206001820306601f82010390500336823750506020610160526040610180510160206001820306601f8201039050610160f35b63ee711ed58114156110f75760043560a01c156110dd57600080fd5b600a60043560e05260c052604060c0205460005260206000f35b505b60006000fd5b610220526101405261016052610180526101a0526101c0526101e05261020052610240526000610320525b6102405160206001820306601f82010390506103205110151561114c57611165565b610320516102600152610320516020016103205261112a565b6102c0526000610320525b6102c05160206001820306601f820103905061032051101515611192576111ab565b610320516102e001526103205160200161032052611170565b60005060016102005160e05260c052604060c0205461034052600061034051186111d457600080fd5b7f602d3d8160093d39f3363d3d373d3d3d363d7300000000000000000000000000610380526103405160601b610393527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006103a75260366103806000f061036052610360513b61124357600080fd5b6000600061016460c063a5b81fdf61038052610140516103a052610160516103c052610180516103e052806104005261024080805160200180846103a0018284600060045af161129257600080fd5b50508051820160206001820306601f820103905060200191505080610420526102c080805160200180846103a0018284600060045af16112d157600080fd5b5050506101a0516104405261039c90506000610360515af16112f257600080fd5b6103605160005260005161022051565b61018052610140526101605260026101405160e05260c052604060c020546101a05260006101a0511115611409576060610460600463258294106104005261041c610160515afa61135257600080fd5b603f3d1161135f57600080fd5b601d6104606104605101511061137457600080fd5b6000506104806020015160606103a0600463258294106103405261035c60036101405160e05260c052604060c0206101a0516001808210156113b557600080fd5b8082039050905060e05260c052604060c020545afa6113d357600080fd5b603f3d116113e057600080fd5b601d6103a06103a0510151106113f557600080fd5b6000506103c0602001511861140957600080fd5b6101605160036101405160e05260c052604060c0206101a05160e05260c052604060c020556101a051600181818301101561144357600080fd5b8082019050905060026101405160e05260c052604060c0205560066101405160e05260c052604060c0205415156114bd57600160066101405160e05260c052604060c0205561014051600460055460e05260c052604060c020556005805460018181830110156114b257600080fd5b808201905090508155505b6060610220600463258294106101c0526101dc610160515afa6114df57600080fd5b603f3d116114ec57600080fd5b601d6102206102205101511061150157600080fd5b6000506102408051602001806102808284600060045af161152157600080fd5b5050610160516103205260406102e0526102e051610340526102808051602001806102e051610320018284600060045af161155b57600080fd5b50506102e05161032001518060206102e051610320010101818260206001820306601f820103905003368237505060206102e051610320015160206001820306601f82010390506102e05101016102e0526101a051610140517fce089905ba4a4d622553bcb5646fd23e895c256f0376eee04e99e61cec1dc7e86102e051610320a36101805156

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
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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