ETH Price: $3,021.78 (-2.20%)

Contract

0xF51a075d468dE7dE3599C1Dc47F5C42d02C9230e
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Owner206687732024-09-03 8:11:59440 days ago1725351119IN
0xF51a075d...d02C9230e
0 ETH0.000029161.04059335

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SplitterMom

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
paris EvmVersion
// SPDX-FileCopyrightText: © 2023 Dai Foundation <www.daifoundation.org>
// SPDX-License-Identifier: AGPL-3.0-or-later
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program.  If not, see <https://www.gnu.org/licenses/>.

pragma solidity ^0.8.21;

interface SplitterLike {
    function file(bytes32, uint256) external;
}

interface AuthorityLike {
    function canCall(address src, address dst, bytes4 sig) external view returns (bool);
}

// Bypass governance delay to disable the splitter
contract SplitterMom {
    address public owner;
    address public authority;

    SplitterLike public immutable splitter;

    event SetOwner(address indexed _owner);
    event SetAuthority(address indexed _authority);
    event Stop();

    modifier onlyOwner {
        require(msg.sender == owner, "SplitterMom/only-owner");
        _;
    }

    modifier auth {
        require(isAuthorized(msg.sender, msg.sig), "SplitterMom/not-authorized");
        _;
    }

    constructor(address _splitter) {
        splitter = SplitterLike(_splitter);
        
        owner = msg.sender;
        emit SetOwner(msg.sender);
    }

    function isAuthorized(address src, bytes4 sig) internal view returns (bool) {
        if (src == address(this)) {
            return true;
        } else if (src == owner) {
            return true;
        } else if (authority == address(0)) {
            return false;
        } else {
            return AuthorityLike(authority).canCall(src, address(this), sig);
        }
    }

    // Governance actions with delay
    function setOwner(address _owner) external onlyOwner {
        owner = _owner;
        emit SetOwner(_owner);
    }

    function setAuthority(address _authority) external onlyOwner {
        authority = _authority;
        emit SetAuthority(_authority);
    }

    // Governance action without delay
    function stop() external auth {
        splitter.file("hop", type(uint256).max);
        emit Stop();
    }
}

Settings
{
  "remappings": [
    "dss-interfaces/=lib/dss-test/lib/dss-interfaces/src/",
    "dss-test/=lib/dss-test/src/",
    "forge-std/=lib/dss-test/lib/forge-std/src/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "ipfs",
    "appendCBOR": true
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "paris",
  "viaIR": false,
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_splitter","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_authority","type":"address"}],"name":"SetAuthority","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"}],"name":"SetOwner","type":"event"},{"anonymous":false,"inputs":[],"name":"Stop","type":"event"},{"inputs":[],"name":"authority","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_authority","type":"address"}],"name":"setAuthority","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"splitter","outputs":[{"internalType":"contract SplitterLike","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stop","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60a060405234801561001057600080fd5b5060405161058538038061058583398101604081905261002f9161007e565b6001600160a01b038116608052600080546001600160a01b03191633908117825560405190917f167d3e9c1016ab80e58802ca9da10ce5c6a0f4debc46a2e7a2cd9e56899a4fb591a2506100ae565b60006020828403121561009057600080fd5b81516001600160a01b03811681146100a757600080fd5b9392505050565b6080516104b66100cf600039600081816089015261018a01526104b66000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806307da68f51461006757806313af4035146100715780633cd8045e146100845780637a9e5e4b146100c75780638da5cb5b146100da578063bf7e214f146100ed575b600080fd5b61006f610100565b005b61006f61007f36600461042e565b610219565b6100ab7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200160405180910390f35b61006f6100d536600461042e565b6102b4565b6000546100ab906001600160a01b031681565b6001546100ab906001600160a01b031681565b610116336000356001600160e01b031916610351565b6101675760405162461bcd60e51b815260206004820152601a60248201527f53706c69747465724d6f6d2f6e6f742d617574686f72697a656400000000000060448201526064015b60405180910390fd5b604051630a6ba04560e21b8152620686f760ec1b600482015260001960248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906329ae811490604401600060405180830381600087803b1580156101d657600080fd5b505af11580156101ea573d6000803e3d6000fd5b50506040517fbedf0f4abfe86d4ffad593d9607fe70e83ea706033d44d24b3b6283cf3fc4f6b925060009150a1565b6000546001600160a01b0316331461026c5760405162461bcd60e51b815260206004820152601660248201527529b83634ba3a32b926b7b697b7b7363c96b7bbb732b960511b604482015260640161015e565b600080546001600160a01b0319166001600160a01b038316908117825560405190917f167d3e9c1016ab80e58802ca9da10ce5c6a0f4debc46a2e7a2cd9e56899a4fb591a250565b6000546001600160a01b031633146103075760405162461bcd60e51b815260206004820152601660248201527529b83634ba3a32b926b7b697b7b7363c96b7bbb732b960511b604482015260640161015e565b600180546001600160a01b0319166001600160a01b0383169081179091556040517f1679749591538f58df6938d50167216de9dda7d8a999dbb21d9f098383a13e0290600090a250565b6000306001600160a01b0384160361036b57506001610428565b6000546001600160a01b039081169084160361038957506001610428565b6001546001600160a01b03166103a157506000610428565b60015460405163b700961360e01b81526001600160a01b0385811660048301523060248301526001600160e01b0319851660448301529091169063b700961390606401602060405180830381865afa158015610401573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610425919061045e565b90505b92915050565b60006020828403121561044057600080fd5b81356001600160a01b038116811461045757600080fd5b9392505050565b60006020828403121561047057600080fd5b8151801515811461045757600080fdfea26469706673582212208b2c5cccab4be9bdcf133d599d69107b7d3515d490fb5985b3d6dc2643a333fa64736f6c63430008150033000000000000000000000000bf7111f13386d23cb2fba5a538107a73f6872bcf

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100625760003560e01c806307da68f51461006757806313af4035146100715780633cd8045e146100845780637a9e5e4b146100c75780638da5cb5b146100da578063bf7e214f146100ed575b600080fd5b61006f610100565b005b61006f61007f36600461042e565b610219565b6100ab7f000000000000000000000000bf7111f13386d23cb2fba5a538107a73f6872bcf81565b6040516001600160a01b03909116815260200160405180910390f35b61006f6100d536600461042e565b6102b4565b6000546100ab906001600160a01b031681565b6001546100ab906001600160a01b031681565b610116336000356001600160e01b031916610351565b6101675760405162461bcd60e51b815260206004820152601a60248201527f53706c69747465724d6f6d2f6e6f742d617574686f72697a656400000000000060448201526064015b60405180910390fd5b604051630a6ba04560e21b8152620686f760ec1b600482015260001960248201527f000000000000000000000000bf7111f13386d23cb2fba5a538107a73f6872bcf6001600160a01b0316906329ae811490604401600060405180830381600087803b1580156101d657600080fd5b505af11580156101ea573d6000803e3d6000fd5b50506040517fbedf0f4abfe86d4ffad593d9607fe70e83ea706033d44d24b3b6283cf3fc4f6b925060009150a1565b6000546001600160a01b0316331461026c5760405162461bcd60e51b815260206004820152601660248201527529b83634ba3a32b926b7b697b7b7363c96b7bbb732b960511b604482015260640161015e565b600080546001600160a01b0319166001600160a01b038316908117825560405190917f167d3e9c1016ab80e58802ca9da10ce5c6a0f4debc46a2e7a2cd9e56899a4fb591a250565b6000546001600160a01b031633146103075760405162461bcd60e51b815260206004820152601660248201527529b83634ba3a32b926b7b697b7b7363c96b7bbb732b960511b604482015260640161015e565b600180546001600160a01b0319166001600160a01b0383169081179091556040517f1679749591538f58df6938d50167216de9dda7d8a999dbb21d9f098383a13e0290600090a250565b6000306001600160a01b0384160361036b57506001610428565b6000546001600160a01b039081169084160361038957506001610428565b6001546001600160a01b03166103a157506000610428565b60015460405163b700961360e01b81526001600160a01b0385811660048301523060248301526001600160e01b0319851660448301529091169063b700961390606401602060405180830381865afa158015610401573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610425919061045e565b90505b92915050565b60006020828403121561044057600080fd5b81356001600160a01b038116811461045757600080fd5b9392505050565b60006020828403121561047057600080fd5b8151801515811461045757600080fdfea26469706673582212208b2c5cccab4be9bdcf133d599d69107b7d3515d490fb5985b3d6dc2643a333fa64736f6c63430008150033

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

000000000000000000000000bf7111f13386d23cb2fba5a538107a73f6872bcf

-----Decoded View---------------
Arg [0] : _splitter (address): 0xBF7111F13386d23cb2Fba5A538107A73f6872bCF

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000bf7111f13386d23cb2fba5a538107a73f6872bcf


Block Uncle Number Difficulty Gas Used Reward
View All Uncles
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.