Contract 0x2098aEA80611B51ca26586E122b3c629a2F263e9 7

 
Txn Hash Method
Block
From
To
Value
0x9edc95e983e17c366066452258240157b10c5db3a10161f4f35c52422dec926dTransfer Ownersh...1061063992023-06-26 20:32:55240 days 1 hr agoGYSR: Deployer IN  0x2098aea80611b51ca26586e122b3c629a2f263e90 ETH0.0000188535630.000000075
0x251bbbab92771f133a0c7bf27acadde1e78cfb09122efd8cb5f90e1232723507Transfer Control1056645522023-06-16 15:04:41250 days 7 hrs agoGYSR: Deployer IN  0x2098aea80611b51ca26586e122b3c629a2f263e90 ETH0.0000727757480.01
0x30c140b805f315a8f935892c7ee52dfd0ed59236ac3653a7aab1fa0f8ab006cbSet Address Uint...1056642052023-06-16 14:53:07250 days 7 hrs agoGYSR: Deployer IN  0x2098aea80611b51ca26586e122b3c629a2f263e90 ETH0.0000517242340.000003503
0x15aa445d2ef35bc9f1348a151bb4ebb520f9e671d704ef6f84f710961e67c05dSet Address Uint...1056642052023-06-16 14:53:07250 days 7 hrs agoGYSR: Deployer IN  0x2098aea80611b51ca26586e122b3c629a2f263e90 ETH0.0000517242490.000003795
0xad472deefddbc2f7feed24c3b2e74c2c65ec4a27da3cbdeff1da7454bc782feaSet Address Uint...1056640602023-06-16 14:48:17250 days 7 hrs agoGYSR: Deployer IN  0x2098aea80611b51ca26586e122b3c629a2f263e90 ETH0.0000522787330.000009993
0xe9923bec1f1c910f4e19e065eb2df7c51fdec099b595ac2570af01044d315a8aSet Address Uint...1056640182023-06-16 14:46:53250 days 7 hrs agoGYSR: Deployer IN  0x2098aea80611b51ca26586e122b3c629a2f263e90 ETH0.0000451018480.039971819
0x1722e9c8849dac51bc962febc76f797c3fd465760ae4f8636f2cf400e5acdbf5Set Address Uint...1056639602023-06-16 14:44:57250 days 7 hrs agoGYSR: Deployer IN  0x2098aea80611b51ca26586e122b3c629a2f263e90 ETH0.0000472839370.000000073
0xda76fdde91748ccabb278ad7a7950d241390ba2a2ea60506c430f95c1aa73886Set Address Uint...1056638882023-06-16 14:42:33250 days 7 hrs agoGYSR: Deployer IN  0x2098aea80611b51ca26586e122b3c629a2f263e90 ETH0.000048466030.000000072
0xd18939edf6f9d4186f3e281892008720066ff631291b34039f13dcec31526218Set Address Uint...1056638352023-06-16 14:40:47250 days 7 hrs agoGYSR: Deployer IN  0x2098aea80611b51ca26586e122b3c629a2f263e90 ETH0.0000491837960.000000072
0x3aad68ffc16fa9b3787dc9580489e26d8261186b7a04bc45282cbbac0b108b64Set Uint2561056636482023-06-16 14:34:33250 days 7 hrs agoGYSR: Deployer IN  0x2098aea80611b51ca26586e122b3c629a2f263e90 ETH0.0000503598660.000000072
0x8e2cf39d082184d41ab05f2542142aadf96a30ea069f9aebd088fc08278f35650x608060401056433702023-06-16 3:18:37250 days 19 hrs agoGYSR: Deployer IN  Create: Configuration0 ETH0.0005311788570.000000065
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0x18503ceefcb13f22b8c48b6ae934749facd9c1bb1d0bc7157bf7ff2f53fa35bb1056665942023-06-16 16:12:45250 days 6 hrs ago 0x462cc7ea60a364410fef8c621b73a1f1c78de513 0x2098aea80611b51ca26586e122b3c629a2f263e90 ETH
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Configuration

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 10000 runs

Other Settings:
default evmVersion
File 1 of 4 : Configuration.sol
/*
Configuration

https://github.com/gysr-io/core

SPDX-License-Identifier: MIT
*/

pragma solidity 0.8.18;

import "./interfaces/IConfiguration.sol";
import "./OwnerController.sol";

/**
 * @title Configuration
 *
 * @notice configuration contract to define global variables for GYSR protocol
 */
contract Configuration is IConfiguration, OwnerController {
    // data
    mapping(bytes32 => uint256) private _data;
    mapping(address => mapping(bytes32 => uint256)) _overrides;

    /**
     * @inheritdoc IConfiguration
     */
    function setUint256(
        bytes32 key,
        uint256 value
    ) external override onlyController {
        _data[key] = value;
        emit ParameterUpdated(key, value);
    }

    /**
     * @inheritdoc IConfiguration
     */
    function setAddress(
        bytes32 key,
        address value
    ) external override onlyController {
        _data[key] = uint256(uint160(value));
        emit ParameterUpdated(key, value);
    }

    /**
     * @inheritdoc IConfiguration
     */
    function setAddressUint96(
        bytes32 key,
        address value0,
        uint96 value1
    ) external override onlyController {
        uint256 val = uint256(uint160(value0));
        val |= uint256(value1) << 160;
        _data[key] = val;
        emit ParameterUpdated(key, value0, value1);
    }

    /**
     * @inheritdoc IConfiguration
     */
    function getUint256(bytes32 key) external view override returns (uint256) {
        if (_overrides[msg.sender][key] > 0) return _overrides[msg.sender][key];
        return _data[key];
    }

    /**
     * @inheritdoc IConfiguration
     */
    function getAddress(bytes32 key) external view override returns (address) {
        if (_overrides[msg.sender][key] > 0)
            return address(uint160(_overrides[msg.sender][key]));
        return address(uint160(_data[key]));
    }

    /**
     * @inheritdoc IConfiguration
     */
    function getAddressUint96(
        bytes32 key
    ) external view override returns (address, uint96) {
        uint256 val = _overrides[msg.sender][key] > 0
            ? _overrides[msg.sender][key]
            : _data[key];
        return (address(uint160(val)), uint96(val >> 160));
    }

    /**
     * @inheritdoc IConfiguration
     */
    function overrideUint256(
        address caller,
        bytes32 key,
        uint256 value
    ) external override onlyController {
        _overrides[caller][key] = value;
        emit ParameterOverridden(caller, key, value);
    }

    /**
     * @inheritdoc IConfiguration
     */
    function overrideAddress(
        address caller,
        bytes32 key,
        address value
    ) external override onlyController {
        uint256 val = uint256(uint160(value));
        _overrides[caller][key] = val;
        emit ParameterOverridden(caller, key, value);
    }

    /**
     * @inheritdoc IConfiguration
     */
    function overrideAddressUint96(
        address caller,
        bytes32 key,
        address value0,
        uint96 value1
    ) external override onlyController {
        uint256 val = uint256(uint160(value0));
        val |= uint256(value1) << 160;
        _overrides[caller][key] = val;
        emit ParameterOverridden(caller, key, value0, value1);
    }
}

File 2 of 4 : IConfiguration.sol
/*
IConfiguration

https://github.com/gysr-io/core

SPDX-License-Identifier: MIT
*/

pragma solidity 0.8.18;

/**
 * @title Configuration interface
 *
 * @notice this defines the protocol configuration interface
 */
interface IConfiguration {
    // events
    event ParameterUpdated(bytes32 indexed key, address value);
    event ParameterUpdated(bytes32 indexed key, uint256 value);
    event ParameterUpdated(bytes32 indexed key, address value0, uint96 value1);
    event ParameterOverridden(
        address indexed caller,
        bytes32 indexed key,
        address value
    );
    event ParameterOverridden(
        address indexed caller,
        bytes32 indexed key,
        uint256 value
    );
    event ParameterOverridden(
        address indexed caller,
        bytes32 indexed key,
        address value0,
        uint96 value1
    );

    /**
     * @notice set or update uint256 parameter
     * @param key keccak256 hash of parameter key
     * @param value uint256 parameter value
     */
    function setUint256(bytes32 key, uint256 value) external;

    /**
     * @notice set or update address parameter
     * @param key keccak256 hash of parameter key
     * @param value address parameter value
     */
    function setAddress(bytes32 key, address value) external;

    /**
     * @notice set or update packed address + uint96 pair
     * @param key keccak256 hash of parameter key
     * @param value0 address parameter value
     * @param value1 uint96 parameter value
     */
    function setAddressUint96(
        bytes32 key,
        address value0,
        uint96 value1
    ) external;

    /**
     * @notice get uint256 parameter
     * @param key keccak256 hash of parameter key
     * @return uint256 parameter value
     */
    function getUint256(bytes32 key) external view returns (uint256);

    /**
     * @notice get address parameter
     * @param key keccak256 hash of parameter key
     * @return uint256 parameter value
     */
    function getAddress(bytes32 key) external view returns (address);

    /**
     * @notice get packed address + uint96 pair
     * @param key keccak256 hash of parameter key
     * @return address parameter value
     * @return uint96 parameter value
     */
    function getAddressUint96(
        bytes32 key
    ) external view returns (address, uint96);

    /**
     * @notice override uint256 parameter for specific caller
     * @param caller address of caller
     * @param key keccak256 hash of parameter key
     * @param value uint256 parameter value
     */
    function overrideUint256(
        address caller,
        bytes32 key,
        uint256 value
    ) external;

    /**
     * @notice override address parameter for specific caller
     * @param caller address of caller
     * @param key keccak256 hash of parameter key
     * @param value address parameter value
     */
    function overrideAddress(
        address caller,
        bytes32 key,
        address value
    ) external;

    /**
     * @notice override address parameter for specific caller
     * @param caller address of caller
     * @param key keccak256 hash of parameter key
     * @param value0 address parameter value
     * @param value1 uint96 parameter value
     */
    function overrideAddressUint96(
        address caller,
        bytes32 key,
        address value0,
        uint96 value1
    ) external;
}

File 3 of 4 : IOwnerController.sol
/*
IOwnerController

https://github.com/gysr-io/core

SPDX-License-Identifier: MIT
*/

pragma solidity 0.8.18;

/**
 * @title Owner controller interface
 *
 * @notice this defines the interface for any contracts that use the
 * owner controller access pattern
 */
interface IOwnerController {
    /**
     * @dev Returns the address of the current owner.
     */
    function owner() external view returns (address);

    /**
     * @dev Returns the address of the current controller.
     */
    function controller() external view returns (address);

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`). This can
     * include renouncing ownership by transferring to the zero address.
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) external;

    /**
     * @dev Transfers control of the contract to a new account (`newController`).
     * Can only be called by the owner.
     */
    function transferControl(address newController) external;
}

File 4 of 4 : OwnerController.sol
/*
OwnerController

https://github.com/gysr-io/core

SPDX-License-Identifier: MIT
*/

pragma solidity 0.8.18;

import "./interfaces/IOwnerController.sol";

/**
 * @title Owner controller
 *
 * @notice this base contract implements an owner-controller access model.
 *
 * @dev the contract is an adapted version of the OpenZeppelin Ownable contract.
 * It allows the owner to designate an additional account as the controller to
 * perform restricted operations.
 *
 * Other changes include supporting role verification with a require method
 * in addition to the modifier option, and removing some unneeded functionality.
 *
 * Original contract here:
 * https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol
 */
contract OwnerController is IOwnerController {
    address private _owner;
    address private _controller;

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

    event ControlTransferred(
        address indexed previousController,
        address indexed newController
    );

    constructor() {
        _owner = msg.sender;
        _controller = msg.sender;
        emit OwnershipTransferred(address(0), _owner);
        emit ControlTransferred(address(0), _owner);
    }

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

    /**
     * @dev Returns the address of the current controller.
     */
    function controller() public view override returns (address) {
        return _controller;
    }

    /**
     * @dev Modifier that throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == msg.sender, "oc1");
        _;
    }

    /**
     * @dev Modifier that throws if called by any account other than the controller.
     */
    modifier onlyController() {
        require(_controller == msg.sender, "oc2");
        _;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    function requireOwner() internal view {
        require(_owner == msg.sender, "oc1");
    }

    /**
     * @dev Throws if called by any account other than the controller.
     */
    function requireController() internal view {
        require(_controller == msg.sender, "oc2");
    }

    /**
     * @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 override {
        requireOwner();
        require(newOwner != address(0), "oc3");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

    /**
     * @dev Transfers control of the contract to a new account (`newController`).
     * Can only be called by the owner.
     */
    function transferControl(address newController) public virtual override {
        requireOwner();
        require(newController != address(0), "oc4");
        emit ControlTransferred(_controller, newController);
        _controller = newController;
    }
}

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

Contract Security Audit

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousController","type":"address"},{"indexed":true,"internalType":"address","name":"newController","type":"address"}],"name":"ControlTransferred","type":"event"},{"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":"caller","type":"address"},{"indexed":true,"internalType":"bytes32","name":"key","type":"bytes32"},{"indexed":false,"internalType":"address","name":"value","type":"address"}],"name":"ParameterOverridden","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"bytes32","name":"key","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"ParameterOverridden","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"bytes32","name":"key","type":"bytes32"},{"indexed":false,"internalType":"address","name":"value0","type":"address"},{"indexed":false,"internalType":"uint96","name":"value1","type":"uint96"}],"name":"ParameterOverridden","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"key","type":"bytes32"},{"indexed":false,"internalType":"address","name":"value","type":"address"}],"name":"ParameterUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"key","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"ParameterUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"key","type":"bytes32"},{"indexed":false,"internalType":"address","name":"value0","type":"address"},{"indexed":false,"internalType":"uint96","name":"value1","type":"uint96"}],"name":"ParameterUpdated","type":"event"},{"inputs":[],"name":"controller","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"key","type":"bytes32"}],"name":"getAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"key","type":"bytes32"}],"name":"getAddressUint96","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint96","name":"","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"key","type":"bytes32"}],"name":"getUint256","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"bytes32","name":"key","type":"bytes32"},{"internalType":"address","name":"value","type":"address"}],"name":"overrideAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"bytes32","name":"key","type":"bytes32"},{"internalType":"address","name":"value0","type":"address"},{"internalType":"uint96","name":"value1","type":"uint96"}],"name":"overrideAddressUint96","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"bytes32","name":"key","type":"bytes32"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"overrideUint256","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"key","type":"bytes32"},{"internalType":"address","name":"value","type":"address"}],"name":"setAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"key","type":"bytes32"},{"internalType":"address","name":"value0","type":"address"},{"internalType":"uint96","name":"value1","type":"uint96"}],"name":"setAddressUint96","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"key","type":"bytes32"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setUint256","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newController","type":"address"}],"name":"transferControl","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b5060008054336001600160a01b0319918216811783556001805490921681179091556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3600080546040516001600160a01b0390911691907fa06677f7b64342b4bcbde423684dbdb5356acfe41ad0285b6ecbe6dc4bf427f2908290a3610d99806100a56000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80638da5cb5b1161008c578063bf88d9d511610066578063bf88d9d514610208578063ca446dd91461021b578063f2fde38b1461022e578063f77c47911461024157600080fd5b80638da5cb5b146101c45780639a8ddf1a146101e2578063b05dbf22146101f557600080fd5b80634f3029c2116100bd5780634f3029c214610152578063575313cd146101655780636d16fa41146101b157600080fd5b80630fb82676146100e457806321f8a721146100f957806333598b0014610136575b600080fd5b6100f76100f2366004610beb565b61025f565b005b61010c610107366004610c38565b610397565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b610144610107366004610c38565b60405190815260200161012d565b6100f7610160366004610c51565b6103e8565b610178610173366004610c38565b6104ba565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526bffffffffffffffffffffffff90911660208301520161012d565b6100f76101bf366004610c73565b61051b565b60005473ffffffffffffffffffffffffffffffffffffffff1661010c565b6100f76101f0366004610c95565b61062e565b6100f7610203366004610cd1565b610721565b6100f7610216366004610d04565b61080e565b6100f7610229366004610d37565b610934565b6100f761023c366004610c73565b610a11565b60015473ffffffffffffffffffffffffffffffffffffffff1661010c565b60015473ffffffffffffffffffffffffffffffffffffffff1633146102e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f6f6332000000000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff848116600081815260036020908152604080832088845282529182902093861660a086901b7fffffffffffffffffffffffff00000000000000000000000000000000000000001681179485905582519081526bffffffffffffffffffffffff8616918101919091528692917fd240764df8b7d976efa973b131eeae859f1efa5872658e3500751f5ec25ed3cb910160405180910390a35050505050565b336000908152600360209081526040808320848452909152812054156103d55750336000908152600360209081526040808320938352929052205490565b5060009081526002602052604090205490565b60015473ffffffffffffffffffffffffffffffffffffffff163314610469576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f6f6332000000000000000000000000000000000000000000000000000000000060448201526064016102dc565b600082815260026020526040908190208290555182907ffdae04feea64164f7a1003019a92a4460a1d01652e226a7177d695c5017aa912906104ae9084815260200190565b60405180910390a25050565b336000908152600360209081526040808320848452909152812054819081906104f15760008481526002602052604090205461050d565b3360009081526003602090815260408083208784529091529020545b9460a086901c945092505050565b610523610b23565b73ffffffffffffffffffffffffffffffffffffffff81166105a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f6f6334000000000000000000000000000000000000000000000000000000000060448201526064016102dc565b60015460405173ffffffffffffffffffffffffffffffffffffffff8084169216907fa06677f7b64342b4bcbde423684dbdb5356acfe41ad0285b6ecbe6dc4bf427f290600090a3600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60015473ffffffffffffffffffffffffffffffffffffffff1633146106af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f6f6332000000000000000000000000000000000000000000000000000000000060448201526064016102dc565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526003602090815260408083208784528252918290209385169384905590518381528592917ff14ca68a61d3d5598260eb185f1301fbf2d42106b9d2f45d1d46451505b4093d910160405180910390a350505050565b60015473ffffffffffffffffffffffffffffffffffffffff1633146107a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f6f6332000000000000000000000000000000000000000000000000000000000060448201526064016102dc565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260036020908152604080832086845282529182902084905590518381528492917ff3b993d26f99b9ba3aa84e3015d8053d036da065d2f0e85fa2b1840c69c4a866910160405180910390a3505050565b60015473ffffffffffffffffffffffffffffffffffffffff16331461088f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f6f6332000000000000000000000000000000000000000000000000000000000060448201526064016102dc565b60008381526002602090815260409182902073ffffffffffffffffffffffffffffffffffffffff851660a085901b7fffffffffffffffffffffffff00000000000000000000000000000000000000001681179182905583519081526bffffffffffffffffffffffff8516928101929092529185917f4e67c2d180a6641bedd3b56ec522e36320a1cf4bfaa8c4782686fa4a80087700910160405180910390a250505050565b60015473ffffffffffffffffffffffffffffffffffffffff1633146109b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f6f6332000000000000000000000000000000000000000000000000000000000060448201526064016102dc565b60008281526002602090815260409182902073ffffffffffffffffffffffffffffffffffffffff841690819055915191825283917f1ca5c264cc3cd84fcf0229b8f886e84e181bad05ab81dabf3422e1643959abe891016104ae565b610a19610b23565b73ffffffffffffffffffffffffffffffffffffffff8116610a96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f6f6333000000000000000000000000000000000000000000000000000000000060448201526064016102dc565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610ba4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f6f6331000000000000000000000000000000000000000000000000000000000060448201526064016102dc565b565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bca57600080fd5b919050565b80356bffffffffffffffffffffffff81168114610bca57600080fd5b60008060008060808587031215610c0157600080fd5b610c0a85610ba6565b935060208501359250610c1f60408601610ba6565b9150610c2d60608601610bcf565b905092959194509250565b600060208284031215610c4a57600080fd5b5035919050565b60008060408385031215610c6457600080fd5b50508035926020909101359150565b600060208284031215610c8557600080fd5b610c8e82610ba6565b9392505050565b600080600060608486031215610caa57600080fd5b610cb384610ba6565b925060208401359150610cc860408501610ba6565b90509250925092565b600080600060608486031215610ce657600080fd5b610cef84610ba6565b95602085013595506040909401359392505050565b600080600060608486031215610d1957600080fd5b83359250610d2960208501610ba6565b9150610cc860408501610bcf565b60008060408385031215610d4a57600080fd5b82359150610d5a60208401610ba6565b9050925092905056fea26469706673582212206821a844396250116e3b9b66d017450d3f0f908429fc677143e43e6044f97c5f64736f6c63430008120033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100df5760003560e01c80638da5cb5b1161008c578063bf88d9d511610066578063bf88d9d514610208578063ca446dd91461021b578063f2fde38b1461022e578063f77c47911461024157600080fd5b80638da5cb5b146101c45780639a8ddf1a146101e2578063b05dbf22146101f557600080fd5b80634f3029c2116100bd5780634f3029c214610152578063575313cd146101655780636d16fa41146101b157600080fd5b80630fb82676146100e457806321f8a721146100f957806333598b0014610136575b600080fd5b6100f76100f2366004610beb565b61025f565b005b61010c610107366004610c38565b610397565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b610144610107366004610c38565b60405190815260200161012d565b6100f7610160366004610c51565b6103e8565b610178610173366004610c38565b6104ba565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526bffffffffffffffffffffffff90911660208301520161012d565b6100f76101bf366004610c73565b61051b565b60005473ffffffffffffffffffffffffffffffffffffffff1661010c565b6100f76101f0366004610c95565b61062e565b6100f7610203366004610cd1565b610721565b6100f7610216366004610d04565b61080e565b6100f7610229366004610d37565b610934565b6100f761023c366004610c73565b610a11565b60015473ffffffffffffffffffffffffffffffffffffffff1661010c565b60015473ffffffffffffffffffffffffffffffffffffffff1633146102e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f6f6332000000000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff848116600081815260036020908152604080832088845282529182902093861660a086901b7fffffffffffffffffffffffff00000000000000000000000000000000000000001681179485905582519081526bffffffffffffffffffffffff8616918101919091528692917fd240764df8b7d976efa973b131eeae859f1efa5872658e3500751f5ec25ed3cb910160405180910390a35050505050565b336000908152600360209081526040808320848452909152812054156103d55750336000908152600360209081526040808320938352929052205490565b5060009081526002602052604090205490565b60015473ffffffffffffffffffffffffffffffffffffffff163314610469576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f6f6332000000000000000000000000000000000000000000000000000000000060448201526064016102dc565b600082815260026020526040908190208290555182907ffdae04feea64164f7a1003019a92a4460a1d01652e226a7177d695c5017aa912906104ae9084815260200190565b60405180910390a25050565b336000908152600360209081526040808320848452909152812054819081906104f15760008481526002602052604090205461050d565b3360009081526003602090815260408083208784529091529020545b9460a086901c945092505050565b610523610b23565b73ffffffffffffffffffffffffffffffffffffffff81166105a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f6f6334000000000000000000000000000000000000000000000000000000000060448201526064016102dc565b60015460405173ffffffffffffffffffffffffffffffffffffffff8084169216907fa06677f7b64342b4bcbde423684dbdb5356acfe41ad0285b6ecbe6dc4bf427f290600090a3600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60015473ffffffffffffffffffffffffffffffffffffffff1633146106af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f6f6332000000000000000000000000000000000000000000000000000000000060448201526064016102dc565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526003602090815260408083208784528252918290209385169384905590518381528592917ff14ca68a61d3d5598260eb185f1301fbf2d42106b9d2f45d1d46451505b4093d910160405180910390a350505050565b60015473ffffffffffffffffffffffffffffffffffffffff1633146107a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f6f6332000000000000000000000000000000000000000000000000000000000060448201526064016102dc565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260036020908152604080832086845282529182902084905590518381528492917ff3b993d26f99b9ba3aa84e3015d8053d036da065d2f0e85fa2b1840c69c4a866910160405180910390a3505050565b60015473ffffffffffffffffffffffffffffffffffffffff16331461088f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f6f6332000000000000000000000000000000000000000000000000000000000060448201526064016102dc565b60008381526002602090815260409182902073ffffffffffffffffffffffffffffffffffffffff851660a085901b7fffffffffffffffffffffffff00000000000000000000000000000000000000001681179182905583519081526bffffffffffffffffffffffff8516928101929092529185917f4e67c2d180a6641bedd3b56ec522e36320a1cf4bfaa8c4782686fa4a80087700910160405180910390a250505050565b60015473ffffffffffffffffffffffffffffffffffffffff1633146109b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f6f6332000000000000000000000000000000000000000000000000000000000060448201526064016102dc565b60008281526002602090815260409182902073ffffffffffffffffffffffffffffffffffffffff841690819055915191825283917f1ca5c264cc3cd84fcf0229b8f886e84e181bad05ab81dabf3422e1643959abe891016104ae565b610a19610b23565b73ffffffffffffffffffffffffffffffffffffffff8116610a96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f6f6333000000000000000000000000000000000000000000000000000000000060448201526064016102dc565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610ba4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f6f6331000000000000000000000000000000000000000000000000000000000060448201526064016102dc565b565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bca57600080fd5b919050565b80356bffffffffffffffffffffffff81168114610bca57600080fd5b60008060008060808587031215610c0157600080fd5b610c0a85610ba6565b935060208501359250610c1f60408601610ba6565b9150610c2d60608601610bcf565b905092959194509250565b600060208284031215610c4a57600080fd5b5035919050565b60008060408385031215610c6457600080fd5b50508035926020909101359150565b600060208284031215610c8557600080fd5b610c8e82610ba6565b9392505050565b600080600060608486031215610caa57600080fd5b610cb384610ba6565b925060208401359150610cc860408501610ba6565b90509250925092565b600080600060608486031215610ce657600080fd5b610cef84610ba6565b95602085013595506040909401359392505050565b600080600060608486031215610d1957600080fd5b83359250610d2960208501610ba6565b9150610cc860408501610bcf565b60008060408385031215610d4a57600080fd5b82359150610d5a60208401610ba6565b9050925092905056fea26469706673582212206821a844396250116e3b9b66d017450d3f0f908429fc677143e43e6044f97c5f64736f6c63430008120033

Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.