Address Contract Partially Verified
Address
0x2F50AB197F950e0c2184CF5d804f4141502Cd987
Balance
0 ETH
Nonce
1
Code Size
7015 bytes
Creator
0x4e287bA8...656D at tx 0x3bb734c1...c867b2
Indexed Transactions
0 (1 on-chain, 1.3% indexed)
Contract Bytecode
7015 bytes
0x606060405236156101935763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630200b10d81146101bb5780630655c58b146101e057806306fdde031461020b57806307a95e8314610296578063095ea7b3146102c057806317634514146102f657806318160ddd1461031b5780631e72444714610340578063211e28b61461036557806322c9427e1461037f57806323b872dd146103a95780632e37eef6146103e5578063313ce5671461041357806337a366d81461043c5780633f1b1267146104765780635a3b7e421461049b578063668038e01461052657806370a082311461053b578063752d2bfb1461056c5780637c871d3114610579578063814b3fe0146105945780638da5cb5b146105f757806395d89b41146106265780639abd3572146106b1578063a713a3f7146106db578063a9059cbb14610709578063b414d4b61461072d578063cae9ca5114610760578063cf309012146107d9578063d271011d14610800578063dd62ed3e14610815578063f2fde38b1461084c575b6101b95b60006101a433423461086d565b90506001811515146101b557600080fd5b5b50565b005b34156101c657600080fd5b6101ce6109c0565b60405190815260200160405180910390f35b34156101eb57600080fd5b6101ce6004356024356109c6565b60405190815260200160405180910390f35b341561021657600080fd5b61021e610aab565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561025b5780820151818401525b602001610242565b50505050905090810190601f1680156102885780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156102a157600080fd5b6102ac600435610b49565b604051901515815260200160405180910390f35b34156102cb57600080fd5b6102ac600160a060020a0360043516602435610c6d565b604051901515815260200160405180910390f35b341561030157600080fd5b6101ce610cb5565b60405190815260200160405180910390f35b341561032657600080fd5b6101ce610cbb565b60405190815260200160405180910390f35b341561034b57600080fd5b6101ce610cce565b60405190815260200160405180910390f35b341561037057600080fd5b6101b96004351515610cd4565b005b341561038a57600080fd5b6102ac600435610d02565b604051901515815260200160405180910390f35b34156103b457600080fd5b6102ac600160a060020a0360043581169060243516604435610d8d565b604051901515815260200160405180910390f35b34156103f057600080fd5b6103fb600435610e2b565b60405191825260208201526040908101905180910390f35b341561041e57600080fd5b610426610e59565b60405160ff909116815260200160405180910390f35b341561044757600080fd5b6103fb600160a060020a0360043516602435610e62565b60405191825260208201526040908101905180910390f35b341561048157600080fd5b6101ce610e9f565b60405190815260200160405180910390f35b34156104a657600080fd5b61021e610ea5565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561025b5780820151818401525b602001610242565b50505050905090810190601f1680156102885780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561053157600080fd5b6101b9610f43565b005b341561054657600080fd5b6101ce600160a060020a036004351661103d565b60405190815260200160405180910390f35b6101b9600435611067565b005b341561058457600080fd5b6101b96004356024356111d9565b005b341561059f57600080fd5b6105aa600435611204565b60405198895260208901979097526040808901969096526060880194909452608087019290925260a086015260c085015260e0840152901515610100830152610120909101905180910390f35b341561060257600080fd5b61060a611262565b604051600160a060020a03909116815260200160405180910390f35b341561063157600080fd5b61021e611271565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561025b5780820151818401525b602001610242565b50505050905090810190601f1680156102885780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156106bc57600080fd5b6102ac60043561130f565b604051901515815260200160405180910390f35b34156106e657600080fd5b6103fb6004356114cf565b60405191825260208201526040908101905180910390f35b341561071457600080fd5b6101b9600160a060020a03600435166024356114fd565b005b341561073857600080fd5b6102ac600160a060020a0360043516611532565b604051901515815260200160405180910390f35b341561076b57600080fd5b6102ac60048035600160a060020a03169060248035919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061154795505050505050565b604051901515815260200160405180910390f35b34156107e457600080fd5b6102ac611697565b604051901515815260200160405180910390f35b341561080b57600080fd5b6101b96116a0565b005b341561082057600080fd5b6101ce600160a060020a03600435811690602435166116f8565b60405190815260200160405180910390f35b341561085757600080fd5b6101b9600160a060020a0360043516611715565b005b60065460009081908190819060ff1615156001141561088f57600093506109b6565b600d548610156108a257600093506109b6565b600e548611156108b557600093506109b6565b8415156108c557600093506109b6565b6108d1600f54866109c6565b92508215156108e357600093506109b6565b600160a060020a0330166000908152600860205260409020610905904361176d565b600160a060020a038816600090815260086020526040902090925061092a904361176d565b90508282101561093d57600093506109b6565b80838201101561095057600093506109b6565b61095c8784830161180d565b6109683084840361180d565b600f805486019055600160a060020a038088169030167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405190815260200160405180910390a3600193505b5050509392505050565b600f5481565b60008083838280805b601054831015610a895760108054849081106109e757fe5b906000526020600020906002020160005b5091508482600101541115610a705781600101548486011115610a4b57848260010154039050816000015481670de0b6b3a764000002811515610a3757fe5b048601955080840393508085019450610a70565b8154670de0b6b3a76400008502811515610a6157fe5b04860195508385019450600093505b5b831515610a7d57610a89565b5b6001909201916109cf565b6000841115610a9b5760009650610a9f565b8596505b50505050505092915050565b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b415780601f10610b1657610100808354040283529160200191610b41565b820191906000526020600020905b815481529060010190602001808311610b2457829003601f168201915b505050505081565b600080548190819033600160a060020a03908116911614610b6957600080fd5b600b546000190184901015610b815760009250610c65565b600b805485908110610b8f57fe5b90600052602060002090600a020160005b50600881015490925060ff161515610bcd578160070154826002015401421015610bcd5760009250610c65565b5b506004810154600382015403600582018190556000811115610c6057600054600160a060020a031681156108fc0282604051600060405180830381858888f193505050501515610c1d57600080fd5b7ff8f6e080db19192fcb419f05354e903e76f8ef166e655114101e1f956b4c4cf5848260405191825260208201526040908101905180910390a160019250610c65565b600092505b5b5050919050565b60065460009060ff1615610c8357506000610caf565b50600160a060020a03338116600090815260096020908152604080832093861683529290522081905560015b92915050565b60075481565b6000610cc860054361176d565b90505b90565b600e5481565b60005433600160a060020a03908116911614610cef57600080fd5b6006805460ff19168215151790555b5b50565b60008054819033600160a060020a03908116911614610d2057600080fd5b600b546000190183901015610d385760009150610d86565b600b805484908110610d4657fe5b90600052602060002090600a020160005b50600881015490915060ff1615610d715760009150610d86565b60088101805460ff1916600190811790915591505b5b50919050565b600654600090819060ff1615610da65760009150610e23565b600160a060020a038086166000908152600960209081526040808320339094168352929052205483901015610dde5760009150610e23565b610de9858585611872565b90508015610e1f57600160a060020a03808616600090815260096020908152604080832033909416835292905220805484900390555b8091505b509392505050565b6010805482908110610e3957fe5b906000526020600020906002020160005b50805460019091015490915082565b60045460ff1681565b600860205281600052604060002081815481101515610e7d57fe5b906000526020600020906002020160005b508054600190910154909250905082565b600d5481565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b415780601f10610b1657610100808354040283529160200191610b41565b820191906000526020600020905b815481529060010190602001808311610b2457829003601f168201915b505050505081565b600b54600160a060020a0333166000908152600c602052604081205490919010610f6c57600080fd5b50600160a060020a0333166000908152600c60205260409020545b600b548110156101b557600b805482908110610f9f57fe5b90600052602060002090600a020160005b50600160a060020a0333166000908152600991909101602052604090205460ff161580156110025750600b805482908110610fe757fe5b90600052602060002090600a020160005b506008015460ff16155b1561103057600160a060020a0333166000908152600c6020526040902060018201905561102e8161130f565b505b5b600101610f87565b5b50565b600160a060020a038116600090815260086020526040812061105f904361176d565b90505b919050565b60008054819033600160a060020a0390811691161461108557600080fd5b6000341161109257600080fd5b600b5491506110a260054361176d565b9050600b80548060010182816110b89190611a3c565b91600052602060002090600a020160005b6101206040519081016040908152868252436020830152429082015234606082015260006080820181905260a0820181905260c0820186905260e08201889052610100820152919050815181556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e08201518160070155610100820151600891909101805460ff1916911515919091179055505033600160a060020a03167f4ac365c2344819f39ac5cfcbf4b839a10fb791243db4797084e9ed0fbc917b8a834334856040518085815260200184815260200183815260200182815260200194505050505060405180910390a25b5b505050565b60005433600160a060020a039081169116146111f457600080fd5b600d829055600e8190555b5b5050565b600b80548290811061121257fe5b90600052602060002090600a020160005b50805460018201546002830154600384015460048501546005860154600687015460078801546008909801549698509496939592949193909260ff1689565b600054600160a060020a031681565b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b415780601f10610b1657610100808354040283529160200191610b41565b820191906000526020600020905b815481529060010190602001808311610b2457829003601f168201915b505050505081565b600080600080846001600b8054905003101561132e57600093506114c7565b600b80548690811061133c57fe5b90600052602060002090600a020160005b50600160a060020a033316600090815260098201602052604090205490935060ff1615156001141561138257600093506114c7565b600883015460ff1615156001141561139d57600093506114c7565b600783015460028401540142106113b757600093506114c7565b600160a060020a033316600090815260086020526040902060018401546113de919061176d565b91508115156113f057600093506114c7565b82600601548360030154830281151561140557fe5b600160a060020a03331660009081526009860160205260408120805460ff19166001179055600486018054939092049283019091559091508111156114c257600160a060020a03331681156108fc0282604051600060405180830381858888f19350505050151561147557600080fd5b33600160a060020a03167fa1594d215a577c1905bcb0b5b186a40a0104714277441d4b2ac428c89bf7f4b1868360405191825260208201526040908101905180910390a2600193506114c7565b600093505b505050919050565b6005805482908110610e3957fe5b906000526020600020906002020160005b50805460019091015490915082565b60065460009060ff161561151057600080fd5b61151b338484611872565b90506001811515146111d357600080fd5b5b505050565b600a6020526000908152604090205460ff1681565b600654600090819060ff16156115605760009150610e23565b508361156c8185610c6d565b15610e235780600160a060020a0316638f4ffcb1338630876040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018085600160a060020a0316600160a060020a0316815260200184815260200183600160a060020a0316600160a060020a0316815260200180602001828103825283818151815260200191508051906020019080838360005b838110156116235780820151818401525b60200161160a565b50505050905090810190601f1680156116505780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b151561167157600080fd5b6102c65a03f1151561168257600080fd5b50505060019150610e23565b5b509392505050565b60065460ff1681565b60005433600160a060020a039081169116146116bb57600080fd5b600054600160a060020a039081169030163180156108fc0290604051600060405180830381858888f1935050505015156116f457600080fd5b5b5b565b600960209081526000928352604080842090915290825290205481565b60005433600160a060020a0390811691161461173057600080fd5b600160a060020a038116156101b5576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b6000611777611a6e565b6000611781611a6e565b855415156117925760009350611804565b600091505b85548210156117ff5785828154811015156117ae57fe5b906000526020600020906002020160005b5060408051908101604052815481526001909101546020820190815290915085905111156117f05782519350611804565b8092505b600190910190611797565b825193505b50505092915050565b600160a060020a03821660009081526008602052604090208054600181016118358382611a85565b916000526020600020906002020160005b6040805190810160405284815243602082015291905081518155602082015181600101555050505b5050565b600160a060020a038316600090815260086020526040812081908190611898904361176d565b600160a060020a03861660009081526008602052604090209092506118bd904361176d565b90508315156118cf5760009250611a33565b600160a060020a0386166000908152600a602052604090205460ff161515600114156118fe5760009250611a33565b8382101561190f5760009250611a33565b8381018190116119225760009250611a33565b600160a060020a038616600090815260086020526040902080546001810161194a8382611a85565b916000526020600020906002020160005b604080519081016040528786038152436020820152919050815181556020820151600191820155600160a060020a03881660009081526008602052604090208054909350915081016119ad8382611a85565b916000526020600020906002020160005b604080519081016040528488018152436020820152919050815181556020820151816001015550505084600160a060020a031686600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405190815260200160405180910390a3600192505b50509392505050565b8154818355818115116111d357600a0281600a0283600052602060002091820191016111d39190611ab7565b5b505050565b604080519081016040526000808252602082015290565b8154818355818115116111d3576002028160020283600052602060002091820191016111d39190611b14565b5b505050565b610ccb91905b80821115611b0d576000808255600182018190556002820181905560038201819055600482018190556005820181905560068201819055600782015560088101805460ff19169055600a01611abd565b5090565b90565b610ccb91905b80821115611b0d5760008082556001820155600201611b1a565b5090565b905600a165627a7a72305820bb1f760fcc3411e0af2b05e0ccf283570bfbe432040ca29bc1ea572eba69004e0029
Verified Source Code Partial Match
Compiler: v0.4.13+commit.0fb4cb1a
Optimization: Yes (200 runs)
Cajutel.sol 542 lines
pragma solidity ^0.4.13;
/**
* @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;
/**
* @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 tokenRecipient { function receiveApproval(address _from, uint256 _value, address _token, bytes _extraData); }
contract LoggedERC20 is Ownable {
/* Structures */
struct LogValueBlock {
uint256 value;
uint256 block;
}
/* Public variables of the token */
string public standard = 'LogValueBlockToken 0.1';
string public name;
string public symbol;
uint8 public decimals;
LogValueBlock[] public loggedTotalSupply;
bool public locked;
uint256 public creationBlock;
/* This creates an array with all balances */
mapping (address => LogValueBlock[]) public loggedBalances;
mapping (address => mapping (address => uint256)) public allowance;
/* This generates a public event on the blockchain that will notify clients */
event Transfer(address indexed from, address indexed to, uint256 value);
mapping (address => bool) public frozenAccount;
/* This generates a public event on the blockchain that will notify clients */
event FrozenFunds(address target, bool frozen);
/* Initializes contract with initial supply tokens to the creator of the contract */
function LoggedERC20(
uint256 initialSupply,
string tokenName,
uint8 decimalUnits,
string tokenSymbol,
bool transferAllSupplyToOwner,
bool _locked
) {
LogValueBlock memory valueBlock = LogValueBlock(initialSupply, block.number);
loggedTotalSupply.push(valueBlock);
if(transferAllSupplyToOwner) {
loggedBalances[msg.sender].push(valueBlock);
}
else {
loggedBalances[this].push(valueBlock);
}
name = tokenName; // Set the name for display purposes
symbol = tokenSymbol; // Set the symbol for display purposes
decimals = decimalUnits; // Amount of decimals for display purposes
locked = _locked;
}
function valueAt(LogValueBlock [] storage valueBlocks, uint256 block) internal returns (uint256) {
if(valueBlocks.length == 0) {
return 0;
}
LogValueBlock memory prevLogValueBlock;
for(uint256 i = 0; i < valueBlocks.length; i++) {
LogValueBlock memory valueBlock = valueBlocks[i];
if(valueBlock.block > block) {
return prevLogValueBlock.value;
}
prevLogValueBlock = valueBlock;
}
return prevLogValueBlock.value;
}
function setBalance(address _address, uint256 value) internal {
loggedBalances[_address].push(LogValueBlock(value, block.number));
}
function totalSupply() returns (uint256) {
return valueAt(loggedTotalSupply, block.number);
}
function balanceOf(address _address) returns (uint256) {
return valueAt(loggedBalances[_address], block.number);
}
function transferInternal(address _from, address _to, uint256 value) internal returns (bool success) {
uint256 balanceFrom = valueAt(loggedBalances[_from], block.number);
uint256 balanceTo = valueAt(loggedBalances[_to], block.number);
if(value == 0) {
return false;
}
if(frozenAccount[_from] == true) {
return false;
}
if(balanceFrom < value) {
return false;
}
if(balanceTo + value <= balanceTo) {
return false;
}
loggedBalances[_from].push(LogValueBlock(balanceFrom - value, block.number));
loggedBalances[_to].push(LogValueBlock(balanceTo + value, block.number));
Transfer(_from, _to, value);
return true;
}
/* Send coins */
function transfer(address _to, uint256 _value) {
require(locked == false);
bool status = transferInternal(msg.sender, _to, _value);
require(status == true);
}
/* Allow another contract to spend some tokens in your behalf */
function approve(address _spender, uint256 _value) returns (bool success) {
if(locked) {
return false;
}
allowance[msg.sender][_spender] = _value;
return true;
}
/* Approve and then communicate the approved contract in a single tx */
function approveAndCall(address _spender, uint256 _value, bytes _extraData) returns (bool success) {
if(locked) {
return false;
}
tokenRecipient spender = tokenRecipient(_spender);
if (approve(_spender, _value)) {
spender.receiveApproval(msg.sender, _value, this, _extraData);
return true;
}
}
/* A contract attempts to get the coins */
function transferFrom(address _from, address _to, uint256 _value) returns (bool success) {
if(locked) {
return false;
}
if(allowance[_from][msg.sender] < _value) {
return false;
}
bool _success = transferInternal(_from, _to, _value);
if(_success) {
allowance[_from][msg.sender] -= _value;
}
return _success;
}
}
contract LoggedDividend is Ownable, LoggedERC20 {
/* Structs */
struct Dividend {
uint256 id;
uint256 block;
uint256 time;
uint256 amount;
uint256 claimedAmount;
uint256 transferedBack;
uint256 totalSupply;
uint256 recycleTime;
bool recycled;
mapping (address => bool) claimed;
}
/* variables */
Dividend [] public dividends;
mapping (address => uint256) dividendsClaimed;
/* Events */
event DividendTransfered(uint256 id, address indexed _address, uint256 _block, uint256 _amount, uint256 _totalSupply);
event DividendClaimed(uint256 id, address indexed _address, uint256 _claim);
event UnclaimedDividendTransfer(uint256 id, uint256 _value);
event DividendRecycled(uint256 id, address indexed _recycler, uint256 _blockNumber, uint256 _amount, uint256 _totalSupply);
function LoggedDividend(
uint256 initialSupply,
string tokenName,
uint8 decimalUnits,
string tokenSymbol,
bool transferAllSupplyToOwner,
bool _locked
) LoggedERC20(initialSupply, tokenName, decimalUnits, tokenSymbol, transferAllSupplyToOwner, _locked) {
}
function addDividend(uint256 recycleTime) payable onlyOwner {
require(msg.value > 0);
uint256 id = dividends.length;
uint256 _totalSupply = valueAt(loggedTotalSupply, block.number);
dividends.push(
Dividend(
id,
block.number,
now,
msg.value,
0,
0,
_totalSupply,
recycleTime,
false
)
);
DividendTransfered(id, msg.sender, block.number, msg.value, _totalSupply);
}
function claimDividend(uint256 dividendId) public returns (bool) {
if(dividends.length - 1 < dividendId) {
return false;
}
Dividend storage dividend = dividends[dividendId];
if(dividend.claimed[msg.sender] == true) {
return false;
}
if(dividend.recycled == true) {
return false;
}
if(now >= dividend.time + dividend.recycleTime) {
return false;
}
uint256 balance = valueAt(loggedBalances[msg.sender], dividend.block);
if(balance == 0) {
return false;
}
uint256 claim = balance * dividend.amount / dividend.totalSupply;
dividend.claimed[msg.sender] = true;
dividend.claimedAmount = dividend.claimedAmount + claim;
if (claim > 0) {
msg.sender.transfer(claim);
DividendClaimed(dividendId, msg.sender, claim);
return true;
}
return false;
}
function claimDividends() public {
require(dividendsClaimed[msg.sender] < dividends.length);
for (uint i = dividendsClaimed[msg.sender]; i < dividends.length; i++) {
if ((dividends[i].claimed[msg.sender] == false) && (dividends[i].recycled == false)) {
dividendsClaimed[msg.sender] = i + 1;
claimDividend(i);
}
}
}
function recycleDividend(uint256 dividendId) public onlyOwner returns (bool success) {
if(dividends.length - 1 < dividendId) {
return false;
}
Dividend storage dividend = dividends[dividendId];
if(dividend.recycled) {
return false;
}
dividend.recycled = true;
return true;
}
function refundUnclaimedEthers(uint256 dividendId) public onlyOwner returns (bool success) {
if(dividends.length - 1 < dividendId) {
return false;
}
Dividend storage dividend = dividends[dividendId];
if(dividend.recycled == false) {
if(now < dividend.time + dividend.recycleTime) {
return false;
}
}
uint256 claimedBackAmount = dividend.amount - dividend.claimedAmount;
dividend.transferedBack = claimedBackAmount;
if(claimedBackAmount > 0) {
owner.transfer(claimedBackAmount);
UnclaimedDividendTransfer(dividendId, claimedBackAmount);
return true;
}
return false;
}
}
contract LoggedPhaseICO is LoggedDividend {
uint256 public icoSince;
uint256 public icoTill;
uint256 public collectedEthers;
Phase[] public phases;
struct Phase {
uint256 price;
uint256 maxAmount;
}
function LoggedPhaseICO(
uint256 _icoSince,
uint256 _icoTill,
uint256 initialSupply,
string tokenName,
string tokenSymbol,
uint8 precision,
bool transferAllSupplyToOwner,
bool _locked
) LoggedDividend(initialSupply, tokenName, precision, tokenSymbol, transferAllSupplyToOwner, _locked) {
standard = 'LoggedPhaseICO 0.1';
icoSince = _icoSince;
icoTill = _icoTill;
}
function getIcoTokensAmount(uint256 collectedEthers, uint256 value) returns (uint256) {
uint256 amount;
uint256 newCollectedEthers = collectedEthers;
uint256 remainingValue = value;
for (uint i = 0; i < phases.length; i++) {
Phase storage phase = phases[i];
if(phase.maxAmount > newCollectedEthers) {
if (newCollectedEthers + remainingValue > phase.maxAmount) {
uint256 diff = phase.maxAmount - newCollectedEthers;
amount += diff * 1 ether / phase.price;
remainingValue -= diff;
newCollectedEthers += diff;
}
else {
amount += remainingValue * 1 ether / phase.price;
newCollectedEthers += remainingValue;
remainingValue = 0;
}
}
if (remainingValue == 0) {
break;
}
}
if (remainingValue > 0) {
return 0;
}
return amount;
}
function buy(address _address, uint256 time, uint256 value) internal returns (bool) {
if (locked == true) {
return false;
}
if (time < icoSince) {
return false;
}
if (time > icoTill) {
return false;
}
if (value == 0) {
return false;
}
uint256 amount = getIcoTokensAmount(collectedEthers, value);
if(amount == 0) {
return false;
}
uint256 selfBalance = valueAt(loggedBalances[this], block.number);
uint256 holderBalance = valueAt(loggedBalances[_address], block.number);
if (selfBalance < amount) {
return false;
}
if (holderBalance + amount < holderBalance) {
return false;
}
setBalance(_address, holderBalance + amount);
setBalance(this, selfBalance - amount);
collectedEthers += value;
Transfer(this, _address, amount);
return true;
}
function () payable {
bool status = buy(msg.sender, now, msg.value);
require(status == true);
}
}
contract Cajutel is LoggedPhaseICO {
function Cajutel(
uint256 initialSupply,
string tokenName,
string tokenSymbol,
address founder1,
address founder2,
address marketing,
uint256 icoSince,
uint256 icoTill
) LoggedPhaseICO(icoSince, icoTill, initialSupply, tokenName, tokenSymbol, 18, false, false) {
standard = 'Cajutel 0.1';
phases.push(Phase(0.05 ether, 500 ether));
phases.push(Phase(0.075 ether, 750 ether + 500 ether));
phases.push(Phase(0.1 ether, 10000 ether + 750 ether + 500 ether));
phases.push(Phase(0.15 ether, 30000 ether + 10000 ether + 750 ether + 500 ether));
phases.push(Phase(0.2 ether, 80000 ether + 30000 ether + 10000 ether + 750 ether + 500 ether));
uint256 founder1Tokens = 900000000000000000000000;
uint256 founder2Tokens = 100000000000000000000000;
uint256 marketingTokens = 60000000000000000000000;
setBalance(founder1, founder1Tokens);
Transfer(this, founder1, founder1Tokens);
setBalance(founder2, founder2Tokens);
Transfer(this, founder2, founder2Tokens);
setBalance(marketing, marketingTokens);
Transfer(this, marketing, marketingTokens);
setBalance(this, initialSupply - founder1Tokens - founder2Tokens - marketingTokens);
}
function transferEthers() onlyOwner {
owner.transfer(this.balance);
}
function setLocked(bool _locked) onlyOwner {
locked = _locked;
}
function setIcoDates(uint256 _icoSince, uint256 _icoTill) onlyOwner {
icoSince = _icoSince;
icoTill = _icoTill;
}
}
Write Contract 32 functions
These functions modify contract state and require a wallet transaction to execute.
addDividend 0x752d2bfb
uint256 recycleTime
allowance 0xdd62ed3e
address
address
returns: uint256
approve 0x095ea7b3
address _spender
uint256 _value
returns: bool
approveAndCall 0xcae9ca51
address _spender
uint256 _value
bytes _extraData
returns: bool
balanceOf 0x70a08231
address _address
returns: uint256
claimDividend 0x9abd3572
uint256 dividendId
returns: bool
claimDividends 0x668038e0
No parameters
collectedEthers 0x0200b10d
No parameters
returns: uint256
creationBlock 0x17634514
No parameters
returns: uint256
decimals 0x313ce567
No parameters
returns: uint8
dividends 0x814b3fe0
uint256
returns: uint256, uint256, uint256, uint256, uint256, uint256, uint256, uint256, bool
frozenAccount 0xb414d4b6
address
returns: bool
getIcoTokensAmount 0x0655c58b
uint256 collectedEthers
uint256 value
returns: uint256
icoSince 0x3f1b1267
No parameters
returns: uint256
icoTill 0x1e724447
No parameters
returns: uint256
locked 0xcf309012
No parameters
returns: bool
loggedBalances 0x37a366d8
address
uint256
returns: uint256, uint256
loggedTotalSupply 0xa713a3f7
uint256
returns: uint256, uint256
name 0x06fdde03
No parameters
returns: string
owner 0x8da5cb5b
No parameters
returns: address
phases 0x2e37eef6
uint256
returns: uint256, uint256
recycleDividend 0x22c9427e
uint256 dividendId
returns: bool
refundUnclaimedEthers 0x07a95e83
uint256 dividendId
returns: bool
setIcoDates 0x7c871d31
uint256 _icoSince
uint256 _icoTill
setLocked 0x211e28b6
bool _locked
standard 0x5a3b7e42
No parameters
returns: string
symbol 0x95d89b41
No parameters
returns: string
totalSupply 0x18160ddd
No parameters
returns: uint256
transfer 0xa9059cbb
address _to
uint256 _value
transferEthers 0xd271011d
No parameters
transferFrom 0x23b872dd
address _from
address _to
uint256 _value
returns: bool
transferOwnership 0xf2fde38b
address newOwner
Recent Transactions
This address has 1 on-chain transactions, but only 1.3% of the chain is indexed. Transactions will appear as indexing progresses. View on Etherscan →