ETH Price: $2,003.68 (+0.29%)

Contract

0xDCDB78bA8D4C9EdDBE6798B8bB7D05ca52C3BE75
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Many Whiteli...60148832018-07-23 8:32:402806 days ago1532334760IN
0xDCDB78bA...a52C3BE75
0 ETH0.0042555418
Set Many Whiteli...60123832018-07-22 22:34:482806 days ago1532298888IN
0xDCDB78bA...a52C3BE75
0 ETH0.000615332
Set Many Whiteli...60123802018-07-22 22:34:132806 days ago1532298853IN
0xDCDB78bA...a52C3BE75
0 ETH0.002373882
Set Many Whiteli...60123672018-07-22 22:29:562806 days ago1532298596IN
0xDCDB78bA...a52C3BE75
0 ETH0.002374272
Set Many Whiteli...58635332018-06-27 13:48:002831 days ago1530107280IN
0xDCDB78bA...a52C3BE75
0 ETH0.000568052
Set Many Whiteli...58569842018-06-26 10:32:522832 days ago1530009172IN
0xDCDB78bA...a52C3BE75
0 ETH0.000805632
Set Many Whiteli...58543152018-06-25 23:10:372833 days ago1529968237IN
0xDCDB78bA...a52C3BE75
0 ETH0.000165171
Set Many Whiteli...58528852018-06-25 17:05:582833 days ago1529946358IN
0xDCDB78bA...a52C3BE75
0 ETH0.001040764
Set Many Whiteli...58514742018-06-25 11:12:452833 days ago1529925165IN
0xDCDB78bA...a52C3BE75
0 ETH0.000280084
Set Whitelist58513932018-06-25 10:56:042833 days ago1529924164IN
0xDCDB78bA...a52C3BE75
0 ETH0.000151925
Set Many Whiteli...58512822018-06-25 10:30:542833 days ago1529922654IN
0xDCDB78bA...a52C3BE75
0 ETH0.012534112
Set Many Whiteli...58487642018-06-24 23:44:002834 days ago1529883840IN
0xDCDB78bA...a52C3BE75
0 ETH0.002851061
Set Many Whiteli...58487632018-06-24 23:43:572834 days ago1529883837IN
0xDCDB78bA...a52C3BE75
0 ETH0.004775931
Set Many Whiteli...58487572018-06-24 23:42:322834 days ago1529883752IN
0xDCDB78bA...a52C3BE75
0 ETH0.004775861
Set Many Whiteli...58487562018-06-24 23:42:282834 days ago1529883748IN
0xDCDB78bA...a52C3BE75
0 ETH0.004775671
Set Many Whiteli...58487532018-06-24 23:41:572834 days ago1529883717IN
0xDCDB78bA...a52C3BE75
0 ETH0.004775611
Set Many Whiteli...58487392018-06-24 23:38:512834 days ago1529883531IN
0xDCDB78bA...a52C3BE75
0 ETH0.004752221
Set Many Whiteli...58487132018-06-24 23:32:102834 days ago1529883130IN
0xDCDB78bA...a52C3BE75
0 ETH0.0010661
Set Many Whiteli...58487042018-06-24 23:29:202834 days ago1529882960IN
0xDCDB78bA...a52C3BE75
0 ETH0.00440631
Set Many Whiteli...58486962018-06-24 23:27:382834 days ago1529882858IN
0xDCDB78bA...a52C3BE75
0 ETH0.004396951

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Recover60155542018-07-23 11:29:572805 days ago1532345397
0xDCDB78bA...a52C3BE75
0 ETH
Is Offchain Whit...60155542018-07-23 11:29:572805 days ago1532345397
0xDCDB78bA...a52C3BE75
0 ETH
Is Whitelisted60155542018-07-23 11:29:572805 days ago1532345397
0xDCDB78bA...a52C3BE75
0 ETH
Is Whitelisted60149212018-07-23 8:43:122806 days ago1532335392
0xDCDB78bA...a52C3BE75
0 ETH
Is Whitelisted60149212018-07-23 8:43:122806 days ago1532335392
0xDCDB78bA...a52C3BE75
0 ETH
Is Whitelisted60149212018-07-23 8:43:122806 days ago1532335392
0xDCDB78bA...a52C3BE75
0 ETH
Is Whitelisted60149212018-07-23 8:43:122806 days ago1532335392
0xDCDB78bA...a52C3BE75
0 ETH
Is Whitelisted60149212018-07-23 8:43:122806 days ago1532335392
0xDCDB78bA...a52C3BE75
0 ETH
Is Whitelisted60149212018-07-23 8:43:122806 days ago1532335392
0xDCDB78bA...a52C3BE75
0 ETH
Is Whitelisted60149212018-07-23 8:43:122806 days ago1532335392
0xDCDB78bA...a52C3BE75
0 ETH
Is Whitelisted60149212018-07-23 8:43:122806 days ago1532335392
0xDCDB78bA...a52C3BE75
0 ETH
Is Whitelisted60149212018-07-23 8:43:122806 days ago1532335392
0xDCDB78bA...a52C3BE75
0 ETH
Is Whitelisted60149212018-07-23 8:43:122806 days ago1532335392
0xDCDB78bA...a52C3BE75
0 ETH
Is Whitelisted60149212018-07-23 8:43:122806 days ago1532335392
0xDCDB78bA...a52C3BE75
0 ETH
Is Whitelisted60149212018-07-23 8:43:122806 days ago1532335392
0xDCDB78bA...a52C3BE75
0 ETH
Is Whitelisted60149022018-07-23 8:38:362806 days ago1532335116
0xDCDB78bA...a52C3BE75
0 ETH
Is Whitelisted60149002018-07-23 8:38:162806 days ago1532335096
0xDCDB78bA...a52C3BE75
0 ETH
Is Whitelisted60148972018-07-23 8:37:512806 days ago1532335071
0xDCDB78bA...a52C3BE75
0 ETH
Is Whitelisted60148972018-07-23 8:37:512806 days ago1532335071
0xDCDB78bA...a52C3BE75
0 ETH
Is Whitelisted60148952018-07-23 8:37:162806 days ago1532335036
0xDCDB78bA...a52C3BE75
0 ETH
Is Whitelisted60148882018-07-23 8:34:132806 days ago1532334853
0xDCDB78bA...a52C3BE75
0 ETH
Recover60147982018-07-23 8:14:292806 days ago1532333669
0xDCDB78bA...a52C3BE75
0 ETH
Is Offchain Whit...60147982018-07-23 8:14:292806 days ago1532333669
0xDCDB78bA...a52C3BE75
0 ETH
Is Whitelisted60147982018-07-23 8:14:292806 days ago1532333669
0xDCDB78bA...a52C3BE75
0 ETH
Recover60147302018-07-23 7:56:422806 days ago1532332602
0xDCDB78bA...a52C3BE75
0 ETH
View All Internal Transactions
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
EthealWhitelist

Compiler Version
v0.4.19+commit.c4cbbb05

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2018-03-29
*/

pragma solidity ^0.4.17;


/**
 * @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 OwnershipTransferred(address indexed previousOwner, address indexed newOwner);


  /**
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  function Ownable() {
    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 transfer control of the contract to a newOwner.
   * @param newOwner The address to transfer ownership to.
   */
  function transferOwnership(address newOwner) onlyOwner public {
    require(newOwner != address(0));
    OwnershipTransferred(owner, newOwner);
    owner = newOwner;
  }

}





/**
 * @title Eliptic curve signature operations
 *
 * @dev Based on https://gist.github.com/axic/5b33912c6f61ae6fd96d6c4a47afde6d
 */

library ECRecovery {

  /**
   * @dev Recover signer address from a message by using his signature
   * @param hash bytes32 message, the hash is the signed message. What is recovered is the signer address.
   * @param sig bytes signature, the signature is generated using web3.eth.sign()
   */
  function recover(bytes32 hash, bytes sig) public pure returns (address) {
    bytes32 r;
    bytes32 s;
    uint8 v;

    //Check the signature length
    if (sig.length != 65) {
      return (address(0));
    }

    // Divide the signature in r, s and v variables
    assembly {
      r := mload(add(sig, 32))
      s := mload(add(sig, 64))
      v := byte(0, mload(add(sig, 96)))
    }

    // Version of signature should be 27 or 28, but 0 and 1 are also possible versions
    if (v < 27) {
      v += 27;
    }

    // If the version is correct return the signer address
    if (v != 27 && v != 28) {
      return (address(0));
    } else {
      return ecrecover(hash, v, r, s);
    }
  }

}

/**
 * @title EthealWhitelist
 * @author thesved
 * @notice EthealWhitelist contract which handles KYC
 */
contract EthealWhitelist is Ownable {
    using ECRecovery for bytes32;

    // signer address for offchain whitelist signing
    address public signer;

    // storing whitelisted addresses
    mapping(address => bool) public isWhitelisted;

    event WhitelistSet(address indexed _address, bool _state);

    ////////////////
    // Constructor
    ////////////////
    function EthealWhitelist(address _signer) {
        require(_signer != address(0));

        signer = _signer;
    }

    /// @notice set signing address after deployment
    function setSigner(address _signer) public onlyOwner {
        require(_signer != address(0));

        signer = _signer;
    }

    ////////////////
    // Whitelisting: only owner
    ////////////////

    /// @notice Set whitelist state for an address.
    function setWhitelist(address _addr, bool _state) public onlyOwner {
        require(_addr != address(0));
        isWhitelisted[_addr] = _state;
        WhitelistSet(_addr, _state);
    }

    /// @notice Set whitelist state for multiple addresses
    function setManyWhitelist(address[] _addr, bool _state) public onlyOwner {
        for (uint256 i = 0; i < _addr.length; i++) {
            setWhitelist(_addr[i], _state);
        }
    }

    /// @notice offchain whitelist check
    function isOffchainWhitelisted(address _addr, bytes _sig) public view returns (bool) {
        bytes32 hash = keccak256("\x19Ethereum Signed Message:\n20",_addr);
        return hash.recover(_sig) == signer;
    }
}

Contract Security Audit

Contract ABI

API
[{"constant":true,"inputs":[],"name":"signer","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"isWhitelisted","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address[]"},{"name":"_state","type":"bool"}],"name":"setManyWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"},{"name":"_state","type":"bool"}],"name":"setWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_signer","type":"address"}],"name":"setSigner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"},{"name":"_sig","type":"bytes"}],"name":"isOffchainWhitelisted","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_signer","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_address","type":"address"},{"indexed":false,"name":"_state","type":"bool"}],"name":"WhitelistSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

6060604052341561000f57600080fd5b6040516020806106508339810160405280805160008054600160a060020a03191633600160a060020a039081169190911790915590925082161515905061005557600080fd5b60018054600160a060020a031916600160a060020a03929092169190911790556105cc806100846000396000f30060606040526004361061008d5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663238ac93381146100925780633af32abf146100c157806344539c72146100f457806353d6fd59146101495780636c19e7831461016d5780638da5cb5b1461018c578063a30bdea41461019f578063f2fde38b146101fe575b600080fd5b341561009d57600080fd5b6100a561021d565b604051600160a060020a03909116815260200160405180910390f35b34156100cc57600080fd5b6100e0600160a060020a036004351661022c565b604051901515815260200160405180910390f35b34156100ff57600080fd5b61014760046024813581810190830135806020818102016040519081016040528093929190818152602001838360200280828437509496505050509135151591506102419050565b005b341561015457600080fd5b610147600160a060020a03600435166024351515610296565b341561017857600080fd5b610147600160a060020a0360043516610325565b341561019757600080fd5b6100a5610384565b34156101aa57600080fd5b6100e060048035600160a060020a03169060446024803590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061039395505050505050565b341561020957600080fd5b610147600160a060020a0360043516610505565b600154600160a060020a031681565b60026020526000908152604090205460ff1681565b6000805433600160a060020a0390811691161461025d57600080fd5b5060005b82518110156102915761028983828151811061027957fe5b9060200190602002015183610296565b600101610261565b505050565b60005433600160a060020a039081169116146102b157600080fd5b600160a060020a03821615156102c657600080fd5b600160a060020a03821660008181526002602052604090819020805460ff19168415151790557f0aa5ec5ffdc7f6f9c4d0dded489d7450297155cb2f71cb771e02427f7dff4f5190839051901515815260200160405180910390a25050565b60005433600160a060020a0390811691161461034057600080fd5b600160a060020a038116151561035557600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600054600160a060020a031681565b600080836040517f19457468657265756d205369676e6564204d6573736167653a0a3230000000008152600160a060020a03919091166c0100000000000000000000000002601c820152603001604051908190039020600154909150600160a060020a0316737b63308d5c70f3d5eb73c697056fe8d527bd0b6a6319045a2583866000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff851602815260048101838152604060248301908152909160440183818151815260200191508051906020019080838360005b8381101561048d578082015183820152602001610475565b50505050905090810190601f1680156104ba5780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b15156104d757600080fd5b6102c65a03f415156104e857600080fd5b50505060405180519050600160a060020a03161491505092915050565b60005433600160a060020a0390811691161461052057600080fd5b600160a060020a038116151561053557600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555600a165627a7a723058203da7800610911808c6b80500b6f00e2671d9ff5a66bdec04a8f5b0087f25183200290000000000000000000000003a7689f3b1888207db65ad01966b263a1d6e1c6a

Deployed Bytecode

0x60606040526004361061008d5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663238ac93381146100925780633af32abf146100c157806344539c72146100f457806353d6fd59146101495780636c19e7831461016d5780638da5cb5b1461018c578063a30bdea41461019f578063f2fde38b146101fe575b600080fd5b341561009d57600080fd5b6100a561021d565b604051600160a060020a03909116815260200160405180910390f35b34156100cc57600080fd5b6100e0600160a060020a036004351661022c565b604051901515815260200160405180910390f35b34156100ff57600080fd5b61014760046024813581810190830135806020818102016040519081016040528093929190818152602001838360200280828437509496505050509135151591506102419050565b005b341561015457600080fd5b610147600160a060020a03600435166024351515610296565b341561017857600080fd5b610147600160a060020a0360043516610325565b341561019757600080fd5b6100a5610384565b34156101aa57600080fd5b6100e060048035600160a060020a03169060446024803590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061039395505050505050565b341561020957600080fd5b610147600160a060020a0360043516610505565b600154600160a060020a031681565b60026020526000908152604090205460ff1681565b6000805433600160a060020a0390811691161461025d57600080fd5b5060005b82518110156102915761028983828151811061027957fe5b9060200190602002015183610296565b600101610261565b505050565b60005433600160a060020a039081169116146102b157600080fd5b600160a060020a03821615156102c657600080fd5b600160a060020a03821660008181526002602052604090819020805460ff19168415151790557f0aa5ec5ffdc7f6f9c4d0dded489d7450297155cb2f71cb771e02427f7dff4f5190839051901515815260200160405180910390a25050565b60005433600160a060020a0390811691161461034057600080fd5b600160a060020a038116151561035557600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600054600160a060020a031681565b600080836040517f19457468657265756d205369676e6564204d6573736167653a0a3230000000008152600160a060020a03919091166c0100000000000000000000000002601c820152603001604051908190039020600154909150600160a060020a0316737b63308d5c70f3d5eb73c697056fe8d527bd0b6a6319045a2583866000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff851602815260048101838152604060248301908152909160440183818151815260200191508051906020019080838360005b8381101561048d578082015183820152602001610475565b50505050905090810190601f1680156104ba5780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b15156104d757600080fd5b6102c65a03f415156104e857600080fd5b50505060405180519050600160a060020a03161491505092915050565b60005433600160a060020a0390811691161461052057600080fd5b600160a060020a038116151561053557600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555600a165627a7a723058203da7800610911808c6b80500b6f00e2671d9ff5a66bdec04a8f5b0087f2518320029

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

0000000000000000000000003a7689f3b1888207db65ad01966b263a1d6e1c6a

-----Decoded View---------------
Arg [0] : _signer (address): 0x3a7689f3B1888207db65aD01966B263A1D6e1C6A

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000003a7689f3b1888207db65ad01966b263a1d6e1c6a


Libraries Used


Swarm Source

bzzr://3da7800610911808c6b80500b6f00e2671d9ff5a66bdec04a8f5b0087f251832

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
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.