Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
Sponsored
Latest 25 from a total of 126 transactions
| Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
|---|---|---|---|---|---|---|---|---|---|
| Withdraw | 15927517 | 193 days 3 hrs ago | IN | 0 ETH | 0.01607306 | ||||
| Withdraw | 15395487 | 270 days 14 hrs ago | IN | 0 ETH | 0.00061988 | ||||
| Withdraw | 15389522 | 271 days 13 hrs ago | IN | 0 ETH | 0.00051321 | ||||
| Transfer | 15111708 | 314 days 22 hrs ago | IN | 0.001 ETH | 0.00023443 | ||||
| Buy Tokens | 6469665 | 1686 days 13 hrs ago | IN | 0 ETH | 0.00040023 | ||||
| Buy Tokens | 6182725 | 1734 days 5 hrs ago | IN | 0 ETH | 0.00282239 | ||||
| Buy Tokens | 6034941 | 1759 days 4 hrs ago | IN | 0 ETH | 0.00028151 | ||||
| Buy Tokens | 6015007 | 1762 days 14 hrs ago | IN | 0 ETH | 0.0016891 | ||||
| Buy Tokens | 5944051 | 1774 days 13 hrs ago | IN | 0 ETH | 0.00103222 | ||||
| Buy Tokens | 5934502 | 1776 days 4 hrs ago | IN | 0 ETH | 0.00234597 | ||||
| Transfer | 5923122 | 1778 days 4 hrs ago | IN | 2.79 ETH | 0.00427425 | ||||
| Transfer | 5921332 | 1778 days 11 hrs ago | IN | 1.06318451 ETH | 0.00598395 | ||||
| Transfer | 5920657 | 1778 days 14 hrs ago | IN | 1 ETH | 0.00350488 | ||||
| Transfer | 5915662 | 1779 days 11 hrs ago | IN | 1.99148569 ETH | 0.0085143 | ||||
| Set Time | 5915522 | 1779 days 11 hrs ago | IN | 0 ETH | 0.0025144 | ||||
| Buy Tokens | 5868947 | 1787 days 11 hrs ago | IN | 0 ETH | 0.00045652 | ||||
| Buy Tokens | 5864420 | 1788 days 5 hrs ago | IN | 0 ETH | 0.00032843 | ||||
| Transfer | 5853119 | 1790 days 5 hrs ago | IN | 2.44 ETH | 0.00119679 | ||||
| Buy Tokens | 5835732 | 1793 days 4 hrs ago | IN | 0 ETH | 0.00028132 | ||||
| Buy Tokens | 5817075 | 1796 days 9 hrs ago | IN | 0 ETH | 0.00093839 | ||||
| Buy Tokens | 5815257 | 1796 days 16 hrs ago | IN | 0 ETH | 0.00323239 | ||||
| Buy Tokens | 5786827 | 1801 days 13 hrs ago | IN | 0 ETH | 0.00165561 | ||||
| Buy Tokens | 5781239 | 1802 days 12 hrs ago | IN | 0 ETH | 0.00093775 | ||||
| Transfer | 5781088 | 1802 days 12 hrs ago | IN | 3 ETH | 0.00085485 | ||||
| Transfer | 5775375 | 1803 days 12 hrs ago | IN | 10.76 ETH | 0.00077791 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Txn Hash | Block | From | To | Value | ||
|---|---|---|---|---|---|---|
| 15927517 | 193 days 3 hrs ago | 13.3 ETH | ||||
| 15395487 | 270 days 14 hrs ago | 36 ETH | ||||
| 15389522 | 271 days 13 hrs ago | 1.68 ETH | ||||
| 6469665 | 1686 days 13 hrs ago | 2.79 ETH | ||||
| 6034941 | 1759 days 4 hrs ago | 3.7802 ETH | ||||
| 6015007 | 1762 days 14 hrs ago | 1.99148569 ETH | ||||
| 5944051 | 1774 days 13 hrs ago | 1.06318451 ETH | ||||
| 5934502 | 1776 days 4 hrs ago | 2.44 ETH | ||||
| 5868947 | 1787 days 11 hrs ago | 10.76 ETH | ||||
| 5864420 | 1788 days 5 hrs ago | 5.75 ETH | ||||
| 5835732 | 1793 days 4 hrs ago | 1.88 ETH | ||||
| 5817075 | 1796 days 9 hrs ago | 1 ETH | ||||
| 5815257 | 1796 days 16 hrs ago | 12 ETH | ||||
| 5786827 | 1801 days 13 hrs ago | 1.0603138 ETH | ||||
| 5781239 | 1802 days 12 hrs ago | 3 ETH | ||||
| 5759266 | 1806 days 9 hrs ago | 8.036 ETH | ||||
| 5742351 | 1809 days 9 hrs ago | 14.98 ETH | ||||
| 5732511 | 1811 days 3 hrs ago | 1.35640405 ETH | ||||
| 5722344 | 1812 days 22 hrs ago | 1.31981907 ETH | ||||
| 5709835 | 1815 days 4 hrs ago | 7.6578 ETH | ||||
| 5702700 | 1816 days 10 hrs ago | 8.71 ETH | ||||
| 5701861 | 1816 days 13 hrs ago | 10.93 ETH | ||||
| 5698009 | 1817 days 6 hrs ago | 6.05 ETH | ||||
| 5690104 | 1818 days 15 hrs ago | 3.85689031 ETH | ||||
| 5690083 | 1818 days 15 hrs ago | 8.5 ETH |
Loading...
Loading
Similar Match Source Code
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0x33Ca75...ffe62558
Contract Name:
RC
Compiler Version
v0.4.21+commit.dfe3193c
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2018-04-03
*/
pragma solidity ^0.4.19;
/**
* @title SafeMath
* @dev Math operations with safety checks that throw on error
*/
library SafeMath {
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a * b;
assert(a == 0 || c / a == b);
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
// assert(b > 0); // Solidity automatically throws when dividing by 0
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
assert(b <= a);
return a - b;
}
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
assert(c >= a);
return c;
}
}
/**
* @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() internal {
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));
emit OwnershipTransferred(owner, newOwner);
owner = newOwner;
}
}
contract tokenInterface {
function balanceOf(address _owner) public constant returns (uint256 balance);
function transfer(address _to, uint256 _value) public returns (bool);
}
contract rateInterface {
function readRate(string _currency) public view returns (uint256 oneEtherValue);
}
contract ICOEngineInterface {
// false if the ico is not started, true if the ico is started and running, true if the ico is completed
function started() public view returns(bool);
// false if the ico is not started, false if the ico is started and running, true if the ico is completed
function ended() public view returns(bool);
// time stamp of the starting time of the ico, must return 0 if it depends on the block number
function startTime() public view returns(uint);
// time stamp of the ending time of the ico, must retrun 0 if it depends on the block number
function endTime() public view returns(uint);
// Optional function, can be implemented in place of startTime
// Returns the starting block number of the ico, must return 0 if it depends on the time stamp
// function startBlock() public view returns(uint);
// Optional function, can be implemented in place of endTime
// Returns theending block number of the ico, must retrun 0 if it depends on the time stamp
// function endBlock() public view returns(uint);
// returns the total number of the tokens available for the sale, must not change when the ico is started
function totalTokens() public view returns(uint);
// returns the number of the tokens available for the ico. At the moment that the ico starts it must be equal to totalTokens(),
// then it will decrease. It is used to calculate the percentage of sold tokens as remainingTokens() / totalTokens()
function remainingTokens() public view returns(uint);
// return the price as number of tokens released for each ether
function price() public view returns(uint);
}
contract KYCBase {
using SafeMath for uint256;
mapping (address => bool) public isKycSigner;
mapping (uint64 => uint256) public alreadyPayed;
event KycVerified(address indexed signer, address buyerAddress, uint64 buyerId, uint maxAmount);
function KYCBase(address [] kycSigners) internal {
for (uint i = 0; i < kycSigners.length; i++) {
isKycSigner[kycSigners[i]] = true;
}
}
// Must be implemented in descending contract to assign tokens to the buyers. Called after the KYC verification is passed
function releaseTokensTo(address buyer) internal returns(bool);
// This method can be overridden to enable some sender to buy token for a different address
function senderAllowedFor(address buyer)
internal view returns(bool)
{
return buyer == msg.sender;
}
function buyTokensFor(address buyerAddress, uint64 buyerId, uint maxAmount, uint8 v, bytes32 r, bytes32 s)
public payable returns (bool)
{
require(senderAllowedFor(buyerAddress));
return buyImplementation(buyerAddress, buyerId, maxAmount, v, r, s);
}
function buyTokens(uint64 buyerId, uint maxAmount, uint8 v, bytes32 r, bytes32 s)
public payable returns (bool)
{
return buyImplementation(msg.sender, buyerId, maxAmount, v, r, s);
}
function buyImplementation(address buyerAddress, uint64 buyerId, uint maxAmount, uint8 v, bytes32 r, bytes32 s)
private returns (bool)
{
// check the signature
bytes32 hash = sha256("Eidoo icoengine authorization", address(0), buyerAddress, buyerId, maxAmount); //replaced this with address(0);
address signer = ecrecover(hash, v, r, s);
if (!isKycSigner[signer]) {
revert();
} else {
uint256 totalPayed = alreadyPayed[buyerId].add(msg.value);
require(totalPayed <= maxAmount);
alreadyPayed[buyerId] = totalPayed;
emit KycVerified(signer, buyerAddress, buyerId, maxAmount);
return releaseTokensTo(buyerAddress);
}
}
}
contract RC is ICOEngineInterface, KYCBase {
using SafeMath for uint256;
TokenSale tokenSaleContract;
uint256 public startTime;
uint256 public endTime;
uint256 public etherMinimum;
uint256 public soldTokens;
uint256 public remainingTokens;
uint256 public oneTokenInUsdWei;
mapping(address => uint256) public etherUser; // address => ether amount
mapping(address => uint256) public pendingTokenUser; // address => token amount that will be claimed
mapping(address => uint256) public tokenUser; // address => token amount owned
uint256[] public tokenThreshold; // array of token threshold reached in wei of token
uint256[] public bonusThreshold; // array of bonus of each tokenThreshold reached - 20% = 20
function RC(address _tokenSaleContract, uint256 _oneTokenInUsdWei, uint256 _remainingTokens, uint256 _etherMinimum, uint256 _startTime , uint256 _endTime, address [] kycSigner, uint256[] _tokenThreshold, uint256[] _bonusThreshold ) public KYCBase(kycSigner) {
require ( _tokenSaleContract != 0 );
require ( _oneTokenInUsdWei != 0 );
require( _remainingTokens != 0 );
require ( _tokenThreshold.length != 0 );
require ( _tokenThreshold.length == _bonusThreshold.length );
bonusThreshold = _bonusThreshold;
tokenThreshold = _tokenThreshold;
tokenSaleContract = TokenSale(_tokenSaleContract);
tokenSaleContract.addMeByRC();
soldTokens = 0;
remainingTokens = _remainingTokens;
oneTokenInUsdWei = _oneTokenInUsdWei;
etherMinimum = _etherMinimum;
setTimeRC( _startTime, _endTime );
}
function setTimeRC(uint256 _startTime, uint256 _endTime ) internal {
if( _startTime == 0 ) {
startTime = tokenSaleContract.startTime();
} else {
startTime = _startTime;
}
if( _endTime == 0 ) {
endTime = tokenSaleContract.endTime();
} else {
endTime = _endTime;
}
}
modifier onlyTokenSaleOwner() {
require(msg.sender == tokenSaleContract.owner() );
_;
}
function setTime(uint256 _newStart, uint256 _newEnd) public onlyTokenSaleOwner {
if ( _newStart != 0 ) startTime = _newStart;
if ( _newEnd != 0 ) endTime = _newEnd;
}
function changeMinimum(uint256 _newEtherMinimum) public onlyTokenSaleOwner {
etherMinimum = _newEtherMinimum;
}
function releaseTokensTo(address buyer) internal returns(bool) {
if( msg.value > 0 ) takeEther(buyer);
giveToken(buyer);
return true;
}
function started() public view returns(bool) {
return now > startTime || remainingTokens == 0;
}
function ended() public view returns(bool) {
return now > endTime || remainingTokens == 0;
}
function startTime() public view returns(uint) {
return startTime;
}
function endTime() public view returns(uint) {
return endTime;
}
function totalTokens() public view returns(uint) {
return remainingTokens.add(soldTokens);
}
function remainingTokens() public view returns(uint) {
return remainingTokens;
}
function price() public view returns(uint) {
uint256 oneEther = 10**18;
return oneEther.mul(10**18).div( tokenSaleContract.tokenValueInEther(oneTokenInUsdWei) );
}
function () public payable{
require( now > startTime );
if(now < endTime) {
takeEther(msg.sender);
} else {
claimTokenBonus(msg.sender);
}
}
event Buy(address buyer, uint256 value, uint256 soldToken, uint256 valueTokenInUsdWei );
function takeEther(address _buyer) internal {
require( now > startTime );
require( now < endTime );
require( msg.value >= etherMinimum);
require( remainingTokens > 0 );
uint256 oneToken = 10 ** uint256(tokenSaleContract.decimals());
uint256 tokenValue = tokenSaleContract.tokenValueInEther(oneTokenInUsdWei);
uint256 tokenAmount = msg.value.mul(oneToken).div(tokenValue);
uint256 unboughtTokens = tokenInterface(tokenSaleContract.tokenContract()).balanceOf(tokenSaleContract);
if ( unboughtTokens > remainingTokens ) {
unboughtTokens = remainingTokens;
}
uint256 refund = 0;
if ( unboughtTokens < tokenAmount ) {
refund = (tokenAmount - unboughtTokens).mul(tokenValue).div(oneToken);
tokenAmount = unboughtTokens;
remainingTokens = 0; // set remaining token to 0
_buyer.transfer(refund);
} else {
remainingTokens = remainingTokens.sub(tokenAmount); // update remaining token without bonus
}
etherUser[_buyer] = etherUser[_buyer].add(msg.value.sub(refund));
pendingTokenUser[_buyer] = pendingTokenUser[_buyer].add(tokenAmount);
emit Buy( _buyer, msg.value, tokenAmount, oneTokenInUsdWei );
}
function giveToken(address _buyer) internal {
require( pendingTokenUser[_buyer] > 0 );
tokenUser[_buyer] = tokenUser[_buyer].add(pendingTokenUser[_buyer]);
tokenSaleContract.claim(_buyer, pendingTokenUser[_buyer]);
soldTokens = soldTokens.add(pendingTokenUser[_buyer]);
pendingTokenUser[_buyer] = 0;
tokenSaleContract.wallet().transfer(etherUser[_buyer]);
etherUser[_buyer] = 0;
}
function claimTokenBonus(address _buyer) internal {
require( now > endTime );
require( tokenUser[_buyer] > 0 );
uint256 bonusApplied = 0;
for (uint i = 0; i < tokenThreshold.length; i++) {
if ( soldTokens > tokenThreshold[i] ) {
bonusApplied = bonusThreshold[i];
}
}
require( bonusApplied > 0 );
uint256 addTokenAmount = tokenUser[_buyer].mul( bonusApplied ).div(10**2);
tokenUser[_buyer] = 0;
tokenSaleContract.claim(_buyer, addTokenAmount);
_buyer.transfer(msg.value);
}
function refundEther(address to) public onlyTokenSaleOwner {
to.transfer(etherUser[to]);
etherUser[to] = 0;
pendingTokenUser[to] = 0;
}
function withdraw(address to, uint256 value) public onlyTokenSaleOwner {
to.transfer(value);
}
function userBalance(address _user) public view returns( uint256 _pendingTokenUser, uint256 _tokenUser, uint256 _etherUser ) {
return (pendingTokenUser[_user], tokenUser[_user], etherUser[_user]);
}
}
contract TokenSale is Ownable {
using SafeMath for uint256;
tokenInterface public tokenContract;
rateInterface public rateContract;
address public wallet;
address public advisor;
uint256 public advisorFee; // 1 = 0,1%
uint256 public constant decimals = 18;
uint256 public endTime; // seconds from 1970-01-01T00:00:00Z
uint256 public startTime; // seconds from 1970-01-01T00:00:00Z
mapping(address => bool) public rc;
function TokenSale(address _tokenAddress, address _rateAddress, uint256 _startTime, uint256 _endTime) public {
tokenContract = tokenInterface(_tokenAddress);
rateContract = rateInterface(_rateAddress);
setTime(_startTime, _endTime);
wallet = msg.sender;
advisor = msg.sender;
advisorFee = 0 * 10**3;
}
function tokenValueInEther(uint256 _oneTokenInUsdWei) public view returns(uint256 tknValue) {
uint256 oneEtherInUsd = rateContract.readRate("usd");
tknValue = _oneTokenInUsdWei.mul(10 ** uint256(decimals)).div(oneEtherInUsd);
return tknValue;
}
modifier isBuyable() {
require( now > startTime ); // check if started
require( now < endTime ); // check if ended
require( msg.value > 0 );
uint256 remainingTokens = tokenContract.balanceOf(this);
require( remainingTokens > 0 ); // Check if there are any remaining tokens
_;
}
event Buy(address buyer, uint256 value, address indexed ambassador);
modifier onlyRC() {
require( rc[msg.sender] ); //check if is an authorized rcContract
_;
}
function buyFromRC(address _buyer, uint256 _rcTokenValue, uint256 _remainingTokens) onlyRC isBuyable public payable returns(uint256) {
uint256 oneToken = 10 ** uint256(decimals);
uint256 tokenValue = tokenValueInEther(_rcTokenValue);
uint256 tokenAmount = msg.value.mul(oneToken).div(tokenValue);
address _ambassador = msg.sender;
uint256 remainingTokens = tokenContract.balanceOf(this);
if ( _remainingTokens < remainingTokens ) {
remainingTokens = _remainingTokens;
}
if ( remainingTokens < tokenAmount ) {
uint256 refund = (tokenAmount - remainingTokens).mul(tokenValue).div(oneToken);
tokenAmount = remainingTokens;
forward(msg.value-refund);
remainingTokens = 0; // set remaining token to 0
_buyer.transfer(refund);
} else {
remainingTokens = remainingTokens.sub(tokenAmount); // update remaining token without bonus
forward(msg.value);
}
tokenContract.transfer(_buyer, tokenAmount);
emit Buy(_buyer, tokenAmount, _ambassador);
return tokenAmount;
}
function forward(uint256 _amount) internal {
uint256 advisorAmount = _amount.mul(advisorFee).div(10**3);
uint256 walletAmount = _amount - advisorAmount;
advisor.transfer(advisorAmount);
wallet.transfer(walletAmount);
}
event NewRC(address contr);
function addMeByRC() public {
require(tx.origin == owner);
rc[ msg.sender ] = true;
emit NewRC(msg.sender);
}
function setTime(uint256 _newStart, uint256 _newEnd) public onlyOwner {
if ( _newStart != 0 ) startTime = _newStart;
if ( _newEnd != 0 ) endTime = _newEnd;
}
function withdraw(address to, uint256 value) public onlyOwner {
to.transfer(value);
}
function withdrawTokens(address to, uint256 value) public onlyOwner returns (bool) {
return tokenContract.transfer(to, value);
}
function setTokenContract(address _tokenContract) public onlyOwner {
tokenContract = tokenInterface(_tokenContract);
}
function setWalletAddress(address _wallet) public onlyOwner {
wallet = _wallet;
}
function setAdvisorAddress(address _advisor) public onlyOwner {
advisor = _advisor;
}
function setAdvisorFee(uint256 _advisorFee) public onlyOwner {
advisorFee = _advisorFee;
}
function setRateContract(address _rateAddress) public onlyOwner {
rateContract = rateInterface(_rateAddress);
}
function claim(address _buyer, uint256 _amount) onlyRC public returns(bool) {
return tokenContract.transfer(_buyer, _amount);
}
function () public payable {
revert();
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[{"name":"_user","type":"address"}],"name":"userBalance","outputs":[{"name":"_pendingTokenUser","type":"uint256"},{"name":"_tokenUser","type":"uint256"},{"name":"_etherUser","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"isKycSigner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ended","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"started","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"}],"name":"refundEther","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newEtherMinimum","type":"uint256"}],"name":"changeMinimum","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"endTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"pendingTokenUser","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"soldTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"etherMinimum","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"startTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"etherUser","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint64"}],"name":"alreadyPayed","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newStart","type":"uint256"},{"name":"_newEnd","type":"uint256"}],"name":"setTime","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"price","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"tokenThreshold","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"buyerAddress","type":"address"},{"name":"buyerId","type":"uint64"},{"name":"maxAmount","type":"uint256"},{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"buyTokensFor","outputs":[{"name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"bonusThreshold","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"remainingTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"oneTokenInUsdWei","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"tokenUser","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"buyerId","type":"uint64"},{"name":"maxAmount","type":"uint256"},{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"buyTokens","outputs":[{"name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_tokenSaleContract","type":"address"},{"name":"_oneTokenInUsdWei","type":"uint256"},{"name":"_remainingTokens","type":"uint256"},{"name":"_etherMinimum","type":"uint256"},{"name":"_startTime","type":"uint256"},{"name":"_endTime","type":"uint256"},{"name":"kycSigner","type":"address[]"},{"name":"_tokenThreshold","type":"uint256[]"},{"name":"_bonusThreshold","type":"uint256[]"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"buyer","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"soldToken","type":"uint256"},{"indexed":false,"name":"valueTokenInUsdWei","type":"uint256"}],"name":"Buy","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"signer","type":"address"},{"indexed":false,"name":"buyerAddress","type":"address"},{"indexed":false,"name":"buyerId","type":"uint64"},{"indexed":false,"name":"maxAmount","type":"uint256"}],"name":"KycVerified","type":"event"}]Contract Creation Code
606060405234156200001057600080fd5b604051620016bf380380620016bf8339810160405280805191906020018051919060200180519190602001805191906020018051919060200180519190602001805182019190602001805182019190602001805190910190508260005b8151811015620000c45760016000808484815181106200008957fe5b90602001906020020151600160a060020a031681526020810191909152604001600020805460ff19169115159190911790556001016200006d565b5050600160a060020a0389161515620000dc57600080fd5b871515620000e957600080fd5b861515620000f657600080fd5b815115156200010457600080fd5b80518251146200011357600080fd5b600d818051620001289291602001906200030e565b50600c8280516200013e9291602001906200030e565b5060028054600160a060020a031916600160a060020a038b81169190911791829055166366b52b936040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b1515620001ae57600080fd5b5af11515620001bc57600080fd5b5050600060065550600787905560088890556005869055620001ed858564010000000062001231620001fc82021704565b5050505050505050506200037e565b8115156200027d57600254600160a060020a03166378e979256040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156200025d57600080fd5b5af115156200026b57600080fd5b50505060405180516003555062000283565b60038290555b8015156200030457600254600160a060020a0316633197cbb66040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515620002e457600080fd5b5af11515620002f257600080fd5b5050506040518051600455506200030a565b60048190555b5050565b8280548282559060005260206000209081019282156200034c579160200282015b828111156200034c5782518255916020019190600101906200032f565b506200035a9291506200035e565b5090565b6200037b91905b808211156200035a576000815560010162000365565b90565b611331806200038e6000396000f3006060604052600436106101245763ffffffff60e060020a6000350416630103c92b81146101555780630570d5681461019857806312fa6feb146101cb5780631f2698ab146101de5780631f378b8a146101f15780632a513dd9146102105780633197cbb61461022657806334323d321461024b5780635ed9ebfc1461026a578063675cef141461027d57806378e97925146102905780637e1c0c09146102a3578063924669b2146102b65780639a359d8e146102d5578063a0355eca146102f5578063a035b1fe1461030e578063a6f8fd1314610321578063ae45783514610337578063bb9dea0414610367578063bf5839031461037d578063c0a99a8314610390578063ce1ff67e146103a3578063dee4b246146103c2578063f3fef3a3146103e6575b600354421161013257600080fd5b60045442101561014a5761014533610408565b610153565b6101533361077f565b005b341561016057600080fd5b610174600160a060020a0360043516610913565b60405180848152602001838152602001828152602001935050505060405180910390f35b34156101a357600080fd5b6101b7600160a060020a0360043516610945565b604051901515815260200160405180910390f35b34156101d657600080fd5b6101b761095a565b34156101e957600080fd5b6101b7610971565b34156101fc57600080fd5b610153600160a060020a0360043516610986565b341561021b57600080fd5b610153600435610a62565b341561023157600080fd5b610239610adc565b60405190815260200160405180910390f35b341561025657600080fd5b610239600160a060020a0360043516610ae2565b341561027557600080fd5b610239610af4565b341561028857600080fd5b610239610afa565b341561029b57600080fd5b610239610b00565b34156102ae57600080fd5b610239610b06565b34156102c157600080fd5b610239600160a060020a0360043516610b1f565b34156102e057600080fd5b61023967ffffffffffffffff60043516610b31565b341561030057600080fd5b610153600435602435610b43565b341561031957600080fd5b610239610bd4565b341561032c57600080fd5b610239600435610c66565b6101b7600160a060020a036004351667ffffffffffffffff6024351660443560ff6064351660843560a435610c85565b341561037257600080fd5b610239600435610cb4565b341561038857600080fd5b610239610cc2565b341561039b57600080fd5b610239610cc8565b34156103ae57600080fd5b610239600160a060020a0360043516610cce565b6101b767ffffffffffffffff6004351660243560ff60443516606435608435610ce0565b34156103f157600080fd5b610153600160a060020a0360043516602435610cfa565b60008060008060006003544211151561042057600080fd5b600454421061042e57600080fd5b60055434101561043d57600080fd5b6007546000901161044d57600080fd5b600254600160a060020a031663313ce5676040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561048c57600080fd5b5af1151561049957600080fd5b5050506040518051600254600854600a9290920a9750600160a060020a03169150637b4139859060405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156104f657600080fd5b5af1151561050357600080fd5b5050506040518051945061052f905084610523348863ffffffff610da016565b9063ffffffff610dcb16565b600254909350600160a060020a03166355a373d66040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561057157600080fd5b5af1151561057e57600080fd5b5050506040518051600254600160a060020a0391821692506370a08231911660405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156105db57600080fd5b5af115156105e857600080fd5b5050506040518051905091506007548211156106045760075491505b5060008282101561066757610625856105238486038763ffffffff610da016565b600060075591925082919050600160a060020a03861681156108fc0282604051600060405180830381858888f19350505050151561066257600080fd5b61067e565b60075461067a908463ffffffff610de216565b6007555b6106b6610691348363ffffffff610de216565b600160a060020a0388166000908152600960205260409020549063ffffffff610df416565b600160a060020a038716600090815260096020908152604080832093909355600a905220546106eb908463ffffffff610df416565b600a600088600160a060020a0316600160a060020a03168152602001908152602001600020819055507fbeae048c6d270d9469f86cf6e8fedda3c60ad770f16c24c9fc131c8e9a09101d8634856008546040518085600160a060020a0316600160a060020a0316815260200184815260200183815260200182815260200194505050505060405180910390a1505050505050565b60008060006004544211151561079457600080fd5b600160a060020a0384166000908152600b6020526040812054116107b757600080fd5b60009250600091505b600c5482101561081557600c8054839081106107d857fe5b906000526020600020900154600654111561080a57600d8054839081106107fb57fe5b90600052602060002090015492505b6001909101906107c0565b6000831161082257600080fd5b600160a060020a0384166000908152600b602052604090205461085290606490610523908663ffffffff610da016565b600160a060020a038086166000908152600b60205260408082209190915560025492935091169063aad3ec9690869084905160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156108c457600080fd5b5af115156108d157600080fd5b50505060405180515050600160a060020a0384163480156108fc0290604051600060405180830381858888f19350505050151561090d57600080fd5b50505050565b600160a060020a03166000908152600a6020908152604080832054600b83528184205460099093529220549192909190565b60006020819052908152604090205460ff1681565b600060045442118061096c5750600754155b905090565b600060035442118061096c5750506007541590565b600254600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156109c557600080fd5b5af115156109d257600080fd5b50505060405180519050600160a060020a031633600160a060020a03161415156109fb57600080fd5b600160a060020a038116600081815260096020526040908190205480156108fc029151600060405180830381858888f193505050501515610a3b57600080fd5b600160a060020a03166000908152600960209081526040808320839055600a909152812055565b600254600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610aa157600080fd5b5af11515610aae57600080fd5b50505060405180519050600160a060020a031633600160a060020a0316141515610ad757600080fd5b600555565b60045490565b600a6020526000908152604090205481565b60065481565b60055481565b60035490565b600061096c600654600754610df490919063ffffffff16565b60096020526000908152604090205481565b60016020526000908152604090205481565b600254600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610b8257600080fd5b5af11515610b8f57600080fd5b50505060405180519050600160a060020a031633600160a060020a0316141515610bb857600080fd5b8115610bc45760038290555b8015610bd05760048190555b5050565b600254600854600091670de0b6b3a764000091610c6091600160a060020a031690637b4139859060405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610c3157600080fd5b5af11515610c3e57600080fd5b5050506040518051905061052383670de0b6b3a764000063ffffffff610da016565b91505090565b600c805482908110610c7457fe5b600091825260209091200154905081565b6000610c9087610e03565b1515610c9b57600080fd5b610ca9878787878787610e15565b979650505050505050565b600d805482908110610c7457fe5b60075490565b60085481565b600b6020526000908152604090205481565b6000610cf0338787878787610e15565b9695505050505050565b600254600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610d3957600080fd5b5af11515610d4657600080fd5b50505060405180519050600160a060020a031633600160a060020a0316141515610d6f57600080fd5b600160a060020a03821681156108fc0282604051600060405180830381858888f193505050501515610bd057600080fd5b6000828202831580610dbc5750828482811515610db957fe5b04145b1515610dc457fe5b9392505050565b6000808284811515610dd957fe5b04949350505050565b600082821115610dee57fe5b50900390565b600082820183811015610dc457fe5b33600160a060020a0390811691161490565b600080600080600260008b8b8b6040517f4569646f6f2069636f656e67696e6520617574686f72697a6174696f6e0000008152600160a060020a039485166c01000000000000000000000000908102601d83015293909416909202603184015267ffffffffffffffff167801000000000000000000000000000000000000000000000000026045830152604d820152606d016020604051808303816000865af11515610ec057600080fd5b50506040518051905092506001838888886040516000815260200160405260405193845260ff9092166020808501919091526040808501929092526060840192909252608090920191516020810390808403906000865af11515610f2357600080fd5b505060206040510351600160a060020a03811660009081526020819052604090205490925060ff161515610f5657600080fd5b67ffffffffffffffff8916600090815260016020526040902054610f80903463ffffffff610df416565b905087811115610f8f57600080fd5b67ffffffffffffffff891660009081526001602052604090819020829055600160a060020a038316907f74e336db80b339721548db3209451cf01bd48e4a996e1bcea7f1a2abf8b06070908c908c908c9051600160a060020a03909316835267ffffffffffffffff90911660208301526040808301919091526060909101905180910390a261101d8a61102b565b9a9950505050505050505050565b60008034111561103e5761103e82610408565b6110478261104f565b506001919050565b600160a060020a0381166000908152600a60205260408120541161107257600080fd5b600160a060020a0381166000908152600a6020908152604080832054600b909252909120546110a69163ffffffff610df416565b600160a060020a038083166000908152600b6020908152604080832094909455600254600a909152908390205491169163aad3ec969184915160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561111f57600080fd5b5af1151561112c57600080fd5b50505060405180515050600160a060020a0381166000908152600a60205260409020546006546111619163ffffffff610df416565b600655600160a060020a038082166000908152600a6020526040808220919091556002549091169063521eb27390518163ffffffff1660e060020a028152600401602060405180830381600087803b15156111bb57600080fd5b5af115156111c857600080fd5b5050506040518051600160a060020a03838116600090815260096020526040908190205491909216925080156108fc029151600060405180830381858888f19350505050151561121757600080fd5b600160a060020a0316600090815260096020526040812055565b81151561129557600254600160a060020a03166378e979256040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561127757600080fd5b5af1151561128457600080fd5b50505060405180516003555061129b565b60038290555b8015156112ff57600254600160a060020a0316633197cbb66040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156112e157600080fd5b5af115156112ee57600080fd5b505050604051805160045550610bd0565b600455505600a165627a7a72305820d215036dea4bfd99696737ef24aad361250c730f0c1246717eae88538ec393c40029000000000000000000000000c1cf194c1449713bf811a93f4e1a6211c1713e3400000000000000000000000000000000000000000000000002c68af0bb140000000000000000000000000000000000000000000000084595161401484a0000000000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005b0341600000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001c00000000000000000000000000000000000000000000000000000000000000002000000000000000000000000dd5ecefcaa0cb5d75f7b72dc9d2ce446d6d005200000000000000000000000004e315e5de2abbf7b745d9628ee60e4355c0fab860000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000
Swarm Source
bzzr://d215036dea4bfd99696737ef24aad361250c730f0c1246717eae88538ec393c4
Loading...
Loading
Loading...
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.
[ Download: CSV Export ]
[ 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.