ETH Price: $2,633.98 (+1.67%)
Gas: 2.3 Gwei

Contract

0x28Fa7262B6d28364B494b30a89633Fc12bE66608
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Register Proxy156165522022-09-26 9:07:59695 days ago1664183279IN
0x28Fa7262...12bE66608
0 ETH0.003518459
Register Proxy156160172022-09-26 7:20:23695 days ago1664176823IN
0x28Fa7262...12bE66608
0 ETH0.001954695
Register Proxy156158162022-09-26 6:39:59695 days ago1664174399IN
0x28Fa7262...12bE66608
0 ETH0.003296438.43208811
Register Proxy156155602022-09-26 5:48:35695 days ago1664171315IN
0x28Fa7262...12bE66608
0 ETH0.002345636
Register Proxy156149532022-09-26 3:46:47695 days ago1664164007IN
0x28Fa7262...12bE66608
0 ETH0.002638446.74899909
Register Proxy156149492022-09-26 3:45:59695 days ago1664163959IN
0x28Fa7262...12bE66608
0 ETH0.002746347.02499248
Register Proxy155246882022-09-13 3:32:02708 days ago1663039922IN
0x28Fa7262...12bE66608
0 ETH0.0039093910
Register Proxy155086152022-09-10 11:38:23711 days ago1662809903IN
0x28Fa7262...12bE66608
0 ETH0.001563754
Register Proxy155081552022-09-10 9:53:43711 days ago1662803623IN
0x28Fa7262...12bE66608
0 ETH0.001954695
Register Proxy155059112022-09-10 1:00:11711 days ago1662771611IN
0x28Fa7262...12bE66608
0 ETH0.003127518
Register Proxy155059022022-09-10 0:58:22711 days ago1662771502IN
0x28Fa7262...12bE66608
0 ETH0.003127518
Register Proxy155028242022-09-09 12:47:08712 days ago1662727628IN
0x28Fa7262...12bE66608
0 ETH0.0058640815
Register Proxy155026822022-09-09 12:11:18712 days ago1662725478IN
0x28Fa7262...12bE66608
0 ETH0.0057846514.79682074
Register Proxy155024812022-09-09 11:23:43712 days ago1662722623IN
0x28Fa7262...12bE66608
0 ETH0.0043003211
Register Proxy155024702022-09-09 11:20:47712 days ago1662722447IN
0x28Fa7262...12bE66608
0 ETH0.003127518
Register Proxy155024702022-09-09 11:20:47712 days ago1662722447IN
0x28Fa7262...12bE66608
0 ETH0.003127518
Register Proxy155024702022-09-09 11:20:47712 days ago1662722447IN
0x28Fa7262...12bE66608
0 ETH0.003127518
Register Proxy155024242022-09-09 11:10:51712 days ago1662721851IN
0x28Fa7262...12bE66608
0 ETH0.0058640815
Register Proxy155022402022-09-09 10:25:19712 days ago1662719119IN
0x28Fa7262...12bE66608
0 ETH0.003518459
Register Proxy155022342022-09-09 10:24:15712 days ago1662719055IN
0x28Fa7262...12bE66608
0 ETH0.0048421112.38585776
Register Proxy155016682022-09-09 8:12:41712 days ago1662711161IN
0x28Fa7262...12bE66608
0 ETH0.003127518
Register Proxy154900932022-09-07 11:39:57714 days ago1662550797IN
0x28Fa7262...12bE66608
0 ETH0.002881377.37039301
Register Proxy154900632022-09-07 11:33:57714 days ago1662550437IN
0x28Fa7262...12bE66608
0 ETH0.003808939.7430528
Register Proxy154637442022-09-03 6:12:25718 days ago1662185545IN
0x28Fa7262...12bE66608
0 ETH0.003635799.30016021
Register Proxy154621692022-09-02 23:59:19718 days ago1662163159IN
0x28Fa7262...12bE66608
0 ETH0.002507366.41370622
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
156165522022-09-26 9:07:59695 days ago1664183279
0x28Fa7262...12bE66608
 Contract Creation0 ETH
156160172022-09-26 7:20:23695 days ago1664176823
0x28Fa7262...12bE66608
 Contract Creation0 ETH
156158162022-09-26 6:39:59695 days ago1664174399
0x28Fa7262...12bE66608
 Contract Creation0 ETH
156155602022-09-26 5:48:35695 days ago1664171315
0x28Fa7262...12bE66608
 Contract Creation0 ETH
156149532022-09-26 3:46:47695 days ago1664164007
0x28Fa7262...12bE66608
 Contract Creation0 ETH
156149492022-09-26 3:45:59695 days ago1664163959
0x28Fa7262...12bE66608
 Contract Creation0 ETH
155246882022-09-13 3:32:02708 days ago1663039922
0x28Fa7262...12bE66608
 Contract Creation0 ETH
155086152022-09-10 11:38:23711 days ago1662809903
0x28Fa7262...12bE66608
 Contract Creation0 ETH
155081552022-09-10 9:53:43711 days ago1662803623
0x28Fa7262...12bE66608
 Contract Creation0 ETH
155059112022-09-10 1:00:11711 days ago1662771611
0x28Fa7262...12bE66608
 Contract Creation0 ETH
155059022022-09-10 0:58:22711 days ago1662771502
0x28Fa7262...12bE66608
 Contract Creation0 ETH
155028242022-09-09 12:47:08712 days ago1662727628
0x28Fa7262...12bE66608
 Contract Creation0 ETH
155026822022-09-09 12:11:18712 days ago1662725478
0x28Fa7262...12bE66608
 Contract Creation0 ETH
155024812022-09-09 11:23:43712 days ago1662722623
0x28Fa7262...12bE66608
 Contract Creation0 ETH
155024702022-09-09 11:20:47712 days ago1662722447
0x28Fa7262...12bE66608
 Contract Creation0 ETH
155024702022-09-09 11:20:47712 days ago1662722447
0x28Fa7262...12bE66608
 Contract Creation0 ETH
155024702022-09-09 11:20:47712 days ago1662722447
0x28Fa7262...12bE66608
 Contract Creation0 ETH
155024242022-09-09 11:10:51712 days ago1662721851
0x28Fa7262...12bE66608
 Contract Creation0 ETH
155022402022-09-09 10:25:19712 days ago1662719119
0x28Fa7262...12bE66608
 Contract Creation0 ETH
155022342022-09-09 10:24:15712 days ago1662719055
0x28Fa7262...12bE66608
 Contract Creation0 ETH
155016682022-09-09 8:12:41712 days ago1662711161
0x28Fa7262...12bE66608
 Contract Creation0 ETH
154900932022-09-07 11:39:57714 days ago1662550797
0x28Fa7262...12bE66608
 Contract Creation0 ETH
154900632022-09-07 11:33:57714 days ago1662550437
0x28Fa7262...12bE66608
 Contract Creation0 ETH
154637442022-09-03 6:12:25718 days ago1662185545
0x28Fa7262...12bE66608
 Contract Creation0 ETH
154621692022-09-02 23:59:19718 days ago1662163159
0x28Fa7262...12bE66608
 Contract Creation0 ETH
View All Internal Transactions
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x8324cDBb...04798d0e4
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
StarBlockProxyRegistry

Compiler Version
v0.4.26+commit.4563c3fc

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-03-30
*/

pragma solidity ^0.4.13;

contract Ownable {
  address public owner;


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


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

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

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

  /**
   * @dev Allows the current owner to relinquish control of the contract.
   */
  function renounceOwnership() public onlyOwner {
    emit OwnershipRenounced(owner);
    owner = address(0);
  }
}

contract ERC20Basic {
  function totalSupply() public view returns (uint256);
  function balanceOf(address who) public view returns (uint256);
  function transfer(address to, uint256 value) public returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
}

contract ERC20 is ERC20Basic {
  function allowance(address owner, address spender)
    public view returns (uint256);

  function transferFrom(address from, address to, uint256 value)
    public returns (bool);

  function approve(address spender, uint256 value) public returns (bool);
  event Approval(
    address indexed owner,
    address indexed spender,
    uint256 value
  );
}

contract TokenRecipient {
    event ReceivedEther(address indexed sender, uint amount);
    event ReceivedTokens(address indexed from, uint256 value, address indexed token, bytes extraData);

    /**
     * @dev Receive tokens and generate a log event
     * @param from Address from which to transfer tokens
     * @param value Amount of tokens to transfer
     * @param token Address of token
     * @param extraData Additional data to log
     */
    function receiveApproval(address from, uint256 value, address token, bytes extraData) public {
        ERC20 t = ERC20(token);
        require(t.transferFrom(from, this, value));
        emit ReceivedTokens(from, value, token, extraData);
    }

    /**
     * @dev Receive Ether and generate a log event
     */
    function () payable public {
        emit ReceivedEther(msg.sender, msg.value);
    }
}

contract ProxyRegistry is Ownable {

    /* DelegateProxy implementation contract. Must be initialized. */
    address public delegateProxyImplementation;

    /* Authenticated proxies by user. */
    mapping(address => OwnableDelegateProxy) public proxies;

    /* Contracts pending access. */
    mapping(address => uint) public pending;

    /* Contracts allowed to call those proxies. */
    mapping(address => bool) public contracts;

    /* Delay period for adding an authenticated contract.
       This mitigates a particular class of potential attack on the Wyvern DAO (which owns this registry) - if at any point the value of assets held by proxy contracts exceeded the value of half the WYV supply (votes in the DAO),
       a malicious but rational attacker could buy half the Wyvern and grant themselves access to all the proxy contracts. A delay period renders this attack nonthreatening - given two weeks, if that happened, users would have
       plenty of time to notice and transfer their assets.
    */
    uint public DELAY_PERIOD = 2 weeks;

    /**
     * Start the process to enable access for specified contract. Subject to delay period.
     *
     * @dev ProxyRegistry owner only
     * @param addr Address to which to grant permissions
     */
    function startGrantAuthentication (address addr)
        public
        onlyOwner
    {
        require(!contracts[addr] && pending[addr] == 0);
        pending[addr] = now;
    }

    /**
     * End the process to nable access for specified contract after delay period has passed.
     *
     * @dev ProxyRegistry owner only
     * @param addr Address to which to grant permissions
     */
    function endGrantAuthentication (address addr)
        public
        onlyOwner
    {
        require(!contracts[addr] && pending[addr] != 0 && ((pending[addr] + DELAY_PERIOD) < now));
        pending[addr] = 0;
        contracts[addr] = true;
    }

    /**
     * Revoke access for specified contract. Can be done instantly.
     *
     * @dev ProxyRegistry owner only
     * @param addr Address of which to revoke permissions
     */    
    function revokeAuthentication (address addr)
        public
        onlyOwner
    {
        contracts[addr] = false;
    }

    /**
     * Register a proxy contract with this registry
     *
     * @dev Must be called by the user which the proxy is for, creates a new AuthenticatedProxy
     * @return New AuthenticatedProxy contract
     */
    function registerProxy()
        public
        returns (OwnableDelegateProxy proxy)
    {
        require(proxies[msg.sender] == address(0));
        proxy = new OwnableDelegateProxy(msg.sender, delegateProxyImplementation, abi.encodeWithSignature("initialize(address,address)", msg.sender, address(this)));
        proxies[msg.sender] = proxy;
        return proxy;
    }

}

contract StarBlockProxyRegistry is ProxyRegistry {

    string public constant name = "Project StarBlock Proxy Registry";

    /* Whether the initial auth address has been set. */
    bool public initialAddressSet = false;

    function setDelegateProxyImplementation(address implementation) onlyOwner public 
    {
        require(delegateProxyImplementation == address(0));
        delegateProxyImplementation = implementation;
    }

    /** 
     * Grant authentication to the initial Exchange protocol contract
     *
     * @dev No delay, can only be called once - after that the standard registry process with a delay must be used
     * @param authAddress Address of the contract to grant authentication
     */
    function grantInitialAuthentication (address authAddress)
        onlyOwner
        public
    {
        require(!initialAddressSet);
        initialAddressSet = true;
        contracts[authAddress] = true;
    }

}

contract OwnedUpgradeabilityStorage {

  // Current implementation
  address internal _implementation;

  // Owner of the contract
  address private _upgradeabilityOwner;

  /**
   * @dev Tells the address of the owner
   * @return the address of the owner
   */
  function upgradeabilityOwner() public view returns (address) {
    return _upgradeabilityOwner;
  }

  /**
   * @dev Sets the address of the owner
   */
  function setUpgradeabilityOwner(address newUpgradeabilityOwner) internal {
    _upgradeabilityOwner = newUpgradeabilityOwner;
  }

  /**
  * @dev Tells the address of the current implementation
  * @return address of the current implementation
  */
  function implementation() public view returns (address) {
    return _implementation;
  }

  /**
  * @dev Tells the proxy type (EIP 897)
  * @return Proxy type, 2 for forwarding proxy
  */
  function proxyType() public pure returns (uint256 proxyTypeId) {
    return 2;
  }
}

contract AuthenticatedProxy is TokenRecipient, OwnedUpgradeabilityStorage {

    /* Whether initialized. */
    bool initialized = false;

    /* Address which owns this proxy. */
    address public user;

    /* Associated registry with contract authentication information. */
    ProxyRegistry public registry;

    /* Whether access has been revoked. */
    bool public revoked;

    /* Delegate call could be used to atomically transfer multiple assets owned by the proxy contract with one order. */
    enum HowToCall { Call, DelegateCall }

    /* Event fired when the proxy access is revoked or unrevoked. */
    event Revoked(bool revoked);

    /**
     * Initialize an AuthenticatedProxy
     *
     * @param addrUser Address of user on whose behalf this proxy will act
     * @param addrRegistry Address of ProxyRegistry contract which will manage this proxy
     */
    function initialize (address addrUser, ProxyRegistry addrRegistry)
        public
    {
        require(!initialized);
        initialized = true;
        user = addrUser;
        registry = addrRegistry;
    }

    /**
     * Set the revoked flag (allows a user to revoke ProxyRegistry access)
     *
     * @dev Can be called by the user only
     * @param revoke Whether or not to revoke access
     */
    function setRevoke(bool revoke)
        public
    {
        require(msg.sender == user);
        revoked = revoke;
        emit Revoked(revoke);
    }

    /**
     * Execute a message call from the proxy contract
     *
     * @dev Can be called by the user, or by a contract authorized by the registry as long as the user has not revoked access
     * @param dest Address to which the call will be sent
     * @param howToCall Which kind of call to make
     * @param calldata Calldata to send
     * @return Result of the call (success or failure)
     */
    function proxy(address dest, HowToCall howToCall, bytes calldata)
        public
        returns (bool result)
    {
        require(msg.sender == user || (!revoked && registry.contracts(msg.sender)));
        if (howToCall == HowToCall.Call) {
            result = dest.call(calldata);
        } else if (howToCall == HowToCall.DelegateCall) {
            result = dest.delegatecall(calldata);
        }
        return result;
    }

    /**
     * Execute a message call and assert success
     * 
     * @dev Same functionality as `proxy`, just asserts the return value
     * @param dest Address to which the call will be sent
     * @param howToCall What kind of call to make
     * @param calldata Calldata to send
     */
    function proxyAssert(address dest, HowToCall howToCall, bytes calldata)
        public
    {
        require(proxy(dest, howToCall, calldata));
    }

}

contract Proxy {

  /**
  * @dev Tells the address of the implementation where every call will be delegated.
  * @return address of the implementation to which it will be delegated
  */
  function implementation() public view returns (address);

  /**
  * @dev Tells the type of proxy (EIP 897)
  * @return Type of proxy, 2 for upgradeable proxy
  */
  function proxyType() public pure returns (uint256 proxyTypeId);

  /**
  * @dev Fallback function allowing to perform a delegatecall to the given implementation.
  * This function will return whatever the implementation call returns
  */
  function () payable public {
    address _impl = implementation();
    require(_impl != address(0));

    assembly {
      let ptr := mload(0x40)
      calldatacopy(ptr, 0, calldatasize)
      let result := delegatecall(gas, _impl, ptr, calldatasize, 0, 0)
      let size := returndatasize
      returndatacopy(ptr, 0, size)

      switch result
      case 0 { revert(ptr, size) }
      default { return(ptr, size) }
    }
  }
}

contract OwnedUpgradeabilityProxy is Proxy, OwnedUpgradeabilityStorage {
  /**
  * @dev Event to show ownership has been transferred
  * @param previousOwner representing the address of the previous owner
  * @param newOwner representing the address of the new owner
  */
  event ProxyOwnershipTransferred(address previousOwner, address newOwner);

  /**
  * @dev This event will be emitted every time the implementation gets upgraded
  * @param implementation representing the address of the upgraded implementation
  */
  event Upgraded(address indexed implementation);

  /**
  * @dev Upgrades the implementation address
  * @param implementation representing the address of the new implementation to be set
  */
  function _upgradeTo(address implementation) internal {
    require(_implementation != implementation);
    _implementation = implementation;
    emit Upgraded(implementation);
  }

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

  /**
   * @dev Tells the address of the proxy owner
   * @return the address of the proxy owner
   */
  function proxyOwner() public view returns (address) {
    return upgradeabilityOwner();
  }

  /**
   * @dev Allows the current owner to transfer control of the contract to a newOwner.
   * @param newOwner The address to transfer ownership to.
   */
  function transferProxyOwnership(address newOwner) public onlyProxyOwner {
    require(newOwner != address(0));
    emit ProxyOwnershipTransferred(proxyOwner(), newOwner);
    setUpgradeabilityOwner(newOwner);
  }

  /**
   * @dev Allows the upgradeability owner to upgrade the current implementation of the proxy.
   * @param implementation representing the address of the new implementation to be set.
   */
  function upgradeTo(address implementation) public onlyProxyOwner {
    _upgradeTo(implementation);
  }

  /**
   * @dev Allows the upgradeability owner to upgrade the current implementation of the proxy
   * and delegatecall the new implementation for initialization.
   * @param implementation representing the address of the new implementation to be set.
   * @param data represents the msg.data to bet sent in the low level call. This parameter may include the function
   * signature of the implementation to be called with the needed payload
   */
  function upgradeToAndCall(address implementation, bytes data) payable public onlyProxyOwner {
    upgradeTo(implementation);
    require(address(this).delegatecall(data));
  }
}

contract OwnableDelegateProxy is OwnedUpgradeabilityProxy {

    constructor(address owner, address initialImplementation, bytes calldata)
        public
    {
        setUpgradeabilityOwner(owner);
        _upgradeTo(initialImplementation);
        require(initialImplementation.delegatecall(calldata));
    }

}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"initialAddressSet","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"endGrantAuthentication","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"revokeAuthentication","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"pending","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"contracts","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"delegateProxyImplementation","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"proxies","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"startGrantAuthentication","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"registerProxy","outputs":[{"name":"proxy","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"DELAY_PERIOD","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"implementation","type":"address"}],"name":"setDelegateProxyImplementation","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"authAddress","type":"address"}],"name":"grantInitialAuthentication","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

Deployed Bytecode

0x6080604052600436106100e55763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146100ea5780631a86ac4f1461017457806338b6e4071461019d57806353376d1f146101c05780635eebea20146101e157806369dc9ff314610214578063715018a6146102355780638da5cb5b1461024a57806397204d8e1461027b578063c455279114610290578063d4e8e063146102b1578063ddd81f82146102d2578063e71a02e1146102e7578063ebc0be54146102fc578063ef7f38341461031d578063f2fde38b1461033e575b600080fd5b3480156100f657600080fd5b506100ff61035f565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610139578181015183820152602001610121565b50505050905090810190601f1680156101665780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561018057600080fd5b50610189610398565b604080519115158252519081900360200190f35b3480156101a957600080fd5b506101be600160a060020a03600435166103a1565b005b3480156101cc57600080fd5b506101be600160a060020a036004351661045c565b3480156101ed57600080fd5b50610202600160a060020a0360043516610494565b60408051918252519081900360200190f35b34801561022057600080fd5b50610189600160a060020a03600435166104a6565b34801561024157600080fd5b506101be6104bb565b34801561025657600080fd5b5061025f610527565b60408051600160a060020a039092168252519081900360200190f35b34801561028757600080fd5b5061025f610536565b34801561029c57600080fd5b5061025f600160a060020a0360043516610545565b3480156102bd57600080fd5b506101be600160a060020a0360043516610560565b3480156102de57600080fd5b5061025f6105dd565b3480156102f357600080fd5b5061020261077c565b34801561030857600080fd5b506101be600160a060020a0360043516610782565b34801561032957600080fd5b506101be600160a060020a03600435166107de565b34801561034a57600080fd5b506101be600160a060020a036004351661083a565b6040805190810160405280602081526020017f50726f6a6563742053746172426c6f636b2050726f787920526567697374727981525081565b60065460ff1681565b600054600160a060020a031633146103b857600080fd5b600160a060020a03811660009081526004602052604090205460ff161580156103f85750600160a060020a03811660009081526003602052604090205415155b80156104205750600554600160a060020a038216600090815260036020526040902054429101105b151561042b57600080fd5b600160a060020a0316600090815260036020908152604080832083905560049091529020805460ff19166001179055565b600054600160a060020a0316331461047357600080fd5b600160a060020a03166000908152600460205260409020805460ff19169055565b60036020526000908152604090205481565b60046020526000908152604090205460ff1681565b600054600160a060020a031633146104d257600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600054600160a060020a031681565b600154600160a060020a031681565b600260205260009081526040902054600160a060020a031681565b600054600160a060020a0316331461057757600080fd5b600160a060020a03811660009081526004602052604090205460ff161580156105b65750600160a060020a038116600090815260036020526040902054155b15156105c157600080fd5b600160a060020a03166000908152600360205260409020429055565b33600090815260026020526040812054600160a060020a03161561060057600080fd5b600154604080513360248201819052306044808401919091528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc955000000000000000000000000000000000000000000000000000000001790529091600160a060020a0316906106876108ce565b8084600160a060020a0316600160a060020a0316815260200183600160a060020a0316600160a060020a0316815260200180602001828103825283818151815260200191508051906020019080838360005b838110156106f15781810151838201526020016106d9565b50505050905090810190601f16801561071e5780820380516001836020036101000a031916815260200191505b50945050505050604051809103906000f080158015610741573d6000803e3d6000fd5b50336000908152600260205260409020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038316179055919050565b60055481565b600054600160a060020a0316331461079957600080fd5b600154600160a060020a0316156107af57600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600054600160a060020a031633146107f557600080fd5b60065460ff161561080557600080fd5b6006805460ff199081166001908117909255600160a060020a0390921660009081526004602052604090208054909216179055565b600054600160a060020a0316331461085157600080fd5b600160a060020a038116151561086657600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6040516105af806108df833901905600608060405234801561001057600080fd5b506040516105af3803806105af8339810160409081528151602083015191830151909201610046836401000000006100e0810204565b61005882640100000000610102810204565b81600160a060020a03168160405180828051906020019080838360005b8381101561008d578181015183820152602001610075565b50505050905090810190601f1680156100ba5780820380516001836020036101000a031916815260200191505b50915050600060405180830381855af491505015156100d857600080fd5b505050610165565b60018054600160a060020a031916600160a060020a0392909216919091179055565b600054600160a060020a038281169116141561011d57600080fd5b60008054600160a060020a031916600160a060020a038316908117825560405190917fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b91a250565b61043b806101746000396000f3006080604052600436106100825763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663025313a281146100c85780633659cfe6146100f95780634555d5c91461011c5780634f1ef286146101435780635c60da1b1461019d5780636fde8202146101b2578063f1739cae146101c7575b600061008c6101e8565b9050600160a060020a03811615156100a357600080fd5b60405136600082376000803683855af43d806000843e8180156100c4578184f35b8184fd5b3480156100d457600080fd5b506100dd6101f7565b60408051600160a060020a039092168252519081900360200190f35b34801561010557600080fd5b5061011a600160a060020a0360043516610206565b005b34801561012857600080fd5b5061013161022e565b60408051918252519081900360200190f35b60408051602060046024803582810135601f810185900485028601850190965285855261011a958335600160a060020a03169536956044949193909101919081908401838280828437509497506102339650505050505050565b3480156101a957600080fd5b506100dd6101e8565b3480156101be57600080fd5b506100dd6102dc565b3480156101d357600080fd5b5061011a600160a060020a03600435166102eb565b600054600160a060020a031690565b60006102016102dc565b905090565b61020e6101f7565b600160a060020a0316331461022257600080fd5b61022b81610370565b50565b600290565b61023b6101f7565b600160a060020a0316331461024f57600080fd5b61025882610206565b30600160a060020a03168160405180828051906020019080838360005b8381101561028d578181015183820152602001610275565b50505050905090810190601f1680156102ba5780820380516001836020036101000a031916815260200191505b50915050600060405180830381855af491505015156102d857600080fd5b5050565b600154600160a060020a031690565b6102f36101f7565b600160a060020a0316331461030757600080fd5b600160a060020a038116151561031c57600080fd5b7f5a3e66efaa1e445ebd894728a69d6959842ea1e97bd79b892797106e270efcd96103456101f7565b60408051600160a060020a03928316815291841660208301528051918290030190a161022b816103e0565b600054600160a060020a038281169116141561038b57600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038316908117825560405190917fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b91a250565b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555600a165627a7a72305820420f34ce9749e0a83490eb408f11ac626c260759c1f021263976bead2bad15450029a165627a7a72305820e7d94f0aa638d7541e8e55665c206391f47d667cfb825ffe1832ab82cacf28ab0029

Deployed Bytecode Sourcemap

5638:967:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5696:64;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5696:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5696:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5827:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5827:37:0;;;;;;;;;;;;;;;;;;;;;;4429:256;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4429:256:0;-1:-1:-1;;;;;4429:256:0;;;;;;;4889:127;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4889:127:0;-1:-1:-1;;;;;4889:127:0;;;;;3027:39;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3027:39:0;-1:-1:-1;;;;;3027:39:0;;;;;;;;;;;;;;;;;;;;;3127:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3127:41:0;-1:-1:-1;;;;;3127:41:0;;;;;1013:114;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1013:114:0;;;;50:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;50:20:0;;;;;;;;-1:-1:-1;;;;;50:20:0;;;;;;;;;;;;;;2833:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2833:42:0;;;;2926:55;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2926:55:0;-1:-1:-1;;;;;2926:55:0;;;;;4020:185;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4020:185:0;-1:-1:-1;;;;;4020:185:0;;;;;5248:381;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5248:381:0;;;;3763:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3763:34:0;;;;5873:211;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5873:211:0;-1:-1:-1;;;;;5873:211:0;;;;;6381:219;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6381:219:0;-1:-1:-1;;;;;6381:219:0;;;;;740:178;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;740:178:0;-1:-1:-1;;;;;740:178:0;;;;;5696:64;;;;;;;;;;;;;;;;;;;;:::o;5827:37::-;;;;;;:::o;4429:256::-;553:5;;-1:-1:-1;;;;;553:5:0;539:10;:19;531:28;;;;;;-1:-1:-1;;;;;4536:15:0;;;;;;:9;:15;;;;;;;;4535:16;:38;;;;-1:-1:-1;;;;;;4555:13:0;;;;;;:7;:13;;;;;;:18;;4535:38;:80;;;;-1:-1:-1;4595:12:0;;-1:-1:-1;;;;;4579:13:0;;;;;;:7;:13;;;;;;4611:3;4579:28;;4578:36;4535:80;4527:89;;;;;;;;-1:-1:-1;;;;;4627:13:0;4643:1;4627:13;;;:7;:13;;;;;;;;:17;;;4655:9;:15;;;;;:22;;-1:-1:-1;;4655:22:0;4673:4;4655:22;;;4429:256::o;4889:127::-;553:5;;-1:-1:-1;;;;;553:5:0;539:10;:19;531:28;;;;;;-1:-1:-1;;;;;4985:15:0;5003:5;4985:15;;;:9;:15;;;;;:23;;-1:-1:-1;;4985:23:0;;;4889:127::o;3027:39::-;;;;;;;;;;;;;:::o;3127:41::-;;;;;;;;;;;;;;;:::o;1013:114::-;553:5;;-1:-1:-1;;;;;553:5:0;539:10;:19;531:28;;;;;;1090:5;;;1071:25;;-1:-1:-1;;;;;1090:5:0;;;;1071:25;;;1119:1;1103:18;;-1:-1:-1;;1103:18:0;;;1013:114::o;50:20::-;;;-1:-1:-1;;;;;50:20:0;;:::o;2833:42::-;;;-1:-1:-1;;;;;2833:42:0;;:::o;2926:55::-;;;;;;;;;;;;-1:-1:-1;;;;;2926:55:0;;:::o;4020:185::-;553:5;;-1:-1:-1;;;;;553:5:0;539:10;:19;531:28;;;;;;-1:-1:-1;;;;;4129:15:0;;;;;;:9;:15;;;;;;;;4128:16;:38;;;;-1:-1:-1;;;;;;4148:13:0;;;;;;:7;:13;;;;;;:18;4128:38;4120:47;;;;;;;;-1:-1:-1;;;;;4178:13:0;;;;;:7;:13;;;;;4194:3;4178:19;;4020:185::o;5248:381::-;5367:10;5307:26;5359:19;;;:7;:19;;;;;;-1:-1:-1;;;;;5359:19:0;:33;5351:42;;;;;;5449:27;;5478:81;;;5437:10;5478:81;;;;;;5553:4;5478:81;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;5478:81:0;;;;;;;;25:18:-1;;61:17;;5478:81:0;182:15:-1;5478:81:0;179:29:-1;160:49;;5437:10:0;;-1:-1:-1;;;;;5449:27:0;;5412:148;;:::i;:::-;;;-1:-1:-1;;;;;5412:148:0;-1:-1:-1;;;;;5412:148:0;;;;;;-1:-1:-1;;;;;5412:148:0;-1:-1:-1;;;;;5412:148:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5412:148:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;5579:10:0;5571:19;;;;:7;:19;;;;;:27;;-1:-1:-1;;5571:27:0;-1:-1:-1;;;;;5571:27:0;;;;;;5248:381;-1:-1:-1;5248:381:0:o;3763:34::-;;;;:::o;5873:211::-;553:5;;-1:-1:-1;;;;;553:5:0;539:10;:19;531:28;;;;;;5979:27;;-1:-1:-1;;;;;5979:27:0;:41;5971:50;;;;;;6032:27;:44;;-1:-1:-1;;6032:44:0;-1:-1:-1;;;;;6032:44:0;;;;;;;;;;5873:211::o;6381:219::-;553:5;;-1:-1:-1;;;;;553:5:0;539:10;:19;531:28;;;;;;6499:17;;;;6498:18;6490:27;;;;;;6528:17;:24;;-1:-1:-1;;6528:24:0;;;6548:4;6528:24;;;;;;-1:-1:-1;;;;;6563:22:0;;;6528:17;6563:22;;;:9;:22;;;;;:29;;;;;;;;6381:219::o;740:178::-;553:5;;-1:-1:-1;;;;;553:5:0;539:10;:19;531:28;;;;;;-1:-1:-1;;;;;817:22:0;;;;809:31;;;;;;873:5;;;852:37;;-1:-1:-1;;;;;852:37:0;;;;873:5;;;852:37;;;896:5;:16;;-1:-1:-1;;896:16:0;-1:-1:-1;;;;;896:16:0;;;;;;;;;;740:178::o;5638:967::-;;;;;;;;;;:::o

Swarm Source

bzzr://e7d94f0aa638d7541e8e55665c206391f47d667cfb825ffe1832ab82cacf28ab

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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