ETH Price: $2,607.88 (-0.65%)

Contract

0xc9e8045616ABbdf535Fda1Fdbfe04b4F42101b2E
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Register50146582018-02-02 1:52:582433 days ago1517536378IN
0xc9e80456...F42101b2E
0 ETH0.0014180331
Register50146422018-02-02 1:49:062433 days ago1517536146IN
0xc9e80456...F42101b2E
0 ETH0.0014180331
Register50146282018-02-02 1:46:022433 days ago1517535962IN
0xc9e80456...F42101b2E
0 ETH0.0014180331
Register50146192018-02-02 1:43:572433 days ago1517535837IN
0xc9e80456...F42101b2E
0 ETH0.0014180331
Register50145982018-02-02 1:40:342433 days ago1517535634IN
0xc9e80456...F42101b2E
0 ETH0.0014180331
Register50145912018-02-02 1:39:232433 days ago1517535563IN
0xc9e80456...F42101b2E
0 ETH0.0014180331
Register50145622018-02-02 1:28:552433 days ago1517534935IN
0xc9e80456...F42101b2E
0 ETH0.0014180331
Register50145402018-02-02 1:23:432433 days ago1517534623IN
0xc9e80456...F42101b2E
0 ETH0.0014180331
Register50145242018-02-02 1:20:222433 days ago1517534422IN
0xc9e80456...F42101b2E
0 ETH0.0007479631
Register50145242018-02-02 1:20:222433 days ago1517534422IN
0xc9e80456...F42101b2E
0 ETH0.0007479631
Register50145232018-02-02 1:20:172433 days ago1517534417IN
0xc9e80456...F42101b2E
0 ETH0.0014180331
Register50145202018-02-02 1:18:512433 days ago1517534331IN
0xc9e80456...F42101b2E
0 ETH0.0014180331
Register50145172018-02-02 1:17:492433 days ago1517534269IN
0xc9e80456...F42101b2E
0 ETH0.0014180331
Register50145112018-02-02 1:15:522433 days ago1517534152IN
0xc9e80456...F42101b2E
0 ETH0.0014180331
Register50145112018-02-02 1:15:522433 days ago1517534152IN
0xc9e80456...F42101b2E
0 ETH0.0014180331
Register50145022018-02-02 1:12:342433 days ago1517533954IN
0xc9e80456...F42101b2E
0 ETH0.0014180331
Register50144992018-02-02 1:11:582433 days ago1517533918IN
0xc9e80456...F42101b2E
0 ETH0.0014180331
Register50144982018-02-02 1:11:252433 days ago1517533885IN
0xc9e80456...F42101b2E
0 ETH0.0014180331
Register50144962018-02-02 1:11:102433 days ago1517533870IN
0xc9e80456...F42101b2E
0 ETH0.0014180331
Register50144962018-02-02 1:11:102433 days ago1517533870IN
0xc9e80456...F42101b2E
0 ETH0.0007479631
Register50144952018-02-02 1:10:452433 days ago1517533845IN
0xc9e80456...F42101b2E
0 ETH0.0014180331
Register50144862018-02-02 1:09:442433 days ago1517533784IN
0xc9e80456...F42101b2E
0 ETH0.0007459831
Register50144842018-02-02 1:08:472433 days ago1517533727IN
0xc9e80456...F42101b2E
0 ETH0.0014160431
Register50144622018-02-02 1:03:262433 days ago1517533406IN
0xc9e80456...F42101b2E
0 ETH0.0014180331
Register50144342018-02-02 0:56:402433 days ago1517533000IN
0xc9e80456...F42101b2E
0 ETH0.0014180331
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:
KYC

Compiler Version
v0.4.18+commit.9cf6e910

Optimization Enabled:
Yes with 200 runs

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

pragma solidity ^0.4.18;


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

}




/**
 * @title KYC
 * @dev KYC contract handles the white list for ASTCrowdsale contract
 * Only accounts registered in KYC contract can buy AST token.
 * Admins can register account, and the reason why
 */
contract KYC is Ownable {
  // check the address is registered for token sale
  // first boolean is true if presale else false
  // second boolean is true if registered else false
  mapping (address => mapping (bool => bool)) public registeredAddress;

  // check the address is admin of kyc contract
  mapping (address => bool) public admin;

  event Registered(address indexed _addr);
  event Unregistered(address indexed _addr);
  event SetAdmin(address indexed _addr);

  /**
   * @dev check whether the address is registered for token sale or not.
   * @param _addr address
   * @param _isPresale bool Whether the address is registered to presale or mainsale
   */
  modifier onlyRegistered(address _addr, bool _isPresale) {
    require(registeredAddress[_addr][_isPresale]);
    _;
  }

  /**
   * @dev check whether the msg.sender is admin or not
   */
  modifier onlyAdmin() {
    require(admin[msg.sender]);
    _;
  }

  function KYC() public {
    admin[msg.sender] = true;
  }

  /**
   * @dev set new admin as admin of KYC contract
   * @param _addr address The address to set as admin of KYC contract
   */
  function setAdmin(address _addr, bool _value)
    public
    onlyOwner
    returns (bool)
  {
    require(_addr != address(0));
    require(admin[_addr] == !_value);

    admin[_addr] = _value;

    SetAdmin(_addr);

    return true;
  }

  /**
   * @dev check the address is register
   * @param _addr address The address to check
   * @param _isPresale bool Whether the address is registered to presale or mainsale
   */
  function isRegistered(address _addr, bool _isPresale)
    public
    view
    returns (bool)
  {
    return registeredAddress[_addr][_isPresale];
  }

  /**
   * @dev register the address for token sale
   * @param _addr address The address to register for token sale
   * @param _isPresale bool Whether register to presale or mainsale
   */
  function register(address _addr, bool _isPresale)
    public
    onlyAdmin
  {
    require(_addr != address(0) && registeredAddress[_addr][_isPresale] == false);

    registeredAddress[_addr][_isPresale] = true;

    Registered(_addr);
  }

  /**
   * @dev register the addresses for token sale
   * @param _addrs address[] The addresses to register for token sale
   * @param _isPresale bool Whether register to presale or mainsale
   */
  function registerByList(address[] _addrs, bool _isPresale)
    public
    onlyAdmin
  {
    for(uint256 i = 0; i < _addrs.length; i++) {
      register(_addrs[i], _isPresale);
    }
  }

  /**
   * @dev unregister the registered address
   * @param _addr address The address to unregister for token sale
   * @param _isPresale bool Whether unregister to presale or mainsale
   */
  function unregister(address _addr, bool _isPresale)
    public
    onlyAdmin
    onlyRegistered(_addr, _isPresale)
  {
    registeredAddress[_addr][_isPresale] = false;

    Unregistered(_addr);
  }

  /**
   * @dev unregister the registered addresses
   * @param _addrs address[] The addresses to unregister for token sale
   * @param _isPresale bool Whether unregister to presale or mainsale
   */
  function unregisterByList(address[] _addrs, bool _isPresale)
    public
    onlyAdmin
  {
    for(uint256 i = 0; i < _addrs.length; i++) {
      unregister(_addrs[i], _isPresale);
    }
  }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"_addrs","type":"address[]"},{"name":"_isPresale","type":"bool"}],"name":"registerByList","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"},{"name":"_value","type":"bool"}],"name":"setAdmin","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_addrs","type":"address[]"},{"name":"_isPresale","type":"bool"}],"name":"unregisterByList","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"admin","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"},{"name":"_isPresale","type":"bool"}],"name":"register","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"},{"name":"_isPresale","type":"bool"}],"name":"isRegistered","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"},{"name":"_isPresale","type":"bool"}],"name":"unregister","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"bool"}],"name":"registeredAddress","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_addr","type":"address"}],"name":"Registered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_addr","type":"address"}],"name":"Unregistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_addr","type":"address"}],"name":"SetAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

6060604052341561000f57600080fd5b60008054600160a060020a033316600160a060020a0319909116811782558152600260205260409020805460ff191660011790556106bd806100526000396000f3006060604052600436106100a35763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416632ce6826981146100a85780634b0bddd2146100fd578063502be15e1461013557806363a846f8146101885780638da5cb5b146101a7578063ab01b469146101d6578063d5ce91fd146101fa578063d897db241461021e578063f2fde38b14610242578063fa6ec54714610261575b600080fd5b34156100b357600080fd5b6100fb60046024813581810190830135806020818102016040519081016040528093929190818152602001838360200280828437509496505050509135151591506102859050565b005b341561010857600080fd5b610121600160a060020a036004351660243515156102e5565b604051901515815260200160405180910390f35b341561014057600080fd5b6100fb600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284375094965050505091351515915061039a9050565b341561019357600080fd5b610121600160a060020a03600435166103f5565b34156101b257600080fd5b6101ba61040a565b604051600160a060020a03909116815260200160405180910390f35b34156101e157600080fd5b6100fb600160a060020a03600435166024351515610419565b341561020557600080fd5b610121600160a060020a036004351660243515156104ea565b341561022957600080fd5b6100fb600160a060020a03600435166024351515610517565b341561024d57600080fd5b6100fb600160a060020a03600435166105d6565b341561026c57600080fd5b610121600160a060020a03600435166024351515610671565b600160a060020a03331660009081526002602052604081205460ff1615156102ac57600080fd5b5060005b82518110156102e0576102d88382815181106102c857fe5b9060200190602002015183610419565b6001016102b0565b505050565b6000805433600160a060020a0390811691161461030157600080fd5b600160a060020a038316151561031657600080fd5b600160a060020a03831660009081526002602052604090205460ff16151582151461034057600080fd5b600160a060020a03831660008181526002602052604090819020805460ff19168515151790557f5a272403b402d892977df56625f4164ccaf70ca3863991c43ecfe76a6905b0a1905160405180910390a250600192915050565b600160a060020a03331660009081526002602052604081205460ff1615156103c157600080fd5b5060005b82518110156102e0576103ed8382815181106103dd57fe5b9060200190602002015183610517565b6001016103c5565b60026020526000908152604090205460ff1681565b600054600160a060020a031681565b600160a060020a03331660009081526002602052604090205460ff16151561044057600080fd5b600160a060020a0382161580159061047e5750600160a060020a0382166000908152600160209081526040808320841515845290915290205460ff16155b151561048957600080fd5b600160a060020a0382166000818152600160208181526040808420861515855290915291829020805460ff191690911790557f2d3734a8e47ac8316e500ac231c90a6e1848ca2285f40d07eaa52005e4b3a0e9905160405180910390a25050565b600160a060020a039190911660009081526001602090815260408083209315158352929052205460ff1690565b600160a060020a03331660009081526002602052604090205460ff16151561053e57600080fd5b600160a060020a038216600090815260016020908152604080832084151584529091529020548290829060ff16151561057657600080fd5b600160a060020a0384166000818152600160209081526040808320871515845290915290819020805460ff191690557f75cd6de711483e11488a1cd9b66172abccb9e5c19572f92015a7880f0c8c0edc905160405180910390a250505050565b60005433600160a060020a039081169116146105f157600080fd5b600160a060020a038116151561060657600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600160209081526000928352604080842090915290825290205460ff16815600a165627a7a72305820612017060cde5871981bc346dc0b240b03fae7945f72c308b5e4820d698b22d70029

Deployed Bytecode

0x6060604052600436106100a35763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416632ce6826981146100a85780634b0bddd2146100fd578063502be15e1461013557806363a846f8146101885780638da5cb5b146101a7578063ab01b469146101d6578063d5ce91fd146101fa578063d897db241461021e578063f2fde38b14610242578063fa6ec54714610261575b600080fd5b34156100b357600080fd5b6100fb60046024813581810190830135806020818102016040519081016040528093929190818152602001838360200280828437509496505050509135151591506102859050565b005b341561010857600080fd5b610121600160a060020a036004351660243515156102e5565b604051901515815260200160405180910390f35b341561014057600080fd5b6100fb600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284375094965050505091351515915061039a9050565b341561019357600080fd5b610121600160a060020a03600435166103f5565b34156101b257600080fd5b6101ba61040a565b604051600160a060020a03909116815260200160405180910390f35b34156101e157600080fd5b6100fb600160a060020a03600435166024351515610419565b341561020557600080fd5b610121600160a060020a036004351660243515156104ea565b341561022957600080fd5b6100fb600160a060020a03600435166024351515610517565b341561024d57600080fd5b6100fb600160a060020a03600435166105d6565b341561026c57600080fd5b610121600160a060020a03600435166024351515610671565b600160a060020a03331660009081526002602052604081205460ff1615156102ac57600080fd5b5060005b82518110156102e0576102d88382815181106102c857fe5b9060200190602002015183610419565b6001016102b0565b505050565b6000805433600160a060020a0390811691161461030157600080fd5b600160a060020a038316151561031657600080fd5b600160a060020a03831660009081526002602052604090205460ff16151582151461034057600080fd5b600160a060020a03831660008181526002602052604090819020805460ff19168515151790557f5a272403b402d892977df56625f4164ccaf70ca3863991c43ecfe76a6905b0a1905160405180910390a250600192915050565b600160a060020a03331660009081526002602052604081205460ff1615156103c157600080fd5b5060005b82518110156102e0576103ed8382815181106103dd57fe5b9060200190602002015183610517565b6001016103c5565b60026020526000908152604090205460ff1681565b600054600160a060020a031681565b600160a060020a03331660009081526002602052604090205460ff16151561044057600080fd5b600160a060020a0382161580159061047e5750600160a060020a0382166000908152600160209081526040808320841515845290915290205460ff16155b151561048957600080fd5b600160a060020a0382166000818152600160208181526040808420861515855290915291829020805460ff191690911790557f2d3734a8e47ac8316e500ac231c90a6e1848ca2285f40d07eaa52005e4b3a0e9905160405180910390a25050565b600160a060020a039190911660009081526001602090815260408083209315158352929052205460ff1690565b600160a060020a03331660009081526002602052604090205460ff16151561053e57600080fd5b600160a060020a038216600090815260016020908152604080832084151584529091529020548290829060ff16151561057657600080fd5b600160a060020a0384166000818152600160209081526040808320871515845290915290819020805460ff191690557f75cd6de711483e11488a1cd9b66172abccb9e5c19572f92015a7880f0c8c0edc905160405180910390a250505050565b60005433600160a060020a039081169116146105f157600080fd5b600160a060020a038116151561060657600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600160209081526000928352604080842090915290825290205460ff16815600a165627a7a72305820612017060cde5871981bc346dc0b240b03fae7945f72c308b5e4820d698b22d70029

Swarm Source

bzzr://612017060cde5871981bc346dc0b240b03fae7945f72c308b5e4820d698b22d7

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.