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