ETH Price: $2,783.68 (+0.16%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Add215716642025-01-07 9:21:4729 days ago1736241707IN
0x16515EEe...7811B3C96
0 ETH0.001294895.96747455
Remove213665102024-12-09 17:42:4757 days ago1733766167IN
0x16515EEe...7811B3C96
0 ETH0.0016349529.75683715
Add213664712024-12-09 17:34:5957 days ago1733765699IN
0x16515EEe...7811B3C96
0 ETH0.0360119733.86226105
Add213212742024-12-03 10:06:5964 days ago1733220419IN
0x16515EEe...7811B3C96
0 ETH0.0019779916.19750228
Add212137592024-11-18 9:38:5979 days ago1731922739IN
0x16515EEe...7811B3C96
0 ETH0.0013745511.25607399
Add209637212024-10-14 12:11:23114 days ago1728907883IN
0x16515EEe...7811B3C96
0 ETH0.0039215632.11319141
Add203693322024-07-23 12:48:11197 days ago1721738891IN
0x16515EEe...7811B3C96
0 ETH0.002260794.52919313
Add199746692024-05-29 9:37:11252 days ago1716975431IN
0x16515EEe...7811B3C96
0 ETH0.0012706410.4051584
Add195815262024-04-04 9:31:35307 days ago1712223095IN
0x16515EEe...7811B3C96
0 ETH0.0023750419.44895008
Add191698082024-02-06 14:32:47365 days ago1707229967IN
0x16515EEe...7811B3C96
0 ETH0.0152658949.07953669
Add190651612024-01-22 22:15:47379 days ago1705961747IN
0x16515EEe...7811B3C96
0 ETH0.0017055713.96672499
Remove190651462024-01-22 22:12:47379 days ago1705961567IN
0x16515EEe...7811B3C96
0 ETH0.0007753414.11147123
Add188275262023-12-20 13:50:23413 days ago1703080223IN
0x16515EEe...7811B3C96
0 ETH0.0781377167.5076841
Add184285332023-10-25 16:46:59468 days ago1698252419IN
0x16515EEe...7811B3C96
0 ETH0.0066989354.85669001
Add184285312023-10-25 16:46:35468 days ago1698252395IN
0x16515EEe...7811B3C96
0 ETH0.0062011450.78037709
Add184285302023-10-25 16:46:23468 days ago1698252383IN
0x16515EEe...7811B3C96
0 ETH0.0062599351.26179168
Add184285292023-10-25 16:46:11468 days ago1698252371IN
0x16515EEe...7811B3C96
0 ETH0.0062480751.16467644
Add184285202023-10-25 16:44:23468 days ago1698252263IN
0x16515EEe...7811B3C96
0 ETH0.0071866858.8507797
Add182919932023-10-06 14:15:35488 days ago1696601735IN
0x16515EEe...7811B3C96
0 ETH0.0015799812.93831588
Add182708152023-10-03 15:11:35491 days ago1696345895IN
0x16515EEe...7811B3C96
0 ETH0.0254370725.78433594
Rely179831922023-08-24 7:52:11531 days ago1692863531IN
0x16515EEe...7811B3C96
0 ETH0.001424218.97017213

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block
From
To
179831852023-08-24 7:50:47531 days ago1692863447  Contract Creation0 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TorAddressRegister_Feeds_1

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
Yes with 10000 runs

Other Settings:
london EvmVersion
File 1 of 4 : TorAddressRegister.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.16;

import {Auth} from "chronicle-std/auth/Auth.sol";

import {ITorAddressRegister} from "./ITorAddressRegister.sol";

/**
 * @title TorAddressRegister
 *
 * @notice The `TorAddressRegister` contract provides a register for tor
 *         addresses.
 *
 * @dev The contract uses the `chronicle-std/Auth` module for access control.
 *      While the register is publicly readable, state mutating functions are
 *      only callable by auth'ed addresses.
 *
 *      Note that the register does not guarantee stable ordering, may contain
 *      duplicates, and does not sanity-check newly added tor addresses.
 */
contract TorAddressRegister is ITorAddressRegister, Auth {
    /// @dev May contain duplicates.
    /// @dev Stable ordering not guaranteed.
    /// @dev May contain the empty string or other invalid tor addresses.
    string[] private _register;

    constructor(address initialAuthed) Auth(initialAuthed) {}

    /// @inheritdoc ITorAddressRegister
    function get(uint index) external view returns (string memory) {
        if (index >= _register.length) {
            revert IndexOutOfBounds(index, _register.length);
        }

        return _register[index];
    }

    /// @inheritdoc ITorAddressRegister
    function tryGet(uint index) external view returns (bool, string memory) {
        if (index >= _register.length) {
            return (false, "");
        } else {
            return (true, _register[index]);
        }
    }

    /// @inheritdoc ITorAddressRegister
    function list() external view returns (string[] memory) {
        return _register;
    }

    /// @inheritdoc ITorAddressRegister
    function count() external view returns (uint) {
        return _register.length;
    }

    /// @inheritdoc ITorAddressRegister
    function add(string calldata torAddress) external auth {
        _register.push(torAddress);
        emit TorAddressAdded(msg.sender, torAddress);
    }

    /// @inheritdoc ITorAddressRegister
    function add(string[] calldata torAddresses) external auth {
        for (uint i; i < torAddresses.length; i++) {
            _register.push(torAddresses[i]);
            emit TorAddressAdded(msg.sender, torAddresses[i]);
        }
    }

    /// @inheritdoc ITorAddressRegister
    /// @dev Note to not provide a "bulk remove" function as the ordering of tor
    ///      addresses inside the register may change during removal.
    function remove(uint index) external auth {
        if (index >= _register.length) {
            revert IndexOutOfBounds(index, _register.length);
        }

        emit TorAddressRemoved(msg.sender, _register[index]);
        _register[index] = _register[_register.length - 1];
        _register.pop();
    }
}

/**
 * @dev Contract overwrite to deploy contract instances with specific naming.
 *
 *      For more info, see docs/Deployment.md.
 */
contract TorAddressRegister_Feeds_1 is TorAddressRegister {
    constructor(address initialAuthed) TorAddressRegister(initialAuthed) {}
}

File 2 of 4 : Auth.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.16;

import {IAuth} from "./IAuth.sol";

/**
 * @title Auth Module
 *
 * @dev The `Auth` contract module provides a basic access control mechanism,
 *      where a set of addresses are granted access to protected functions.
 *      These addresses are said to be _auth'ed_.
 *
 *      Initially, the address given as constructor argument is the only address
 *      auth'ed. Through the `rely(address)` and `deny(address)` functions,
 *      auth'ed callers are able to grant/renounce auth to/from addresses.
 *
 *      This module is used through inheritance. It will make available the
 *      modifier `auth`, which can be applied to functions to restrict their
 *      use to only auth'ed callers.
 */
abstract contract Auth is IAuth {
    /// @dev Mapping storing whether address is auth'ed.
    /// @custom:invariant Image of mapping is {0, 1}.
    ///                     ∀x ∊ Address: _wards[x] ∊ {0, 1}
    /// @custom:invariant Only address given as constructor argument is authenticated after deployment.
    ///                     deploy(initialAuthed) → (∀x ∊ Address: _wards[x] == 1 → x == initialAuthed)
    /// @custom:invariant Only functions `rely` and `deny` may mutate the mapping's state.
    ///                     ∀x ∊ Address: preTx(_wards[x]) != postTx(_wards[x])
    ///                                     → (msg.sig == "rely" ∨ msg.sig == "deny")
    /// @custom:invariant Mapping's state may only be mutated by authenticated caller.
    ///                     ∀x ∊ Address: preTx(_wards[x]) != postTx(_wards[x]) → _wards[msg.sender] = 1
    mapping(address => uint) private _wards;

    /// @dev List of addresses possibly being auth'ed.
    /// @dev May contain duplicates.
    /// @dev May contain addresses not being auth'ed anymore.
    /// @custom:invariant Every address being auth'ed once is element of the list.
    ///                     ∀x ∊ Address: authed(x) -> x ∊ _wardsTouched
    address[] private _wardsTouched;

    /// @dev Ensures caller is auth'ed.
    modifier auth() {
        assembly ("memory-safe") {
            // Compute slot of _wards[msg.sender].
            mstore(0x00, caller())
            mstore(0x20, _wards.slot)
            let slot := keccak256(0x00, 0x40)

            // Revert if caller not auth'ed.
            let isAuthed := sload(slot)
            if iszero(isAuthed) {
                // Store selector of `NotAuthorized(address)`.
                mstore(0x00, 0x4a0bfec1)
                // Store msg.sender.
                mstore(0x20, caller())
                // Revert with (offset, size).
                revert(0x1c, 0x24)
            }
        }
        _;
    }

    constructor(address initialAuthed) {
        _wards[initialAuthed] = 1;
        _wardsTouched.push(initialAuthed);

        // Note to use address(0) as caller to indicate address was auth'ed
        // during deployment.
        emit AuthGranted(address(0), initialAuthed);
    }

    /// @inheritdoc IAuth
    function rely(address who) external auth {
        if (_wards[who] == 1) return;

        _wards[who] = 1;
        _wardsTouched.push(who);
        emit AuthGranted(msg.sender, who);
    }

    /// @inheritdoc IAuth
    function deny(address who) external auth {
        if (_wards[who] == 0) return;

        _wards[who] = 0;
        emit AuthRenounced(msg.sender, who);
    }

    /// @inheritdoc IAuth
    function authed(address who) public view returns (bool) {
        return _wards[who] == 1;
    }

    /// @inheritdoc IAuth
    /// @custom:invariant Only contains auth'ed addresses.
    ///                     ∀x ∊ authed(): _wards[x] == 1
    /// @custom:invariant Contains all auth'ed addresses.
    ///                     ∀x ∊ Address: _wards[x] == 1 → x ∊ authed()
    function authed() public view returns (address[] memory) {
        // Initiate array with upper limit length.
        address[] memory wardsList = new address[](_wardsTouched.length);

        // Iterate through all possible auth'ed addresses.
        uint ctr;
        for (uint i; i < wardsList.length; i++) {
            // Add address only if still auth'ed.
            if (_wards[_wardsTouched[i]] == 1) {
                wardsList[ctr++] = _wardsTouched[i];
            }
        }

        // Set length of array to number of auth'ed addresses actually included.
        assembly ("memory-safe") {
            mstore(wardsList, ctr)
        }

        return wardsList;
    }

    /// @inheritdoc IAuth
    function wards(address who) public view returns (uint) {
        return _wards[who];
    }
}

File 3 of 4 : ITorAddressRegister.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.16;

interface ITorAddressRegister {
    /// @notice Thrown if provided index out of bounds.
    /// @param index The provided index.
    /// @param maxIndex The maximum valid index.
    error IndexOutOfBounds(uint index, uint maxIndex);

    /// @notice Emitted when new tor address added.
    /// @param caller The caller's address.
    /// @param torAddress The tor addresses added.
    event TorAddressAdded(address indexed caller, string torAddress);

    /// @notice Emitted when tor address removed.
    /// @param caller The caller's address.
    /// @param torAddress The tor addresses removed..
    event TorAddressRemoved(address indexed caller, string torAddress);

    /// @notice Returns the tor address at index `index`.
    /// @dev Reverts if index out of bounds.
    /// @param index The index of the tor address to return.
    /// @return The tor address stored at given index.
    function get(uint index) external view returns (string memory);

    /// @notice Returns the tor address at index `index`.
    /// @param index The index of the tor address to return.
    /// @return True if tor address at index `index` exists, false otherwise.
    /// @return The tor address stored at index `index` if index exists, empty
    ///         string otherwise.
    function tryGet(uint index) external view returns (bool, string memory);

    /// @notice Returns the full list of tor addresses stored.
    /// @dev May contain duplicates.
    /// @dev Stable ordering not guaranteed.
    /// @dev May contain the empty string or other invalid tor addresses.
    /// @return The list of tor addresses stored.
    function list() external view returns (string[] memory);

    /// @notice Returns the number of tor addresses stored.
    /// @return The number of tor addresses stored.
    function count() external view returns (uint);

    /// @notice Adds a new tor address.
    /// @dev Only callable by auth'ed addresses.
    /// @param torAddress The tor address to add.
    function add(string calldata torAddress) external;

    /// @notice Adds a list of new tor addresses.
    /// @dev Only callable by auth'ed addresses.
    /// @param torAddresses The tor addresses to add.
    function add(string[] calldata torAddresses) external;

    /// @notice Removes the tor address at index `index`.
    /// @dev Only callable by auth'ed addresses.
    /// @dev Reverts if index `index` out of bounds.
    /// @param index The index of the the tor address to remove.
    function remove(uint index) external;
}

File 4 of 4 : IAuth.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.16;

interface IAuth {
    /// @notice Thrown by protected function if caller not auth'ed.
    /// @param caller The caller's address.
    error NotAuthorized(address caller);

    /// @notice Emitted when auth granted to address.
    /// @param caller The caller's address.
    /// @param who The address auth got granted to.
    event AuthGranted(address indexed caller, address indexed who);

    /// @notice Emitted when auth renounced from address.
    /// @param caller The caller's address.
    /// @param who The address auth got renounced from.
    event AuthRenounced(address indexed caller, address indexed who);

    /// @notice Grants address `who` auth.
    /// @dev Only callable by auth'ed address.
    /// @param who The address to grant auth.
    function rely(address who) external;

    /// @notice Renounces address `who`'s auth.
    /// @dev Only callable by auth'ed address.
    /// @param who The address to renounce auth.
    function deny(address who) external;

    /// @notice Returns whether address `who` is auth'ed.
    /// @param who The address to check.
    /// @return True if `who` is auth'ed, false otherwise.
    function authed(address who) external view returns (bool);

    /// @notice Returns full list of addresses granted auth.
    /// @dev May contain duplicates.
    /// @return List of addresses granted auth.
    function authed() external view returns (address[] memory);

    /// @notice Returns whether address `who` is auth'ed.
    /// @custom:deprecated Use `authed(address)(bool)` instead.
    /// @param who The address to check.
    /// @return 1 if `who` is auth'ed, 0 otherwise.
    function wards(address who) external view returns (uint);
}

Settings
{
  "remappings": [
    "ds-test/=lib/forge-std/lib/ds-test/src/",
    "forge-std/=lib/forge-std/src/",
    "chronicle-std/=lib/chronicle-std/src/",
    "@script/chronicle-std/=lib/chronicle-std/script/",
    "greenhouse/=lib/greenhouse/src/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 10000
  },
  "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "ipfs"
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "london",
  "viaIR": true,
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"initialAuthed","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"maxIndex","type":"uint256"}],"name":"IndexOutOfBounds","type":"error"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"name":"NotAuthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"address","name":"who","type":"address"}],"name":"AuthGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"address","name":"who","type":"address"}],"name":"AuthRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"string","name":"torAddress","type":"string"}],"name":"TorAddressAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"string","name":"torAddress","type":"string"}],"name":"TorAddressRemoved","type":"event"},{"inputs":[{"internalType":"string","name":"torAddress","type":"string"}],"name":"add","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string[]","name":"torAddresses","type":"string[]"}],"name":"add","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"authed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"authed","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"count","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"deny","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"get","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"list","outputs":[{"internalType":"string[]","name":"","type":"string[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"rely","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"remove","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tryGet","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"wards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]

60803461011757601f61112a38819003918201601f19168301916001600160401b0383118484101761011c5780849260209460405283398101031261011757516001600160a01b03811690819003610117576000908082528160205260016040832055600154680100000000000000008110156101035760018101806001558110156100ef57600183527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b03191682179055604051917fe31c10b0adbedd0c6e5d024286c6eeead7761e65a67608dcf0b67604c0da7e2f8184a3610ff790816101338239f35b634e487b7160e01b83526032600452602483fd5b634e487b7160e01b83526041600452602483fd5b600080fd5b634e487b7160e01b600052604160045260246000fdfe6080604081815260048036101561001557600080fd5b600092833560e01c90816306661abd146108bc575080630f560cd7146107ae5780630fce341514610767578063224242ca146105f95780634cc82215146103eb57806365fae35e146103a2578063871394d9146103675780639507d39a146102d35780639c52a7f114610276578063b0c8f9dc146101d8578063bf353dbb146101945763dd175691146100a757600080fd5b346101905760206003193601126101905780359067ffffffffffffffff9081831161018c573660238401121561018c57820135908111610188576024820191602436918360051b0101116101885733845283602052828420541561017757835b8181106101145750505051f35b8061012c610126610172938587610e89565b90610d43565b61016a7f29fd02601a0c701300a3446ea25f1abf1f3fa39f54035f4a273d1caed361aa3c61015b838688610e89565b88513394909283929083610e61565b0390a2610b4b565b610107565b634a0bfec18452336020526024601cfd5b8380fd5b8480fd5b8280fd5b5034610190576020600319360112610190573573ffffffffffffffffffffffffffffffffffffffff8116809103610190578282916020945280845220549051908152f35b50346101905760206003193601126101905780359067ffffffffffffffff9081831161018c573660238401121561018c5782013590811161018857602482019160248236920101116101885733845283602052828420541561017757610270816102637f29fd02601a0c701300a3446ea25f1abf1f3fa39f54035f4a273d1caed361aa3c9385610d43565b8451918291339583610e61565b0390a251f35b5034610190576020600319360112610190573573ffffffffffffffffffffffffffffffffffffffff81168103610190573383528260205281832054156102c2576102bf90610a85565b51f35b634a0bfec18352336020526024601cfd5b5082346103645760206003193601126103645750803590600254808310156103315761032d6103148561031b61030887610982565b50825193848092610bdc565b0383610ae1565b519182916020835260208301906108dc565b0390f35b6044928451927f63a056dd0000000000000000000000000000000000000000000000000000000084528301526024820152fd5b80fd5b508234610364576020600319360112610364575061038861032d9135610c91565b8392919251938493151584528060208501528301906108dc565b5034610190576020600319360112610190573573ffffffffffffffffffffffffffffffffffffffff81168103610190573383528260205281832054156102c2576102bf906109b9565b5034610190576020908160031936011261018857803533855284835283852054156105e95760025490818110156105b55761042581610982565b507ffc5bf361eea5cd210779f74d4b755fdb25513015d6c8019ce12307c33d98de5386518681528061045b339489830190610bdc565b0390a2600019918281019081116105895761047861047f91610982565b5091610982565b61055e579061048d91610eee565b60025480156105325701916104a183610982565b92909261050757509084916104b68254610b89565b90816104c7575b5050505060025551f35b81601f8593116001146104e257505050555b823880806104bd565b8383528183206104fd91601f0160051c810190600101610ce5565b81209155556104d9565b85806024927f4e487b7100000000000000000000000000000000000000000000000000000000825252fd5b6024866031857f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b60248780867f4e487b7100000000000000000000000000000000000000000000000000000000825252fd5b6024876011867f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b604493508451927f63a056dd0000000000000000000000000000000000000000000000000000000084528301526024820152fd5b634a0bfec185523383526024601cfd5b509134610364578060031936011261036457600190815461063161061c82610b33565b9161062986519384610ae1565b808352610b33565b94602090601f198284019701368837839081865b610697575b505082528451948186019282875251809352850195925b82811061066e5785870386f35b835173ffffffffffffffffffffffffffffffffffffffff16875295810195928101928401610661565b95809896859694955181101561075b576106b08161091c565b73ffffffffffffffffffffffffffffffffffffffff809254600392831b1c168752868852838b882054146106f6575b50506106ea90610b4b565b90969895949395610645565b909192506107038361091c565b9054911b1c1661071284610b4b565b93875181101561072f5760051b870186015288906106ea386106df565b6024866032867f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b5095979493929461064a565b5034610190576020600319360112610190573573ffffffffffffffffffffffffffffffffffffffff8116809103610190578183600192602095528085522054149051908152f35b8284346103645780600319360112610364576002546107cc81610b33565b916107d984519384610ae1565b8183526002815260209283810192827f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace855b83831061088a57505050508451938085019181865251809252858501958260051b8601019392955b8287106108405785850386f35b90919293828061087a837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08a6001960301865288516108dc565b9601920196019592919092610833565b60018881928b9a97989a516108aa816108a38189610bdc565b0382610ae1565b8152019201920191909694939661080b565b8490346108d857816003193601126108d8576020906002548152f35b5080fd5b919082519283825260005b848110610908575050601f19601f8460006020809697860101520116010190565b6020818301810151848301820152016108e7565b6001548110156109535760016000527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60190600090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6002548110156109535760026000527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0190600090565b73ffffffffffffffffffffffffffffffffffffffff80911690600090828252816020526001604083205414610a80576001604083205560015468010000000000000000811015610a5357610a1481600186930160015561091c565b909283549160031b90811b9283911b169119161790557fe31c10b0adbedd0c6e5d024286c6eeead7761e65a67608dcf0b67604c0da7e2f3391604051a3565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b505050565b73ffffffffffffffffffffffffffffffffffffffff16600081815280602052604081205415610add578060408120557f58466e5837b54e559819c9ba8a5d7c77c97c985d1aabf4bdc5f41069fa5d65a03391604051a3565b5050565b90601f601f19910116810190811067ffffffffffffffff821117610b0457604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff8111610b045760051b60200190565b6000198114610b5a5760010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b90600182811c92168015610bd2575b6020831014610ba357565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b91607f1691610b98565b9060009291805491610bed83610b89565b918282526001938481169081600014610c4f5750600114610c0f575b50505050565b90919394506000526020928360002092846000945b838610610c3b575050505001019038808080610c09565b805485870183015294019385908201610c24565b91505060209495507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009193501683830152151560051b01019038808080610c09565b6002548110610cc257506000906040516020810181811067ffffffffffffffff821117610b04576040526000815290565b610ccb90610982565b50906108a3610ce260019360405192838092610bdc565b90565b818110610cf0575050565b60008155600101610ce5565b9190601f8111610d0b57505050565b610d37926000526020600020906020601f840160051c83019310610d39575b601f0160051c0190610ce5565b565b9091508190610d2a565b9060025468010000000000000000811015610b0457610d69600191828101600255610982565b939093610e325767ffffffffffffffff8311610b0457610d9383610d8d8654610b89565b86610cfc565b600090601f8411600114610dcd57600091849182610dc0575b505060001991921b9260031b1c1916179055565b0135915060001938610dac565b601f198493941691858152836020938483209483905b88838310610e185750505010610dfe575b505050811b019055565b60001960f88560031b161c19910135169055388080610df4565b868601358855909601959384019387935090810190610de3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b90601f83604094601f1993602086528160208701528686013760008582860101520116010190565b91908110156109535760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610ee957019081359167ffffffffffffffff8311610ee9576020018236038113610ee9579190565b600080fd5b90808214610add57610f008154610b89565b9067ffffffffffffffff8211610b04578190610f2082610d8d8654610b89565b600090601f8311600114610f5657600092610f4b575b50506000198260011b9260031b1c1916179055565b015490503880610f36565b91601f1916918152602091828220908583528383209383905b828210610fa8575050908460019594939210610f8f57505050811b019055565b015460001960f88460031b161c19169055388080610df4565b8495819295850154815560018091019601940190610f6f56fea264697066735822122048cdca05c931ec37e3e23bb801b51aef238b86f776a15993fb8eb417451fc5b564736f6c63430008100033000000000000000000000000c50dfedb7e93ef7a3daccad7987d0960c4e2cd4b

Deployed Bytecode

0x6080604081815260048036101561001557600080fd5b600092833560e01c90816306661abd146108bc575080630f560cd7146107ae5780630fce341514610767578063224242ca146105f95780634cc82215146103eb57806365fae35e146103a2578063871394d9146103675780639507d39a146102d35780639c52a7f114610276578063b0c8f9dc146101d8578063bf353dbb146101945763dd175691146100a757600080fd5b346101905760206003193601126101905780359067ffffffffffffffff9081831161018c573660238401121561018c57820135908111610188576024820191602436918360051b0101116101885733845283602052828420541561017757835b8181106101145750505051f35b8061012c610126610172938587610e89565b90610d43565b61016a7f29fd02601a0c701300a3446ea25f1abf1f3fa39f54035f4a273d1caed361aa3c61015b838688610e89565b88513394909283929083610e61565b0390a2610b4b565b610107565b634a0bfec18452336020526024601cfd5b8380fd5b8480fd5b8280fd5b5034610190576020600319360112610190573573ffffffffffffffffffffffffffffffffffffffff8116809103610190578282916020945280845220549051908152f35b50346101905760206003193601126101905780359067ffffffffffffffff9081831161018c573660238401121561018c5782013590811161018857602482019160248236920101116101885733845283602052828420541561017757610270816102637f29fd02601a0c701300a3446ea25f1abf1f3fa39f54035f4a273d1caed361aa3c9385610d43565b8451918291339583610e61565b0390a251f35b5034610190576020600319360112610190573573ffffffffffffffffffffffffffffffffffffffff81168103610190573383528260205281832054156102c2576102bf90610a85565b51f35b634a0bfec18352336020526024601cfd5b5082346103645760206003193601126103645750803590600254808310156103315761032d6103148561031b61030887610982565b50825193848092610bdc565b0383610ae1565b519182916020835260208301906108dc565b0390f35b6044928451927f63a056dd0000000000000000000000000000000000000000000000000000000084528301526024820152fd5b80fd5b508234610364576020600319360112610364575061038861032d9135610c91565b8392919251938493151584528060208501528301906108dc565b5034610190576020600319360112610190573573ffffffffffffffffffffffffffffffffffffffff81168103610190573383528260205281832054156102c2576102bf906109b9565b5034610190576020908160031936011261018857803533855284835283852054156105e95760025490818110156105b55761042581610982565b507ffc5bf361eea5cd210779f74d4b755fdb25513015d6c8019ce12307c33d98de5386518681528061045b339489830190610bdc565b0390a2600019918281019081116105895761047861047f91610982565b5091610982565b61055e579061048d91610eee565b60025480156105325701916104a183610982565b92909261050757509084916104b68254610b89565b90816104c7575b5050505060025551f35b81601f8593116001146104e257505050555b823880806104bd565b8383528183206104fd91601f0160051c810190600101610ce5565b81209155556104d9565b85806024927f4e487b7100000000000000000000000000000000000000000000000000000000825252fd5b6024866031857f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b60248780867f4e487b7100000000000000000000000000000000000000000000000000000000825252fd5b6024876011867f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b604493508451927f63a056dd0000000000000000000000000000000000000000000000000000000084528301526024820152fd5b634a0bfec185523383526024601cfd5b509134610364578060031936011261036457600190815461063161061c82610b33565b9161062986519384610ae1565b808352610b33565b94602090601f198284019701368837839081865b610697575b505082528451948186019282875251809352850195925b82811061066e5785870386f35b835173ffffffffffffffffffffffffffffffffffffffff16875295810195928101928401610661565b95809896859694955181101561075b576106b08161091c565b73ffffffffffffffffffffffffffffffffffffffff809254600392831b1c168752868852838b882054146106f6575b50506106ea90610b4b565b90969895949395610645565b909192506107038361091c565b9054911b1c1661071284610b4b565b93875181101561072f5760051b870186015288906106ea386106df565b6024866032867f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b5095979493929461064a565b5034610190576020600319360112610190573573ffffffffffffffffffffffffffffffffffffffff8116809103610190578183600192602095528085522054149051908152f35b8284346103645780600319360112610364576002546107cc81610b33565b916107d984519384610ae1565b8183526002815260209283810192827f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace855b83831061088a57505050508451938085019181865251809252858501958260051b8601019392955b8287106108405785850386f35b90919293828061087a837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08a6001960301865288516108dc565b9601920196019592919092610833565b60018881928b9a97989a516108aa816108a38189610bdc565b0382610ae1565b8152019201920191909694939661080b565b8490346108d857816003193601126108d8576020906002548152f35b5080fd5b919082519283825260005b848110610908575050601f19601f8460006020809697860101520116010190565b6020818301810151848301820152016108e7565b6001548110156109535760016000527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60190600090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6002548110156109535760026000527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0190600090565b73ffffffffffffffffffffffffffffffffffffffff80911690600090828252816020526001604083205414610a80576001604083205560015468010000000000000000811015610a5357610a1481600186930160015561091c565b909283549160031b90811b9283911b169119161790557fe31c10b0adbedd0c6e5d024286c6eeead7761e65a67608dcf0b67604c0da7e2f3391604051a3565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b505050565b73ffffffffffffffffffffffffffffffffffffffff16600081815280602052604081205415610add578060408120557f58466e5837b54e559819c9ba8a5d7c77c97c985d1aabf4bdc5f41069fa5d65a03391604051a3565b5050565b90601f601f19910116810190811067ffffffffffffffff821117610b0457604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff8111610b045760051b60200190565b6000198114610b5a5760010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b90600182811c92168015610bd2575b6020831014610ba357565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b91607f1691610b98565b9060009291805491610bed83610b89565b918282526001938481169081600014610c4f5750600114610c0f575b50505050565b90919394506000526020928360002092846000945b838610610c3b575050505001019038808080610c09565b805485870183015294019385908201610c24565b91505060209495507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009193501683830152151560051b01019038808080610c09565b6002548110610cc257506000906040516020810181811067ffffffffffffffff821117610b04576040526000815290565b610ccb90610982565b50906108a3610ce260019360405192838092610bdc565b90565b818110610cf0575050565b60008155600101610ce5565b9190601f8111610d0b57505050565b610d37926000526020600020906020601f840160051c83019310610d39575b601f0160051c0190610ce5565b565b9091508190610d2a565b9060025468010000000000000000811015610b0457610d69600191828101600255610982565b939093610e325767ffffffffffffffff8311610b0457610d9383610d8d8654610b89565b86610cfc565b600090601f8411600114610dcd57600091849182610dc0575b505060001991921b9260031b1c1916179055565b0135915060001938610dac565b601f198493941691858152836020938483209483905b88838310610e185750505010610dfe575b505050811b019055565b60001960f88560031b161c19910135169055388080610df4565b868601358855909601959384019387935090810190610de3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b90601f83604094601f1993602086528160208701528686013760008582860101520116010190565b91908110156109535760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610ee957019081359167ffffffffffffffff8311610ee9576020018236038113610ee9579190565b600080fd5b90808214610add57610f008154610b89565b9067ffffffffffffffff8211610b04578190610f2082610d8d8654610b89565b600090601f8311600114610f5657600092610f4b575b50506000198260011b9260031b1c1916179055565b015490503880610f36565b91601f1916918152602091828220908583528383209383905b828210610fa8575050908460019594939210610f8f57505050811b019055565b015460001960f88460031b161c19169055388080610df4565b8495819295850154815560018091019601940190610f6f56fea264697066735822122048cdca05c931ec37e3e23bb801b51aef238b86f776a15993fb8eb417451fc5b564736f6c63430008100033

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

000000000000000000000000c50dfedb7e93ef7a3daccad7987d0960c4e2cd4b

-----Decoded View---------------
Arg [0] : initialAuthed (address): 0xc50dFeDb7E93eF7A3DacCAd7987D0960c4e2CD4b

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000c50dfedb7e93ef7a3daccad7987d0960c4e2cd4b


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.