ETH Price: $2,639.54 (-0.12%)

Contract

0xcE2c1d7bABEE096d76E21A55f2720a7cB064F33f
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

TokenTracker

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Exec Transaction199610052024-05-27 11:46:59144 days ago1716810419IN
0xcE2c1d7b...cB064F33f
0 ETH0.0017504215.05834268
Exec Transaction197683452024-04-30 13:12:59171 days ago1714482779IN
0xcE2c1d7b...cB064F33f
0 ETH0.0037631728.21671591
Exec Transaction195670052024-04-02 8:43:59199 days ago1712047439IN
0xcE2c1d7b...cB064F33f
0 ETH0.0052274744.63121465
Exec Transaction193731342024-03-06 2:25:35226 days ago1709691935IN
0xcE2c1d7b...cB064F33f
0 ETH0.0074056163.70143534
Exec Transaction193686352024-03-05 11:22:11227 days ago1709637731IN
0xcE2c1d7b...cB064F33f
0 ETH0.0064576765.69023231
Exec Transaction193684692024-03-05 10:48:47227 days ago1709635727IN
0xcE2c1d7b...cB064F33f
0 ETH0.0073905575.1798736
Exec Transaction193674052024-03-05 7:15:11227 days ago1709622911IN
0xcE2c1d7b...cB064F33f
0 ETH0.0102232781.45647067
Exec Transaction193673902024-03-05 7:11:59227 days ago1709622719IN
0xcE2c1d7b...cB064F33f
0 ETH0.0094781396.41555626
Exec Transaction192155602024-02-13 0:36:59249 days ago1707784619IN
0xcE2c1d7b...cB064F33f
0 ETH0.0049075141.89941717
Exec Transaction192155132024-02-13 0:27:23249 days ago1707784043IN
0xcE2c1d7b...cB064F33f
0 ETH0.0057884849.79642249
Exec Transaction192155082024-02-13 0:26:23249 days ago1707783983IN
0xcE2c1d7b...cB064F33f
0 ETH0.0068891851.66052399
Exec Transaction191380932024-02-02 3:38:11259 days ago1706845091IN
0xcE2c1d7b...cB064F33f
0 ETH0.0032070224.04874488
Exec Transaction191374782024-02-02 1:33:59259 days ago1706837639IN
0xcE2c1d7b...cB064F33f
0 ETH0.0040163230.11756688
Exec Transaction190829102024-01-25 10:03:47267 days ago1706177027IN
0xcE2c1d7b...cB064F33f
0 ETH0.0085577763.75074705
Exec Transaction189744652024-01-10 5:28:59282 days ago1704864539IN
0xcE2c1d7b...cB064F33f
0 ETH0.00336425.06445188
Exec Transaction188762452023-12-27 9:56:35296 days ago1703670995IN
0xcE2c1d7b...cB064F33f
0 ETH0.0040845730.43056517
Exec Transaction188669752023-12-26 2:44:47297 days ago1703558687IN
0xcE2c1d7b...cB064F33f
0 ETH0.0020824117.77924028
Exec Transaction188669362023-12-26 2:36:59297 days ago1703558219IN
0xcE2c1d7b...cB064F33f
0 ETH0.0022271716.5927192
Exec Transaction188115832023-12-18 8:06:59305 days ago1702886819IN
0xcE2c1d7b...cB064F33f
0 ETH0.0060580545.13321071
Exec Transaction187107352023-12-04 4:51:47319 days ago1701665507IN
0xcE2c1d7b...cB064F33f
0 ETH0.0065023448.44756177
Exec Transaction186261092023-11-22 8:31:59331 days ago1700641919IN
0xcE2c1d7b...cB064F33f
0 ETH0.0029388729.89546505
Exec Transaction185745122023-11-15 3:07:35338 days ago1700017655IN
0xcE2c1d7b...cB064F33f
0 ETH0.0053098438.8373417
Exec Transaction185336612023-11-09 10:02:35344 days ago1699524155IN
0xcE2c1d7b...cB064F33f
0 ETH0.0046342839.57881136
Exec Transaction184876332023-11-02 23:21:47351 days ago1698967307IN
0xcE2c1d7b...cB064F33f
0 ETH0.0026418526.8773932
Exec Transaction184598942023-10-30 2:06:59354 days ago1698631619IN
0xcE2c1d7b...cB064F33f
0 ETH0.0015532115.80960945
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
GnosisSafe

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 5 : GnosisSafe.sol
// SPDX-License-Identifier: agpl-3.0
pragma solidity ^0.8.0;

import "./libraries/SafeMath.sol";
import "./OwnerManager.sol";
import "./SignatureDecoder.sol";

contract GnosisSafe is OwnerManager, SignatureDecoder {
    using SafeMath for uint256;

    enum Operation {
        Call,
        DelegateCall
    }

    uint256 public nonce;

    // keccak256("ExecTransaction(address to,uint256 value,bytes data,uint8 operation,uint256 nonce)");
    bytes32 private constant EXEC_TX_TYPEHASH =
        0xa609e999e2804ed92314c0c662cfdb3c1d8107df2fb6f2e4039093f20d5e6250;

    // keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)");
    bytes32 private constant DOMAIN_SEPARATOR_TYPEHASH =
        0x8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f;
    string public constant name = "GnosisSafe V1";
    string public constant VERSION = "1";
    bytes32 public DOMAIN_SEPARATOR;

    constructor(address[] memory _owners, uint256 _threshold) {
        setupOwners(_owners, _threshold);
        uint256 chainId;
        assembly {
            chainId := chainid()
        }
        DOMAIN_SEPARATOR = keccak256(
            abi.encode(
                DOMAIN_SEPARATOR_TYPEHASH,
                keccak256(bytes(name)),
                keccak256(bytes(VERSION)),
                chainId,
                address(this)
            )
        );
    }

    function execTransaction(
        address to,
        uint256 value,
        bytes calldata data,
        Operation operation,
        bytes memory signatures
    ) public {
        bytes32 txHash = keccak256(
            abi.encodePacked(
                "\x19\x01",
                DOMAIN_SEPARATOR,
                keccak256(
                    abi.encode(
                        EXEC_TX_TYPEHASH,
                        to,
                        value,
                        keccak256(data),
                        operation,
                        nonce
                    )
                )
            )
        );
        nonce = nonce + 1;
        checkSignatures(txHash, signatures);
        require(execute(to, value, data, operation), "call error");
    }

    function getTransactionHash(
        address to,
        uint256 value,
        bytes calldata data,
        Operation operation
    ) public view returns (bytes32) {
        return
            keccak256(
                abi.encodePacked(
                    "\x19\x01",
                    DOMAIN_SEPARATOR,
                    keccak256(
                        abi.encode(
                            EXEC_TX_TYPEHASH,
                            to,
                            value,
                            keccak256(data),
                            operation,
                            nonce
                        )
                    )
                )
            );
    }

    function checkSignatures(bytes32 dataHash, bytes memory signatures)
        public
        view
    {
        // Load threshold to avoid multiple storage loads
        uint256 _threshold = threshold;
        // Check that a threshold is set
        require(_threshold > 0, "GS001");
        checkNSignatures(dataHash, signatures, _threshold);
    }

    function checkNSignatures(
        bytes32 dataHash,
        bytes memory signatures,
        uint256 requiredSignatures
    ) public view {
        require(signatures.length >= requiredSignatures.mul(65), "GS020");
        address lastOwner = address(0);
        address currentOwner;
        uint8 v;
        bytes32 r;
        bytes32 s;
        uint256 i;
        for (i = 0; i < requiredSignatures; i++) {
            (v, r, s) = signatureSplit(signatures, i);
            currentOwner = ecrecover(dataHash, v, r, s);
            require(
                currentOwner > lastOwner &&
                    owners[currentOwner] != address(0) &&
                    currentOwner != SENTINEL_OWNERS,
                "GS026"
            );
            lastOwner = currentOwner;
        }
    }

    function execute(
        address to,
        uint256 value,
        bytes memory data,
        Operation operation
    ) internal returns (bool success) {
        if (operation == Operation.DelegateCall) {
            // solhint-disable-next-line no-inline-assembly
            assembly {
                success := delegatecall(
                    gas(),
                    to,
                    add(data, 0x20),
                    mload(data),
                    0,
                    0
                )
            }
        } else {
            // solhint-disable-next-line no-inline-assembly
            assembly {
                success := call(
                    gas(),
                    to,
                    value,
                    add(data, 0x20),
                    mload(data),
                    0,
                    0
                )
            }
        }
    }
}

File 2 of 5 : SafeMath.sol
// SPDX-License-Identifier: agpl-3.0
pragma solidity ^0.8.0;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

File 3 of 5 : OwnerManager.sol
// SPDX-License-Identifier: agpl-3.0
pragma solidity ^0.8.0;
import "./SelfAuthorized.sol";

/// @title OwnerManager - Manages a set of owners and a threshold to perform actions.
/// @author Stefan George - <[email protected]>
/// @author Richard Meissner - <[email protected]>
contract OwnerManager is SelfAuthorized {
    event AddedOwner(address owner);
    event RemovedOwner(address owner);
    event ChangedThreshold(uint256 threshold);

    address internal constant SENTINEL_OWNERS = address(0x1);

    mapping(address => address) internal owners;
    uint256 internal ownerCount;
    uint256 internal threshold;

    /// @dev Setup function sets initial storage of contract.
    /// @param _owners List of Safe owners.
    /// @param _threshold Number of required confirmations for a Safe transaction.
    function setupOwners(address[] memory _owners, uint256 _threshold)
        internal
    {
        // Threshold can only be 0 at initialization.
        // Check ensures that setup function can only be called once.
        require(threshold == 0, "GS200");
        // Validate that threshold is smaller than number of added owners.
        require(_threshold <= _owners.length, "GS201");
        // There has to be at least one Safe owner.
        require(_threshold >= 1, "GS202");
        // Initializing Safe owners.
        address currentOwner = SENTINEL_OWNERS;
        for (uint256 i = 0; i < _owners.length; i++) {
            // Owner address cannot be null.
            address owner = _owners[i];
            require(
                owner != address(0) &&
                    owner != SENTINEL_OWNERS &&
                    owner != address(this) &&
                    currentOwner != owner,
                "GS203"
            );
            // No duplicate owners allowed.
            require(owners[owner] == address(0), "GS204");
            owners[currentOwner] = owner;
            currentOwner = owner;
        }
        owners[currentOwner] = SENTINEL_OWNERS;
        ownerCount = _owners.length;
        threshold = _threshold;
    }

    /// @dev Allows to add a new owner to the Safe and update the threshold at the same time.
    ///      This can only be done via a Safe transaction.
    /// @notice Adds the owner `owner` to the Safe and updates the threshold to `_threshold`.
    /// @param owner New owner address.
    /// @param _threshold New threshold.
    function addOwnerWithThreshold(address owner, uint256 _threshold)
        public
        authorized
    {
        // Owner address cannot be null, the sentinel or the Safe itself.
        require(
            owner != address(0) &&
                owner != SENTINEL_OWNERS &&
                owner != address(this),
            "GS203"
        );
        // No duplicate owners allowed.
        require(owners[owner] == address(0), "GS204");
        owners[owner] = owners[SENTINEL_OWNERS];
        owners[SENTINEL_OWNERS] = owner;
        ownerCount++;
        emit AddedOwner(owner);
        // Change threshold if threshold was changed.
        if (threshold != _threshold) changeThreshold(_threshold);
    }

    /// @dev Allows to remove an owner from the Safe and update the threshold at the same time.
    ///      This can only be done via a Safe transaction.
    /// @notice Removes the owner `owner` from the Safe and updates the threshold to `_threshold`.
    /// @param prevOwner Owner that pointed to the owner to be removed in the linked list
    /// @param owner Owner address to be removed.
    /// @param _threshold New threshold.
    function removeOwner(
        address prevOwner,
        address owner,
        uint256 _threshold
    ) public authorized {
        // Only allow to remove an owner, if threshold can still be reached.
        require(ownerCount - 1 >= _threshold, "GS201");
        // Validate owner address and check that it corresponds to owner index.
        require(owner != address(0) && owner != SENTINEL_OWNERS, "GS203");
        require(owners[prevOwner] == owner, "GS205");
        owners[prevOwner] = owners[owner];
        owners[owner] = address(0);
        ownerCount--;
        emit RemovedOwner(owner);
        // Change threshold if threshold was changed.
        if (threshold != _threshold) changeThreshold(_threshold);
    }

    /// @dev Allows to swap/replace an owner from the Safe with another address.
    ///      This can only be done via a Safe transaction.
    /// @notice Replaces the owner `oldOwner` in the Safe with `newOwner`.
    /// @param prevOwner Owner that pointed to the owner to be replaced in the linked list
    /// @param oldOwner Owner address to be replaced.
    /// @param newOwner New owner address.
    function swapOwner(
        address prevOwner,
        address oldOwner,
        address newOwner
    ) public authorized {
        // Owner address cannot be null, the sentinel or the Safe itself.
        require(
            newOwner != address(0) &&
                newOwner != SENTINEL_OWNERS &&
                newOwner != address(this),
            "GS203"
        );
        // No duplicate owners allowed.
        require(owners[newOwner] == address(0), "GS204");
        // Validate oldOwner address and check that it corresponds to owner index.
        require(oldOwner != address(0) && oldOwner != SENTINEL_OWNERS, "GS203");
        require(owners[prevOwner] == oldOwner, "GS205");
        owners[newOwner] = owners[oldOwner];
        owners[prevOwner] = newOwner;
        owners[oldOwner] = address(0);
        emit RemovedOwner(oldOwner);
        emit AddedOwner(newOwner);
    }

    /// @dev Allows to update the number of required confirmations by Safe owners.
    ///      This can only be done via a Safe transaction.
    /// @notice Changes the threshold of the Safe to `_threshold`.
    /// @param _threshold New threshold.
    function changeThreshold(uint256 _threshold) public authorized {
        // Validate that threshold is smaller than number of owners.
        require(_threshold <= ownerCount, "GS201");
        // There has to be at least one Safe owner.
        require(_threshold >= 1, "GS202");
        threshold = _threshold;
        emit ChangedThreshold(threshold);
    }

    function getThreshold() public view returns (uint256) {
        return threshold;
    }

    function isOwner(address owner) public view returns (bool) {
        return owner != SENTINEL_OWNERS && owners[owner] != address(0);
    }

    /// @dev Returns array of owners.
    /// @return Array of Safe owners.
    function getOwners() public view returns (address[] memory) {
        address[] memory array = new address[](ownerCount);

        // populate return array
        uint256 index = 0;
        address currentOwner = owners[SENTINEL_OWNERS];
        while (currentOwner != SENTINEL_OWNERS) {
            array[index] = currentOwner;
            currentOwner = owners[currentOwner];
            index++;
        }
        return array;
    }
}

File 4 of 5 : SignatureDecoder.sol
// SPDX-License-Identifier: agpl-3.0
pragma solidity ^0.8.0;

/// @title SignatureDecoder - Decodes signatures that a encoded as bytes
/// @author Richard Meissner - <[email protected]>
contract SignatureDecoder {
    /// @dev divides bytes signature into `uint8 v, bytes32 r, bytes32 s`.
    /// @notice Make sure to perform a bounds check for @param pos, to avoid out of bounds access on @param signatures
    /// @param pos which signature to read. A prior bounds check of this parameter should be performed, to avoid out of bounds access
    /// @param signatures concatenated rsv signatures
    function signatureSplit(bytes memory signatures, uint256 pos)
        internal
        pure
        returns (
            uint8 v,
            bytes32 r,
            bytes32 s
        )
    {
        // The signature format is a compact form of:
        //   {bytes32 r}{bytes32 s}{uint8 v}
        // Compact means, uint8 is not padded to 32 bytes.
        // solhint-disable-next-line no-inline-assembly
        assembly {
            let signaturePos := mul(0x41, pos)
            r := mload(add(signatures, add(signaturePos, 0x20)))
            s := mload(add(signatures, add(signaturePos, 0x40)))
            // Here we are loading the last 32 bytes, including 31 bytes
            // of 's'. There is no 'mload8' to do this.
            //
            // 'byte' is not working due to the Solidity parser, so lets
            // use the second best option, 'and'
            v := and(mload(add(signatures, add(signaturePos, 0x41))), 0xff)
        }
    }
}

File 5 of 5 : SelfAuthorized.sol
// SPDX-License-Identifier: agpl-3.0
pragma solidity ^0.8.0;

/// @title SelfAuthorized - authorizes current contract to perform actions
/// @author Richard Meissner - <[email protected]>
contract SelfAuthorized {
    function requireSelfCall() private view {
        require(msg.sender == address(this), "GS031");
    }

    modifier authorized() {
        // This is a function call as it minimized the bytecode size
        requireSelfCall();
        _;
    }
}

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address[]","name":"_owners","type":"address[]"},{"internalType":"uint256","name":"_threshold","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"AddedOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"threshold","type":"uint256"}],"name":"ChangedThreshold","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"RemovedOwner","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"_threshold","type":"uint256"}],"name":"addOwnerWithThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_threshold","type":"uint256"}],"name":"changeThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"dataHash","type":"bytes32"},{"internalType":"bytes","name":"signatures","type":"bytes"},{"internalType":"uint256","name":"requiredSignatures","type":"uint256"}],"name":"checkNSignatures","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"dataHash","type":"bytes32"},{"internalType":"bytes","name":"signatures","type":"bytes"}],"name":"checkSignatures","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"enum GnosisSafe.Operation","name":"operation","type":"uint8"},{"internalType":"bytes","name":"signatures","type":"bytes"}],"name":"execTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwners","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"enum GnosisSafe.Operation","name":"operation","type":"uint8"}],"name":"getTransactionHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"prevOwner","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"_threshold","type":"uint256"}],"name":"removeOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"prevOwner","type":"address"},{"internalType":"address","name":"oldOwner","type":"address"},{"internalType":"address","name":"newOwner","type":"address"}],"name":"swapOwner","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b50604051620019083803806200190883398101604081905262000034916200031b565b62000040828262000117565b604080518082018252600d81526c476e6f7369735361666520563160981b6020918201528151808301835260018152603160f81b9082015290514691620000f2917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f917f311c9c95e9b8b8577f129d9d3d8a6f0053d4a0aeb1e004bc26c3cce63cf492b1917fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6918691309101620003f1565b60405160208183030381529060405280519060200120600481905550505050620004f6565b60025415620001435760405162461bcd60e51b81526004016200013a906200043c565b60405180910390fd5b8151811115620001675760405162461bcd60e51b81526004016200013a906200041d565b60018110156200018b5760405162461bcd60e51b81526004016200013a906200047a565b600160005b8351811015620002c8576000848281518110620001bd57634e487b7160e01b600052603260045260246000fd5b6020026020010151905060006001600160a01b0316816001600160a01b031614158015620001f557506001600160a01b038116600114155b80156200020b57506001600160a01b0381163014155b80156200022a5750806001600160a01b0316836001600160a01b031614155b620002495760405162461bcd60e51b81526004016200013a906200045b565b6001600160a01b038181166000908152602081905260409020541615620002845760405162461bcd60e51b81526004016200013a9062000499565b6001600160a01b03928316600090815260208190526040902080546001600160a01b0319169382169390931790925580620002bf81620004b8565b91505062000190565b506001600160a01b0316600090815260208190526040902080546001600160a01b03191660019081179091559151909155600255565b80516001600160a01b03811681146200031657600080fd5b919050565b600080604083850312156200032e578182fd5b82516001600160401b038082111562000345578384fd5b818501915085601f83011262000359578384fd5b8151602082821115620003705762000370620004e0565b80820260405182828201018181108682111715620003925762000392620004e0565b604052838152828101945085830182870184018b1015620003b1578889fd5b8896505b84871015620003de57620003c981620002fe565b865260019690960195948301948301620003b5565b5097909101519698969750505050505050565b9485526020850193909352604084019190915260608301526001600160a01b0316608082015260a00190565b602080825260059082015264475332303160d81b604082015260600190565b602080825260059082015264047533230360dc1b604082015260600190565b602080825260059082015264475332303360d81b604082015260600190565b60208082526005908201526423a999181960d91b604082015260600190565b60208082526005908201526411d4cc8c0d60da1b604082015260600190565b6000600019821415620004d957634e487b7160e01b81526011600452602481fd5b5060010190565b634e487b7160e01b600052604160045260246000fd5b61140280620005066000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c8063a0e67e2b11610097578063e75235b811610066578063e75235b8146101de578063ed516d51146101e6578063f8dc5dd9146101f9578063ffa1ad741461020c576100f5565b8063a0e67e2b1461019b578063a3edc925146101b0578063affed0e0146101c3578063e318b52b146101cb576100f5565b8063300c661f116100d3578063300c661f1461014d5780633644e5151461016d57806365bc10d314610175578063694e80c314610188576100f5565b806306fdde03146100fa5780630d582f13146101185780632f54bf6e1461012d575b600080fd5b610102610214565b60405161010f9190611131565b60405180910390f35b61012b610126366004610e49565b61023d565b005b61014061013b366004610dab565b610399565b60405161010f91906110a9565b61016061015b366004610e72565b6103d6565b60405161010f91906110b4565b610160610477565b61012b610183366004610edf565b61047d565b61012b610196366004611005565b610599565b6101a3610624565b60405161010f919061105c565b61012b6101be366004610fb7565b610730565b61016061085d565b61012b6101d9366004610dcc565b610863565b610160610a38565b61012b6101f4366004610f72565b610a3e565b61012b610207366004610e0e565b610a6e565b610102610bbe565b6040518060400160405280600d81526020016c476e6f7369735361666520563160981b81525081565b610245610bdb565b6001600160a01b0382161580159061026757506001600160a01b038216600114155b801561027c57506001600160a01b0382163014155b6102a15760405162461bcd60e51b8152600401610298906111c2565b60405180910390fd5b6001600160a01b0382811660009081526020819052604090205416156102d95760405162461bcd60e51b81526004016102989061127f565b600060208190527fada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d80546001600160a01b03858116808552604085208054929093166001600160a01b0319928316179092556001808552835490911690911790915580549161034783611385565b91905055507f9465fa0c962cc76958e6373a993326400c1c94f8be2fe3a952adfa7f60b2ea268260405161037b9190611048565b60405180910390a180600254146103955761039581610599565b5050565b60006001600160a01b0382166001148015906103ce57506001600160a01b038281166000908152602081905260409020541615155b90505b919050565b60006004547fa609e999e2804ed92314c0c662cfdb3c1d8107df2fb6f2e4039093f20d5e625060001b8787878760405161041192919061101d565b60405190819003812060035461042f959493928991906020016110bd565b6040516020818303038152906040528051906020012060405160200161045692919061102d565b60405160208183030381529060405280519060200120905095945050505050565b60045481565b60006004547fa609e999e2804ed92314c0c662cfdb3c1d8107df2fb6f2e4039093f20d5e625060001b888888886040516104b892919061101d565b6040519081900381206003546104d6959493928a91906020016110bd565b604051602081830303815290604052805190602001206040516020016104fd92919061102d565b60405160208183030381529060405280519060200120905060035460016105249190611300565b6003556105318183610a3e565b610574878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250899250610bfc915050565b6105905760405162461bcd60e51b81526004016102989061129e565b50505050505050565b6105a1610bdb565b6001548111156105c35760405162461bcd60e51b8152600401610298906111a3565b60018110156105e45760405162461bcd60e51b815260040161029890611241565b60028190556040517f610f7ff2b304ae8903c3de74c60c6ab1f7d6226b3f52c5161905bb5ad4039c93906106199083906110b4565b60405180910390a150565b6060600060015467ffffffffffffffff81111561065157634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561067a578160200160208202803683370190505b506001600090815260208190527fada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d54919250906001600160a01b03165b6001600160a01b03811660011461072857808383815181106106e957634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152918116600090815291829052604090912054168161072081611385565b9250506106b7565b509091505090565b61073b816041610c51565b8251101561075b5760405162461bcd60e51b8152600401610298906112c2565b6000808060008060005b86811015610852576107778882610c9f565b60408051600081526020019081905292965090945092506001906107a2908b90879087908790611113565b6020604051602081039080840390855afa1580156107c4573d6000803e3d6000fd5b505050602060405103519450856001600160a01b0316856001600160a01b031611801561080a57506001600160a01b038581166000908152602081905260409020541615155b801561082057506001600160a01b038516600114155b61083c5760405162461bcd60e51b815260040161029890611184565b849550808061084a90611385565b915050610765565b505050505050505050565b60035481565b61086b610bdb565b6001600160a01b0381161580159061088d57506001600160a01b038116600114155b80156108a257506001600160a01b0381163014155b6108be5760405162461bcd60e51b8152600401610298906111c2565b6001600160a01b0381811660009081526020819052604090205416156108f65760405162461bcd60e51b81526004016102989061127f565b6001600160a01b0382161580159061091857506001600160a01b038216600114155b6109345760405162461bcd60e51b8152600401610298906111c2565b6001600160a01b038381166000908152602081905260409020548116908316146109705760405162461bcd60e51b8152600401610298906112e1565b6001600160a01b03828116600081815260208190526040808220805486861680855283852080549288166001600160a01b03199384161790559589168452828420805482169096179095559290915281549092169055517ff8d49fc529812e9a7c5c50e69c20f0dccc0db8fa95c98bc58cc9a4f1c1299eaf906109f4908490611048565b60405180910390a17f9465fa0c962cc76958e6373a993326400c1c94f8be2fe3a952adfa7f60b2ea2681604051610a2b9190611048565b60405180910390a1505050565b60025490565b60025480610a5e5760405162461bcd60e51b815260040161029890611222565b610a69838383610730565b505050565b610a76610bdb565b8060018054610a859190611357565b1015610aa35760405162461bcd60e51b8152600401610298906111a3565b6001600160a01b03821615801590610ac557506001600160a01b038216600114155b610ae15760405162461bcd60e51b8152600401610298906111c2565b6001600160a01b03838116600090815260208190526040902054811690831614610b1d5760405162461bcd60e51b8152600401610298906112e1565b6001600160a01b03828116600081815260208190526040808220805488861684529183208054929095166001600160a01b03199283161790945591815282549091169091556001805491610b708361136e565b91905055507ff8d49fc529812e9a7c5c50e69c20f0dccc0db8fa95c98bc58cc9a4f1c1299eaf82604051610ba49190611048565b60405180910390a18060025414610a6957610a6981610599565b604051806040016040528060018152602001603160f81b81525081565b333014610bfa5760405162461bcd60e51b815260040161029890611260565b565b60006001826001811115610c2057634e487b7160e01b600052602160045260246000fd5b1415610c3957600080845160208601885af49050610c49565b60008084516020860187895af190505b949350505050565b600082610c6057506000610c99565b6000610c6c8385611338565b905082610c798583611318565b14610c965760405162461bcd60e51b8152600401610298906111e1565b90505b92915050565b60419081029190910160208101516040820151919092015160ff1692565b80356001600160a01b03811681146103d157600080fd5b60008083601f840112610ce5578081fd5b50813567ffffffffffffffff811115610cfc578182fd5b602083019150836020828501011115610d1457600080fd5b9250929050565b600082601f830112610d2b578081fd5b813567ffffffffffffffff80821115610d4657610d466113b6565b604051601f8301601f191681016020018281118282101715610d6a57610d6a6113b6565b604052828152848301602001861015610d81578384fd5b82602086016020830137918201602001929092529392505050565b8035600281106103d157600080fd5b600060208284031215610dbc578081fd5b610dc582610cbd565b9392505050565b600080600060608486031215610de0578182fd5b610de984610cbd565b9250610df760208501610cbd565b9150610e0560408501610cbd565b90509250925092565b600080600060608486031215610e22578283fd5b610e2b84610cbd565b9250610e3960208501610cbd565b9150604084013590509250925092565b60008060408385031215610e5b578182fd5b610e6483610cbd565b946020939093013593505050565b600080600080600060808688031215610e89578081fd5b610e9286610cbd565b945060208601359350604086013567ffffffffffffffff811115610eb4578182fd5b610ec088828901610cd4565b9094509250610ed3905060608701610d9c565b90509295509295909350565b60008060008060008060a08789031215610ef7578081fd5b610f0087610cbd565b955060208701359450604087013567ffffffffffffffff80821115610f23578283fd5b610f2f8a838b01610cd4565b9096509450849150610f4360608a01610d9c565b93506080890135915080821115610f58578283fd5b50610f6589828a01610d1b565b9150509295509295509295565b60008060408385031215610f84578182fd5b82359150602083013567ffffffffffffffff811115610fa1578182fd5b610fad85828601610d1b565b9150509250929050565b600080600060608486031215610fcb578283fd5b83359250602084013567ffffffffffffffff811115610fe8578283fd5b610ff486828701610d1b565b925050604084013590509250925092565b600060208284031215611016578081fd5b5035919050565b6000828483379101908152919050565b61190160f01b81526002810192909252602282015260420190565b6001600160a01b0391909116815260200190565b6020808252825182820181905260009190848201906040850190845b8181101561109d5783516001600160a01b031683529284019291840191600101611078565b50909695505050505050565b901515815260200190565b90815260200190565b8681526001600160a01b0386166020820152604081018590526060810184905260c08101600284106110ff57634e487b7160e01b600052602160045260246000fd5b608082019390935260a00152949350505050565b93845260ff9290921660208401526040830152606082015260800190565b6000602080835283518082850152825b8181101561115d57858101830151858201604001528201611141565b8181111561116e5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526005908201526423a998191b60d91b604082015260600190565b602080825260059082015264475332303160d81b604082015260600190565b602080825260059082015264475332303360d81b604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b602080825260059082015264475330303160d81b604082015260600190565b60208082526005908201526423a999181960d91b604082015260600190565b602080825260059082015264475330333160d81b604082015260600190565b60208082526005908201526411d4cc8c0d60da1b604082015260600190565b6020808252600a908201526931b0b6361032b93937b960b11b604082015260600190565b602080825260059082015264047533032360dc1b604082015260600190565b602080825260059082015264475332303560d81b604082015260600190565b60008219821115611313576113136113a0565b500190565b60008261133357634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615611352576113526113a0565b500290565b600082821015611369576113696113a0565b500390565b60008161137d5761137d6113a0565b506000190190565b6000600019821415611399576113996113a0565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea2646970667358221220567f8ff36ad0effcacb799984d7c8c3ef8b333461afca491e62210d3786292d164736f6c634300080000330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000030000000000000000000000001659739d3b41717af632b1b59539a8b1942f5a94000000000000000000000000e83130f441fb74a4b3614ce135f7e5c644e26b18000000000000000000000000d30e01d63df7fac74eeba6e4b8127f538baa9768

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100f55760003560e01c8063a0e67e2b11610097578063e75235b811610066578063e75235b8146101de578063ed516d51146101e6578063f8dc5dd9146101f9578063ffa1ad741461020c576100f5565b8063a0e67e2b1461019b578063a3edc925146101b0578063affed0e0146101c3578063e318b52b146101cb576100f5565b8063300c661f116100d3578063300c661f1461014d5780633644e5151461016d57806365bc10d314610175578063694e80c314610188576100f5565b806306fdde03146100fa5780630d582f13146101185780632f54bf6e1461012d575b600080fd5b610102610214565b60405161010f9190611131565b60405180910390f35b61012b610126366004610e49565b61023d565b005b61014061013b366004610dab565b610399565b60405161010f91906110a9565b61016061015b366004610e72565b6103d6565b60405161010f91906110b4565b610160610477565b61012b610183366004610edf565b61047d565b61012b610196366004611005565b610599565b6101a3610624565b60405161010f919061105c565b61012b6101be366004610fb7565b610730565b61016061085d565b61012b6101d9366004610dcc565b610863565b610160610a38565b61012b6101f4366004610f72565b610a3e565b61012b610207366004610e0e565b610a6e565b610102610bbe565b6040518060400160405280600d81526020016c476e6f7369735361666520563160981b81525081565b610245610bdb565b6001600160a01b0382161580159061026757506001600160a01b038216600114155b801561027c57506001600160a01b0382163014155b6102a15760405162461bcd60e51b8152600401610298906111c2565b60405180910390fd5b6001600160a01b0382811660009081526020819052604090205416156102d95760405162461bcd60e51b81526004016102989061127f565b600060208190527fada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d80546001600160a01b03858116808552604085208054929093166001600160a01b0319928316179092556001808552835490911690911790915580549161034783611385565b91905055507f9465fa0c962cc76958e6373a993326400c1c94f8be2fe3a952adfa7f60b2ea268260405161037b9190611048565b60405180910390a180600254146103955761039581610599565b5050565b60006001600160a01b0382166001148015906103ce57506001600160a01b038281166000908152602081905260409020541615155b90505b919050565b60006004547fa609e999e2804ed92314c0c662cfdb3c1d8107df2fb6f2e4039093f20d5e625060001b8787878760405161041192919061101d565b60405190819003812060035461042f959493928991906020016110bd565b6040516020818303038152906040528051906020012060405160200161045692919061102d565b60405160208183030381529060405280519060200120905095945050505050565b60045481565b60006004547fa609e999e2804ed92314c0c662cfdb3c1d8107df2fb6f2e4039093f20d5e625060001b888888886040516104b892919061101d565b6040519081900381206003546104d6959493928a91906020016110bd565b604051602081830303815290604052805190602001206040516020016104fd92919061102d565b60405160208183030381529060405280519060200120905060035460016105249190611300565b6003556105318183610a3e565b610574878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250899250610bfc915050565b6105905760405162461bcd60e51b81526004016102989061129e565b50505050505050565b6105a1610bdb565b6001548111156105c35760405162461bcd60e51b8152600401610298906111a3565b60018110156105e45760405162461bcd60e51b815260040161029890611241565b60028190556040517f610f7ff2b304ae8903c3de74c60c6ab1f7d6226b3f52c5161905bb5ad4039c93906106199083906110b4565b60405180910390a150565b6060600060015467ffffffffffffffff81111561065157634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561067a578160200160208202803683370190505b506001600090815260208190527fada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d54919250906001600160a01b03165b6001600160a01b03811660011461072857808383815181106106e957634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152918116600090815291829052604090912054168161072081611385565b9250506106b7565b509091505090565b61073b816041610c51565b8251101561075b5760405162461bcd60e51b8152600401610298906112c2565b6000808060008060005b86811015610852576107778882610c9f565b60408051600081526020019081905292965090945092506001906107a2908b90879087908790611113565b6020604051602081039080840390855afa1580156107c4573d6000803e3d6000fd5b505050602060405103519450856001600160a01b0316856001600160a01b031611801561080a57506001600160a01b038581166000908152602081905260409020541615155b801561082057506001600160a01b038516600114155b61083c5760405162461bcd60e51b815260040161029890611184565b849550808061084a90611385565b915050610765565b505050505050505050565b60035481565b61086b610bdb565b6001600160a01b0381161580159061088d57506001600160a01b038116600114155b80156108a257506001600160a01b0381163014155b6108be5760405162461bcd60e51b8152600401610298906111c2565b6001600160a01b0381811660009081526020819052604090205416156108f65760405162461bcd60e51b81526004016102989061127f565b6001600160a01b0382161580159061091857506001600160a01b038216600114155b6109345760405162461bcd60e51b8152600401610298906111c2565b6001600160a01b038381166000908152602081905260409020548116908316146109705760405162461bcd60e51b8152600401610298906112e1565b6001600160a01b03828116600081815260208190526040808220805486861680855283852080549288166001600160a01b03199384161790559589168452828420805482169096179095559290915281549092169055517ff8d49fc529812e9a7c5c50e69c20f0dccc0db8fa95c98bc58cc9a4f1c1299eaf906109f4908490611048565b60405180910390a17f9465fa0c962cc76958e6373a993326400c1c94f8be2fe3a952adfa7f60b2ea2681604051610a2b9190611048565b60405180910390a1505050565b60025490565b60025480610a5e5760405162461bcd60e51b815260040161029890611222565b610a69838383610730565b505050565b610a76610bdb565b8060018054610a859190611357565b1015610aa35760405162461bcd60e51b8152600401610298906111a3565b6001600160a01b03821615801590610ac557506001600160a01b038216600114155b610ae15760405162461bcd60e51b8152600401610298906111c2565b6001600160a01b03838116600090815260208190526040902054811690831614610b1d5760405162461bcd60e51b8152600401610298906112e1565b6001600160a01b03828116600081815260208190526040808220805488861684529183208054929095166001600160a01b03199283161790945591815282549091169091556001805491610b708361136e565b91905055507ff8d49fc529812e9a7c5c50e69c20f0dccc0db8fa95c98bc58cc9a4f1c1299eaf82604051610ba49190611048565b60405180910390a18060025414610a6957610a6981610599565b604051806040016040528060018152602001603160f81b81525081565b333014610bfa5760405162461bcd60e51b815260040161029890611260565b565b60006001826001811115610c2057634e487b7160e01b600052602160045260246000fd5b1415610c3957600080845160208601885af49050610c49565b60008084516020860187895af190505b949350505050565b600082610c6057506000610c99565b6000610c6c8385611338565b905082610c798583611318565b14610c965760405162461bcd60e51b8152600401610298906111e1565b90505b92915050565b60419081029190910160208101516040820151919092015160ff1692565b80356001600160a01b03811681146103d157600080fd5b60008083601f840112610ce5578081fd5b50813567ffffffffffffffff811115610cfc578182fd5b602083019150836020828501011115610d1457600080fd5b9250929050565b600082601f830112610d2b578081fd5b813567ffffffffffffffff80821115610d4657610d466113b6565b604051601f8301601f191681016020018281118282101715610d6a57610d6a6113b6565b604052828152848301602001861015610d81578384fd5b82602086016020830137918201602001929092529392505050565b8035600281106103d157600080fd5b600060208284031215610dbc578081fd5b610dc582610cbd565b9392505050565b600080600060608486031215610de0578182fd5b610de984610cbd565b9250610df760208501610cbd565b9150610e0560408501610cbd565b90509250925092565b600080600060608486031215610e22578283fd5b610e2b84610cbd565b9250610e3960208501610cbd565b9150604084013590509250925092565b60008060408385031215610e5b578182fd5b610e6483610cbd565b946020939093013593505050565b600080600080600060808688031215610e89578081fd5b610e9286610cbd565b945060208601359350604086013567ffffffffffffffff811115610eb4578182fd5b610ec088828901610cd4565b9094509250610ed3905060608701610d9c565b90509295509295909350565b60008060008060008060a08789031215610ef7578081fd5b610f0087610cbd565b955060208701359450604087013567ffffffffffffffff80821115610f23578283fd5b610f2f8a838b01610cd4565b9096509450849150610f4360608a01610d9c565b93506080890135915080821115610f58578283fd5b50610f6589828a01610d1b565b9150509295509295509295565b60008060408385031215610f84578182fd5b82359150602083013567ffffffffffffffff811115610fa1578182fd5b610fad85828601610d1b565b9150509250929050565b600080600060608486031215610fcb578283fd5b83359250602084013567ffffffffffffffff811115610fe8578283fd5b610ff486828701610d1b565b925050604084013590509250925092565b600060208284031215611016578081fd5b5035919050565b6000828483379101908152919050565b61190160f01b81526002810192909252602282015260420190565b6001600160a01b0391909116815260200190565b6020808252825182820181905260009190848201906040850190845b8181101561109d5783516001600160a01b031683529284019291840191600101611078565b50909695505050505050565b901515815260200190565b90815260200190565b8681526001600160a01b0386166020820152604081018590526060810184905260c08101600284106110ff57634e487b7160e01b600052602160045260246000fd5b608082019390935260a00152949350505050565b93845260ff9290921660208401526040830152606082015260800190565b6000602080835283518082850152825b8181101561115d57858101830151858201604001528201611141565b8181111561116e5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526005908201526423a998191b60d91b604082015260600190565b602080825260059082015264475332303160d81b604082015260600190565b602080825260059082015264475332303360d81b604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b602080825260059082015264475330303160d81b604082015260600190565b60208082526005908201526423a999181960d91b604082015260600190565b602080825260059082015264475330333160d81b604082015260600190565b60208082526005908201526411d4cc8c0d60da1b604082015260600190565b6020808252600a908201526931b0b6361032b93937b960b11b604082015260600190565b602080825260059082015264047533032360dc1b604082015260600190565b602080825260059082015264475332303560d81b604082015260600190565b60008219821115611313576113136113a0565b500190565b60008261133357634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615611352576113526113a0565b500290565b600082821015611369576113696113a0565b500390565b60008161137d5761137d6113a0565b506000190190565b6000600019821415611399576113996113a0565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea2646970667358221220567f8ff36ad0effcacb799984d7c8c3ef8b333461afca491e62210d3786292d164736f6c63430008000033

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

0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000030000000000000000000000001659739d3b41717af632b1b59539a8b1942f5a94000000000000000000000000e83130f441fb74a4b3614ce135f7e5c644e26b18000000000000000000000000d30e01d63df7fac74eeba6e4b8127f538baa9768

-----Decoded View---------------
Arg [0] : _owners (address[]): 0x1659739D3b41717AF632B1b59539a8b1942f5a94,0xE83130f441fB74A4B3614CE135f7E5c644e26b18,0xD30e01d63DF7faC74eeba6e4b8127F538BAA9768
Arg [1] : _threshold (uint256): 2

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [3] : 0000000000000000000000001659739d3b41717af632b1b59539a8b1942f5a94
Arg [4] : 000000000000000000000000e83130f441fb74a4b3614ce135f7e5c644e26b18
Arg [5] : 000000000000000000000000d30e01d63df7fac74eeba6e4b8127f538baa9768


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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