Source Code
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
Latest 1 internal transaction
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 4277849 | 3106 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
REKTTokenSale
Compiler Version
v0.4.13+commit.fb4cb1a
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2017-09-15
*/
pragma solidity ^0.4.13;
library SafeMath {
function mul(uint256 a, uint256 b) internal constant returns (uint256) {
uint256 c = a * b;
assert(a == 0 || c / a == b);
return c;
}
function div(uint256 a, uint256 b) internal constant 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 constant returns (uint256) {
assert(b <= a);
return a - b;
}
function add(uint256 a, uint256 b) internal constant returns (uint256) {
uint256 c = a + b;
assert(c >= a);
return c;
}
}
contract Ownable {
address public owner;
/**
* @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 {
if (newOwner != address(0)) {
owner = newOwner;
}
}
}
contract ERC20Basic {
uint256 public totalSupply;
function balanceOf(address who) constant returns (uint256);
function transfer(address to, uint256 value) returns (bool);
// KYBER-NOTE! code changed to comply with ERC20 standard
event Transfer(address indexed _from, address indexed _to, uint _value);
//event Transfer(address indexed from, address indexed to, uint256 value);
}
contract BasicToken is ERC20Basic {
using SafeMath for uint256;
mapping(address => uint256) balances;
/**
* @dev transfer token for a specified address
* @param _to The address to transfer to.
* @param _value The amount to be transferred.
*/
function transfer(address _to, uint256 _value) returns (bool) {
balances[msg.sender] = balances[msg.sender].sub(_value);
balances[_to] = balances[_to].add(_value);
Transfer(msg.sender, _to, _value);
return true;
}
/**
* @dev Gets the balance of the specified address.
* @param _owner The address to query the the balance of.
* @return An uint256 representing the amount owned by the passed address.
*/
function balanceOf(address _owner) constant returns (uint256 balance) {
return balances[_owner];
}
}
contract ERC20 is ERC20Basic {
function allowance(address owner, address spender) constant returns (uint256);
function transferFrom(address from, address to, uint256 value) returns (bool);
function approve(address spender, uint256 value) returns (bool);
// KYBER-NOTE! code changed to comply with ERC20 standard
event Approval(address indexed _owner, address indexed _spender, uint _value);
//event Approval(address indexed owner, address indexed spender, uint256 value);
}
contract StandardToken is ERC20, BasicToken {
mapping (address => mapping (address => uint256)) allowed;
/**
* @dev Transfer tokens from one address to another
* @param _from address The address which you want to send tokens from
* @param _to address The address which you want to transfer to
* @param _value uint256 the amout of tokens to be transfered
*/
function transferFrom(address _from, address _to, uint256 _value) returns (bool) {
var _allowance = allowed[_from][msg.sender];
// Check is not needed because sub(_allowance, _value) will already throw if this condition is not met
// require (_value <= _allowance);
// KYBER-NOTE! code changed to comply with ERC20 standard
balances[_from] = balances[_from].sub(_value);
balances[_to] = balances[_to].add(_value);
//balances[_from] = balances[_from].sub(_value); // this was removed
allowed[_from][msg.sender] = _allowance.sub(_value);
Transfer(_from, _to, _value);
return true;
}
/**
* @dev Aprove the passed address to spend the specified amount of tokens on behalf of msg.sender.
* @param _spender The address which will spend the funds.
* @param _value The amount of tokens to be spent.
*/
function approve(address _spender, uint256 _value) returns (bool) {
// To change the approve amount you first have to reduce the addresses`
// allowance to zero by calling `approve(_spender, 0)` if it is not
// already 0 to mitigate the race condition described here:
// https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
require((_value == 0) || (allowed[msg.sender][_spender] == 0));
allowed[msg.sender][_spender] = _value;
Approval(msg.sender, _spender, _value);
return true;
}
/**
* @dev Function to check the amount of tokens that an owner allowed to a spender.
* @param _owner address The address which owns the funds.
* @param _spender address The address which will spend the funds.
* @return A uint256 specifing the amount of tokens still avaible for the spender.
*/
function allowance(address _owner, address _spender) constant returns (uint256 remaining) {
return allowed[_owner][_spender];
}
}
contract REKTTokenSale {
using SafeMath for uint;
address public admin;
address public REKTMultiSigWallet;
REKT public token;
bool public haltSale;
function REKTTokenSale( address _admin,
address _REKTMultiSigWallet,
uint _totalTokenSupply)
{
admin = _admin;
REKTMultiSigWallet = _REKTMultiSigWallet;
token = new REKT( _totalTokenSupply, _admin );
}
function setHaltSale( bool halt ) {
require( msg.sender == admin );
haltSale = halt;
}
function() payable {
buy( msg.sender );
}
event Buy( address _buyer, uint _tokens, uint _payedWei );
function buy( address recipient ) payable returns(uint){
require( ! haltSale );
// send payment to wallet
sendETHToMultiSig( msg.value );
uint receivedTokens = msg.value.mul( 1000 );
assert( token.transfer( recipient, receivedTokens ) );
Buy( recipient, receivedTokens, msg.value );
return msg.value;
}
function sendETHToMultiSig( uint value ) internal {
REKTMultiSigWallet.transfer( value );
}
// ETH balance is always expected to be 0.
// but in case something went wrong, we use this function to extract the eth.
function emergencyDrain(ERC20 anyToken) returns(bool){
require( msg.sender == admin );
if( this.balance > 0 ) {
sendETHToMultiSig( this.balance );
}
if( anyToken != address(0x0) ) {
assert( anyToken.transfer(REKTMultiSigWallet, anyToken.balanceOf(this)) );
}
return true;
}
}
contract REKT is StandardToken, Ownable {
string public constant name = "REKT";
string public constant symbol = "REKT";
uint public constant decimals = 18;
address public tokenSaleContract;
modifier validDestination( address to ) {
require(to != address(0x0));
require(to != address(this) );
_;
}
function REKT( uint tokenTotalAmount, address admin ) {
// Mint all tokens. Then disable minting forever.
balances[msg.sender] = tokenTotalAmount.div(2);
balances[admin] = tokenTotalAmount.div(2);
totalSupply = tokenTotalAmount;
Transfer(address(0x0), msg.sender, tokenTotalAmount);
tokenSaleContract = msg.sender;
transferOwnership(admin); // admin could drain tokens that were sent here by mistake
}
function transfer(address _to, uint _value)
validDestination(_to)
returns (bool) {
return super.transfer(_to, _value);
}
function transferFrom(address _from, address _to, uint _value)
validDestination(_to)
returns (bool) {
return super.transferFrom(_from, _to, _value);
}
event Burn(address indexed _burner, uint _value);
function burn(uint _value)
returns (bool){
balances[msg.sender] = balances[msg.sender].sub(_value);
totalSupply = totalSupply.sub(_value);
Burn(msg.sender, _value);
Transfer(msg.sender, address(0x0), _value);
return true;
}
// save some gas by making only one contract call
function burnFrom(address _from, uint256 _value)
returns (bool) {
assert( transferFrom( _from, msg.sender, _value ) );
return burn(_value);
}
function emergencyERC20Drain( ERC20 token, uint amount ) onlyOwner {
token.transfer( owner, amount );
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":true,"inputs":[],"name":"haltSale","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"halt","type":"bool"}],"name":"setHaltSale","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"anyToken","type":"address"}],"name":"emergencyDrain","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"recipient","type":"address"}],"name":"buy","outputs":[{"name":"","type":"uint256"}],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"REKTMultiSigWallet","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"admin","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"inputs":[{"name":"_admin","type":"address"},{"name":"_REKTMultiSigWallet","type":"address"},{"name":"_totalTokenSupply","type":"uint256"}],"payable":false,"type":"constructor"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_buyer","type":"address"},{"indexed":false,"name":"_tokens","type":"uint256"},{"indexed":false,"name":"_payedWei","type":"uint256"}],"name":"Buy","type":"event"}]Contract Creation Code
6060604052341561000f57600080fd5b6040516060806112a78339810160405280805191906020018051919060200180519150505b60008054600160a060020a03808616600160a060020a0319928316179092556001805492851692909116919091179055808361006e6100c2565b918252600160a060020a0316602082015260409081019051809103906000f080151561009957600080fd5b60028054600160a060020a031916600160a060020a03929092169190911790555b5050506100d2565b604051610c738061063483390190565b610553806100e16000396000f300606060405236156100675763ffffffff60e060020a6000350416635fbaa390811461007a57806362aac84d146100a157806371a18bfb146100bb578063f088d547146100ee578063f358b3de14610114578063f851a44014610143578063fc0c546a14610172575b6100785b610074336101a1565b505b565b005b341561008557600080fd5b61008d6102d1565b604051901515815260200160405180910390f35b34156100ac57600080fd5b61007860043515156102f2565b005b34156100c657600080fd5b61008d600160a060020a036004351661034a565b604051901515815260200160405180910390f35b610102600160a060020a03600435166101a1565b60405190815260200160405180910390f35b341561011f57600080fd5b610127610494565b604051600160a060020a03909116815260200160405180910390f35b341561014e57600080fd5b6101276104a3565b604051600160a060020a03909116815260200160405180910390f35b341561017d57600080fd5b6101276104b2565b604051600160a060020a03909116815260200160405180910390f35b600254600090819074010000000000000000000000000000000000000000900460ff16156101ce57600080fd5b6101d7346104c1565b6101e9346103e863ffffffff6104f816565b600254909150600160a060020a031663a9059cbb848360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561024b57600080fd5b6102c65a03f1151561025c57600080fd5b50505060405180519050151561026e57fe5b7f1cbc5ab135991bd2b6a4b034a04aa2aa086dac1371cb9b16b8b5e2ed6b036bed8382346040518084600160a060020a0316600160a060020a03168152602001838152602001828152602001935050505060405180910390a13491505b50919050565b60025474010000000000000000000000000000000000000000900460ff1681565b60005433600160a060020a0390811691161461030d57600080fd5b6002805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000831515021790555b50565b6000805433600160a060020a0390811691161461036657600080fd5b600030600160a060020a031631111561038c5761038c30600160a060020a0316316104c1565b5b600160a060020a0382161561048a57600154600160a060020a038084169163a9059cbb9116826370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561040057600080fd5b6102c65a03f1151561041157600080fd5b5050506040518051905060006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561046757600080fd5b6102c65a03f1151561047857600080fd5b50505060405180519050151561048a57fe5b5b5060015b919050565b600154600160a060020a031681565b600054600160a060020a031681565b600254600160a060020a031681565b600154600160a060020a031681156108fc0282604051600060405180830381858888f19350505050151561007457600080fd5b5b50565b6000828202831580610514575082848281151561051157fe5b04145b151561051c57fe5b8091505b50929150505600a165627a7a72305820526ea4aee2b2cc0112357a766221dd2898babdabed905122ebe653681d7b8c1700296060604052341561000f57600080fd5b604051604080610c7383398101604052808051919060200180519150505b5b60038054600160a060020a03191633600160a060020a03161790555b610062826002640100000000610a9061012582021704565b600160a060020a033316600090815260016020526040902055610093826002640100000000610a9061012582021704565b600160a060020a038083166000908152600160205260408082209390935584815533909116917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a360048054600160a060020a03191633600160a060020a031617905561011d8164010000000061014181026108351704565b5b505061018c565b600080828481151561013357fe5b0490508091505b5092915050565b60035433600160a060020a0390811691161461015c57600080fd5b600160a060020a038116156101875760038054600160a060020a031916600160a060020a0383161790555b5b5b50565b610ad88061019b6000396000f300606060405236156100d85763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146100dd578063095ea7b31461016857806318160ddd1461019e57806323b872dd146101c3578063313ce567146101ff57806342966c68146102245780635d5aa2771461024e57806370a082311461027d57806379cc6790146102ae5780638da5cb5b146102e457806395d89b41146100dd578063a9059cbb1461039e578063db0e16f1146103d4578063dd62ed3e146103f8578063f2fde38b1461042f575b600080fd5b34156100e857600080fd5b6100f0610450565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561012d5780820151818401525b602001610114565b50505050905090810190601f16801561015a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561017357600080fd5b61018a600160a060020a0360043516602435610487565b604051901515815260200160405180910390f35b34156101a957600080fd5b6101b161052e565b60405190815260200160405180910390f35b34156101ce57600080fd5b61018a600160a060020a0360043581169060243516604435610534565b604051901515815260200160405180910390f35b341561020a57600080fd5b6101b1610584565b60405190815260200160405180910390f35b341561022f57600080fd5b61018a600435610589565b604051901515815260200160405180910390f35b341561025957600080fd5b610261610667565b604051600160a060020a03909116815260200160405180910390f35b341561028857600080fd5b6101b1600160a060020a0360043516610676565b60405190815260200160405180910390f35b34156102b957600080fd5b61018a600160a060020a0360043516602435610695565b604051901515815260200160405180910390f35b34156102ef57600080fd5b6102616106bc565b604051600160a060020a03909116815260200160405180910390f35b34156100e857600080fd5b6100f0610450565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561012d5780820151818401525b602001610114565b50505050905090810190601f16801561015a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103a957600080fd5b61018a600160a060020a0360043516602435610702565b604051901515815260200160405180910390f35b34156103df57600080fd5b6103f6600160a060020a0360043516602435610750565b005b341561040357600080fd5b6101b1600160a060020a0360043581169060243516610808565b60405190815260200160405180910390f35b341561043a57600080fd5b6103f6600160a060020a0360043516610835565b005b60408051908101604052600481527f52454b5400000000000000000000000000000000000000000000000000000000602082015281565b60008115806104b95750600160a060020a03338116600090815260026020908152604080832093871683529290522054155b15156104c457600080fd5b600160a060020a03338116600081815260026020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b60005481565b600082600160a060020a038116151561054c57600080fd5b30600160a060020a031681600160a060020a03161415151561056d57600080fd5b61057885858561088d565b91505b5b509392505050565b601281565b600160a060020a0333166000908152600160205260408120546105b2908363ffffffff61099f16565b600160a060020a033316600090815260016020526040812091909155546105df908363ffffffff61099f16565b600055600160a060020a0333167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca58360405190815260200160405180910390a2600033600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a35060015b919050565b600454600160a060020a031681565b600160a060020a0381166000908152600160205260409020545b919050565b60006106a2833384610534565b15156106aa57fe5b6106b382610589565b90505b92915050565b600354600160a060020a031681565b60408051908101604052600481527f52454b5400000000000000000000000000000000000000000000000000000000602082015281565b600082600160a060020a038116151561071a57600080fd5b30600160a060020a031681600160a060020a03161415151561073b57600080fd5b61074584846109b6565b91505b5b5092915050565b60035433600160a060020a0390811691161461076b57600080fd5b600354600160a060020a038084169163a9059cbb9116836000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156107e757600080fd5b6102c65a03f115156107f857600080fd5b505050604051805150505b5b5050565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b60035433600160a060020a0390811691161461085057600080fd5b600160a060020a03811615610888576003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b600160a060020a0380841660008181526002602090815260408083203390951683529381528382205492825260019052918220546108d1908463ffffffff61099f16565b600160a060020a038087166000908152600160205260408082209390935590861681522054610906908463ffffffff610a7616565b600160a060020a03851660009081526001602052604090205561092f818463ffffffff61099f16565b600160a060020a03808716600081815260026020908152604080832033861684529091529081902093909355908616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9086905190815260200160405180910390a3600191505b509392505050565b6000828211156109ab57fe5b508082035b92915050565b600160a060020a0333166000908152600160205260408120546109df908363ffffffff61099f16565b600160a060020a033381166000908152600160205260408082209390935590851681522054610a14908363ffffffff610a7616565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b92915050565b600082820183811015610a8557fe5b8091505b5092915050565b6000808284811515610a9e57fe5b0490508091505b50929150505600a165627a7a72305820465fbd40cd6ce6287e41eca424f8d7818b6bf9db39b8d2ad3e4ddfad0c603f4600290000000000000000000000006ca0ac547f23073b2d9461518407d1c97c02ea020000000000000000000000002e05d891201e008b3f57145cef017058673d520800000000000000000000000000000000000000000000d3c21bcecceda1000000
Deployed Bytecode
0x606060405236156100675763ffffffff60e060020a6000350416635fbaa390811461007a57806362aac84d146100a157806371a18bfb146100bb578063f088d547146100ee578063f358b3de14610114578063f851a44014610143578063fc0c546a14610172575b6100785b610074336101a1565b505b565b005b341561008557600080fd5b61008d6102d1565b604051901515815260200160405180910390f35b34156100ac57600080fd5b61007860043515156102f2565b005b34156100c657600080fd5b61008d600160a060020a036004351661034a565b604051901515815260200160405180910390f35b610102600160a060020a03600435166101a1565b60405190815260200160405180910390f35b341561011f57600080fd5b610127610494565b604051600160a060020a03909116815260200160405180910390f35b341561014e57600080fd5b6101276104a3565b604051600160a060020a03909116815260200160405180910390f35b341561017d57600080fd5b6101276104b2565b604051600160a060020a03909116815260200160405180910390f35b600254600090819074010000000000000000000000000000000000000000900460ff16156101ce57600080fd5b6101d7346104c1565b6101e9346103e863ffffffff6104f816565b600254909150600160a060020a031663a9059cbb848360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561024b57600080fd5b6102c65a03f1151561025c57600080fd5b50505060405180519050151561026e57fe5b7f1cbc5ab135991bd2b6a4b034a04aa2aa086dac1371cb9b16b8b5e2ed6b036bed8382346040518084600160a060020a0316600160a060020a03168152602001838152602001828152602001935050505060405180910390a13491505b50919050565b60025474010000000000000000000000000000000000000000900460ff1681565b60005433600160a060020a0390811691161461030d57600080fd5b6002805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000831515021790555b50565b6000805433600160a060020a0390811691161461036657600080fd5b600030600160a060020a031631111561038c5761038c30600160a060020a0316316104c1565b5b600160a060020a0382161561048a57600154600160a060020a038084169163a9059cbb9116826370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561040057600080fd5b6102c65a03f1151561041157600080fd5b5050506040518051905060006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561046757600080fd5b6102c65a03f1151561047857600080fd5b50505060405180519050151561048a57fe5b5b5060015b919050565b600154600160a060020a031681565b600054600160a060020a031681565b600254600160a060020a031681565b600154600160a060020a031681156108fc0282604051600060405180830381858888f19350505050151561007457600080fd5b5b50565b6000828202831580610514575082848281151561051157fe5b04145b151561051c57fe5b8091505b50929150505600a165627a7a72305820526ea4aee2b2cc0112357a766221dd2898babdabed905122ebe653681d7b8c170029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000006ca0ac547f23073b2d9461518407d1c97c02ea020000000000000000000000002e05d891201e008b3f57145cef017058673d520800000000000000000000000000000000000000000000d3c21bcecceda1000000
-----Decoded View---------------
Arg [0] : _admin (address): 0x6ca0ac547f23073B2D9461518407D1C97C02Ea02
Arg [1] : _REKTMultiSigWallet (address): 0x2E05d891201E008b3f57145cef017058673d5208
Arg [2] : _totalTokenSupply (uint256): 1000000000000000000000000
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000006ca0ac547f23073b2d9461518407d1c97c02ea02
Arg [1] : 0000000000000000000000002e05d891201e008b3f57145cef017058673d5208
Arg [2] : 00000000000000000000000000000000000000000000d3c21bcecceda1000000
Swarm Source
bzzr://465fbd40cd6ce6287e41eca424f8d7818b6bf9db39b8d2ad3e4ddfad0c603f46
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.