Source Code
Overview
ETH Balance
0 ETH
ETH Value
$0.00| Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
Latest 1 internal transaction
Advanced mode:
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 9150536 | 87 days ago | Contract Creation | 0 ETH |
Cross-Chain Transactions
Loading...
Loading
Contract Name:
Pauser
Compiler Version
v0.8.21+commit.d9974bed
Optimization Enabled:
Yes with 200 runs
Other Settings:
shanghai EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: SEL-1.0
// Copyright © 2025 Veda Tech Labs
// Derived from Boring Vault Software © 2025 Veda Tech Labs (TEST ONLY – NO COMMERCIAL USE)
// Licensed under Software Evaluation License, Version 1.0
pragma solidity 0.8.21;
import {Auth, Authority} from "@solmate/auth/Auth.sol";
import {IPausable} from "src/interfaces/IPausable.sol";
contract Pauser is Auth {
// ========================================= STATE =========================================
/**
* @notice List of contracts that can be paused and unpaused using:
* - `pauseAll`
* - `unpauseAll`
*/
IPausable[] internal pausables;
/**
* @notice Used to pause calls to `deposit` and `depositWithPermit`.
*/
bool public isPaused;
/**
* @notice Maps a sender to a pausable contract.
* @dev Used to pause and unpause using `senderPause` and `senderUnpause`.
*/
mapping(address => IPausable) public senderToPausable;
//============================== ERRORS ===============================
error Pauser__IndexOutOfBounds();
//============================== EVENTS ===============================
event PausablePaused(address indexed pausable);
event PausableUnpaused(address indexed pausable);
event PausableAdded(address indexed pausable);
event PausableRemoved(address indexed pausable);
event SenderToPausableUpdated(address indexed sender, address indexed pausable);
//============================== IMMUTABLES ===============================
constructor(address _owner, Authority _authority, IPausable[] memory _pausables) Auth(_owner, _authority) {
for (uint256 i = 0; i < _pausables.length; ++i) {
pausables.push(_pausables[i]);
}
}
// ========================================= ADMIN FUNCTIONS =========================================
/**
* @notice Adds a contract to the list of pausables.
* @dev Callable by PAUSER_ADMIN_ROLE.
*/
function addPausable(IPausable _pausable) external requiresAuth {
pausables.push(_pausable);
emit PausableAdded(address(_pausable));
}
/**
* @notice Removes a contract from the list of pausables.
* @dev Callable by PAUSER_ADMIN_ROLE.
*/
function removePausable(uint256 index) external requiresAuth {
uint256 pausablesLength = pausables.length;
if (index >= pausablesLength) {
revert Pauser__IndexOutOfBounds();
}
address removed = address(pausables[index]);
pausables[index] = pausables[pausablesLength - 1];
pausables.pop();
emit PausableRemoved(removed);
}
/**
* @notice Updates the index of the pausable contract that the sender can pause and unpause.
* @dev Callable by PAUSER_ADMIN_ROLE.
*/
function updateSenderToPausable(address sender, IPausable pausable) external requiresAuth {
senderToPausable[sender] = pausable;
emit SenderToPausableUpdated(sender, address(pausable));
}
// ========================================= GENERIC PAUSER FUNCTIONS =========================================
/**
* @notice Pauses a single pausable contract.
* @dev Callable by GENERIC_PAUSER_ROLE.
*/
function pauseSingle(IPausable pausable) external requiresAuth {
pausable.pause();
emit PausablePaused(address(pausable));
}
/**
* @notice Unpauses a single pausable contract.
* @dev Callable by GENERIC_UNPAUSER_ROLE.
*/
function unpauseSingle(IPausable pausable) external requiresAuth {
pausable.unpause();
emit PausableUnpaused(address(pausable));
}
/**
* @notice Pauses multiple pausable contracts.
* @dev Callable by GENERIC_PAUSER_ROLE.
*/
function pauseMultiple(IPausable[] calldata _pausables) external requiresAuth {
for (uint256 i = 0; i < _pausables.length; ++i) {
_pausables[i].pause();
emit PausablePaused(address(_pausables[i]));
}
}
/**
* @notice Unpauses multiple pausable contracts.
* @dev Callable by GENERIC_UNPAUSER_ROLE.
*/
function unpauseMultiple(IPausable[] calldata _pausables) external requiresAuth {
for (uint256 i = 0; i < _pausables.length; ++i) {
_pausables[i].unpause();
emit PausableUnpaused(address(_pausables[i]));
}
}
// ========================================= PAUSABLES ALL FUNCTIONS =========================================
/**
* @notice Pauses all pausable contracts.
* @dev Callable by PAUSE_ALL_ROLE.
*/
function pauseAll() external requiresAuth {
for (uint256 i = 0; i < pausables.length; ++i) {
pausables[i].pause();
emit PausablePaused(address(pausables[i]));
}
}
/**
* @notice Unpauses all pausable contracts.
* @dev Callable by UNPAUSE_ALL_ROLE.
*/
function unpauseAll() external requiresAuth {
for (uint256 i = 0; i < pausables.length; ++i) {
pausables[i].unpause();
emit PausableUnpaused(address(pausables[i]));
}
}
// ========================================= SENDER FUNCTIONS =========================================
/**
* @notice The below functions can be marked as publically callable, as the `senderToPausable` mapping
* must be updated by an admin in order for the call to succeed. The main advantage of this
* is needing less overhead to explicilty grant a role to pausing bots.
* However if security is of upmost importance, then seperate roles can be created for each function.
*/
/**
* @notice Pauses senders pausable contract.
* @dev Callable by PUBLIC or SENDER_PAUSER_ROLE.
*/
function senderPause() external requiresAuth {
IPausable pausable = senderToPausable[msg.sender];
pausable.pause();
emit PausablePaused(address(pausable));
}
/**
* @notice Unpauses senders pausable contract.
* @dev Callable by PUBLIC or SENDER_UNPAUSER_ROLE.
*/
function senderUnpause() external requiresAuth {
IPausable pausable = senderToPausable[msg.sender];
pausable.unpause();
emit PausableUnpaused(address(pausable));
}
// ========================================= VIEW FUNCTIONS =========================================
/**
* @notice Returns the list of pausable contracts.
*/
function getPausables() external view returns (IPausable[] memory) {
return pausables;
}
}// 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);
}// SPDX-License-Identifier: SEL-1.0
// Copyright © 2025 Veda Tech Labs
// Derived from Boring Vault Software © 2025 Veda Tech Labs (TEST ONLY – NO COMMERCIAL USE)
// Licensed under Software Evaluation License, Version 1.0
pragma solidity 0.8.21;
interface IPausable {
function pause() external;
function unpause() external;
}{
"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/OAppAuth/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": {
"enabled": true,
"runs": 200
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "ipfs",
"appendCBOR": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "shanghai",
"viaIR": false
}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"},{"internalType":"contract IPausable[]","name":"_pausables","type":"address[]"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"Pauser__IndexOutOfBounds","type":"error"},{"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":"pausable","type":"address"}],"name":"PausableAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pausable","type":"address"}],"name":"PausablePaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pausable","type":"address"}],"name":"PausableRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pausable","type":"address"}],"name":"PausableUnpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"pausable","type":"address"}],"name":"SenderToPausableUpdated","type":"event"},{"inputs":[{"internalType":"contract IPausable","name":"_pausable","type":"address"}],"name":"addPausable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"authority","outputs":[{"internalType":"contract Authority","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPausables","outputs":[{"internalType":"contract IPausable[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pauseAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IPausable[]","name":"_pausables","type":"address[]"}],"name":"pauseMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IPausable","name":"pausable","type":"address"}],"name":"pauseSingle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"removePausable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"senderPause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"senderToPausable","outputs":[{"internalType":"contract IPausable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"senderUnpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract Authority","name":"newAuthority","type":"address"}],"name":"setAuthority","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpauseAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IPausable[]","name":"_pausables","type":"address[]"}],"name":"unpauseMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IPausable","name":"pausable","type":"address"}],"name":"unpauseSingle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"contract IPausable","name":"pausable","type":"address"}],"name":"updateSenderToPausable","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
608060405234801562000010575f80fd5b50604051620013423803806200134283398101604081905262000033916200017c565b5f80546001600160a01b03199081166001600160a01b0386811691821784556001805490931690861617909155604051859285929133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36040516001600160a01b0382169033907fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b76389980198905f90a350505f5b815181101562000134576002828281518110620000e757620000e762000276565b60209081029190910181015182546001810184555f938452919092200180546001600160a01b0319166001600160a01b039092169190911790556200012c816200028a565b9050620000c6565b50505050620002af565b6001600160a01b038116811462000153575f80fd5b50565b634e487b7160e01b5f52604160045260245ffd5b805162000177816200013e565b919050565b5f805f606084860312156200018f575f80fd5b83516200019c816200013e565b80935050602080850151620001b1816200013e565b60408601519093506001600160401b0380821115620001ce575f80fd5b818701915087601f830112620001e2575f80fd5b815181811115620001f757620001f762000156565b8060051b604051601f19603f830116810181811085821117156200021f576200021f62000156565b60405291825284820192508381018501918a8311156200023d575f80fd5b938501935b82851015620002665762000256856200016a565b8452938501939285019262000242565b8096505050505050509250925092565b634e487b7160e01b5f52603260045260245ffd5b5f60018201620002a857634e487b7160e01b5f52601160045260245ffd5b5060010190565b61108580620002bd5f395ff3fe608060405234801561000f575f80fd5b5060043610610111575f3560e01c806382c6321f1161009e578063a6bb38331161006e578063a6bb383314610224578063b187bd2614610237578063ba2cd4f914610254578063bf7e214f1461025c578063f2fde38b1461026f575f80fd5b806382c6321f146101c25780638a2ddd03146101ca5780638da5cb5b146101d25780639c260dc1146101fc575f80fd5b806354720ecd116100e457806354720ecd14610163578063595c6a67146101815780636e0db687146101895780636fa020121461019c5780637a9e5e4b146101af575f80fd5b80631414a7371461011557806325fdd89a1461012a5780632a578b951461013d5780634ed1a7ed14610150575b5f80fd5b610128610123366004610e37565b610282565b005b610128610138366004610ea6565b6103ab565b61012861014b366004610e37565b610506565b61012861015e366004610ed1565b610621565b61016b6106d6565b6040516101789190610ef3565b60405180910390f35b610128610736565b610128610197366004610f3f565b610844565b6101286101aa366004610ed1565b6108ca565b6101286101bd366004610ed1565b61097f565b610128610a63565b610128610ae2565b5f546101e4906001600160a01b031681565b6040516001600160a01b039091168152602001610178565b6101e461020a366004610ed1565b60046020525f90815260409020546001600160a01b031681565b610128610232366004610ed1565b610bed565b6003546102449060ff1681565b6040519015158152602001610178565b610128610c95565b6001546101e4906001600160a01b031681565b61012861027d366004610ed1565b610d14565b610297335f356001600160e01b031916610d8f565b6102bc5760405162461bcd60e51b81526004016102b390610f76565b60405180910390fd5b5f5b818110156103a6578282828181106102d8576102d8610f9c565b90506020020160208101906102ed9190610ed1565b6001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610324575f80fd5b505af1158015610336573d5f803e3d5ffd5b5050505082828281811061034c5761034c610f9c565b90506020020160208101906103619190610ed1565b6001600160a01b03167fc67793348a9acacd2336821be434b55e750d7eaceb75a7d98cddf25c4abd25fe60405160405180910390a261039f81610fc4565b90506102be565b505050565b6103c0335f356001600160e01b031916610d8f565b6103dc5760405162461bcd60e51b81526004016102b390610f76565b6002548082106103ff57604051631788aed960e01b815260040160405180910390fd5b5f6002838154811061041357610413610f9c565b5f918252602090912001546001600160a01b031690506002610436600184610fdc565b8154811061044657610446610f9c565b5f91825260209091200154600280546001600160a01b03909216918590811061047157610471610f9c565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060028054806104ad576104ad610fef565b5f8281526020812082015f1990810180546001600160a01b03191690559091019091556040516001600160a01b038316917fb0a48303f5301707a7bd5b756b686984a62fbc23474e950e06b9e580afe86ce791a2505050565b61051b335f356001600160e01b031916610d8f565b6105375760405162461bcd60e51b81526004016102b390610f76565b5f5b818110156103a65782828281811061055357610553610f9c565b90506020020160208101906105689190610ed1565b6001600160a01b0316633f4ba83a6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561059f575f80fd5b505af11580156105b1573d5f803e3d5ffd5b505050508282828181106105c7576105c7610f9c565b90506020020160208101906105dc9190610ed1565b6001600160a01b03167f2e11755ce1f86691f0c706962af2ec7c16a3ee55627a262caa6136ab538ab48260405160405180910390a261061a81610fc4565b9050610539565b610636335f356001600160e01b031916610d8f565b6106525760405162461bcd60e51b81526004016102b390610f76565b806001600160a01b0316633f4ba83a6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561068a575f80fd5b505af115801561069c573d5f803e3d5ffd5b50506040516001600160a01b03841692507f2e11755ce1f86691f0c706962af2ec7c16a3ee55627a262caa6136ab538ab48291505f90a250565b6060600280548060200260200160405190810160405280929190818152602001828054801561072c57602002820191905f5260205f20905b81546001600160a01b0316815260019091019060200180831161070e575b5050505050905090565b61074b335f356001600160e01b031916610d8f565b6107675760405162461bcd60e51b81526004016102b390610f76565b5f5b600254811015610841576002818154811061078657610786610f9c565b5f91825260208220015460408051638456cb5960e01b815290516001600160a01b0390921692638456cb599260048084019382900301818387803b1580156107cc575f80fd5b505af11580156107de573d5f803e3d5ffd5b50505050600281815481106107f5576107f5610f9c565b5f9182526020822001546040516001600160a01b03909116917fc67793348a9acacd2336821be434b55e750d7eaceb75a7d98cddf25c4abd25fe91a261083a81610fc4565b9050610769565b50565b610859335f356001600160e01b031916610d8f565b6108755760405162461bcd60e51b81526004016102b390610f76565b6001600160a01b038281165f8181526004602052604080822080546001600160a01b0319169486169485179055517e69ba6739aefe8c5da62d189e7531045ee8346f32f97499a4c33a8ac63d70db9190a35050565b6108df335f356001600160e01b031916610d8f565b6108fb5760405162461bcd60e51b81526004016102b390610f76565b806001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610933575f80fd5b505af1158015610945573d5f803e3d5ffd5b50506040516001600160a01b03841692507fc67793348a9acacd2336821be434b55e750d7eaceb75a7d98cddf25c4abd25fe91505f90a250565b5f546001600160a01b0316331480610a10575060015460405163b700961360e01b81526001600160a01b039091169063b7009613906109d190339030906001600160e01b03195f351690600401611003565b602060405180830381865afa1580156109ec573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a109190611030565b610a18575f80fd5b600180546001600160a01b0319166001600160a01b03831690811790915560405133907fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b76389980198905f90a350565b610a78335f356001600160e01b031916610d8f565b610a945760405162461bcd60e51b81526004016102b390610f76565b335f908152600460208190526040808320548151638456cb5960e01b815291516001600160a01b03909116938493638456cb599380820193919082900301818387803b158015610933575f80fd5b610af7335f356001600160e01b031916610d8f565b610b135760405162461bcd60e51b81526004016102b390610f76565b5f5b6002548110156108415760028181548110610b3257610b32610f9c565b5f91825260208220015460408051631fa5d41d60e11b815290516001600160a01b0390921692633f4ba83a9260048084019382900301818387803b158015610b78575f80fd5b505af1158015610b8a573d5f803e3d5ffd5b5050505060028181548110610ba157610ba1610f9c565b5f9182526020822001546040516001600160a01b03909116917f2e11755ce1f86691f0c706962af2ec7c16a3ee55627a262caa6136ab538ab48291a2610be681610fc4565b9050610b15565b610c02335f356001600160e01b031916610d8f565b610c1e5760405162461bcd60e51b81526004016102b390610f76565b600280546001810182555f9182527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319166001600160a01b03841690811790915560405190917fad0f29a9103b372244dd2efa706fe423b3e4db36d6cc3dd1fa195add738aea1c91a250565b610caa335f356001600160e01b031916610d8f565b610cc65760405162461bcd60e51b81526004016102b390610f76565b335f908152600460208190526040808320548151631fa5d41d60e11b815291516001600160a01b03909116938493633f4ba83a9380820193919082900301818387803b15801561068a575f80fd5b610d29335f356001600160e01b031916610d8f565b610d455760405162461bcd60e51b81526004016102b390610f76565b5f80546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6001545f906001600160a01b03168015801590610e16575060405163b700961360e01b81526001600160a01b0382169063b700961390610dd790879030908890600401611003565b602060405180830381865afa158015610df2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e169190611030565b80610e2d57505f546001600160a01b038581169116145b9150505b92915050565b5f8060208385031215610e48575f80fd5b823567ffffffffffffffff80821115610e5f575f80fd5b818501915085601f830112610e72575f80fd5b813581811115610e80575f80fd5b8660208260051b8501011115610e94575f80fd5b60209290920196919550909350505050565b5f60208284031215610eb6575f80fd5b5035919050565b6001600160a01b0381168114610841575f80fd5b5f60208284031215610ee1575f80fd5b8135610eec81610ebd565b9392505050565b602080825282518282018190525f9190848201906040850190845b81811015610f335783516001600160a01b031683529284019291840191600101610f0e565b50909695505050505050565b5f8060408385031215610f50575f80fd5b8235610f5b81610ebd565b91506020830135610f6b81610ebd565b809150509250929050565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60018201610fd557610fd5610fb0565b5060010190565b81810381811115610e3157610e31610fb0565b634e487b7160e01b5f52603160045260245ffd5b6001600160a01b0393841681529190921660208201526001600160e01b0319909116604082015260600190565b5f60208284031215611040575f80fd5b81518015158114610eec575f80fdfea264697066735822122068bd708b515f9e812abc072bef4b7d8b4a69cd6b93a4236e4dabd422c1ae695664736f6c634300081500330000000000000000000000005f2f11ad8656439d5c14d9b351f8b09cdac2a02d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000004000000000000000000000000e89faaf3968aca5dcb054d4a9287e54aa84f67e9000000000000000000000000e39682c3c44b73285a2556d4869041e674d1a6b7000000000000000000000000c873f2b7b3ba0a7faa2b56e210e3b965f2b618f50000000000000000000000005f341b1cf8c5949d6be144a725c22383a5d3880b
Deployed Bytecode
0x608060405234801561000f575f80fd5b5060043610610111575f3560e01c806382c6321f1161009e578063a6bb38331161006e578063a6bb383314610224578063b187bd2614610237578063ba2cd4f914610254578063bf7e214f1461025c578063f2fde38b1461026f575f80fd5b806382c6321f146101c25780638a2ddd03146101ca5780638da5cb5b146101d25780639c260dc1146101fc575f80fd5b806354720ecd116100e457806354720ecd14610163578063595c6a67146101815780636e0db687146101895780636fa020121461019c5780637a9e5e4b146101af575f80fd5b80631414a7371461011557806325fdd89a1461012a5780632a578b951461013d5780634ed1a7ed14610150575b5f80fd5b610128610123366004610e37565b610282565b005b610128610138366004610ea6565b6103ab565b61012861014b366004610e37565b610506565b61012861015e366004610ed1565b610621565b61016b6106d6565b6040516101789190610ef3565b60405180910390f35b610128610736565b610128610197366004610f3f565b610844565b6101286101aa366004610ed1565b6108ca565b6101286101bd366004610ed1565b61097f565b610128610a63565b610128610ae2565b5f546101e4906001600160a01b031681565b6040516001600160a01b039091168152602001610178565b6101e461020a366004610ed1565b60046020525f90815260409020546001600160a01b031681565b610128610232366004610ed1565b610bed565b6003546102449060ff1681565b6040519015158152602001610178565b610128610c95565b6001546101e4906001600160a01b031681565b61012861027d366004610ed1565b610d14565b610297335f356001600160e01b031916610d8f565b6102bc5760405162461bcd60e51b81526004016102b390610f76565b60405180910390fd5b5f5b818110156103a6578282828181106102d8576102d8610f9c565b90506020020160208101906102ed9190610ed1565b6001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610324575f80fd5b505af1158015610336573d5f803e3d5ffd5b5050505082828281811061034c5761034c610f9c565b90506020020160208101906103619190610ed1565b6001600160a01b03167fc67793348a9acacd2336821be434b55e750d7eaceb75a7d98cddf25c4abd25fe60405160405180910390a261039f81610fc4565b90506102be565b505050565b6103c0335f356001600160e01b031916610d8f565b6103dc5760405162461bcd60e51b81526004016102b390610f76565b6002548082106103ff57604051631788aed960e01b815260040160405180910390fd5b5f6002838154811061041357610413610f9c565b5f918252602090912001546001600160a01b031690506002610436600184610fdc565b8154811061044657610446610f9c565b5f91825260209091200154600280546001600160a01b03909216918590811061047157610471610f9c565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060028054806104ad576104ad610fef565b5f8281526020812082015f1990810180546001600160a01b03191690559091019091556040516001600160a01b038316917fb0a48303f5301707a7bd5b756b686984a62fbc23474e950e06b9e580afe86ce791a2505050565b61051b335f356001600160e01b031916610d8f565b6105375760405162461bcd60e51b81526004016102b390610f76565b5f5b818110156103a65782828281811061055357610553610f9c565b90506020020160208101906105689190610ed1565b6001600160a01b0316633f4ba83a6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561059f575f80fd5b505af11580156105b1573d5f803e3d5ffd5b505050508282828181106105c7576105c7610f9c565b90506020020160208101906105dc9190610ed1565b6001600160a01b03167f2e11755ce1f86691f0c706962af2ec7c16a3ee55627a262caa6136ab538ab48260405160405180910390a261061a81610fc4565b9050610539565b610636335f356001600160e01b031916610d8f565b6106525760405162461bcd60e51b81526004016102b390610f76565b806001600160a01b0316633f4ba83a6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561068a575f80fd5b505af115801561069c573d5f803e3d5ffd5b50506040516001600160a01b03841692507f2e11755ce1f86691f0c706962af2ec7c16a3ee55627a262caa6136ab538ab48291505f90a250565b6060600280548060200260200160405190810160405280929190818152602001828054801561072c57602002820191905f5260205f20905b81546001600160a01b0316815260019091019060200180831161070e575b5050505050905090565b61074b335f356001600160e01b031916610d8f565b6107675760405162461bcd60e51b81526004016102b390610f76565b5f5b600254811015610841576002818154811061078657610786610f9c565b5f91825260208220015460408051638456cb5960e01b815290516001600160a01b0390921692638456cb599260048084019382900301818387803b1580156107cc575f80fd5b505af11580156107de573d5f803e3d5ffd5b50505050600281815481106107f5576107f5610f9c565b5f9182526020822001546040516001600160a01b03909116917fc67793348a9acacd2336821be434b55e750d7eaceb75a7d98cddf25c4abd25fe91a261083a81610fc4565b9050610769565b50565b610859335f356001600160e01b031916610d8f565b6108755760405162461bcd60e51b81526004016102b390610f76565b6001600160a01b038281165f8181526004602052604080822080546001600160a01b0319169486169485179055517e69ba6739aefe8c5da62d189e7531045ee8346f32f97499a4c33a8ac63d70db9190a35050565b6108df335f356001600160e01b031916610d8f565b6108fb5760405162461bcd60e51b81526004016102b390610f76565b806001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610933575f80fd5b505af1158015610945573d5f803e3d5ffd5b50506040516001600160a01b03841692507fc67793348a9acacd2336821be434b55e750d7eaceb75a7d98cddf25c4abd25fe91505f90a250565b5f546001600160a01b0316331480610a10575060015460405163b700961360e01b81526001600160a01b039091169063b7009613906109d190339030906001600160e01b03195f351690600401611003565b602060405180830381865afa1580156109ec573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a109190611030565b610a18575f80fd5b600180546001600160a01b0319166001600160a01b03831690811790915560405133907fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b76389980198905f90a350565b610a78335f356001600160e01b031916610d8f565b610a945760405162461bcd60e51b81526004016102b390610f76565b335f908152600460208190526040808320548151638456cb5960e01b815291516001600160a01b03909116938493638456cb599380820193919082900301818387803b158015610933575f80fd5b610af7335f356001600160e01b031916610d8f565b610b135760405162461bcd60e51b81526004016102b390610f76565b5f5b6002548110156108415760028181548110610b3257610b32610f9c565b5f91825260208220015460408051631fa5d41d60e11b815290516001600160a01b0390921692633f4ba83a9260048084019382900301818387803b158015610b78575f80fd5b505af1158015610b8a573d5f803e3d5ffd5b5050505060028181548110610ba157610ba1610f9c565b5f9182526020822001546040516001600160a01b03909116917f2e11755ce1f86691f0c706962af2ec7c16a3ee55627a262caa6136ab538ab48291a2610be681610fc4565b9050610b15565b610c02335f356001600160e01b031916610d8f565b610c1e5760405162461bcd60e51b81526004016102b390610f76565b600280546001810182555f9182527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319166001600160a01b03841690811790915560405190917fad0f29a9103b372244dd2efa706fe423b3e4db36d6cc3dd1fa195add738aea1c91a250565b610caa335f356001600160e01b031916610d8f565b610cc65760405162461bcd60e51b81526004016102b390610f76565b335f908152600460208190526040808320548151631fa5d41d60e11b815291516001600160a01b03909116938493633f4ba83a9380820193919082900301818387803b15801561068a575f80fd5b610d29335f356001600160e01b031916610d8f565b610d455760405162461bcd60e51b81526004016102b390610f76565b5f80546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6001545f906001600160a01b03168015801590610e16575060405163b700961360e01b81526001600160a01b0382169063b700961390610dd790879030908890600401611003565b602060405180830381865afa158015610df2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e169190611030565b80610e2d57505f546001600160a01b038581169116145b9150505b92915050565b5f8060208385031215610e48575f80fd5b823567ffffffffffffffff80821115610e5f575f80fd5b818501915085601f830112610e72575f80fd5b813581811115610e80575f80fd5b8660208260051b8501011115610e94575f80fd5b60209290920196919550909350505050565b5f60208284031215610eb6575f80fd5b5035919050565b6001600160a01b0381168114610841575f80fd5b5f60208284031215610ee1575f80fd5b8135610eec81610ebd565b9392505050565b602080825282518282018190525f9190848201906040850190845b81811015610f335783516001600160a01b031683529284019291840191600101610f0e565b50909695505050505050565b5f8060408385031215610f50575f80fd5b8235610f5b81610ebd565b91506020830135610f6b81610ebd565b809150509250929050565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60018201610fd557610fd5610fb0565b5060010190565b81810381811115610e3157610e31610fb0565b634e487b7160e01b5f52603160045260245ffd5b6001600160a01b0393841681529190921660208201526001600160e01b0319909116604082015260600190565b5f60208284031215611040575f80fd5b81518015158114610eec575f80fdfea264697066735822122068bd708b515f9e812abc072bef4b7d8b4a69cd6b93a4236e4dabd422c1ae695664736f6c63430008150033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000005f2f11ad8656439d5c14d9b351f8b09cdac2a02d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000004000000000000000000000000e89faaf3968aca5dcb054d4a9287e54aa84f67e9000000000000000000000000e39682c3c44b73285a2556d4869041e674d1a6b7000000000000000000000000c873f2b7b3ba0a7faa2b56e210e3b965f2b618f50000000000000000000000005f341b1cf8c5949d6be144a725c22383a5d3880b
-----Decoded View---------------
Arg [0] : _owner (address): 0x5F2F11ad8656439d5C14d9B351f8b09cDaC2A02d
Arg [1] : _authority (address): 0x0000000000000000000000000000000000000000
Arg [2] : _pausables (address[]): 0xE89fAaf3968ACa5dCB054D4a9287E54aa84F67e9,0xe39682c3C44b73285A2556D4869041e674d1a6B7,0xc873F2b7b3BA0a7faA2B56e210E3B965f2b618f5,0x5F341B1cf8C5949d6bE144A725c22383a5D3880B
-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000005f2f11ad8656439d5c14d9b351f8b09cdac2a02d
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [4] : 000000000000000000000000e89faaf3968aca5dcb054d4a9287e54aa84f67e9
Arg [5] : 000000000000000000000000e39682c3c44b73285a2556d4869041e674d1a6b7
Arg [6] : 000000000000000000000000c873f2b7b3ba0a7faa2b56e210e3b965f2b618f5
Arg [7] : 0000000000000000000000005f341b1cf8c5949d6be144a725c22383a5d3880b
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.