ETH Price: $2,187.17 (-3.22%)
 

Overview

ETH Balance

0 ETH

ETH Value

$0.00

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Update Sub Index446012652026-04-12 11:04:375 hrs ago1775991877IN
0x53F00D15...3FED66FcD
0 ETH0.000000370.006
Update Sub Index446012652026-04-12 11:04:375 hrs ago1775991877IN
0x53F00D15...3FED66FcD
0 ETH0.000000370.006
Update Sub Index446012642026-04-12 11:04:355 hrs ago1775991875IN
0x53F00D15...3FED66FcD
0 ETH0.000000370.006
Update Sub Index446012642026-04-12 11:04:355 hrs ago1775991875IN
0x53F00D15...3FED66FcD
0 ETH0.000000370.006
Update Sub Index446012642026-04-12 11:04:355 hrs ago1775991875IN
0x53F00D15...3FED66FcD
0 ETH0.000000370.006
Update Sub Index445904352026-04-12 5:03:3711 hrs ago1775970217IN
0x53F00D15...3FED66FcD
0 ETH0.000000350.006
Update Sub Index445904352026-04-12 5:03:3711 hrs ago1775970217IN
0x53F00D15...3FED66FcD
0 ETH0.000000370.006
Update Sub Index445904342026-04-12 5:03:3511 hrs ago1775970215IN
0x53F00D15...3FED66FcD
0 ETH0.000000370.006
Update Sub Index445904342026-04-12 5:03:3511 hrs ago1775970215IN
0x53F00D15...3FED66FcD
0 ETH0.000000370.006
Update Sub Index445904342026-04-12 5:03:3511 hrs ago1775970215IN
0x53F00D15...3FED66FcD
0 ETH0.000000370.006
Update Sub Index445796132026-04-11 23:02:5317 hrs ago1775948573IN
0x53F00D15...3FED66FcD
0 ETH0.000000370.006
Update Sub Index445796132026-04-11 23:02:5317 hrs ago1775948573IN
0x53F00D15...3FED66FcD
0 ETH0.000000370.006
Update Sub Index445796122026-04-11 23:02:5117 hrs ago1775948571IN
0x53F00D15...3FED66FcD
0 ETH0.000000370.006
Update Sub Index445796122026-04-11 23:02:5117 hrs ago1775948571IN
0x53F00D15...3FED66FcD
0 ETH0.000000370.006
Update Sub Index445796122026-04-11 23:02:5117 hrs ago1775948571IN
0x53F00D15...3FED66FcD
0 ETH0.000000370.006
Update Sub Index445687942026-04-11 17:02:1523 hrs ago1775926935IN
0x53F00D15...3FED66FcD
0 ETH0.000000370.006
Update Sub Index445687932026-04-11 17:02:1323 hrs ago1775926933IN
0x53F00D15...3FED66FcD
0 ETH0.000000350.006
Update Sub Index445687932026-04-11 17:02:1323 hrs ago1775926933IN
0x53F00D15...3FED66FcD
0 ETH0.000000370.006
Update Sub Index445687922026-04-11 17:02:1123 hrs ago1775926931IN
0x53F00D15...3FED66FcD
0 ETH0.000000370.006
Update Sub Index445687922026-04-11 17:02:1123 hrs ago1775926931IN
0x53F00D15...3FED66FcD
0 ETH0.000000370.006
Update Sub Index445579702026-04-11 11:01:2729 hrs ago1775905287IN
0x53F00D15...3FED66FcD
0 ETH0.000000370.006
Update Sub Index445579702026-04-11 11:01:2729 hrs ago1775905287IN
0x53F00D15...3FED66FcD
0 ETH0.000000370.006
Update Sub Index445579702026-04-11 11:01:2729 hrs ago1775905287IN
0x53F00D15...3FED66FcD
0 ETH0.000000370.006
Update Sub Index445579692026-04-11 11:01:2529 hrs ago1775905285IN
0x53F00D15...3FED66FcD
0 ETH0.000000370.006
Update Sub Index445579692026-04-11 11:01:2529 hrs ago1775905285IN
0x53F00D15...3FED66FcD
0 ETH0.000000370.006
View all transactions

Parent Transaction Hash Block From To
View All Internal Transactions

Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SentimentOracle

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
Yes with 200 runs

Other Settings:
paris EvmVersion
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;

import "@openzeppelin/contracts/access/Ownable.sol";

/**
 * @title SentimentOracle
 * @notice Manages the LOVE Index — a composite score of world sentiment subindices.
 *         The index ranges from 0 to 1000 (basis points of maximum positivity).
 *
 * Subindices:
 *   0 - Global Peace        (20%) — armed conflicts, treaties, diplomacy signals
 *   1 - Charitable Giving   (15%) — global donation volumes
 *   2 - Social Sentiment    (20%) — NLP analysis of public discourse
 *   3 - Environmental Care  (15%) — emissions, reforestation, conservation
 *   4 - Community Wellness  (15%) — health, education, civic participation
 *   5 - Good Spend          (15%) — on-chain: LefCoin spent at verified good destinations
 *
 * The first five subindices are fed by authorized oracle reporters (off-chain data).
 * The Good Spend subindex is updated on-chain by the LefCoin contract itself.
 */
contract SentimentOracle is Ownable {

    uint256 public constant NUM_SUBINDICES = 6;
    uint256 public constant MAX_SCORE = 1000;

    // Subindex identifiers
    uint256 public constant GLOBAL_PEACE       = 0;
    uint256 public constant CHARITABLE_GIVING  = 1;
    uint256 public constant SOCIAL_SENTIMENT   = 2;
    uint256 public constant ENVIRONMENTAL_CARE = 3;
    uint256 public constant COMMUNITY_WELLNESS = 4;
    uint256 public constant GOOD_SPEND         = 5;

    struct SubIndex {
        string  name;
        uint256 weight;   // basis points (sum must be 10000)
        uint256 score;    // 0–1000
        uint256 updatedAt;
    }

    SubIndex[6] public subIndices;

    mapping(address => bool) public oracleReporters;
    address public lefCoinContract;

    event SubIndexUpdated(uint256 indexed id, uint256 newScore, address reporter);
    event ReporterAuthorized(address indexed reporter);
    event ReporterRevoked(address indexed reporter);
    event LoveIndexUpdated(uint256 compositeScore);
    event LefCoinContractUpdated(address newLefCoin);

    modifier onlyReporter() {
        require(oracleReporters[msg.sender], "Not an authorized reporter");
        _;
    }

    modifier onlyLefCoin() {
        require(msg.sender == lefCoinContract, "Only LefCoin contract");
        _;
    }

    constructor() Ownable(msg.sender) {
        // Initialize subindices with names and weights (basis points, total = 10000)
        subIndices[GLOBAL_PEACE]       = SubIndex("Global Peace",        2000, 500, block.timestamp);
        subIndices[CHARITABLE_GIVING]  = SubIndex("Charitable Giving",   1500, 500, block.timestamp);
        subIndices[SOCIAL_SENTIMENT]   = SubIndex("Social Sentiment",    2000, 500, block.timestamp);
        subIndices[ENVIRONMENTAL_CARE] = SubIndex("Environmental Care",  1500, 500, block.timestamp);
        subIndices[COMMUNITY_WELLNESS] = SubIndex("Community Wellness",  1500, 500, block.timestamp);
        subIndices[GOOD_SPEND]         = SubIndex("Good Spend",          1500, 500, block.timestamp);
    }

    // ─── Oracle Reporting ────────────────────────────────────────────

    function authorizeReporter(address reporter) external onlyOwner {
        oracleReporters[reporter] = true;
        emit ReporterAuthorized(reporter);
    }

    function revokeReporter(address reporter) external onlyOwner {
        oracleReporters[reporter] = false;
        emit ReporterRevoked(reporter);
    }

    function setLefCoinContract(address _lefCoin) external onlyOwner {
        lefCoinContract = _lefCoin;
        emit LefCoinContractUpdated(_lefCoin);
    }

    /**
     * @notice Oracle reporters update off-chain subindices (0–4).
     */
    function updateSubIndex(uint256 id, uint256 score) external onlyReporter {
        require(id < GOOD_SPEND, "Use updateGoodSpend for index 5");
        require(score <= MAX_SCORE, "Score exceeds maximum");

        subIndices[id].score = score;
        subIndices[id].updatedAt = block.timestamp;

        emit SubIndexUpdated(id, score, msg.sender);
        emit LoveIndexUpdated(getLoveIndex());
    }

    /**
     * @notice Called by the LefCoin contract to update the Good Spend subindex.
     */
    function updateGoodSpend(uint256 score) external onlyLefCoin {
        require(score <= MAX_SCORE, "Score exceeds maximum");

        subIndices[GOOD_SPEND].score = score;
        subIndices[GOOD_SPEND].updatedAt = block.timestamp;

        emit SubIndexUpdated(GOOD_SPEND, score, msg.sender);
        emit LoveIndexUpdated(getLoveIndex());
    }

    // ─── Index Queries ───────────────────────────────────────────────

    /**
     * @notice Returns the composite LOVE Index (0–1000), a weighted average of all subindices.
     */
    function getLoveIndex() public view returns (uint256) {
        uint256 composite = 0;
        for (uint256 i = 0; i < NUM_SUBINDICES; i++) {
            composite += subIndices[i].score * subIndices[i].weight;
        }
        return composite / 10000; // weights sum to 10000
    }

    /**
     * @notice Returns score and metadata for a single subindex.
     */
    function getSubIndex(uint256 id) external view returns (
        string memory name,
        uint256 weight,
        uint256 score,
        uint256 updatedAt
    ) {
        require(id < NUM_SUBINDICES, "Invalid subindex");
        SubIndex storage s = subIndices[id];
        return (s.name, s.weight, s.score, s.updatedAt);
    }

    /**
     * @notice Returns all subindex scores as an array.
     */
    function getAllScores() external view returns (uint256[6] memory scores) {
        for (uint256 i = 0; i < NUM_SUBINDICES; i++) {
            scores[i] = subIndices[i].score;
        }
    }
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)

pragma solidity ^0.8.20;

import {Context} from "../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.
 *
 * The initial owner is set to the address provided by the deployer. 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;

    /**
     * @dev The caller account is not authorized to perform an operation.
     */
    error OwnableUnauthorizedAccount(address account);

    /**
     * @dev The owner is not a valid owner account. (eg. `address(0)`)
     */
    error OwnableInvalidOwner(address owner);

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

    /**
     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.
     */
    constructor(address initialOwner) {
        if (initialOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(initialOwner);
    }

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

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

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        if (owner() != _msgSender()) {
            revert OwnableUnauthorizedAccount(_msgSender());
        }
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby disabling any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @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 {
        if (newOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)

pragma solidity ^0.8.20;

/**
 * @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;
    }

    function _contextSuffixLength() internal view virtual returns (uint256) {
        return 0;
    }
}

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

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newLefCoin","type":"address"}],"name":"LefCoinContractUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"compositeScore","type":"uint256"}],"name":"LoveIndexUpdated","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":"reporter","type":"address"}],"name":"ReporterAuthorized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"reporter","type":"address"}],"name":"ReporterRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newScore","type":"uint256"},{"indexed":false,"internalType":"address","name":"reporter","type":"address"}],"name":"SubIndexUpdated","type":"event"},{"inputs":[],"name":"CHARITABLE_GIVING","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COMMUNITY_WELLNESS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ENVIRONMENTAL_CARE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GLOBAL_PEACE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GOOD_SPEND","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_SCORE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NUM_SUBINDICES","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SOCIAL_SENTIMENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"reporter","type":"address"}],"name":"authorizeReporter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAllScores","outputs":[{"internalType":"uint256[6]","name":"scores","type":"uint256[6]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLoveIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getSubIndex","outputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"weight","type":"uint256"},{"internalType":"uint256","name":"score","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lefCoinContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"oracleReporters","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"reporter","type":"address"}],"name":"revokeReporter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_lefCoin","type":"address"}],"name":"setLefCoinContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"subIndices","outputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"weight","type":"uint256"},{"internalType":"uint256","name":"score","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"score","type":"uint256"}],"name":"updateGoodSpend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"score","type":"uint256"}],"name":"updateSubIndex","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b5033806200003957604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6200004481620003e4565b506040805160c081018252600c608082019081526b476c6f62616c20506561636560a01b60a08301528082526107d060208301526101f4928201929092524260608201529060019081906200009a9082620004f1565b5060208201518160010155604082015181600201556060820151816003015590505060405180608001604052806040518060400160405280601181526020017043686172697461626c6520476976696e6760781b81525081526020016105dc81526020016101f48152602001428152506001806006811062000120576200012062000434565b6004020160008201518160000190816200013b9190620004f1565b5060208201518160010155604082015181600201556060820151816003015590505060405180608001604052806040518060400160405280601081526020016f14dbd8da585b0814d95b9d1a5b595b9d60821b81525081526020016107d081526020016101f48152602001428152506001600260068110620001c157620001c162000434565b600402016000820151816000019081620001dc9190620004f1565b50602082015181600101556040820151816002015560608201518160030155905050604051806080016040528060405180604001604052806012815260200171456e7669726f6e6d656e74616c204361726560701b81525081526020016105dc81526020016101f4815260200142815250600160036006811062000264576200026462000434565b6004020160008201518160000190816200027f9190620004f1565b50602082015181600101556040820151816002015560608201518160030155905050604051806080016040528060405180604001604052806012815260200171436f6d6d756e6974792057656c6c6e65737360701b81525081526020016105dc81526020016101f4815260200142815250600160046006811062000307576200030762000434565b600402016000820151816000019081620003229190620004f1565b5060208201518160010155604082015181600201556060820151816003015590505060405180608001604052806040518060400160405280600a81526020016911dbdbd90814dc195b9960b21b81525081526020016105dc81526020016101f48152602001428152506001600560068110620003a257620003a262000434565b600402016000820151816000019081620003bd9190620004f1565b506020820151600182015560408201516002820155606090910151600390910155620005bd565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200047557607f821691505b6020821081036200049657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620004ec576000816000526020600020601f850160051c81016020861015620004c75750805b601f850160051c820191505b81811015620004e857828155600101620004d3565b5050505b505050565b81516001600160401b038111156200050d576200050d6200044a565b62000525816200051e845462000460565b846200049c565b602080601f8311600181146200055d5760008415620005445750858301515b600019600386901b1c1916600185901b178555620004e8565b600085815260208120601f198616915b828110156200058e578886015182559484019460019091019084016200056d565b5085821015620005ad5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610c1080620005cd6000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806387d06196116100b8578063ae469e541161007c578063ae469e5414610293578063b5db77551461029b578063bc35c9af146102a3578063e282dad4146102ab578063eacaf72a146102b3578063f2fde38b146102c657600080fd5b806387d06196146102145780638cdcc955146102295780638da5cb5b1461023c5780638f3602821461024d5780639b5b6ddc1461028057600080fd5b8063627d6bdb1161010a578063627d6bdb146101ce5780636d4473cb146101e1578063715018a6146101e95780637b89cb07146101f1578063839f99c4146101f9578063871eafc41461020c57600080fd5b80630161e4931461014757806327ff622314610162578063319ed7dc1461016b5780633781b3a51461018e57806342115a39146101a3575b600080fd5b61014f6102d9565b6040519081526020015b60405180910390f35b61014f6103e881565b61017e610179366004610a23565b61034e565b6040516101599493929190610a3c565b6101a161019c366004610a9f565b610467565b005b601a546101b6906001600160a01b031681565b6040516001600160a01b039091168152602001610159565b61017e6101dc366004610a23565b6104c4565b61014f600281565b6101a161057d565b61014f600181565b6101a1610207366004610a23565b610591565b61014f600381565b61021c6106a7565b6040516101599190610acf565b6101a1610237366004610a9f565b6106f9565b6000546001600160a01b03166101b6565b61027061025b366004610a9f565b60196020526000908152604090205460ff1681565b6040519015158152602001610159565b6101a161028e366004610a9f565b61074a565b61014f600681565b61014f600081565b61014f600581565b61014f600481565b6101a16102c1366004610b00565b61079e565b6101a16102d4366004610a9f565b61094a565b600080805b600681101561033b57600181600681106102fa576102fa610b22565b60040201600101546001826006811061031557610315610b22565b60040201600201546103279190610b4e565b6103319083610b6b565b91506001016102de565b5061034861271082610b7e565b91505090565b606060008060006006851061039d5760405162461bcd60e51b815260206004820152601060248201526f092dcecc2d8d2c840e6eac4d2dcc8caf60831b60448201526064015b60405180910390fd5b6000600186600681106103b2576103b2610b22565b600402019050806000018160010154826002015483600301548380546103d790610ba0565b80601f016020809104026020016040519081016040528092919081815260200182805461040390610ba0565b80156104505780601f1061042557610100808354040283529160200191610450565b820191906000526020600020905b81548152906001019060200180831161043357829003601f168201915b505050505093509450945094509450509193509193565b61046f610988565b601a80546001600160a01b0319166001600160a01b0383169081179091556040519081527f2cd5758ca00f4ac31bbdf987e78242c178136887900a93f5c7f93e9c257153bf906020015b60405180910390a150565b600181600681106104d457600080fd5b60040201805490915081906104e890610ba0565b80601f016020809104026020016040519081016040528092919081815260200182805461051490610ba0565b80156105615780601f1061053657610100808354040283529160200191610561565b820191906000526020600020905b81548152906001019060200180831161054457829003601f168201915b5050505050908060010154908060020154908060030154905084565b610585610988565b61058f60006109b5565b565b601a546001600160a01b031633146105e35760405162461bcd60e51b815260206004820152601560248201527413db9b1e4813195990dbda5b8818dbdb9d1c9858dd605a1b6044820152606401610394565b6103e881111561062d5760405162461bcd60e51b815260206004820152601560248201527453636f72652065786365656473206d6178696d756d60581b6044820152606401610394565b6017819055426018556040805182815233602082015281516005927f247c700fa0f3204e7f3449507920f779df9145f4d71efe163021e5f6d9b8b110928290030190a27f7d1ade12e340cf3c58822b7e26f4381b417b81f8fbf9d6673dbe0e0611c9b6526106996102d9565b6040519081526020016104b9565b6106af610a05565b60005b60068110156106f557600181600681106106ce576106ce610b22565b60040201600201548282600681106106e8576106e8610b22565b60200201526001016106b2565b5090565b610701610988565b6001600160a01b038116600081815260196020526040808220805460ff19169055517f0c235024c0c7c9d272caaf380c642d240b96f1cbc26acecca0ba9146e90927519190a250565b610752610988565b6001600160a01b038116600081815260196020526040808220805460ff19166001179055517fd576729e54c1a0846f1efbfdf9ec547dea55be936f85a664fa0e40801e17caf99190a250565b3360009081526019602052604090205460ff166107fd5760405162461bcd60e51b815260206004820152601a60248201527f4e6f7420616e20617574686f72697a6564207265706f727465720000000000006044820152606401610394565b6005821061084d5760405162461bcd60e51b815260206004820152601f60248201527f55736520757064617465476f6f645370656e6420666f7220696e6465782035006044820152606401610394565b6103e88111156108975760405162461bcd60e51b815260206004820152601560248201527453636f72652065786365656473206d6178696d756d60581b6044820152606401610394565b80600183600681106108ab576108ab610b22565b600402016002018190555042600183600681106108ca576108ca610b22565b60040201600301556040805182815233602082015283917f247c700fa0f3204e7f3449507920f779df9145f4d71efe163021e5f6d9b8b110910160405180910390a27f7d1ade12e340cf3c58822b7e26f4381b417b81f8fbf9d6673dbe0e0611c9b6526109356102d9565b60405190815260200160405180910390a15050565b610952610988565b6001600160a01b03811661097c57604051631e4fbdf760e01b815260006004820152602401610394565b610985816109b5565b50565b6000546001600160a01b0316331461058f5760405163118cdaa760e01b8152336004820152602401610394565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040518060c001604052806006906020820280368337509192915050565b600060208284031215610a3557600080fd5b5035919050565b608081526000855180608084015260005b81811015610a6a57602081890181015160a0868401015201610a4d565b50600060a0828501015260a0601f19601f83011684010191505084602083015283604083015282606083015295945050505050565b600060208284031215610ab157600080fd5b81356001600160a01b0381168114610ac857600080fd5b9392505050565b60c08101818360005b6006811015610af7578151835260209283019290910190600101610ad8565b50505092915050565b60008060408385031215610b1357600080fd5b50508035926020909101359150565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610b6557610b65610b38565b92915050565b80820180821115610b6557610b65610b38565b600082610b9b57634e487b7160e01b600052601260045260246000fd5b500490565b600181811c90821680610bb457607f821691505b602082108103610bd457634e487b7160e01b600052602260045260246000fd5b5091905056fea264697066735822122013967bc82cb583573ccc26a0aff6d238d0c47059eb7a4a97895e803413d3a67264736f6c63430008180033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101425760003560e01c806387d06196116100b8578063ae469e541161007c578063ae469e5414610293578063b5db77551461029b578063bc35c9af146102a3578063e282dad4146102ab578063eacaf72a146102b3578063f2fde38b146102c657600080fd5b806387d06196146102145780638cdcc955146102295780638da5cb5b1461023c5780638f3602821461024d5780639b5b6ddc1461028057600080fd5b8063627d6bdb1161010a578063627d6bdb146101ce5780636d4473cb146101e1578063715018a6146101e95780637b89cb07146101f1578063839f99c4146101f9578063871eafc41461020c57600080fd5b80630161e4931461014757806327ff622314610162578063319ed7dc1461016b5780633781b3a51461018e57806342115a39146101a3575b600080fd5b61014f6102d9565b6040519081526020015b60405180910390f35b61014f6103e881565b61017e610179366004610a23565b61034e565b6040516101599493929190610a3c565b6101a161019c366004610a9f565b610467565b005b601a546101b6906001600160a01b031681565b6040516001600160a01b039091168152602001610159565b61017e6101dc366004610a23565b6104c4565b61014f600281565b6101a161057d565b61014f600181565b6101a1610207366004610a23565b610591565b61014f600381565b61021c6106a7565b6040516101599190610acf565b6101a1610237366004610a9f565b6106f9565b6000546001600160a01b03166101b6565b61027061025b366004610a9f565b60196020526000908152604090205460ff1681565b6040519015158152602001610159565b6101a161028e366004610a9f565b61074a565b61014f600681565b61014f600081565b61014f600581565b61014f600481565b6101a16102c1366004610b00565b61079e565b6101a16102d4366004610a9f565b61094a565b600080805b600681101561033b57600181600681106102fa576102fa610b22565b60040201600101546001826006811061031557610315610b22565b60040201600201546103279190610b4e565b6103319083610b6b565b91506001016102de565b5061034861271082610b7e565b91505090565b606060008060006006851061039d5760405162461bcd60e51b815260206004820152601060248201526f092dcecc2d8d2c840e6eac4d2dcc8caf60831b60448201526064015b60405180910390fd5b6000600186600681106103b2576103b2610b22565b600402019050806000018160010154826002015483600301548380546103d790610ba0565b80601f016020809104026020016040519081016040528092919081815260200182805461040390610ba0565b80156104505780601f1061042557610100808354040283529160200191610450565b820191906000526020600020905b81548152906001019060200180831161043357829003601f168201915b505050505093509450945094509450509193509193565b61046f610988565b601a80546001600160a01b0319166001600160a01b0383169081179091556040519081527f2cd5758ca00f4ac31bbdf987e78242c178136887900a93f5c7f93e9c257153bf906020015b60405180910390a150565b600181600681106104d457600080fd5b60040201805490915081906104e890610ba0565b80601f016020809104026020016040519081016040528092919081815260200182805461051490610ba0565b80156105615780601f1061053657610100808354040283529160200191610561565b820191906000526020600020905b81548152906001019060200180831161054457829003601f168201915b5050505050908060010154908060020154908060030154905084565b610585610988565b61058f60006109b5565b565b601a546001600160a01b031633146105e35760405162461bcd60e51b815260206004820152601560248201527413db9b1e4813195990dbda5b8818dbdb9d1c9858dd605a1b6044820152606401610394565b6103e881111561062d5760405162461bcd60e51b815260206004820152601560248201527453636f72652065786365656473206d6178696d756d60581b6044820152606401610394565b6017819055426018556040805182815233602082015281516005927f247c700fa0f3204e7f3449507920f779df9145f4d71efe163021e5f6d9b8b110928290030190a27f7d1ade12e340cf3c58822b7e26f4381b417b81f8fbf9d6673dbe0e0611c9b6526106996102d9565b6040519081526020016104b9565b6106af610a05565b60005b60068110156106f557600181600681106106ce576106ce610b22565b60040201600201548282600681106106e8576106e8610b22565b60200201526001016106b2565b5090565b610701610988565b6001600160a01b038116600081815260196020526040808220805460ff19169055517f0c235024c0c7c9d272caaf380c642d240b96f1cbc26acecca0ba9146e90927519190a250565b610752610988565b6001600160a01b038116600081815260196020526040808220805460ff19166001179055517fd576729e54c1a0846f1efbfdf9ec547dea55be936f85a664fa0e40801e17caf99190a250565b3360009081526019602052604090205460ff166107fd5760405162461bcd60e51b815260206004820152601a60248201527f4e6f7420616e20617574686f72697a6564207265706f727465720000000000006044820152606401610394565b6005821061084d5760405162461bcd60e51b815260206004820152601f60248201527f55736520757064617465476f6f645370656e6420666f7220696e6465782035006044820152606401610394565b6103e88111156108975760405162461bcd60e51b815260206004820152601560248201527453636f72652065786365656473206d6178696d756d60581b6044820152606401610394565b80600183600681106108ab576108ab610b22565b600402016002018190555042600183600681106108ca576108ca610b22565b60040201600301556040805182815233602082015283917f247c700fa0f3204e7f3449507920f779df9145f4d71efe163021e5f6d9b8b110910160405180910390a27f7d1ade12e340cf3c58822b7e26f4381b417b81f8fbf9d6673dbe0e0611c9b6526109356102d9565b60405190815260200160405180910390a15050565b610952610988565b6001600160a01b03811661097c57604051631e4fbdf760e01b815260006004820152602401610394565b610985816109b5565b50565b6000546001600160a01b0316331461058f5760405163118cdaa760e01b8152336004820152602401610394565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040518060c001604052806006906020820280368337509192915050565b600060208284031215610a3557600080fd5b5035919050565b608081526000855180608084015260005b81811015610a6a57602081890181015160a0868401015201610a4d565b50600060a0828501015260a0601f19601f83011684010191505084602083015283604083015282606083015295945050505050565b600060208284031215610ab157600080fd5b81356001600160a01b0381168114610ac857600080fd5b9392505050565b60c08101818360005b6006811015610af7578151835260209283019290910190600101610ad8565b50505092915050565b60008060408385031215610b1357600080fd5b50508035926020909101359150565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610b6557610b65610b38565b92915050565b80820180821115610b6557610b65610b38565b600082610b9b57634e487b7160e01b600052601260045260246000fd5b500490565b600181811c90821680610bb457607f821691505b602082108103610bd457634e487b7160e01b600052602260045260246000fd5b5091905056fea264697066735822122013967bc82cb583573ccc26a0aff6d238d0c47059eb7a4a97895e803413d3a67264736f6c63430008180033

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
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.