ETH Price: $2,633.04 (+7.54%)
Gas: 2 Gwei

Contract

0xF250B78f47c2dbd8e2DFb8BA3f33685160130172
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve Investor...75455292019-04-11 7:48:211947 days ago1554968901IN
0xF250B78f...160130172
0 ETH0.017033653
Approve Investor...75454772019-04-11 7:38:041947 days ago1554968284IN
0xF250B78f...160130172
0 ETH0.017056335
Approve Investor...75454572019-04-11 7:33:181947 days ago1554967998IN
0xF250B78f...160130172
0 ETH0.0344126610
Approve Investor...74123162019-03-21 13:07:111967 days ago1553173631IN
0xF250B78f...160130172
0 ETH0.0004920916
Approve Investor...74123082019-03-21 13:05:201967 days ago1553173520IN
0xF250B78f...160130172
0 ETH0.0267231220
Approve Investor...74123042019-03-21 13:04:001967 days ago1553173440IN
0xF250B78f...160130172
0 ETH0.0433674820
Approve Investor...74122902019-03-21 13:01:231967 days ago1553173283IN
0xF250B78f...160130172
0 ETH0.0261997212
Approve Investor...74122832019-03-21 12:59:311967 days ago1553173171IN
0xF250B78f...160130172
0 ETH0.015492277
Approve Investor...74122542019-03-21 12:52:571967 days ago1553172777IN
0xF250B78f...160130172
0 ETH0.017705458
Disapprove Inves...73997022019-03-19 14:12:221969 days ago1553004742IN
0xF250B78f...160130172
0 ETH0.0036094711
Disapprove Inves...73996692019-03-19 14:02:581969 days ago1553004178IN
0xF250B78f...160130172
0 ETH0.0027487510
Disapprove Inves...73996672019-03-19 14:02:141969 days ago1553004134IN
0xF250B78f...160130172
0 ETH0.0027468310
Disapprove Inves...73996592019-03-19 13:59:461969 days ago1553003986IN
0xF250B78f...160130172
0 ETH0.0027468310
Disapprove Inves...73996542019-03-19 13:58:381969 days ago1553003918IN
0xF250B78f...160130172
0 ETH0.0027471510
Disapprove Inves...73996492019-03-19 13:58:001969 days ago1553003880IN
0xF250B78f...160130172
0 ETH0.0027481110
Disapprove Inves...73996372019-03-19 13:54:561969 days ago1553003696IN
0xF250B78f...160130172
0 ETH0.0027461910
Disapprove Inves...73996312019-03-19 13:54:031969 days ago1553003643IN
0xF250B78f...160130172
0 ETH0.0027461910
Approve Investor...73930842019-03-18 13:17:401970 days ago1552915060IN
0xF250B78f...160130172
0 ETH0.010207746
Approve Investor...73930762019-03-18 13:15:101970 days ago1552914910IN
0xF250B78f...160130172
0 ETH0.007255995
Approve Investor...73930732019-03-18 13:13:551970 days ago1552914835IN
0xF250B78f...160130172
0 ETH0.008164886
Approve Investor...73930622019-03-18 13:11:331970 days ago1552914693IN
0xF250B78f...160130172
0 ETH0.008667626.3
Approve Investor...73930562019-03-18 13:10:141970 days ago1552914614IN
0xF250B78f...160130172
0 ETH0.008951536.3
Approve Investor...73930402019-03-18 13:07:511970 days ago1552914471IN
0xF250B78f...160130172
0 ETH0.008858246.3
Approve Investor...73930312019-03-18 13:05:281970 days ago1552914328IN
0xF250B78f...160130172
0 ETH0.008761326.3
Approve Investor...73930132019-03-18 13:01:401970 days ago1552914100IN
0xF250B78f...160130172
0 ETH0.009233826.3
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:
Whitelisting

Compiler Version
v0.5.0+commit.1d4f565a

Optimization Enabled:
Yes with 200 runs

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

pragma solidity ^0.5.0;

contract Ownable {
    address private _owner;

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

    /**
     * @dev The Ownable constructor sets the original `owner` of the contract to the sender
     * account.
     */
    constructor () internal {
        _owner = msg.sender;
        emit OwnershipTransferred(address(0), _owner);
    }

    /**
     * @return the address of the owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

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

    /**
     * @return true if `msg.sender` is the owner of the contract.
     */
    function isOwner() public view returns (bool) {
        return 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 OwnershipTransferred(_owner, address(0));
        _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;
    }
}


contract Whitelisting is Ownable {
    mapping(address => bool) public isInvestorApproved;
    mapping(address => bool) public isInvestorPaymentApproved;

    event Approved(address indexed investor);
    event Disapproved(address indexed investor);

    event PaymentApproved(address indexed investor);
    event PaymentDisapproved(address indexed investor);


    //Token distribution approval (KYC results)
    function approveInvestor(address toApprove) public onlyOwner {
        isInvestorApproved[toApprove] = true;
        emit Approved(toApprove);
    }

    function approveInvestorsInBulk(address[] calldata toApprove) external onlyOwner {
        for (uint i=0; i<toApprove.length; i++) {
            isInvestorApproved[toApprove[i]] = true;
            emit Approved(toApprove[i]);
        }
    }

    function disapproveInvestor(address toDisapprove) public onlyOwner {
        delete isInvestorApproved[toDisapprove];
        emit Disapproved(toDisapprove);
    }

    function disapproveInvestorsInBulk(address[] calldata toDisapprove) external onlyOwner {
        for (uint i=0; i<toDisapprove.length; i++) {
            delete isInvestorApproved[toDisapprove[i]];
            emit Disapproved(toDisapprove[i]);
        }
    }

    //Investor payment approval (For private sale)
    function approveInvestorPayment(address toApprove) public onlyOwner {
        isInvestorPaymentApproved[toApprove] = true;
        emit PaymentApproved(toApprove);
    }

    function approveInvestorsPaymentInBulk(address[] calldata toApprove) external onlyOwner {
        for (uint i=0; i<toApprove.length; i++) {
            isInvestorPaymentApproved[toApprove[i]] = true;
            emit PaymentApproved(toApprove[i]);
        }
    }

    function disapproveInvestorapproveInvestorPayment(address toDisapprove) public onlyOwner {
        delete isInvestorPaymentApproved[toDisapprove];
        emit PaymentDisapproved(toDisapprove);
    }

    function disapproveInvestorsPaymentInBulk(address[] calldata toDisapprove) external onlyOwner {
        for (uint i=0; i<toDisapprove.length; i++) {
            delete isInvestorPaymentApproved[toDisapprove[i]];
            emit PaymentDisapproved(toDisapprove[i]);
        }
    }

}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"toDisapprove","type":"address"}],"name":"disapproveInvestorapproveInvestorPayment","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"toDisapprove","type":"address"}],"name":"disapproveInvestor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"toDisapprove","type":"address[]"}],"name":"disapproveInvestorsInBulk","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"toApprove","type":"address"}],"name":"approveInvestor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"isInvestorPaymentApproved","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"toApprove","type":"address[]"}],"name":"approveInvestorsPaymentInBulk","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":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"isInvestorApproved","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"toDisapprove","type":"address[]"}],"name":"disapproveInvestorsPaymentInBulk","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"toApprove","type":"address"}],"name":"approveInvestorPayment","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"toApprove","type":"address[]"}],"name":"approveInvestorsInBulk","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"investor","type":"address"}],"name":"Approved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"investor","type":"address"}],"name":"Disapproved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"investor","type":"address"}],"name":"PaymentApproved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"investor","type":"address"}],"name":"PaymentDisapproved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

6080604081905260008054600160a060020a0319163317808255600160a060020a0316917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3610a6d806100576000396000f3fe6080604052600436106100cf5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416632a6f519081146100d4578063675f818e146101095780636deb515d1461013c578063715018a6146101b95780637de14129146101ce5780638480760c1461020157806386b06ffc146102485780638da5cb5b146102c55780638f32d59b146102f6578063a59af3401461030b578063bbf38f391461033e578063e2a345dd146103bb578063f2fde38b146103ee578063f79acad314610421575b600080fd5b3480156100e057600080fd5b50610107600480360360208110156100f757600080fd5b5035600160a060020a031661049e565b005b34801561011557600080fd5b506101076004803603602081101561012c57600080fd5b5035600160a060020a03166104fa565b34801561014857600080fd5b506101076004803603602081101561015f57600080fd5b81019060208101813564010000000081111561017a57600080fd5b82018360208201111561018c57600080fd5b803590602001918460208302840111640100000000831117156101ae57600080fd5b509092509050610556565b3480156101c557600080fd5b5061010761060c565b3480156101da57600080fd5b50610107600480360360208110156101f157600080fd5b5035600160a060020a0316610676565b34801561020d57600080fd5b506102346004803603602081101561022457600080fd5b5035600160a060020a03166106d8565b604080519115158252519081900360200190f35b34801561025457600080fd5b506101076004803603602081101561026b57600080fd5b81019060208101813564010000000081111561028657600080fd5b82018360208201111561029857600080fd5b803590602001918460208302840111640100000000831117156102ba57600080fd5b5090925090506106ed565b3480156102d157600080fd5b506102da6107a7565b60408051600160a060020a039092168252519081900360200190f35b34801561030257600080fd5b506102346107b6565b34801561031757600080fd5b506102346004803603602081101561032e57600080fd5b5035600160a060020a03166107c7565b34801561034a57600080fd5b506101076004803603602081101561036157600080fd5b81019060208101813564010000000081111561037c57600080fd5b82018360208201111561038e57600080fd5b803590602001918460208302840111640100000000831117156103b057600080fd5b5090925090506107dc565b3480156103c757600080fd5b50610107600480360360208110156103de57600080fd5b5035600160a060020a031661088d565b3480156103fa57600080fd5b506101076004803603602081101561041157600080fd5b5035600160a060020a03166108ec565b34801561042d57600080fd5b506101076004803603602081101561044457600080fd5b81019060208101813564010000000081111561045f57600080fd5b82018360208201111561047157600080fd5b8035906020019184602083028401116401000000008311171561049357600080fd5b50909250905061090b565b6104a66107b6565b15156104b157600080fd5b600160a060020a038116600081815260026020526040808220805460ff19169055517f72255a7685a1eeb84a8f5d77708c8cc2f3a132d566883ea83a639b741f9c0e799190a250565b6105026107b6565b151561050d57600080fd5b600160a060020a038116600081815260016020526040808220805460ff19169055517f397e549cd5c892fc5a94e2bdf95875a84a2298a36b47123ad898f3ca3af496e89190a250565b61055e6107b6565b151561056957600080fd5b60005b81811015610607576001600084848481811061058457fe5b60209081029290920135600160a060020a0316835250810191909152604001600020805460ff191690558282828181106105ba57fe5b90506020020135600160a060020a0316600160a060020a03167f397e549cd5c892fc5a94e2bdf95875a84a2298a36b47123ad898f3ca3af496e860405160405180910390a260010161056c565b505050565b6106146107b6565b151561061f57600080fd5b60008054604051600160a060020a03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b61067e6107b6565b151561068957600080fd5b600160a060020a0381166000818152600160208190526040808320805460ff1916909217909155517f5d91bd0cecc45fef102af61de92c5462fadc884a5ce9d21c15e8a85198f2349e9190a250565b60026020526000908152604090205460ff1681565b6106f56107b6565b151561070057600080fd5b60005b818110156106075760016002600085858581811061071d57fe5b60209081029290920135600160a060020a0316835250810191909152604001600020805460ff191691151591909117905582828281811061075a57fe5b90506020020135600160a060020a0316600160a060020a03167ff38e0318caadc897596ef4a074a12afea95ec5bce6c8c27e54120e5b6da26fb860405160405180910390a2600101610703565b600054600160a060020a031690565b600054600160a060020a0316331490565b60016020526000908152604090205460ff1681565b6107e46107b6565b15156107ef57600080fd5b60005b81811015610607576002600084848481811061080a57fe5b60209081029290920135600160a060020a0316835250810191909152604001600020805460ff1916905582828281811061084057fe5b90506020020135600160a060020a0316600160a060020a03167f72255a7685a1eeb84a8f5d77708c8cc2f3a132d566883ea83a639b741f9c0e7960405160405180910390a26001016107f2565b6108956107b6565b15156108a057600080fd5b600160a060020a038116600081815260026020526040808220805460ff19166001179055517ff38e0318caadc897596ef4a074a12afea95ec5bce6c8c27e54120e5b6da26fb89190a250565b6108f46107b6565b15156108ff57600080fd5b610908816109c4565b50565b6109136107b6565b151561091e57600080fd5b60005b8181101561060757600180600085858581811061093a57fe5b60209081029290920135600160a060020a0316835250810191909152604001600020805460ff191691151591909117905582828281811061097757fe5b90506020020135600160a060020a0316600160a060020a03167f5d91bd0cecc45fef102af61de92c5462fadc884a5ce9d21c15e8a85198f2349e60405160405180910390a2600101610921565b600160a060020a03811615156109d957600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039290921691909117905556fea165627a7a7230582045257738498e5d1e6dee894930fac1df6eb977676e2890c55fa7fc1913b27fb30029

Deployed Bytecode

0x6080604052600436106100cf5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416632a6f519081146100d4578063675f818e146101095780636deb515d1461013c578063715018a6146101b95780637de14129146101ce5780638480760c1461020157806386b06ffc146102485780638da5cb5b146102c55780638f32d59b146102f6578063a59af3401461030b578063bbf38f391461033e578063e2a345dd146103bb578063f2fde38b146103ee578063f79acad314610421575b600080fd5b3480156100e057600080fd5b50610107600480360360208110156100f757600080fd5b5035600160a060020a031661049e565b005b34801561011557600080fd5b506101076004803603602081101561012c57600080fd5b5035600160a060020a03166104fa565b34801561014857600080fd5b506101076004803603602081101561015f57600080fd5b81019060208101813564010000000081111561017a57600080fd5b82018360208201111561018c57600080fd5b803590602001918460208302840111640100000000831117156101ae57600080fd5b509092509050610556565b3480156101c557600080fd5b5061010761060c565b3480156101da57600080fd5b50610107600480360360208110156101f157600080fd5b5035600160a060020a0316610676565b34801561020d57600080fd5b506102346004803603602081101561022457600080fd5b5035600160a060020a03166106d8565b604080519115158252519081900360200190f35b34801561025457600080fd5b506101076004803603602081101561026b57600080fd5b81019060208101813564010000000081111561028657600080fd5b82018360208201111561029857600080fd5b803590602001918460208302840111640100000000831117156102ba57600080fd5b5090925090506106ed565b3480156102d157600080fd5b506102da6107a7565b60408051600160a060020a039092168252519081900360200190f35b34801561030257600080fd5b506102346107b6565b34801561031757600080fd5b506102346004803603602081101561032e57600080fd5b5035600160a060020a03166107c7565b34801561034a57600080fd5b506101076004803603602081101561036157600080fd5b81019060208101813564010000000081111561037c57600080fd5b82018360208201111561038e57600080fd5b803590602001918460208302840111640100000000831117156103b057600080fd5b5090925090506107dc565b3480156103c757600080fd5b50610107600480360360208110156103de57600080fd5b5035600160a060020a031661088d565b3480156103fa57600080fd5b506101076004803603602081101561041157600080fd5b5035600160a060020a03166108ec565b34801561042d57600080fd5b506101076004803603602081101561044457600080fd5b81019060208101813564010000000081111561045f57600080fd5b82018360208201111561047157600080fd5b8035906020019184602083028401116401000000008311171561049357600080fd5b50909250905061090b565b6104a66107b6565b15156104b157600080fd5b600160a060020a038116600081815260026020526040808220805460ff19169055517f72255a7685a1eeb84a8f5d77708c8cc2f3a132d566883ea83a639b741f9c0e799190a250565b6105026107b6565b151561050d57600080fd5b600160a060020a038116600081815260016020526040808220805460ff19169055517f397e549cd5c892fc5a94e2bdf95875a84a2298a36b47123ad898f3ca3af496e89190a250565b61055e6107b6565b151561056957600080fd5b60005b81811015610607576001600084848481811061058457fe5b60209081029290920135600160a060020a0316835250810191909152604001600020805460ff191690558282828181106105ba57fe5b90506020020135600160a060020a0316600160a060020a03167f397e549cd5c892fc5a94e2bdf95875a84a2298a36b47123ad898f3ca3af496e860405160405180910390a260010161056c565b505050565b6106146107b6565b151561061f57600080fd5b60008054604051600160a060020a03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b61067e6107b6565b151561068957600080fd5b600160a060020a0381166000818152600160208190526040808320805460ff1916909217909155517f5d91bd0cecc45fef102af61de92c5462fadc884a5ce9d21c15e8a85198f2349e9190a250565b60026020526000908152604090205460ff1681565b6106f56107b6565b151561070057600080fd5b60005b818110156106075760016002600085858581811061071d57fe5b60209081029290920135600160a060020a0316835250810191909152604001600020805460ff191691151591909117905582828281811061075a57fe5b90506020020135600160a060020a0316600160a060020a03167ff38e0318caadc897596ef4a074a12afea95ec5bce6c8c27e54120e5b6da26fb860405160405180910390a2600101610703565b600054600160a060020a031690565b600054600160a060020a0316331490565b60016020526000908152604090205460ff1681565b6107e46107b6565b15156107ef57600080fd5b60005b81811015610607576002600084848481811061080a57fe5b60209081029290920135600160a060020a0316835250810191909152604001600020805460ff1916905582828281811061084057fe5b90506020020135600160a060020a0316600160a060020a03167f72255a7685a1eeb84a8f5d77708c8cc2f3a132d566883ea83a639b741f9c0e7960405160405180910390a26001016107f2565b6108956107b6565b15156108a057600080fd5b600160a060020a038116600081815260026020526040808220805460ff19166001179055517ff38e0318caadc897596ef4a074a12afea95ec5bce6c8c27e54120e5b6da26fb89190a250565b6108f46107b6565b15156108ff57600080fd5b610908816109c4565b50565b6109136107b6565b151561091e57600080fd5b60005b8181101561060757600180600085858581811061093a57fe5b60209081029290920135600160a060020a0316835250810191909152604001600020805460ff191691151591909117905582828281811061097757fe5b90506020020135600160a060020a0316600160a060020a03167f5d91bd0cecc45fef102af61de92c5462fadc884a5ce9d21c15e8a85198f2349e60405160405180910390a2600101610921565b600160a060020a03811615156109d957600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039290921691909117905556fea165627a7a7230582045257738498e5d1e6dee894930fac1df6eb977676e2890c55fa7fc1913b27fb30029

Swarm Source

bzzr://45257738498e5d1e6dee894930fac1df6eb977676e2890c55fa7fc1913b27fb3

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.