Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 25 from a total of 447 transactions
| Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Makeoffer | 16321423 | 1026 days ago | IN | 0 ETH | 0.00246626 | ||||
| Makeoffer | 16288239 | 1031 days ago | IN | 0 ETH | 0.00152978 | ||||
| Makeoffer | 16288228 | 1031 days ago | IN | 0 ETH | 0.00162458 | ||||
| Makeoffer | 16288220 | 1031 days ago | IN | 0 ETH | 0.00149412 | ||||
| Makeoffer | 16288206 | 1031 days ago | IN | 0 ETH | 0.00164884 | ||||
| Makeoffer | 16288191 | 1031 days ago | IN | 0 ETH | 0.0016656 | ||||
| Makeoffer | 16288179 | 1031 days ago | IN | 0 ETH | 0.00161815 | ||||
| Makeoffer | 16288162 | 1031 days ago | IN | 0 ETH | 0.00168637 | ||||
| Makeoffer | 16288147 | 1031 days ago | IN | 0 ETH | 0.00163407 | ||||
| Makeoffer | 16288118 | 1031 days ago | IN | 0 ETH | 0.00169637 | ||||
| Makeoffer | 16288105 | 1031 days ago | IN | 0 ETH | 0.00169748 | ||||
| Makeoffer | 16287663 | 1031 days ago | IN | 0 ETH | 0.00150428 | ||||
| Makeoffer | 16287637 | 1031 days ago | IN | 0 ETH | 0.00161247 | ||||
| Makeoffer | 16274474 | 1033 days ago | IN | 0 ETH | 0.00131789 | ||||
| Deleteoffer | 15567016 | 1132 days ago | IN | 0 ETH | 0.00017415 | ||||
| Makeoffer | 15566735 | 1132 days ago | IN | 0 ETH | 0.00056746 | ||||
| Makeoffer | 15494211 | 1143 days ago | IN | 0 ETH | 0.00251341 | ||||
| Makeoffer | 15494207 | 1143 days ago | IN | 0 ETH | 0.00194394 | ||||
| Deleteoffer | 15481808 | 1145 days ago | IN | 0 ETH | 0.00038715 | ||||
| Makeoffer | 15481088 | 1145 days ago | IN | 0 ETH | 0.00170828 | ||||
| Makeoffer | 15413424 | 1156 days ago | IN | 0 ETH | 0.00071886 | ||||
| Makeoffer | 15406635 | 1157 days ago | IN | 0 ETH | 0.00088466 | ||||
| Makeoffer | 15321444 | 1171 days ago | IN | 0 ETH | 0.00438465 | ||||
| Makeoffer | 15321436 | 1171 days ago | IN | 0 ETH | 0.00411743 | ||||
| Makeoffer | 15321426 | 1171 days ago | IN | 0 ETH | 0.0039249 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Cross-Chain Transactions
Loading...
Loading
Contract Name:
SWAPCAT
Compiler Version
v0.4.26+commit.4563c3fc
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2020-09-10
*/
pragma solidity ^0.4.20;
// 😸 WWW.SWAP.CAT 😸
//
// a simple DEX for fixed price token offers directly from wallet to wallet
//
// users can set up erc20 tokens for sale for any other erc20
//
// funds stay in users wallets, dex contract gets a spending allowance
//
// payments go directly into the sellers wallet
//
// this DEX takes no fees
//
// mostly useful to provide stablecoin liquidity or sell tokens for a premium
//
// offers have to be adjusted by the user if prices change
//
// we need the erc20 interface to access the tokens details
interface IERC20 {
function balanceOf(address account) external view returns (uint256);
function allowance(address owner, address spender) external view returns (uint256);
// no return value on transfer and transferFrom to tolerate old erc20 tokens
// we work around that in the buy function by checking balance twice
function transferFrom(address sender, address recipient, uint256 amount) external;
function transfer(address to, uint256 amount) external;
function decimals() external view returns (uint256);
function symbol() external view returns (string);
function name() external view returns (string);
}
contract SWAPCAT {
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// lets make mappings to store offer data
mapping (uint24 => uint256) internal price;
mapping (uint24 => address) internal offertoken;
mapping (uint24 => address) internal buyertoken;
mapping (uint24 => address) internal seller;
uint24 internal offercount;
// admin address, receives donations and can move stuck funds, nothing else
address internal admin = 0xc965E082B0082449047501032F0E9e7F3DC5Cc12;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// set up your erc20 offer. give token addresses and the price in baseunits
// to change a price simply call this again with the changed price + offerid
function makeoffer(address _offertoken, address _buyertoken, uint256 _price, uint24 _offerid) public returns (uint24) {
// if no offerid is given a new offer is made, if offerid is given only the offers price is changed if owner matches
if(_offerid==0)
{
_offerid=offercount;
offercount++;seller[_offerid]=msg.sender;
offertoken[_offerid]=_offertoken;
buyertoken[_offerid]=_buyertoken;
}
else
{
require(seller[_offerid]==msg.sender,"only original seller can change offer!");
}
price[_offerid]=_price;
// returns the offerid
return _offerid;
}
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// delete an offer
function deleteoffer(uint24 _offerid) public returns (string) {
require(seller[_offerid]==msg.sender,"only original seller can change offer!");
delete seller[_offerid];
delete offertoken[_offerid];
delete buyertoken[_offerid];
delete price[_offerid];
return "offer deleted";
}
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// return the total number of offers to loop through all offers
// its the web frontends job to keep track of offers
function getoffercount() public view returns (uint24){ return offercount-1;}
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// get a tokens name, symbol and decimals
function tokeninfo(address _tokenaddr) public view returns (uint256, string, string) {
IERC20 tokeni = IERC20(_tokenaddr);
return (tokeni.decimals(),tokeni.symbol(),tokeni.name());
}
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// get a single offers details
function showoffer(uint24 _offerid) public view returns (address, address, address, uint256, uint256) {
IERC20 offertokeni = IERC20(offertoken[_offerid]);
// get offertokens balance and allowance, whichever is lower is the available amount
uint256 availablebalance = offertokeni.balanceOf(seller[_offerid]);
uint256 availableallow = offertokeni.allowance(seller[_offerid],address(this));
if(availableallow<availablebalance){availablebalance = availableallow;}
return (offertoken[_offerid],buyertoken[_offerid],seller[_offerid],price[_offerid],availablebalance);
}
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// return the price in buyertokens for the specified amount of offertokens
function pricepreview(uint24 _offerid, uint256 _amount) public view returns (uint256) {
IERC20 offertokeni = IERC20(offertoken[_offerid]);
return _amount * price[_offerid] / (uint256(10) ** offertokeni.decimals())+1;
}
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// return the amount in offertokens for the specified amount of buyertokens, for debugging
//function pricepreviewreverse(uint24 _offerid, uint256 _amount) public view returns (uint256) {
// IERC20 offertokeni = IERC20(offertoken[_offerid]);
// return _amount * (uint256(10) ** offertokeni.decimals()) / price[_offerid];
// }
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// the actual exchange function
// the buyer must bring the price correctly to ensure no frontrunning / changed offer
// if the offer is changed in meantime, it will not execute
function buy(uint24 _offerid, uint256 _offertokenamount, uint256 _price) public returns (string) {
IERC20 offertokeninterface = IERC20(offertoken[_offerid]);
IERC20 buyertokeninterface = IERC20(buyertoken[_offerid]);
// given price is being checked with recorded data from mappings
require(price[_offerid] == _price,"offer price wrong");
// calculate the price of the order
uint256 buyertokenAmount = _offertokenamount * _price / (uint256(10) ** offertokeninterface.decimals())+1;
////// these 4 checks have been spared out since the final check suffices, this save ~50000 gas
//// // check if the buyers allowance and balance are right
//// require(buyertokeninterface.allowance(msg.sender, address(this)) >= buyertokenAmount, "Check the buyers token allowance");
//// require(buyertokeninterface.balanceOf(msg.sender) >= buyertokenAmount,"buyer not enough to pay");
//// // check if the sellers allowance and balance are right
//// require(offertokeninterface.allowance(seller[_offerid], address(this)) >= _offertokenamount, "Check the sellers token allowance");
//// require(offertokeninterface.balanceOf(seller[_offerid]) >= _offertokenamount,"seller not enough on stock");
// some old erc20 tokens give no return value so we must work around by getting their balance before and after the exchange
uint256 oldbuyerbalance = buyertokeninterface.balanceOf(msg.sender);
uint256 oldsellerbalance = offertokeninterface.balanceOf(seller[_offerid]);
// finally do the exchange
buyertokeninterface.transferFrom(msg.sender,seller[_offerid], buyertokenAmount);
offertokeninterface.transferFrom(seller[_offerid],msg.sender,_offertokenamount);
// now check if the balances changed on both accounts.
// we do not check for exact amounts since some tokens behave differently with fees, burnings, etc
// we assume if both balances are higher than before all is good
require(oldbuyerbalance > buyertokeninterface.balanceOf(msg.sender),"buyer error");
require(oldsellerbalance > offertokeninterface.balanceOf(seller[_offerid]),"seller error");
return "tokens exchanged. ENJOY!";
}
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// in case someone wrongfully directly sends erc20 to this contract address, the admin can move them out
function losttokens(address token) public {
IERC20 tokeninterface = IERC20(token);
tokeninterface.transfer(admin,tokeninterface.balanceOf(address(this)));
}
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// straight ether payments to this contract are considered donations. thank you!
function () public payable {admin.transfer(address(this).balance); }
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":true,"inputs":[{"name":"_tokenaddr","type":"address"}],"name":"tokeninfo","outputs":[{"name":"","type":"uint256"},{"name":"","type":"string"},{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"}],"name":"losttokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_offerid","type":"uint24"}],"name":"deleteoffer","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_offertoken","type":"address"},{"name":"_buyertoken","type":"address"},{"name":"_price","type":"uint256"},{"name":"_offerid","type":"uint24"}],"name":"makeoffer","outputs":[{"name":"","type":"uint24"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_offerid","type":"uint24"}],"name":"showoffer","outputs":[{"name":"","type":"address"},{"name":"","type":"address"},{"name":"","type":"address"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_offerid","type":"uint24"},{"name":"_amount","type":"uint256"}],"name":"pricepreview","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_offerid","type":"uint24"},{"name":"_offertokenamount","type":"uint256"},{"name":"_price","type":"uint256"}],"name":"buy","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getoffercount","outputs":[{"name":"","type":"uint24"}],"payable":false,"stateMutability":"view","type":"function"},{"payable":true,"stateMutability":"payable","type":"fallback"}]Contract Creation Code
608060405260048054630100000060b860020a03191676c965e082b0082449047501032f0e9e7f3dc5cc1200000017905534801561003c57600080fd5b5061112c8061004c6000396000f3006080604052600436106100745763ffffffff60e060020a60003504166364473a1281146100ba578063657ce0ef146101c05780636a540b74146101e357806374759ae41461027557806394b1a131146102bf578063c2250f8b14610316578063e3ca70b014610348578063e3fb4aea1461036b575b600454604051600160a060020a0363010000009092049190911690303180156108fc02916000818181858888f193505050501580156100b7573d6000803e3d6000fd5b50005b3480156100c657600080fd5b506100db600160a060020a0360043516610380565b604051808481526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561012257818101518382015260200161010a565b50505050905090810190601f16801561014f5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561018257818101518382015260200161016a565b50505050905090810190601f1680156101af5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b3480156101cc57600080fd5b506101e1600160a060020a03600435166105ab565b005b3480156101ef57600080fd5b5061020062ffffff600435166106a7565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561023a578181015183820152602001610222565b50505050905090810190601f1680156102675780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561028157600080fd5b506102a7600160a060020a036004358116906024351660443562ffffff606435166107d2565b6040805162ffffff9092168252519081900360200190f35b3480156102cb57600080fd5b506102dc62ffffff60043516610922565b60408051600160a060020a039687168152948616602086015292909416838301526060830152608082019290925290519081900360a00190f35b34801561032257600080fd5b5061033662ffffff60043516602435610ad1565b60408051918252519081900360200190f35b34801561035457600080fd5b5061020062ffffff60043516602435604435610ba0565b34801561037757600080fd5b506102a76110f1565b6000606080600084905080600160a060020a031663313ce5676040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156103c857600080fd5b505af11580156103dc573d6000803e3d6000fd5b505050506040513d60208110156103f257600080fd5b5051604080517f95d89b410000000000000000000000000000000000000000000000000000000081529051600160a060020a038416916395d89b4191600480830192600092919082900301818387803b15801561044e57600080fd5b505af1158015610462573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561048b57600080fd5b8101908080516401000000008111156104a357600080fd5b820160208101848111156104b657600080fd5b81516401000000008111828201871017156104d057600080fd5b505092919050505082600160a060020a03166306fdde036040518163ffffffff1660e060020a028152600401600060405180830381600087803b15801561051657600080fd5b505af115801561052a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561055357600080fd5b81019080805164010000000081111561056b57600080fd5b8201602081018481111561057e57600080fd5b815164010000000081118282018710171561059857600080fd5b50959b949a509850929650505050505050565b600480546040805160e060020a6370a082310281523093810193909352518392600160a060020a038085169363a9059cbb9363010000009091049091169184916370a08231916024808201926020929091908290030181600087803b15801561061357600080fd5b505af1158015610627573d6000803e3d6000fd5b505050506040513d602081101561063d57600080fd5b50516040805160e060020a63ffffffff8616028152600160a060020a039093166004840152602483019190915251604480830192600092919082900301818387803b15801561068b57600080fd5b505af115801561069f573d6000803e3d6000fd5b505050505050565b62ffffff8116600090815260036020526040902054606090600160a060020a03163314610744576040805160e560020a62461bcd02815260206004820152602660248201527f6f6e6c79206f726967696e616c2073656c6c65722063616e206368616e67652060448201527f6f66666572210000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b5062ffffff166000908152600360209081526040808320805473ffffffffffffffffffffffffffffffffffffffff19908116909155600183528184208054821690556002835281842080549091169055828252808320929092558151808301909252600d82527f6f666665722064656c65746564000000000000000000000000000000000000009082015290565b600062ffffff82161515610869576004805462ffffff198116600162ffffff92831681810190931691909117909255600081815260036020908152604080832080543373ffffffffffffffffffffffffffffffffffffffff199182161790915594825280832080548616600160a060020a038c81169190911790915560029092529091208054909316908716179091559150610903565b62ffffff8216600090815260036020526040902054600160a060020a03163314610903576040805160e560020a62461bcd02815260206004820152602660248201527f6f6e6c79206f726967696e616c2073656c6c65722063616e206368616e67652060448201527f6f66666572210000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b5062ffffff811660009081526020819052604090209190915592915050565b62ffffff81166000908152600160209081526040808320546003835281842054825160e060020a6370a08231028152600160a060020a0391821660048201529251859485948594859416928492839285926370a082319260248084019391929182900301818787803b15801561099757600080fd5b505af11580156109ab573d6000803e3d6000fd5b505050506040513d60208110156109c157600080fd5b505162ffffff8a1660009081526003602090815260408083205481517fdd62ed3e000000000000000000000000000000000000000000000000000000008152600160a060020a039182166004820152306024820152915194965087169363dd62ed3e93604480840194938390030190829087803b158015610a4157600080fd5b505af1158015610a55573d6000803e3d6000fd5b505050506040513d6020811015610a6b57600080fd5b5051905081811015610a7b578091505b5062ffffff9790971660009081526001602090815260408083205460028352818420546003845282852054938590529190932054600160a060020a039384169b9184169a93909216985090965090945092505050565b62ffffff821660009081526001602090815260408083205481517f313ce5670000000000000000000000000000000000000000000000000000000081529151600160a060020a0390911692839263313ce567926004808301939282900301818887803b158015610b4057600080fd5b505af1158015610b54573d6000803e3d6000fd5b505050506040513d6020811015610b6a57600080fd5b505162ffffff8516600090815260208190526040902054600a9190910a908402811515610b9357fe5b0460010191505092915050565b62ffffff831660009081526001602090815260408083205460028352818420549284905290832054606093600160a060020a03928316939092169190819081908714610c36576040805160e560020a62461bcd02815260206004820152601160248201527f6f666665722070726963652077726f6e67000000000000000000000000000000604482015290519081900360640190fd5b84600160a060020a031663313ce5676040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610c7457600080fd5b505af1158015610c88573d6000803e3d6000fd5b505050506040513d6020811015610c9e57600080fd5b5051600a0a888802811515610caf57fe5b04600101925083600160a060020a03166370a08231336040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b158015610d1057600080fd5b505af1158015610d24573d6000803e3d6000fd5b505050506040513d6020811015610d3a57600080fd5b505162ffffff8a16600090815260036020908152604080832054815160e060020a6370a08231028152600160a060020a03918216600482015291519496508916936370a0823193602480840194938390030190829087803b158015610d9e57600080fd5b505af1158015610db2573d6000803e3d6000fd5b505050506040513d6020811015610dc857600080fd5b505162ffffff8a166000908152600360205260408082205481517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152600160a060020a0391821660248201526044810188905291519394508716926323b872dd9260648084019391929182900301818387803b158015610e4e57600080fd5b505af1158015610e62573d6000803e3d6000fd5b5050505062ffffff89166000908152600360205260408082205481517f23b872dd000000000000000000000000000000000000000000000000000000008152600160a060020a039182166004820152336024820152604481018c90529151908816926323b872dd926064808201939182900301818387803b158015610ee657600080fd5b505af1158015610efa573d6000803e3d6000fd5b50506040805160e060020a6370a082310281523360048201529051600160a060020a03881693506370a08231925060248083019260209291908290030181600087803b158015610f4957600080fd5b505af1158015610f5d573d6000803e3d6000fd5b505050506040513d6020811015610f7357600080fd5b50518211610fcb576040805160e560020a62461bcd02815260206004820152600b60248201527f6275796572206572726f72000000000000000000000000000000000000000000604482015290519081900360640190fd5b62ffffff8916600090815260036020908152604080832054815160e060020a6370a08231028152600160a060020a0391821660048201529151908916936370a0823193602480850194919392918390030190829087803b15801561102e57600080fd5b505af1158015611042573d6000803e3d6000fd5b505050506040513d602081101561105857600080fd5b505181116110b0576040805160e560020a62461bcd02815260206004820152600c60248201527f73656c6c6572206572726f720000000000000000000000000000000000000000604482015290519081900360640190fd5b505060408051808201909152601881527f746f6b656e732065786368616e6765642e20454e4a4f592100000000000000006020820152979650505050505050565b60045462ffffff1660001901905600a165627a7a72305820b088d9bf973f3dcbd9bb8f46440b7deed70730b363a6daa0daf08e942a5e209e0029
Deployed Bytecode
0x6080604052600436106100745763ffffffff60e060020a60003504166364473a1281146100ba578063657ce0ef146101c05780636a540b74146101e357806374759ae41461027557806394b1a131146102bf578063c2250f8b14610316578063e3ca70b014610348578063e3fb4aea1461036b575b600454604051600160a060020a0363010000009092049190911690303180156108fc02916000818181858888f193505050501580156100b7573d6000803e3d6000fd5b50005b3480156100c657600080fd5b506100db600160a060020a0360043516610380565b604051808481526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561012257818101518382015260200161010a565b50505050905090810190601f16801561014f5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561018257818101518382015260200161016a565b50505050905090810190601f1680156101af5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b3480156101cc57600080fd5b506101e1600160a060020a03600435166105ab565b005b3480156101ef57600080fd5b5061020062ffffff600435166106a7565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561023a578181015183820152602001610222565b50505050905090810190601f1680156102675780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561028157600080fd5b506102a7600160a060020a036004358116906024351660443562ffffff606435166107d2565b6040805162ffffff9092168252519081900360200190f35b3480156102cb57600080fd5b506102dc62ffffff60043516610922565b60408051600160a060020a039687168152948616602086015292909416838301526060830152608082019290925290519081900360a00190f35b34801561032257600080fd5b5061033662ffffff60043516602435610ad1565b60408051918252519081900360200190f35b34801561035457600080fd5b5061020062ffffff60043516602435604435610ba0565b34801561037757600080fd5b506102a76110f1565b6000606080600084905080600160a060020a031663313ce5676040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156103c857600080fd5b505af11580156103dc573d6000803e3d6000fd5b505050506040513d60208110156103f257600080fd5b5051604080517f95d89b410000000000000000000000000000000000000000000000000000000081529051600160a060020a038416916395d89b4191600480830192600092919082900301818387803b15801561044e57600080fd5b505af1158015610462573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561048b57600080fd5b8101908080516401000000008111156104a357600080fd5b820160208101848111156104b657600080fd5b81516401000000008111828201871017156104d057600080fd5b505092919050505082600160a060020a03166306fdde036040518163ffffffff1660e060020a028152600401600060405180830381600087803b15801561051657600080fd5b505af115801561052a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561055357600080fd5b81019080805164010000000081111561056b57600080fd5b8201602081018481111561057e57600080fd5b815164010000000081118282018710171561059857600080fd5b50959b949a509850929650505050505050565b600480546040805160e060020a6370a082310281523093810193909352518392600160a060020a038085169363a9059cbb9363010000009091049091169184916370a08231916024808201926020929091908290030181600087803b15801561061357600080fd5b505af1158015610627573d6000803e3d6000fd5b505050506040513d602081101561063d57600080fd5b50516040805160e060020a63ffffffff8616028152600160a060020a039093166004840152602483019190915251604480830192600092919082900301818387803b15801561068b57600080fd5b505af115801561069f573d6000803e3d6000fd5b505050505050565b62ffffff8116600090815260036020526040902054606090600160a060020a03163314610744576040805160e560020a62461bcd02815260206004820152602660248201527f6f6e6c79206f726967696e616c2073656c6c65722063616e206368616e67652060448201527f6f66666572210000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b5062ffffff166000908152600360209081526040808320805473ffffffffffffffffffffffffffffffffffffffff19908116909155600183528184208054821690556002835281842080549091169055828252808320929092558151808301909252600d82527f6f666665722064656c65746564000000000000000000000000000000000000009082015290565b600062ffffff82161515610869576004805462ffffff198116600162ffffff92831681810190931691909117909255600081815260036020908152604080832080543373ffffffffffffffffffffffffffffffffffffffff199182161790915594825280832080548616600160a060020a038c81169190911790915560029092529091208054909316908716179091559150610903565b62ffffff8216600090815260036020526040902054600160a060020a03163314610903576040805160e560020a62461bcd02815260206004820152602660248201527f6f6e6c79206f726967696e616c2073656c6c65722063616e206368616e67652060448201527f6f66666572210000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b5062ffffff811660009081526020819052604090209190915592915050565b62ffffff81166000908152600160209081526040808320546003835281842054825160e060020a6370a08231028152600160a060020a0391821660048201529251859485948594859416928492839285926370a082319260248084019391929182900301818787803b15801561099757600080fd5b505af11580156109ab573d6000803e3d6000fd5b505050506040513d60208110156109c157600080fd5b505162ffffff8a1660009081526003602090815260408083205481517fdd62ed3e000000000000000000000000000000000000000000000000000000008152600160a060020a039182166004820152306024820152915194965087169363dd62ed3e93604480840194938390030190829087803b158015610a4157600080fd5b505af1158015610a55573d6000803e3d6000fd5b505050506040513d6020811015610a6b57600080fd5b5051905081811015610a7b578091505b5062ffffff9790971660009081526001602090815260408083205460028352818420546003845282852054938590529190932054600160a060020a039384169b9184169a93909216985090965090945092505050565b62ffffff821660009081526001602090815260408083205481517f313ce5670000000000000000000000000000000000000000000000000000000081529151600160a060020a0390911692839263313ce567926004808301939282900301818887803b158015610b4057600080fd5b505af1158015610b54573d6000803e3d6000fd5b505050506040513d6020811015610b6a57600080fd5b505162ffffff8516600090815260208190526040902054600a9190910a908402811515610b9357fe5b0460010191505092915050565b62ffffff831660009081526001602090815260408083205460028352818420549284905290832054606093600160a060020a03928316939092169190819081908714610c36576040805160e560020a62461bcd02815260206004820152601160248201527f6f666665722070726963652077726f6e67000000000000000000000000000000604482015290519081900360640190fd5b84600160a060020a031663313ce5676040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610c7457600080fd5b505af1158015610c88573d6000803e3d6000fd5b505050506040513d6020811015610c9e57600080fd5b5051600a0a888802811515610caf57fe5b04600101925083600160a060020a03166370a08231336040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b158015610d1057600080fd5b505af1158015610d24573d6000803e3d6000fd5b505050506040513d6020811015610d3a57600080fd5b505162ffffff8a16600090815260036020908152604080832054815160e060020a6370a08231028152600160a060020a03918216600482015291519496508916936370a0823193602480840194938390030190829087803b158015610d9e57600080fd5b505af1158015610db2573d6000803e3d6000fd5b505050506040513d6020811015610dc857600080fd5b505162ffffff8a166000908152600360205260408082205481517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152600160a060020a0391821660248201526044810188905291519394508716926323b872dd9260648084019391929182900301818387803b158015610e4e57600080fd5b505af1158015610e62573d6000803e3d6000fd5b5050505062ffffff89166000908152600360205260408082205481517f23b872dd000000000000000000000000000000000000000000000000000000008152600160a060020a039182166004820152336024820152604481018c90529151908816926323b872dd926064808201939182900301818387803b158015610ee657600080fd5b505af1158015610efa573d6000803e3d6000fd5b50506040805160e060020a6370a082310281523360048201529051600160a060020a03881693506370a08231925060248083019260209291908290030181600087803b158015610f4957600080fd5b505af1158015610f5d573d6000803e3d6000fd5b505050506040513d6020811015610f7357600080fd5b50518211610fcb576040805160e560020a62461bcd02815260206004820152600b60248201527f6275796572206572726f72000000000000000000000000000000000000000000604482015290519081900360640190fd5b62ffffff8916600090815260036020908152604080832054815160e060020a6370a08231028152600160a060020a0391821660048201529151908916936370a0823193602480850194919392918390030190829087803b15801561102e57600080fd5b505af1158015611042573d6000803e3d6000fd5b505050506040513d602081101561105857600080fd5b505181116110b0576040805160e560020a62461bcd02815260206004820152600c60248201527f73656c6c6572206572726f720000000000000000000000000000000000000000604482015290519081900360640190fd5b505060408051808201909152601881527f746f6b656e732065786368616e6765642e20454e4a4f592100000000000000006020820152979650505050505050565b60045462ffffff1660001901905600a165627a7a72305820b088d9bf973f3dcbd9bb8f46440b7deed70730b363a6daa0daf08e942a5e209e0029
Deployed Bytecode Sourcemap
1254:9300:0:-;;;;;;;;;-1:-1:-1;;;1254:9300:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10366:5;;:37;;-1:-1:-1;;;;;10366:5:0;;;;;;;;;10389:4;10381:21;10366:37;;;;;;;;;10381:21;10366:5;:37;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10366:37:0;1254:9300;4315:209;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4315:209:0;-1:-1:-1;;;;;4315:209:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4315:209:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4315:209:0;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4315:209:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9825:175;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9825:175:0;-1:-1:-1;;;;;9825:175:0;;;;;;;3213:335;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3213:335:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3213:335:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2133:790;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2133:790:0;-1:-1:-1;;;;;2133:790:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4837:652;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4837:652:0;;;;;;;;;;;-1:-1:-1;;;;;4837:652:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5828:242;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5828:242:0;;;;;;;;;;;;;;;;;;;;;;;;;7126:2319;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7126:2319:0;;;;;;;;;;;3925:76;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3925:76:0;;;;4315:209;4375:7;4384:6;4392;4411:13;4434:10;4411:34;;4464:6;-1:-1:-1;;;;;4464:15:0;;:17;;;;;-1:-1:-1;;;4464:17:0;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4464:17:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4464:17:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4464:17:0;4482:15;;;;;;;;-1:-1:-1;;;;;4482:13:0;;;;;:15;;;;;;;;;;;;;;;:13;:15;;;5:2:-1;;;;30:1;27;20:12;5:2;4482:15:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4482:15:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;4482:15:0;80::-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;4482:15:0;;;;;;20:11:-1;15:3;12:20;9:2;;;45:1;42;35:12;9:2;64:21;;126:4;117:14;;142:31;;;139:2;;;186:1;183;176:12;139:2;218:10;;268:11;251:29;;293:43;;;290:58;-1:-1;239:118;236:2;;;370:1;367;360:12;236:2;0:382;;4482:15:0;;;;;;4498:6;-1:-1:-1;;;;;4498:11:0;;:13;;;;;-1:-1:-1;;;4498:13:0;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4498:13:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4498:13:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;4498:13:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;4498:13:0;;;;;;20:11:-1;15:3;12:20;9:2;;;45:1;42;35:12;9:2;64:21;;126:4;117:14;;142:31;;;139:2;;;186:1;183;176:12;139:2;218:10;;268:11;251:29;;293:43;;;290:58;-1:-1;239:118;236:2;;;370:1;367;360:12;236:2;-1:-1;4456:56:0;;;;-1:-1:-1;4498:13:0;-1:-1:-1;4315:209:0;;-1:-1:-1;;;;;;;4315:209:0:o;9825:175::-;9950:5;;;9956:39;;;-1:-1:-1;;;;;9956:39:0;;9989:4;9956:39;;;;;;;;9909:5;;-1:-1:-1;;;;;9926:23:0;;;;;;9950:5;;;;;;;;9926:23;;9956:24;;:39;;;;;;;;;;;;;;;9878:21;9926:23;9956:39;;;5:2:-1;;;;30:1;27;20:12;5:2;9956:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9956:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9956:39:0;9926:70;;;-1:-1:-1;;;9926:70:0;;;;;;-1:-1:-1;;;;;9926:70:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9926:70:0;;;;;;;-1:-1:-1;9926:70:0;;;;5:2:-1;;;;30:1;27;20:12;5:2;9926:70:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9926:70:0;;;;9825:175;;:::o;3213:335::-;3294:16;;;;;;;:6;:16;;;;;;3267:6;;-1:-1:-1;;;;;3294:16:0;3312:10;3294:28;3286:78;;;;;-1:-1:-1;;;;;3286:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3382:16:0;;;;;;:6;:16;;;;;;;;3375:23;;-1:-1:-1;;3375:23:0;;;;;;-1:-1:-1;3416:20:0;;;;;3409:27;;;;;;3454:10;:20;;;;;3447:27;;;;;;;3492:15;;;;;;3485:22;;;;3518;;;;;;;;;;;;;;;;;3213:335::o;2133:790::-;2243:6;2385:11;;;;2382:449;;;2451:10;;;-1:-1:-1;;2484:12:0;;2451:10;;;;;2484:12;;;;;;;;;;;;;-1:-1:-1;2497:16:0;;;:6;:16;;;;;;;;:27;;2514:10;-1:-1:-1;;2497:27:0;;;;;;;2547:20;;;;;;:32;;;;-1:-1:-1;;;;;2547:32:0;;;;;;;;;;2602:10;:20;;;;;;:32;;;;;;;;;;;;2451:10;-1:-1:-1;2382:449:0;;;2737:16;;;;;;;:6;:16;;;;;;-1:-1:-1;;;;;2737:16:0;2755:10;2737:28;2729:78;;;;;-1:-1:-1;;;;;2729:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2841:15:0;;;:5;:15;;;;;;;;;;:22;;;;:15;2133:790;-1:-1:-1;;2133:790:0:o;4837:652::-;4990:20;;;4894:7;4990:20;;;:10;:20;;;;;;;;;5169:6;:16;;;;;;5147:39;;-1:-1:-1;;;;;5147:39:0;;-1:-1:-1;;;;;5169:16:0;;;5147:39;;;;;;4894:7;;;;;;;;4990:20;;4894:7;;;;4990:20;;5147:21;;:39;;;;;4990:20;;5147:39;;;;;;4894:7;4990:20;5147:39;;;5:2:-1;;;;30:1;27;20:12;5:2;5147:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5147:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5147:39:0;5244:16;;;;;;;:6;5147:39;5244:16;;;;;;;;5222:53;;;;;-1:-1:-1;;;;;5244:16:0;;;5222:53;;;;5269:4;5222:53;;;;;;5147:39;;-1:-1:-1;5222:21:0;;;;;:53;;;;;5147:39;5222:53;;;;;;;:21;:53;;;5:2:-1;;;;30:1;27;20:12;5:2;5222:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5222:53:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5222:53:0;;-1:-1:-1;5291:31:0;;;5288:71;;;5343:14;5324:33;;5288:71;-1:-1:-1;5379:20:0;;;;;;;;;:10;:20;;;;;;;;;5400:10;:20;;;;;;5421:6;:16;;;;;;5438:15;;;;;;;;;-1:-1:-1;;;;;5379:20:0;;;;5400;;;;5421:16;;;;;-1:-1:-1;5438:15:0;;-1:-1:-1;5454:16:0;;-1:-1:-1;4837:652:0;-1:-1:-1;;;4837:652:0:o;5828:242::-;5953:20;;;5905:7;5953:20;;;:10;:20;;;;;;;;;6037:22;;;;;;;-1:-1:-1;;;;;5953:20:0;;;;;;6037;;:22;;;;;5953:20;6037:22;;;;;5905:7;5953:20;6037:22;;;5:2:-1;;;;30:1;27;20:12;5:2;6037:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6037:22:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6037:22:0;6003:15;;;:5;:15;;;6037:22;6003:15;;;;;;;6030:2;6022:37;;;;;5993:25;;:67;;;;;;;;6061:1;5993:69;5985:77;;5828:242;;;;;:::o;7126:2319::-;7272:20;;;7236:26;7272:20;;;:10;:20;;;;;;;;;7340:10;:20;;;;;;7449:15;;;;;;;;7215:6;;-1:-1:-1;;;;;7272:20:0;;;;7340;;;;7236:26;;;;;7449:25;;7441:54;;;;;-1:-1:-1;;;;;7441:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7620:19;-1:-1:-1;;;;;7620:28:0;;:30;;;;;-1:-1:-1;;;7620:30:0;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7620:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7620:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7620:30:0;7613:2;7605:45;7575:26;;;:76;;;;;;;;7652:1;7575:78;7547:106;;8627:19;-1:-1:-1;;;;;8627:29:0;;8657:10;8627:41;;;;;-1:-1:-1;;;8627:41:0;;;;;;;-1:-1:-1;;;;;8627:41:0;-1:-1:-1;;;;;8627:41:0;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8627:41:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8627:41:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8627:41:0;8736:16;;;;;;;:6;8627:41;8736:16;;;;;;;;8706:47;;-1:-1:-1;;;;;8706:47:0;;-1:-1:-1;;;;;8736:16:0;;;8706:47;;;;;;8627:41;;-1:-1:-1;8706:29:0;;;;;:47;;;;;8627:41;8706:47;;;;;;;:29;:47;;;5:2:-1;;;;30:1;27;20:12;5:2;8706:47:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8706:47:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8706:47:0;8848:16;;;;;;;:6;8706:47;8848:16;;;;;;8804:79;;;;;8837:10;8804:79;;;;-1:-1:-1;;;;;8848:16:0;;;8804:79;;;;;;;;;;;;8706:47;;-1:-1:-1;8804:32:0;;;;;:79;;;;;8848:16;;8804:79;;;;;;8848:16;8804:32;:79;;;5:2:-1;;;;30:1;27;20:12;5:2;8804:79:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;;8927:16:0;;;;;;;:6;:16;;;;;;;8894:79;;;;;-1:-1:-1;;;;;8927:16:0;;;8894:79;;;;8944:10;8894:79;;;;;;;;;;;;:32;;;;;;:79;;;;;;;;;;;8927:16;8894:32;:79;;;5:2:-1;;;;30:1;27;20:12;5:2;8894:79:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;9236:41:0;;;-1:-1:-1;;;;;9236:41:0;;9266:10;9236:41;;;;;;-1:-1:-1;;;;;9236:29:0;;;-1:-1:-1;9236:29:0;;-1:-1:-1;9236:41:0;;;;;;;;;;;;;;-1:-1:-1;9236:29:0;:41;;;5:2:-1;;;;30:1;27;20:12;5:2;9236:41:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9236:41:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9236:41:0;9218:59;;9210:82;;;;;-1:-1:-1;;;;;9210:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;9360:16;;;;;;;:6;:16;;;;;;;;;9330:47;;-1:-1:-1;;;;;9330:47:0;;-1:-1:-1;;;;;9360:16:0;;;9330:47;;;;;;:29;;;;;;:47;;;;;9360:16;;9330:47;;;;;;;;;:29;:47;;;5:2:-1;;;;30:1;27;20:12;5:2;9330:47:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9330:47:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9330:47:0;9311:66;;9303:90;;;;;-1:-1:-1;;;;;9303:90:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9404:33:0;;;;;;;;;;;;;;;;;;7126:2319;-1:-1:-1;;;;;;;7126:2319:0:o;3925:76::-;3987:10;;;;-1:-1:-1;;3987:12:0;;3925:76::o
Swarm Source
bzzr://b088d9bf973f3dcbd9bb8f46440b7deed70730b363a6daa0daf08e942a5e209e
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
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.