Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| - | 10569534 | 2039 days ago | 1 ETH | ||||
| - | 10569534 | 2039 days ago | 1 ETH | ||||
| - | 10567837 | 2040 days ago | 0.00299269 ETH | ||||
| - | 10567837 | 2040 days ago | 0.00299269 ETH | ||||
| - | 10555721 | 2042 days ago | 0.19 ETH | ||||
| - | 10555721 | 2042 days ago | 0.19 ETH | ||||
| - | 10543111 | 2043 days ago | 0.36990688 ETH | ||||
| - | 10543111 | 2043 days ago | 0.36990688 ETH | ||||
| - | 10541827 | 2044 days ago | 2.1 ETH | ||||
| - | 10541827 | 2044 days ago | 2.1 ETH | ||||
| - | 10541753 | 2044 days ago | 19 ETH | ||||
| - | 10541753 | 2044 days ago | 19 ETH | ||||
| - | 10541692 | 2044 days ago | 19.2 ETH | ||||
| - | 10541692 | 2044 days ago | 19.2 ETH | ||||
| - | 10541644 | 2044 days ago | 21.64792665 ETH | ||||
| - | 10541644 | 2044 days ago | 21.64792665 ETH | ||||
| - | 10541632 | 2044 days ago | 30 ETH | ||||
| - | 10541632 | 2044 days ago | 30 ETH | ||||
| - | 10541608 | 2044 days ago | 0.9 ETH | ||||
| - | 10541608 | 2044 days ago | 0.9 ETH | ||||
| - | 10541519 | 2044 days ago | 0.8 ETH | ||||
| - | 10541519 | 2044 days ago | 0.8 ETH | ||||
| - | 10541514 | 2044 days ago | 0.89 ETH | ||||
| - | 10541514 | 2044 days ago | 0.89 ETH | ||||
| - | 10541409 | 2044 days ago | 19 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
WethExchange
Compiler Version
v0.5.11+commit.c082d0b4
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2020-05-30
*/
// File: openzeppelin-solidity/contracts/token/ERC20/IERC20.sol
pragma solidity ^0.5.0;
/**
* @dev Interface of the ERC20 standard as defined in the EIP. Does not include
* the optional functions; to access them see `ERC20Detailed`.
*/
interface IERC20 {
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `recipient`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a `Transfer` event.
*/
function transfer(address recipient, uint256 amount) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through `transferFrom`. This is
* zero by default.
*
* This value changes when `approve` or `transferFrom` are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* > Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an `Approval` event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `sender` to `recipient` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a `Transfer` event.
*/
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to `approve`. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
}
// File: openzeppelin-solidity/contracts/utils/Address.sol
pragma solidity ^0.5.0;
/**
* @dev Collection of functions related to the address type,
*/
library Address {
/**
* @dev Returns true if `account` is a contract.
*
* This test is non-exhaustive, and there may be false-negatives: during the
* execution of a contract's constructor, its address will be reported as
* not containing a contract.
*
* > It is unsafe to assume that an address for which this function returns
* false is an externally-owned account (EOA) and not a contract.
*/
function isContract(address account) internal view returns (bool) {
// This method relies in extcodesize, which returns 0 for contracts in
// construction, since the code is only stored at the end of the
// constructor execution.
uint256 size;
// solhint-disable-next-line no-inline-assembly
assembly { size := extcodesize(account) }
return size > 0;
}
}
// File: original_contracts/IWETH.sol
pragma solidity 0.5.11;
contract IWETH is IERC20 {
function deposit() external payable;
function withdraw(uint256 amount) external;
}
// File: openzeppelin-solidity/contracts/math/SafeMath.sol
pragma solidity ^0.5.0;
/**
* @dev Wrappers over Solidity's arithmetic operations with added overflow
* checks.
*
* Arithmetic operations in Solidity wrap on overflow. This can easily result
* in bugs, because programmers usually assume that an overflow raises an
* error, which is the standard behavior in high level programming languages.
* `SafeMath` restores this intuition by reverting the transaction when an
* operation overflows.
*
* Using this library instead of the unchecked operations eliminates an entire
* class of bugs, so it's recommended to use it always.
*/
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `+` operator.
*
* Requirements:
* - Addition cannot overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
require(b <= a, "SafeMath: subtraction overflow");
uint256 c = a - b;
return c;
}
/**
* @dev Returns the multiplication of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `*` operator.
*
* Requirements:
* - Multiplication cannot overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
/**
* @dev Returns the integer division of two unsigned integers. Reverts on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
// Solidity only automatically asserts when dividing by 0
require(b > 0, "SafeMath: division by zero");
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
require(b != 0, "SafeMath: modulo by zero");
return a % b;
}
}
// File: openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol
pragma solidity ^0.5.0;
/**
* @title SafeERC20
* @dev Wrappers around ERC20 operations that throw on failure (when the token
* contract returns false). Tokens that return no value (and instead revert or
* throw on failure) are also supported, non-reverting calls are assumed to be
* successful.
* To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,
* which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
*/
library SafeERC20 {
using SafeMath for uint256;
using Address for address;
function safeTransfer(IERC20 token, address to, uint256 value) internal {
callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
}
function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {
callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
}
function safeApprove(IERC20 token, address spender, uint256 value) internal {
// safeApprove should only be called when setting an initial allowance,
// or when resetting it to zero. To increase and decrease it, use
// 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
// solhint-disable-next-line max-line-length
require((value == 0) || (token.allowance(address(this), spender) == 0),
"SafeERC20: approve from non-zero to non-zero allowance"
);
callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
}
function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {
uint256 newAllowance = token.allowance(address(this), spender).add(value);
callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
}
function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {
uint256 newAllowance = token.allowance(address(this), spender).sub(value);
callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
}
/**
* @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
* on the return value: the return value is optional (but if data is returned, it must not be false).
* @param token The token targeted by the call.
* @param data The call data (encoded using abi.encode or one of its variants).
*/
function callOptionalReturn(IERC20 token, bytes memory data) private {
// We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
// we're implementing it ourselves.
// A Solidity high level call has three parts:
// 1. The target address is checked to verify it contains contract code
// 2. The call itself is made, and success asserted
// 3. The return value is decoded, which in turn checks the size of the returned data.
// solhint-disable-next-line max-line-length
require(address(token).isContract(), "SafeERC20: call to non-contract");
// solhint-disable-next-line avoid-low-level-calls
(bool success, bytes memory returndata) = address(token).call(data);
require(success, "SafeERC20: low-level call failed");
if (returndata.length > 0) { // Return data is optional
// solhint-disable-next-line max-line-length
require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
}
}
}
// File: original_contracts/ITokenTransferProxy.sol
pragma solidity 0.5.11;
interface ITokenTransferProxy {
function transferFrom(
address token,
address from,
address to,
uint256 amount
)
external;
function freeGSTTokens(uint256 tokensToFree) external;
}
// File: original_contracts/lib/Utils.sol
pragma solidity 0.5.11;
library Utils {
using SafeMath for uint256;
using SafeERC20 for IERC20;
address constant ETH_ADDRESS = address(
0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE
);
uint256 constant MAX_UINT = 2 ** 256 - 1;
struct Route {
address payable exchange;
address targetExchange;
uint percent;
bytes payload;
uint256 networkFee;
}
struct Path {
address to;
Route[] routes;
}
function ethAddress() internal pure returns (address) {return ETH_ADDRESS;}
function maxUint() internal pure returns (uint256) {return MAX_UINT;}
function approve(
address addressToApprove,
address token
) internal {
if (token != ETH_ADDRESS) {
IERC20 _token = IERC20(token);
uint allowance = _token.allowance(address(this), addressToApprove);
if (allowance < MAX_UINT / 10) {
_token.safeApprove(addressToApprove, MAX_UINT);
}
}
}
function transferTokens(
address token,
address payable destination,
uint256 amount
)
internal
{
if (token == ETH_ADDRESS) {
destination.transfer(amount);
}
else {
IERC20(token).safeTransfer(destination, amount);
}
}
function tokenBalance(
address token,
address account
)
internal
view
returns (uint256)
{
if (token == ETH_ADDRESS) {
return account.balance;
} else {
return IERC20(token).balanceOf(account);
}
}
/**
* @dev Helper method to refund gas using gas tokens
*/
function refundGas(address tokenProxy, uint256 initialGas, uint256 mintPrice) internal {
uint256 mintBase = 32254;
uint256 mintToken = 36543;
uint256 freeBase = 14154;
uint256 freeToken = 6870;
uint256 reimburse = 24000;
uint256 tokens = initialGas.sub(
gasleft()).add(freeBase).div(reimburse.mul(2).sub(freeToken)
);
uint256 mintCost = mintBase.add(tokens.mul(mintToken));
uint256 freeCost = freeBase.add(tokens.mul(freeToken));
uint256 maxreimburse = tokens.mul(reimburse);
uint256 efficiency = maxreimburse.mul(tx.gasprice).mul(100).div(
mintCost.mul(mintPrice).add(freeCost.mul(tx.gasprice))
);
if (efficiency > 100) {
freeGasTokens(tokenProxy, tokens);
}
}
/**
* @dev Helper method to free gas tokens
*/
function freeGasTokens(address tokenProxy, uint256 tokens) internal {
uint256 tokensToFree = tokens;
uint256 safeNumTokens = 0;
uint256 gas = gasleft();
if (gas >= 27710) {
safeNumTokens = gas.sub(27710).div(1148 + 5722 + 150);
}
if (tokensToFree > safeNumTokens) {
tokensToFree = safeNumTokens;
}
ITokenTransferProxy(tokenProxy).freeGSTTokens(tokensToFree);
}
}
// File: original_contracts/lib/IExchange.sol
pragma solidity 0.5.11;
/**
* @dev This interface should be implemented by all exchanges which needs to integrate with the paraswap protocol
*/
interface IExchange {
/**
* @dev The function which performs the swap on an exchange.
* Exchange needs to implement this method in order to support swapping of tokens through it
* @param fromToken Address of the source token
* @param toToken Address of the destination token
* @param fromAmount Amount of source tokens to be swapped
* @param toAmount Minimum destination token amount expected out of this swap
* @param exchange Internal exchange or factory contract address for the exchange. For example Registry address for the Uniswap
* @param payload Any exchange specific data which is required can be passed in this argument in encoded format which
* will be decoded by the exchange. Each exchange will publish it's own decoding/encoding mechanism
*/
function swap(
IERC20 fromToken,
IERC20 toToken,
uint256 fromAmount,
uint256 toAmount,
address exchange,
bytes calldata payload) external payable returns (uint256);
}
// File: openzeppelin-solidity/contracts/ownership/Ownable.sol
pragma solidity ^0.5.0;
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be aplied to your functions to restrict their use to
* the owner.
*/
contract Ownable {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor () internal {
_owner = msg.sender;
emit OwnershipTransferred(address(0), _owner);
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view returns (address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(isOwner(), "Ownable: caller is not the owner");
_;
}
/**
* @dev Returns true if the caller is the current owner.
*/
function isOwner() public view returns (bool) {
return msg.sender == _owner;
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* > Note: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public onlyOwner {
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
*/
function _transferOwnership(address newOwner) internal {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
// File: original_contracts/lib/TokenFetcher.sol
pragma solidity 0.5.11;
contract TokenFetcher is Ownable {
/**
* @dev Allows owner of the contract to transfer tokens any tokens which are assigned to the contract
* This method is for saftey if by any chance tokens or ETHs are assigned to the contract by mistake
* @dev token Address of the token to be transferred
* @dev destination Recepient of the token
* @dev amount Amount of tokens to be transferred
*/
function transferTokens(
address token,
address payable destination,
uint256 amount
)
external
onlyOwner
{
Utils.transferTokens(token, destination, amount);
}
}
// File: original_contracts/lib/weth/WethExchange.sol
pragma solidity 0.5.11;
contract WethExchange is IExchange, TokenFetcher {
using Address for address;
address public weth;
constructor(address _weth) public {
weth = _weth;
}
/**
* @dev Fallback method to allow exchanges to transfer back ethers for a particular swap
* It will only allow contracts to send funds to it
*/
function() external payable {
address account = msg.sender;
require(
account.isContract(),
"Sender is not a contract"
);
}
function swap(
IERC20 fromToken,
IERC20 toToken,
uint256 fromAmount,
uint256 toAmount,
address exchange,
bytes calldata payload
)
external
payable
returns (uint256)
{
Utils.approve(address(weth), address(fromToken));
if (address(fromToken) == weth){
require(address(toToken) == Utils.ethAddress(), "Destination token should be ETH");
IWETH(weth).withdraw(fromAmount);
}
else if (address(fromToken) == Utils.ethAddress()) {
require(address(toToken) == weth, "Destination token should be weth");
IWETH(weth).deposit.value(fromAmount)();
}
else {
revert("Invalid fromToken");
}
uint256 receivedAmount = Utils.tokenBalance(address(toToken), address(this));
Utils.transferTokens(address(toToken), msg.sender, receivedAmount);
return receivedAmount;
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":true,"inputs":[],"name":"weth","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address payable","name":"destination","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract IERC20","name":"fromToken","type":"address"},{"internalType":"contract IERC20","name":"toToken","type":"address"},{"internalType":"uint256","name":"fromAmount","type":"uint256"},{"internalType":"uint256","name":"toAmount","type":"uint256"},{"internalType":"address","name":"exchange","type":"address"},{"internalType":"bytes","name":"payload","type":"bytes"}],"name":"swap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_weth","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]Contract Creation Code
608060405234801561001057600080fd5b50604051610de5380380610de58339818101604052602081101561003357600080fd5b5051600080546001600160a01b03191633178082556040516001600160a01b039190911691907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3600180546001600160a01b0319166001600160a01b0392909216919091179055610d38806100ad6000396000f3fe6080604052600436106100705760003560e01c80638f32d59b1161004e5780638f32d59b1461012b578063a64b6e5f14610154578063b69cbf9f14610197578063f2fde38b1461024657610070565b80633fc8cef3146100ce578063715018a6146100ff5780638da5cb5b14610116575b3361007a81610279565b6100cb576040805162461bcd60e51b815260206004820152601860248201527f53656e646572206973206e6f74206120636f6e74726163740000000000000000604482015290519081900360640190fd5b50005b3480156100da57600080fd5b506100e361027f565b604080516001600160a01b039092168252519081900360200190f35b34801561010b57600080fd5b5061011461028e565b005b34801561012257600080fd5b506100e3610331565b34801561013757600080fd5b50610140610340565b604080519115158252519081900360200190f35b34801561016057600080fd5b506101146004803603606081101561017757600080fd5b506001600160a01b03813581169160208101359091169060400135610351565b610234600480360360c08110156101ad57600080fd5b6001600160a01b038235811692602081013582169260408201359260608301359260808101359091169181019060c0810160a08201356401000000008111156101f557600080fd5b82018360208201111561020757600080fd5b8035906020019184600183028401116401000000008311171561022957600080fd5b5090925090506103ba565b60408051918252519081900360200190f35b34801561025257600080fd5b506101146004803603602081101561026957600080fd5b50356001600160a01b0316610617565b3b151590565b6001546001600160a01b031681565b610296610340565b6102e7576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6000546001600160a01b0316331490565b610359610340565b6103aa576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6103b583838361067c565b505050565b6001546000906103d3906001600160a01b0316896106f7565b6001546001600160a01b03898116911614156104c0576103f16107e9565b6001600160a01b0316876001600160a01b031614610456576040805162461bcd60e51b815260206004820152601f60248201527f44657374696e6174696f6e20746f6b656e2073686f756c642062652045544800604482015290519081900360640190fd5b60015460408051632e1a7d4d60e01b81526004810189905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b1580156104a357600080fd5b505af11580156104b7573d6000803e3d6000fd5b505050506105f2565b6104c86107e9565b6001600160a01b0316886001600160a01b031614156105b1576001546001600160a01b03888116911614610543576040805162461bcd60e51b815260206004820181905260248201527f44657374696e6174696f6e20746f6b656e2073686f756c642062652077657468604482015290519081900360640190fd5b600160009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0876040518263ffffffff1660e01b81526004016000604051808303818588803b15801561059357600080fd5b505af11580156105a7573d6000803e3d6000fd5b50505050506105f2565b6040805162461bcd60e51b815260206004820152601160248201527024b73b30b634b210333937b6aa37b5b2b760791b604482015290519081900360640190fd5b60006105fe8830610801565b905061060b88338361067c565b98975050505050505050565b61061f610340565b610670576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b610679816108c4565b50565b6001600160a01b03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156106dd576040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156106d7573d6000803e3d6000fd5b506103b5565b6103b56001600160a01b038416838363ffffffff61096416565b6001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee146107e55760408051636eb1769f60e11b81523060048201526001600160a01b038481166024830152915183926000929084169163dd62ed3e91604480820192602092909190829003018186803b15801561077057600080fd5b505afa158015610784573d6000803e3d6000fd5b505050506040513d602081101561079a57600080fd5b505190507f19999999999999999999999999999999999999999999999999999999999999998110156107e2576107e26001600160a01b0383168560001963ffffffff6109b616565b50505b5050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee90565b60006001600160a01b03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141561083957506001600160a01b038116316108be565b826001600160a01b03166370a08231836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561088f57600080fd5b505afa1580156108a3573d6000803e3d6000fd5b505050506040513d60208110156108b957600080fd5b505190505b92915050565b6001600160a01b0381166109095760405162461bcd60e51b8152600401808060200182810382526026815260200180610c7e6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526103b5908490610ac5565b801580610a3c575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b158015610a0e57600080fd5b505afa158015610a22573d6000803e3d6000fd5b505050506040513d6020811015610a3857600080fd5b5051155b610a775760405162461bcd60e51b8152600401808060200182810382526036815260200180610cce6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526103b59084905b610ad7826001600160a01b0316610279565b610b28576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310610b665780518252601f199092019160209182019101610b47565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610bc8576040519150601f19603f3d011682016040523d82523d6000602084013e610bcd565b606091505b509150915081610c24576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156107e257808060200190516020811015610c4057600080fd5b50516107e25760405162461bcd60e51b815260040180806020018281038252602a815260200180610ca4602a913960400191505060405180910390fdfe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a72315820c3492e8d304fc6efdba561f62b79c31af8202e55bef2ca37c45c651dbc9a5d1f64736f6c634300050b0032000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Deployed Bytecode
0x6080604052600436106100705760003560e01c80638f32d59b1161004e5780638f32d59b1461012b578063a64b6e5f14610154578063b69cbf9f14610197578063f2fde38b1461024657610070565b80633fc8cef3146100ce578063715018a6146100ff5780638da5cb5b14610116575b3361007a81610279565b6100cb576040805162461bcd60e51b815260206004820152601860248201527f53656e646572206973206e6f74206120636f6e74726163740000000000000000604482015290519081900360640190fd5b50005b3480156100da57600080fd5b506100e361027f565b604080516001600160a01b039092168252519081900360200190f35b34801561010b57600080fd5b5061011461028e565b005b34801561012257600080fd5b506100e3610331565b34801561013757600080fd5b50610140610340565b604080519115158252519081900360200190f35b34801561016057600080fd5b506101146004803603606081101561017757600080fd5b506001600160a01b03813581169160208101359091169060400135610351565b610234600480360360c08110156101ad57600080fd5b6001600160a01b038235811692602081013582169260408201359260608301359260808101359091169181019060c0810160a08201356401000000008111156101f557600080fd5b82018360208201111561020757600080fd5b8035906020019184600183028401116401000000008311171561022957600080fd5b5090925090506103ba565b60408051918252519081900360200190f35b34801561025257600080fd5b506101146004803603602081101561026957600080fd5b50356001600160a01b0316610617565b3b151590565b6001546001600160a01b031681565b610296610340565b6102e7576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6000546001600160a01b0316331490565b610359610340565b6103aa576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6103b583838361067c565b505050565b6001546000906103d3906001600160a01b0316896106f7565b6001546001600160a01b03898116911614156104c0576103f16107e9565b6001600160a01b0316876001600160a01b031614610456576040805162461bcd60e51b815260206004820152601f60248201527f44657374696e6174696f6e20746f6b656e2073686f756c642062652045544800604482015290519081900360640190fd5b60015460408051632e1a7d4d60e01b81526004810189905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b1580156104a357600080fd5b505af11580156104b7573d6000803e3d6000fd5b505050506105f2565b6104c86107e9565b6001600160a01b0316886001600160a01b031614156105b1576001546001600160a01b03888116911614610543576040805162461bcd60e51b815260206004820181905260248201527f44657374696e6174696f6e20746f6b656e2073686f756c642062652077657468604482015290519081900360640190fd5b600160009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0876040518263ffffffff1660e01b81526004016000604051808303818588803b15801561059357600080fd5b505af11580156105a7573d6000803e3d6000fd5b50505050506105f2565b6040805162461bcd60e51b815260206004820152601160248201527024b73b30b634b210333937b6aa37b5b2b760791b604482015290519081900360640190fd5b60006105fe8830610801565b905061060b88338361067c565b98975050505050505050565b61061f610340565b610670576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b610679816108c4565b50565b6001600160a01b03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156106dd576040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156106d7573d6000803e3d6000fd5b506103b5565b6103b56001600160a01b038416838363ffffffff61096416565b6001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee146107e55760408051636eb1769f60e11b81523060048201526001600160a01b038481166024830152915183926000929084169163dd62ed3e91604480820192602092909190829003018186803b15801561077057600080fd5b505afa158015610784573d6000803e3d6000fd5b505050506040513d602081101561079a57600080fd5b505190507f19999999999999999999999999999999999999999999999999999999999999998110156107e2576107e26001600160a01b0383168560001963ffffffff6109b616565b50505b5050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee90565b60006001600160a01b03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141561083957506001600160a01b038116316108be565b826001600160a01b03166370a08231836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561088f57600080fd5b505afa1580156108a3573d6000803e3d6000fd5b505050506040513d60208110156108b957600080fd5b505190505b92915050565b6001600160a01b0381166109095760405162461bcd60e51b8152600401808060200182810382526026815260200180610c7e6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526103b5908490610ac5565b801580610a3c575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b158015610a0e57600080fd5b505afa158015610a22573d6000803e3d6000fd5b505050506040513d6020811015610a3857600080fd5b5051155b610a775760405162461bcd60e51b8152600401808060200182810382526036815260200180610cce6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526103b59084905b610ad7826001600160a01b0316610279565b610b28576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310610b665780518252601f199092019160209182019101610b47565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610bc8576040519150601f19603f3d011682016040523d82523d6000602084013e610bcd565b606091505b509150915081610c24576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156107e257808060200190516020811015610c4057600080fd5b50516107e25760405162461bcd60e51b815260040180806020018281038252602a815260200180610ca4602a913960400191505060405180910390fdfe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a72315820c3492e8d304fc6efdba561f62b79c31af8202e55bef2ca37c45c651dbc9a5d1f64736f6c634300050b0032
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
-----Decoded View---------------
Arg [0] : _weth (address): 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Deployed Bytecode Sourcemap
19729:1554:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20143:10;20186:20;20143:10;20186:18;:20::i;:::-;20164:94;;;;;-1:-1:-1;;;20164:94:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;20086:180;19729:1554;19819:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19819:19:0;;;:::i;:::-;;;;-1:-1:-1;;;;;19819:19:0;;;;;;;;;;;;;;18138:140;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18138:140:0;;;:::i;:::-;;17327:79;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17327:79:0;;;:::i;17693:92::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17693:92:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;19397:227;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19397:227:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;19397:227:0;;;;;;;;;;;;;;;;;:::i;20274:1006::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;20274:1006:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;20274:1006:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;20274:1006:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;20274:1006:0;;-1:-1:-1;20274:1006:0;-1:-1:-1;20274:1006:0;:::i;:::-;;;;;;;;;;;;;;;;18433:109;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18433:109:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18433:109:0;-1:-1:-1;;;;;18433:109:0;;:::i;3499:422::-;3866:20;3905:8;;;3499:422::o;19819:19::-;;;-1:-1:-1;;;;;19819:19:0;;:::o;18138:140::-;17539:9;:7;:9::i;:::-;17531:54;;;;;-1:-1:-1;;;17531:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18237:1;18221:6;;18200:40;;-1:-1:-1;;;;;18221:6:0;;;;18200:40;;18237:1;;18200:40;18268:1;18251:19;;-1:-1:-1;;;;;;18251:19:0;;;18138:140::o;17327:79::-;17365:7;17392:6;-1:-1:-1;;;;;17392:6:0;17327:79;:::o;17693:92::-;17733:4;17771:6;-1:-1:-1;;;;;17771:6:0;17757:10;:20;;17693:92::o;19397:227::-;17539:9;:7;:9::i;:::-;17531:54;;;;;-1:-1:-1;;;17531:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19568:48;19589:5;19596:11;19609:6;19568:20;:48::i;:::-;19397:227;;;:::o;20274:1006::-;20565:4;;20516:7;;20543:48;;-1:-1:-1;;;;;20565:4:0;20580:9;20543:13;:48::i;:::-;20630:4;;-1:-1:-1;;;;;20608:26:0;;;20630:4;;20608:26;20604:467;;;20678:18;:16;:18::i;:::-;-1:-1:-1;;;;;20658:38:0;20666:7;-1:-1:-1;;;;;20658:38:0;;20650:82;;;;;-1:-1:-1;;;20650:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;20753:4;;20747:32;;;-1:-1:-1;;;20747:32:0;;;;;;;;;;-1:-1:-1;;;;;20753:4:0;;;;20747:20;;:32;;;;;20753:4;;20747:32;;;;;;;;20753:4;;20747:32;;;5:2:-1;;;;30:1;27;20:12;5:2;20747:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20747:32:0;;;;20604:467;;;20832:18;:16;:18::i;:::-;-1:-1:-1;;;;;20810:40:0;20818:9;-1:-1:-1;;;;;20810:40:0;;20806:265;;;20895:4;;-1:-1:-1;;;;;20875:24:0;;;20895:4;;20875:24;20867:69;;;;;-1:-1:-1;;;20867:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20957:4;;;;;;;;;-1:-1:-1;;;;;20957:4:0;-1:-1:-1;;;;;20951:19:0;;20977:10;20951:39;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20951:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20951:39:0;;;;;20806:265;;;21032:27;;;-1:-1:-1;;;21032:27:0;;;;;;;;;;;;-1:-1:-1;;;21032:27:0;;;;;;;;;;;;;;20806:265;21083:22;21108:51;21135:7;21153:4;21108:18;:51::i;:::-;21083:76;;21172:66;21201:7;21211:10;21223:14;21172:20;:66::i;:::-;21258:14;20274:1006;-1:-1:-1;;;;;;;;20274:1006:0:o;18433:109::-;17539:9;:7;:9::i;:::-;17531:54;;;;;-1:-1:-1;;;17531:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18506:28;18525:8;18506:18;:28::i;:::-;18433:109;:::o;13078:325::-;-1:-1:-1;;;;;13230:20:0;;12153:42;13230:20;13226:170;;;13267:28;;-1:-1:-1;;;;;13267:20:0;;;:28;;;;;13288:6;;13267:28;;;;13288:6;13267:20;:28;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13267:28:0;13226:170;;;13337:47;-1:-1:-1;;;;;13337:26:0;;13364:11;13377:6;13337:47;:26;:47;:::i;12667:403::-;-1:-1:-1;;;;;12774:20:0;;12153:42;12774:20;12770:293;;12874:49;;;-1:-1:-1;;;12874:49:0;;12899:4;12874:49;;;;-1:-1:-1;;;;;12874:49:0;;;;;;;;;12834:5;;12811:13;;12874:16;;;;;;:49;;;;;;;;;;;;;;;:16;:49;;;5:2:-1;;;;30:1;27;20:12;5:2;12874:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12874:49:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12874:49:0;;-1:-1:-1;12956:13:0;12944:25;;12940:112;;;12990:46;-1:-1:-1;;;;;12990:18:0;;13009:16;-1:-1:-1;;12990:46:0;:18;:46;:::i;:::-;12770:293;;;12667:403;;:::o;12507:75::-;12153:42;12507:75;:::o;13411:296::-;13528:7;-1:-1:-1;;;;;13557:20:0;;12153:42;13557:20;13553:147;;;-1:-1:-1;;;;;;13601:15:0;;;13594:22;;13553:147;13663:5;-1:-1:-1;;;;;13656:23:0;;13680:7;13656:32;;;;;;;;;;;;;-1:-1:-1;;;;;13656:32:0;-1:-1:-1;;;;;13656:32:0;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13656:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13656:32:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13656:32:0;;-1:-1:-1;13553:147:0;13411:296;;;;:::o;18648:229::-;-1:-1:-1;;;;;18722:22:0;;18714:73;;;;-1:-1:-1;;;18714:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18824:6;;;18803:38;;-1:-1:-1;;;;;18803:38:0;;;;18824:6;;;18803:38;;;18852:6;:17;;-1:-1:-1;;;;;;18852:17:0;-1:-1:-1;;;;;18852:17:0;;;;;;;;;;18648:229::o;8484:176::-;8593:58;;;-1:-1:-1;;;;;8593:58:0;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;8593:58:0;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;8567:85:0;;8586:5;;8567:18;:85::i;8880:621::-;9250:10;;;9249:62;;-1:-1:-1;9266:39:0;;;-1:-1:-1;;;9266:39:0;;9290:4;9266:39;;;;-1:-1:-1;;;;;9266:39:0;;;;;;;;;:15;;;;;;:39;;;;;;;;;;;;;;;:15;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;9266:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9266:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9266:39:0;:44;9249:62;9241:152;;;;-1:-1:-1;;;9241:152:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9430:62;;;-1:-1:-1;;;;;9430:62:0;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;9430:62:0;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;9404:89:0;;9423:5;;10478:1114;11082:27;11090:5;-1:-1:-1;;;;;11082:25:0;;:27::i;:::-;11074:71;;;;;-1:-1:-1;;;11074:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11219:12;11233:23;11268:5;-1:-1:-1;;;;;11260:19:0;11280:4;11260:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;11260:25:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;11218:67:0;;;;11304:7;11296:52;;;;;-1:-1:-1;;;11296:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11365:17;;:21;11361:224;;11507:10;11496:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11496:30:0;11488:85;;;;-1:-1:-1;;;11488:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Swarm Source
bzzr://c3492e8d304fc6efdba561f62b79c31af8202e55bef2ca37c45c651dbc9a5d1f
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 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.