Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 19 from a total of 19 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
Create Trade Con... | 2946475 | 2638 days ago | IN | 0 ETH | 0.01459352 | ||||
Create Trade Con... | 2926525 | 2642 days ago | IN | 0 ETH | 0.0145884 | ||||
Create Trade Con... | 2926525 | 2642 days ago | IN | 0 ETH | 0.0145884 | ||||
Create Trade Con... | 2926518 | 2642 days ago | IN | 0 ETH | 0.01458584 | ||||
Create Trade Con... | 2926514 | 2642 days ago | IN | 0 ETH | 0.01458584 | ||||
Create Trade Con... | 2926514 | 2642 days ago | IN | 0 ETH | 0.01458584 | ||||
Create Trade Con... | 2926511 | 2642 days ago | IN | 0 ETH | 0.01458584 | ||||
Create Trade Con... | 2926508 | 2642 days ago | IN | 0 ETH | 0.01458584 | ||||
Create Trade Con... | 2926503 | 2642 days ago | IN | 0 ETH | 0.01458584 | ||||
Create Trade Con... | 2926487 | 2642 days ago | IN | 0 ETH | 0.01458584 | ||||
Create Trade Con... | 2926397 | 2642 days ago | IN | 0 ETH | 0.01458584 | ||||
Create Trade Con... | 2926393 | 2642 days ago | IN | 0 ETH | 0.01458584 | ||||
Create Trade Con... | 2926378 | 2642 days ago | IN | 0 ETH | 0.01458584 | ||||
Create Trade Con... | 2926376 | 2642 days ago | IN | 0 ETH | 0.01458584 | ||||
Create Trade Con... | 2926376 | 2642 days ago | IN | 0 ETH | 0.01458584 | ||||
Create Trade Con... | 2926368 | 2642 days ago | IN | 0 ETH | 0.01458584 | ||||
Create Trade Con... | 2926361 | 2642 days ago | IN | 0 ETH | 0.01458584 | ||||
Create Trade Con... | 2926324 | 2642 days ago | IN | 0 ETH | 0.01458584 | ||||
0x60606040 | 2835326 | 2657 days ago | IN | Create: TokenTraderFactory | 0 ETH | 0.02617604 |
Latest 24 internal transactions
Advanced mode:
Loading...
Loading
Contract Name:
TokenTraderFactory
Compiler Version
v0.4.6+commit.2dabbdf0
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2016-12-19 */ pragma solidity ^0.4.4; // ------------------------------------------------------------------------ // TokenTraderFactory // // Decentralised trustless ERC20-compliant token to ETH exchange contract // on the Ethereum blockchain. // // Note that this TokenTrader cannot be used with the Golem Network Token // directly as the token does not implement the ERC20 // transferFrom(...), approve(...) and allowance(...) methods // // Enjoy. (c) JonnyLatte & BokkyPooBah 2016. The MIT licence. // ------------------------------------------------------------------------ // https://github.com/ethereum/EIPs/issues/20 contract ERC20 { function totalSupply() constant returns (uint totalSupply); function balanceOf(address _owner) constant returns (uint balance); function transfer(address _to, uint _value) returns (bool success); function transferFrom(address _from, address _to, uint _value) returns (bool success); function approve(address _spender, uint _value) returns (bool success); function allowance(address _owner, address _spender) constant returns (uint remaining); event Transfer(address indexed _from, address indexed _to, uint _value); event Approval(address indexed _owner, address indexed _spender, uint _value); } contract Owned { address public owner; event OwnershipTransferred(address indexed _from, address indexed _to); function Owned() { owner = msg.sender; } modifier onlyOwner { if (msg.sender != owner) throw; _; } function transferOwnership(address newOwner) onlyOwner { OwnershipTransferred(owner, newOwner); owner = newOwner; } } // contract can buy or sell tokens for ETH // prices are in amount of wei per batch of token units contract TokenTrader is Owned { address public asset; // address of token uint256 public buyPrice; // contract buys lots of token at this price uint256 public sellPrice; // contract sells lots at this price uint256 public units; // lot size (token-wei) bool public buysTokens; // is contract buying bool public sellsTokens; // is contract selling event ActivatedEvent(bool buys, bool sells); event MakerDepositedEther(uint256 amount); event MakerWithdrewAsset(uint256 tokens); event MakerWithdrewERC20Token(address tokenAddress, uint256 tokens); event MakerWithdrewEther(uint256 ethers); event TakerBoughtAsset(address indexed buyer, uint256 ethersSent, uint256 ethersReturned, uint256 tokensBought); event TakerSoldAsset(address indexed seller, uint256 tokensToSell, uint256 tokensSold, uint256 ethers); // Constructor - only to be called by the TokenTraderFactory contract function TokenTrader ( address _asset, uint256 _buyPrice, uint256 _sellPrice, uint256 _units, bool _buysTokens, bool _sellsTokens ) internal { asset = _asset; buyPrice = _buyPrice; sellPrice = _sellPrice; units = _units; buysTokens = _buysTokens; sellsTokens = _sellsTokens; ActivatedEvent(buysTokens, sellsTokens); } // Maker can activate or deactivate this contract's buying and // selling status // // The ActivatedEvent() event is logged with the following // parameter: // buysTokens this contract can buy asset tokens // sellsTokens this contract can sell asset tokens // function activate ( bool _buysTokens, bool _sellsTokens ) onlyOwner { buysTokens = _buysTokens; sellsTokens = _sellsTokens; ActivatedEvent(buysTokens, sellsTokens); } // Maker can deposit ethers to this contract so this contract // can buy asset tokens. // // Maker deposits asset tokens to this contract by calling the // asset's transfer() method with the following parameters // _to is the address of THIS contract // _value is the number of asset tokens to be transferred // // Taker MUST NOT send tokens directly to this contract. Takers // MUST use the takerSellAsset() method to sell asset tokens // to this contract // // The MakerDepositedEther() event is logged with the following // parameter: // ethers is the number of ethers deposited by the maker // // This method was called deposit() in the old version // function makerDepositEther() payable onlyOwner { MakerDepositedEther(msg.value); } // Maker can withdraw asset tokens from this contract, with the // following parameter: // tokens is the number of asset tokens to be withdrawn // // The MakerWithdrewAsset() event is logged with the following // parameter: // tokens is the number of tokens withdrawn by the maker // // This method was called withdrawAsset() in the old version // function makerWithdrawAsset(uint256 tokens) onlyOwner returns (bool ok) { MakerWithdrewAsset(tokens); return ERC20(asset).transfer(owner, tokens); } // Maker can withdraw any ERC20 asset tokens from this contract // // This method is included in the case where this contract receives // the wrong tokens // // The MakerWithdrewERC20Token() event is logged with the following // parameter: // tokenAddress is the address of the tokens withdrawn by the maker // tokens is the number of tokens withdrawn by the maker // // This method was called withdrawToken() in the old version // function makerWithdrawERC20Token( address tokenAddress, uint256 tokens ) onlyOwner returns (bool ok) { MakerWithdrewERC20Token(tokenAddress, tokens); return ERC20(tokenAddress).transfer(owner, tokens); } // Maker can withdraw ethers from this contract // // The MakerWithdrewEther() event is logged with the following parameter // ethers is the number of ethers withdrawn by the maker // // This method was called withdraw() in the old version // function makerWithdrawEther(uint256 ethers) onlyOwner returns (bool ok) { if (this.balance >= ethers) { MakerWithdrewEther(ethers); return owner.send(ethers); } } // Taker buys asset tokens by sending ethers // // The TakerBoughtAsset() event is logged with the following parameters // buyer is the buyer's address // ethersSent is the number of ethers sent by the buyer // ethersReturned is the number of ethers sent back to the buyer as // change // tokensBought is the number of asset tokens sent to the buyer // // This method was called buy() in the old version // function takerBuyAsset() payable { if (sellsTokens || msg.sender == owner) { uint order = msg.value / sellPrice; uint can_sell = ERC20(asset).balanceOf(address(this)) / units; uint256 change = 0; if (order > can_sell) { change = msg.value - (can_sell * sellPrice); order = can_sell; if (!msg.sender.send(change)) throw; } if (order > 0) { if(!ERC20(asset).transfer(msg.sender, order * units)) throw; } TakerBoughtAsset(msg.sender, msg.value, change, order * units); } // Return user funds if the contract is not selling else if (!msg.sender.send(msg.value)) throw; } // Taker sells asset tokens for ethers by: // 1. Calling the asset's approve() method with the following parameters // _spender is the address of this contract // _value is the number of tokens to be sold // 2. Calling this takerSellAsset() method with the following parameter // tokens is the number of asset tokens to be sold // // The TakerSoldAsset() event is logged with the following parameters // seller is the seller's address // tokensToSell is the number of asset tokens offered by the seller // tokensSold is the number of asset tokens sold // ethers is the number of ethers sent to the seller // // This method was called sell() in the old version // function takerSellAsset(uint256 tokens) { if (buysTokens || msg.sender == owner) { // Maximum number of token the contract can buy uint256 can_buy = this.balance / buyPrice; // Token lots available uint256 order = tokens / units; // Adjust order for funds available if (order > can_buy) order = can_buy; if (order > 0) { // Extract user tokens if(!ERC20(asset).transferFrom(msg.sender, address(this), order * units)) throw; // Pay user if(!msg.sender.send(order * buyPrice)) throw; } TakerSoldAsset(msg.sender, tokens, order * units, order * buyPrice); } } // Taker buys tokens by sending ethers function () payable { takerBuyAsset(); } } // This contract deploys TokenTrader contracts and logs the event contract TokenTraderFactory is Owned { event TradeListing(address ownerAddress, address tokenTraderAddress, address asset, uint256 buyPrice, uint256 sellPrice, uint256 units, bool buysTokens, bool sellsTokens); event OwnerWithdrewERC20Token(address tokenAddress, uint256 tokens); mapping(address => bool) _verify; // Anyone can call this method to verify the settings of a // TokenTrader contract. The parameters are: // tradeContract is the address of a TokenTrader contract // // Return values: // valid did this TokenTraderFactory create the TokenTrader contract? // owner is the owner of the TokenTrader contract // asset is the ERC20 asset address // buyPrice is the buy price in ethers per `units` of asset tokens // sellPrice is the sell price in ethers per `units` of asset tokens // units is the number of units of asset tokens // buysTokens is the TokenTrader contract buying tokens? // sellsTokens is the TokenTrader contract selling tokens? // function verify(address tradeContract) constant returns ( bool valid, address owner, address asset, uint256 buyPrice, uint256 sellPrice, uint256 units, bool buysTokens, bool sellsTokens ) { valid = _verify[tradeContract]; if (valid) { TokenTrader t = TokenTrader(tradeContract); owner = t.owner(); asset = t.asset(); buyPrice = t.buyPrice(); sellPrice = t.sellPrice(); units = t.units(); buysTokens = t.buysTokens(); sellsTokens = t.sellsTokens(); } } // Maker can call this method to create a new TokenTrader contract // with the maker being the owner of this new contract // // Parameters: // asset is the ERC20 asset address // buyPrice is the buy price in ethers per `units` of asset tokens // sellPrice is the sell price in ethers per `units` of asset tokens // units is the number of units of asset tokens // buysTokens is the TokenTrader contract buying tokens? // sellsTokens is the TokenTrader contract selling tokens? // // For example, listing a TokenTrader contract on the REP Augur token where // the contract will buy REP tokens at a rate of 39000/100000 = 0.39 ETH // per REP token and sell REP tokens at a rate of 41000/100000 = 0.41 ETH // per REP token: // asset 0x48c80f1f4d53d5951e5d5438b54cba84f29f32a5 // buyPrice 39000 // sellPrice 41000 // units 100000 // buysTokens true // sellsTokens true // // The TradeListing() event is logged with the following parameters // ownerAddress is the Maker's address // tokenTraderAddress is the address of the newly created TokenTrader contract // asset is the ERC20 asset address // buyPrice is the buy price in ethers per `units` of asset tokens // sellPrice is the sell price in ethers per `units` of asset tokens // unit is the number of units of asset tokens // buysTokens is the TokenTrader contract buying tokens? // sellsTokens is the TokenTrader contract selling tokens? // function createTradeContract( address asset, uint256 buyPrice, uint256 sellPrice, uint256 units, bool buysTokens, bool sellsTokens ) returns (address trader) { // Cannot set negative price if (buyPrice < 0 || sellPrice < 0) throw; // Must make profit on spread if (buyPrice > sellPrice) throw; // Cannot buy or sell zero or negative units if (units <= 0) throw; trader = new TokenTrader( asset, buyPrice, sellPrice, units, buysTokens, sellsTokens); // Record that this factory created the trader _verify[trader] = true; // Set the owner to whoever called the function TokenTrader(trader).transferOwnership(msg.sender); TradeListing(msg.sender, trader, asset, buyPrice, sellPrice, units, buysTokens, sellsTokens); } // Factory owner can withdraw any ERC20 asset tokens from this contract // // This method is included in the case where this contract receives // the wrong tokens // // The OwnerWithdrewERC20Token() event is logged with the following // parameter: // tokenAddress is the address of the tokens withdrawn by the maker // tokens is the number of tokens withdrawn by the maker // function ownerWithdrawERC20Token(address tokenAddress, uint256 tokens) onlyOwner returns (bool ok) { OwnerWithdrewERC20Token(tokenAddress, tokens); return ERC20(tokenAddress).transfer(owner, tokens); } // Prevents accidental sending of ether to the factory function () { throw; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[{"name":"asset","type":"address"},{"name":"buyPrice","type":"uint256"},{"name":"sellPrice","type":"uint256"},{"name":"units","type":"uint256"},{"name":"buysTokens","type":"bool"},{"name":"sellsTokens","type":"bool"}],"name":"createTradeContract","outputs":[{"name":"trader","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"tokenAddress","type":"address"},{"name":"tokens","type":"uint256"}],"name":"ownerWithdrawERC20Token","outputs":[{"name":"ok","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"tradeContract","type":"address"}],"name":"verify","outputs":[{"name":"valid","type":"bool"},{"name":"owner","type":"address"},{"name":"asset","type":"address"},{"name":"buyPrice","type":"uint256"},{"name":"sellPrice","type":"uint256"},{"name":"units","type":"uint256"},{"name":"buysTokens","type":"bool"},{"name":"sellsTokens","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"payable":false,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"ownerAddress","type":"address"},{"indexed":false,"name":"tokenTraderAddress","type":"address"},{"indexed":false,"name":"asset","type":"address"},{"indexed":false,"name":"buyPrice","type":"uint256"},{"indexed":false,"name":"sellPrice","type":"uint256"},{"indexed":false,"name":"units","type":"uint256"},{"indexed":false,"name":"buysTokens","type":"bool"},{"indexed":false,"name":"sellsTokens","type":"bool"}],"name":"TradeListing","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenAddress","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"OwnerWithdrewERC20Token","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"}],"name":"OwnershipTransferred","type":"event"}]
Contract Creation Code
60606040525b60008054600160a060020a0319166c01000000000000000000000000338102041790555b5b611251806100386000396000f36060604052361561004b5760e060020a60003504633d6a32bd811461005d5780635de014971461009857806363a9c3d7146100bf5780638da5cb5b14610120578063f2fde38b14610149575b346100005761005b5b610000565b565b005b346100005761007c60043560243560443560643560843560a43561015b565b60408051600160a060020a039092168252519081900360200190f35b34610000576100ab6004356024356102ef565b604080519115158252519081900360200190f35b34610000576100cf6004356103da565b604080519815158952600160a060020a0397881660208a015295909616878601526060870193909352608086019190915260a0850152151560c084015290151560e083015251908190036101000190f35b346100005761007c610669565b60408051600160a060020a039092168252519081900360200190f35b346100005761005b600435610678565b005b6000600086108061016c5750600085105b1561017657610000565b8486111561018357610000565b6000841161019057610000565b868686868686604051610b50806107018339018087600160a060020a03168152602001868152602001858152602001848152602001831515815260200182151581526020019650505050505050604051809103906000f0801561000057600160a060020a038082166000818152600160208190526040808320805460ff191690921790915580517ff2fde38b00000000000000000000000000000000000000000000000000000000815233909416600485015251939450909263f2fde38b92602480820193929182900301818387803b156100005760325a03f11561000057505060408051600160a060020a03338116825280851660208301528a1681830152606081018990526080810188905260a0810187905285151560c082015284151560e082015290517f65ff0f5aef2091ad3616436792adf51be3068c631b081ac0f30f77e3a0e6502d9250908190036101000190a15b9695505050505050565b6000805433600160a060020a0390811691161461030b57610000565b60408051600160a060020a03851681526020810184905281517f168656e1968a1165ef7fd3f1006847fcfba4cac97672bc70ccbcffb66bc080ba929181900390910190a16000805460408051602090810184905281517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0393841660048201526024810187905291519287169363a9059cbb936044808501949192918390030190829087803b156100005760325a03f115610000575050604051519150505b5b92915050565b600160a060020a03811660009081526001602052604081205460ff169080808080808080881561065c5789905080600160a060020a0316638da5cb5b6000604051602001526040518160e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750505060405180519060200150975080600160a060020a03166338d52e0f6000604051602001526040518160e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750505060405180519060200150965080600160a060020a0316638620410b6000604051602001526040518160e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750505060405180519060200150955080600160a060020a0316634b7503346000604051602001526040518160e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750505060405180519060200150945080600160a060020a031663976a84356000604051602001526040518160e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750505060405180519060200150935080600160a060020a031663b10993476000604051602001526040518160e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750505060405180519060200150925080600160a060020a0316634ca50f596000604051602001526040518160e060020a028152600401809050602060405180830381600087803b156100005760325a03f115610000575050604051519250505b5b50919395975091939597565b600054600160a060020a031681565b60005433600160a060020a0390811691161461069357610000565b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff19166c01000000000000000000000000838102041790555b5b50566060604052346100005760405160c080610b5083398101604090815281516020830151918301516060840151608085015160a090950151929491929091905b5b60008054600160a060020a0319166c01000000000000000000000000338102041790555b60018054600160a060020a0319166c01000000000000000000000000888102041790556002859055600384905560048390556005805460ff19167f01000000000000000000000000000000000000000000000000000000000000008481028190049190911761ff00191661010084830292909204820217918290556040805160ff80851615158252929093049091161515602083015280517ffa4f96c42c616d6fbda491095977a6af7c76ebd387177b72299180502cbeaa999281900390910190a15b5050505050505b610a158061013b6000396000f3606060405236156100b95760e060020a60003504632170ebf781146100ca57806338d52e0f146100ee5780634b750334146101175780634ca50f59146101365780638620410b146101575780638da5cb5b14610176578063919f8cfc1461019f578063976a8435146101a9578063a7abc124146101c8578063b1099347146101dd578063c34764cf146101fe578063c60ccb0e14610225578063cd53a3b71461022f578063eff883bd14610253578063f2fde38b14610265575b6100c85b6100c5610277565b5b565b005b34610000576100da6004356104a5565b604080519115158252519081900360200190f35b34610000576100fb610537565b60408051600160a060020a039092168252519081900360200190f35b3461000057610124610546565b60408051918252519081900360200190f35b34610000576100da61054c565b604080519115158252519081900360200190f35b346100005761012461055a565b60408051918252519081900360200190f35b34610000576100fb610560565b60408051600160a060020a039092168252519081900360200190f35b6100c861056f565b005b34610000576101246105c1565b60408051918252519081900360200190f35b34610000576100c86004356024356105c7565b005b34610000576100da61065c565b604080519115158252519081900360200190f35b34610000576100da600435602435610665565b604080519115158252519081900360200190f35b6100c8610277565b005b34610000576100da60043561073a565b604080519115158252519081900360200190f35b34610000576100c8600435610800565b005b34610000576100c860043561098c565b005b600060006000600560019054906101000a900460ff16806102a6575060005433600160a060020a039081169116145b1561046f5760035434811561000057049250600454600160009054906101000a9004600160a060020a0316600160a060020a03166370a08231306000604051602001526040518260e060020a0281526004018082600160a060020a03168152602001915050602060405180830381600087803b156100005760325a03f115610000575050604051519050811561000057049150600090508183111561038457506003546040519192508291908202340390600160a060020a0333169082156108fc029083906000818181858888f19350505050151561038457610000565b5b600083111561041a57600160009054906101000a9004600160a060020a0316600160a060020a031663a9059cbb3360045486026000604051602001526040518360e060020a0281526004018083600160a060020a0316815260200182815260200192505050602060405180830381600087803b156100005760325a03f115610000575050604051511515905061041a57610000565b5b60045460408051348152602081018490529185028282015251600160a060020a033316917f37e948531341be0a8ce95c3833827c6f3559825cb6421e6ff1fe21c3a8b71217919081900360600190a261049e565b604051600160a060020a033316903480156108fc02916000818181858888f19350505050151561049e57610000565b5b5b505050565b6000805433600160a060020a039081169116146104c157610000565b600160a060020a03301631829010610530576040805183815290517f8a93d70d792b644d97d7da8a5798e03bbee85be4537a860a331dbe3ee50eb9829181900360200190a160008054604051600160a060020a039091169184156108fc02918591818181858888f19450505050505b5b5b919050565b600154600160a060020a031681565b60035481565b600554610100900460ff1681565b60025481565b600054600160a060020a031681565b60005433600160a060020a0390811691161461058a57610000565b6040805134815290517fc745dab9c51cefa79677191ed7af7b0ccbb8360b8b39ed79f257f6895882980f9181900360200190a15b5b565b60045481565b60005433600160a060020a039081169116146105e257610000565b6005805460ff191660f860020a8481028190049190911761ff00191661010084830292909204820217918290556040805160ff80851615158252929093049091161515602083015280517ffa4f96c42c616d6fbda491095977a6af7c76ebd387177b72299180502cbeaa999281900390910190a15b5b5050565b60055460ff1681565b6000805433600160a060020a0390811691161461068157610000565b60408051600160a060020a03851681526020810184905281517ffea8ae97829f3801e6ca15928428931c2a4f3cee1fa7c9b83d959efd24666422929181900390910190a160008054604080516020908101849052815160e060020a63a9059cbb028152600160a060020a0393841660048201526024810187905291519287169363a9059cbb936044808501949192918390030190829087803b156100005760325a03f115610000575050604051519150505b5b92915050565b6000805433600160a060020a0390811691161461075657610000565b6040805183815290517f1ebbc515a759c3fe8e048867aac7fe458e3a37ac3dd44ffc73a6238cf30039819181900360200190a160015460008054604080516020908101849052815160e060020a63a9059cbb028152600160a060020a039384166004820152602481018890529151929094169363a9059cbb9360448084019492938390030190829087803b156100005760325a03f115610000575050604051519150505b5b919050565b600554600090819060ff1680610824575060005433600160a060020a039081169116145b1561049e5760025430600160a060020a03163181156100005704915060045483811561000057049050818111156108585750805b600081111561093157600160009054906101000a9004600160a060020a0316600160a060020a03166323b872dd333060045485026000604051602001526040518460e060020a0281526004018084600160a060020a0316815260200183600160a060020a031681526020018281526020019350505050602060405180830381600087803b156100005760325a03f11561000057505060405151151590506108fe57610000565b600254604051600160a060020a03331691830280156108fc02916000818181858888f19350505050151561093157610000565b5b6004546002546040805186815292840260208401529083028282015251600160a060020a033316917f0ba0a3a12a9b73413f41468a265bf897ff66171a971e352360753a27d5db7683919081900360600190a25b5b505050565b60005433600160a060020a039081169116146109a757610000565b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff19166c01000000000000000000000000838102041790555b5b5056
Deployed Bytecode
0x6060604052361561004b5760e060020a60003504633d6a32bd811461005d5780635de014971461009857806363a9c3d7146100bf5780638da5cb5b14610120578063f2fde38b14610149575b346100005761005b5b610000565b565b005b346100005761007c60043560243560443560643560843560a43561015b565b60408051600160a060020a039092168252519081900360200190f35b34610000576100ab6004356024356102ef565b604080519115158252519081900360200190f35b34610000576100cf6004356103da565b604080519815158952600160a060020a0397881660208a015295909616878601526060870193909352608086019190915260a0850152151560c084015290151560e083015251908190036101000190f35b346100005761007c610669565b60408051600160a060020a039092168252519081900360200190f35b346100005761005b600435610678565b005b6000600086108061016c5750600085105b1561017657610000565b8486111561018357610000565b6000841161019057610000565b868686868686604051610b50806107018339018087600160a060020a03168152602001868152602001858152602001848152602001831515815260200182151581526020019650505050505050604051809103906000f0801561000057600160a060020a038082166000818152600160208190526040808320805460ff191690921790915580517ff2fde38b00000000000000000000000000000000000000000000000000000000815233909416600485015251939450909263f2fde38b92602480820193929182900301818387803b156100005760325a03f11561000057505060408051600160a060020a03338116825280851660208301528a1681830152606081018990526080810188905260a0810187905285151560c082015284151560e082015290517f65ff0f5aef2091ad3616436792adf51be3068c631b081ac0f30f77e3a0e6502d9250908190036101000190a15b9695505050505050565b6000805433600160a060020a0390811691161461030b57610000565b60408051600160a060020a03851681526020810184905281517f168656e1968a1165ef7fd3f1006847fcfba4cac97672bc70ccbcffb66bc080ba929181900390910190a16000805460408051602090810184905281517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0393841660048201526024810187905291519287169363a9059cbb936044808501949192918390030190829087803b156100005760325a03f115610000575050604051519150505b5b92915050565b600160a060020a03811660009081526001602052604081205460ff169080808080808080881561065c5789905080600160a060020a0316638da5cb5b6000604051602001526040518160e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750505060405180519060200150975080600160a060020a03166338d52e0f6000604051602001526040518160e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750505060405180519060200150965080600160a060020a0316638620410b6000604051602001526040518160e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750505060405180519060200150955080600160a060020a0316634b7503346000604051602001526040518160e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750505060405180519060200150945080600160a060020a031663976a84356000604051602001526040518160e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750505060405180519060200150935080600160a060020a031663b10993476000604051602001526040518160e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750505060405180519060200150925080600160a060020a0316634ca50f596000604051602001526040518160e060020a028152600401809050602060405180830381600087803b156100005760325a03f115610000575050604051519250505b5b50919395975091939597565b600054600160a060020a031681565b60005433600160a060020a0390811691161461069357610000565b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff19166c01000000000000000000000000838102041790555b5b50566060604052346100005760405160c080610b5083398101604090815281516020830151918301516060840151608085015160a090950151929491929091905b5b60008054600160a060020a0319166c01000000000000000000000000338102041790555b60018054600160a060020a0319166c01000000000000000000000000888102041790556002859055600384905560048390556005805460ff19167f01000000000000000000000000000000000000000000000000000000000000008481028190049190911761ff00191661010084830292909204820217918290556040805160ff80851615158252929093049091161515602083015280517ffa4f96c42c616d6fbda491095977a6af7c76ebd387177b72299180502cbeaa999281900390910190a15b5050505050505b610a158061013b6000396000f3606060405236156100b95760e060020a60003504632170ebf781146100ca57806338d52e0f146100ee5780634b750334146101175780634ca50f59146101365780638620410b146101575780638da5cb5b14610176578063919f8cfc1461019f578063976a8435146101a9578063a7abc124146101c8578063b1099347146101dd578063c34764cf146101fe578063c60ccb0e14610225578063cd53a3b71461022f578063eff883bd14610253578063f2fde38b14610265575b6100c85b6100c5610277565b5b565b005b34610000576100da6004356104a5565b604080519115158252519081900360200190f35b34610000576100fb610537565b60408051600160a060020a039092168252519081900360200190f35b3461000057610124610546565b60408051918252519081900360200190f35b34610000576100da61054c565b604080519115158252519081900360200190f35b346100005761012461055a565b60408051918252519081900360200190f35b34610000576100fb610560565b60408051600160a060020a039092168252519081900360200190f35b6100c861056f565b005b34610000576101246105c1565b60408051918252519081900360200190f35b34610000576100c86004356024356105c7565b005b34610000576100da61065c565b604080519115158252519081900360200190f35b34610000576100da600435602435610665565b604080519115158252519081900360200190f35b6100c8610277565b005b34610000576100da60043561073a565b604080519115158252519081900360200190f35b34610000576100c8600435610800565b005b34610000576100c860043561098c565b005b600060006000600560019054906101000a900460ff16806102a6575060005433600160a060020a039081169116145b1561046f5760035434811561000057049250600454600160009054906101000a9004600160a060020a0316600160a060020a03166370a08231306000604051602001526040518260e060020a0281526004018082600160a060020a03168152602001915050602060405180830381600087803b156100005760325a03f115610000575050604051519050811561000057049150600090508183111561038457506003546040519192508291908202340390600160a060020a0333169082156108fc029083906000818181858888f19350505050151561038457610000565b5b600083111561041a57600160009054906101000a9004600160a060020a0316600160a060020a031663a9059cbb3360045486026000604051602001526040518360e060020a0281526004018083600160a060020a0316815260200182815260200192505050602060405180830381600087803b156100005760325a03f115610000575050604051511515905061041a57610000565b5b60045460408051348152602081018490529185028282015251600160a060020a033316917f37e948531341be0a8ce95c3833827c6f3559825cb6421e6ff1fe21c3a8b71217919081900360600190a261049e565b604051600160a060020a033316903480156108fc02916000818181858888f19350505050151561049e57610000565b5b5b505050565b6000805433600160a060020a039081169116146104c157610000565b600160a060020a03301631829010610530576040805183815290517f8a93d70d792b644d97d7da8a5798e03bbee85be4537a860a331dbe3ee50eb9829181900360200190a160008054604051600160a060020a039091169184156108fc02918591818181858888f19450505050505b5b5b919050565b600154600160a060020a031681565b60035481565b600554610100900460ff1681565b60025481565b600054600160a060020a031681565b60005433600160a060020a0390811691161461058a57610000565b6040805134815290517fc745dab9c51cefa79677191ed7af7b0ccbb8360b8b39ed79f257f6895882980f9181900360200190a15b5b565b60045481565b60005433600160a060020a039081169116146105e257610000565b6005805460ff191660f860020a8481028190049190911761ff00191661010084830292909204820217918290556040805160ff80851615158252929093049091161515602083015280517ffa4f96c42c616d6fbda491095977a6af7c76ebd387177b72299180502cbeaa999281900390910190a15b5b5050565b60055460ff1681565b6000805433600160a060020a0390811691161461068157610000565b60408051600160a060020a03851681526020810184905281517ffea8ae97829f3801e6ca15928428931c2a4f3cee1fa7c9b83d959efd24666422929181900390910190a160008054604080516020908101849052815160e060020a63a9059cbb028152600160a060020a0393841660048201526024810187905291519287169363a9059cbb936044808501949192918390030190829087803b156100005760325a03f115610000575050604051519150505b5b92915050565b6000805433600160a060020a0390811691161461075657610000565b6040805183815290517f1ebbc515a759c3fe8e048867aac7fe458e3a37ac3dd44ffc73a6238cf30039819181900360200190a160015460008054604080516020908101849052815160e060020a63a9059cbb028152600160a060020a039384166004820152602481018890529151929094169363a9059cbb9360448084019492938390030190829087803b156100005760325a03f115610000575050604051519150505b5b919050565b600554600090819060ff1680610824575060005433600160a060020a039081169116145b1561049e5760025430600160a060020a03163181156100005704915060045483811561000057049050818111156108585750805b600081111561093157600160009054906101000a9004600160a060020a0316600160a060020a03166323b872dd333060045485026000604051602001526040518460e060020a0281526004018084600160a060020a0316815260200183600160a060020a031681526020018281526020019350505050602060405180830381600087803b156100005760325a03f11561000057505060405151151590506108fe57610000565b600254604051600160a060020a03331691830280156108fc02916000818181858888f19350505050151561093157610000565b5b6004546002546040805186815292840260208401529083028282015251600160a060020a033316917f0ba0a3a12a9b73413f41468a265bf897ff66171a971e352360753a27d5db7683919081900360600190a25b5b505050565b60005433600160a060020a039081169116146109a757610000565b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff19166c01000000000000000000000000838102041790555b5b5056
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 24 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ Download: CSV Export ]
[ 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.