Address Contract Partially Verified
Address
0xB9bb08AB7E9Fa0A1356bd4A39eC0ca267E03b0b3
Balance
0 ETH
Nonce
1
Code Size
8318 bytes
Creator
0x37f81F1d...339b at tx 0x54374293...f85808
Last Active
Indexed Transactions
62 (10,653,022 → 10,702,812)
Gas Used (indexed)
418,988
Contract Bytecode
8318 bytes
0x608060405260043610610196576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146101a0578063095ea7b31461023057806318160ddd146102955780631a0b1b86146102c057806323b872dd146102eb57806329dcb0cf146103705780633097324c1461039b578063313ce567146103c65780634e054a67146103f1578063521eb2731461043457806359e415d31461048b57806364edfbf0146104b657806368a72fba146104c057806370a08231146104eb57806376802b85146105425780638da5cb5b1461059957806395d89b41146105f05780639622c5fd146106805780639aef319f1461073c578063a58fd85b14610753578063a9059cbb14610782578063aaa7062b146107e7578063be9a655514610812578063bff356181461083d578063c1ce53fc1461086c578063d2161687146108d5578063dd62ed3e14610904578063ea6ef2fe1461097b578063efbe1c1c146109a6578063f2fde38b146109d1578063f72084b214610a14578063f7decfd114610a3f575b61019e610a6e565b005b3480156101ac57600080fd5b506101b5610eb2565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101f55780820151818401526020810190506101da565b50505050905090810190601f1680156102225780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561023c57600080fd5b5061027b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f50565b604051808215151515815260200191505060405180910390f35b3480156102a157600080fd5b506102aa6110f4565b6040518082815260200191505060405180910390f35b3480156102cc57600080fd5b506102d56110fa565b6040518082815260200191505060405180910390f35b3480156102f757600080fd5b50610356600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611100565b604051808215151515815260200191505060405180910390f35b34801561037c57600080fd5b506103856113c7565b6040518082815260200191505060405180910390f35b3480156103a757600080fd5b506103b06113cd565b6040518082815260200191505060405180910390f35b3480156103d257600080fd5b506103db6113d3565b6040518082815260200191505060405180910390f35b3480156103fd57600080fd5b50610432600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113d9565b005b34801561044057600080fd5b50610449611682565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561049757600080fd5b506104a06116a8565b6040518082815260200191505060405180910390f35b6104be610a6e565b005b3480156104cc57600080fd5b506104d56116ae565b6040518082815260200191505060405180910390f35b3480156104f757600080fd5b5061052c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116b4565b6040518082815260200191505060405180910390f35b34801561054e57600080fd5b50610583600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116fd565b6040518082815260200191505060405180910390f35b3480156105a557600080fd5b506105ae611715565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105fc57600080fd5b5061060561173b565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561064557808201518184015260208101905061062a565b50505050905090810190601f1680156106725780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561068c57600080fd5b506106c1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117d9565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107015780820151818401526020810190506106e6565b50505050905090810190601f16801561072e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561074857600080fd5b50610751611889565b005b34801561075f57600080fd5b5061078060048036038101908080351515906020019092919050505061193e565b005b34801561078e57600080fd5b506107cd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506119f2565b604051808215151515815260200191505060405180910390f35b3480156107f357600080fd5b506107fc611bad565b6040518082815260200191505060405180910390f35b34801561081e57600080fd5b50610827611bb3565b6040518082815260200191505060405180910390f35b34801561084957600080fd5b5061086a600480360381019080803515159060200190929190505050611bb9565b005b34801561087857600080fd5b506108d3600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611c6d565b005b3480156108e157600080fd5b506108ea611d92565b604051808215151515815260200191505060405180910390f35b34801561091057600080fd5b50610965600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611da5565b6040518082815260200191505060405180910390f35b34801561098757600080fd5b50610990611e2c565b6040518082815260200191505060405180910390f35b3480156109b257600080fd5b506109bb611e32565b6040518082815260200191505060405180910390f35b3480156109dd57600080fd5b50610a12600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e38565b005b348015610a2057600080fd5b50610a29611f0f565b6040518082815260200191505060405180910390f35b348015610a4b57600080fd5b50610a54611f15565b604051808215151515815260200191505060405180910390f35b6000806000600b544211151515610a8457600080fd5b640df84758003a11151515610a9857600080fd5b6009544210151515610aa957600080fd5b34925067016345785d8a00008310151515610ac357600080fd5b610acf60115484611f28565b60118190555060145460115411151515610ae857600080fd5b610b31601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484611f28565b9150600a5442111515610b5a5767058d15e1762800008211151515610b5557600080fd5b610b72565b678ac7230489e800008211151515610b7157600080fd5b5b81601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610bc283601354611f52565b9050610c0d81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f28565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610cbb60026000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482611f85565b60026000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015610d88573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a33373ffffffffffffffffffffffffffffffffffffffff167f3f1cfec7ab004940203f20c0b2592de62030ff6a47b9e0312d5cfcc02cb7107484601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548460405180848152602001838152602001828152602001935050505060405180910390a2505050565b60058054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f485780601f10610f1d57610100808354040283529160200191610f48565b820191906000526020600020905b815481529060010190602001808311610f2b57829003601f168201915b505050505081565b6000600160009054906101000a900460ff1615610f6c57600080fd5b60008214158015610ffa57506000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b1561100457600080fd5b81600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60005481565b60135481565b600080606060048101600036905014151561111a57600080fd5b600160009054906101000a900460ff161561113457600080fd5b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205491506111bd8285611f85565b600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611286600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205485611f85565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611312600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205485611f28565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a36001925050509392505050565b600b5481565b600f5481565b60065481565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561143757600080fd5b601560019054906101000a900460ff16151561145257600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061154460026000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482611f28565b60026000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a38173ffffffffffffffffffffffffffffffffffffffff167f906b403a7519ac9bc0fd466448daa297cf7a5a33f930ba9dfc6c4d0a95b27bb3826040518082815260200191505060405180910390a25050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b60145481565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60126020528060005260406000206000915090505481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60078054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117d15780601f106117a6576101008083540402835291602001916117d1565b820191906000526020600020905b8154815290600101906020018083116117b457829003601f168201915b505050505081565b60166020528060005260406000206000915090508054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156118815780601f1061185657610100808354040283529160200191611881565b820191906000526020600020905b81548152906001019060200180831161186457829003601f168201915b505050505081565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118e557600080fd5b6000601560016101000a81548160ff0219169083151502179055507fc83570cc833aff7d6a8b7cf672903df645c8055265bd66f527aa9e3d053d26776000604051808215151515815260200191505060405180910390a1565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561199a57600080fd5b80601560006101000a81548160ff0219169083151502179055507f6df4eaa3d8aaf0b7455d0f66db534ec432858a40c60638fab7373d0e8c3cc25181604051808215151515815260200191505060405180910390a150565b60006040600481016000369050141515611a0b57600080fd5b600160009054906101000a900460ff1615611a2557600080fd5b611a6e600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484611f85565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611afa600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484611f28565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600191505092915050565b600e5481565b60095481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611c1557600080fd5b80600160006101000a81548160ff0219169083151502179055507f315845123c6f0549151ca220827f2da26372cb5b8ea113bf30a7af87c51e70f981604051808215151515815260200191505060405180910390a150565b601560009054906101000a900460ff161515611c8857600080fd5b80601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209080519060200190611cdb929190611fad565b503373ffffffffffffffffffffffffffffffffffffffff167feec457a060cac001341b6aa57aef4ab1120201f8771515492d29aa5d193d63d6826040518080602001828103825283818151815260200191508051906020019080838360005b83811015611d55578082015181840152602081019050611d3a565b50505050905090810190601f168015611d825780820380516001836020036101000a031916815260200191505b509250505060405180910390a250565b601560009054906101000a900460ff1681565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600c5481565b600a5481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e9457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515611f0c5780600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b600d5481565b601560019054906101000a900460ff1681565b6000808284019050611f48848210158015611f435750838210155b611f9e565b8091505092915050565b6000808284029050611f7b6000851480611f765750838583811515611f7357fe5b04145b611f9e565b8091505092915050565b6000611f9383831115611f9e565b818303905092915050565b801515611faa57600080fd5b50565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611fee57805160ff191683800117855561201c565b8280016001018555821561201c579182015b8281111561201b578251825591602001919060010190612000565b5b509050612029919061202d565b5090565b61204f91905b8082111561204b576000816000905550600101612033565b5090565b905600a165627a7a723058206c6483db81383e0885a8976c5b5d16972b432717f06214ed0e481eb6a917802e0029
Verified Source Code Partial Match
Compiler: v0.4.25-nightly.2018.6.8+commit.81c5a6e4
EVM: byzantium
Optimization: No
PAIStandardToken.sol 272 lines
pragma solidity ^0.4.23;
/*
* Ownable
*
* Base contract with an owner.
* Provides onlyOwner modifier, which prevents function from running if it is called by anyone other than the owner.
*/
contract Ownable {
address public owner;
constructor(){
owner = msg.sender;
}
modifier onlyOwner() {
if (msg.sender != owner) {
revert();
}
_;
}
//transfer owner to another address
function transferOwnership(address _newOwner) onlyOwner {
if (_newOwner != address(0)) {
owner = _newOwner;
}
}
}
/**
* Math operations with safety checks
*/
contract SafeMath {
function safeMul(uint256 a, uint256 b) internal returns (uint256) {
uint256 c = a * b;
assert(a == 0 || c / a == b);
return c;
}
function safeDiv(uint256 a, uint256 b) internal returns (uint256) {
assert(b > 0);
uint256 c = a / b;
assert(a == b * c + a % b);
return c;
}
function safeSub(uint256 a, uint256 b) internal returns (uint256) {
assert(b <= a);
return a - b;
}
function safeAdd(uint256 a, uint256 b) internal returns (uint256) {
uint256 c = a + b;
assert(c>=a && c>=b);
return c;
}
function assert(bool assertion) internal {
if (!assertion) {
revert();
}
}
}
contract Token {
uint256 public totalSupply;
function balanceOf(address _owner) constant returns (uint256 balance);
function transfer(address _to, uint256 _value) returns (bool success);
function transferFrom(address _from, address _to, uint256 _value) returns (bool success);
function approve(address _spender, uint256 _value) returns (bool success);
function allowance(address _owner, address _spender) constant returns (uint256 remaining);
event Transfer(address indexed _from, address indexed _to, uint256 _value);
event Approval(address indexed _owner, address indexed _spender, uint256 _value);
}
contract StandardToken is Token ,SafeMath{
/**
*
* Fix for the ERC20 short address attack
*
* http://vessenes.com/the-erc20-short-address-attack-explained/
*/
modifier onlyPayloadSize(uint size) {
if(msg.data.length != size + 4) {
revert();
}
_;
}
//transfer lock flag
bool transferLock = true;
//transfer modifier
modifier canTransfer() {
if (transferLock) {
revert();
}
_;
}
mapping (address => uint256) balances;
mapping (address => mapping (address => uint256)) allowed;
function transfer(address _to, uint256 _value) onlyPayloadSize(2 * 32) canTransfer returns (bool success) {
balances[msg.sender] = safeSub(balances[msg.sender], _value);
balances[_to] = safeAdd(balances[_to], _value);
Transfer(msg.sender, _to, _value);
return true;
}
function transferFrom(address _from, address _to, uint256 _value) onlyPayloadSize(3 * 32) canTransfer returns (bool success) {
uint256 _allowance = allowed[_from][msg.sender];
allowed[_from][msg.sender] = safeSub(_allowance, _value);
balances[_from] = safeSub(balances[_from], _value);
balances[_to] = safeAdd(balances[_to], _value);
Transfer(_from, _to, _value);
return true;
}
function balanceOf(address _owner) constant returns (uint256 balance) {
return balances[_owner];
}
function approve(address _spender, uint256 _value) canTransfer returns (bool success) {
// 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
if ((_value != 0) && (allowed[msg.sender][_spender] != 0)) revert();
allowed[msg.sender][_spender] = _value;
Approval(msg.sender, _spender, _value);
return true;
}
function allowance(address _owner, address _spender) constant returns (uint remaining) {
return allowed[_owner][_spender];
}
}
contract PAIStandardToken is StandardToken,Ownable{
/* Public variables of the token */
string public name; // name: eg pchain
uint256 public decimals; //How many decimals to show.
string public symbol; //An identifier: eg PAI
address public wallet; //ETH wallet address
uint public start; //crowd sale start time
uint public end; //Crowd sale first phase end time
uint public deadline; // Crowd sale deadline time
uint256 public teamShare = 25; //Team share
uint256 public foundationShare = 25; //Foundation share
uint256 public posShare = 15; //POS share
uint256 public saleShare = 35; //Private share
address internal saleAddr; //private sale wallet address
uint256 public crowdETHTotal = 0; //The ETH amount of current crowdsale
mapping (address => uint256) public crowdETHs; //record user's balance of crowdsale
uint256 public crowdPrice = 10000; //crowdsale price 1(ETH):10000(PAI)
uint256 public crowdTarget = 5000 ether; //The total ETH of crowdsale
bool public reflectSwitch = false; // Whether to allow user to reflect PAI
bool public blacklistSwitch = true; // Whether to allow owner to set blacklist
mapping(address => string) public reflects; // reflect token to PAI address
event PurchaseSuccess(address indexed _addr, uint256 _weiAmount,uint256 _crowdsaleEth,uint256 _balance);
event EthSweepSuccess(address indexed _addr, uint256 _value);
event SetReflectSwitchEvent(bool _b);
event ReflectEvent(address indexed _addr,string _paiAddr);
event BlacklistEvent(address indexed _addr,uint256 _b);
event SetTransferLockEvent(bool _b);
event CloseBlacklistSwitchEvent(bool _b);
constructor(
address _wallet,
uint _s,
uint _e,
uint _d,
address _teamAddr,
address _fundationAddr,
address _saleAddr,
address _posAddr
) {
totalSupply = 2100000000000000000000000000; // Update total supply
name = "PCHAIN"; // Set the name for display purposes
decimals = 18; // Amount of decimals for display purposes
symbol = "PAI"; // Set the symbol for display purposes
wallet = _wallet; // Set ETH wallet address
start = _s; // Set start time for crowsale
end = _e; // Set Crowd sale first phase end time
deadline = _d; // Set Crowd sale deadline time
saleAddr = _saleAddr; // Set sale account address
balances[_teamAddr] = safeMul(safeDiv(totalSupply,100),teamShare); //Team balance
balances[_fundationAddr] = safeMul(safeDiv(totalSupply,100),foundationShare); //Foundation balance
balances[_posAddr] = safeMul(safeDiv(totalSupply,100),posShare); //POS balance
balances[_saleAddr] = safeMul(safeDiv(totalSupply,100),saleShare) ; //Sale balance
Transfer(address(0), _teamAddr, balances[_teamAddr]);
Transfer(address(0), _fundationAddr, balances[_fundationAddr]);
Transfer(address(0), _posAddr, balances[_posAddr]);
Transfer(address(0), _saleAddr, balances[_saleAddr]);
}
//set transfer lock
function setTransferLock(bool _lock) onlyOwner{
transferLock = _lock;
SetTransferLockEvent(_lock);
}
//Permanently turn off the blacklist switch
function closeBlacklistSwitch() onlyOwner{
blacklistSwitch = false;
CloseBlacklistSwitchEvent(false);
}
//set blacklist
function setBlacklist(address _addr) onlyOwner{
require(blacklistSwitch);
uint256 tokenAmount = balances[_addr]; //calculate user token amount
balances[_addr] = 0;//clear user‘s PAI balance
balances[saleAddr] = safeAdd(balances[saleAddr],tokenAmount); //add PAI tokenAmount to Sale
Transfer(_addr, saleAddr, tokenAmount);
BlacklistEvent(_addr,tokenAmount);
}
//set reflect switch
function setReflectSwitch(bool _s) onlyOwner{
reflectSwitch = _s;
SetReflectSwitchEvent(_s);
}
function reflect(string _paiAddress){
require(reflectSwitch);
reflects[msg.sender] = _paiAddress;
ReflectEvent(msg.sender,_paiAddress);
}
function purchase() payable{
require(block.timestamp <= deadline); //the timestamp must be less than the deadline time
require(tx.gasprice <= 60000000000);
require(block.timestamp >= start); //the timestamp must be greater than the start time
uint256 weiAmount = msg.value; // The amount purchased by the current user
require(weiAmount >= 0.1 ether);
crowdETHTotal = safeAdd(crowdETHTotal,weiAmount); // Calculate the total amount purchased by all users
require(crowdETHTotal <= crowdTarget); // The total amount is less than or equal to the target amount
uint256 userETHTotal = safeAdd(crowdETHs[msg.sender],weiAmount); // Calculate the total amount purchased by the current user
if(block.timestamp <= end){ // whether the current timestamp is in the first phase
require(userETHTotal <= 0.4 ether); // whether the total amount purchased by the current user is less than 0.4ETH
}else{
require(userETHTotal <= 10 ether); // whether the total amount purchased by the current user is less than 10ETH
}
crowdETHs[msg.sender] = userETHTotal; // Record the total amount purchased by the current user
uint256 tokenAmount = safeMul(weiAmount,crowdPrice); //calculate user token amount
balances[msg.sender] = safeAdd(tokenAmount,balances[msg.sender]);//recharge user‘s PAI balance
balances[saleAddr] = safeSub(balances[saleAddr],tokenAmount); //sub PAI tokenAmount from Sale
wallet.transfer(weiAmount);
Transfer(saleAddr, msg.sender, tokenAmount);
PurchaseSuccess(msg.sender,weiAmount,crowdETHs[msg.sender],tokenAmount);
}
function () payable{
purchase();
}
}
Read Contract
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
blacklistSwitch 0xf7decfd1 → bool
crowdETHTotal 0x59e415d3 → uint256
crowdETHs 0x76802b85 → uint256
crowdPrice 0x1a0b1b86 → uint256
crowdTarget 0x68a72fba → uint256
deadline 0x29dcb0cf → uint256
decimals 0x313ce567 → uint256
end 0xefbe1c1c → uint256
foundationShare 0xf72084b2 → uint256
name 0x06fdde03 → string
owner 0x8da5cb5b → address
posShare 0xaaa7062b → uint256
reflectSwitch 0xd2161687 → bool
reflects 0x9622c5fd → string
saleShare 0x3097324c → uint256
start 0xbe9a6555 → uint256
symbol 0x95d89b41 → string
teamShare 0xea6ef2fe → uint256
totalSupply 0x18160ddd → uint256
wallet 0x521eb273 → address
Write Contract 10 functions
These functions modify contract state and require a wallet transaction to execute.
approve 0x095ea7b3
address _spender
uint256 _value
returns: bool
closeBlacklistSwitch 0x9aef319f
No parameters
purchase 0x64edfbf0
No parameters
reflect 0xc1ce53fc
string _paiAddress
setBlacklist 0x4e054a67
address _addr
setReflectSwitch 0xa58fd85b
bool _s
setTransferLock 0xbff35618
bool _lock
transfer 0xa9059cbb
address _to
uint256 _value
returns: bool
transferFrom 0x23b872dd
address _from
address _to
uint256 _value
returns: bool
transferOwnership 0xf2fde38b
address _newOwner
Top Interactions
| Address | Txns | Sent | Received |
|---|---|---|---|
| 0x0D070796...92Fe | 2 | 2 | |
| 0xb6ecF461...59F0 | 1 | 1 | |
| 0xbc45347d...9d16 | 1 | 1 | |
| 0xCb34F196...4251 | 1 | 1 | |
| 0x16C4E97b...F5e3 | 1 | 1 | |
| 0x95F8B89d...EB9D | 1 | 1 | |
| 0x9Cba9734...0de9 | 1 | 1 | |
| 0x2e7eBe53...f6FE | 1 | 1 |
Recent Transactions
|
| Hash | Block | Age | From/To | Value | |
|---|---|---|---|---|---|
| 0xe1e54b5c...023bbd | 10,702,812 | IN | 0x2e7eBe53...f6FE | 0 ETH | |
| 0x23c5614f...398a3b | 10,659,217 | IN | 0xb5EFdb84...6A60 | 0 ETH | |
| 0xb1ece080...0ce351 | 10,659,027 | IN | 0x9Cba9734...0de9 | 0 ETH | |
| 0xf7db8c7a...f8efe7 | 10,658,904 | IN | 0x95F8B89d...EB9D | 0 ETH | |
| 0x78d2b2fd...10aea6 | 10,657,900 | IN | 0x16C4E97b...F5e3 | 0 ETH | |
| 0xef67602f...2eb195 | 10,657,316 | IN | 0xb6ecF461...59F0 | 0 ETH | |
| 0xbacf61ba...5140d2 | 10,656,696 | IN | 0xCb34F196...4251 | 0 ETH | |
| 0xdf73b76d...85bebe | 10,653,258 | IN | 0x0D070796...92Fe | 0 ETH | |
| 0x1d0be38e...97ff43 | 10,653,204 | IN | 0x0D070796...92Fe | 0 ETH | |
| 0x4770ab65...86991f | 10,653,022 | IN | 0xbc45347d...9d16 | 0 ETH |