false
false
0
The new Blockscout UI is now open source! Learn how to deploy it here

Contract Address Details

0xCCC260a4228420B9Da421aDB477Eb028162CE042

Contract Name
AccessControl
Creator
0x9b35af–0a1a52 at 0xb02ae8–59083c
Balance
0 ETH
Tokens
Fetching tokens...
Transactions
Fetching transactions...
Transfers
Fetching transfers...
Gas Used
Fetching gas used...
Last Balance Update
1456323
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
Contract name:
AccessControl




Optimization enabled
true
Compiler version
v0.8.28+commit.7893614a




Optimization runs
200
EVM Version
paris




Verified at
2025-06-02T12:47:55.141086Z

Constructor Arguments

0x00000000000000000000000053adbdaa3ee8725de80bf97173b1f1a0a48036de

Arg [0] (address) : 0x53adbdaa3ee8725de80bf97173b1f1a0a48036de

              

contracts/AccessControl.sol

// SPDX-License-Identifier: MIT
// SPDX-FileCopyrightText: Copyright (c) 2024-2025 Schelling Point Labs Inc.
pragma solidity ^0.8.28;

//    ___  __         __                           _  __    __                  __
//   / _ )/ /__  ____/ /__ ___ ___ ___  ___ ___   / |/ /__ / /__    _____  ____/ /__
//  / _  / / _ \/ __/  '_/(_-</ -_) _ \(_-</ -_) /    / -_) __/ |/|/ / _ \/ __/  '_/
// /____/_/\___/\__/_/\_\/___/\__/_//_/___/\__/ /_/|_/\__/\__/|__,__/\___/_/ /_/\_\
//    _____   ____  ___    ___   ___  ________
//   / __/ | / /  |/  /   / _ | / _ \/ __/ __/
//  / _/ | |/ / /|_/ /   / __ |/ // / _/_\ \
// /___/ |___/_/  /_/   /_/ |_/____/_/ /___/
//
// Website:         https://blocksense.network/
// Git Repository:  https://github.com/blocksense-network/blocksense

/// @title AccessControl
/// @author Aneta Tsvetkova
/// @notice Contract that manages access control when writing to the dataFeedStore storage
contract AccessControl {
  address internal immutable OWNER;

  constructor(address owner_) {
    OWNER = owner_;
  }

  fallback() external {
    address _owner = OWNER;

    // no selector is passed
    // whether read or write operation will be executed is determined by the caller
    assembly {
      let _caller := caller()

      // function setAdmins(bytes) external {
      // bytes: <address1 (20b)><isAdmin1 (1b)>...<addressN><isAdminN>
      if eq(_caller, _owner) {
        let length := calldatasize()
        for {
          let pointer := 0
        } lt(pointer, length) {
          pointer := add(pointer, 21)
        } {
          let metadata := calldataload(pointer)
          let admin := and(
            metadata,
            0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000
          )
          let isAdmin := byte(20, metadata)

          sstore(admin, isAdmin)
        }

        return(0, 0)
      }

      // function checkAdminRole(address caller) external view returns (bool) {
      let admin := calldataload(0)
      mstore(0, sload(admin))
      return(0, 0x20)
    }
  }
}
        

Compiler Settings

{"outputSelection":{"*":{"*":["*"],"":["*"]}},"optimizer":{"runs":200,"enabled":true},"libraries":{},"evmVersion":"paris"}
              

Contract ABI

[{"type":"constructor","stateMutability":"nonpayable","inputs":[{"type":"address","name":"owner_","internalType":"address"}]},{"type":"fallback","stateMutability":"nonpayable"}]
              

Contract Creation Code

0x60a0604052348015600f57600080fd5b5060405161012c38038061012c833981016040819052602c91603c565b6001600160a01b0316608052606a565b600060208284031215604d57600080fd5b81516001600160a01b0381168114606357600080fd5b9392505050565b60805160aa61008260003960006012015260aa6000f3fe6080604052348015600f57600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000338181036065573660005b818110156063578035601481901a6bffffffffffffffffffffffff1990911655601501603c565b005b50600035805460005260206000f3fea264697066735822122027946863766b970abf88d8835d243175f1a5efecf5c3a26e02de48df592a4b9064736f6c634300081c003300000000000000000000000053adbdaa3ee8725de80bf97173b1f1a0a48036de

Deployed ByteCode

0x6080604052348015600f57600080fd5b507f00000000000000000000000053adbdaa3ee8725de80bf97173b1f1a0a48036de338181036065573660005b818110156063578035601481901a6bffffffffffffffffffffffff1990911655601501603c565b005b50600035805460005260206000f3fea264697066735822122027946863766b970abf88d8835d243175f1a5efecf5c3a26e02de48df592a4b9064736f6c634300081c0033