ETH Price: $2,773.84 (+5.70%)

Contract

0x3c43e86C4C3ba4D2b6C15439D2d97556985814a2
 
Transaction Hash
Method
Block
From
To
0x60806040162498642022-12-23 20:37:59609 days ago1671827879IN
 Create: Executor
0 ETH0.0078321613.94370849

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
205839152024-08-22 11:42:2333 hrs ago1724326943
FrankenDAO: Executor
17 ETH
203507772024-07-20 22:38:2333 days ago1721515103
FrankenDAO: Executor
2.5 ETH
202778902024-07-10 18:28:1144 days ago1720636091
FrankenDAO: Executor
3.1 ETH
200704582024-06-11 18:44:2373 days ago1718131463
FrankenDAO: Executor
16 ETH
198260792024-05-08 14:57:11107 days ago1715180231
FrankenDAO: Executor
0.0001 ETH
197777732024-05-01 20:48:59114 days ago1714596539
FrankenDAO: Executor
0.005 ETH
194830922024-03-21 12:38:59155 days ago1711024739
FrankenDAO: Executor
75 ETH
192914192024-02-23 16:15:59182 days ago1708704959
FrankenDAO: Executor
15 ETH
191780432024-02-07 18:16:35198 days ago1707329795
FrankenDAO: Executor
3 ETH
190629272024-01-22 14:41:47214 days ago1705934507
FrankenDAO: Executor
5 ETH
189208332024-01-02 16:18:11234 days ago1704212291
FrankenDAO: Executor
102.415 ETH
187653982023-12-11 20:39:35256 days ago1702327175
FrankenDAO: Executor
7.5 ETH
186852662023-11-30 15:19:11267 days ago1701357551
FrankenDAO: Executor
38.5 ETH
186636872023-11-27 14:51:11270 days ago1701096671
FrankenDAO: Executor
22.5 ETH
186169852023-11-21 1:52:35276 days ago1700531555
FrankenDAO: Executor
77 ETH
184780992023-11-01 15:18:11296 days ago1698851891
FrankenDAO: Executor
1.5 ETH
183167522023-10-10 1:23:11318 days ago1696900991
FrankenDAO: Executor
12 ETH
182218452023-09-26 18:50:11332 days ago1695754211
FrankenDAO: Executor
30 ETH
181144782023-09-11 17:04:23347 days ago1694451863
FrankenDAO: Executor
7.7 ETH
180236982023-08-29 23:58:59359 days ago1693353539
FrankenDAO: Executor
5 ETH
178424972023-08-04 15:25:23385 days ago1691162723
FrankenDAO: Executor
13.5 ETH
177429942023-07-21 17:26:11399 days ago1689960371
FrankenDAO: Executor
2.2 ETH
177276392023-07-19 13:50:47401 days ago1689774647
FrankenDAO: Executor
42 ETH
177140522023-07-17 16:04:11403 days ago1689609851
FrankenDAO: Executor
60 ETH
177074262023-07-16 17:47:11404 days ago1689529631
FrankenDAO: Executor
5.5 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Executor

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 3 : Executor.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;

/**
 _______  _______  _______  _        _        _______  _          _______           _        _        _______
(  ____ \(  ____ )(  ___  )( (    /|| \    /\(  ____ \( (    /|  (  ____ )|\     /|( (    /|| \    /\(  ____ \
| (    \/| (    )|| (   ) ||  \  ( ||  \  / /| (    \/|  \  ( |  | (    )|| )   ( ||  \  ( ||  \  / /| (    \/
| (__    | (____)|| (___) ||   \ | ||  (_/ / | (__    |   \ | |  | (____)|| |   | ||   \ | ||  (_/ / | (_____
|  __)   |     __)|  ___  || (\ \) ||   _ (  |  __)   | (\ \) |  |  _____)| |   | || (\ \) ||   _ (  (_____  )
| (      | (\ (   | (   ) || | \   ||  ( \ \ | (      | | \   |  | (      | |   | || | \   ||  ( \ \       ) |
| )      | ) \ \__| )   ( || )  \  ||  /  \ \| (____/\| )  \  |  | )      | (___) || )  \  ||  /  \ \/\____) |
|/       |/   \__/|/     \||/    )_)|_/    \/(_______/|/    )_)  |/       (_______)|/    )_)|_/    \/\_______)

*/

import "./interfaces/IExecutor.sol";
import { FrankenDAOErrors } from "./errors/FrankenDAOErrors.sol";

/// @notice Executor contract that holds treasury funds and executes passed Governance proposals
/** @dev Loosely forked from NounsDAOExecutor.sol (0x0bc3807ec262cb779b38d65b38158acc3bfede10) with following major modifications:
- DELAY and GRACE_PERIOD are hardcoded
- we move admin check logic into a modifier and rename admin to governance
- governance address cannot be changed (in the event of an upgrade, we will first transfer funds to new Executor)
- we don't allow queueing of identical transactions
- we don't check whether transactions are past their grace period because that is checked in Governance */
contract Executor is IExecutor, FrankenDAOErrors {

    /// @notice The delay between when a tx is queued and when it can be executed
    uint256 public constant DELAY = 2 days;

    /// @notice The amount of time a tx can stay queued without being executed before it expires
    uint256 public constant GRACE_PERIOD = 14 days;

    /// @notice The address of the Governance contract
    address public governance;

    /// @notice The tx hash of each queued transaction that is allowed to be executed
    /// @dev The tx hash is a hash of the target address, value, fx signature, data and eta (time execution is permitted)
    mapping(bytes32 => bool) public queuedTransactions;

    /////////////////////////////////
    ////////// CONSTRUCTOR //////////
    /////////////////////////////////

    /// @param _governance The address of the Governance contract
    constructor(address _governance) {
        governance = _governance;
    }

    /////////////////////////////////
    /////////// MODIFIERS ///////////
    /////////////////////////////////

    /// @notice Modifier for functions that can only be called by the Governance contract (via passed proposals)
    modifier onlyGovernance() {
        if (msg.sender != governance) revert NotAuthorized();
        _;
    }

    /////////////////////////////////
    ////////// TX EXECUTION /////////
    /////////////////////////////////

    /// @notice Queues a transaction to be executed after a delay
    /// @param _target The address of the contract to execute the transaction on
    /// @param _value The amount of ETH to send with the transaction
    /// @param _signature The function signature of the transaction
    /// @param _data The data to send with the transaction
    /// @param _eta The time at which the transaction can be executed (must be at least DELAY in the future)
    /// @dev This function is only called by queue() in the Governance contract
    function queueTransaction(
        uint256 _id,
        address _target,
        uint256 _value,
        string memory _signature,
        bytes memory _data,
        uint256 _eta
    ) public onlyGovernance returns (bytes32 txHash) {
        if (block.timestamp + DELAY > _eta) revert DelayNotSatisfied();

        txHash = keccak256(abi.encode(_id, _target, _value, _signature, _data, _eta));
        if (queuedTransactions[txHash]) revert IdenticalTransactionAlreadyQueued();
        queuedTransactions[txHash] = true;

        emit QueueTransaction(txHash, _id, _target, _value, _signature, _data, _eta);
    }

    /// @notice Cancel a queued transaction, preventing it from being executed
    /// @param _id The unique sequential ID provided for each transaction
    /// @param _target The address of the contract to execute the transaction on
    /// @param _value The amount of ETH to send with the transaction
    /// @param _signature The function signature of the transaction
    /// @param _data The data to send with the transaction
    /// @param _eta The time at which the transaction can be executed
    /** @dev This function is only called by _removeTransactionWithQueuedOrExpiredCheck() in the Governance contract,
            which shows up in cancel(), clear() and veto() */
    function cancelTransaction(
        uint256 _id,
        address _target,
        uint256 _value,
        string memory _signature,
        bytes memory _data,
        uint256 _eta
    ) public onlyGovernance {
        bytes32 txHash = keccak256(abi.encode(_id, _target, _value, _signature, _data, _eta));
        if (!queuedTransactions[txHash]) revert TransactionNotQueued();
        queuedTransactions[txHash] = false;

        emit CancelTransaction(txHash, _id, _target, _value, _signature, _data, _eta);
    }

    /// @notice Executes a queued transaction after the delay has passed
    /// @param _id The unique sequential ID provided for each transaction
    /// @param _target The address of the contract to execute the transaction on
    /// @param _value The amount of ETH to send with the transaction
    /// @param _signature The function signature of the transaction
    /// @param _data The data to send with the transaction
    /// @param _eta The time at which the transaction can be executed
    /// @dev This function is only called by execute() in the Governance contract
    function executeTransaction(
        uint256 _id,
        address _target,
        uint256 _value,
        string memory _signature,
        bytes memory _data,
        uint256 _eta
    ) public onlyGovernance returns (bytes memory) {
        bytes32 txHash = keccak256(abi.encode(_id, _target, _value, _signature, _data, _eta));

        // We don't need to check if it's expired, because this will be caught by the Governance contract.
        // (ie. If we are past the grace period, proposal state will be Expired and execute() will revert.)
        if (!queuedTransactions[txHash]) revert TransactionNotQueued();
        if (_eta > block.timestamp) revert TimelockNotMet();

        queuedTransactions[txHash] = false;

        if (bytes(_signature).length > 0) {
            _data = abi.encodePacked(bytes4(keccak256(bytes(_signature))), _data);
        }

        (bool success, bytes memory returnData) = _target.call{ value: _value }(_data);
        if (!success) revert TransactionReverted();

        emit ExecuteTransaction(txHash, _id, _target, _value, _signature, _data, _eta);
        return returnData;
    }

    /// @notice Contract can receive ETH (needed to add funds to the treasury)
    receive() external payable {}

    /// @notice Contract can receive ETH (needed to add funds to the treasury)
    fallback() external payable {}
}

File 2 of 3 : FrankenDAOErrors.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;

contract FrankenDAOErrors {
    // General purpose
    error NotAuthorized();

    // Staking
    error NonExistentToken();
    error InvalidDelegation();
    error Paused();
    error InvalidParameter();
    error TokenLocked();
    error StakedTokensCannotBeTransferred();

    // Governance
    error ZeroAddress();
    error AlreadyInitialized();
    error ParameterOutOfBounds();
    error InvalidId();
    error InvalidProposal();
    error InvalidStatus();
    error InvalidInput();
    error AlreadyVoted();
    error NotEligible();
    error NotInActiveProposals();
    error NotStakingContract();

    // Executor
    error DelayNotSatisfied();
    error IdenticalTransactionAlreadyQueued();
    error TransactionNotQueued();
    error TimelockNotMet();
    error TransactionReverted();
}

File 3 of 3 : IExecutor.sol
pragma solidity ^0.8.10;

interface IExecutor {

    ////////////////////
    ////// Events //////
    ////////////////////

    /// @notice Emited when a transaction is cancelled
    event CancelTransaction(bytes32 indexed txHash, uint256 id, address indexed target, uint256 value, string signature, bytes data, uint256 eta);
    /// @notice Emited when a transaction is executed
    event ExecuteTransaction(bytes32 indexed txHash, uint256 id, address indexed target, uint256 value, string signature, bytes data, uint256 eta);
    /// @notice Emited when a new delay value is set
    event NewDelay(uint256 indexed newDelay);
    /// @notice Emited when a transaction is queued
    event QueueTransaction(bytes32 indexed txHash, uint256 id, address indexed target, uint256 value, string signature, bytes data, uint256 eta);

    /////////////////////
    ////// Methods //////
    /////////////////////

    function DELAY() external view returns (uint256);

    function GRACE_PERIOD() external view returns (uint256);

    function cancelTransaction(uint256 _id, address _target, uint256 _value, string memory _signature, bytes memory _data, uint256 _eta) external;

    function executeTransaction(uint256 _id, address _target, uint256 _value, string memory _signature, bytes memory _data, uint256 _eta) external returns (bytes memory);

    function queueTransaction(uint256 _id, address _target, uint256 _value, string memory _signature, bytes memory _data, uint256 _eta) external returns (bytes32 txHash);

    function queuedTransactions(bytes32) external view returns (bool);
}

Settings
{
  "remappings": [
    "@openzeppelin/=lib/openzeppelin-contracts/contracts/",
    "ds-test/=lib/solmate/lib/ds-test/src/",
    "forge-std/=lib/forge-std/src/",
    "solmate/=lib/solmate/src/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "metadata": {
    "bytecodeHash": "ipfs"
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "london",
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_governance","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AlreadyInitialized","type":"error"},{"inputs":[],"name":"AlreadyVoted","type":"error"},{"inputs":[],"name":"DelayNotSatisfied","type":"error"},{"inputs":[],"name":"IdenticalTransactionAlreadyQueued","type":"error"},{"inputs":[],"name":"InvalidDelegation","type":"error"},{"inputs":[],"name":"InvalidId","type":"error"},{"inputs":[],"name":"InvalidInput","type":"error"},{"inputs":[],"name":"InvalidParameter","type":"error"},{"inputs":[],"name":"InvalidProposal","type":"error"},{"inputs":[],"name":"InvalidStatus","type":"error"},{"inputs":[],"name":"NonExistentToken","type":"error"},{"inputs":[],"name":"NotAuthorized","type":"error"},{"inputs":[],"name":"NotEligible","type":"error"},{"inputs":[],"name":"NotInActiveProposals","type":"error"},{"inputs":[],"name":"NotStakingContract","type":"error"},{"inputs":[],"name":"ParameterOutOfBounds","type":"error"},{"inputs":[],"name":"Paused","type":"error"},{"inputs":[],"name":"StakedTokensCannotBeTransferred","type":"error"},{"inputs":[],"name":"TimelockNotMet","type":"error"},{"inputs":[],"name":"TokenLocked","type":"error"},{"inputs":[],"name":"TransactionNotQueued","type":"error"},{"inputs":[],"name":"TransactionReverted","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"txHash","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"CancelTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"txHash","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"ExecuteTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newDelay","type":"uint256"}],"name":"NewDelay","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"txHash","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"QueueTransaction","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"DELAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GRACE_PERIOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"address","name":"_target","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"string","name":"_signature","type":"string"},{"internalType":"bytes","name":"_data","type":"bytes"},{"internalType":"uint256","name":"_eta","type":"uint256"}],"name":"cancelTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"address","name":"_target","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"string","name":"_signature","type":"string"},{"internalType":"bytes","name":"_data","type":"bytes"},{"internalType":"uint256","name":"_eta","type":"uint256"}],"name":"executeTransaction","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"governance","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"address","name":"_target","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"string","name":"_signature","type":"string"},{"internalType":"bytes","name":"_data","type":"bytes"},{"internalType":"uint256","name":"_eta","type":"uint256"}],"name":"queueTransaction","outputs":[{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"queuedTransactions","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405234801561001057600080fd5b5060405161095538038061095583398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b6108c2806100936000396000f3fe60806040526004361061006e5760003560e01c806371d2f9451161004b57806371d2f945146100f9578063a30666a814610126578063c1a287e214610146578063f2b065371461015d57005b80635aa6e675146100775780635b5846f3146100b457806369b41170146100e257005b3661007557005b005b34801561008357600080fd5b50600054610097906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100c057600080fd5b506100d46100cf366004610650565b61019d565b6040519081526020016100ab565b3480156100ee57600080fd5b506100d46202a30081565b34801561010557600080fd5b50610119610114366004610650565b6102cc565b6040516100ab9190610755565b34801561013257600080fd5b50610075610141366004610650565b6104a1565b34801561015257600080fd5b506100d46212750081565b34801561016957600080fd5b5061018d610178366004610768565b60016020526000908152604090205460ff1681565b60405190151581526020016100ab565b600080546001600160a01b031633146101c95760405163ea8e4eb560e01b815260040160405180910390fd5b816101d76202a30042610781565b11156101f65760405163b26d1c2960e01b815260040160405180910390fd5b868686868686604051602001610211969594939291906107a8565b60408051601f1981840301815291815281516020928301206000818152600190935291205490915060ff161561025a57604051630f2a3bc360e01b815260040160405180910390fd5b600081815260016020819052604091829020805460ff19169091179055516001600160a01b0387169082907f01a8bb578465430704a373e879f8062b1440845b407c37c1894fd8b3b2afe3e7906102ba908b908a908a908a908a906107fb565b60405180910390a39695505050505050565b6000546060906001600160a01b031633146102fa5760405163ea8e4eb560e01b815260040160405180910390fd5b6000878787878787604051602001610317969594939291906107a8565b60408051601f1981840301815291815281516020928301206000818152600190935291205490915060ff1661035f5760405163014058af60e11b815260040160405180910390fd5b42831115610380576040516327056b2160e01b815260040160405180910390fd5b6000818152600160205260409020805460ff191690558451156103c9578480519060200120846040516020016103b792919061083f565b60405160208183030381529060405293505b600080886001600160a01b031688876040516103e59190610870565b60006040518083038185875af1925050503d8060008114610422576040519150601f19603f3d011682016040523d82523d6000602084013e610427565b606091505b50915091508161044a576040516348b3e13d60e11b815260040160405180910390fd5b886001600160a01b0316837fdc143a842c7ad845c308728f3ab24b4a1cd9bc5703442403c79e30c4546089bd8c8b8b8b8b60405161048c9594939291906107fb565b60405180910390a39998505050505050505050565b6000546001600160a01b031633146104cc5760405163ea8e4eb560e01b815260040160405180910390fd5b60008686868686866040516020016104e9969594939291906107a8565b60408051601f1981840301815291815281516020928301206000818152600190935291205490915060ff166105315760405163014058af60e11b815260040160405180910390fd5b60008181526001602052604090819020805460ff19169055516001600160a01b0387169082907f2575dcf859a92e80bc290b575de7903fcfe1bb2751c97aaef1567637400291549061058c908b908a908a908a908a906107fb565b60405180910390a350505050505050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156105ce576105ce61059d565b604051601f8501601f19908116603f011681019082821181831017156105f6576105f661059d565b8160405280935085815286868601111561060f57600080fd5b858560208301376000602087830101525050509392505050565b600082601f83011261063a57600080fd5b610649838335602085016105b3565b9392505050565b60008060008060008060c0878903121561066957600080fd5b8635955060208701356001600160a01b038116811461068757600080fd5b945060408701359350606087013567ffffffffffffffff808211156106ab57600080fd5b818901915089601f8301126106bf57600080fd5b6106ce8a8335602085016105b3565b945060808901359150808211156106e457600080fd5b506106f189828a01610629565b92505060a087013590509295509295509295565b60005b83811015610720578181015183820152602001610708565b50506000910152565b60008151808452610741816020860160208601610705565b601f01601f19169290920160200192915050565b6020815260006106496020830184610729565b60006020828403121561077a57600080fd5b5035919050565b808201808211156107a257634e487b7160e01b600052601160045260246000fd5b92915050565b86815260018060a01b038616602082015284604082015260c0606082015260006107d560c0830186610729565b82810360808401526107e78186610729565b9150508260a0830152979650505050505050565b85815284602082015260a06040820152600061081a60a0830186610729565b828103606084015261082c8186610729565b9150508260808301529695505050505050565b6001600160e01b0319831681528151600090610862816004850160208701610705565b919091016004019392505050565b60008251610882818460208701610705565b919091019291505056fea264697066735822122084f3134186ab787d372f7b53d5262ef9881880beeffb1716b5afbb21b25adae264736f6c63430008110033000000000000000000000000053d938a4d2a6df86d837d66a037444d7bacf3b9

Deployed Bytecode

0x60806040526004361061006e5760003560e01c806371d2f9451161004b57806371d2f945146100f9578063a30666a814610126578063c1a287e214610146578063f2b065371461015d57005b80635aa6e675146100775780635b5846f3146100b457806369b41170146100e257005b3661007557005b005b34801561008357600080fd5b50600054610097906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100c057600080fd5b506100d46100cf366004610650565b61019d565b6040519081526020016100ab565b3480156100ee57600080fd5b506100d46202a30081565b34801561010557600080fd5b50610119610114366004610650565b6102cc565b6040516100ab9190610755565b34801561013257600080fd5b50610075610141366004610650565b6104a1565b34801561015257600080fd5b506100d46212750081565b34801561016957600080fd5b5061018d610178366004610768565b60016020526000908152604090205460ff1681565b60405190151581526020016100ab565b600080546001600160a01b031633146101c95760405163ea8e4eb560e01b815260040160405180910390fd5b816101d76202a30042610781565b11156101f65760405163b26d1c2960e01b815260040160405180910390fd5b868686868686604051602001610211969594939291906107a8565b60408051601f1981840301815291815281516020928301206000818152600190935291205490915060ff161561025a57604051630f2a3bc360e01b815260040160405180910390fd5b600081815260016020819052604091829020805460ff19169091179055516001600160a01b0387169082907f01a8bb578465430704a373e879f8062b1440845b407c37c1894fd8b3b2afe3e7906102ba908b908a908a908a908a906107fb565b60405180910390a39695505050505050565b6000546060906001600160a01b031633146102fa5760405163ea8e4eb560e01b815260040160405180910390fd5b6000878787878787604051602001610317969594939291906107a8565b60408051601f1981840301815291815281516020928301206000818152600190935291205490915060ff1661035f5760405163014058af60e11b815260040160405180910390fd5b42831115610380576040516327056b2160e01b815260040160405180910390fd5b6000818152600160205260409020805460ff191690558451156103c9578480519060200120846040516020016103b792919061083f565b60405160208183030381529060405293505b600080886001600160a01b031688876040516103e59190610870565b60006040518083038185875af1925050503d8060008114610422576040519150601f19603f3d011682016040523d82523d6000602084013e610427565b606091505b50915091508161044a576040516348b3e13d60e11b815260040160405180910390fd5b886001600160a01b0316837fdc143a842c7ad845c308728f3ab24b4a1cd9bc5703442403c79e30c4546089bd8c8b8b8b8b60405161048c9594939291906107fb565b60405180910390a39998505050505050505050565b6000546001600160a01b031633146104cc5760405163ea8e4eb560e01b815260040160405180910390fd5b60008686868686866040516020016104e9969594939291906107a8565b60408051601f1981840301815291815281516020928301206000818152600190935291205490915060ff166105315760405163014058af60e11b815260040160405180910390fd5b60008181526001602052604090819020805460ff19169055516001600160a01b0387169082907f2575dcf859a92e80bc290b575de7903fcfe1bb2751c97aaef1567637400291549061058c908b908a908a908a908a906107fb565b60405180910390a350505050505050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156105ce576105ce61059d565b604051601f8501601f19908116603f011681019082821181831017156105f6576105f661059d565b8160405280935085815286868601111561060f57600080fd5b858560208301376000602087830101525050509392505050565b600082601f83011261063a57600080fd5b610649838335602085016105b3565b9392505050565b60008060008060008060c0878903121561066957600080fd5b8635955060208701356001600160a01b038116811461068757600080fd5b945060408701359350606087013567ffffffffffffffff808211156106ab57600080fd5b818901915089601f8301126106bf57600080fd5b6106ce8a8335602085016105b3565b945060808901359150808211156106e457600080fd5b506106f189828a01610629565b92505060a087013590509295509295509295565b60005b83811015610720578181015183820152602001610708565b50506000910152565b60008151808452610741816020860160208601610705565b601f01601f19169290920160200192915050565b6020815260006106496020830184610729565b60006020828403121561077a57600080fd5b5035919050565b808201808211156107a257634e487b7160e01b600052601160045260246000fd5b92915050565b86815260018060a01b038616602082015284604082015260c0606082015260006107d560c0830186610729565b82810360808401526107e78186610729565b9150508260a0830152979650505050505050565b85815284602082015260a06040820152600061081a60a0830186610729565b828103606084015261082c8186610729565b9150508260808301529695505050505050565b6001600160e01b0319831681528151600090610862816004850160208701610705565b919091016004019392505050565b60008251610882818460208701610705565b919091019291505056fea264697066735822122084f3134186ab787d372f7b53d5262ef9881880beeffb1716b5afbb21b25adae264736f6c63430008110033

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

000000000000000000000000053d938a4d2a6df86d837d66a037444d7bacf3b9

-----Decoded View---------------
Arg [0] : _governance (address): 0x053d938a4d2A6DF86D837D66a037444D7bACF3B9

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000053d938a4d2a6df86d837d66a037444d7bacf3b9


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

OVERVIEW

The executor contract for FrankenDAO.

Validator Index Block Amount
View All Withdrawals

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