ETH Price: $1,972.00 (+0.52%)
 

More Info

Private Name Tags

TokenTracker

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer Funds217175362025-01-27 18:05:23390 days ago1738001123IN
Mirror: Treasury
0 ETH0.0006148117.30750743
Transfer ERC20217175262025-01-27 18:03:23390 days ago1738001003IN
Mirror: Treasury
0 ETH0.0010629117.51729425
Transfer ERC20217175192025-01-27 18:01:59390 days ago1738000919IN
Mirror: Treasury
0 ETH0.0010863517.87501662
Transfer ERC20217175072025-01-27 17:59:35390 days ago1738000775IN
Mirror: Treasury
0 ETH0.0017701311.68620173
Transfer ERC20217172772025-01-27 17:13:23390 days ago1737998003IN
Mirror: Treasury
0 ETH0.000808514.65668878
Transfer ERC20217172652025-01-27 17:10:47390 days ago1737997847IN
Mirror: Treasury
0 ETH0.0007032614.43935571
Transfer ERC20217171682025-01-27 16:51:23390 days ago1737996683IN
Mirror: Treasury
0 ETH0.0008905416.07862793
Accept Ownership206302862024-08-28 23:11:47542 days ago1724886707IN
Mirror: Treasury
0 ETH0.000037461.3304569

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer240407782025-12-18 16:47:4765 days ago1766076467
Mirror: Treasury
0.00025 ETH
Contribute With ...238687902025-11-24 12:42:5989 days ago1763988179
Mirror: Treasury
0.00025 ETH
Transfer236924842025-10-30 20:08:47114 days ago1761854927
Mirror: Treasury
0.00069 ETH
Transfer231293342025-08-13 3:06:47193 days ago1755054407
Mirror: Treasury
0.00069 ETH
Contribute With ...230490282025-08-01 21:50:47204 days ago1754085047
Mirror: Treasury
0.00025 ETH
Contribute With ...230490232025-08-01 21:49:47204 days ago1754084987
Mirror: Treasury
0.00025 ETH
Contribute With ...230489992025-08-01 21:44:59204 days ago1754084699
Mirror: Treasury
0.00025 ETH
Contribute With ...230489892025-08-01 21:42:35204 days ago1754084555
Mirror: Treasury
0.00025 ETH
Transfer230164922025-07-28 8:35:47208 days ago1753691747
Mirror: Treasury
0.00069 ETH
Transfer229857592025-07-24 1:31:59213 days ago1753320719
Mirror: Treasury
0.000701 ETH
Transfer228842752025-07-09 21:22:59227 days ago1752096179
Mirror: Treasury
0.0007025 ETH
Transfer223127472025-04-20 20:57:59307 days ago1745182679
Mirror: Treasury
0.000695 ETH
Transfer223126422025-04-20 20:36:59307 days ago1745181419
Mirror: Treasury
0.000695 ETH
Transfer221436142025-03-28 6:26:35330 days ago1743143195
Mirror: Treasury
0.00069 ETH
Contribute With ...219031252025-02-22 16:40:47364 days ago1740242447
Mirror: Treasury
0.00025 ETH
Transfer218926442025-02-21 5:31:47365 days ago1740115907
Mirror: Treasury
0.000715 ETH
Transfer217175362025-01-27 18:05:23390 days ago1738001123
Mirror: Treasury
0.3294 ETH
Transfer216292322025-01-15 10:17:47402 days ago1736936267
Mirror: Treasury
0.00069 ETH
Transfer216292322025-01-15 10:17:47402 days ago1736936267
Mirror: Treasury
0.00069 ETH
Transfer216292312025-01-15 10:17:35402 days ago1736936255
Mirror: Treasury
0.00069 ETH
Transfer216292312025-01-15 10:17:35402 days ago1736936255
Mirror: Treasury
0.00069 ETH
Transfer216292312025-01-15 10:17:35402 days ago1736936255
Mirror: Treasury
0.00069 ETH
Transfer216292312025-01-15 10:17:35402 days ago1736936255
Mirror: Treasury
0.00069 ETH
Transfer216292302025-01-15 10:17:23402 days ago1736936243
Mirror: Treasury
0.00069 ETH
Transfer216292302025-01-15 10:17:23402 days ago1736936243
Mirror: Treasury
0.00069 ETH
View All Internal Transactions
Loading...
Loading
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:
MirrorTreasury

Compiler Version
v0.8.6+commit.11564f7e

Optimization Enabled:
Yes with 2000 runs

Other Settings:
default evmVersion
// SPDX-License-Identifier: GPL-3.0-or-later
pragma solidity 0.8.6;

import {IDistributionLogic} from "../distribution/interface/IDistributionLogic.sol";
import {ITributaryRegistry} from "../interface/ITributaryRegistry.sol";
import {ITreasuryConfig} from "../interface/ITreasuryConfig.sol";
import {IMirrorTreasury} from "../interface/IMirrorTreasury.sol";
import {Governable} from "../lib/Governable.sol";

interface IERC20 {
    function transfer(address to, uint256 value) external returns (bool);
}

contract MirrorTreasury is IMirrorTreasury, Governable {
    // ============ Treasury Configuration ============

    // Used to pull the active distribution model.
    address public treasuryConfig;

    // ============ Tributary Registry ============

    // Used to find tributary addresses associated with Economic Producers.
    address public tributaryRegistry;

    // ============ Structs ============

    // Allows governance to execute generic functions.
    struct Call {
        // The target of the transaction.
        address target;
        // The value passed into the transaction.
        uint96 value;
        // Any data passed with the call.
        bytes data;
    }

    // ============ Events ============

    // Emitted when the treasury transfers ETH.
    event Transfer(address indexed from, address indexed to, uint256 value);
    // Emitted when the treasury transfers an ERC20 token.
    event ERC20Transfer(
        address indexed token,
        address indexed from,
        address indexed to,
        uint256 amount
    );

    // ============ Constructor ============

    // NOTE: Once deployed, tributaryRegistry and treasuryConfig should be set.
    constructor(address owner_) Governable(owner_) {}

    // ============ Treasury Contributions ============

    /**
     * A safe, public function for making contributions to the treasury.
     * If a tributary is registered for the contributor, then governance
     * tokens will be allocated according to the active distribution model.
     */
    function contribute(uint256 amount) public payable override {
        require(msg.value == amount, "msg.value != amount");
        _allocateGovernance(msg.sender, amount);
    }

    // Allows directly contributing with a specify treasury, but the sender
    // must be registered as a "singleton producer" - e.g. auctions house.
    function contributeWithTributary(address tributary)
        public
        payable
        override
    {
        // Here we don't revert, but instead just don't allocate goverance
        // if the call isn't registered as an economic producer.
        if (
            ITributaryRegistry(tributaryRegistry).singletonProducer(msg.sender)
        ) {
            _allocateGovernanceToTributary(tributary, msg.value);
        }
    }

    /**
     * Allows receiving ETH, and can mint treasury governance tokens in
     * exchange. Uses a registry to specify which addresses are allowed
     * to receive gov tokens in exchange for contributing ETH.
     */
    receive() external payable {
        _allocateGovernance(msg.sender, msg.value);
    }

    // ============ Treasury Configuration ============

    function setTreasuryConfig(address treasuryConfig_) public onlyGovernance {
        treasuryConfig = treasuryConfig_;
    }

    // ============ Tributary Registry Configuration ============

    function setTributaryRegistry(address tributaryRegistry_)
        public
        onlyGovernance
    {
        tributaryRegistry = tributaryRegistry_;
    }

    // ============ Funds Administration ============

    function transferFunds(address payable to, uint256 value)
        external
        override
        onlyGovernance
    {
        _sendFunds(to, value);
        emit Transfer(address(this), to, value);
    }

    function transferERC20(
        address token,
        address to,
        uint256 amount
    ) external override onlyGovernance {
        IERC20(token).transfer(to, amount);
        emit ERC20Transfer(token, address(this), to, amount);
    }

    // ============ Generic Call Execution ============

    function executeGeneric(Call memory call) public onlyGovernance {
        (bool ok, ) = call.target.call{value: uint256(call.value)}(call.data);

        require(ok, "execute transaction failed");
    }

    // ============ Private Utils ============

    function _sendFunds(address payable recipient, uint256 amount) private {
        require(
            address(this).balance >= amount,
            "Insufficient balance for send"
        );

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Unable to send value: recipient may have reverted");
    }

    function _allocateGovernance(address producer, uint256 amount) private {
        // Get the tributary that was registered for the given producer.
        address tributary = ITributaryRegistry(tributaryRegistry)
            .producerToTributary(producer);

        _allocateGovernanceToTributary(tributary, amount);
    }

    function _allocateGovernanceToTributary(address tributary, uint256 amount)
        private
    {
        // If there is a registered tributary to mint Mirror tokens for,
        // then, here, we go and mint those tokens! Else, just accept ETH, no sweat.
        if (tributary != address(0)) {
            address distributionModel = ITreasuryConfig(treasuryConfig)
                .distributionModel();

            IDistributionLogic(distributionModel).distribute(tributary, amount);
        }
    }
}

// SPDX-License-Identifier: GPL-3.0-or-later
pragma solidity 0.8.6;

interface IDistributionLogic {
    function version() external returns (uint256);

    function distribute(address tributary, uint256 contribution) external;

    function claim(address claimant) external;

    function claimable(address claimant) external view returns (uint256);

    function increaseAwards(address member, uint256 amount) external;
}

// SPDX-License-Identifier: GPL-3.0-or-later
pragma solidity 0.8.6;

interface ITributaryRegistry {
    function addRegistrar(address registrar) external;

    function removeRegistrar(address registrar) external;

    function addSingletonProducer(address producer) external;

    function removeSingletonProducer(address producer) external;

    function registerTributary(address producer, address tributary) external;

    function producerToTributary(address producer)
        external
        returns (address tributary);

    function singletonProducer(address producer) external returns (bool);

    function changeTributary(address producer, address newTributary) external;
}

// SPDX-License-Identifier: GPL-3.0-or-later
pragma solidity 0.8.6;

interface ITreasuryConfig {
    function treasury() external returns (address payable);

    function distributionModel() external returns (address);
}

// SPDX-License-Identifier: GPL-3.0-or-later
pragma solidity 0.8.6;

interface IMirrorTreasury {
    function transferFunds(address payable to, uint256 value) external;

    function transferERC20(
        address token,
        address to,
        uint256 value
    ) external;

    function contributeWithTributary(address tributary) external payable;

    function contribute(uint256 amount) external payable;
}

// SPDX-License-Identifier: GPL-3.0-or-later
pragma solidity 0.8.6;

import {Ownable} from "../lib/Ownable.sol";
import {IGovernable} from "../lib/interface/IGovernable.sol";

contract Governable is Ownable, IGovernable {
    // ============ Mutable Storage ============

    // Mirror governance contract.
    address public override governor;

    // ============ Modifiers ============

    modifier onlyGovernance() {
        require(isOwner() || isGovernor(), "caller is not governance");
        _;
    }

    modifier onlyGovernor() {
        require(isGovernor(), "caller is not governor");
        _;
    }

    // ============ Constructor ============

    constructor(address owner_) Ownable(owner_) {}

    // ============ Administration ============

    function changeGovernor(address governor_) public override onlyGovernance {
        governor = governor_;
    }

    // ============ Utility Functions ============

    function isGovernor() public view override returns (bool) {
        return msg.sender == governor;
    }
}

// SPDX-License-Identifier: GPL-3.0-or-later
pragma solidity 0.8.6;

contract Ownable {
    address public owner;
    address private nextOwner;

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    // modifiers

    modifier onlyOwner() {
        require(isOwner(), "caller is not the owner.");
        _;
    }

    modifier onlyNextOwner() {
        require(isNextOwner(), "current owner must set caller as next owner.");
        _;
    }

    /**
     * @dev Initialize contract by setting transaction submitter as initial owner.
     */
    constructor(address owner_) {
        owner = owner_;
        emit OwnershipTransferred(address(0), owner);
    }

    /**
     * @dev Initiate ownership transfer by setting nextOwner.
     */
    function transferOwnership(address nextOwner_) external onlyOwner {
        require(nextOwner_ != address(0), "Next owner is the zero address.");

        nextOwner = nextOwner_;
    }

    /**
     * @dev Cancel ownership transfer by deleting nextOwner.
     */
    function cancelOwnershipTransfer() external onlyOwner {
        delete nextOwner;
    }

    /**
     * @dev Accepts ownership transfer by setting owner.
     */
    function acceptOwnership() external onlyNextOwner {
        delete nextOwner;

        owner = msg.sender;

        emit OwnershipTransferred(owner, msg.sender);
    }

    /**
     * @dev Renounce ownership by setting owner to zero address.
     */
    function renounceOwnership() external onlyOwner {
        owner = address(0);

        emit OwnershipTransferred(owner, address(0));
    }

    /**
     * @dev Returns true if the caller is the current owner.
     */
    function isOwner() public view returns (bool) {
        return msg.sender == owner;
    }

    /**
     * @dev Returns true if the caller is the next owner.
     */
    function isNextOwner() public view returns (bool) {
        return msg.sender == nextOwner;
    }
}

// SPDX-License-Identifier: GPL-3.0-or-later
pragma solidity 0.8.6;

interface IGovernable {
    function changeGovernor(address governor_) external;

    function isGovernor() external view returns (bool);

    function governor() external view returns (address);
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 2000
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"owner_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ERC20Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cancelOwnershipTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"governor_","type":"address"}],"name":"changeGovernor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"contribute","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"tributary","type":"address"}],"name":"contributeWithTributary","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint96","name":"value","type":"uint96"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct MirrorTreasury.Call","name":"call","type":"tuple"}],"name":"executeGeneric","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"governor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isGovernor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isNextOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOwner","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"treasuryConfig_","type":"address"}],"name":"setTreasuryConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tributaryRegistry_","type":"address"}],"name":"setTributaryRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"nextOwner_","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryConfig","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tributaryRegistry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405234801561001057600080fd5b5060405161135e38038061135e83398101604081905261002f91610081565b600080546001600160a01b0319166001600160a01b038316908117825560405183928392917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35050506100b1565b60006020828403121561009357600080fd5b81516001600160a01b03811681146100aa57600080fd5b9392505050565b61129e806100c06000396000f3fe6080604052600436106101485760003560e01c8063c1cbbca7116100c0578063e4c0aaf411610074578063ed459df211610059578063ed459df21461034c578063f1fe16631461036c578063f2fde38b1461038c57600080fd5b8063e4c0aaf414610319578063e75cb3021461033957600080fd5b8063cfd7b0df116100a5578063cfd7b0df146102b9578063d321de73146102d9578063d6811b6f146102f957600080fd5b8063c1cbbca714610286578063c7af33521461029957600080fd5b806379ba5097116101175780638f32d59b116100fc5780638f32d59b1461021a578063990dc9db146102465780639db5dbe41461026657600080fd5b806379ba5097146101e55780638da5cb5b146101fa57600080fd5b806303f411191461015e5780630c340a241461017e57806323452b9c146101bb578063715018a6146101d057600080fd5b366101595761015733346103ac565b005b600080fd5b34801561016a57600080fd5b5061015761017936600461107e565b61045b565b34801561018a57600080fd5b5060025461019e906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101c757600080fd5b5061015761059b565b3480156101dc57600080fd5b50610157610614565b3480156101f157600080fd5b506101576106b7565b34801561020657600080fd5b5060005461019e906001600160a01b031681565b34801561022657600080fd5b506000546001600160a01b031633145b60405190151581526020016101b2565b34801561025257600080fd5b50610157610261366004610fef565b61078c565b34801561027257600080fd5b5061015761028136600461101b565b610849565b610157610294366004611176565b6109b0565b3480156102a557600080fd5b506002546001600160a01b03163314610236565b3480156102c557600080fd5b5060035461019e906001600160a01b031681565b3480156102e557600080fd5b506101576102f4366004610fae565b610a0c565b34801561030557600080fd5b5060045461019e906001600160a01b031681565b34801561032557600080fd5b50610157610334366004610fae565b610aaa565b610157610347366004610fae565b610b48565b34801561035857600080fd5b506001546001600160a01b03163314610236565b34801561037857600080fd5b50610157610387366004610fae565b610bee565b34801561039857600080fd5b506101576103a7366004610fae565b610c8c565b600480546040517fa57518560000000000000000000000000000000000000000000000000000000081526001600160a01b03858116938201939093526000929091169063a575185690602401602060405180830381600087803b15801561041257600080fd5b505af1158015610426573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044a9190610fd2565b90506104568183610d6b565b505050565b6000546001600160a01b031633148061047e57506002546001600160a01b031633145b6104cf5760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420676f7665726e616e6365000000000000000060448201526064015b60405180910390fd5b600081600001516001600160a01b031682602001516bffffffffffffffffffffffff168360400151604051610504919061118f565b60006040518083038185875af1925050503d8060008114610541576040519150601f19603f3d011682016040523d82523d6000602084013e610546565b606091505b50509050806105975760405162461bcd60e51b815260206004820152601a60248201527f65786563757465207472616e73616374696f6e206661696c656400000000000060448201526064016104c6565b5050565b6000546001600160a01b031633146105f55760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420746865206f776e65722e000000000000000060448201526064016104c6565b6001805473ffffffffffffffffffffffffffffffffffffffff19169055565b6000546001600160a01b0316331461066e5760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420746865206f776e65722e000000000000000060448201526064016104c6565b6000805473ffffffffffffffffffffffffffffffffffffffff1916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6001546001600160a01b031633146107375760405162461bcd60e51b815260206004820152602c60248201527f63757272656e74206f776e6572206d757374207365742063616c6c657220617360448201527f206e657874206f776e65722e000000000000000000000000000000000000000060648201526084016104c6565b6001805473ffffffffffffffffffffffffffffffffffffffff19908116909155600080543392168217815560405182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3565b6000546001600160a01b03163314806107af57506002546001600160a01b031633145b6107fb5760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420676f7665726e616e6365000000000000000060448201526064016104c6565b6108058282610e95565b6040518181526001600160a01b0383169030907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000546001600160a01b031633148061086c57506002546001600160a01b031633145b6108b85760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420676f7665726e616e6365000000000000000060448201526064016104c6565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301526024820183905284169063a9059cbb90604401602060405180830381600087803b15801561091b57600080fd5b505af115801561092f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610953919061105c565b50816001600160a01b0316306001600160a01b0316846001600160a01b03167f16e1b64802081839623a4bec223b20b6ee097d9edd8fcef3d4ceb3a94271306e846040516109a391815260200190565b60405180910390a4505050565b8034146109ff5760405162461bcd60e51b815260206004820152601360248201527f6d73672e76616c756520213d20616d6f756e740000000000000000000000000060448201526064016104c6565b610a0933826103ac565b50565b6000546001600160a01b0316331480610a2f57506002546001600160a01b031633145b610a7b5760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420676f7665726e616e6365000000000000000060448201526064016104c6565b6004805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000546001600160a01b0316331480610acd57506002546001600160a01b031633145b610b195760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420676f7665726e616e6365000000000000000060448201526064016104c6565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600480546040517fad0a44a100000000000000000000000000000000000000000000000000000000815233928101929092526001600160a01b03169063ad0a44a190602401602060405180830381600087803b158015610ba757600080fd5b505af1158015610bbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bdf919061105c565b15610a0957610a098134610d6b565b6000546001600160a01b0316331480610c1157506002546001600160a01b031633145b610c5d5760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420676f7665726e616e6365000000000000000060448201526064016104c6565b6003805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610ce65760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420746865206f776e65722e000000000000000060448201526064016104c6565b6001600160a01b038116610d3c5760405162461bcd60e51b815260206004820152601f60248201527f4e657874206f776e657220697320746865207a65726f20616464726573732e0060448201526064016104c6565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6001600160a01b0382161561059757600354604080517f3174044800000000000000000000000000000000000000000000000000000000815290516000926001600160a01b031691633174044891600480830192602092919082900301818787803b158015610dd957600080fd5b505af1158015610ded573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e119190610fd2565b6040517ffb9321080000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018590529192509082169063fb93210890604401600060405180830381600087803b158015610e7857600080fd5b505af1158015610e8c573d6000803e3d6000fd5b50505050505050565b80471015610ee55760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e742062616c616e636520666f722073656e6400000060448201526064016104c6565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610f32576040519150601f19603f3d011682016040523d82523d6000602084013e610f37565b606091505b50509050806104565760405162461bcd60e51b815260206004820152603160248201527f556e61626c6520746f2073656e642076616c75653a20726563697069656e742060448201527f6d6179206861766520726576657274656400000000000000000000000000000060648201526084016104c6565b600060208284031215610fc057600080fd5b8135610fcb81611253565b9392505050565b600060208284031215610fe457600080fd5b8151610fcb81611253565b6000806040838503121561100257600080fd5b823561100d81611253565b946020939093013593505050565b60008060006060848603121561103057600080fd5b833561103b81611253565b9250602084013561104b81611253565b929592945050506040919091013590565b60006020828403121561106e57600080fd5b81518015158114610fcb57600080fd5b6000602080838503121561109157600080fd5b823567ffffffffffffffff808211156110a957600080fd5b90840190606082870312156110bd57600080fd5b6110c56111ca565b82356110d081611253565b8152828401356bffffffffffffffffffffffff811681146110f057600080fd5b8185015260408301358281111561110657600080fd5b80840193505086601f84011261111b57600080fd5b82358281111561112d5761112d611224565b61113f85601f19601f840116016111f3565b9250808352878582860101111561115557600080fd5b80858501868501376000908301909401939093526040830152509392505050565b60006020828403121561118857600080fd5b5035919050565b6000825160005b818110156111b05760208186018101518583015201611196565b818111156111bf576000828501525b509190910192915050565b6040516060810167ffffffffffffffff811182821017156111ed576111ed611224565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561121c5761121c611224565b604052919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6001600160a01b0381168114610a0957600080fdfea26469706673582212207f68092614ab73a35f04d9e9a58f6d3ded23fabc603aba3f1de5fc1cc61c3eef64736f6c634300080600330000000000000000000000002330ee705ffd040bb0cba8cb7734dfe00e7c4b57

Deployed Bytecode

0x6080604052600436106101485760003560e01c8063c1cbbca7116100c0578063e4c0aaf411610074578063ed459df211610059578063ed459df21461034c578063f1fe16631461036c578063f2fde38b1461038c57600080fd5b8063e4c0aaf414610319578063e75cb3021461033957600080fd5b8063cfd7b0df116100a5578063cfd7b0df146102b9578063d321de73146102d9578063d6811b6f146102f957600080fd5b8063c1cbbca714610286578063c7af33521461029957600080fd5b806379ba5097116101175780638f32d59b116100fc5780638f32d59b1461021a578063990dc9db146102465780639db5dbe41461026657600080fd5b806379ba5097146101e55780638da5cb5b146101fa57600080fd5b806303f411191461015e5780630c340a241461017e57806323452b9c146101bb578063715018a6146101d057600080fd5b366101595761015733346103ac565b005b600080fd5b34801561016a57600080fd5b5061015761017936600461107e565b61045b565b34801561018a57600080fd5b5060025461019e906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101c757600080fd5b5061015761059b565b3480156101dc57600080fd5b50610157610614565b3480156101f157600080fd5b506101576106b7565b34801561020657600080fd5b5060005461019e906001600160a01b031681565b34801561022657600080fd5b506000546001600160a01b031633145b60405190151581526020016101b2565b34801561025257600080fd5b50610157610261366004610fef565b61078c565b34801561027257600080fd5b5061015761028136600461101b565b610849565b610157610294366004611176565b6109b0565b3480156102a557600080fd5b506002546001600160a01b03163314610236565b3480156102c557600080fd5b5060035461019e906001600160a01b031681565b3480156102e557600080fd5b506101576102f4366004610fae565b610a0c565b34801561030557600080fd5b5060045461019e906001600160a01b031681565b34801561032557600080fd5b50610157610334366004610fae565b610aaa565b610157610347366004610fae565b610b48565b34801561035857600080fd5b506001546001600160a01b03163314610236565b34801561037857600080fd5b50610157610387366004610fae565b610bee565b34801561039857600080fd5b506101576103a7366004610fae565b610c8c565b600480546040517fa57518560000000000000000000000000000000000000000000000000000000081526001600160a01b03858116938201939093526000929091169063a575185690602401602060405180830381600087803b15801561041257600080fd5b505af1158015610426573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044a9190610fd2565b90506104568183610d6b565b505050565b6000546001600160a01b031633148061047e57506002546001600160a01b031633145b6104cf5760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420676f7665726e616e6365000000000000000060448201526064015b60405180910390fd5b600081600001516001600160a01b031682602001516bffffffffffffffffffffffff168360400151604051610504919061118f565b60006040518083038185875af1925050503d8060008114610541576040519150601f19603f3d011682016040523d82523d6000602084013e610546565b606091505b50509050806105975760405162461bcd60e51b815260206004820152601a60248201527f65786563757465207472616e73616374696f6e206661696c656400000000000060448201526064016104c6565b5050565b6000546001600160a01b031633146105f55760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420746865206f776e65722e000000000000000060448201526064016104c6565b6001805473ffffffffffffffffffffffffffffffffffffffff19169055565b6000546001600160a01b0316331461066e5760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420746865206f776e65722e000000000000000060448201526064016104c6565b6000805473ffffffffffffffffffffffffffffffffffffffff1916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6001546001600160a01b031633146107375760405162461bcd60e51b815260206004820152602c60248201527f63757272656e74206f776e6572206d757374207365742063616c6c657220617360448201527f206e657874206f776e65722e000000000000000000000000000000000000000060648201526084016104c6565b6001805473ffffffffffffffffffffffffffffffffffffffff19908116909155600080543392168217815560405182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3565b6000546001600160a01b03163314806107af57506002546001600160a01b031633145b6107fb5760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420676f7665726e616e6365000000000000000060448201526064016104c6565b6108058282610e95565b6040518181526001600160a01b0383169030907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000546001600160a01b031633148061086c57506002546001600160a01b031633145b6108b85760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420676f7665726e616e6365000000000000000060448201526064016104c6565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301526024820183905284169063a9059cbb90604401602060405180830381600087803b15801561091b57600080fd5b505af115801561092f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610953919061105c565b50816001600160a01b0316306001600160a01b0316846001600160a01b03167f16e1b64802081839623a4bec223b20b6ee097d9edd8fcef3d4ceb3a94271306e846040516109a391815260200190565b60405180910390a4505050565b8034146109ff5760405162461bcd60e51b815260206004820152601360248201527f6d73672e76616c756520213d20616d6f756e740000000000000000000000000060448201526064016104c6565b610a0933826103ac565b50565b6000546001600160a01b0316331480610a2f57506002546001600160a01b031633145b610a7b5760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420676f7665726e616e6365000000000000000060448201526064016104c6565b6004805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000546001600160a01b0316331480610acd57506002546001600160a01b031633145b610b195760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420676f7665726e616e6365000000000000000060448201526064016104c6565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600480546040517fad0a44a100000000000000000000000000000000000000000000000000000000815233928101929092526001600160a01b03169063ad0a44a190602401602060405180830381600087803b158015610ba757600080fd5b505af1158015610bbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bdf919061105c565b15610a0957610a098134610d6b565b6000546001600160a01b0316331480610c1157506002546001600160a01b031633145b610c5d5760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420676f7665726e616e6365000000000000000060448201526064016104c6565b6003805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610ce65760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420746865206f776e65722e000000000000000060448201526064016104c6565b6001600160a01b038116610d3c5760405162461bcd60e51b815260206004820152601f60248201527f4e657874206f776e657220697320746865207a65726f20616464726573732e0060448201526064016104c6565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6001600160a01b0382161561059757600354604080517f3174044800000000000000000000000000000000000000000000000000000000815290516000926001600160a01b031691633174044891600480830192602092919082900301818787803b158015610dd957600080fd5b505af1158015610ded573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e119190610fd2565b6040517ffb9321080000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018590529192509082169063fb93210890604401600060405180830381600087803b158015610e7857600080fd5b505af1158015610e8c573d6000803e3d6000fd5b50505050505050565b80471015610ee55760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e742062616c616e636520666f722073656e6400000060448201526064016104c6565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610f32576040519150601f19603f3d011682016040523d82523d6000602084013e610f37565b606091505b50509050806104565760405162461bcd60e51b815260206004820152603160248201527f556e61626c6520746f2073656e642076616c75653a20726563697069656e742060448201527f6d6179206861766520726576657274656400000000000000000000000000000060648201526084016104c6565b600060208284031215610fc057600080fd5b8135610fcb81611253565b9392505050565b600060208284031215610fe457600080fd5b8151610fcb81611253565b6000806040838503121561100257600080fd5b823561100d81611253565b946020939093013593505050565b60008060006060848603121561103057600080fd5b833561103b81611253565b9250602084013561104b81611253565b929592945050506040919091013590565b60006020828403121561106e57600080fd5b81518015158114610fcb57600080fd5b6000602080838503121561109157600080fd5b823567ffffffffffffffff808211156110a957600080fd5b90840190606082870312156110bd57600080fd5b6110c56111ca565b82356110d081611253565b8152828401356bffffffffffffffffffffffff811681146110f057600080fd5b8185015260408301358281111561110657600080fd5b80840193505086601f84011261111b57600080fd5b82358281111561112d5761112d611224565b61113f85601f19601f840116016111f3565b9250808352878582860101111561115557600080fd5b80858501868501376000908301909401939093526040830152509392505050565b60006020828403121561118857600080fd5b5035919050565b6000825160005b818110156111b05760208186018101518583015201611196565b818111156111bf576000828501525b509190910192915050565b6040516060810167ffffffffffffffff811182821017156111ed576111ed611224565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561121c5761121c611224565b604052919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6001600160a01b0381168114610a0957600080fdfea26469706673582212207f68092614ab73a35f04d9e9a58f6d3ded23fabc603aba3f1de5fc1cc61c3eef64736f6c63430008060033

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

0000000000000000000000002330ee705ffd040bb0cba8cb7734dfe00e7c4b57

-----Decoded View---------------
Arg [0] : owner_ (address): 0x2330ee705fFD040bB0cbA8CB7734Dfe00E7C4b57

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000002330ee705ffd040bb0cba8cb7734dfe00e7c4b57


Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ 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.