Source Code
Overview
ETH Balance
0 ETH
ETH Value
$0.00Latest 25 from a total of 137 transactions
| Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Transfer Ownersh... | 29409651 | 200 days ago | IN | 0 ETH | 0.00000021 | ||||
| Set User Role | 29407679 | 200 days ago | IN | 0 ETH | 0.00000251 | ||||
| Set Role Capabil... | 29407186 | 200 days ago | IN | 0 ETH | 0.0000018 | ||||
| Set Role Capabil... | 29407186 | 200 days ago | IN | 0 ETH | 0.0000018 | ||||
| Set User Role | 29406742 | 200 days ago | IN | 0 ETH | 0.00000136 | ||||
| Set Role Capabil... | 29406714 | 200 days ago | IN | 0 ETH | 0.00000108 | ||||
| Set Role Capabil... | 29406714 | 200 days ago | IN | 0 ETH | 0.00000108 | ||||
| Set Role Capabil... | 29406689 | 200 days ago | IN | 0 ETH | 0.00000129 | ||||
| Set Role Capabil... | 29406689 | 200 days ago | IN | 0 ETH | 0.00000129 | ||||
| Set Role Capabil... | 29406671 | 200 days ago | IN | 0 ETH | 0.00000104 | ||||
| Set Role Capabil... | 29406671 | 200 days ago | IN | 0 ETH | 0.00000104 | ||||
| Set Role Capabil... | 29406671 | 200 days ago | IN | 0 ETH | 0.00000104 | ||||
| Set Role Capabil... | 29406598 | 200 days ago | IN | 0 ETH | 0.00000072 | ||||
| Set Role Capabil... | 29406598 | 200 days ago | IN | 0 ETH | 0.00000072 | ||||
| Set Role Capabil... | 29406598 | 200 days ago | IN | 0 ETH | 0.00000072 | ||||
| Set Role Capabil... | 29406487 | 200 days ago | IN | 0 ETH | 0.00000084 | ||||
| Set Role Capabil... | 29406487 | 200 days ago | IN | 0 ETH | 0.00000087 | ||||
| Set Role Capabil... | 29406439 | 200 days ago | IN | 0 ETH | 0.00000096 | ||||
| Set Role Capabil... | 29406439 | 200 days ago | IN | 0 ETH | 0.00000096 | ||||
| Set Role Capabil... | 29406439 | 200 days ago | IN | 0 ETH | 0.00000097 | ||||
| Set Role Capabil... | 29406438 | 200 days ago | IN | 0 ETH | 0.00000099 | ||||
| Set Role Capabil... | 29384354 | 200 days ago | IN | 0 ETH | 0.00000015 | ||||
| Set Role Capabil... | 29384354 | 200 days ago | IN | 0 ETH | 0.00000017 | ||||
| Set Role Capabil... | 29384298 | 200 days ago | IN | 0 ETH | 0.00000015 | ||||
| Set Role Capabil... | 29384298 | 200 days ago | IN | 0 ETH | 0.00000015 |
Cross-Chain Transactions
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
RolesAuthority
Compiler Version
v0.8.28+commit.7893614a
Optimization Enabled:
Yes with 1000 runs
Other Settings:
shanghai EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// 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) {}
/*//////////////////////////////////////////////////////////////
ROLE/USER STORAGE
//////////////////////////////////////////////////////////////*/
mapping(address => bytes32) public getUserRoles;
mapping(address => mapping(bytes4 => bool)) public isCapabilityPublic;
mapping(address => mapping(bytes4 => bytes32)) public getRolesWithCapability;
function doesUserHaveRole(address user, uint8 role) public view virtual returns (bool) {
return (uint256(getUserRoles[user]) >> role) & 1 != 0;
}
function doesRoleHaveCapability(
uint8 role,
address target,
bytes4 functionSig
) public view virtual returns (bool) {
return (uint256(getRolesWithCapability[target][functionSig]) >> role) & 1 != 0;
}
/*//////////////////////////////////////////////////////////////
AUTHORIZATION LOGIC
//////////////////////////////////////////////////////////////*/
function canCall(
address user,
address target,
bytes4 functionSig
) public view virtual override returns (bool) {
return
isCapabilityPublic[target][functionSig] ||
bytes32(0) != getUserRoles[user] & getRolesWithCapability[target][functionSig];
}
/*//////////////////////////////////////////////////////////////
ROLE CAPABILITY CONFIGURATION LOGIC
//////////////////////////////////////////////////////////////*/
function setPublicCapability(
address target,
bytes4 functionSig,
bool enabled
) public virtual requiresAuth {
isCapabilityPublic[target][functionSig] = enabled;
emit PublicCapabilityUpdated(target, functionSig, enabled);
}
function setRoleCapability(
uint8 role,
address target,
bytes4 functionSig,
bool enabled
) public virtual requiresAuth {
if (enabled) {
getRolesWithCapability[target][functionSig] |= bytes32(1 << role);
} else {
getRolesWithCapability[target][functionSig] &= ~bytes32(1 << role);
}
emit RoleCapabilityUpdated(role, target, functionSig, enabled);
}
/*//////////////////////////////////////////////////////////////
USER ROLE ASSIGNMENT LOGIC
//////////////////////////////////////////////////////////////*/
function setUserRole(
address user,
uint8 role,
bool enabled
) public virtual requiresAuth {
if (enabled) {
getUserRoles[user] |= bytes32(1 << role);
} else {
getUserRoles[user] &= ~bytes32(1 << role);
}
emit UserRoleUpdated(user, role, enabled);
}
}// 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");
_;
}
function isAuthorized(address user, bytes4 functionSig) internal view virtual returns (bool) {
Authority auth = authority; // Memoizing authority saves us a warm SLOAD, around 100 gas.
// Checking if the caller is the owner only after calling the authority saves gas in most cases, but be
// aware that this makes protected functions uncallable even to the owner if the authority is out of order.
return (address(auth) != address(0) && auth.canCall(user, address(this), functionSig)) || user == owner;
}
function setAuthority(Authority newAuthority) public virtual {
// We check if the caller is the owner first because we want to ensure they can
// always swap out the authority even if it's reverting or using up a lot of gas.
require(msg.sender == owner || authority.canCall(msg.sender, address(this), msg.sig));
authority = newAuthority;
emit AuthorityUpdated(msg.sender, newAuthority);
}
function transferOwnership(address newOwner) public virtual requiresAuth {
owner = newOwner;
emit OwnershipTransferred(msg.sender, newOwner);
}
}
/// @notice A generic interface for a contract which provides authorization data to an Auth instance.
/// @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)
interface Authority {
function canCall(
address user,
address target,
bytes4 functionSig
) external view returns (bool);
}{
"remappings": [
"@openzeppelin/contracts/=node_modules/@openzeppelin/contracts/",
"@openzeppelin/contracts-upgradeable/=node_modules/@openzeppelin/contracts-upgradeable/",
"@solmate/=node_modules/solmate/src/",
"forge-std/=node_modules/forge-std/",
"solmate/=node_modules/solmate/"
],
"optimizer": {
"enabled": true,
"runs": 1000
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "none",
"appendCBOR": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "shanghai",
"viaIR": false,
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
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"}]Contract Creation Code
608060405234801561000f575f5ffd5b50604051610ba4380380610ba483398101604081905261002e916100dd565b5f80546001600160a01b03199081166001600160a01b0385811691821784556001805490931690851617909155604051849284929133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36040516001600160a01b0382169033907fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b76389980198905f90a350505050610115565b6001600160a01b03811681146100da575f5ffd5b50565b5f5f604083850312156100ee575f5ffd5b82516100f9816100c6565b602084015190925061010a816100c6565b809150509250929050565b610a82806101225f395ff3fe608060405234801561000f575f5ffd5b50600436106100da575f3560e01c80638da5cb5b11610088578063bf7e214f11610063578063bf7e214f1461023b578063c6b0263e1461024e578063ea7ca27614610261578063f2fde38b14610297575f5ffd5b80638da5cb5b146101b2578063b4bad06a146101dc578063b700961314610228575f5ffd5b80637917b794116100b85780637917b794146101625780637a9e5e4b1461018c5780637d40583d1461019f575f5ffd5b806306a36aee146100de5780632f47571f1461011057806367aff4841461014d575b5f5ffd5b6100fd6100ec36600461087d565b60026020525f908152604090205481565b6040519081526020015b60405180910390f35b61013d61011e3660046108bb565b600360209081525f928352604080842090915290825290205460ff1681565b6040519015158152602001610107565b61016061015b36600461090b565b6102aa565b005b6100fd6101703660046108bb565b600460209081525f928352604080842090915290825290205481565b61016061019a36600461087d565b6103a0565b6101606101ad366004610951565b610494565b5f546101c4906001600160a01b031681565b6040516001600160a01b039091168152602001610107565b61013d6101ea3660046109a6565b6001600160a01b03919091165f9081526004602090815260408083206001600160e01b031990941683529290522054600160ff929092161c16151590565b61013d6102363660046109e8565b6105d0565b6001546101c4906001600160a01b031681565b61016061025c366004610a05565b61064d565b61013d61026f366004610a30565b6001600160a01b03919091165f90815260026020526040902054600160ff9092161c16151590565b6101606102a536600461087d565b61070b565b6102bf335f356001600160e01b0319166107b2565b6102ff5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064015b60405180910390fd5b801561032d576001600160a01b0383165f9081526002602052604090208054600160ff85161b179055610352565b6001600160a01b0383165f9081526002602052604090208054600160ff85161b191690555b8160ff16836001600160a01b03167f4c9bdd0c8e073eb5eda2250b18d8e5121ff27b62064fbeeeed4869bb99bc5bf283604051610393911515815260200190565b60405180910390a3505050565b5f546001600160a01b0316331480610434575060015460405163b700961360e01b81523360048201523060248201525f356001600160e01b03191660448201526001600160a01b039091169063b700961390606401602060405180830381865afa158015610410573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104349190610a5a565b61043c575f5ffd5b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03831690811790915560405133907fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b76389980198905f90a350565b6104a9335f356001600160e01b0319166107b2565b6104e45760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064016102f6565b8015610527576001600160a01b0383165f9081526004602090815260408083206001600160e01b03198616845290915290208054600160ff87161b179055610561565b6001600160a01b0383165f9081526004602090815260408083206001600160e01b03198616845290915290208054600160ff87161b191690555b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916836001600160a01b03168560ff167fa52ea92e6e955aa8ac66420b86350f7139959adfcc7e6a14eee1bd116d09860e846040516105c2911515815260200190565b60405180910390a450505050565b6001600160a01b0382165f9081526003602090815260408083206001600160e01b03198516845290915281205460ff168061064557506001600160a01b038084165f9081526004602090815260408083206001600160e01b031987168452825280832054938816835260029091529020541615155b949350505050565b610662335f356001600160e01b0319166107b2565b61069d5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064016102f6565b6001600160a01b0383165f8181526003602090815260408083206001600160e01b0319871680855290835292819020805460ff191686151590811790915590519081529192917f950a343f5d10445e82a71036d3f4fb3016180a25805141932543b83e2078a93e9101610393565b610720335f356001600160e01b0319166107b2565b61075b5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064016102f6565b5f805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6001545f906001600160a01b03168015801590610848575060405163b700961360e01b81526001600160a01b0385811660048301523060248301526001600160e01b03198516604483015282169063b700961390606401602060405180830381865afa158015610824573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108489190610a5a565b8061064557505f546001600160a01b03858116911614949350505050565b6001600160a01b038116811461087a575f5ffd5b50565b5f6020828403121561088d575f5ffd5b813561089881610866565b9392505050565b80356001600160e01b0319811681146108b6575f5ffd5b919050565b5f5f604083850312156108cc575f5ffd5b82356108d781610866565b91506108e56020840161089f565b90509250929050565b803560ff811681146108b6575f5ffd5b801515811461087a575f5ffd5b5f5f5f6060848603121561091d575f5ffd5b833561092881610866565b9250610936602085016108ee565b91506040840135610946816108fe565b809150509250925092565b5f5f5f5f60808587031215610964575f5ffd5b61096d856108ee565b9350602085013561097d81610866565b925061098b6040860161089f565b9150606085013561099b816108fe565b939692955090935050565b5f5f5f606084860312156109b8575f5ffd5b6109c1846108ee565b925060208401356109d181610866565b91506109df6040850161089f565b90509250925092565b5f5f5f606084860312156109fa575f5ffd5b83356109c181610866565b5f5f5f60608486031215610a17575f5ffd5b8335610a2281610866565b92506109366020850161089f565b5f5f60408385031215610a41575f5ffd5b8235610a4c81610866565b91506108e5602084016108ee565b5f60208284031215610a6a575f5ffd5b8151610898816108fe56fea164736f6c634300081c000a0000000000000000000000007af7e4964818dec8723cb77263bae297ab73adc00000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561000f575f5ffd5b50600436106100da575f3560e01c80638da5cb5b11610088578063bf7e214f11610063578063bf7e214f1461023b578063c6b0263e1461024e578063ea7ca27614610261578063f2fde38b14610297575f5ffd5b80638da5cb5b146101b2578063b4bad06a146101dc578063b700961314610228575f5ffd5b80637917b794116100b85780637917b794146101625780637a9e5e4b1461018c5780637d40583d1461019f575f5ffd5b806306a36aee146100de5780632f47571f1461011057806367aff4841461014d575b5f5ffd5b6100fd6100ec36600461087d565b60026020525f908152604090205481565b6040519081526020015b60405180910390f35b61013d61011e3660046108bb565b600360209081525f928352604080842090915290825290205460ff1681565b6040519015158152602001610107565b61016061015b36600461090b565b6102aa565b005b6100fd6101703660046108bb565b600460209081525f928352604080842090915290825290205481565b61016061019a36600461087d565b6103a0565b6101606101ad366004610951565b610494565b5f546101c4906001600160a01b031681565b6040516001600160a01b039091168152602001610107565b61013d6101ea3660046109a6565b6001600160a01b03919091165f9081526004602090815260408083206001600160e01b031990941683529290522054600160ff929092161c16151590565b61013d6102363660046109e8565b6105d0565b6001546101c4906001600160a01b031681565b61016061025c366004610a05565b61064d565b61013d61026f366004610a30565b6001600160a01b03919091165f90815260026020526040902054600160ff9092161c16151590565b6101606102a536600461087d565b61070b565b6102bf335f356001600160e01b0319166107b2565b6102ff5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064015b60405180910390fd5b801561032d576001600160a01b0383165f9081526002602052604090208054600160ff85161b179055610352565b6001600160a01b0383165f9081526002602052604090208054600160ff85161b191690555b8160ff16836001600160a01b03167f4c9bdd0c8e073eb5eda2250b18d8e5121ff27b62064fbeeeed4869bb99bc5bf283604051610393911515815260200190565b60405180910390a3505050565b5f546001600160a01b0316331480610434575060015460405163b700961360e01b81523360048201523060248201525f356001600160e01b03191660448201526001600160a01b039091169063b700961390606401602060405180830381865afa158015610410573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104349190610a5a565b61043c575f5ffd5b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03831690811790915560405133907fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b76389980198905f90a350565b6104a9335f356001600160e01b0319166107b2565b6104e45760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064016102f6565b8015610527576001600160a01b0383165f9081526004602090815260408083206001600160e01b03198616845290915290208054600160ff87161b179055610561565b6001600160a01b0383165f9081526004602090815260408083206001600160e01b03198616845290915290208054600160ff87161b191690555b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916836001600160a01b03168560ff167fa52ea92e6e955aa8ac66420b86350f7139959adfcc7e6a14eee1bd116d09860e846040516105c2911515815260200190565b60405180910390a450505050565b6001600160a01b0382165f9081526003602090815260408083206001600160e01b03198516845290915281205460ff168061064557506001600160a01b038084165f9081526004602090815260408083206001600160e01b031987168452825280832054938816835260029091529020541615155b949350505050565b610662335f356001600160e01b0319166107b2565b61069d5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064016102f6565b6001600160a01b0383165f8181526003602090815260408083206001600160e01b0319871680855290835292819020805460ff191686151590811790915590519081529192917f950a343f5d10445e82a71036d3f4fb3016180a25805141932543b83e2078a93e9101610393565b610720335f356001600160e01b0319166107b2565b61075b5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064016102f6565b5f805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6001545f906001600160a01b03168015801590610848575060405163b700961360e01b81526001600160a01b0385811660048301523060248301526001600160e01b03198516604483015282169063b700961390606401602060405180830381865afa158015610824573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108489190610a5a565b8061064557505f546001600160a01b03858116911614949350505050565b6001600160a01b038116811461087a575f5ffd5b50565b5f6020828403121561088d575f5ffd5b813561089881610866565b9392505050565b80356001600160e01b0319811681146108b6575f5ffd5b919050565b5f5f604083850312156108cc575f5ffd5b82356108d781610866565b91506108e56020840161089f565b90509250929050565b803560ff811681146108b6575f5ffd5b801515811461087a575f5ffd5b5f5f5f6060848603121561091d575f5ffd5b833561092881610866565b9250610936602085016108ee565b91506040840135610946816108fe565b809150509250925092565b5f5f5f5f60808587031215610964575f5ffd5b61096d856108ee565b9350602085013561097d81610866565b925061098b6040860161089f565b9150606085013561099b816108fe565b939692955090935050565b5f5f5f606084860312156109b8575f5ffd5b6109c1846108ee565b925060208401356109d181610866565b91506109df6040850161089f565b90509250925092565b5f5f5f606084860312156109fa575f5ffd5b83356109c181610866565b5f5f5f60608486031215610a17575f5ffd5b8335610a2281610866565b92506109366020850161089f565b5f5f60408385031215610a41575f5ffd5b8235610a4c81610866565b91506108e5602084016108ee565b5f60208284031215610a6a575f5ffd5b8151610898816108fe56fea164736f6c634300081c000a
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000007af7e4964818dec8723cb77263bae297ab73adc00000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _owner (address): 0x7Af7e4964818dec8723cb77263bAe297ab73adC0
Arg [1] : _authority (address): 0x0000000000000000000000000000000000000000
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000007af7e4964818dec8723cb77263bae297ab73adc0
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
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.