Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 50 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 4657973 | 2500 days ago | IN | 0 ETH | 0.00001425 | ||||
Transfer | 4657965 | 2500 days ago | IN | 0 ETH | 0.00001429 | ||||
Transfer | 4657927 | 2500 days ago | IN | 0 ETH | 0.00000238 | ||||
Accept Ownership | 4601736 | 2510 days ago | IN | 0 ETH | 0.00057577 | ||||
Change Owner | 4596144 | 2510 days ago | IN | 0 ETH | 0.00021918 | ||||
Transfer | 4463006 | 2532 days ago | IN | 0 ETH | 0.0005965 | ||||
Transfer | 4462928 | 2532 days ago | IN | 0 ETH | 0.0005965 | ||||
Transfer | 4462846 | 2532 days ago | IN | 0 ETH | 0.0005965 | ||||
Transfer | 4458841 | 2533 days ago | IN | 0 ETH | 0.0005965 | ||||
Transfer | 4458823 | 2533 days ago | IN | 0 ETH | 0.00076048 | ||||
Transfer | 4458760 | 2533 days ago | IN | 0 ETH | 0.00049906 | ||||
Transfer | 4458756 | 2533 days ago | IN | 0 ETH | 0.00049906 | ||||
Transfer | 4458740 | 2533 days ago | IN | 0 ETH | 0.00049906 | ||||
Transfer | 4458711 | 2533 days ago | IN | 0 ETH | 0.00049906 | ||||
Transfer | 4458700 | 2533 days ago | IN | 0 ETH | 0.00049906 | ||||
Transfer | 4458687 | 2533 days ago | IN | 0 ETH | 0.00049906 | ||||
Transfer | 4458682 | 2533 days ago | IN | 0 ETH | 0.00049906 | ||||
Approve | 4357750 | 2551 days ago | IN | 0 ETH | 0.00375 | ||||
Multi Mint | 4357596 | 2551 days ago | IN | 0 ETH | 0.00754243 | ||||
Multi Mint | 4357592 | 2551 days ago | IN | 0 ETH | 0.01396428 | ||||
Multi Mint | 4357590 | 2551 days ago | IN | 0 ETH | 0.014413 | ||||
Multi Mint | 4357588 | 2551 days ago | IN | 0 ETH | 0.01426172 | ||||
Multi Mint | 4357586 | 2551 days ago | IN | 0 ETH | 0.01410596 | ||||
Multi Mint | 4357584 | 2551 days ago | IN | 0 ETH | 0.01501492 | ||||
Multi Mint | 4357582 | 2551 days ago | IN | 0 ETH | 0.01470724 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
Ledger
Compiler Version
v0.4.17+commit.bdeb9e52
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2017-11-22 */ pragma solidity >=0.4.10; // from Zeppelin contract SafeMath { function safeMul(uint a, uint b) internal returns (uint) { uint c = a * b; require(a == 0 || c / a == b); return c; } function safeSub(uint a, uint b) internal returns (uint) { require(b <= a); return a - b; } function safeAdd(uint a, uint b) internal returns (uint) { uint c = a + b; require(c>=a && c>=b); return c; } } contract Owned { address public owner; address newOwner; function Owned() { owner = msg.sender; } modifier onlyOwner() { require(msg.sender == owner); _; } function changeOwner(address _newOwner) onlyOwner { newOwner = _newOwner; } function acceptOwnership() { if (msg.sender == newOwner) { owner = newOwner; } } } contract IToken { function transfer(address _to, uint _value) returns (bool); function balanceOf(address owner) returns(uint); } // In case someone accidentally sends token to one of these contracts, // add a way to get them back out. contract TokenReceivable is Owned { function claimTokens(address _token, address _to) onlyOwner returns (bool) { IToken token = IToken(_token); return token.transfer(_to, token.balanceOf(this)); } } contract EventDefinitions { event Transfer(address indexed from, address indexed to, uint value); event Approval(address indexed owner, address indexed spender, uint value); event Burn(address indexed from, bytes32 indexed to, uint value); event Claimed(address indexed claimer, uint value); } contract Pausable is Owned { bool public paused; function pause() onlyOwner { paused = true; } function unpause() onlyOwner { paused = false; } modifier notPaused() { require(!paused); _; } } contract Finalizable is Owned { bool public finalized; function finalize() onlyOwner { finalized = true; } modifier notFinalized() { require(!finalized); _; } } contract Ledger is Owned, SafeMath, Finalizable { Controller public controller; mapping(address => uint) public balanceOf; mapping (address => mapping (address => uint)) public allowance; uint public totalSupply; uint public mintingNonce; bool public mintingStopped; /** * Used for updating the contract with proofs. Note that the logic * for guarding against unwanted actions happens in the controller. We only * specify onlyController here. * @notice: not yet used */ mapping(uint256 => bytes32) public proofs; /** * If bridge delivers currency back from the other network, it may be that we * want to lock it until the user is able to "claim" it. This mapping would store the * state of the unclaimed currency. * @notice: not yet used */ mapping(address => uint256) public locked; /** * As a precautionary measure, we may want to include a structure to store necessary * data should we find that we require additional information. * @notice: not yet used */ mapping(bytes32 => bytes32) public metadata; /** * Set by the controller to indicate where the transfers should go to on a burn */ address public burnAddress; /** * Mapping allowing us to identify the bridge nodes, in the current setup * manipulation of this mapping is only accessible by the parameter. */ mapping(address => bool) public bridgeNodes; // functions below this line are onlyOwner function Ledger() { } function setController(address _controller) onlyOwner notFinalized { controller = Controller(_controller); } /** * @dev To be called once minting is complete, disables minting. */ function stopMinting() onlyOwner { mintingStopped = true; } /** * @dev Used to mint a batch of currency at once. * * @notice This gives us a maximum of 2^96 tokens per user. * @notice Expected packed structure is [ADDR(20) | VALUE(12)]. * * @param nonce The minting nonce, an incorrect nonce is rejected. * @param bits An array of packed bytes of address, value mappings. * */ function multiMint(uint nonce, uint256[] bits) onlyOwner { require(!mintingStopped); if (nonce != mintingNonce) return; mintingNonce += 1; uint256 lomask = (1 << 96) - 1; uint created = 0; for (uint i=0; i<bits.length; i++) { address a = address(bits[i]>>96); uint value = bits[i]&lomask; balanceOf[a] = balanceOf[a] + value; controller.ledgerTransfer(0, a, value); created += value; } totalSupply += created; } // functions below this line are onlyController modifier onlyController() { require(msg.sender == address(controller)); _; } function transfer(address _from, address _to, uint _value) onlyController returns (bool success) { if (balanceOf[_from] < _value) return false; balanceOf[_from] = safeSub(balanceOf[_from], _value); balanceOf[_to] = safeAdd(balanceOf[_to], _value); return true; } function transferFrom(address _spender, address _from, address _to, uint _value) onlyController returns (bool success) { if (balanceOf[_from] < _value) return false; var allowed = allowance[_from][_spender]; if (allowed < _value) return false; balanceOf[_to] = safeAdd(balanceOf[_to], _value); balanceOf[_from] = safeSub(balanceOf[_from], _value); allowance[_from][_spender] = safeSub(allowed, _value); return true; } function approve(address _owner, address _spender, uint _value) onlyController returns (bool success) { // require user to set to zero before resetting to nonzero if ((_value != 0) && (allowance[_owner][_spender] != 0)) { return false; } allowance[_owner][_spender] = _value; return true; } function increaseApproval (address _owner, address _spender, uint _addedValue) onlyController returns (bool success) { uint oldValue = allowance[_owner][_spender]; allowance[_owner][_spender] = safeAdd(oldValue, _addedValue); return true; } function decreaseApproval (address _owner, address _spender, uint _subtractedValue) onlyController returns (bool success) { uint oldValue = allowance[_owner][_spender]; if (_subtractedValue > oldValue) { allowance[_owner][_spender] = 0; } else { allowance[_owner][_spender] = safeSub(oldValue, _subtractedValue); } return true; } function setProof(uint256 _key, bytes32 _proof) onlyController { proofs[_key] = _proof; } function setLocked(address _key, uint256 _value) onlyController { locked[_key] = _value; } function setMetadata(bytes32 _key, bytes32 _value) onlyController { metadata[_key] = _value; } /** * Burn related functionality */ /** * @dev sets the burn address to the new value * * @param _address The address * */ function setBurnAddress(address _address) onlyController { burnAddress = _address; } function setBridgeNode(address _address, bool enabled) onlyController { bridgeNodes[_address] = enabled; } } contract ControllerEventDefinitions { /** * An internal burn event, emitted by the controller contract * which the bridges could be listening to. */ event ControllerBurn(address indexed from, bytes32 indexed to, uint value); } /** * @title Controller for business logic between the ERC20 API and State * * Controller is responsible for the business logic that sits in between * the Ledger (model) and the Token (view). Presently, adherence to this model * is not strict, but we expect future functionality (Burning, Claiming) to adhere * to this model more closely. * * The controller must be linked to a Token and Ledger to become functional. * */ contract Controller is Owned, Finalizable, ControllerEventDefinitions { Ledger public ledger; Token public token; address public burnAddress; function Controller() { } // functions below this line are onlyOwner function setToken(address _token) onlyOwner { token = Token(_token); } function setLedger(address _ledger) onlyOwner { ledger = Ledger(_ledger); } /** * @dev Sets the burn address burn values get moved to. Only call * after token and ledger contracts have been hooked up. Ensures * that all three values are set atomically. * * @notice New Functionality * * @param _address desired address * */ function setBurnAddress(address _address) onlyOwner { burnAddress = _address; ledger.setBurnAddress(_address); token.setBurnAddress(_address); } modifier onlyToken() { require(msg.sender == address(token)); _; } modifier onlyLedger() { require(msg.sender == address(ledger)); _; } function totalSupply() constant returns (uint) { return ledger.totalSupply(); } function balanceOf(address _a) constant returns (uint) { return ledger.balanceOf(_a); } function allowance(address _owner, address _spender) constant returns (uint) { return ledger.allowance(_owner, _spender); } // functions below this line are onlyLedger // let the ledger send transfer events (the most obvious case // is when we mint directly to the ledger and need the Transfer() // events to appear in the token) function ledgerTransfer(address from, address to, uint val) onlyLedger { token.controllerTransfer(from, to, val); } // functions below this line are onlyToken function transfer(address _from, address _to, uint _value) onlyToken returns (bool success) { return ledger.transfer(_from, _to, _value); } function transferFrom(address _spender, address _from, address _to, uint _value) onlyToken returns (bool success) { return ledger.transferFrom(_spender, _from, _to, _value); } function approve(address _owner, address _spender, uint _value) onlyToken returns (bool success) { return ledger.approve(_owner, _spender, _value); } function increaseApproval (address _owner, address _spender, uint _addedValue) onlyToken returns (bool success) { return ledger.increaseApproval(_owner, _spender, _addedValue); } function decreaseApproval (address _owner, address _spender, uint _subtractedValue) onlyToken returns (bool success) { return ledger.decreaseApproval(_owner, _spender, _subtractedValue); } /** * End Original Contract * Below is new functionality */ /** * @dev Enables burning on the token contract */ function enableBurning() onlyOwner { token.enableBurning(); } /** * @dev Disables burning on the token contract */ function disableBurning() onlyOwner { token.disableBurning(); } // public functions /** * @dev * * @param _from account the value is burned from * @param _to the address receiving the value * @param _amount the value amount * * @return success operation successful or not. */ function burn(address _from, bytes32 _to, uint _amount) onlyToken returns (bool success) { if (ledger.transfer(_from, burnAddress, _amount)) { ControllerBurn(_from, _to, _amount); token.controllerBurn(_from, _to, _amount); return true; } return false; } /** * @dev Implementation for claim mechanism. Note that this mechanism has not yet * been implemented. This function is only here for future expansion capabilities. * Presently, just returns false to indicate failure. * * @notice Only one of claimByProof() or claim() will potentially be activated in the future. * Depending on the functionality required and route selected. * * @param _claimer The individual claiming the tokens (also the recipient of said tokens). * @param data The input data required to release the tokens. * @param success The proofs associated with the data, to indicate the legitimacy of said data. * @param number The block number the proofs and data correspond to. * * @return success operation successful or not. * */ function claimByProof(address _claimer, bytes32[] data, bytes32[] proofs, uint256 number) onlyToken returns (bool success) { return false; } /** * @dev Implementation for an alternative claim mechanism, in which the participant * is not required to confirm through proofs. Note that this mechanism has not * yet been implemented. * * @notice Only one of claimByProof() or claim() will potentially be activated in the future. * Depending on the functionality required and route selected. * * @param _claimer The individual claiming the tokens (also the recipient of said tokens). * * @return success operation successful or not. */ function claim(address _claimer) onlyToken returns (bool success) { return false; } } contract Token is Finalizable, TokenReceivable, SafeMath, EventDefinitions, Pausable { // Set these appropriately before you deploy string constant public name = "AION"; uint8 constant public decimals = 8; string constant public symbol = "AION"; Controller public controller; string public motd; event Motd(string message); address public burnAddress; //@ATTENTION: set this to a correct value bool public burnable = false; // functions below this line are onlyOwner // set "message of the day" function setMotd(string _m) onlyOwner { motd = _m; Motd(_m); } function setController(address _c) onlyOwner notFinalized { controller = Controller(_c); } // functions below this line are public function balanceOf(address a) constant returns (uint) { return controller.balanceOf(a); } function totalSupply() constant returns (uint) { return controller.totalSupply(); } function allowance(address _owner, address _spender) constant returns (uint) { return controller.allowance(_owner, _spender); } function transfer(address _to, uint _value) notPaused returns (bool success) { if (controller.transfer(msg.sender, _to, _value)) { Transfer(msg.sender, _to, _value); return true; } return false; } function transferFrom(address _from, address _to, uint _value) notPaused returns (bool success) { if (controller.transferFrom(msg.sender, _from, _to, _value)) { Transfer(_from, _to, _value); return true; } return false; } function approve(address _spender, uint _value) notPaused returns (bool success) { // promote safe user behavior if (controller.approve(msg.sender, _spender, _value)) { Approval(msg.sender, _spender, _value); return true; } return false; } function increaseApproval (address _spender, uint _addedValue) notPaused returns (bool success) { if (controller.increaseApproval(msg.sender, _spender, _addedValue)) { uint newval = controller.allowance(msg.sender, _spender); Approval(msg.sender, _spender, newval); return true; } return false; } function decreaseApproval (address _spender, uint _subtractedValue) notPaused returns (bool success) { if (controller.decreaseApproval(msg.sender, _spender, _subtractedValue)) { uint newval = controller.allowance(msg.sender, _spender); Approval(msg.sender, _spender, newval); return true; } return false; } // modifier onlyPayloadSize(uint numwords) { // assert(msg.data.length >= numwords * 32 + 4); // _; // } // functions below this line are onlyController modifier onlyController() { assert(msg.sender == address(controller)); _; } // In the future, when the controller supports multiple token // heads, allow the controller to reconstitute the transfer and // approval history. function controllerTransfer(address _from, address _to, uint _value) onlyController { Transfer(_from, _to, _value); } function controllerApprove(address _owner, address _spender, uint _value) onlyController { Approval(_owner, _spender, _value); } /** * @dev Burn event possibly called by the controller on a burn. This is * the public facing event that anyone can track, the bridges listen * to an alternative event emitted by the controller. * * @param _from address that coins are burned from * @param _to address (on other network) that coins are received by * @param _value amount of value to be burned * * @return { description_of_the_return_value } */ function controllerBurn(address _from, bytes32 _to, uint256 _value) onlyController { Burn(_from, _to, _value); } function controllerClaim(address _claimer, uint256 _value) onlyController { Claimed(_claimer, _value); } /** * @dev Sets the burn address to a new value * * @param _address The address * */ function setBurnAddress(address _address) onlyController { burnAddress = _address; } /** * @dev Enables burning through burnable bool * */ function enableBurning() onlyController { burnable = true; } /** * @dev Disables burning through burnable bool * */ function disableBurning() onlyController { burnable = false; } /** * @dev Indicates that burning is enabled */ modifier burnEnabled() { require(burnable == true); _; } /** * @dev burn function, changed from original implementation. Public facing API * indicating who the token holder wants to burn currency to and the amount. * * @param _amount The amount * */ function burn(bytes32 _to, uint _amount) notPaused burnEnabled returns (bool success) { return controller.burn(msg.sender, _to, _amount); } /** * @dev claim (quantumReceive) allows the user to "prove" some an ICT to the contract * thereby thereby releasing the tokens into their account * */ function claimByProof(bytes32[] data, bytes32[] proofs, uint256 number) notPaused burnEnabled returns (bool success) { return controller.claimByProof(msg.sender, data, proofs, number); } /** * @dev Simplified version of claim, just requires user to call to claim. * No proof is needed, which version is chosen depends on our bridging model. * * @return */ function claim() notPaused burnEnabled returns (bool success) { return controller.claim(msg.sender); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","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":"stopMinting","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"setBurnAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"finalize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"burnAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"metadata","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_key","type":"address"},{"name":"_value","type":"uint256"}],"name":"setLocked","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"nonce","type":"uint256"},{"name":"bits","type":"uint256[]"}],"name":"multiMint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"bridgeNodes","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_controller","type":"address"}],"name":"setController","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"proofs","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"changeOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"},{"name":"enabled","type":"bool"}],"name":"setBridgeNode","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"finalized","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_key","type":"uint256"},{"name":"_proof","type":"bytes32"}],"name":"setProof","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"locked","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_key","type":"bytes32"},{"name":"_value","type":"bytes32"}],"name":"setMetadata","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"},{"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":"mintingStopped","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"controller","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"mintingNonce","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"}]
Contract Creation Code
6060604052341561000f57600080fd5b60008054600160a060020a033316600160a060020a0319909116179055610dfe8061003b6000396000f300606060405236156101725763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166315dacbea811461017757806318160ddd146101b95780633e3e0b12146101de5780634b0e7216146101f35780634bb278f31461021257806370a082311461022557806370d5ae05146102445780637122ba061461027357806373845cfa1461028957806379ba5097146102ab57806388df13fa146102be5780638d2c929a146103125780638da5cb5b1461033157806392eefe9b146103445780639ddaf5aa14610363578063a6f9dae114610379578063adfd793514610398578063b3f05b97146103bc578063bcdd6121146103cf578063beabacc8146103f7578063c0c98d6f1461041f578063cbf9fe5f14610438578063d3525adf14610457578063dd62ed3e14610470578063e1f21c6714610495578063f019c267146104bd578063f339292f146104e5578063f77c4791146104f8578063fbb0eb8b1461050b575b600080fd5b341561018257600080fd5b6101a5600160a060020a036004358116906024358116906044351660643561051e565b604051901515815260200160405180910390f35b34156101c457600080fd5b6101cc610649565b60405190815260200160405180910390f35b34156101e957600080fd5b6101f161064f565b005b34156101fe57600080fd5b6101f1600160a060020a0360043516610679565b341561021d57600080fd5b6101f16106c3565b341561023057600080fd5b6101cc600160a060020a0360043516610715565b341561024f57600080fd5b610257610727565b604051600160a060020a03909116815260200160405180910390f35b341561027e57600080fd5b6101cc600435610736565b341561029457600080fd5b6101f1600160a060020a0360043516602435610748565b34156102b657600080fd5b6101f161077f565b34156102c957600080fd5b6101f1600480359060446024803590810190830135806020818102016040519081016040528093929190818152602001838360200280828437509496506107c895505050505050565b341561031d57600080fd5b6101a5600160a060020a036004351661093e565b341561033c57600080fd5b610257610953565b341561034f57600080fd5b6101f1600160a060020a0360043516610962565b341561036e57600080fd5b6101cc6004356109d4565b341561038457600080fd5b6101f1600160a060020a03600435166109e6565b34156103a357600080fd5b6101f1600160a060020a03600435166024351515610a30565b34156103c757600080fd5b6101a5610a76565b34156103da57600080fd5b6101a5600160a060020a0360043581169060243516604435610a97565b341561040257600080fd5b6101a5600160a060020a0360043581169060243516604435610b1a565b341561042a57600080fd5b6101f1600435602435610bd7565b341561044357600080fd5b6101cc600160a060020a0360043516610c04565b341561046257600080fd5b6101f1600435602435610c16565b341561047b57600080fd5b6101cc600160a060020a0360043581169060243516610c43565b34156104a057600080fd5b6101a5600160a060020a0360043581169060243516604435610c60565b34156104c857600080fd5b6101a5600160a060020a0360043581169060243516604435610cee565b34156104f057600080fd5b6101a5610d7f565b341561050357600080fd5b610257610d88565b341561051657600080fd5b6101cc610d97565b600254600090819033600160a060020a0390811691161461053e57600080fd5b600160a060020a038516600090815260036020526040902054839010156105685760009150610640565b50600160a060020a03808516600090815260046020908152604080832093891683529290522054828110156105a05760009150610640565b600160a060020a0384166000908152600360205260409020546105c39084610d9d565b600160a060020a0380861660009081526003602052604080822093909355908716815220546105f29084610dbd565b600160a060020a0386166000908152600360205260409020556106158184610dbd565b600160a060020a038087166000908152600460209081526040808320938b1683529290522055600191505b50949350505050565b60055481565b60005433600160a060020a0390811691161461066a57600080fd5b6007805460ff19166001179055565b60025433600160a060020a0390811691161461069457600080fd5b600b805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60005433600160a060020a039081169116146106de57600080fd5b6001805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b60036020526000908152604090205481565b600b54600160a060020a031681565b600a6020526000908152604090205481565b60025433600160a060020a0390811691161461076357600080fd5b600160a060020a03909116600090815260096020526040902055565b60015433600160a060020a03908116911614156107c6576001546000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039092169190911790555b565b60008054819081908190819033600160a060020a039081169116146107ec57600080fd5b60075460ff16156107fc57600080fd5b600654871461080a57610935565b6006805460010190556bffffffffffffffffffffffff9450600093508392505b855183101561092c57606086848151811061084157fe5b906020019060200201519060020a900491508486848151811061086057fe5b90602001906020020151600160a060020a0380851660009081526003602052604080822080549590941694850190935560025493945092169163f5c86d2a9185908590517c010000000000000000000000000000000000000000000000000000000063ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401600060405180830381600087803b151561090957600080fd5b6102c65a03f1151561091a57600080fd5b5050509283019260019092019161082a565b60058054850190555b50505050505050565b600c6020526000908152604090205460ff1681565b600054600160a060020a031681565b60005433600160a060020a0390811691161461097d57600080fd5b60015474010000000000000000000000000000000000000000900460ff16156109a557600080fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60086020526000908152604090205481565b60005433600160a060020a03908116911614610a0157600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60025433600160a060020a03908116911614610a4b57600080fd5b600160a060020a03919091166000908152600c60205260409020805460ff1916911515919091179055565b60015474010000000000000000000000000000000000000000900460ff1681565b600254600090819033600160a060020a03908116911614610ab757600080fd5b50600160a060020a03808516600090815260046020908152604080832093871683529290522054610ae88184610d9d565b600160a060020a0380871660009081526004602090815260408083209389168352929052205560019150509392505050565b60025460009033600160a060020a03908116911614610b3857600080fd5b600160a060020a03841660009081526003602052604090205482901015610b6157506000610bd0565b600160a060020a038416600090815260036020526040902054610b849083610dbd565b600160a060020a038086166000908152600360205260408082209390935590851681522054610bb39083610d9d565b600160a060020a0384166000908152600360205260409020555060015b9392505050565b60025433600160a060020a03908116911614610bf257600080fd5b60009182526008602052604090912055565b60096020526000908152604090205481565b60025433600160a060020a03908116911614610c3157600080fd5b6000918252600a602052604090912055565b600460209081526000928352604080842090915290825290205481565b60025460009033600160a060020a03908116911614610c7e57600080fd5b8115801590610cb15750600160a060020a0380851660009081526004602090815260408083209387168352929052205415155b15610cbe57506000610bd0565b50600160a060020a0392831660009081526004602090815260408083209490951682529290925291902055600190565b600254600090819033600160a060020a03908116911614610d0e57600080fd5b50600160a060020a0380851660009081526004602090815260408083209387168352929052205480831115610d6a57600160a060020a038086166000908152600460209081526040808320938816835292905290812055610d74565b610ae88184610dbd565b506001949350505050565b60075460ff1681565b600254600160a060020a031681565b60065481565b6000828201838110801590610db25750828110155b1515610bd057600080fd5b600082821115610dcc57600080fd5b509003905600a165627a7a72305820085f8858c02c363ef1741b90e13c4f8a5236ccb5e000672ee776273cb642b5a70029
Deployed Bytecode
0x606060405236156101725763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166315dacbea811461017757806318160ddd146101b95780633e3e0b12146101de5780634b0e7216146101f35780634bb278f31461021257806370a082311461022557806370d5ae05146102445780637122ba061461027357806373845cfa1461028957806379ba5097146102ab57806388df13fa146102be5780638d2c929a146103125780638da5cb5b1461033157806392eefe9b146103445780639ddaf5aa14610363578063a6f9dae114610379578063adfd793514610398578063b3f05b97146103bc578063bcdd6121146103cf578063beabacc8146103f7578063c0c98d6f1461041f578063cbf9fe5f14610438578063d3525adf14610457578063dd62ed3e14610470578063e1f21c6714610495578063f019c267146104bd578063f339292f146104e5578063f77c4791146104f8578063fbb0eb8b1461050b575b600080fd5b341561018257600080fd5b6101a5600160a060020a036004358116906024358116906044351660643561051e565b604051901515815260200160405180910390f35b34156101c457600080fd5b6101cc610649565b60405190815260200160405180910390f35b34156101e957600080fd5b6101f161064f565b005b34156101fe57600080fd5b6101f1600160a060020a0360043516610679565b341561021d57600080fd5b6101f16106c3565b341561023057600080fd5b6101cc600160a060020a0360043516610715565b341561024f57600080fd5b610257610727565b604051600160a060020a03909116815260200160405180910390f35b341561027e57600080fd5b6101cc600435610736565b341561029457600080fd5b6101f1600160a060020a0360043516602435610748565b34156102b657600080fd5b6101f161077f565b34156102c957600080fd5b6101f1600480359060446024803590810190830135806020818102016040519081016040528093929190818152602001838360200280828437509496506107c895505050505050565b341561031d57600080fd5b6101a5600160a060020a036004351661093e565b341561033c57600080fd5b610257610953565b341561034f57600080fd5b6101f1600160a060020a0360043516610962565b341561036e57600080fd5b6101cc6004356109d4565b341561038457600080fd5b6101f1600160a060020a03600435166109e6565b34156103a357600080fd5b6101f1600160a060020a03600435166024351515610a30565b34156103c757600080fd5b6101a5610a76565b34156103da57600080fd5b6101a5600160a060020a0360043581169060243516604435610a97565b341561040257600080fd5b6101a5600160a060020a0360043581169060243516604435610b1a565b341561042a57600080fd5b6101f1600435602435610bd7565b341561044357600080fd5b6101cc600160a060020a0360043516610c04565b341561046257600080fd5b6101f1600435602435610c16565b341561047b57600080fd5b6101cc600160a060020a0360043581169060243516610c43565b34156104a057600080fd5b6101a5600160a060020a0360043581169060243516604435610c60565b34156104c857600080fd5b6101a5600160a060020a0360043581169060243516604435610cee565b34156104f057600080fd5b6101a5610d7f565b341561050357600080fd5b610257610d88565b341561051657600080fd5b6101cc610d97565b600254600090819033600160a060020a0390811691161461053e57600080fd5b600160a060020a038516600090815260036020526040902054839010156105685760009150610640565b50600160a060020a03808516600090815260046020908152604080832093891683529290522054828110156105a05760009150610640565b600160a060020a0384166000908152600360205260409020546105c39084610d9d565b600160a060020a0380861660009081526003602052604080822093909355908716815220546105f29084610dbd565b600160a060020a0386166000908152600360205260409020556106158184610dbd565b600160a060020a038087166000908152600460209081526040808320938b1683529290522055600191505b50949350505050565b60055481565b60005433600160a060020a0390811691161461066a57600080fd5b6007805460ff19166001179055565b60025433600160a060020a0390811691161461069457600080fd5b600b805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60005433600160a060020a039081169116146106de57600080fd5b6001805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b60036020526000908152604090205481565b600b54600160a060020a031681565b600a6020526000908152604090205481565b60025433600160a060020a0390811691161461076357600080fd5b600160a060020a03909116600090815260096020526040902055565b60015433600160a060020a03908116911614156107c6576001546000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039092169190911790555b565b60008054819081908190819033600160a060020a039081169116146107ec57600080fd5b60075460ff16156107fc57600080fd5b600654871461080a57610935565b6006805460010190556bffffffffffffffffffffffff9450600093508392505b855183101561092c57606086848151811061084157fe5b906020019060200201519060020a900491508486848151811061086057fe5b90602001906020020151600160a060020a0380851660009081526003602052604080822080549590941694850190935560025493945092169163f5c86d2a9185908590517c010000000000000000000000000000000000000000000000000000000063ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401600060405180830381600087803b151561090957600080fd5b6102c65a03f1151561091a57600080fd5b5050509283019260019092019161082a565b60058054850190555b50505050505050565b600c6020526000908152604090205460ff1681565b600054600160a060020a031681565b60005433600160a060020a0390811691161461097d57600080fd5b60015474010000000000000000000000000000000000000000900460ff16156109a557600080fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60086020526000908152604090205481565b60005433600160a060020a03908116911614610a0157600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60025433600160a060020a03908116911614610a4b57600080fd5b600160a060020a03919091166000908152600c60205260409020805460ff1916911515919091179055565b60015474010000000000000000000000000000000000000000900460ff1681565b600254600090819033600160a060020a03908116911614610ab757600080fd5b50600160a060020a03808516600090815260046020908152604080832093871683529290522054610ae88184610d9d565b600160a060020a0380871660009081526004602090815260408083209389168352929052205560019150509392505050565b60025460009033600160a060020a03908116911614610b3857600080fd5b600160a060020a03841660009081526003602052604090205482901015610b6157506000610bd0565b600160a060020a038416600090815260036020526040902054610b849083610dbd565b600160a060020a038086166000908152600360205260408082209390935590851681522054610bb39083610d9d565b600160a060020a0384166000908152600360205260409020555060015b9392505050565b60025433600160a060020a03908116911614610bf257600080fd5b60009182526008602052604090912055565b60096020526000908152604090205481565b60025433600160a060020a03908116911614610c3157600080fd5b6000918252600a602052604090912055565b600460209081526000928352604080842090915290825290205481565b60025460009033600160a060020a03908116911614610c7e57600080fd5b8115801590610cb15750600160a060020a0380851660009081526004602090815260408083209387168352929052205415155b15610cbe57506000610bd0565b50600160a060020a0392831660009081526004602090815260408083209490951682529290925291902055600190565b600254600090819033600160a060020a03908116911614610d0e57600080fd5b50600160a060020a0380851660009081526004602090815260408083209387168352929052205480831115610d6a57600160a060020a038086166000908152600460209081526040808320938816835292905290812055610d74565b610ae88184610dbd565b506001949350505050565b60075460ff1681565b600254600160a060020a031681565b60065481565b6000828201838110801590610db25750828110155b1515610bd057600080fd5b600082821115610dcc57600080fd5b509003905600a165627a7a72305820085f8858c02c363ef1741b90e13c4f8a5236ccb5e000672ee776273cb642b5a70029
Swarm Source
bzzr://085f8858c02c363ef1741b90e13c4f8a5236ccb5e000672ee776273cb642b5a7
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 27 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.