Transactions:
14 txns
TokenTracker:
[ Download CSV Export ]
Latest 1 Internal Transaction Internal Transactions as a result of Contract Execution
Parent TxHash | Block | Age | From | To | Value | |
---|---|---|---|---|---|---|
0x6bc81c9ec727fbd4fa974776aa0b8542746a03e780653d591e9bf5d47a3057ed | 4472535 | 475 days 19 hrs ago | 0x280b12a70b48dcccfc263d6ef62e311b50169bdd | Contract Creation | 0 Ether |
[ Download CSV Export ]
Warning: The compiled contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity), NestedArrayFunctionCallDecoder (medium-severity) Solidity Compiler Bugs.
Contract Source Code Verified (Exact Match)
Contract Source Code Verified (Exact Match)
Contract Name: | XulToken |
Compiler Version: | v0.4.18+commit.9cf6e910 |
Optimization Enabled: | Yes |
Runs (Optimizer): | 200 |
Contract Source Code
contract ERC20Basic { uint256 public totalSupply; function balanceOf(address who) public constant returns (uint256); function transfer(address to, uint256 value) public returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); } contract ERC20 is ERC20Basic { function allowance(address owner, address spender) public constant returns (uint256); function transferFrom(address from, address to, uint256 value) public returns (bool); function approve(address spender, uint256 value) public returns (bool); event Approval(address indexed owner, address indexed spender, uint256 value); } contract BasicToken is ERC20Basic { using SafeMath for uint256; mapping(address => uint256) balances; function transfer(address _to, uint256 _value) public returns (bool) { require(_to != address(0)); // SafeMath.sub will throw if there is not enough balance. balances[msg.sender] = balances[msg.sender].sub(_value); balances[_to] = balances[_to].add(_value); Transfer(msg.sender, _to, _value); return true; } function balanceOf(address _owner) public constant returns (uint256 balance) { return balances[_owner]; } } contract StandardToken is ERC20, BasicToken { mapping (address => mapping (address => uint256)) internal allowed; function transferFrom(address _from, address _to, uint256 _value) public returns (bool) { require(_to != address(0)); uint256 _allowance = allowed[_from][msg.sender]; balances[_from] = balances[_from].sub(_value); balances[_to] = balances[_to].add(_value); allowed[_from][msg.sender] = _allowance.sub(_value); Transfer(_from, _to, _value); return true; } function approve(address _spender, uint256 _value) public returns (bool) { allowed[msg.sender][_spender] = _value; Approval(msg.sender, _spender, _value); return true; } function allowance(address _owner, address _spender) public constant returns (uint256 remaining) { return allowed[_owner][_spender]; } function increaseApproval (address _spender, uint _addedValue) public returns (bool success) { allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue); Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } function decreaseApproval (address _spender, uint _subtractedValue) public returns (bool success) { uint oldValue = allowed[msg.sender][_spender]; if (_subtractedValue > oldValue) { allowed[msg.sender][_spender] = 0; } else { allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue); } Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } } contract Ownable { address public owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); function Ownable() { owner = msg.sender; } modifier onlyOwner() { require(msg.sender == owner); _; } function transferOwnership(address newOwner) onlyOwner { require(newOwner != address(0)); OwnershipTransferred(owner, newOwner); owner = newOwner; } } contract Pausable is Ownable { event Pause(); event Unpause(); bool public paused = true; modifier whenNotPaused() { require(!paused); _; } modifier whenPaused() { require(paused); _; } function pause() onlyOwner whenNotPaused { paused = true; Pause(); } function unpause() onlyOwner whenPaused { paused = false; Unpause(); } } contract MintableToken is StandardToken, Ownable { event Mint(address indexed to, uint256 amount); event MintFinished(); bool public mintingFinished = false; modifier canMint() { require(!mintingFinished); _; } function mint(address _to, uint256 _amount) onlyOwner canMint public returns (bool) { totalSupply = totalSupply.add(_amount); balances[_to] = balances[_to].add(_amount); Mint(_to, _amount); Transfer(0x0, _to, _amount); return true; } function finishMinting() onlyOwner public returns (bool) { mintingFinished = true; MintFinished(); return true; } } library SafeMath { function mul(uint256 a, uint256 b) internal constant returns (uint256) { uint256 c = a * b; assert(a == 0 || c / a == b); return c; } function div(uint256 a, uint256 b) internal constant returns (uint256) { uint256 c = a / b; return c; } function sub(uint256 a, uint256 b) internal constant returns (uint256) { assert(b <= a); return a - b; } function add(uint256 a, uint256 b) internal constant returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } } contract Crowdsale { using SafeMath for uint256; MintableToken public token; uint256 public startTime; uint256 public endTime; address wallet; uint256 public rate; uint256 public weiRaised; event TokenPurchase(address indexed purchaser, address indexed beneficiary, uint256 value, uint256 amount); function Crowdsale(uint256 _startTime, uint256 _endTime, uint256 _rate, address _wallet) { require(_startTime >= 0); require(_endTime >= _startTime); require(_rate > 0); require(_wallet != 0x0); token = createTokenContract(); startTime = _startTime; endTime = _endTime; rate = _rate; wallet = _wallet; } function createTokenContract() internal returns (MintableToken) { return new MintableToken(); } function () payable { buyTokens(msg.sender); } function buyTokens(address beneficiary) public payable { require(beneficiary != 0x0); require(validPurchase()); uint256 weiAmount = msg.value; uint256 tokens = weiAmount.mul(rate); weiRaised = weiRaised.add(weiAmount); token.mint(beneficiary, tokens); TokenPurchase(msg.sender, beneficiary, weiAmount, tokens); forwardFunds(); } function forwardFunds() internal { wallet.transfer(msg.value); } function validPurchase() internal constant returns (bool) { bool withinPeriod = now >= startTime && now <= endTime; bool nonZeroPurchase = msg.value != 0; return withinPeriod && nonZeroPurchase; } function hasEnded() public constant returns (bool) { return now > endTime; } } contract XulToken is MintableToken, Pausable { string public constant name = "XULToken"; string public constant symbol = "XUL"; uint8 public constant decimals = 18; uint256 public preIcoEndDate = 1510704000; function XulToken() { } function mint(address _to, uint256 _amount) onlyOwner canMint whenNotPaused public returns (bool) { uint256 goal = 300000000 * (10**18); if (isPreIcoDate()) { uint256 sum = totalSupply.add(_amount); require(sum <= goal); } totalSupply = totalSupply.add(_amount); balances[_to] = balances[_to].add(_amount); Mint(_to, _amount); Transfer(0x0, _to, _amount); if (totalSupply == goal && isPreIcoDate()) { paused = true; } return true; } function superMint(address _to, uint256 _amount) onlyOwner canMint public returns (bool) { balances[_to] = balances[_to].add(_amount); Mint(_to, _amount); Transfer(0x0, _to, _amount); return true; } function changePreIcoEndDate(uint256 _preIcoEndDate) onlyOwner public { require(_preIcoEndDate > 0); preIcoEndDate = _preIcoEndDate; } function isPreIcoDate() public returns(bool) { return now <= preIcoEndDate; } } contract XulCrowdsale is Crowdsale, Ownable { XulToken public xultoken; function XulCrowdsale(uint256 _startTime, uint256 _endTime, uint256 _rate, address _wallet) Crowdsale(_startTime, _endTime, _rate, _wallet) { } function createTokenContract() internal returns (MintableToken) { xultoken = new XulToken(); return xultoken; } function changeRate(uint256 _rate) public onlyOwner returns (bool){ require(_rate > 0); rate = _rate; } function pauseToken() public onlyOwner returns(bool){ xultoken.pause(); } function unpauseToken() public onlyOwner returns(bool){ xultoken.unpause(); } function mintToken(address _to, uint256 _amount) public onlyOwner returns(bool){ xultoken.mint(_to, _amount * (10 ** 18)); } function mintBulk(address[] _receivers, uint256[] _amounts) onlyOwner public { require(_receivers.length == _amounts.length); for (uint i = 0; i < _receivers.length; i++) { mintToken(_receivers[i], _amounts[i]); } } function superMint(address _to, uint256 _amount) public onlyOwner returns(bool) { xultoken.superMint(_to, _amount * (10 ** 18)); } function setStartTime(uint256 _startTime) public onlyOwner { require(_startTime > 0); startTime = _startTime; } function setEndTime(uint256 _endTime) public onlyOwner { require(_endTime > 0); endTime = _endTime; } function setPreIcoEndDate(uint256 _preIcoEndDate) public onlyOwner { xultoken.changePreIcoEndDate(_preIcoEndDate); } }
Contract ABI
[{"constant":true,"inputs":[],"name":"mintingFinished","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"mint","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"preIcoEndDate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finishMinting","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"isPreIcoDate","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_preIcoEndDate","type":"uint256"}],"name":"changePreIcoEndDate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"superMint","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[],"name":"MintFinished","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]
Contract Creation Code
60606040526003805460a060020a61ffff0219167501000000000000000000000000000000000000000000179055635a0b8380600455341561004057600080fd5b60038054600160a060020a03191633600160a060020a0316179055610e6b8061006a6000396000f3006060604052600436106101325763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166305d2035b811461013757806306fdde031461015e578063095ea7b3146101e857806318160ddd1461020a57806323b872dd1461022f578063313ce567146102575780633f4ba83a1461028057806340c10f191461029557806344edf6b2146102b75780635c975abb146102ca57806366188463146102dd57806370a08231146102ff5780637d64bcb41461031e5780638456cb59146103315780638da5cb5b1461034457806395d89b4114610373578063a9059cbb14610386578063d73dd623146103a8578063dd62ed3e146103ca578063e1ee9a3d146103ef578063e9d724e514610402578063f2fde38b14610418578063fa6171e414610437575b600080fd5b341561014257600080fd5b61014a610459565b604051901515815260200160405180910390f35b341561016957600080fd5b610171610469565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101ad578082015183820152602001610195565b50505050905090810190601f1680156101da5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101f357600080fd5b61014a600160a060020a03600435166024356104a0565b341561021557600080fd5b61021d61050c565b60405190815260200160405180910390f35b341561023a57600080fd5b61014a600160a060020a0360043581169060243516604435610512565b341561026257600080fd5b61026a61062a565b60405160ff909116815260200160405180910390f35b341561028b57600080fd5b61029361062f565b005b34156102a057600080fd5b61014a600160a060020a03600435166024356106af565b34156102c257600080fd5b61021d610843565b34156102d557600080fd5b61014a610849565b34156102e857600080fd5b61014a600160a060020a0360043516602435610859565b341561030a57600080fd5b61021d600160a060020a0360043516610953565b341561032957600080fd5b61014a61096e565b341561033c57600080fd5b6102936109e2565b341561034f57600080fd5b610357610a67565b604051600160a060020a03909116815260200160405180910390f35b341561037e57600080fd5b610171610a76565b341561039157600080fd5b61014a600160a060020a0360043516602435610aad565b34156103b357600080fd5b61014a600160a060020a0360043516602435610b71565b34156103d557600080fd5b61021d600160a060020a0360043581169060243516610c15565b34156103fa57600080fd5b61014a610c40565b341561040d57600080fd5b610293600435610c49565b341561042357600080fd5b610293600160a060020a0360043516610c76565b341561044257600080fd5b61014a600160a060020a0360043516602435610d11565b60035460a060020a900460ff1681565b60408051908101604052600881527f58554c546f6b656e000000000000000000000000000000000000000000000000602082015281565b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b60005481565b600080600160a060020a038416151561052a57600080fd5b50600160a060020a03808516600081815260026020908152604080832033909516835293815283822054928252600190529190912054610570908463ffffffff610df716565b600160a060020a0380871660009081526001602052604080822093909355908616815220546105a5908463ffffffff610e0916565b600160a060020a0385166000908152600160205260409020556105ce818463ffffffff610df716565b600160a060020a0380871660008181526002602090815260408083203386168452909152908190209390935590861691600080516020610e208339815191529086905190815260200160405180910390a3506001949350505050565b601281565b60035433600160a060020a0390811691161461064a57600080fd5b60035460a860020a900460ff16151561066257600080fd5b6003805475ff000000000000000000000000000000000000000000191690557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b6003546000908190819033600160a060020a039081169116146106d157600080fd5b60035460a060020a900460ff16156106e857600080fd5b60035460a860020a900460ff16156106ff57600080fd5b6af8277896582678ac0000009150610715610c40565b1561073c5760005461072d908563ffffffff610e0916565b90508181111561073c57600080fd5b60005461074f908563ffffffff610e0916565b6000908155600160a060020a03861681526001602052604090205461077a908563ffffffff610e0916565b600160a060020a0386166000818152600160205260409081902092909255907f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968859086905190815260200160405180910390a284600160a060020a03166000600080516020610e208339815191528660405190815260200160405180910390a38160005414801561080d575061080d610c40565b15610838576003805475ff000000000000000000000000000000000000000000191660a860020a1790555b506001949350505050565b60045481565b60035460a860020a900460ff1681565b600160a060020a033381166000908152600260209081526040808320938616835292905290812054808311156108b657600160a060020a0333811660009081526002602090815260408083209388168352929052908120556108ed565b6108c6818463ffffffff610df716565b600160a060020a033381166000908152600260209081526040808320938916835292905220555b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a35060019392505050565b600160a060020a031660009081526001602052604090205490565b60035460009033600160a060020a0390811691161461098c57600080fd5b6003805474ff0000000000000000000000000000000000000000191660a060020a1790557fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a150600190565b60035433600160a060020a039081169116146109fd57600080fd5b60035460a860020a900460ff1615610a1457600080fd5b6003805475ff000000000000000000000000000000000000000000191660a860020a1790557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b600354600160a060020a031681565b60408051908101604052600381527f58554c0000000000000000000000000000000000000000000000000000000000602082015281565b6000600160a060020a0383161515610ac457600080fd5b600160a060020a033316600090815260016020526040902054610aed908363ffffffff610df716565b600160a060020a033381166000908152600160205260408082209390935590851681522054610b22908363ffffffff610e0916565b600160a060020a038085166000818152600160205260409081902093909355913390911690600080516020610e208339815191529085905190815260200160405180910390a350600192915050565b600160a060020a033381166000908152600260209081526040808320938616835292905290812054610ba9908363ffffffff610e0916565b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a350600192915050565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b60045442111590565b60035433600160a060020a03908116911614610c6457600080fd5b60008111610c7157600080fd5b600455565b60035433600160a060020a03908116911614610c9157600080fd5b600160a060020a0381161515610ca657600080fd5b600354600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60035460009033600160a060020a03908116911614610d2f57600080fd5b60035460a060020a900460ff1615610d4657600080fd5b600160a060020a038316600090815260016020526040902054610d6f908363ffffffff610e0916565b600160a060020a0384166000818152600160205260409081902092909255907f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968859084905190815260200160405180910390a282600160a060020a03166000600080516020610e208339815191528460405190815260200160405180910390a350600192915050565b600082821115610e0357fe5b50900390565b600082820183811015610e1857fe5b93925050505600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a723058206669bc2050bde43f0b42d8036a497bf2e9e109ced054edcf6c2e3643510cbb390029
Swarm Source:
bzzr://6669bc2050bde43f0b42d8036a497bf2e9e109ced054edcf6c2e3643510cbb39
Block | Age | transaction | Difficulty | GasUsed | Reward |
---|
Block | Age | Uncle Number | Difficulty | GasUsed | Reward |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.