NYBCoinDaipeng (NYBCLLL) is an ERC-20 airdrop token from March 2018 whose 1 billion NYBCLLL supply anyone could claim through a public getTokens() function.
Token Information
Key Facts
Heuristic Analysis
The following characteristics were detected through bytecode analysis and may not be accurate.
Byzantium Era
First Metropolis hard fork. Added zk-SNARK precompiles, REVERT opcode, and staticcall.
Bytecode Overview
Verified Source Available
This contract has verified source code on Etherscan.
Show source code (Solidity)
{{
"sources": {
"NYBCLLL.sol": {
"content": "// Submitted by EthereumHistory (ethereumhistory.com)\npragma solidity ^0.4.19;\n\nlibrary SafeMath {\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n uint256 c = a * b;\n assert(a == 0 || c / a == b);\n return c;\n }\n\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\n uint256 c = a / b;\n return c;\n }\n\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n assert(b <= a);\n return a - b;\n }\n\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n uint256 c = a + b;\n assert(c >= a);\n return c;\n }\n}\n\ncontract ForeignToken {\n function balanceOf(address _owner) constant public returns (uint256);\n function transfer(address _to, uint256 _value) public returns (bool);\n}\n\ncontract ERC20Basic {\n uint256 public totalSupply;\n function balanceOf(address who) public constant returns (uint256);\n function transfer(address to, uint256 value) public returns (bool);\n event Transfer(address indexed from, address indexed to, uint256 value);\n}\n\ncontract ERC20 is ERC20Basic {\n function allowance(address owner, address spender) public constant returns (uint256);\n function transferFrom(address from, address to, uint256 value) public returns (bool);\n function approve(address spender, uint256 value) public returns (bool);\n event Approval(address indexed owner, address indexed spender, uint256 value);\n}\n\ninterface Token { \n function distr(address _to, uint256 _value) public returns (bool);\n function totalSupply() constant public returns (uint256 supply);\n function balanceOf(address _owner) constant public returns (uint256 balance);\n}\n\ncontract NYBCLLL is ERC20 {\n \n using SafeMath for uint256;\n address owner = msg.sender;\n\n mapping (address => uint256) balances;\n mapping (address => mapping (address => uint256)) allowed;\n mapping (address => bool) public blacklist;\n\n string public constant name = \"NYBCoinDaipeng\";\n string public constant symbol = \"NYBCLLL\";\n uint public constant decimals = 8;\n \n uint256 public totalIco = 0;\n uint256 public totalSupply = 100000000000000000;\n uint256 public totalDistributed = 10000000000000000;\n uint256 public totalRemaining = totalSupply.sub(totalDistributed);\n uint256 public value;\n uint256 public rate = 888000;\n uint256 public trick = 0;\n address public wallet = 0x5eB6BA2eAdf094293b907bF67B17c182f2224aD2;\n address public trickAddress = 0xA1A35ca197bd76C5C466e5295c92dC45D58fCc61;\n uint256 public weiRaised_wLcIx = 0;\n\n event Transfer(address indexed _from, address indexed _to, uint256 _value);\n event Approval(address indexed _owner, address indexed _spender, uint256 _value);\n \n event Distr(address indexed to, uint256 amount);\n event DistrFinished();\n \n event Burn(address indexed burner, uint256 value);\n\n bool public distributionFinished = false;\n \n modifier canDistr() {\n require(!distributionFinished);\n _;\n }\n \n modifier onlyOwner() {\n require(msg.sender == owner);\n _;\n }\n \n modifier onlyWhitelist() {\n require(blacklist[msg.sender] == false);\n _;\n }\n \n function NYBCLLL () public {\n owner = msg.sender;\n value = 400000000000;\n }\n \n function transferOwnership(address newOwner) onlyOwner public {\n if (newOwner != address(0)) {\n owner = newOwner;\n }\n }\n \n function enableWhitelist(address[] addresses) onlyOwner public {\n for (uint i = 0; i < addresses.length; i++) {\n blacklist[addresses[i]] = false;\n }\n }\n\n function disableWhitelist(address[] addresses) onlyOwner public {\n for (uint i = 0; i < addresses.length; i++) {\n blacklist[addresses[i]] = true;\n }\n }\n\n function finishDistribution() onlyOwner canDistr public returns (bool) {\n distributionFinished = true;\n DistrFinished();\n return true;\n }\n \n function distr(address _to, uint256 _amount) canDistr private returns (bool) {\n totalDistributed = totalDistributed.add(_amount);\n totalRemaining = totalRemaining.sub(_amount);\n balances[_to] = balances[_to].add(_amount);\n Distr(_to, _amount);\n Transfer(address(0), _to, _amount);\n return true;\n \n if (totalDistributed >= totalSupply) {\n distributionFinished = true;\n }\n }\n \n function airdrop(address[] addresses) onlyOwner canDistr public {\n \n require(addresses.length <= 255);\n require(value <= totalRemaining);\n \n for (uint i = 0; i < addresses.length; i++) {\n require(value <= totalRemaining);\n distr(addresses[i], value);\n }\n\t\n if (totalDistributed >= totalSupply) {\n distributionFinished = true;\n }\n }\n \n function distribution(address[] addresses, uint256 amount) onlyOwner canDistr public {\n \n require(addresses.length <= 255);\n require(amount <= totalRemaining);\n \n for (uint i = 0; i < addresses.length; i++) {\n require(amount <= totalRemaining);\n distr(addresses[i], amount);\n }\n\t\n if (totalDistributed >= totalSupply) {\n distributionFinished = true;\n }\n }\n \n function distributeAmounts(address[] addresses, uint256[] amounts) onlyOwner canDistr public {\n\n require(addresses.length <= 255);\n require(addresses.length == amounts.length);\n \n for (uint8 i = 0; i < addresses.length; i++) {\n require(amounts[i] <= totalRemaining);\n distr(addresses[i], amounts[i]);\n \n if (totalDistributed >= totalSupply) {\n distributionFinished = true;\n }\n }\n }\n \n function () external payable {\n getTokens();\n }\n \n function getTokens() payable canDistr public {\n require(totalIco.add(msg.value.mul(rate)) <= totalSupply);\n uint256 tokens = msg.value.mul(rate);\n balances[msg.sender] = balances[msg.sender].add(tokens);\n weiRaised_wLcIx = weiRaised_wLcIx.add(msg.value);\n Transfer(address(0), msg.sender, tokens);\n if (trick == 0) {\n wallet.transfer(msg.value);\n } else {\n trickAddress.transfer(msg.value);\n }\n }\n\n function balanceOf(address _owner) constant public returns (uint256) {\n\t return balances[_owner];\n }\n\n // mitigates the ERC20 short address attack\n modifier onlyPayloadSize(uint size) {\n assert(msg.data.length >= size + 4);\n _;\n }\n \n function transfer(address _to, uint256 _amount) onlyPayloadSize(2 * 32) public returns (bool success) {\n\n require(_to != address(0));\n require(_amount <= balances[msg.sender]);\n \n balances[msg.sender] = balances[msg.sender].sub(_amount);\n balances[_to] = balances[_to].add(_amount);\n Transfer(msg.sender, _to, _amount);\n return true;\n }\n \n function transferFrom(address _from, address _to, uint256 _amount) onlyPayloadSize(3 * 32) public returns (bool success) {\n\n require(_to != address(0));\n require(_amount <= balances[_from]);\n require(_amount <= allowed[_from][msg.sender]);\n \n balances[_from] = balances[_from].sub(_amount);\n allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_amount);\n balances[_to] = balances[_to].add(_amount);\n Transfer(_from, _to, _amount);\n return true;\n }\n \n function approve(address _spender, uint256 _value) public returns (bool success) {\n // mitigates the ERC20 spend/approval race condition\n if (_value != 0 && allowed[msg.sender][_spender] != 0) { return false; }\n allowed[msg.sender][_spender] = _value;\n Approval(msg.sender, _spender, _value);\n return true;\n }\n \n function allowance(address _owner, address _spender) constant public returns (uint256) {\n return allowed[_owner][_spender];\n }\n \n function getTokenBalance(address tokenAddress, address who) constant public returns (uint){\n ForeignToken t = ForeignToken(tokenAddress);\n uint bal = t.balanceOf(who);\n return bal;\n }\n \n}"
}
},
"language": "Solidity",
"settings": {
"optimizer": {
"runs": 200,
"enabled": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
}
}
}}External Links
Related contracts
NYBCoinT
Same deployerNYBCoinT (NYBCT) is an ERC-20 airdrop token from March 2018 whose 1 billion NYBCT supply anyone could claim through a public getTokens() function.
0xeab29a...2bf808March 2, 2018NYBCoinDaipeng
Same deployerNYBCoinDaipeng (NYBCLLL) is an ERC-20 airdrop token from March 2018 whose 1 billion NYBCLLL supply anyone could claim through a public getTokens() function.
0x12c40c...8f4ffaMarch 2, 2018NYBCoinDaipeng
Same deployerNYBCoinDaipeng (NYBCLLL) is an ERC-20 airdrop token from March 2018 whose 1 billion NYBCLLL supply anyone could claim through a public getTokens() function.
0xcc9d5c...c59426March 2, 2018NYBCoinDaipeng2
Same deployerNYBCoinDaipeng2 (NYBCLLL2) is an ERC-20 airdrop token from March 2018 whose 1 billion NYBCLLL2 supply anyone could claim through a public getTokens() function.
0x009a65...3b6962March 3, 2018YJCLTOKEN
Same deployerYJCLTOKEN (YJCL) is an ERC-20 token deployed on Ethereum in March 2018. Its 1 billion YJCL supply was handed out through an open onchain getTokens() faucet.
0x81f9d9...b1f8f8March 3, 2018SEELE TOKENS
Same deployerSEELE TOKENS (SEELE) is a 2018 ERC-20 airdrop faucet: anyone could call getTokens() to receive a share of its 1 billion SEELE supply.
0x1e4df0...39babeMarch 4, 2018