S Price: $0.48266 (+3.68%)
    /

    Contract

    0x4503a1f2822CDF06720Df440983b37D93B640e39

    Overview

    S Balance

    Sonic LogoSonic LogoSonic Logo0 S

    S Value

    $0.00

    Multichain Info

    No addresses found
    Transaction Hash
    Method
    Block
    Age
    From
    To
    Amount

    There are no matching entries

    1 Internal Transaction found.

    Latest 1 internal transaction

    Parent Transaction Hash Block Age From To Amount
    159882782025-03-26 1:14:0726 days ago1742951647
     Contract Creation
    0 S
    Loading...
    Loading

    Contract Source Code Verified (Exact Match)

    Contract Name:
    RolesAuthority

    Compiler Version
    v0.8.21+commit.d9974bed

    Optimization Enabled:
    Yes with 200 runs

    Other Settings:
    shanghai EvmVersion
    File 1 of 2 : RolesAuthority.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: AGPL-3.0-only
    pragma solidity >=0.8.0;
    import {Auth, Authority} from "../Auth.sol";
    /// @notice Role based Authority that supports up to 256 roles.
    /// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/auth/authorities/RolesAuthority.sol)
    /// @author Modified from Dappsys (https://github.com/dapphub/ds-roles/blob/master/src/roles.sol)
    contract RolesAuthority is Auth, Authority {
    /*//////////////////////////////////////////////////////////////
    EVENTS
    //////////////////////////////////////////////////////////////*/
    event UserRoleUpdated(address indexed user, uint8 indexed role, bool enabled);
    event PublicCapabilityUpdated(address indexed target, bytes4 indexed functionSig, bool enabled);
    event RoleCapabilityUpdated(uint8 indexed role, address indexed target, bytes4 indexed functionSig, bool enabled);
    /*//////////////////////////////////////////////////////////////
    CONSTRUCTOR
    //////////////////////////////////////////////////////////////*/
    constructor(address _owner, Authority _authority) Auth(_owner, _authority) {}
    /*//////////////////////////////////////////////////////////////
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 2 of 2 : Auth.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: AGPL-3.0-only
    pragma solidity >=0.8.0;
    /// @notice Provides a flexible and updatable auth pattern which is completely separate from application logic.
    /// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/auth/Auth.sol)
    /// @author Modified from Dappsys (https://github.com/dapphub/ds-auth/blob/master/src/auth.sol)
    abstract contract Auth {
    event OwnershipTransferred(address indexed user, address indexed newOwner);
    event AuthorityUpdated(address indexed user, Authority indexed newAuthority);
    address public owner;
    Authority public authority;
    constructor(address _owner, Authority _authority) {
    owner = _owner;
    authority = _authority;
    emit OwnershipTransferred(msg.sender, _owner);
    emit AuthorityUpdated(msg.sender, _authority);
    }
    modifier requiresAuth() virtual {
    require(isAuthorized(msg.sender, msg.sig), "UNAUTHORIZED");
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    Settings
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    {
    "remappings": [
    "@solmate/=lib/solmate/src/",
    "@forge-std/=lib/forge-std/src/",
    "@ds-test/=lib/forge-std/lib/ds-test/src/",
    "ds-test/=lib/forge-std/lib/ds-test/src/",
    "@openzeppelin/=lib/openzeppelin-contracts/",
    "@ccip/=lib/ccip/",
    "@oapp-auth/=lib/OAppAuth/src/",
    "@devtools-oapp-evm/=lib/OAppAuth/lib/devtools/packages/oapp-evm/contracts/oapp/",
    "@layerzerolabs/lz-evm-messagelib-v2/=lib/OAppAuth/node_modules/@layerzerolabs/lz-evm-messagelib-v2/",
    "@layerzerolabs/lz-evm-protocol-v2/=lib/OAppAuth/lib/LayerZero-V2/packages/layerzero-v2/evm/protocol/",
    "@layerzerolabs/oapp-evm/=lib/OAppAuth/lib/devtools/packages/oapp-evm/",
    "@lz-oapp-evm/=lib/OAppAuth/lib/LayerZero-V2/packages/layerzero-v2/evm/oapp/contracts/oapp/",
    "@sbu/=lib/OAppAuth/lib/solidity-bytes-utils/",
    "LayerZero-V2/=lib/OAppAuth/lib/",
    "OAppAuth/=lib/OAppAuth/",
    "ccip/=lib/ccip/contracts/",
    "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/",
    "forge-std/=lib/forge-std/src/",
    "halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/",
    "openzeppelin-contracts/=lib/openzeppelin-contracts/",
    "solidity-bytes-utils/=lib/OAppAuth/node_modules/solidity-bytes-utils/",
    "solmate/=lib/solmate/src/"
    ],
    "optimizer": {
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    Contract Security Audit

    Contract ABI

    API
    [{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"contract Authority","name":"_authority","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"contract Authority","name":"newAuthority","type":"address"}],"name":"AuthorityUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":true,"internalType":"bytes4","name":"functionSig","type":"bytes4"},{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"PublicCapabilityUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint8","name":"role","type":"uint8"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":true,"internalType":"bytes4","name":"functionSig","type":"bytes4"},{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"RoleCapabilityUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint8","name":"role","type":"uint8"},{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"UserRoleUpdated","type":"event"},{"inputs":[],"name":"authority","outputs":[{"internalType":"contract Authority","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes4","name":"functionSig","type":"bytes4"}],"name":"canCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"role","type":"uint8"},{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes4","name":"functionSig","type":"bytes4"}],"name":"doesRoleHaveCapability","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint8","name":"role","type":"uint8"}],"name":"doesUserHaveRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bytes4","name":"","type":"bytes4"}],"name":"getRolesWithCapability","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"getUserRoles","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bytes4","name":"","type":"bytes4"}],"name":"isCapabilityPublic","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract Authority","name":"newAuthority","type":"address"}],"name":"setAuthority","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes4","name":"functionSig","type":"bytes4"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setPublicCapability","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"role","type":"uint8"},{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes4","name":"functionSig","type":"bytes4"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setRoleCapability","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint8","name":"role","type":"uint8"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setUserRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

    608060405234801561000f575f80fd5b50604051610b58380380610b5883398101604081905261002e916100dd565b5f80546001600160a01b03199081166001600160a01b0385811691821784556001805490931690851617909155604051849284929133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36040516001600160a01b0382169033907fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b76389980198905f90a350505050610115565b6001600160a01b03811681146100da575f80fd5b50565b5f80604083850312156100ee575f80fd5b82516100f9816100c6565b602084015190925061010a816100c6565b809150509250929050565b610a36806101225f395ff3fe608060405234801561000f575f80fd5b50600436106100cb575f3560e01c80638da5cb5b11610088578063bf7e214f11610063578063bf7e214f1461022c578063c6b0263e1461023f578063ea7ca27614610252578063f2fde38b14610288575f80fd5b80638da5cb5b146101a3578063b4bad06a146101cd578063b700961314610219575f80fd5b806306a36aee146100cf5780632f47571f1461010157806367aff4841461013e5780637917b794146101535780637a9e5e4b1461017d5780637d40583d14610190575b5f80fd5b6100ee6100dd3660046107b5565b60026020525f908152604090205481565b6040519081526020015b60405180910390f35b61012e61010f3660046107f3565b600360209081525f928352604080842090915290825290205460ff1681565b60405190151581526020016100f8565b61015161014c366004610843565b61029b565b005b6100ee6101613660046107f3565b600460209081525f928352604080842090915290825290205481565b61015161018b3660046107b5565b610376565b61015161019e366004610889565b61045a565b5f546101b5906001600160a01b031681565b6040516001600160a01b0390911681526020016100f8565b61012e6101db3660046108de565b6001600160a01b03919091165f9081526004602090815260408083206001600160e01b031990941683529290522054600160ff929092161c16151590565b61012e610227366004610920565b610562565b6001546101b5906001600160a01b031681565b61015161024d36600461093d565b6105df565b61012e610260366004610968565b6001600160a01b03919091165f90815260026020526040902054600160ff9092161c16151590565b6101516102963660046107b5565b61067e565b6102b0335f356001600160e01b0319166106f9565b6102d55760405162461bcd60e51b81526004016102cc90610992565b60405180910390fd5b8015610303576001600160a01b0383165f9081526002602052604090208054600160ff85161b179055610328565b6001600160a01b0383165f9081526002602052604090208054600160ff85161b191690555b8160ff16836001600160a01b03167f4c9bdd0c8e073eb5eda2250b18d8e5121ff27b62064fbeeeed4869bb99bc5bf283604051610369911515815260200190565b60405180910390a3505050565b5f546001600160a01b0316331480610407575060015460405163b700961360e01b81526001600160a01b039091169063b7009613906103c890339030906001600160e01b03195f3516906004016109b8565b602060405180830381865afa1580156103e3573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061040791906109e5565b61040f575f80fd5b600180546001600160a01b0319166001600160a01b03831690811790915560405133907fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b76389980198905f90a350565b61046f335f356001600160e01b0319166106f9565b61048b5760405162461bcd60e51b81526004016102cc90610992565b80156104ce576001600160a01b0383165f9081526004602090815260408083206001600160e01b03198616845290915290208054600160ff87161b179055610508565b6001600160a01b0383165f9081526004602090815260408083206001600160e01b03198616845290915290208054600160ff87161b191690555b816001600160e01b031916836001600160a01b03168560ff167fa52ea92e6e955aa8ac66420b86350f7139959adfcc7e6a14eee1bd116d09860e84604051610554911515815260200190565b60405180910390a450505050565b6001600160a01b0382165f9081526003602090815260408083206001600160e01b03198516845290915281205460ff16806105d757506001600160a01b038084165f9081526004602090815260408083206001600160e01b031987168452825280832054938816835260029091529020541615155b949350505050565b6105f4335f356001600160e01b0319166106f9565b6106105760405162461bcd60e51b81526004016102cc90610992565b6001600160a01b0383165f8181526003602090815260408083206001600160e01b0319871680855290835292819020805460ff191686151590811790915590519081529192917f950a343f5d10445e82a71036d3f4fb3016180a25805141932543b83e2078a93e9101610369565b610693335f356001600160e01b0319166106f9565b6106af5760405162461bcd60e51b81526004016102cc90610992565b5f80546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6001545f906001600160a01b03168015801590610780575060405163b700961360e01b81526001600160a01b0382169063b700961390610741908790309088906004016109b8565b602060405180830381865afa15801561075c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061078091906109e5565b806105d757505f546001600160a01b03858116911614949350505050565b6001600160a01b03811681146107b2575f80fd5b50565b5f602082840312156107c5575f80fd5b81356107d08161079e565b9392505050565b80356001600160e01b0319811681146107ee575f80fd5b919050565b5f8060408385031215610804575f80fd5b823561080f8161079e565b915061081d602084016107d7565b90509250929050565b803560ff811681146107ee575f80fd5b80151581146107b2575f80fd5b5f805f60608486031215610855575f80fd5b83356108608161079e565b925061086e60208501610826565b9150604084013561087e81610836565b809150509250925092565b5f805f806080858703121561089c575f80fd5b6108a585610826565b935060208501356108b58161079e565b92506108c3604086016107d7565b915060608501356108d381610836565b939692955090935050565b5f805f606084860312156108f0575f80fd5b6108f984610826565b925060208401356109098161079e565b9150610917604085016107d7565b90509250925092565b5f805f60608486031215610932575f80fd5b83356108f98161079e565b5f805f6060848603121561094f575f80fd5b833561095a8161079e565b925061086e602085016107d7565b5f8060408385031215610979575f80fd5b82356109848161079e565b915061081d60208401610826565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b6001600160a01b0393841681529190921660208201526001600160e01b0319909116604082015260600190565b5f602082840312156109f5575f80fd5b81516107d08161083656fea264697066735822122092f51831aad59ee3863e2a34702952653be4f8ca59ad1a96a6474b7e358e7dcf64736f6c634300081500330000000000000000000000005f2f11ad8656439d5c14d9b351f8b09cdac2a02d0000000000000000000000000000000000000000000000000000000000000000

    Deployed Bytecode

    0x608060405234801561000f575f80fd5b50600436106100cb575f3560e01c80638da5cb5b11610088578063bf7e214f11610063578063bf7e214f1461022c578063c6b0263e1461023f578063ea7ca27614610252578063f2fde38b14610288575f80fd5b80638da5cb5b146101a3578063b4bad06a146101cd578063b700961314610219575f80fd5b806306a36aee146100cf5780632f47571f1461010157806367aff4841461013e5780637917b794146101535780637a9e5e4b1461017d5780637d40583d14610190575b5f80fd5b6100ee6100dd3660046107b5565b60026020525f908152604090205481565b6040519081526020015b60405180910390f35b61012e61010f3660046107f3565b600360209081525f928352604080842090915290825290205460ff1681565b60405190151581526020016100f8565b61015161014c366004610843565b61029b565b005b6100ee6101613660046107f3565b600460209081525f928352604080842090915290825290205481565b61015161018b3660046107b5565b610376565b61015161019e366004610889565b61045a565b5f546101b5906001600160a01b031681565b6040516001600160a01b0390911681526020016100f8565b61012e6101db3660046108de565b6001600160a01b03919091165f9081526004602090815260408083206001600160e01b031990941683529290522054600160ff929092161c16151590565b61012e610227366004610920565b610562565b6001546101b5906001600160a01b031681565b61015161024d36600461093d565b6105df565b61012e610260366004610968565b6001600160a01b03919091165f90815260026020526040902054600160ff9092161c16151590565b6101516102963660046107b5565b61067e565b6102b0335f356001600160e01b0319166106f9565b6102d55760405162461bcd60e51b81526004016102cc90610992565b60405180910390fd5b8015610303576001600160a01b0383165f9081526002602052604090208054600160ff85161b179055610328565b6001600160a01b0383165f9081526002602052604090208054600160ff85161b191690555b8160ff16836001600160a01b03167f4c9bdd0c8e073eb5eda2250b18d8e5121ff27b62064fbeeeed4869bb99bc5bf283604051610369911515815260200190565b60405180910390a3505050565b5f546001600160a01b0316331480610407575060015460405163b700961360e01b81526001600160a01b039091169063b7009613906103c890339030906001600160e01b03195f3516906004016109b8565b602060405180830381865afa1580156103e3573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061040791906109e5565b61040f575f80fd5b600180546001600160a01b0319166001600160a01b03831690811790915560405133907fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b76389980198905f90a350565b61046f335f356001600160e01b0319166106f9565b61048b5760405162461bcd60e51b81526004016102cc90610992565b80156104ce576001600160a01b0383165f9081526004602090815260408083206001600160e01b03198616845290915290208054600160ff87161b179055610508565b6001600160a01b0383165f9081526004602090815260408083206001600160e01b03198616845290915290208054600160ff87161b191690555b816001600160e01b031916836001600160a01b03168560ff167fa52ea92e6e955aa8ac66420b86350f7139959adfcc7e6a14eee1bd116d09860e84604051610554911515815260200190565b60405180910390a450505050565b6001600160a01b0382165f9081526003602090815260408083206001600160e01b03198516845290915281205460ff16806105d757506001600160a01b038084165f9081526004602090815260408083206001600160e01b031987168452825280832054938816835260029091529020541615155b949350505050565b6105f4335f356001600160e01b0319166106f9565b6106105760405162461bcd60e51b81526004016102cc90610992565b6001600160a01b0383165f8181526003602090815260408083206001600160e01b0319871680855290835292819020805460ff191686151590811790915590519081529192917f950a343f5d10445e82a71036d3f4fb3016180a25805141932543b83e2078a93e9101610369565b610693335f356001600160e01b0319166106f9565b6106af5760405162461bcd60e51b81526004016102cc90610992565b5f80546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6001545f906001600160a01b03168015801590610780575060405163b700961360e01b81526001600160a01b0382169063b700961390610741908790309088906004016109b8565b602060405180830381865afa15801561075c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061078091906109e5565b806105d757505f546001600160a01b03858116911614949350505050565b6001600160a01b03811681146107b2575f80fd5b50565b5f602082840312156107c5575f80fd5b81356107d08161079e565b9392505050565b80356001600160e01b0319811681146107ee575f80fd5b919050565b5f8060408385031215610804575f80fd5b823561080f8161079e565b915061081d602084016107d7565b90509250929050565b803560ff811681146107ee575f80fd5b80151581146107b2575f80fd5b5f805f60608486031215610855575f80fd5b83356108608161079e565b925061086e60208501610826565b9150604084013561087e81610836565b809150509250925092565b5f805f806080858703121561089c575f80fd5b6108a585610826565b935060208501356108b58161079e565b92506108c3604086016107d7565b915060608501356108d381610836565b939692955090935050565b5f805f606084860312156108f0575f80fd5b6108f984610826565b925060208401356109098161079e565b9150610917604085016107d7565b90509250925092565b5f805f60608486031215610932575f80fd5b83356108f98161079e565b5f805f6060848603121561094f575f80fd5b833561095a8161079e565b925061086e602085016107d7565b5f8060408385031215610979575f80fd5b82356109848161079e565b915061081d60208401610826565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b6001600160a01b0393841681529190921660208201526001600160e01b0319909116604082015260600190565b5f602082840312156109f5575f80fd5b81516107d08161083656fea264697066735822122092f51831aad59ee3863e2a34702952653be4f8ca59ad1a96a6474b7e358e7dcf64736f6c63430008150033

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

    0000000000000000000000005f2f11ad8656439d5c14d9b351f8b09cdac2a02d0000000000000000000000000000000000000000000000000000000000000000

    -----Decoded View---------------
    Arg [0] : _owner (address): 0x5F2F11ad8656439d5C14d9B351f8b09cDaC2A02d
    Arg [1] : _authority (address): 0x0000000000000000000000000000000000000000

    -----Encoded View---------------
    2 Constructor Arguments found :
    Arg [0] : 0000000000000000000000005f2f11ad8656439d5c14d9b351f8b09cdac2a02d
    Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000


    Block Age Transaction Gas Used Reward
    view all blocks ##produced##

    Block Age Uncle Number Difficulty Gas Used Reward
    View All Uncles
    Loading...
    Loading
    Loading...
    Loading

    Validator Index Block Age Amount
    View All Withdrawals

    Transaction Hash Block Age Value Eth2 PubKey Valid
    View All Deposits
    [ 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.