ETH Price: $3,219.50 (+3.41%)

Contract

0x92e6E43f99809dF84ed2D533e1FD8017eb966ee2
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Registry216110052025-01-12 21:09:5947 hrs ago1736716199IN
0x92e6E43f...7eb966ee2
0 ETH0.000325932.32342541
Set To Expire216069352025-01-12 7:31:592 days ago1736667119IN
0x92e6E43f...7eb966ee2
0 ETH0.000061352
Set Registry215892662025-01-09 20:19:595 days ago1736453999IN
0x92e6E43f...7eb966ee2
0 ETH0.0021153215.07921831
Set Registry215741292025-01-07 17:37:117 days ago1736271431IN
0x92e6E43f...7eb966ee2
0 ETH0.0004590711.8
Set Registry215653812025-01-06 12:20:118 days ago1736166011IN
0x92e6E43f...7eb966ee2
0 ETH0.0014226910.14174938
Set Registry215571062025-01-05 8:32:479 days ago1736065967IN
0x92e6E43f...7eb966ee2
0 ETH0.000853956.0874635
Set Registry215436582025-01-03 11:28:2311 days ago1735903703IN
0x92e6E43f...7eb966ee2
0 ETH0.000789545.62827629
Set To Expire215234482024-12-31 15:49:2314 days ago1735660163IN
0x92e6E43f...7eb966ee2
0 ETH0.0006886622.45025985
Set Registry215226322024-12-31 13:03:4714 days ago1735650227IN
0x92e6E43f...7eb966ee2
0 ETH0.001129648.05272099
Set Registry215187132024-12-30 23:55:4714 days ago1735602947IN
0x92e6E43f...7eb966ee2
0 ETH0.000883776.3
Set To Expire215137492024-12-30 7:18:1115 days ago1735543091IN
0x92e6E43f...7eb966ee2
0 ETH0.00008312.70912068
Set Registry215097642024-12-29 17:56:5916 days ago1735495019IN
0x92e6E43f...7eb966ee2
0 ETH0.000824355.87644221
Set Registry215074182024-12-29 10:05:2316 days ago1735466723IN
0x92e6E43f...7eb966ee2
0 ETH0.000494513.52520551
Set Registry215047552024-12-29 1:10:5916 days ago1735434659IN
0x92e6E43f...7eb966ee2
0 ETH0.000532123.79331224
Set Registry215004682024-12-28 10:48:4717 days ago1735382927IN
0x92e6E43f...7eb966ee2
0 ETH0.00056674.03979619
Set Registry214956062024-12-27 18:32:1118 days ago1735324331IN
0x92e6E43f...7eb966ee2
0 ETH0.001229238.76266434
Set Registry214928582024-12-27 9:20:1118 days ago1735291211IN
0x92e6E43f...7eb966ee2
0 ETH0.001149738.19594206
Set To Expire214762252024-12-25 1:32:4720 days ago1735090367IN
0x92e6E43f...7eb966ee2
0 ETH0.000137674.48808135
Set To Expire214722372024-12-24 12:09:5921 days ago1735042199IN
0x92e6E43f...7eb966ee2
0 ETH0.000182495.94925826
Set Registry214642712024-12-23 9:24:2322 days ago1734945863IN
0x92e6E43f...7eb966ee2
0 ETH0.000275957.09314076
Set Registry214613992024-12-22 23:45:2322 days ago1734911123IN
0x92e6E43f...7eb966ee2
0 ETH0.000739395.27083449
Set Registry214378522024-12-19 16:46:4726 days ago1734626807IN
0x92e6E43f...7eb966ee2
0 ETH0.0027926919.90786232
Set Registry214339952024-12-19 3:50:5926 days ago1734580259IN
0x92e6E43f...7eb966ee2
0 ETH0.0015546511.08245121
Set Registry214289732024-12-18 10:58:5927 days ago1734519539IN
0x92e6E43f...7eb966ee2
0 ETH0.002490117.75080075
Set Registry214276602024-12-18 6:34:2327 days ago1734503663IN
0x92e6E43f...7eb966ee2
0 ETH0.000418410.7546222
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AddressRegistry

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 3 : AddressRegistry.sol
// SPDX-License-Identifier: MIT
// Votium Address Registry

pragma solidity ^0.8.0;

import "./Ownable.sol";

contract AddressRegistry is Ownable {
  struct Registry {
    uint256 start;      // when first registering, there is a delay until the next vlCVX voting epoch starts
    address to;         // forward rewards to alternate address OR 0x0 address for OPT OUT of rewards
    uint256 expiration; // when ending an active registration, expiration is set to the next vlCVX voting epoch
                        // an active registration cannot be changed until after it is expired (one vote round delay when changing active registration)
  }
  mapping(address => Registry) public registry;

  mapping(address => bool) public inOptOutHistory;
  mapping(address => bool) public inForwardHistory;
  address[] public optOutHistory;
  address[] public forwardHistory;

  // address changes do not take effect until the next vote starts
  uint256 public constant eDuration = 86400 * 14;


  // Set forwarding address or OPT OUT of rewards by setting to 0x0 address
  // Registration is active until setToExpire() is called, and then remains active until the next reward period
  function setRegistry(address _to) public {
    uint256 current = currentEpoch();
    require(registry[msg.sender].start == 0 || registry[msg.sender].expiration <= current,"Registration is still active");
    registry[msg.sender].start = current+eDuration;
    registry[msg.sender].to = _to;
    registry[msg.sender].expiration = 0xfffffffff;
    if(_to == address(0)) {
      // prevent duplicate entry in optOutHistory array
      if(!inOptOutHistory[msg.sender]) {
        optOutHistory.push(msg.sender);
        inOptOutHistory[msg.sender] = true;
      }
    } else if(!inForwardHistory[msg.sender]) {
        forwardHistory.push(msg.sender);
        inForwardHistory[msg.sender] = true;
    }
    emit setReg(msg.sender, _to, registry[msg.sender].start);
  }

  // Sets a registration to expire on the following epoch (cannot change registration during an epoch)
  function setToExpire() public {
    uint256 next = nextEpoch();
    require(registry[msg.sender].start > 0 && registry[msg.sender].expiration > next,"Not registered or expiration already pending");
    // if not started yet, nullify instead of setting expiration
    if(next == registry[msg.sender].start) {
      registry[msg.sender].start = 0;
      registry[msg.sender].to = address(0);
    } else {
      registry[msg.sender].expiration = next;
    }
    emit expReg(msg.sender, next);
  }

  // supply an array of addresses, returns their destination (same address for no change, 0x0 for opt-out, different address for forwarding)
  function batchAddressCheck(address[] memory accounts) external view returns (address[] memory) {
    uint256 current = currentEpoch();
    for(uint256 i=0; i<accounts.length; i++) {
      // if registration active return "to", otherwise return checked address (no forwarding)
      if(registry[accounts[i]].start <= current && registry[accounts[i]].start != 0 && registry[accounts[i]].expiration > current) {
        accounts[i] = registry[accounts[i]].to;
      }
    }
    return accounts;
  }

  // length of optOutHistory - needed for retrieving paginated results from optOutPage()
  function optOutLength() public view returns (uint256) {
    return optOutHistory.length;
  }

  // returns list of actively opted-out addresses using pagination
  function optOutPage(uint256 size, uint256 page) public view returns (address[] memory) {
    page = size*page;
    uint256 current = currentEpoch();
    uint256 n = 0;
    for(uint256 i=page; i<optOutHistory.length; i++) {
      if(registry[optOutHistory[i]].start <= current && registry[optOutHistory[i]].expiration > current && registry[optOutHistory[i]].to == address(0)) {
        n++;
        if(n == size) { break; }
      }
    }
    address[] memory optOuts = new address[](n);
    n = 0;
    for(uint256 i=page; i<optOutHistory.length; i++) {
      if(registry[optOutHistory[i]].start <= current && registry[optOutHistory[i]].expiration > current && registry[optOutHistory[i]].to == address(0)) {
        optOuts[n] = optOutHistory[i];
        n++;
        if(n == size) { break; }
      }
    }
    return optOuts;
  }

  // length of forwardHistory - needed for retrieving paginated results from forwardPage()
  function forwardLength() public view returns (uint256) {
    return forwardHistory.length;
  }

  // returns list of actively opted-out addresses using pagination
  function forwardPage(uint256 size, uint256 page) public view returns (address[] memory) {
    page = size*page;
    uint256 current = currentEpoch();
    uint256 n = 0;
    for(uint256 i=page; i<forwardHistory.length; i++) {
      if(registry[forwardHistory[i]].start <= current && registry[forwardHistory[i]].expiration > current && registry[forwardHistory[i]].to != address(0)) {
        n++;
        if(n == size) { break; }
      }
    }
    address[] memory forwards = new address[](n*2);
    n = 0;
    for(uint256 i=page; i<forwardHistory.length; i++) {
      if(registry[forwardHistory[i]].start <= current && registry[forwardHistory[i]].expiration > current && registry[forwardHistory[i]].to != address(0)) {
        forwards[n] = forwardHistory[i];
        forwards[n+1] = registry[forwardHistory[i]].to;
        n+=2;
        if(n == size*2) { break; }
      }
    }
    return forwards;
  }

  // returns start of current Epoch
  function currentEpoch() public view returns (uint256) {
    return block.timestamp/eDuration*eDuration;
  }

  // returns start of next Epoch
  function nextEpoch() public view returns (uint256) {
    return block.timestamp/eDuration*eDuration+eDuration;
  }

  // only used for rescuing mistakenly sent funds or other unexpected needs
  function execute(address _to, uint256 _value, bytes calldata _data) external onlyOwner returns (bool, bytes memory) {
    (bool success, bytes memory result) = _to.call{value:_value}(_data);
    return (success, result);
  }

  // multi-sig functions for edge cases
  function forceRegistry(address _from, address _to) public onlyOwner {
    uint256 current = currentEpoch();
    require(registry[_from].start == 0 || registry[_from].expiration < current,"Registration is still active");
    registry[_from].start = current+eDuration;
    registry[_from].to = _to;
    registry[_from].expiration = 0xfffffffff;
    if(_to == address(0)) {
      // prevent duplicate entry in optOutHistory array
      if(!inOptOutHistory[_from]) {
        optOutHistory.push(_from);
        inOptOutHistory[_from] = true;
      }
    } else if(!inForwardHistory[_from]) {
        forwardHistory.push(_from);
        inForwardHistory[_from] = true;
    }
    emit setReg(_from, _to, registry[_from].start);
  }

  function forceToExpire(address _from) public onlyOwner {
    uint256 next = nextEpoch();
    require(registry[_from].start > 0 && registry[_from].expiration > next,"Not registered or expiration already pending");
    // if not started yet, nullify instead of setting expiration
    if(next == registry[_from].start) {
      registry[_from].start = 0;
      registry[_from].to = address(0);
    } else {
      registry[_from].expiration = next;
    }
    emit expReg(_from, next);
  }

  event setReg(address indexed _from, address indexed _to, uint256 indexed _start);
  event expReg(address indexed _from, uint256 indexed _end);

}

File 2 of 3 : Ownable.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "@openzeppelin/contracts/utils/Context.sol";
/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {

	  address private _owner = 0xe39b8617D571CEe5e75e1EC6B2bb40DdC8CF6Fa3; // Votium multi-sig address

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


    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

File 3 of 3 : Context.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

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

Contract Security Audit

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"uint256","name":"_end","type":"uint256"}],"name":"expReg","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"uint256","name":"_start","type":"uint256"}],"name":"setReg","type":"event"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"batchAddressCheck","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"eDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"execute","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"forceRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"}],"name":"forceToExpire","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"forwardHistory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"forwardLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"size","type":"uint256"},{"internalType":"uint256","name":"page","type":"uint256"}],"name":"forwardPage","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"inForwardHistory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"inOptOutHistory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"optOutHistory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"optOutLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"size","type":"uint256"},{"internalType":"uint256","name":"page","type":"uint256"}],"name":"optOutPage","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"registry","outputs":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"expiration","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"}],"name":"setRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setToExpire","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6080604052600080546001600160a01b03191673e39b8617d571cee5e75e1ec6b2bb40ddc8cf6fa317905534801561003657600080fd5b5061183c806100466000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c8063a91ee0dc116100ad578063bec5cd7d11610071578063bec5cd7d146102d3578063da6491f9146102e6578063f2fde38b146102f9578063fdab2c9e1461030c578063ffdb68071461031657600080fd5b8063a91ee0dc1461026c578063aea0e78b1461027f578063b16d58ff14610287578063b61d27f6146102aa578063be3c0457146102cb57600080fd5b8063712e51a8116100f4578063712e51a81461021657806376671808146102365780638da5cb5b1461023e57806396d0fdda1461024f578063a7e4e5541461025957600080fd5b8063038defd71461013157806306972dcf1461019357806336277c70146101a5578063472a3279146101d05780636ce17bac146101e3575b600080fd5b61016b61013f366004611430565b60016020819052600091825260409091208054918101546002909101546001600160a01b039091169083565b604080519384526001600160a01b039092166020840152908201526060015b60405180910390f35b6004545b60405190815260200161018a565b6101b86101b33660046115d8565b610329565b6040516001600160a01b03909116815260200161018a565b6101b86101de3660046115d8565b610353565b6102066101f1366004611430565b60036020526000908152604090205460ff1681565b604051901515815260200161018a565b61022961022436600461150c565b610363565b60405161018a9190611623565b610197610503565b6000546001600160a01b03166101b8565b610257610522565b005b6102296102673660046115f1565b610608565b61025761027a366004611430565b6109ae565b610197610bbb565b610206610295366004611430565b60026020526000908152604090205460ff1681565b6102bd6102b8366004611485565b610be0565b60405161018a929190611670565b600554610197565b6102576102e1366004611430565b610c7e565b6102576102f4366004611452565b610dbc565b610257610307366004611430565b61102b565b6101976212750081565b6102296103243660046115f1565b611115565b6004818154811061033957600080fd5b6000918252602090912001546001600160a01b0316905081565b6005818154811061033957600080fd5b6060600061036f610503565b905060005b83518110156104fb578160016000868481518110610394576103946117da565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060000154111580156104105750600160008583815181106103df576103df6117da565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060000154600014155b801561045c5750816001600086848151811061042e5761042e6117da565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060020154115b156104e95760016000858381518110610477576104776117da565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060010160009054906101000a90046001600160a01b03168482815181106104c8576104c86117da565b60200260200101906001600160a01b031690816001600160a01b0316815250505b806104f3816117a9565b915050610374565b509192915050565b6000621275006105138142611768565b61051d919061178a565b905090565b600061052c610bbb565b336000908152600160205260409020549091501580159061055e57503360009081526001602052604090206002015481105b6105835760405162461bcd60e51b815260040161057a906116cf565b60405180910390fd5b336000908152600160205260409020548114156105c25733600090815260016020819052604082209182550180546001600160a01b03191690556105d8565b3360009081526001602052604090206002018190555b604051819033907f50434fd14c182d9704caecbf26061337d70eabc7f5ce8b8216fefcaf9644bcb990600090a350565b6060610614828461178a565b91506000610620610503565b90506000835b60055481101561074357826001600060058481548110610648576106486117da565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118015906106b8575082600160006005848154811061068e5761068e6117da565b60009182526020808320909101546001600160a01b03168352820192909252604001902060020154115b8015610712575060006001600160a01b031660016000600584815481106106e1576106e16117da565b60009182526020808320909101546001600160a01b0390811684529083019390935260409091019020600101541614155b156107315781610721816117a9565b9250508582141561073157610743565b8061073b816117a9565b915050610626565b50600061075182600261178a565b67ffffffffffffffff811115610769576107696117f0565b604051908082528060200260200182016040528015610792578160200160208202803683370190505b50600092509050845b6005548110156109a4578360016000600584815481106107bd576107bd6117da565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180159061082d5750836001600060058481548110610803576108036117da565b60009182526020808320909101546001600160a01b03168352820192909252604001902060020154115b8015610887575060006001600160a01b03166001600060058481548110610856576108566117da565b60009182526020808320909101546001600160a01b0390811684529083019390935260409091019020600101541614155b15610992576005818154811061089f5761089f6117da565b9060005260206000200160009054906101000a90046001600160a01b03168284815181106108cf576108cf6117da565b60200260200101906001600160a01b031690816001600160a01b0316815250506001600060058381548110610906576109066117da565b60009182526020808320909101546001600160a01b0390811684529083019390935260409091019020600190810154909116908390610946908690611750565b81518110610956576109566117da565b6001600160a01b0390921660209283029190910190910152610979600284611750565b925061098687600261178a565b831415610992576109a4565b8061099c816117a9565b91505061079b565b5095945050505050565b60006109b8610503565b3360009081526001602052604090205490915015806109e95750336000908152600160205260409020600201548110155b610a355760405162461bcd60e51b815260206004820152601c60248201527f526567697374726174696f6e206973207374696c6c2061637469766500000000604482015260640161057a565b610a426212750082611750565b336000908152600160208190526040909120918255810180546001600160a01b0319166001600160a01b038516908117909155640fffffffff600290920191909155610aff573360009081526002602052604090205460ff16610afa576004805460018181019092557f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b031916339081179091556000908152600260205260409020805460ff191690911790555b610b71565b3360009081526003602052604090205460ff16610b71576005805460018181019092557f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b031916339081179091556000908152600360205260409020805460ff191690911790555b3360008181526001602052604080822054905190926001600160a01b0386169290917f0dfbe4205bf572b05cf72c984669443144075eddc3672b24fca440052b4ed8b59190a45050565b60006212750080610bcc8142611768565b610bd6919061178a565b61051d9190611750565b600080546060906001600160a01b03163314610c0e5760405162461bcd60e51b815260040161057a9061171b565b600080876001600160a01b0316878787604051610c2c929190611613565b60006040518083038185875af1925050503d8060008114610c69576040519150601f19603f3d011682016040523d82523d6000602084013e610c6e565b606091505b5090999098509650505050505050565b6000546001600160a01b03163314610ca85760405162461bcd60e51b815260040161057a9061171b565b6000610cb2610bbb565b6001600160a01b03831660009081526001602052604090205490915015801590610cf657506001600160a01b03821660009081526001602052604090206002015481105b610d125760405162461bcd60e51b815260040161057a906116cf565b6001600160a01b038216600090815260016020526040902054811415610d63576001600160a01b038216600090815260016020819052604082209182550180546001600160a01b0319169055610d82565b6001600160a01b03821660009081526001602052604090206002018190555b60405181906001600160a01b038416907f50434fd14c182d9704caecbf26061337d70eabc7f5ce8b8216fefcaf9644bcb990600090a35050565b6000546001600160a01b03163314610de65760405162461bcd60e51b815260040161057a9061171b565b6000610df0610503565b6001600160a01b0384166000908152600160205260409020549091501580610e3257506001600160a01b03831660009081526001602052604090206002015481115b610e7e5760405162461bcd60e51b815260206004820152601c60248201527f526567697374726174696f6e206973207374696c6c2061637469766500000000604482015260640161057a565b610e8b6212750082611750565b6001600160a01b038481166000908152600160208190526040909120928355820180546001600160a01b0319169185169182179055640fffffffff600290920191909155610f5c576001600160a01b03831660009081526002602052604090205460ff16610f57576004805460018082019092557f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b0319166001600160a01b0386169081179091556000908152600260205260409020805460ff191690911790555b610fe0565b6001600160a01b03831660009081526003602052604090205460ff16610fe0576005805460018082019092557f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b0319166001600160a01b0386169081179091556000908152600360205260409020805460ff191690911790555b6001600160a01b038084166000818152600160205260408082205490519093861692917f0dfbe4205bf572b05cf72c984669443144075eddc3672b24fca440052b4ed8b591a4505050565b6000546001600160a01b031633146110555760405162461bcd60e51b815260040161057a9061171b565b6001600160a01b0381166110ba5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161057a565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6060611121828461178a565b9150600061112d610503565b90506000835b60045481101561124f57826001600060048481548110611155576111556117da565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118015906111c5575082600160006004848154811061119b5761119b6117da565b60009182526020808320909101546001600160a01b03168352820192909252604001902060020154115b801561121e575060006001600160a01b031660016000600484815481106111ee576111ee6117da565b60009182526020808320909101546001600160a01b03908116845290830193909352604090910190206001015416145b1561123d578161122d816117a9565b9250508582141561123d5761124f565b80611247816117a9565b915050611133565b5060008167ffffffffffffffff81111561126b5761126b6117f0565b604051908082528060200260200182016040528015611294578160200160208202803683370190505b50600092509050845b6004548110156109a4578360016000600484815481106112bf576112bf6117da565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180159061132f5750836001600060048481548110611305576113056117da565b60009182526020808320909101546001600160a01b03168352820192909252604001902060020154115b8015611388575060006001600160a01b03166001600060048481548110611358576113586117da565b60009182526020808320909101546001600160a01b03908116845290830193909352604090910190206001015416145b1561140257600481815481106113a0576113a06117da565b9060005260206000200160009054906101000a90046001600160a01b03168284815181106113d0576113d06117da565b6001600160a01b0390921660209283029190910190910152826113f2816117a9565b93505086831415611402576109a4565b8061140c816117a9565b91505061129d565b80356001600160a01b038116811461142b57600080fd5b919050565b60006020828403121561144257600080fd5b61144b82611414565b9392505050565b6000806040838503121561146557600080fd5b61146e83611414565b915061147c60208401611414565b90509250929050565b6000806000806060858703121561149b57600080fd5b6114a485611414565b935060208501359250604085013567ffffffffffffffff808211156114c857600080fd5b818701915087601f8301126114dc57600080fd5b8135818111156114eb57600080fd5b8860208285010111156114fd57600080fd5b95989497505060200194505050565b6000602080838503121561151f57600080fd5b823567ffffffffffffffff8082111561153757600080fd5b818501915085601f83011261154b57600080fd5b81358181111561155d5761155d6117f0565b8060051b604051601f19603f83011681018181108582111715611582576115826117f0565b604052828152858101935084860182860187018a10156115a157600080fd5b600095505b838610156115cb576115b781611414565b8552600195909501949386019386016115a6565b5098975050505050505050565b6000602082840312156115ea57600080fd5b5035919050565b6000806040838503121561160457600080fd5b50508035926020909101359150565b8183823760009101908152919050565b6020808252825182820181905260009190848201906040850190845b818110156116645783516001600160a01b03168352928401929184019160010161163f565b50909695505050505050565b821515815260006020604081840152835180604085015260005b818110156116a65785810183015185820160600152820161168a565b818111156116b8576000606083870101525b50601f01601f191692909201606001949350505050565b6020808252602c908201527f4e6f742072656769737465726564206f722065787069726174696f6e20616c7260408201526b656164792070656e64696e6760a01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60008219821115611763576117636117c4565b500190565b60008261178557634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156117a4576117a46117c4565b500290565b60006000198214156117bd576117bd6117c4565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfea2646970667358221220ad12feede3bc688e7d7c0e2d68d91f62073443b970fcd9a8c8fb0bd8f6c2652b64736f6c63430008070033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061012c5760003560e01c8063a91ee0dc116100ad578063bec5cd7d11610071578063bec5cd7d146102d3578063da6491f9146102e6578063f2fde38b146102f9578063fdab2c9e1461030c578063ffdb68071461031657600080fd5b8063a91ee0dc1461026c578063aea0e78b1461027f578063b16d58ff14610287578063b61d27f6146102aa578063be3c0457146102cb57600080fd5b8063712e51a8116100f4578063712e51a81461021657806376671808146102365780638da5cb5b1461023e57806396d0fdda1461024f578063a7e4e5541461025957600080fd5b8063038defd71461013157806306972dcf1461019357806336277c70146101a5578063472a3279146101d05780636ce17bac146101e3575b600080fd5b61016b61013f366004611430565b60016020819052600091825260409091208054918101546002909101546001600160a01b039091169083565b604080519384526001600160a01b039092166020840152908201526060015b60405180910390f35b6004545b60405190815260200161018a565b6101b86101b33660046115d8565b610329565b6040516001600160a01b03909116815260200161018a565b6101b86101de3660046115d8565b610353565b6102066101f1366004611430565b60036020526000908152604090205460ff1681565b604051901515815260200161018a565b61022961022436600461150c565b610363565b60405161018a9190611623565b610197610503565b6000546001600160a01b03166101b8565b610257610522565b005b6102296102673660046115f1565b610608565b61025761027a366004611430565b6109ae565b610197610bbb565b610206610295366004611430565b60026020526000908152604090205460ff1681565b6102bd6102b8366004611485565b610be0565b60405161018a929190611670565b600554610197565b6102576102e1366004611430565b610c7e565b6102576102f4366004611452565b610dbc565b610257610307366004611430565b61102b565b6101976212750081565b6102296103243660046115f1565b611115565b6004818154811061033957600080fd5b6000918252602090912001546001600160a01b0316905081565b6005818154811061033957600080fd5b6060600061036f610503565b905060005b83518110156104fb578160016000868481518110610394576103946117da565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060000154111580156104105750600160008583815181106103df576103df6117da565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060000154600014155b801561045c5750816001600086848151811061042e5761042e6117da565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060020154115b156104e95760016000858381518110610477576104776117da565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060010160009054906101000a90046001600160a01b03168482815181106104c8576104c86117da565b60200260200101906001600160a01b031690816001600160a01b0316815250505b806104f3816117a9565b915050610374565b509192915050565b6000621275006105138142611768565b61051d919061178a565b905090565b600061052c610bbb565b336000908152600160205260409020549091501580159061055e57503360009081526001602052604090206002015481105b6105835760405162461bcd60e51b815260040161057a906116cf565b60405180910390fd5b336000908152600160205260409020548114156105c25733600090815260016020819052604082209182550180546001600160a01b03191690556105d8565b3360009081526001602052604090206002018190555b604051819033907f50434fd14c182d9704caecbf26061337d70eabc7f5ce8b8216fefcaf9644bcb990600090a350565b6060610614828461178a565b91506000610620610503565b90506000835b60055481101561074357826001600060058481548110610648576106486117da565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118015906106b8575082600160006005848154811061068e5761068e6117da565b60009182526020808320909101546001600160a01b03168352820192909252604001902060020154115b8015610712575060006001600160a01b031660016000600584815481106106e1576106e16117da565b60009182526020808320909101546001600160a01b0390811684529083019390935260409091019020600101541614155b156107315781610721816117a9565b9250508582141561073157610743565b8061073b816117a9565b915050610626565b50600061075182600261178a565b67ffffffffffffffff811115610769576107696117f0565b604051908082528060200260200182016040528015610792578160200160208202803683370190505b50600092509050845b6005548110156109a4578360016000600584815481106107bd576107bd6117da565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180159061082d5750836001600060058481548110610803576108036117da565b60009182526020808320909101546001600160a01b03168352820192909252604001902060020154115b8015610887575060006001600160a01b03166001600060058481548110610856576108566117da565b60009182526020808320909101546001600160a01b0390811684529083019390935260409091019020600101541614155b15610992576005818154811061089f5761089f6117da565b9060005260206000200160009054906101000a90046001600160a01b03168284815181106108cf576108cf6117da565b60200260200101906001600160a01b031690816001600160a01b0316815250506001600060058381548110610906576109066117da565b60009182526020808320909101546001600160a01b0390811684529083019390935260409091019020600190810154909116908390610946908690611750565b81518110610956576109566117da565b6001600160a01b0390921660209283029190910190910152610979600284611750565b925061098687600261178a565b831415610992576109a4565b8061099c816117a9565b91505061079b565b5095945050505050565b60006109b8610503565b3360009081526001602052604090205490915015806109e95750336000908152600160205260409020600201548110155b610a355760405162461bcd60e51b815260206004820152601c60248201527f526567697374726174696f6e206973207374696c6c2061637469766500000000604482015260640161057a565b610a426212750082611750565b336000908152600160208190526040909120918255810180546001600160a01b0319166001600160a01b038516908117909155640fffffffff600290920191909155610aff573360009081526002602052604090205460ff16610afa576004805460018181019092557f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b031916339081179091556000908152600260205260409020805460ff191690911790555b610b71565b3360009081526003602052604090205460ff16610b71576005805460018181019092557f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b031916339081179091556000908152600360205260409020805460ff191690911790555b3360008181526001602052604080822054905190926001600160a01b0386169290917f0dfbe4205bf572b05cf72c984669443144075eddc3672b24fca440052b4ed8b59190a45050565b60006212750080610bcc8142611768565b610bd6919061178a565b61051d9190611750565b600080546060906001600160a01b03163314610c0e5760405162461bcd60e51b815260040161057a9061171b565b600080876001600160a01b0316878787604051610c2c929190611613565b60006040518083038185875af1925050503d8060008114610c69576040519150601f19603f3d011682016040523d82523d6000602084013e610c6e565b606091505b5090999098509650505050505050565b6000546001600160a01b03163314610ca85760405162461bcd60e51b815260040161057a9061171b565b6000610cb2610bbb565b6001600160a01b03831660009081526001602052604090205490915015801590610cf657506001600160a01b03821660009081526001602052604090206002015481105b610d125760405162461bcd60e51b815260040161057a906116cf565b6001600160a01b038216600090815260016020526040902054811415610d63576001600160a01b038216600090815260016020819052604082209182550180546001600160a01b0319169055610d82565b6001600160a01b03821660009081526001602052604090206002018190555b60405181906001600160a01b038416907f50434fd14c182d9704caecbf26061337d70eabc7f5ce8b8216fefcaf9644bcb990600090a35050565b6000546001600160a01b03163314610de65760405162461bcd60e51b815260040161057a9061171b565b6000610df0610503565b6001600160a01b0384166000908152600160205260409020549091501580610e3257506001600160a01b03831660009081526001602052604090206002015481115b610e7e5760405162461bcd60e51b815260206004820152601c60248201527f526567697374726174696f6e206973207374696c6c2061637469766500000000604482015260640161057a565b610e8b6212750082611750565b6001600160a01b038481166000908152600160208190526040909120928355820180546001600160a01b0319169185169182179055640fffffffff600290920191909155610f5c576001600160a01b03831660009081526002602052604090205460ff16610f57576004805460018082019092557f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b0319166001600160a01b0386169081179091556000908152600260205260409020805460ff191690911790555b610fe0565b6001600160a01b03831660009081526003602052604090205460ff16610fe0576005805460018082019092557f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b0319166001600160a01b0386169081179091556000908152600360205260409020805460ff191690911790555b6001600160a01b038084166000818152600160205260408082205490519093861692917f0dfbe4205bf572b05cf72c984669443144075eddc3672b24fca440052b4ed8b591a4505050565b6000546001600160a01b031633146110555760405162461bcd60e51b815260040161057a9061171b565b6001600160a01b0381166110ba5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161057a565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6060611121828461178a565b9150600061112d610503565b90506000835b60045481101561124f57826001600060048481548110611155576111556117da565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118015906111c5575082600160006004848154811061119b5761119b6117da565b60009182526020808320909101546001600160a01b03168352820192909252604001902060020154115b801561121e575060006001600160a01b031660016000600484815481106111ee576111ee6117da565b60009182526020808320909101546001600160a01b03908116845290830193909352604090910190206001015416145b1561123d578161122d816117a9565b9250508582141561123d5761124f565b80611247816117a9565b915050611133565b5060008167ffffffffffffffff81111561126b5761126b6117f0565b604051908082528060200260200182016040528015611294578160200160208202803683370190505b50600092509050845b6004548110156109a4578360016000600484815481106112bf576112bf6117da565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180159061132f5750836001600060048481548110611305576113056117da565b60009182526020808320909101546001600160a01b03168352820192909252604001902060020154115b8015611388575060006001600160a01b03166001600060048481548110611358576113586117da565b60009182526020808320909101546001600160a01b03908116845290830193909352604090910190206001015416145b1561140257600481815481106113a0576113a06117da565b9060005260206000200160009054906101000a90046001600160a01b03168284815181106113d0576113d06117da565b6001600160a01b0390921660209283029190910190910152826113f2816117a9565b93505086831415611402576109a4565b8061140c816117a9565b91505061129d565b80356001600160a01b038116811461142b57600080fd5b919050565b60006020828403121561144257600080fd5b61144b82611414565b9392505050565b6000806040838503121561146557600080fd5b61146e83611414565b915061147c60208401611414565b90509250929050565b6000806000806060858703121561149b57600080fd5b6114a485611414565b935060208501359250604085013567ffffffffffffffff808211156114c857600080fd5b818701915087601f8301126114dc57600080fd5b8135818111156114eb57600080fd5b8860208285010111156114fd57600080fd5b95989497505060200194505050565b6000602080838503121561151f57600080fd5b823567ffffffffffffffff8082111561153757600080fd5b818501915085601f83011261154b57600080fd5b81358181111561155d5761155d6117f0565b8060051b604051601f19603f83011681018181108582111715611582576115826117f0565b604052828152858101935084860182860187018a10156115a157600080fd5b600095505b838610156115cb576115b781611414565b8552600195909501949386019386016115a6565b5098975050505050505050565b6000602082840312156115ea57600080fd5b5035919050565b6000806040838503121561160457600080fd5b50508035926020909101359150565b8183823760009101908152919050565b6020808252825182820181905260009190848201906040850190845b818110156116645783516001600160a01b03168352928401929184019160010161163f565b50909695505050505050565b821515815260006020604081840152835180604085015260005b818110156116a65785810183015185820160600152820161168a565b818111156116b8576000606083870101525b50601f01601f191692909201606001949350505050565b6020808252602c908201527f4e6f742072656769737465726564206f722065787069726174696f6e20616c7260408201526b656164792070656e64696e6760a01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60008219821115611763576117636117c4565b500190565b60008261178557634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156117a4576117a46117c4565b500290565b60006000198214156117bd576117bd6117c4565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfea2646970667358221220ad12feede3bc688e7d7c0e2d68d91f62073443b970fcd9a8c8fb0bd8f6c2652b64736f6c63430008070033

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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