ETH Price: $2,468.09 (+5.84%)

Contract

0x3e8640574aa764763291eD733672D3A105107ac5
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Claim Ownership69389192018-12-23 14:46:192097 days ago1545576379IN
Wrapped BTC: Members
0 ETH0.0004908222.48695069
Claim Ownership69279422018-12-21 17:50:572099 days ago1545414657IN
Wrapped BTC: Members
0 ETH0.000894941
Add Merchant67823952018-11-27 13:26:252123 days ago1543325185IN
Wrapped BTC: Members
0 ETH0.0009122410
Add Merchant67823862018-11-27 13:25:082123 days ago1543325108IN
Wrapped BTC: Members
0 ETH0.0009122410
Set Custodian67823732018-11-27 13:23:112123 days ago1543324991IN
Wrapped BTC: Members
0 ETH0.0004491710
Transfer Ownersh...67822982018-11-27 13:07:522123 days ago1543324072IN
Wrapped BTC: Members
0 ETH0.0004378810
Claim Ownership67664192018-11-24 22:17:132125 days ago1543097833IN
Wrapped BTC: Members
0 ETH0.0001936810
Transfer Ownersh...67663022018-11-24 21:50:422125 days ago1543096242IN
Wrapped BTC: Members
0 ETH0.0004378810
0x6080604067662882018-11-24 21:46:402125 days ago1543096000IN
 Create: Members
0 ETH0.0088800110

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Members

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-11-24
*/

pragma solidity 0.4.24;

// File: openzeppelin-solidity/contracts/ownership/Ownable.sol

/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {
  address public owner;


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


  /**
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  constructor() public {
    owner = msg.sender;
  }

  /**
   * @dev Throws if called by any account other than the owner.
   */
  modifier onlyOwner() {
    require(msg.sender == owner);
    _;
  }

  /**
   * @dev Allows the current owner to relinquish control of the contract.
   * @notice Renouncing to ownership will leave the contract without an owner.
   * It will not be possible to call the functions with the `onlyOwner`
   * modifier anymore.
   */
  function renounceOwnership() public onlyOwner {
    emit OwnershipRenounced(owner);
    owner = address(0);
  }

  /**
   * @dev Allows the current owner to transfer control of the contract to a newOwner.
   * @param _newOwner The address to transfer ownership to.
   */
  function transferOwnership(address _newOwner) public onlyOwner {
    _transferOwnership(_newOwner);
  }

  /**
   * @dev Transfers control of the contract to a newOwner.
   * @param _newOwner The address to transfer ownership to.
   */
  function _transferOwnership(address _newOwner) internal {
    require(_newOwner != address(0));
    emit OwnershipTransferred(owner, _newOwner);
    owner = _newOwner;
  }
}

// File: openzeppelin-solidity/contracts/ownership/Claimable.sol

/**
 * @title Claimable
 * @dev Extension for the Ownable contract, where the ownership needs to be claimed.
 * This allows the new owner to accept the transfer.
 */
contract Claimable is Ownable {
  address public pendingOwner;

  /**
   * @dev Modifier throws if called by any account other than the pendingOwner.
   */
  modifier onlyPendingOwner() {
    require(msg.sender == pendingOwner);
    _;
  }

  /**
   * @dev Allows the current owner to set the pendingOwner address.
   * @param newOwner The address to transfer ownership to.
   */
  function transferOwnership(address newOwner) public onlyOwner {
    pendingOwner = newOwner;
  }

  /**
   * @dev Allows the pendingOwner address to finalize the transfer.
   */
  function claimOwnership() public onlyPendingOwner {
    emit OwnershipTransferred(owner, pendingOwner);
    owner = pendingOwner;
    pendingOwner = address(0);
  }
}

// File: openzeppelin-solidity/contracts/token/ERC20/ERC20Basic.sol

/**
 * @title ERC20Basic
 * @dev Simpler version of ERC20 interface
 * See https://github.com/ethereum/EIPs/issues/179
 */
contract ERC20Basic {
  function totalSupply() public view returns (uint256);
  function balanceOf(address _who) public view returns (uint256);
  function transfer(address _to, uint256 _value) public returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
}

// File: openzeppelin-solidity/contracts/token/ERC20/ERC20.sol

/**
 * @title ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
contract ERC20 is ERC20Basic {
  function allowance(address _owner, address _spender)
    public view returns (uint256);

  function transferFrom(address _from, address _to, uint256 _value)
    public returns (bool);

  function approve(address _spender, uint256 _value) public returns (bool);
  event Approval(
    address indexed owner,
    address indexed spender,
    uint256 value
  );
}

// File: openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol

/**
 * @title SafeERC20
 * @dev Wrappers around ERC20 operations that throw on failure.
 * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,
 * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
 */
library SafeERC20 {
  function safeTransfer(
    ERC20Basic _token,
    address _to,
    uint256 _value
  )
    internal
  {
    require(_token.transfer(_to, _value));
  }

  function safeTransferFrom(
    ERC20 _token,
    address _from,
    address _to,
    uint256 _value
  )
    internal
  {
    require(_token.transferFrom(_from, _to, _value));
  }

  function safeApprove(
    ERC20 _token,
    address _spender,
    uint256 _value
  )
    internal
  {
    require(_token.approve(_spender, _value));
  }
}

// File: openzeppelin-solidity/contracts/ownership/CanReclaimToken.sol

/**
 * @title Contracts that should be able to recover tokens
 * @author SylTi
 * @dev This allow a contract to recover any ERC20 token received in a contract by transferring the balance to the contract owner.
 * This will prevent any accidental loss of tokens.
 */
contract CanReclaimToken is Ownable {
  using SafeERC20 for ERC20Basic;

  /**
   * @dev Reclaim all ERC20Basic compatible tokens
   * @param _token ERC20Basic The address of the token contract
   */
  function reclaimToken(ERC20Basic _token) external onlyOwner {
    uint256 balance = _token.balanceOf(this);
    _token.safeTransfer(owner, balance);
  }

}

// File: contracts/utils/OwnableContract.sol

// empty block is used as this contract just inherits others.
contract OwnableContract is CanReclaimToken, Claimable { } /* solhint-disable-line no-empty-blocks */

// File: contracts/utils/IndexedMapping.sol

library IndexedMapping {

    struct Data {
        mapping(address=>bool) valueExists;
        mapping(address=>uint) valueIndex;
        address[] valueList;
    }

    function add(Data storage self, address val) internal returns (bool) {
        if (exists(self, val)) return false;

        self.valueExists[val] = true;
        self.valueIndex[val] = self.valueList.push(val) - 1;
        return true;
    }

    function remove(Data storage self, address val) internal returns (bool) {
        uint index;
        address lastVal;

        if (!exists(self, val)) return false;

        index = self.valueIndex[val];
        lastVal = self.valueList[self.valueList.length - 1];

        // replace value with last value
        self.valueList[index] = lastVal;
        self.valueIndex[lastVal] = index;
        self.valueList.length--;

        // remove value
        delete self.valueExists[val];
        delete self.valueIndex[val];

        return true;
    }

    function exists(Data storage self, address val) internal view returns (bool) {
        return self.valueExists[val];
    }

    function getValue(Data storage self, uint index) internal view returns (address) {
        return self.valueList[index];
    }

    function getValueList(Data storage self) internal view returns (address[]) {
        return self.valueList;
    }
}

// File: contracts/factory/MembersInterface.sol

interface MembersInterface {
    function setCustodian(address _custodian) external returns (bool);
    function addMerchant(address merchant) external returns (bool);
    function removeMerchant(address merchant) external returns (bool);
    function isCustodian(address addr) external view returns (bool);
    function isMerchant(address addr) external view returns (bool);
}

// File: contracts/factory/Members.sol

contract Members is MembersInterface, OwnableContract {

    address public custodian;

    using IndexedMapping for IndexedMapping.Data;
    IndexedMapping.Data internal merchants;

    constructor(address _owner) public {
        require(_owner != address(0), "invalid _owner address");
        owner = _owner;
    }

    event CustodianSet(address indexed custodian);

    function setCustodian(address _custodian) external onlyOwner returns (bool) {
        require(_custodian != address(0), "invalid custodian address");
        custodian = _custodian;

        emit CustodianSet(_custodian);
        return true;
    }

    event MerchantAdd(address indexed merchant);

    function addMerchant(address merchant) external onlyOwner returns (bool) {
        require(merchant != address(0), "invalid merchant address");
        require(merchants.add(merchant), "merchant add failed");

        emit MerchantAdd(merchant);
        return true;
    } 

    event MerchantRemove(address indexed merchant);

    function removeMerchant(address merchant) external onlyOwner returns (bool) {
        require(merchant != address(0), "invalid merchant address");
        require(merchants.remove(merchant), "merchant remove failed");

        emit MerchantRemove(merchant);
        return true;
    }

    function isCustodian(address addr) external view returns (bool) {
        return (addr == custodian);
    }

    function isMerchant(address addr) external view returns (bool) {
        return merchants.exists(addr);
    }

    function getMerchant(uint index) external view returns (address) {
        return merchants.getValue(index);
    }

    function getMerchants() external view returns (address[]) {
        return merchants.getValueList();
    }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"merchant","type":"address"}],"name":"removeMerchant","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"}],"name":"reclaimToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"isMerchant","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"isCustodian","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"custodian","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_custodian","type":"address"}],"name":"setCustodian","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"claimOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"getMerchant","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"merchant","type":"address"}],"name":"addMerchant","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getMerchants","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_owner","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"custodian","type":"address"}],"name":"CustodianSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"merchant","type":"address"}],"name":"MerchantAdd","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"merchant","type":"address"}],"name":"MerchantRemove","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

608060405234801561001057600080fd5b50604051602080610ca5833981016040525160008054600160a060020a03191633179055600160a060020a03811615156100ab57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f696e76616c6964205f6f776e6572206164647265737300000000000000000000604482015290519081900360640190fd5b60008054600160a060020a03909216600160a060020a0319909216919091179055610bca806100db6000396000f3006080604052600436106100cf5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663133adab681146100d457806317ffc320146101095780631a2f71671461012c57806335c80c8c1461014d578063375b74c31461016e578063403f37311461019f5780634e71e0c8146101c05780635d32798a146101d5578063715018a6146101ed5780638da5cb5b14610202578063bf76c0ef14610217578063e2d1800f14610238578063e30c39781461029d578063f2fde38b146102b2575b600080fd5b3480156100e057600080fd5b506100f5600160a060020a03600435166102d3565b604080519115158252519081900360200190f35b34801561011557600080fd5b5061012a600160a060020a03600435166103ee565b005b34801561013857600080fd5b506100f5600160a060020a03600435166104ba565b34801561015957600080fd5b506100f5600160a060020a03600435166104d3565b34801561017a57600080fd5b506101836104e7565b60408051600160a060020a039092168252519081900360200190f35b3480156101ab57600080fd5b506100f5600160a060020a03600435166104f6565b3480156101cc57600080fd5b5061012a6105ca565b3480156101e157600080fd5b50610183600435610652565b3480156101f957600080fd5b5061012a610665565b34801561020e57600080fd5b506101836106d1565b34801561022357600080fd5b506100f5600160a060020a03600435166106e0565b34801561024457600080fd5b5061024d6107fb565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610289578181015183820152602001610271565b505050509050019250505060405180910390f35b3480156102a957600080fd5b5061018361080d565b3480156102be57600080fd5b5061012a600160a060020a036004351661081c565b60008054600160a060020a031633146102eb57600080fd5b600160a060020a038216151561034b576040805160e560020a62461bcd02815260206004820152601860248201527f696e76616c6964206d65726368616e7420616464726573730000000000000000604482015290519081900360640190fd5b61035c60038363ffffffff61086216565b15156103b2576040805160e560020a62461bcd02815260206004820152601660248201527f6d65726368616e742072656d6f7665206661696c656400000000000000000000604482015290519081900360640190fd5b604051600160a060020a038316907f992dc0f9ccd9e3a061bd113c6caf19dceacce1f3e2ec016588b03ade3649d00490600090a2506001919050565b60008054600160a060020a0316331461040657600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a038416916370a082319160248083019260209291908290030181600087803b15801561046757600080fd5b505af115801561047b573d6000803e3d6000fd5b505050506040513d602081101561049157600080fd5b50516000549091506104b690600160a060020a0384811691168363ffffffff61097616565b5050565b60006104cd60038363ffffffff610a2e16565b92915050565b600254600160a060020a0390811691161490565b600254600160a060020a031681565b60008054600160a060020a0316331461050e57600080fd5b600160a060020a038216151561056e576040805160e560020a62461bcd02815260206004820152601960248201527f696e76616c696420637573746f6469616e206164647265737300000000000000604482015290519081900360640190fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0384169081179091556040517fb88c20a211c5d7677ba2a26c317d8ae6b25aa492016dc8ceca2469761d063d8090600090a2506001919050565b600154600160a060020a031633146105e157600080fd5b60015460008054604051600160a060020a0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600180546000805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03841617909155169055565b60006104cd60038363ffffffff610a4d16565b600054600160a060020a0316331461067c57600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600054600160a060020a031681565b60008054600160a060020a031633146106f857600080fd5b600160a060020a0382161515610758576040805160e560020a62461bcd02815260206004820152601860248201527f696e76616c6964206d65726368616e7420616464726573730000000000000000604482015290519081900360640190fd5b61076960038363ffffffff610a7c16565b15156107bf576040805160e560020a62461bcd02815260206004820152601360248201527f6d65726368616e7420616464206661696c656400000000000000000000000000604482015290519081900360640190fd5b604051600160a060020a038316907fc596bdf76682c6315371c70f872bf03746834f9dd5d02793d07de0d5e8f4015590600090a2506001919050565b60606108076003610afb565b90505b90565b600154600160a060020a031681565b600054600160a060020a0316331461083357600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60008060006108718585610a2e565b1515610880576000925061096e565b600160a060020a03841660009081526001860160205260409020546002860180549193509060001981019081106108b357fe5b600091825260209091200154600286018054600160a060020a0390921692508291849081106108de57fe5b6000918252602080832091909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03948516179055918316815260018701909152604090208290556002850180549061093b906000198301610b61565b50600160a060020a038416600090815260208681526040808320805460ff19169055600180890190925282209190915592505b505092915050565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b1580156109f257600080fd5b505af1158015610a06573d6000803e3d6000fd5b505050506040513d6020811015610a1c57600080fd5b50511515610a2957600080fd5b505050565b600160a060020a03166000908152602091909152604090205460ff1690565b60008260020182815481101515610a6057fe5b600091825260209091200154600160a060020a03169392505050565b6000610a888383610a2e565b15610a95575060006104cd565b50600160a060020a0316600081815260208381526040808320805460ff1916600190811790915560028601805480830182559085528385208101805473ffffffffffffffffffffffffffffffffffffffff19168717905594845294850190915290205590565b606081600201805480602002602001604051908101604052809291908181526020018280548015610b5557602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610b37575b50505050509050919050565b815481835581811115610a2957600083815260209020610a2991810190830161080a91905b80821115610b9a5760008155600101610b86565b50905600a165627a7a7230582033456616b5216df619b7f682177f328d3eaee7dd2d0311229e961a367dcf3cc200290000000000000000000000008b41783ad99fcbeb8d575fa7a7b5a04fa0b8d80b

Deployed Bytecode

0x6080604052600436106100cf5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663133adab681146100d457806317ffc320146101095780631a2f71671461012c57806335c80c8c1461014d578063375b74c31461016e578063403f37311461019f5780634e71e0c8146101c05780635d32798a146101d5578063715018a6146101ed5780638da5cb5b14610202578063bf76c0ef14610217578063e2d1800f14610238578063e30c39781461029d578063f2fde38b146102b2575b600080fd5b3480156100e057600080fd5b506100f5600160a060020a03600435166102d3565b604080519115158252519081900360200190f35b34801561011557600080fd5b5061012a600160a060020a03600435166103ee565b005b34801561013857600080fd5b506100f5600160a060020a03600435166104ba565b34801561015957600080fd5b506100f5600160a060020a03600435166104d3565b34801561017a57600080fd5b506101836104e7565b60408051600160a060020a039092168252519081900360200190f35b3480156101ab57600080fd5b506100f5600160a060020a03600435166104f6565b3480156101cc57600080fd5b5061012a6105ca565b3480156101e157600080fd5b50610183600435610652565b3480156101f957600080fd5b5061012a610665565b34801561020e57600080fd5b506101836106d1565b34801561022357600080fd5b506100f5600160a060020a03600435166106e0565b34801561024457600080fd5b5061024d6107fb565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610289578181015183820152602001610271565b505050509050019250505060405180910390f35b3480156102a957600080fd5b5061018361080d565b3480156102be57600080fd5b5061012a600160a060020a036004351661081c565b60008054600160a060020a031633146102eb57600080fd5b600160a060020a038216151561034b576040805160e560020a62461bcd02815260206004820152601860248201527f696e76616c6964206d65726368616e7420616464726573730000000000000000604482015290519081900360640190fd5b61035c60038363ffffffff61086216565b15156103b2576040805160e560020a62461bcd02815260206004820152601660248201527f6d65726368616e742072656d6f7665206661696c656400000000000000000000604482015290519081900360640190fd5b604051600160a060020a038316907f992dc0f9ccd9e3a061bd113c6caf19dceacce1f3e2ec016588b03ade3649d00490600090a2506001919050565b60008054600160a060020a0316331461040657600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a038416916370a082319160248083019260209291908290030181600087803b15801561046757600080fd5b505af115801561047b573d6000803e3d6000fd5b505050506040513d602081101561049157600080fd5b50516000549091506104b690600160a060020a0384811691168363ffffffff61097616565b5050565b60006104cd60038363ffffffff610a2e16565b92915050565b600254600160a060020a0390811691161490565b600254600160a060020a031681565b60008054600160a060020a0316331461050e57600080fd5b600160a060020a038216151561056e576040805160e560020a62461bcd02815260206004820152601960248201527f696e76616c696420637573746f6469616e206164647265737300000000000000604482015290519081900360640190fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0384169081179091556040517fb88c20a211c5d7677ba2a26c317d8ae6b25aa492016dc8ceca2469761d063d8090600090a2506001919050565b600154600160a060020a031633146105e157600080fd5b60015460008054604051600160a060020a0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600180546000805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03841617909155169055565b60006104cd60038363ffffffff610a4d16565b600054600160a060020a0316331461067c57600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600054600160a060020a031681565b60008054600160a060020a031633146106f857600080fd5b600160a060020a0382161515610758576040805160e560020a62461bcd02815260206004820152601860248201527f696e76616c6964206d65726368616e7420616464726573730000000000000000604482015290519081900360640190fd5b61076960038363ffffffff610a7c16565b15156107bf576040805160e560020a62461bcd02815260206004820152601360248201527f6d65726368616e7420616464206661696c656400000000000000000000000000604482015290519081900360640190fd5b604051600160a060020a038316907fc596bdf76682c6315371c70f872bf03746834f9dd5d02793d07de0d5e8f4015590600090a2506001919050565b60606108076003610afb565b90505b90565b600154600160a060020a031681565b600054600160a060020a0316331461083357600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60008060006108718585610a2e565b1515610880576000925061096e565b600160a060020a03841660009081526001860160205260409020546002860180549193509060001981019081106108b357fe5b600091825260209091200154600286018054600160a060020a0390921692508291849081106108de57fe5b6000918252602080832091909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03948516179055918316815260018701909152604090208290556002850180549061093b906000198301610b61565b50600160a060020a038416600090815260208681526040808320805460ff19169055600180890190925282209190915592505b505092915050565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b1580156109f257600080fd5b505af1158015610a06573d6000803e3d6000fd5b505050506040513d6020811015610a1c57600080fd5b50511515610a2957600080fd5b505050565b600160a060020a03166000908152602091909152604090205460ff1690565b60008260020182815481101515610a6057fe5b600091825260209091200154600160a060020a03169392505050565b6000610a888383610a2e565b15610a95575060006104cd565b50600160a060020a0316600081815260208381526040808320805460ff1916600190811790915560028601805480830182559085528385208101805473ffffffffffffffffffffffffffffffffffffffff19168717905594845294850190915290205590565b606081600201805480602002602001604051908101604052809291908181526020018280548015610b5557602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610b37575b50505050509050919050565b815481835581811115610a2957600083815260209020610a2991810190830161080a91905b80821115610b9a5760008155600101610b86565b50905600a165627a7a7230582033456616b5216df619b7f682177f328d3eaee7dd2d0311229e961a367dcf3cc20029

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

0000000000000000000000008b41783ad99fcbeb8d575fa7a7b5a04fa0b8d80b

-----Decoded View---------------
Arg [0] : _owner (address): 0x8b41783AD99FCBeB8d575fA7A7b5a04fA0b8d80b

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000008b41783ad99fcbeb8d575fa7a7b5a04fa0b8d80b


Swarm Source

bzzr://33456616b5216df619b7f682177f328d3eaee7dd2d0311229e961a367dcf3cc2

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.