ETH Price: $2,108.05 (+13.30%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Age:180D
Reset Filter

Transaction Hash
Method
Block
From
To

There are no matching entries

Update your filters to view other transactions

Age:180D
Reset Filter

Advanced mode:
Parent Transaction Hash Method Block
From
To

There are no matching entries

Update your filters to view other transactions

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:
DharmaUpgradeMultisig

Compiler Version
v0.5.11+commit.c082d0b4

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2019-11-14
*/

pragma solidity 0.5.11; // optimization disabled, evm version: petersburg


/**
 * @title DharmaUpgradeMultisig
 * @author 0age (derived from Christian Lundkvist's Simple Multisig)
 * @notice This contract is a multisig that will control upgrades to the Dharma
 * Smart Wallet and the Dharma Key Ring via the Dharma Upgrade Beacon Controller
 * Manager. it is based on Christian Lundkvist's Simple Multisig (found at
 * https://github.com/christianlundkvist/simple-multisig). The address of the
 * Dharma Upgrade Beacon Controller Manager is hard-coded as the only allowable
 * call destination, and any changes in ownership or signature threshold will
 * require deploying a new multisig and transferring ownership of the upgrade
 * beacon controller manager.
 */
contract DharmaUpgradeMultisig {
  // The nonce is the only mutable state, and is incremented on every call.
  uint256 private _nonce;

  // Maintain a mapping and a convenience array of owners.
  mapping(address => bool) private _isOwner;
  address[] private _owners;

  // This multisig can only call the Upgrade Beacon Controller Manager contract.
  address private constant _DESTINATION = address(
    0x00000000008A10a98969A000D1C0AbA90F858D6a
  );

  // The threshold is an exact number of valid signatures that must be supplied.
  uint256 private constant _THRESHOLD = 3;

  // Note: Owners must be strictly increasing in order to prevent duplicates.
  constructor(address[] memory owners) public {
    require(owners.length <= 10, "Cannot have more than 10 owners.");
    require(_THRESHOLD <= owners.length, "Threshold cannot exceed total owners.");

    address lastAddress = address(0);
    for (uint256 i = 0; i < owners.length; i++) {
      require(
        owners[i] > lastAddress, "Owner addresses must be strictly increasing."
      );
      _isOwner[owners[i]] = true;
      lastAddress = owners[i];
    }
    _owners = owners;
  }

  function getNextHash(
    bytes calldata data,
    address executor,
    uint256 gasLimit
  ) external view returns (bytes32 hash) {
    hash = _getHash(data, executor, gasLimit, _nonce);
  }

  function getHash(
    bytes calldata data,
    address executor,
    uint256 gasLimit,
    uint256 nonce
  ) external view returns (bytes32 hash) {
    hash = _getHash(data, executor, gasLimit, nonce);
  }

  function getNonce() external view returns (uint256 nonce) {
    nonce = _nonce;
  }

  function getOwners() external view returns (address[] memory owners) {
    owners = _owners;
  }

  function isOwner(address account) external view returns (bool owner) {
    owner = _isOwner[account];
  }

  function getThreshold() external pure returns (uint256 threshold) {
    threshold = _THRESHOLD;
  }

  function getDestination() external pure returns (address destination) {
    destination = _DESTINATION;
  }

  // Note: addresses recovered from signatures must be strictly increasing.
  function execute(
    bytes calldata data,
    address executor,
    uint256 gasLimit,
    bytes calldata signatures
  ) external returns (bool success, bytes memory returnData) {
    require(
      executor == msg.sender || executor == address(0),
      "Must call from the executor account if one is specified."
    );

    // Derive the message hash and wrap in the eth signed messsage hash.
    bytes32 hash = _toEthSignedMessageHash(
      _getHash(data, executor, gasLimit, _nonce)
    );

    // Recover each signer from the provided signatures.
    address[] memory signers = _recoverGroup(hash, signatures);

    require(signers.length == _THRESHOLD, "Total signers must equal threshold.");

    // Verify that each signatory is an owner and is strictly increasing.
    address lastAddress = address(0); // cannot have address(0) as an owner
    for (uint256 i = 0; i < signers.length; i++) {
      require(
        _isOwner[signers[i]], "Signature does not correspond to an owner."
      );
      require(
        signers[i] > lastAddress, "Signer addresses must be strictly increasing."
      );
      lastAddress = signers[i];
    }

    // Increment the nonce and execute the transaction.
    _nonce++;
    (success, returnData) = _DESTINATION.call.gas(gasLimit)(data);
  }

  function _getHash(
    bytes memory data,
    address executor,
    uint256 gasLimit,
    uint256 nonce
  ) internal view returns (bytes32 hash) {
    // Note: this is the data used to create a personal signed message hash.
    hash = keccak256(
      abi.encodePacked(address(this), nonce, executor, gasLimit, data)
    );
  }

  /**
   * @dev Returns each address that signed a hashed message (`hash`) from a
   * collection of `signatures`.
   *
   * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:
   * this function rejects them by requiring the `s` value to be in the lower
   * half order, and the `v` value to be either 27 or 28.
   *
   * NOTE: This call _does not revert_ if a signature is invalid, or if the
   * signer is otherwise unable to be retrieved. In those scenarios, the zero
   * address is returned for that signature.
   *
   * IMPORTANT: `hash` _must_ be the result of a hash operation for the
   * verification to be secure: it is possible to craft signatures that recover
   * to arbitrary addresses for non-hashed data.
   */
  function _recoverGroup(
    bytes32 hash,
    bytes memory signatures
  ) internal pure returns (address[] memory signers) {
    // Ensure that the signatures length is a multiple of 65.
    if (signatures.length % 65 != 0) {
      return new address[](0);
    }

    // Create an appropriately-sized array of addresses for each signer.
    signers = new address[](signatures.length / 65);

    // Get each signature location and divide into r, s and v variables.
    bytes32 signatureLocation;
    bytes32 r;
    bytes32 s;
    uint8 v;

    for (uint256 i = 0; i < signers.length; i++) {
      assembly {
        signatureLocation := add(signatures, mul(i, 65))
        r := mload(add(signatureLocation, 32))
        s := mload(add(signatureLocation, 64))
        v := byte(0, mload(add(signatureLocation, 96)))
      }

      // EIP-2 still allows signature malleability for ecrecover(). Remove
      // this possibility and make the signature unique.
      if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {
        continue;
      }

      if (v != 27 && v != 28) {
        continue;
      }

      // If signature is valid & not malleable, add signer address.
      signers[i] = ecrecover(hash, v, r, s);
    }
  }

  function _toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {
    return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", hash));
  }
}

Contract Security Audit

Contract ABI

API
[{"constant":true,"inputs":[{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"address","name":"executor","type":"address"},{"internalType":"uint256","name":"gasLimit","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"}],"name":"getHash","outputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getDestination","outputs":[{"internalType":"address","name":"destination","type":"address"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"owner","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"address","name":"executor","type":"address"},{"internalType":"uint256","name":"gasLimit","type":"uint256"}],"name":"getNextHash","outputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getOwners","outputs":[{"internalType":"address[]","name":"owners","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getNonce","outputs":[{"internalType":"uint256","name":"nonce","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getThreshold","outputs":[{"internalType":"uint256","name":"threshold","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"address","name":"executor","type":"address"},{"internalType":"uint256","name":"gasLimit","type":"uint256"},{"internalType":"bytes","name":"signatures","type":"bytes"}],"name":"execute","outputs":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"owners","type":"address[]"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}]

60806040523480156200001157600080fd5b50604051620012d3380380620012d3833981810160405260208110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b838201915060208201858111156200006f57600080fd5b82518660208202830111640100000000821117156200008d57600080fd5b8083526020830192505050908051906020019060200280838360005b83811015620000c6578082015181840152602081019050620000a9565b50505050905001604052505050600a815111156200014c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f43616e6e6f742068617665206d6f7265207468616e203130206f776e6572732e81525060200191505060405180910390fd5b805160031115620001a9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180620012826025913960400191505060405180910390fd5b600080905060008090505b8251811015620002e8578173ffffffffffffffffffffffffffffffffffffffff16838281518110620001e257fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161162000258576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180620012a7602c913960400191505060405180910390fd5b60018060008584815181106200026a57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550828181518110620002d057fe5b602002602001015191508080600101915050620001b4565b508160029080519060200190620003019291906200030a565b505050620003df565b82805482825590600052602060002090810192821562000386579160200282015b82811115620003855782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906200032b565b5b50905062000395919062000399565b5090565b620003dc91905b80821115620003d857600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101620003a0565b5090565b90565b610e9380620003ef6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063a0e67e2b1161005b578063a0e67e2b146102ab578063d087d2881461030a578063e75235b814610328578063eeb4bafe1461034657610088565b8063084490b91461008d57806316ad95421461014e5780632f54bf6e146101985780633a6cd7f2146101f4575b600080fd5b610138600480360360808110156100a357600080fd5b81019080803590602001906401000000008111156100c057600080fd5b8201836020820111156100d257600080fd5b803590602001918460018302840111640100000000831117156100f457600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291905050506104c2565b6040518082815260200191505060405180910390f35b61015661051f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101da600480360360208110156101ae57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610536565b604051808215151515815260200191505060405180910390f35b6102956004803603606081101561020a57600080fd5b810190808035906020019064010000000081111561022757600080fd5b82018360208201111561023957600080fd5b8035906020019184600183028401116401000000008311171561025b57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061058c565b6040518082815260200191505060405180910390f35b6102b36105ea565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156102f65780820151818401526020810190506102db565b505050509050019250505060405180910390f35b610312610678565b6040518082815260200191505060405180910390f35b610330610681565b6040518082815260200191505060405180910390f35b61043c6004803603608081101561035c57600080fd5b810190808035906020019064010000000081111561037957600080fd5b82018360208201111561038b57600080fd5b803590602001918460018302840111640100000000831117156103ad57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156103f857600080fd5b82018360208201111561040a57600080fd5b8035906020019184600183028401116401000000008311171561042c57600080fd5b909192939192939050505061068a565b604051808315151515815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561048657808201518184015260208101905061046b565b50505050905090810190601f1680156104b35780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b600061051486868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050858585610a80565b905095945050505050565b60006e8a10a98969a000d1c0aba90f858d6a905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60006105e085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508484600054610a80565b9050949350505050565b6060600280548060200260200160405190810160405280929190818152602001828054801561066e57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610624575b5050505050905090565b60008054905090565b60006003905090565b600060603373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614806106f45750600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b610749576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180610e276038913960400191505060405180910390fd5b60006107a56107a08a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508989600054610a80565b610b7c565b905060606107f78287878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050610bd4565b90506003815114610853576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610dad6023913960400191505060405180910390fd5b600080905060008090505b82518110156109d6576001600084838151811061087757fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661091c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180610dfd602a913960400191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1683828151811061093f57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16116109b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180610dd0602d913960400191505060405180910390fd5b8281815181106109bf57fe5b60200260200101519150808060010191505061085e565b5060008081548092919060010191905055506e8a10a98969a000d1c0aba90f858d6a73ffffffffffffffffffffffffffffffffffffffff16888c8c60405180838380828437808301925050509250505060006040518083038160008787f1925050503d8060008114610a64576040519150601f19603f3d011682016040523d82523d6000602084013e610a69565b606091505b508095508196505050505050965096945050505050565b60003082858588604051602001808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140183815260200182805190602001908083835b60208310610b335780518252602082019150602081019050602083039250610b10565b6001836020036101000a03801982511681845116808217855250505050505090500195505050505050604051602081830303815290604052805190602001209050949350505050565b60008160405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c01828152602001915050604051602081830303815290604052805190602001209050919050565b606060006041835181610be357fe5b0614610c21576000604051908082528060200260200182016040528015610c195781602001602082028038833980820191505090505b509050610da6565b6041825181610c2c57fe5b04604051908082528060200260200182016040528015610c5b5781602001602082028038833980820191505090505b50905060008060008060008090505b8551811015610da05760418102870194506020850151935060408501519250606085015160001a91507f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08360001c1115610cc357610d93565b601b8260ff1614158015610cdb5750601c8260ff1614155b15610ce557610d93565b60018883868660405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610d42573d6000803e3d6000fd5b50505060206040510351868281518110610d5857fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b8080600101915050610c6a565b50505050505b9291505056fe546f74616c207369676e657273206d75737420657175616c207468726573686f6c642e5369676e657220616464726573736573206d757374206265207374726963746c7920696e6372656173696e672e5369676e617475726520646f6573206e6f7420636f72726573706f6e6420746f20616e206f776e65722e4d7573742063616c6c2066726f6d20746865206578656375746f72206163636f756e74206966206f6e65206973207370656369666965642ea265627a7a7231582016708ccf3d3fe847a31bdde4013bb18f0d71bda5e25122fac0e197ba0d5cdca664736f6c634300050b00325468726573686f6c642063616e6e6f742065786365656420746f74616c206f776e6572732e4f776e657220616464726573736573206d757374206265207374726963746c7920696e6372656173696e672e0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000500000000000000000000000097659dab3885339dca94a1ffa319cfb2f1b18d8c000000000000000000000000a7e36e02a59c5ddd85c1a30177091db9790a2b29000000000000000000000000c1fb35ed6440c5a99ec6372a20541f92812a4b30000000000000000000000000e1ee55f4c4959bd680aa397c29bf3e957f744044000000000000000000000000f70f7983f765f72c05f725f506d3f1197704e128

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100885760003560e01c8063a0e67e2b1161005b578063a0e67e2b146102ab578063d087d2881461030a578063e75235b814610328578063eeb4bafe1461034657610088565b8063084490b91461008d57806316ad95421461014e5780632f54bf6e146101985780633a6cd7f2146101f4575b600080fd5b610138600480360360808110156100a357600080fd5b81019080803590602001906401000000008111156100c057600080fd5b8201836020820111156100d257600080fd5b803590602001918460018302840111640100000000831117156100f457600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291905050506104c2565b6040518082815260200191505060405180910390f35b61015661051f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101da600480360360208110156101ae57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610536565b604051808215151515815260200191505060405180910390f35b6102956004803603606081101561020a57600080fd5b810190808035906020019064010000000081111561022757600080fd5b82018360208201111561023957600080fd5b8035906020019184600183028401116401000000008311171561025b57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061058c565b6040518082815260200191505060405180910390f35b6102b36105ea565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156102f65780820151818401526020810190506102db565b505050509050019250505060405180910390f35b610312610678565b6040518082815260200191505060405180910390f35b610330610681565b6040518082815260200191505060405180910390f35b61043c6004803603608081101561035c57600080fd5b810190808035906020019064010000000081111561037957600080fd5b82018360208201111561038b57600080fd5b803590602001918460018302840111640100000000831117156103ad57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156103f857600080fd5b82018360208201111561040a57600080fd5b8035906020019184600183028401116401000000008311171561042c57600080fd5b909192939192939050505061068a565b604051808315151515815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561048657808201518184015260208101905061046b565b50505050905090810190601f1680156104b35780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b600061051486868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050858585610a80565b905095945050505050565b60006e8a10a98969a000d1c0aba90f858d6a905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60006105e085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508484600054610a80565b9050949350505050565b6060600280548060200260200160405190810160405280929190818152602001828054801561066e57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610624575b5050505050905090565b60008054905090565b60006003905090565b600060603373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614806106f45750600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b610749576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180610e276038913960400191505060405180910390fd5b60006107a56107a08a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508989600054610a80565b610b7c565b905060606107f78287878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050610bd4565b90506003815114610853576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610dad6023913960400191505060405180910390fd5b600080905060008090505b82518110156109d6576001600084838151811061087757fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661091c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180610dfd602a913960400191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1683828151811061093f57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16116109b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180610dd0602d913960400191505060405180910390fd5b8281815181106109bf57fe5b60200260200101519150808060010191505061085e565b5060008081548092919060010191905055506e8a10a98969a000d1c0aba90f858d6a73ffffffffffffffffffffffffffffffffffffffff16888c8c60405180838380828437808301925050509250505060006040518083038160008787f1925050503d8060008114610a64576040519150601f19603f3d011682016040523d82523d6000602084013e610a69565b606091505b508095508196505050505050965096945050505050565b60003082858588604051602001808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140183815260200182805190602001908083835b60208310610b335780518252602082019150602081019050602083039250610b10565b6001836020036101000a03801982511681845116808217855250505050505090500195505050505050604051602081830303815290604052805190602001209050949350505050565b60008160405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c01828152602001915050604051602081830303815290604052805190602001209050919050565b606060006041835181610be357fe5b0614610c21576000604051908082528060200260200182016040528015610c195781602001602082028038833980820191505090505b509050610da6565b6041825181610c2c57fe5b04604051908082528060200260200182016040528015610c5b5781602001602082028038833980820191505090505b50905060008060008060008090505b8551811015610da05760418102870194506020850151935060408501519250606085015160001a91507f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08360001c1115610cc357610d93565b601b8260ff1614158015610cdb5750601c8260ff1614155b15610ce557610d93565b60018883868660405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610d42573d6000803e3d6000fd5b50505060206040510351868281518110610d5857fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b8080600101915050610c6a565b50505050505b9291505056fe546f74616c207369676e657273206d75737420657175616c207468726573686f6c642e5369676e657220616464726573736573206d757374206265207374726963746c7920696e6372656173696e672e5369676e617475726520646f6573206e6f7420636f72726573706f6e6420746f20616e206f776e65722e4d7573742063616c6c2066726f6d20746865206578656375746f72206163636f756e74206966206f6e65206973207370656369666965642ea265627a7a7231582016708ccf3d3fe847a31bdde4013bb18f0d71bda5e25122fac0e197ba0d5cdca664736f6c634300050b0032

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

0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000500000000000000000000000097659dab3885339dca94a1ffa319cfb2f1b18d8c000000000000000000000000a7e36e02a59c5ddd85c1a30177091db9790a2b29000000000000000000000000c1fb35ed6440c5a99ec6372a20541f92812a4b30000000000000000000000000e1ee55f4c4959bd680aa397c29bf3e957f744044000000000000000000000000f70f7983f765f72c05f725f506d3f1197704e128

-----Decoded View---------------
Arg [0] : owners (address[]): 0x97659DAB3885339dCa94A1Ffa319CFB2f1B18d8c,0xA7E36e02a59c5Ddd85c1A30177091dB9790a2b29,0xC1fB35ED6440C5A99EC6372A20541F92812A4b30,0xe1Ee55F4c4959bD680AA397C29bf3e957F744044,0xF70F7983f765F72c05F725F506D3F1197704e128

-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [2] : 00000000000000000000000097659dab3885339dca94a1ffa319cfb2f1b18d8c
Arg [3] : 000000000000000000000000a7e36e02a59c5ddd85c1a30177091db9790a2b29
Arg [4] : 000000000000000000000000c1fb35ed6440c5a99ec6372a20541f92812a4b30
Arg [5] : 000000000000000000000000e1ee55f4c4959bd680aa397c29bf3e957f744044
Arg [6] : 000000000000000000000000f70f7983f765f72c05f725f506d3f1197704e128


Deployed Bytecode Sourcemap

780:6121:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;780:6121:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2167:212;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;2167:212:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;2167:212:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2167:212:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2167:212:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2800:109;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2580:107;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2580:107:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1964:197;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1964:197:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;1964:197:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1964:197:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1964:197:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2476:98;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2476:98:0;;;;;;;;;;;;;;;;;2385:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2693:101;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2992:1322;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;2992:1322:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;2992:1322:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2992:1322:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2992:1322:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;2992:1322:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2992:1322:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2992:1322:0;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2992:1322:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2167:212;2304:12;2332:41;2341:4;;2332:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;2332:41:0;;;;;;2347:8;2357;2367:5;2332:8;:41::i;:::-;2325:48;;2167:212;;;;;;;:::o;2800:109::-;2849:19;1196:42;2877:26;;2800:109;:::o;2580:107::-;2637:10;2664:8;:17;2673:7;2664:17;;;;;;;;;;;;;;;;;;;;;;;;;2656:25;;2580:107;;;:::o;1964:197::-;2085:12;2113:42;2122:4;;2113:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;2113:42:0;;;;;;2128:8;2138;2148:6;;2113:8;:42::i;:::-;2106:49;;1964:197;;;;;;:::o;2476:98::-;2520:23;2561:7;2552:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2476:98;:::o;2385:85::-;2428:13;2458:6;;2450:14;;2385:85;:::o;2693:101::-;2740:17;1370:1;2766:22;;2693:101;:::o;2992:1322::-;3136:12;3150:23;3210:10;3198:22;;:8;:22;;;:48;;;;3244:1;3224:22;;:8;:22;;;3198:48;3182:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3403:12;3418:81;3450:42;3459:4;;3450:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;3450:42:0;;;;;;3465:8;3475;3485:6;;3450:8;:42::i;:::-;3418:23;:81::i;:::-;3403:96;;3566:24;3593:31;3607:4;3613:10;;3593:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;3593:31:0;;;;;;:13;:31::i;:::-;3566:58;;1370:1;3641:7;:14;:28;3633:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3793:19;3823:1;3793:32;;3875:9;3887:1;3875:13;;3870:297;3894:7;:14;3890:1;:18;3870:297;;;3942:8;:20;3951:7;3959:1;3951:10;;;;;;;;;;;;;;3942:20;;;;;;;;;;;;;;;;;;;;;;;;;3924:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4057:11;4044:24;;:7;4052:1;4044:10;;;;;;;;;;;;;;:24;;;4026:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4149:7;4157:1;4149:10;;;;;;;;;;;;;;4135:24;;3910:3;;;;;;;3870:297;;;;4232:6;;:8;;;;;;;;;;;;;1196:42;4271:17;;4293:8;4303:4;;4271:37;;;;;30:3:-1;22:6;14;1:33;57:3;49:6;45:16;35:26;;4271:37:0;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4247:61:0;;;;;;;;2992:1322;;;;;;;;;;;;:::o;4320:337::-;4456:12;4605:4;4612:5;4619:8;4629;4639:4;4580:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4580:64:0;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;4580:64:0;;;4562:89;;;;;;4555:96;;4320:337;;;;;;:::o;6730:168::-;6800:7;6886:4;6833:58;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6833:58:0;;;6823:69;;;;;;6816:76;;6730:168;;;:::o;5429:1295::-;5529:24;5655:1;5649:2;5629:10;:17;:22;;;;;;:27;5625:73;;5688:1;5674:16;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;5674:16:0;;;;5667:23;;;;5625:73;5824:2;5804:10;:17;:22;;;;;;5790:37;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;5790:37:0;;;;5780:47;;5910:25;5942:9;5958;5974:7;5995:9;6007:1;5995:13;;5990:729;6014:7;:14;6010:1;:18;5990:729;;;6108:2;6105:1;6101:10;6089;6085:27;6064:48;;6156:2;6137:17;6133:26;6127:33;6122:38;;6204:2;6185:17;6181:26;6175:33;6170:38;;6260:2;6241:17;6237:26;6231:33;6228:1;6223:42;6218:47;;6435:66;6430:1;6422:10;;:79;6418:114;;;6514:8;;6418:114;6551:2;6546:1;:7;;;;:18;;;;;6562:2;6557:1;:7;;;;6546:18;6542:53;;;6577:8;;6542:53;6687:24;6697:4;6703:1;6706;6709;6687:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6687:24:0;;;;;;;;6674:7;6682:1;6674:10;;;;;;;;;;;;;:37;;;;;;;;;;;5990:729;6030:3;;;;;;;5990:729;;;;5429:1295;;;;;;;;;:::o

Swarm Source

bzzr://16708ccf3d3fe847a31bdde4013bb18f0d71bda5e25122fac0e197ba0d5cdca6

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

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.