Address Contract Partially Verified
Address
0xcc77bfC17Ec7Ce8a91b16e6E79695f9BB4fbF708
Balance
0 ETH
Nonce
1
Code Size
10585 bytes
Creator
0x0AA98AB9...B474 at tx 0x9d659359...52259f
Indexed Transactions
0 (1 on-chain, 1.2% indexed)
Contract Bytecode
10585 bytes
0x606060405260043610610175576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806302c3d7f61461043a57806306fdde031461044f578063095ea7b3146104dd5780630d38ea4814610537578063124d33961461056057806318160ddd14610575578063203a318f1461059e57806323b872dd146105c7578063313ce567146106405780633dbedbd41461066f578063405df3381461068457806361f127dd14610699578063621ab11a146106c257806364e8d682146106eb57806370a082311461071457806375b4d78c14610761578063807d2da31461078a5780638da5cb5b1461079f57806391c259ea146107f457806395d89b411461084e5780639890220b146108dc578063a393dc44146108f1578063a9059cbb1461091a578063b4a6667814610974578063c040e6b81461099d578063c21c5ee1146109d4578063dd62ed3e146109f9578063f2fde38b14610a65578063f8e4338214610a9e575b60038081111561018157fe5b601660009054906101000a900460ff16600381111561019c57fe5b141515156101a957600080fd5b600560009054906101000a900460ff161580156102145750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b151561021f57600080fd5b6001600381111561022c57fe5b601660009054906101000a900460ff16600381111561024757fe5b14801561025657506008544211155b1561032857610270614e2034610acb90919063ffffffff16565b60028190555061028b34601254610b0690919063ffffffff16565b601281905550610299610b24565b6014819055506102c960646102bb601454600254610acb90919063ffffffff16565b610b9790919063ffffffff16565b600381905550600354600254016004819055506102f3600254601054610b0690919063ffffffff16565b601081905550610310600354601154610b0690919063ffffffff16565b60118190555061032233600454610bb2565b50610438565b6002600381111561033557fe5b601660009054906101000a900460ff16600381111561035057fe5b14801561035f57506009544211155b1561043257610379614e2034610acb90919063ffffffff16565b60028190555061039434601254610b0690919063ffffffff16565b6012819055506103a334610dcc565b6014819055506103d360646103c5601454600254610acb90919063ffffffff16565b610b9790919063ffffffff16565b600381905550600354600254016004819055506103fd600254601054610b0690919063ffffffff16565b60108190555061041a600354601154610b0690919063ffffffff16565b60118190555061042c33600454610bb2565b50610437565b600080fd5b5b005b341561044557600080fd5b61044d610f50565b005b341561045a57600080fd5b610462611161565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104a2578082015181840152602081019050610487565b50505050905090810190601f1680156104cf5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156104e857600080fd5b61051d600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061119a565b604051808215151515815260200191505060405180910390f35b341561054257600080fd5b61054a6112ce565b6040518082815260200191505060405180910390f35b341561056b57600080fd5b6105736112d4565b005b341561058057600080fd5b61058861134d565b6040518082815260200191505060405180910390f35b34156105a957600080fd5b6105b1611356565b6040518082815260200191505060405180910390f35b34156105d257600080fd5b610626600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061135c565b604051808215151515815260200191505060405180910390f35b341561064b57600080fd5b61065361170f565b604051808260ff1660ff16815260200191505060405180910390f35b341561067a57600080fd5b610682611714565b005b341561068f57600080fd5b61069761178d565b005b34156106a457600080fd5b6106ac61195b565b6040518082815260200191505060405180910390f35b34156106cd57600080fd5b6106d5611961565b6040518082815260200191505060405180910390f35b34156106f657600080fd5b6106fe611967565b6040518082815260200191505060405180910390f35b341561071f57600080fd5b61074b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061196d565b6040518082815260200191505060405180910390f35b341561076c57600080fd5b6107746119b6565b6040518082815260200191505060405180910390f35b341561079557600080fd5b61079d6119bc565b005b34156107aa57600080fd5b6107b2611bdb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156107ff57600080fd5b610834600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611c01565b604051808215151515815260200191505060405180910390f35b341561085957600080fd5b610861611e78565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108a1578082015181840152602081019050610886565b50505050905090810190601f1680156108ce5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156108e757600080fd5b6108ef611eb1565b005b34156108fc57600080fd5b610904611f88565b6040518082815260200191505060405180910390f35b341561092557600080fd5b61095a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611f8e565b604051808215151515815260200191505060405180910390f35b341561097f57600080fd5b6109876125a3565b6040518082815260200191505060405180910390f35b34156109a857600080fd5b6109b06125a9565b604051808260038111156109c057fe5b60ff16815260200191505060405180910390f35b34156109df57600080fd5b6109f7600480803515159060200190919050506125bc565b005b3415610a0457600080fd5b610a4f600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612635565b6040518082815260200191505060405180910390f35b3415610a7057600080fd5b610a9c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612704565b005b3415610aa957600080fd5b610ab1612901565b604051808215151515815260200191505060405180910390f35b6000806000841415610ae05760009150610aff565b8284029050828482811515610af157fe5b04141515610afb57fe5b8091505b5092915050565b6000808284019050838110151515610b1a57fe5b8091505092915050565b600080601e9050610b5562015180610b476006544261291490919063ffffffff16565b610b9790919063ffffffff16565b60138190555060006013541415610b6f57601e9050610b90565b600f601354101515610b845760029050610b8f565b600260135402810390505b5b8091505090565b6000808284811515610ba557fe5b0490508091505092915050565b6000808373ffffffffffffffffffffffffffffffffffffffff1614151515610bd957600080fd5b81600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610c285750600082115b1515610c3357600080fd5b610c8582600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461291490919063ffffffff16565b600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610d1a82600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b0690919063ffffffff16565b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600080670de0b6b3a764000083811515610de257fe5b04601581905550600260155410158015610dfe57506005601554105b15610e0c5760019050610f47565b600560155410158015610e215750600f601554105b15610e2f5760029050610f46565b600f60155410158015610e4457506019601554105b15610e525760039050610f45565b601960155410158015610e6757506028601554105b15610e755760049050610f44565b602860155410158015610e8a5750603c601554105b15610e985760059050610f43565b603c60155410158015610ead57506046601554105b15610ebb5760069050610f42565b604660155410158015610ed057506050601554105b15610ede5760079050610f41565b605060155410158015610ef35750605a601554105b15610f015760089050610f40565b605a60155410158015610f1657506064601554105b15610f245760099050610f3f565b6064601554101515610f3957600a9050610f3e565b600090505b5b5b5b5b5b5b5b5b5b80915050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610fac57600080fd5b6002806003811115610fba57fe5b601660009054906101000a900460ff166003811115610fd557fe5b141515610fe157600080fd5b60095442111515610ff157600080fd5b6003601660006101000a81548160ff0219169083600381111561101057fe5b02179055506000600c60006101000a81548160ff021916908315150217905550611084600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460005461291490919063ffffffff16565b6000819055506000600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060003073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a350565b6040805190810160405280600781526020017f535020436f696e0000000000000000000000000000000000000000000000000081525081565b6000600c60009054906101000a900460ff161515156111b857600080fd5b60008373ffffffffffffffffffffffffffffffffffffffff16141515156111de57600080fd5b81600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60125481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561133057600080fd5b6000600560006101000a81548160ff021916908315150217905550565b60008054905090565b60075481565b6000808373ffffffffffffffffffffffffffffffffffffffff161415151561138357600080fd5b81600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015801561144e575081600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b801561145b575060008210155b151561146657600080fd5b6114b882600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461291490919063ffffffff16565b600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061158a82600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461291490919063ffffffff16565b600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061165c82600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b0690919063ffffffff16565b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b601281565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561177057600080fd5b6001600560006101000a81548160ff021916908315150217905550565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117e957600080fd5b60008060038111156117f757fe5b601660009054906101000a900460ff16600381111561181257fe5b14151561181e57600080fd5b6001601660006101000a81548160ff0219169083600381111561183d57fe5b02179055506000600560006101000a81548160ff0219169083151502179055506b0121836204bc2ce21e000000600a81905550600a54600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555042600681905550621a5e0042016008819055503073ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a350565b614e2081565b60115481565b60065481565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60145481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a1857600080fd5b6001806003811115611a2657fe5b601660009054906101000a900460ff166003811115611a4157fe5b141515611a4d57600080fd5b6002601660006101000a81548160ff02191690836003811115611a6c57fe5b02179055506000600560006101000a81548160ff0219169083151502179055506b02e87669c308736a04000000600b81905550611af3600b54600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b0690919063ffffffff16565b600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550426007819055506220f58042016009819055503073ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a350565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611c5f57600080fd5b60008373ffffffffffffffffffffffffffffffffffffffff1614151515611c8557600080fd5b81600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015611cd45750600082115b1515611cdf57600080fd5b611d3182600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461291490919063ffffffff16565b600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611dc682600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b0690919063ffffffff16565b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6040805190810160405280600381526020017f535053000000000000000000000000000000000000000000000000000000000081525081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f0d57600080fd5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f193505050501515611f8657600080fd5b565b60005481565b6000600c60009054906101000a900460ff168015611ff95750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b156123045781600d6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015612070575060008210155b80156120fb5750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401115b151561210657600080fd5b61217a82600d6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461291490919063ffffffff16565b600d6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061223182600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b0690919063ffffffff16565b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905061259d565b600c60009054906101000a900460ff1615156125985781600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015801561236a575060008210155b80156123f55750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401115b151561240057600080fd5b61245282600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461291490919063ffffffff16565b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124e782600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b0690919063ffffffff16565b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905061259d565b600080fd5b92915050565b60105481565b601660009054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561261857600080fd5b80600c60006101000a81548160ff02191690831515021790555050565b6000808373ffffffffffffffffffffffffffffffffffffffff1614158015612674575060008273ffffffffffffffffffffffffffffffffffffffff1614155b151561267f57600080fd5b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561276057600080fd5b612813600d6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b0690919063ffffffff16565b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600d6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c60009054906101000a900460ff1681565b600082821115151561292257fe5b8183039050929150505600a165627a7a72305820abd97116b4ae72196ee0a756f683681d7f717414801e2afc8d1d8ba52ee8062b0029
Verified Source Code Partial Match
Compiler: v0.4.20+commit.3155dd80
Optimization: No
SPCoin.sol 361 lines
pragma solidity 0.4.20;
/**
* @title SafeMath
* @dev Math operations with safety checks that throw on error
*/
library SafeMath {
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
assert(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;
}
}
contract ERC20 {
function totalSupply()public view returns (uint total_Supply);
function balanceOf(address who)public view returns (uint256);
function allowance(address owner, address spender)public view returns (uint);
function transferFrom(address from, address to, uint value)public returns (bool ok);
function approve(address spender, uint value)public returns (bool ok);
function transfer(address to, uint value)public returns (bool ok);
event Transfer(address indexed from, address indexed to, uint value);
event Approval(address indexed owner, address indexed spender, uint value);
}
contract SPCoin is ERC20
{ using SafeMath for uint256;
// Name of the token
string public constant name = "SP Coin";
// Symbol of token
string public constant symbol = "SPS";
uint8 public constant decimals = 18;
uint public _totalsupply = 2500000000 *10 ** 18; // 2.5 Billion SPS Coins
address public owner;
uint256 constant public _price_tokn = 20000 ;
uint256 no_of_tokens;
uint256 bonus_token;
uint256 total_token;
bool stopped = false;
uint256 public pre_startdate;
uint256 public ico_startdate;
uint256 pre_enddate;
uint256 ico_enddate;
uint256 maxCap_PRE;
uint256 maxCap_ICO;
bool public icoRunningStatus = true;
mapping(address => uint) balances;
mapping(address => mapping(address => uint)) allowed;
address ethFundMain = 0x649BbCF5625E78f8A1dE1AE07d9D5E3E0fDCa932;
uint256 public Numtokens;
uint256 public bonustokn;
uint256 public ethreceived;
uint bonusCalculationFactor;
uint public bonus;
uint x ;
enum Stages {
NOTSTARTED,
PREICO,
ICO,
ENDED
}
Stages public stage;
modifier atStage(Stages _stage) {
if (stage != _stage)
// Contract not in expected state
revert();
_;
}
modifier onlyOwner() {
if (msg.sender != owner) {
revert();
}
_;
}
function SPCoin() public
{
owner = msg.sender;
balances[owner] = 1250000000 *10 ** 18; // 1.25 billion given to owner
stage = Stages.NOTSTARTED;
Transfer(0, owner, balances[owner]);
}
function () public payable
{
require(stage != Stages.ENDED);
require(!stopped && msg.sender != owner);
if( stage == Stages.PREICO && now <= pre_enddate )
{
no_of_tokens =(msg.value).mul(_price_tokn);
ethreceived = ethreceived.add(msg.value);
bonus= bonuscalpre();
bonus_token = ((no_of_tokens).mul(bonus)).div(100); // bonus calculation
total_token = no_of_tokens + bonus_token;
Numtokens= Numtokens.add(no_of_tokens);
bonustokn= bonustokn.add(bonus_token);
transferTokens(msg.sender,total_token);
}
else
if(stage == Stages.ICO && now <= ico_enddate )
{
no_of_tokens =((msg.value).mul(_price_tokn));
ethreceived = ethreceived.add(msg.value);
bonus= bonuscalico(msg.value);
bonus_token = ((no_of_tokens).mul(bonus)).div(100); // bonus calculation
total_token = no_of_tokens + bonus_token;
Numtokens= Numtokens.add(no_of_tokens);
bonustokn= bonustokn.add(bonus_token);
transferTokens(msg.sender,total_token);
}
else {
revert();
}
}
//bonuc calculation for preico on per day basis
function bonuscalpre() private returns (uint256 cp)
{
uint bon = 30;
bonusCalculationFactor = (block.timestamp.sub(pre_startdate)).div(86400); //time period in seconds
if(bonusCalculationFactor == 0)
{
bon = 30;
}
else if(bonusCalculationFactor >= 15)
{
bon = 2;
}
else{
bon -= bonusCalculationFactor* 2;
}
return bon;
}
//bonus calculation for ICO on purchase basis
function bonuscalico(uint256 y) private returns (uint256 cp){
x = y/(10**18);
uint bon;
if (x>=2 && x <5){
bon = 1;
}
else if (x>=5 && x <15){
bon = 2;
}
else if (x>=15 && x <25){
bon = 3;
}
else if (x>=25 && x <40){
bon = 4;
}
else if (x>=40 && x <60){
bon = 5;
}
else if (x>=60 && x <70){
bon = 6;
}
else if (x>=70 && x <80){
bon = 7;
}
else if (x>=80 && x <90){
bon = 8;
}
else if (x>=90 && x <100){
bon = 9;
}
else if (x>=100){
bon = 10;
}
else{
bon = 0;
}
return bon;
}
function start_PREICO() public onlyOwner atStage(Stages.NOTSTARTED)
{
stage = Stages.PREICO;
stopped = false;
maxCap_PRE = 350000000 * 10 ** 18; // 350 million
balances[address(this)] = maxCap_PRE;
pre_startdate = now;
pre_enddate = now + 20 days; //time for preICO
Transfer(0, address(this), balances[address(this)]);
}
function start_ICO() public onlyOwner atStage(Stages.PREICO)
{
stage = Stages.ICO;
stopped = false;
maxCap_ICO = 900000000 * 10 **18; // 900 million
balances[address(this)] = balances[address(this)].add(maxCap_ICO);
ico_startdate = now;
ico_enddate = now + 25 days; //time for ICO
Transfer(0, address(this), balances[address(this)]);
}
// called by the owner, pause ICO
function StopICO() external onlyOwner {
stopped = true;
}
// called by the owner , resumes ICO
function releaseICO() external onlyOwner
{
stopped = false;
}
function end_ICO() external onlyOwner atStage(Stages.ICO)
{
require(now > ico_enddate);
stage = Stages.ENDED;
icoRunningStatus= false;
_totalsupply = (_totalsupply).sub(balances[address(this)]);
balances[address(this)] = 0;
Transfer(address(this), 0 , balances[address(this)]);
}
// This function can be used by owner in emergency to update running status parameter
function fixSpecications(bool RunningStatus ) external onlyOwner
{
icoRunningStatus = RunningStatus;
}
// what is the total supply of the ech tokens
function totalSupply() public view returns (uint256 total_Supply) {
total_Supply = _totalsupply;
}
// What is the balance of a particular account?
function balanceOf(address _owner)public view returns (uint256 balance) {
return balances[_owner];
}
// Send _value amount of tokens from address _from to address _to
// The transferFrom method is used for a withdraw workflow, allowing contracts to send
// tokens on your behalf, for example to "deposit" to a contract address and/or to charge
// fees in sub-currencies; the command should fail unless the _from account has
// deliberately authorized the sender of the message via some mechanism; we propose
// these standardized APIs for approval:
function transferFrom( address _from, address _to, uint256 _amount )public returns (bool success) {
require( _to != 0x0);
require(balances[_from] >= _amount && allowed[_from][msg.sender] >= _amount && _amount >= 0);
balances[_from] = (balances[_from]).sub(_amount);
allowed[_from][msg.sender] = (allowed[_from][msg.sender]).sub(_amount);
balances[_to] = (balances[_to]).add(_amount);
Transfer(_from, _to, _amount);
return true;
}
// Allow _spender to withdraw from your account, multiple times, up to the _value amount.
// If this function is called again it overwrites the current allowance with _value.
function approve(address _spender, uint256 _amount)public returns (bool success) {
require(!icoRunningStatus);
require( _spender != 0x0);
allowed[msg.sender][_spender] = _amount;
Approval(msg.sender, _spender, _amount);
return true;
}
function allowance(address _owner, address _spender)public view returns (uint256 remaining) {
require( _owner != 0x0 && _spender !=0x0);
return allowed[_owner][_spender];
}
// Transfer the balance from owner's account to another account
function transfer(address _to, uint256 _amount) public returns (bool success) {
if(icoRunningStatus && msg.sender == owner)
{
require(balances[owner] >= _amount && _amount >= 0 && balances[_to] + _amount > balances[_to]);
balances[owner] = (balances[owner]).sub(_amount);
balances[_to] = (balances[_to]).add(_amount);
Transfer(owner, _to, _amount);
return true;
}
else if(!icoRunningStatus)
{
require(balances[msg.sender] >= _amount && _amount >= 0 && balances[_to] + _amount > balances[_to]);
balances[msg.sender] = (balances[msg.sender]).sub(_amount);
balances[_to] = (balances[_to]).add(_amount);
Transfer(msg.sender, _to, _amount);
return true;
}
else
revert();
}
// Transfer the balance from owner's account to another account
function transferTokens(address _to, uint256 _amount) private returns(bool success) {
require( _to != 0x0);
require(balances[address(this)] >= _amount && _amount > 0);
balances[address(this)] = (balances[address(this)]).sub(_amount);
balances[_to] = (balances[_to]).add(_amount);
Transfer(address(this), _to, _amount);
return true;
}
function transferby(address _to,uint256 _amount) external onlyOwner returns(bool success) {
require( _to != 0x0);
require(balances[address(this)] >= _amount && _amount > 0);
balances[address(this)] = (balances[address(this)]).sub(_amount);
balances[_to] = (balances[_to]).add(_amount);
Transfer(address(this), _to, _amount);
return true;
}
//In case the ownership needs to be transferred
function transferOwnership(address newOwner)public onlyOwner
{
balances[newOwner] = (balances[newOwner]).add(balances[owner]);
balances[owner] = 0;
owner = newOwner;
}
function drain() external onlyOwner {
ethFundMain.transfer(this.balance);
}
}
Read Contract
Numtokens 0xb4a66678 → uint256
_price_tokn 0x61f127dd → uint256
_totalsupply 0xa393dc44 → uint256
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
bonus 0x75b4d78c → uint256
bonustokn 0x621ab11a → uint256
decimals 0x313ce567 → uint8
ethreceived 0x0d38ea48 → uint256
icoRunningStatus 0xf8e43382 → bool
ico_startdate 0x203a318f → uint256
name 0x06fdde03 → string
owner 0x8da5cb5b → address
pre_startdate 0x64e8d682 → uint256
stage 0xc040e6b8 → uint8
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256
Write Contract 12 functions
These functions modify contract state and require a wallet transaction to execute.
StopICO 0x3dbedbd4
No parameters
approve 0x095ea7b3
address _spender
uint256 _amount
returns: bool
drain 0x9890220b
No parameters
end_ICO 0x02c3d7f6
No parameters
fixSpecications 0xc21c5ee1
bool RunningStatus
releaseICO 0x124d3396
No parameters
start_ICO 0x807d2da3
No parameters
start_PREICO 0x405df338
No parameters
transfer 0xa9059cbb
address _to
uint256 _amount
returns: bool
transferFrom 0x23b872dd
address _from
address _to
uint256 _amount
returns: bool
transferOwnership 0xf2fde38b
address newOwner
transferby 0x91c259ea
address _to
uint256 _amount
returns: bool
Recent Transactions
This address has 1 on-chain transactions, but only 1.2% of the chain is indexed. Transactions will appear as indexing progresses. View on Etherscan →