Source Code
Latest 20 from a total of 20 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Set Many Whiteli... | 6014883 | 2805 days ago | IN | 0 ETH | 0.00425554 | ||||
| Set Many Whiteli... | 6012383 | 2806 days ago | IN | 0 ETH | 0.00061533 | ||||
| Set Many Whiteli... | 6012380 | 2806 days ago | IN | 0 ETH | 0.00237388 | ||||
| Set Many Whiteli... | 6012367 | 2806 days ago | IN | 0 ETH | 0.00237427 | ||||
| Set Many Whiteli... | 5863533 | 2831 days ago | IN | 0 ETH | 0.00056805 | ||||
| Set Many Whiteli... | 5856984 | 2832 days ago | IN | 0 ETH | 0.00080563 | ||||
| Set Many Whiteli... | 5854315 | 2833 days ago | IN | 0 ETH | 0.00016517 | ||||
| Set Many Whiteli... | 5852885 | 2833 days ago | IN | 0 ETH | 0.00104076 | ||||
| Set Many Whiteli... | 5851474 | 2833 days ago | IN | 0 ETH | 0.00028008 | ||||
| Set Whitelist | 5851393 | 2833 days ago | IN | 0 ETH | 0.00015192 | ||||
| Set Many Whiteli... | 5851282 | 2833 days ago | IN | 0 ETH | 0.0125341 | ||||
| Set Many Whiteli... | 5848764 | 2834 days ago | IN | 0 ETH | 0.00285106 | ||||
| Set Many Whiteli... | 5848763 | 2834 days ago | IN | 0 ETH | 0.00477593 | ||||
| Set Many Whiteli... | 5848757 | 2834 days ago | IN | 0 ETH | 0.00477586 | ||||
| Set Many Whiteli... | 5848756 | 2834 days ago | IN | 0 ETH | 0.00477567 | ||||
| Set Many Whiteli... | 5848753 | 2834 days ago | IN | 0 ETH | 0.00477561 | ||||
| Set Many Whiteli... | 5848739 | 2834 days ago | IN | 0 ETH | 0.00475222 | ||||
| Set Many Whiteli... | 5848713 | 2834 days ago | IN | 0 ETH | 0.001066 | ||||
| Set Many Whiteli... | 5848704 | 2834 days ago | IN | 0 ETH | 0.0044063 | ||||
| Set Many Whiteli... | 5848696 | 2834 days ago | IN | 0 ETH | 0.00439695 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
EthealWhitelist
Compiler Version
v0.4.19+commit.c4cbbb05
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/**
*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
- No Contract Security Audit Submitted- Submit Audit Here
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"}]Contract Creation Code
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
Swarm Source
bzzr://3da7800610911808c6b80500b6f00e2671d9ff5a66bdec04a8f5b0087f251832
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
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.