ETH Price: $2,024.91 (-0.16%)
 

Overview

ETH Balance

0 ETH

ETH Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To

There are no matching entries

Please try again later

Parent Transaction Hash Block From To
View All Internal Transactions

Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
RoyaltizOracle

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
shanghai EvmVersion
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

/**
 * @title RoyaltizOracle
 * @dev Oracle contract storing market cap, talent token circulating supply, and historical data
 * @notice ENG-174: Oracle contract for Base
 */
contract RoyaltizOracle {
  address public immutable OWNER;
  address public updater;

  struct MarketCapSnapshot {
    uint256 marketCap;
    uint256 timestamp;
  }

  struct CirculatingSupplySnapshot {
    uint256 supply;
    uint256 timestamp;
  }

  // Market cap history indexed by year*100 + week
  mapping(uint256 => MarketCapSnapshot) public marketCapHistory;

  // Talent circulating supply history: talent identifier -> index -> snapshot
  mapping(string => mapping(uint256 => CirculatingSupplySnapshot))
    public talentCirculationSupplyHistory;

  // Latest market cap data
  uint256 public latestMarketCap;
  uint256 public latestMarketCapTimestamp;
  uint256 public latestMarketCapIndex;

  // Latest circulating supply per talent: talent identifier -> latest index
  mapping(string => uint256) public latestTalentSupplyIndex;

  modifier onlyUpdater() {
    _onlyUpdater();
    _;
  }

  modifier onlyOwner() {
    _onlyOwner();
    _;
  }

  modifier notZeroAddress(address _address) {
    _notZeroAddress(_address);
    _;
  }

  modifier notSameAsOwner(address _address) {
    _notSameAsOwner(_address);
    _;
  }

  function _onlyUpdater() internal view {
    require(msg.sender == updater, 'RoyaltizOracle: caller is not updater');
  }

  function _onlyOwner() internal view {
    require(msg.sender == OWNER, 'RoyaltizOracle: caller is not owner');
  }

  function _notZeroAddress(address _address) internal pure {
    require(_address != address(0), 'RoyaltizOracle: address cannot be zero');
  }

  function _notSameAsOwner(address _address) internal view {
    require(_address != OWNER, 'RoyaltizOracle: address cannot be owner');
  }

  event MarketCapUpdated(uint256 indexed index, uint256 marketCap);
  event CirculatingSupplyUpdated(
    string indexed talent,
    uint256 indexed index,
    uint256 circulatingSupply
  );
  event UpdaterChanged(address indexed oldUpdater, address indexed newUpdater);

  constructor(address _owner, address _updater) {
    require(_owner != address(0), 'RoyaltizOracle: owner cannot be zero');
    require(_updater != address(0), 'RoyaltizOracle: updater cannot be zero');
    require(
      _owner != _updater,
      'RoyaltizOracle: owner and updater cannot be the same'
    );

    OWNER = _owner;
    updater = _updater;
  }

  /**
   * @dev Push market cap snapshot
   * @param year Year (e.g., 2025)
   * @param week Week number (1-53)
   * @param marketCap Market cap value
   */
  function pushMarketCap(
    uint256 year,
    uint256 week,
    uint256 marketCap
  ) external onlyUpdater {
    require(week > 0 && week <= 53, 'RoyaltizOracle: invalid week');
    require(year >= 2020, 'RoyaltizOracle: invalid year');

    uint256 index = year * 100 + week;
    require(
      index >= latestMarketCapIndex,
      'RoyaltizOracle: only current or newer snapshots can be published'
    );

    latestMarketCap = marketCap;
    latestMarketCapTimestamp = block.timestamp;
    latestMarketCapIndex = index;
    marketCapHistory[index] = MarketCapSnapshot({
      marketCap: marketCap,
      timestamp: block.timestamp
    });

    emit MarketCapUpdated(index, marketCap);
  }

  /**
   * @dev Push circulating supply snapshot for a talent
   * @param year Year (e.g., 2025)
   * @param week Week number (1-53)
   * @param circulatingSupply Circulating supply value
   * @param talent Talent identifier (e.g., ticker symbol)
   */
  function pushCirculatingSupply(
    uint256 year,
    uint256 week,
    uint256 circulatingSupply,
    string calldata talent
  ) external onlyUpdater {
    require(week > 0 && week <= 53, 'RoyaltizOracle: invalid week');
    require(year >= 2020, 'RoyaltizOracle: invalid year');
    require(
      bytes(talent).length > 0,
      'RoyaltizOracle: talent identifier cannot be empty'
    );

    uint256 index = year * 100 + week;
    uint256 latestIndex = latestTalentSupplyIndex[talent];

    require(
      index >= latestIndex,
      'RoyaltizOracle: only current or newer circulating supply snapshots can be published'
    );

    talentCirculationSupplyHistory[talent][index] = CirculatingSupplySnapshot({
      supply: circulatingSupply,
      timestamp: block.timestamp
    });
    latestTalentSupplyIndex[talent] = index;

    emit CirculatingSupplyUpdated(talent, index, circulatingSupply);
  }

  /**
   * @dev Get market cap snapshot by index
   * @param index Index (year * 100 + week)
   * @return Market cap snapshot
   */
  function getMarketCapSnapshot(
    uint256 index
  ) external view returns (MarketCapSnapshot memory) {
    return marketCapHistory[index];
  }

  /**
   * @dev Get circulating supply snapshot for a talent
   * @param talent Talent identifier
   * @param index Index (year * 100 + week)
   * @return Circulating supply snapshot
   */
  function getCirculatingSupplySnapshot(
    string calldata talent,
    uint256 index
  ) external view returns (CirculatingSupplySnapshot memory) {
    return talentCirculationSupplyHistory[talent][index];
  }

  /**
   * @dev Get latest circulating supply index for a talent
   * @param talent Talent identifier
   * @return Latest index
   */
  function getLatestTalentSupplyIndex(
    string calldata talent
  ) external view returns (uint256) {
    return latestTalentSupplyIndex[talent];
  }

  /**
   * @dev Change the updater address
   * @param _updater New updater address
   */
  function setUpdater(
    address _updater
  ) external onlyOwner notZeroAddress(_updater) notSameAsOwner(_updater) {
    address oldUpdater = updater;
    updater = _updater;

    emit UpdaterChanged(oldUpdater, _updater);
  }
}

Settings
{
  "remappings": [
    "forge-std/=lib/forge-std/src/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 200,
    "details": {
      "peephole": true,
      "inliner": true,
      "jumpdestRemover": true,
      "orderLiterals": true,
      "deduplicate": true,
      "cse": true,
      "constantOptimizer": true
    }
  },
  "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "ipfs",
    "appendCBOR": true
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "shanghai",
  "viaIR": false
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_updater","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"talent","type":"string"},{"indexed":true,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"circulatingSupply","type":"uint256"}],"name":"CirculatingSupplyUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"marketCap","type":"uint256"}],"name":"MarketCapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldUpdater","type":"address"},{"indexed":true,"internalType":"address","name":"newUpdater","type":"address"}],"name":"UpdaterChanged","type":"event"},{"inputs":[],"name":"OWNER","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"talent","type":"string"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getCirculatingSupplySnapshot","outputs":[{"components":[{"internalType":"uint256","name":"supply","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"internalType":"struct RoyaltizOracle.CirculatingSupplySnapshot","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"talent","type":"string"}],"name":"getLatestTalentSupplyIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getMarketCapSnapshot","outputs":[{"components":[{"internalType":"uint256","name":"marketCap","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"internalType":"struct RoyaltizOracle.MarketCapSnapshot","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestMarketCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestMarketCapIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestMarketCapTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"latestTalentSupplyIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"marketCapHistory","outputs":[{"internalType":"uint256","name":"marketCap","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"year","type":"uint256"},{"internalType":"uint256","name":"week","type":"uint256"},{"internalType":"uint256","name":"circulatingSupply","type":"uint256"},{"internalType":"string","name":"talent","type":"string"}],"name":"pushCirculatingSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"year","type":"uint256"},{"internalType":"uint256","name":"week","type":"uint256"},{"internalType":"uint256","name":"marketCap","type":"uint256"}],"name":"pushMarketCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_updater","type":"address"}],"name":"setUpdater","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"talentCirculationSupplyHistory","outputs":[{"internalType":"uint256","name":"supply","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"updater","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

60a060405234801561000f575f80fd5b50604051610f79380380610f7983398101604081905261002e916101c3565b6001600160a01b0382166100955760405162461bcd60e51b8152602060048201526024808201527f526f79616c74697a4f7261636c653a206f776e65722063616e6e6f74206265206044820152637a65726f60e01b60648201526084015b60405180910390fd5b6001600160a01b0381166100fa5760405162461bcd60e51b815260206004820152602660248201527f526f79616c74697a4f7261636c653a20757064617465722063616e6e6f74206260448201526565207a65726f60d01b606482015260840161008c565b806001600160a01b0316826001600160a01b0316036101815760405162461bcd60e51b815260206004820152603460248201527f526f79616c74697a4f7261636c653a206f776e657220616e642075706461746560448201527f722063616e6e6f74206265207468652073616d65000000000000000000000000606482015260840161008c565b6001600160a01b039182166080525f80546001600160a01b031916919092161790556101f4565b80516001600160a01b03811681146101be575f80fd5b919050565b5f80604083850312156101d4575f80fd5b6101dd836101a8565b91506101eb602084016101a8565b90509250929050565b608051610d5f61021a5f395f818161010a015281816108a501526109880152610d5f5ff3fe608060405234801561000f575f80fd5b50600436106100e5575f3560e01c80639d54f41911610088578063df034cd011610063578063df034cd014610286578063eaed247c14610298578063f63ab07e146102a1578063ffac159c146102b4575f80fd5b80639d54f41914610203578063c1c0003114610216578063c7e41dbd14610260575f80fd5b80632c3680f2116100c35780632c3680f21461014d5780632de4ce1e146101a35780637546923e146101ce5780639aa37c86146101ee575f80fd5b80630202b065146100e9578063117803e3146101055780631214979d14610144575b5f80fd5b6100f260045481565b6040519081526020015b60405180910390f35b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100fc565b6100f260055481565b61018e61015b366004610ab4565b81516020818401810180516002825292820194820194909420919093529091525f90815260409020805460019091015482565b604080519283526020830191909152016100fc565b6100f26101b1366004610af6565b805160208183018101805160068252928201919093012091525481565b6101e16101dc366004610b75565b6102c7565b6040516100fc9190610bbd565b6102016101fc366004610bd4565b610320565b005b610201610211366004610bfd565b6104e1565b6101e1610224366004610c2a565b604080518082019091525f8082526020820152505f90815260016020818152604092839020835180850190945280548452909101549082015290565b61018e61026e366004610c2a565b600160208190525f9182526040909120805491015482565b5f5461012c906001600160a01b031681565b6100f260035481565b6102016102af366004610c41565b61054e565b6100f26102c2366004610c9d565b610806565b604080518082019091525f8082526020820152600284846040516102ec929190610cdc565b90815260408051602092819003830181205f9586528352938190208482019091528054845260010154908301525092915050565b610328610831565b5f82118015610338575060358211155b6103895760405162461bcd60e51b815260206004820152601c60248201527f526f79616c74697a4f7261636c653a20696e76616c6964207765656b0000000060448201526064015b60405180910390fd5b6107e48310156103db5760405162461bcd60e51b815260206004820152601c60248201527f526f79616c74697a4f7261636c653a20696e76616c69642079656172000000006044820152606401610380565b5f826103e8856064610cff565b6103f29190610d16565b905060055481101561046e576040805162461bcd60e51b81526020600482015260248101919091527f526f79616c74697a4f7261636c653a206f6e6c792063757272656e74206f722060448201527f6e6577657220736e617073686f74732063616e206265207075626c69736865646064820152608401610380565b6003829055426004819055600582905560408051808201825284815260208082019384525f85815260018083529084902092518355935191909301555183815282917f66dbe2a5a7705d1e38733ae36432c26d32e3522e859de9f133643760069f8a44910160405180910390a250505050565b6104e961089a565b806104f38161091e565b816104fd81610986565b5f80546001600160a01b038581166001600160a01b0319831681178455604051919092169283917f662a4a4a892f5f13cf7ee050fdaa045f8641601fdbc843e8a71f418099cacd4e9190a350505050565b610556610831565b5f84118015610566575060358411155b6105b25760405162461bcd60e51b815260206004820152601c60248201527f526f79616c74697a4f7261636c653a20696e76616c6964207765656b000000006044820152606401610380565b6107e48510156106045760405162461bcd60e51b815260206004820152601c60248201527f526f79616c74697a4f7261636c653a20696e76616c69642079656172000000006044820152606401610380565b8061066b5760405162461bcd60e51b815260206004820152603160248201527f526f79616c74697a4f7261636c653a2074616c656e74206964656e7469666965604482015270722063616e6e6f7420626520656d70747960781b6064820152608401610380565b5f84610678876064610cff565b6106829190610d16565b90505f60068484604051610697929190610cdc565b90815260200160405180910390205490508082101561073a5760405162461bcd60e51b815260206004820152605360248201527f526f79616c74697a4f7261636c653a206f6e6c792063757272656e74206f722060448201527f6e657765722063697263756c6174696e6720737570706c7920736e617073686f6064820152721d1cc818d85b881899481c1d589b1a5cda1959606a1b608482015260a401610380565b60405180604001604052808681526020014281525060028585604051610761929190610cdc565b9081526040805191829003602090810183205f878152908252919091208351815592015160019092019190915582906006906107a09087908790610cdc565b9081526020016040518091039020819055508184846040516107c3929190610cdc565b604051908190038120878252907f16a3aec933924ba67c65ab300080af07e02197a72d9c834733ed19e9323cc04c9060200160405180910390a350505050505050565b5f60068383604051610819929190610cdc565b90815260200160405180910390205490505b92915050565b5f546001600160a01b031633146108985760405162461bcd60e51b815260206004820152602560248201527f526f79616c74697a4f7261636c653a2063616c6c6572206973206e6f742075706044820152643230ba32b960d91b6064820152608401610380565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108985760405162461bcd60e51b815260206004820152602360248201527f526f79616c74697a4f7261636c653a2063616c6c6572206973206e6f74206f776044820152623732b960e91b6064820152608401610380565b6001600160a01b0381166109835760405162461bcd60e51b815260206004820152602660248201527f526f79616c74697a4f7261636c653a20616464726573732063616e6e6f74206260448201526565207a65726f60d01b6064820152608401610380565b50565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316036109835760405162461bcd60e51b815260206004820152602760248201527f526f79616c74697a4f7261636c653a20616464726573732063616e6e6f742062604482015266329037bbb732b960c91b6064820152608401610380565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610a3a575f80fd5b813567ffffffffffffffff80821115610a5557610a55610a17565b604051601f8301601f19908116603f01168101908282118183101715610a7d57610a7d610a17565b81604052838152866020858801011115610a95575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f8060408385031215610ac5575f80fd5b823567ffffffffffffffff811115610adb575f80fd5b610ae785828601610a2b565b95602094909401359450505050565b5f60208284031215610b06575f80fd5b813567ffffffffffffffff811115610b1c575f80fd5b610b2884828501610a2b565b949350505050565b5f8083601f840112610b40575f80fd5b50813567ffffffffffffffff811115610b57575f80fd5b602083019150836020828501011115610b6e575f80fd5b9250929050565b5f805f60408486031215610b87575f80fd5b833567ffffffffffffffff811115610b9d575f80fd5b610ba986828701610b30565b909790965060209590950135949350505050565b81518152602080830151908201526040810161082b565b5f805f60608486031215610be6575f80fd5b505081359360208301359350604090920135919050565b5f60208284031215610c0d575f80fd5b81356001600160a01b0381168114610c23575f80fd5b9392505050565b5f60208284031215610c3a575f80fd5b5035919050565b5f805f805f60808688031215610c55575f80fd5b853594506020860135935060408601359250606086013567ffffffffffffffff811115610c80575f80fd5b610c8c88828901610b30565b969995985093965092949392505050565b5f8060208385031215610cae575f80fd5b823567ffffffffffffffff811115610cc4575f80fd5b610cd085828601610b30565b90969095509350505050565b818382375f9101908152919050565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761082b5761082b610ceb565b8082018082111561082b5761082b610ceb56fea26469706673582212200a58f4d79bcdd51d0ec2b4632e34448a26d7dedbb1e8de0ec3ba395fdc62f0e464736f6c634300081400330000000000000000000000005cd4ce9fc2a0fad7e1e492e45c011cdb927ec00e00000000000000000000000046bae750a3f339e021bc4d75be2a8a37168d74db

Deployed Bytecode

0x608060405234801561000f575f80fd5b50600436106100e5575f3560e01c80639d54f41911610088578063df034cd011610063578063df034cd014610286578063eaed247c14610298578063f63ab07e146102a1578063ffac159c146102b4575f80fd5b80639d54f41914610203578063c1c0003114610216578063c7e41dbd14610260575f80fd5b80632c3680f2116100c35780632c3680f21461014d5780632de4ce1e146101a35780637546923e146101ce5780639aa37c86146101ee575f80fd5b80630202b065146100e9578063117803e3146101055780631214979d14610144575b5f80fd5b6100f260045481565b6040519081526020015b60405180910390f35b61012c7f0000000000000000000000005cd4ce9fc2a0fad7e1e492e45c011cdb927ec00e81565b6040516001600160a01b0390911681526020016100fc565b6100f260055481565b61018e61015b366004610ab4565b81516020818401810180516002825292820194820194909420919093529091525f90815260409020805460019091015482565b604080519283526020830191909152016100fc565b6100f26101b1366004610af6565b805160208183018101805160068252928201919093012091525481565b6101e16101dc366004610b75565b6102c7565b6040516100fc9190610bbd565b6102016101fc366004610bd4565b610320565b005b610201610211366004610bfd565b6104e1565b6101e1610224366004610c2a565b604080518082019091525f8082526020820152505f90815260016020818152604092839020835180850190945280548452909101549082015290565b61018e61026e366004610c2a565b600160208190525f9182526040909120805491015482565b5f5461012c906001600160a01b031681565b6100f260035481565b6102016102af366004610c41565b61054e565b6100f26102c2366004610c9d565b610806565b604080518082019091525f8082526020820152600284846040516102ec929190610cdc565b90815260408051602092819003830181205f9586528352938190208482019091528054845260010154908301525092915050565b610328610831565b5f82118015610338575060358211155b6103895760405162461bcd60e51b815260206004820152601c60248201527f526f79616c74697a4f7261636c653a20696e76616c6964207765656b0000000060448201526064015b60405180910390fd5b6107e48310156103db5760405162461bcd60e51b815260206004820152601c60248201527f526f79616c74697a4f7261636c653a20696e76616c69642079656172000000006044820152606401610380565b5f826103e8856064610cff565b6103f29190610d16565b905060055481101561046e576040805162461bcd60e51b81526020600482015260248101919091527f526f79616c74697a4f7261636c653a206f6e6c792063757272656e74206f722060448201527f6e6577657220736e617073686f74732063616e206265207075626c69736865646064820152608401610380565b6003829055426004819055600582905560408051808201825284815260208082019384525f85815260018083529084902092518355935191909301555183815282917f66dbe2a5a7705d1e38733ae36432c26d32e3522e859de9f133643760069f8a44910160405180910390a250505050565b6104e961089a565b806104f38161091e565b816104fd81610986565b5f80546001600160a01b038581166001600160a01b0319831681178455604051919092169283917f662a4a4a892f5f13cf7ee050fdaa045f8641601fdbc843e8a71f418099cacd4e9190a350505050565b610556610831565b5f84118015610566575060358411155b6105b25760405162461bcd60e51b815260206004820152601c60248201527f526f79616c74697a4f7261636c653a20696e76616c6964207765656b000000006044820152606401610380565b6107e48510156106045760405162461bcd60e51b815260206004820152601c60248201527f526f79616c74697a4f7261636c653a20696e76616c69642079656172000000006044820152606401610380565b8061066b5760405162461bcd60e51b815260206004820152603160248201527f526f79616c74697a4f7261636c653a2074616c656e74206964656e7469666965604482015270722063616e6e6f7420626520656d70747960781b6064820152608401610380565b5f84610678876064610cff565b6106829190610d16565b90505f60068484604051610697929190610cdc565b90815260200160405180910390205490508082101561073a5760405162461bcd60e51b815260206004820152605360248201527f526f79616c74697a4f7261636c653a206f6e6c792063757272656e74206f722060448201527f6e657765722063697263756c6174696e6720737570706c7920736e617073686f6064820152721d1cc818d85b881899481c1d589b1a5cda1959606a1b608482015260a401610380565b60405180604001604052808681526020014281525060028585604051610761929190610cdc565b9081526040805191829003602090810183205f878152908252919091208351815592015160019092019190915582906006906107a09087908790610cdc565b9081526020016040518091039020819055508184846040516107c3929190610cdc565b604051908190038120878252907f16a3aec933924ba67c65ab300080af07e02197a72d9c834733ed19e9323cc04c9060200160405180910390a350505050505050565b5f60068383604051610819929190610cdc565b90815260200160405180910390205490505b92915050565b5f546001600160a01b031633146108985760405162461bcd60e51b815260206004820152602560248201527f526f79616c74697a4f7261636c653a2063616c6c6572206973206e6f742075706044820152643230ba32b960d91b6064820152608401610380565b565b336001600160a01b037f0000000000000000000000005cd4ce9fc2a0fad7e1e492e45c011cdb927ec00e16146108985760405162461bcd60e51b815260206004820152602360248201527f526f79616c74697a4f7261636c653a2063616c6c6572206973206e6f74206f776044820152623732b960e91b6064820152608401610380565b6001600160a01b0381166109835760405162461bcd60e51b815260206004820152602660248201527f526f79616c74697a4f7261636c653a20616464726573732063616e6e6f74206260448201526565207a65726f60d01b6064820152608401610380565b50565b7f0000000000000000000000005cd4ce9fc2a0fad7e1e492e45c011cdb927ec00e6001600160a01b0316816001600160a01b0316036109835760405162461bcd60e51b815260206004820152602760248201527f526f79616c74697a4f7261636c653a20616464726573732063616e6e6f742062604482015266329037bbb732b960c91b6064820152608401610380565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610a3a575f80fd5b813567ffffffffffffffff80821115610a5557610a55610a17565b604051601f8301601f19908116603f01168101908282118183101715610a7d57610a7d610a17565b81604052838152866020858801011115610a95575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f8060408385031215610ac5575f80fd5b823567ffffffffffffffff811115610adb575f80fd5b610ae785828601610a2b565b95602094909401359450505050565b5f60208284031215610b06575f80fd5b813567ffffffffffffffff811115610b1c575f80fd5b610b2884828501610a2b565b949350505050565b5f8083601f840112610b40575f80fd5b50813567ffffffffffffffff811115610b57575f80fd5b602083019150836020828501011115610b6e575f80fd5b9250929050565b5f805f60408486031215610b87575f80fd5b833567ffffffffffffffff811115610b9d575f80fd5b610ba986828701610b30565b909790965060209590950135949350505050565b81518152602080830151908201526040810161082b565b5f805f60608486031215610be6575f80fd5b505081359360208301359350604090920135919050565b5f60208284031215610c0d575f80fd5b81356001600160a01b0381168114610c23575f80fd5b9392505050565b5f60208284031215610c3a575f80fd5b5035919050565b5f805f805f60808688031215610c55575f80fd5b853594506020860135935060408601359250606086013567ffffffffffffffff811115610c80575f80fd5b610c8c88828901610b30565b969995985093965092949392505050565b5f8060208385031215610cae575f80fd5b823567ffffffffffffffff811115610cc4575f80fd5b610cd085828601610b30565b90969095509350505050565b818382375f9101908152919050565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761082b5761082b610ceb565b8082018082111561082b5761082b610ceb56fea26469706673582212200a58f4d79bcdd51d0ec2b4632e34448a26d7dedbb1e8de0ec3ba395fdc62f0e464736f6c63430008140033

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

0000000000000000000000005cd4ce9fc2a0fad7e1e492e45c011cdb927ec00e00000000000000000000000046bae750a3f339e021bc4d75be2a8a37168d74db

-----Decoded View---------------
Arg [0] : _owner (address): 0x5Cd4CE9Fc2A0Fad7e1e492e45C011Cdb927ec00e
Arg [1] : _updater (address): 0x46BAe750a3f339e021bc4d75Be2a8a37168d74DB

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000005cd4ce9fc2a0fad7e1e492e45c011cdb927ec00e
Arg [1] : 00000000000000000000000046bae750a3f339e021bc4d75be2a8a37168d74db


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

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.