Source Code
Latest 25 from a total of 31 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Zap ETH | 20470987 | 602 days ago | IN | 0.02 ETH | 0.00252394 | ||||
| Zap ETH | 20470799 | 602 days ago | IN | 0.03 ETH | 0.00226688 | ||||
| Zap ETH | 20452452 | 605 days ago | IN | 4 ETH | 0.00039987 | ||||
| Zap ETH | 20452320 | 605 days ago | IN | 2.6 ETH | 0.00042261 | ||||
| Zap ETH | 20395016 | 613 days ago | IN | 6 ETH | 0.00044898 | ||||
| Zap ETH | 20258459 | 632 days ago | IN | 2.5 ETH | 0.00339988 | ||||
| Zap ETH | 20242776 | 634 days ago | IN | 0.39 ETH | 0.00090688 | ||||
| Zap ETH | 20224751 | 637 days ago | IN | 0.04415541 ETH | 0.00106972 | ||||
| Zap ETH | 20180152 | 643 days ago | IN | 9.11139183 ETH | 0.00211986 | ||||
| Zap ETH | 20134630 | 649 days ago | IN | 0.26 ETH | 0.00278475 | ||||
| Zap ETH | 20051849 | 661 days ago | IN | 21.6 ETH | 0.0011765 | ||||
| Zap ETH | 20043352 | 662 days ago | IN | 1.25 ETH | 0.00264952 | ||||
| Zap ETH | 19966505 | 673 days ago | IN | 12.2 ETH | 0.00540455 | ||||
| Zap ETH | 19946383 | 676 days ago | IN | 0.1 ETH | 0.00127105 | ||||
| Zap ETH | 19838580 | 691 days ago | IN | 13 ETH | 0.00120903 | ||||
| Zap ETH | 19826829 | 692 days ago | IN | 6 ETH | 0.00139119 | ||||
| Zap ETH | 19823330 | 693 days ago | IN | 0.3 ETH | 0.00123574 | ||||
| Zap ETH | 19785923 | 698 days ago | IN | 0.1 ETH | 0.00148984 | ||||
| Zap ETH | 19637747 | 719 days ago | IN | 0.005 ETH | 0.00408848 | ||||
| Zap ETH | 19636762 | 719 days ago | IN | 0.00650298 ETH | 0.0050366 | ||||
| Zap ETH | 19626184 | 720 days ago | IN | 1.00150298 ETH | 0.00766525 | ||||
| Zap ETH | 19622506 | 721 days ago | IN | 0.14231164 ETH | 0.00487379 | ||||
| Zap ETH | 19607943 | 723 days ago | IN | 0.00731164 ETH | 0.00391048 | ||||
| Zap WETH | 19573096 | 728 days ago | IN | 0.00231164 ETH | 0.00657525 | ||||
| Zap ETH | 19565137 | 729 days ago | IN | 0.01231164 ETH | 0.00651976 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Deposit To App C... | 20470987 | 602 days ago | 0.00048582 ETH | ||||
| Submit | 20470987 | 602 days ago | 0.01951417 ETH | ||||
| Deposit To App C... | 20470799 | 602 days ago | 0.00048582 ETH | ||||
| Submit | 20470799 | 602 days ago | 0.02951417 ETH | ||||
| Deposit To App C... | 20452452 | 605 days ago | 0.00010243 ETH | ||||
| Submit | 20452452 | 605 days ago | 3.99989756 ETH | ||||
| Deposit To App C... | 20452320 | 605 days ago | 0.00010243 ETH | ||||
| Submit | 20452320 | 605 days ago | 2.59989756 ETH | ||||
| Deposit To App C... | 20395016 | 613 days ago | 0.00014778 ETH | ||||
| Submit | 20395016 | 613 days ago | 5.99985221 ETH | ||||
| Deposit To App C... | 20258459 | 632 days ago | 0.00013104 ETH | ||||
| Submit | 20258459 | 632 days ago | 2.49986895 ETH | ||||
| Deposit To App C... | 20242776 | 634 days ago | 0.00013104 ETH | ||||
| Submit | 20242776 | 634 days ago | 0.38986895 ETH | ||||
| Deposit To App C... | 20224751 | 637 days ago | 0.00013104 ETH | ||||
| Submit | 20224751 | 637 days ago | 0.04402436 ETH | ||||
| Deposit To App C... | 20180152 | 643 days ago | 0.0003346 ETH | ||||
| Submit | 20180152 | 643 days ago | 9.11105722 ETH | ||||
| Deposit To App C... | 20134630 | 649 days ago | 0.00072698 ETH | ||||
| Submit | 20134630 | 649 days ago | 0.25927301 ETH | ||||
| Deposit To App C... | 20051849 | 661 days ago | 0.00097919 ETH | ||||
| Submit | 20051849 | 661 days ago | 21.5990208 ETH | ||||
| Deposit To App C... | 20043352 | 662 days ago | 0.00097919 ETH | ||||
| Submit | 20043352 | 662 days ago | 1.2490208 ETH | ||||
| Deposit To App C... | 19966505 | 673 days ago | 0.00127566 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
LyraWstETHZapper
Compiler Version
v0.8.21+commit.d9974bed
Optimization Enabled:
Yes with 2000 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;
import {IERC20} from "../../lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol";
import {ISocketVault} from "../interfaces/ISocketVault.sol";
import {ILightAccountFactory} from "../interfaces/ILightAccountFactory.sol";
import {Ownable} from "../../lib/openzeppelin-contracts/contracts/access/Ownable.sol";
import {IWstETH} from "../interfaces/wstETH/IWstETH.sol";
import {IStETH} from "../interfaces/wstETH/IStETH.sol";
import {IWETH} from "../interfaces/IWETH.sol";
/**
* @title LyraWstETHZapper
* @dev Helper contract to wrap ETH/WETH/stETH into Lido wstETH, and then deposit to lyra chain via socket bridge.
*/
contract LyraWstETHZapper is Ownable {
IWETH public immutable weth;
IWstETH public immutable wstETH;
IStETH public immutable stETH;
///@dev Light Account factory address.
address public constant lightAccountFactory = 0x000000893A26168158fbeaDD9335Be5bC96592E2;
constructor(address _weth, address _wstETH) Ownable() {
weth = IWETH(_weth);
wstETH = IWstETH(_wstETH);
stETH = IStETH(wstETH.stETH());
}
function recover(address token, uint256 amount) external onlyOwner {
IERC20(token).transfer(msg.sender, amount);
_returnAllEth();
}
function estimateWstethReceived(
uint256 amountEth,
address socketVault,
uint256 gasLimit,
address connector,
bool takeOutFee
) external view returns (uint256) {
uint256 socketFee = 0;
if (takeOutFee) {
socketFee = ISocketVault(socketVault).getMinFees(connector, gasLimit);
}
uint256 depositAmount = amountEth - socketFee;
return wstETH.stETH().getSharesByPooledEth(depositAmount);
}
///////////////////////////
// ETH and WETH deposits //
///////////////////////////
/**
* @notice Wrap ETH into wstETH and deposit to Lyra Chain via socket vault
*/
function zapETH(address socketVault, bool isSCW, uint256 gasLimit, address connector) external payable {
_wrapETHAndDeposit(socketVault, isSCW, gasLimit, connector);
}
/**
* @notice Wrap ETH into wstETH and deposit to Lyra Chain via socket vault
*/
function zapWETH(uint256 amount, address socketVault, bool isSCW, uint256 gasLimit, address connector)
external
payable
{
// unrwap weth to eth
weth.transferFrom(msg.sender, address(this), amount);
weth.withdraw(weth.balanceOf(address(this)));
_wrapETHAndDeposit(socketVault, isSCW, gasLimit, connector);
}
function _wrapETHAndDeposit(address socketVault, bool isSCW, uint256 gasLimit, address connector) internal {
uint256 ethBalance = address(this).balance;
uint256 socketFee = ISocketVault(socketVault).getMinFees(connector, gasLimit);
uint256 depositAmount = ethBalance - socketFee;
stETH.submit{value: depositAmount}(address(this));
stETH.approve(address(wstETH), depositAmount);
wstETH.wrap(depositAmount);
_depositAllWstETH(socketVault, gasLimit, connector, socketFee, _getL2Receiver(isSCW));
}
///////////
// stETH //
///////////
/**
* @notice Wrap stETH into wstETH and deposit to Lyra Chain via socket vault.
* Must pay eth as well to cover the socket fee.
*/
function zapStETH(uint256 amount, address socketVault, bool isSCW, uint256 gasLimit, address connector)
external
payable
{
// unrwap weth to eth
stETH.transferFrom(msg.sender, address(this), amount);
stETH.approve(address(wstETH), amount);
// we dont get the wstETH amount as we always just deposit balance of this contract
wstETH.wrap(amount);
uint256 socketFee = ISocketVault(socketVault).getMinFees(connector, gasLimit);
// We assume the user transfers enough ETH to cover the fee. The depositToAppchain call will fail if not
_depositAllWstETH(socketVault, gasLimit, connector, socketFee, _getL2Receiver(isSCW));
}
/////////////
// Helpers //
/////////////
/**
* @notice Deposit wstETH held in this contract on behalf of the sender
*/
function _depositAllWstETH(
address socketVault,
uint256 gasLimit,
address connector,
uint256 socketFee,
address recipient
) internal {
uint256 amount = wstETH.balanceOf(address(this));
wstETH.approve(socketVault, type(uint256).max);
ISocketVault(socketVault).depositToAppChain{value: socketFee}(recipient, amount, gasLimit, connector);
_returnAllEth();
}
/**
* @notice Return the receiver address on L2
*/
function _getL2Receiver(bool isScwWallet) internal view returns (address) {
if (isScwWallet) {
return ILightAccountFactory(lightAccountFactory).getAddress(msg.sender, 0);
} else {
return msg.sender;
}
}
function _returnAllEth() internal {
payable(msg.sender).transfer(address(this).balance);
}
// Needs to be able to receive ETH from unwrapping WETH
receive() external payable {}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @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);
/**
* @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 `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address to, 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.
*
* IMPORTANT: 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 `from` to `to` 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 from, address to, uint256 amount) external returns (bool);
}// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.9;
interface ISocketVault {
function depositToAppChain(address receiver_, uint256 amount_, uint256 msgGasLimit_, address connector_)
external
payable;
function __token() external view returns (address);
function getMinFees(address connector, uint256 minGasLimit) external view returns (uint256);
}// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.9;
interface ILightAccountFactory {
/**
* @notice Create an account, and return its address.
* Returns the address even if the account is already deployed.
* @dev During UserOperation execution, this method is called only if the account is not deployed.
* This method returns an existing account address so that entryPoint.getSenderAddress() would work even after account creation.
* @param owner The owner of the account to be created
* @param salt A salt, which can be changed to create multiple accounts with the same owner
* @return ret The address of either the newly deployed account or an existing account with this owner and salt
*/
function createAccount(address owner, uint256 salt) external returns (address ret);
/**
* @notice Calculate the counterfactual address of this account as it would be returned by createAccount()
* @param owner The owner of the account to be created
* @param salt A salt, which can be changed to create multiple accounts with the same owner
* @return The address of the account that would be created with createAccount()
*/
function getAddress(address owner, uint256 salt) external view returns (address);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)
pragma solidity ^0.8.0;
import "../utils/Context.sol";
/**
* @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.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor() {
_transferOwnership(_msgSender());
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal view virtual {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby disabling any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(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 virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;
import {IERC20} from "../../../lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol";
import {IStETH} from "./IStETH.sol";
interface IWstETH is IERC20 {
function stETH() external view returns (IStETH);
function wrap(uint256 _stETHAmount) external returns (uint256 wstETHAmount);
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;
import {IERC20} from "../../../lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol";
interface IStETH is IERC20 {
function getPooledEthByShares(uint256 _sharesAmount) external view returns (uint256);
function getSharesByPooledEth(uint256 _pooledEthAmount) external view returns (uint256);
function submit(address _referral) external payable returns (uint256);
}pragma solidity >=0.5.0;
import {IERC20} from "../../lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol";
interface IWETH is IERC20 {
function deposit() external payable;
function withdraw(uint256) external;
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)
pragma solidity ^0.8.0;
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}{
"remappings": [
"account-abstraction/=lib/account-abstraction/contracts/",
"@openzeppelin/=lib/openzeppelin-contracts/",
"account-abstraction/=lib/account-abstraction/contracts/",
"ds-test/=lib/forge-std/lib/ds-test/src/",
"erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/",
"forge-std/=lib/forge-std/src/",
"openzeppelin-contracts/=lib/openzeppelin-contracts/",
"openzeppelin/=lib/openzeppelin-contracts/contracts/",
"relay-context-contracts/=lib/relay-context-contracts/contracts/"
],
"optimizer": {
"enabled": true,
"runs": 2000
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "ipfs",
"appendCBOR": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "paris",
"viaIR": false,
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_weth","type":"address"},{"internalType":"address","name":"_wstETH","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"amountEth","type":"uint256"},{"internalType":"address","name":"socketVault","type":"address"},{"internalType":"uint256","name":"gasLimit","type":"uint256"},{"internalType":"address","name":"connector","type":"address"},{"internalType":"bool","name":"takeOutFee","type":"bool"}],"name":"estimateWstethReceived","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lightAccountFactory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"recover","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stETH","outputs":[{"internalType":"contract IStETH","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"weth","outputs":[{"internalType":"contract IWETH","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"wstETH","outputs":[{"internalType":"contract IWstETH","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"socketVault","type":"address"},{"internalType":"bool","name":"isSCW","type":"bool"},{"internalType":"uint256","name":"gasLimit","type":"uint256"},{"internalType":"address","name":"connector","type":"address"}],"name":"zapETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"socketVault","type":"address"},{"internalType":"bool","name":"isSCW","type":"bool"},{"internalType":"uint256","name":"gasLimit","type":"uint256"},{"internalType":"address","name":"connector","type":"address"}],"name":"zapStETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"socketVault","type":"address"},{"internalType":"bool","name":"isSCW","type":"bool"},{"internalType":"uint256","name":"gasLimit","type":"uint256"},{"internalType":"address","name":"connector","type":"address"}],"name":"zapWETH","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60e06040523480156200001157600080fd5b506040516200148038038062001480833981016040819052620000349162000134565b6200003f33620000cb565b6001600160a01b03808316608052811660a08190526040805163183fc7c960e31b8152905163c1fe3e48916004808201926020929091908290030181865afa15801562000090573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000b6919062000173565b6001600160a01b031660c052506200019a9050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146200013157600080fd5b50565b600080604083850312156200014857600080fd5b825162000155816200011b565b602084015190925062000168816200011b565b809150509250929050565b6000602082840312156200018657600080fd5b815162000193816200011b565b9392505050565b60805160a05160c05161125c620002246000396000818161024f015281816106d50152818161079101528181610b440152610bfa01526000818161013a0152818161031e015281816107620152818161082e01528181610bcb01528181610c9701528181610e640152610f1f01526000818160e90152818161051801526105bc015261125c6000f3fe6080604052600436106100cb5760003560e01c80637e902d5711610074578063bfb355e01161004e578063bfb355e01461022a578063c1fe3e481461023d578063f2fde38b1461027157600080fd5b80637e902d57146101d45780638da5cb5b146101f9578063a209849c1461021757600080fd5b80635705ae43116100a55780635705ae431461018a578063599c17fc146101ac578063715018a6146101bf57600080fd5b80633fc8cef3146100d75780634aa07e64146101285780634eb8182e1461015c57600080fd5b366100d257005b600080fd5b3480156100e357600080fd5b5061010b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561013457600080fd5b5061010b7f000000000000000000000000000000000000000000000000000000000000000081565b34801561016857600080fd5b5061017c610177366004611046565b610291565b60405190815260200161011f565b34801561019657600080fd5b506101aa6101a53660046110a5565b610418565b005b6101aa6101ba3660046110d1565b6104b7565b3480156101cb57600080fd5b506101aa6104c9565b3480156101e057600080fd5b5061010b70893a26168158fbeadd9335be5bc96592e281565b34801561020557600080fd5b506000546001600160a01b031661010b565b6101aa610225366004611124565b6104dd565b6101aa610238366004611124565b61069a565b34801561024957600080fd5b5061010b7f000000000000000000000000000000000000000000000000000000000000000081565b34801561027d57600080fd5b506101aa61028c366004611175565b610938565b600080821561030e57604051638367080f60e01b81526001600160a01b03858116600483015260248201879052871690638367080f90604401602060405180830381865afa1580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b9190611199565b90505b600061031a82896111b2565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c1fe3e486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561037a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039e91906111ec565b6001600160a01b03166319208451826040518263ffffffff1660e01b81526004016103cb91815260200190565b602060405180830381865afa1580156103e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061040c9190611199565b98975050505050505050565b6104206109e7565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015610486573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104aa9190611209565b506104b3610a5b565b5050565b6104c384848484610a87565b50505050565b6104d16109e7565b6104db6000610d26565b565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd906064016020604051808303816000875af1158015610569573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058d9190611209565b506040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d9082906370a0823190602401602060405180830381865afa158015610613573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106379190611199565b6040518263ffffffff1660e01b815260040161065591815260200190565b600060405180830381600087803b15801561066f57600080fd5b505af1158015610683573d6000803e3d6000fd5b5050505061069384848484610a87565b5050505050565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd906064016020604051808303816000875af1158015610726573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074a9190611209565b5060405163095ea7b360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018790527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303816000875af11580156107da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fe9190611209565b506040517fea598cb0000000000000000000000000000000000000000000000000000000008152600481018690527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ea598cb0906024016020604051808303816000875af115801561087f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a39190611199565b50604051638367080f60e01b81526001600160a01b0382811660048301526024820184905260009190861690638367080f90604401602060405180830381865afa1580156108f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109199190611199565b90506109308584848461092b89610d8e565b610e33565b505050505050565b6109406109e7565b6001600160a01b0381166109db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6109e481610d26565b50565b6000546001600160a01b031633146104db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109d2565b60405133904780156108fc02916000818181858888f193505050501580156109e4573d6000803e3d6000fd5b604051638367080f60e01b81526001600160a01b038281166004830152602482018490524791600091871690638367080f90604401602060405180830381865afa158015610ad9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610afd9190611199565b90506000610b0b82846111b2565b6040517fa1903eab0000000000000000000000000000000000000000000000000000000081523060048201529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a1903eab90839060240160206040518083038185885af1158015610b8e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610bb39190611199565b5060405163095ea7b360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303816000875af1158015610c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c679190611209565b506040517fea598cb0000000000000000000000000000000000000000000000000000000008152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ea598cb0906024016020604051808303816000875af1158015610ce8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0c9190611199565b50610d1d8786868561092b8b610d8e565b50505050505050565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008115610e2c576040517f8cb84e180000000000000000000000000000000000000000000000000000000081523360048201526000602482015270893a26168158fbeadd9335be5bc96592e290638cb84e1890604401602060405180830381865afa158015610e02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2691906111ec565b92915050565b5033919050565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610eb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed79190611199565b60405163095ea7b360e01b81526001600160a01b0388811660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063095ea7b3906044016020604051808303816000875af1158015610f6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8e9190611209565b506040517f864f6a7a0000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301526024820183905260448201879052858116606483015287169063864f6a7a9085906084016000604051808303818588803b15801561100257600080fd5b505af1158015611016573d6000803e3d6000fd5b5050505050610930610a5b565b6001600160a01b03811681146109e457600080fd5b80151581146109e457600080fd5b600080600080600060a0868803121561105e57600080fd5b85359450602086013561107081611023565b935060408601359250606086013561108781611023565b9150608086013561109781611038565b809150509295509295909350565b600080604083850312156110b857600080fd5b82356110c381611023565b946020939093013593505050565b600080600080608085870312156110e757600080fd5b84356110f281611023565b9350602085013561110281611038565b925060408501359150606085013561111981611023565b939692955090935050565b600080600080600060a0868803121561113c57600080fd5b85359450602086013561114e81611023565b9350604086013561115e81611038565b925060608601359150608086013561109781611023565b60006020828403121561118757600080fd5b813561119281611023565b9392505050565b6000602082840312156111ab57600080fd5b5051919050565b81810381811115610e26577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000602082840312156111fe57600080fd5b815161119281611023565b60006020828403121561121b57600080fd5b81516111928161103856fea2646970667358221220cef04dbeabeba88d18ce9a622f3de47885348ca945a596b126a87d776d3c0bee64736f6c63430008150033000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000007f39c581f595b53c5cb19bd0b3f8da6c935e2ca0
Deployed Bytecode
0x6080604052600436106100cb5760003560e01c80637e902d5711610074578063bfb355e01161004e578063bfb355e01461022a578063c1fe3e481461023d578063f2fde38b1461027157600080fd5b80637e902d57146101d45780638da5cb5b146101f9578063a209849c1461021757600080fd5b80635705ae43116100a55780635705ae431461018a578063599c17fc146101ac578063715018a6146101bf57600080fd5b80633fc8cef3146100d75780634aa07e64146101285780634eb8182e1461015c57600080fd5b366100d257005b600080fd5b3480156100e357600080fd5b5061010b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561013457600080fd5b5061010b7f0000000000000000000000007f39c581f595b53c5cb19bd0b3f8da6c935e2ca081565b34801561016857600080fd5b5061017c610177366004611046565b610291565b60405190815260200161011f565b34801561019657600080fd5b506101aa6101a53660046110a5565b610418565b005b6101aa6101ba3660046110d1565b6104b7565b3480156101cb57600080fd5b506101aa6104c9565b3480156101e057600080fd5b5061010b70893a26168158fbeadd9335be5bc96592e281565b34801561020557600080fd5b506000546001600160a01b031661010b565b6101aa610225366004611124565b6104dd565b6101aa610238366004611124565b61069a565b34801561024957600080fd5b5061010b7f000000000000000000000000ae7ab96520de3a18e5e111b5eaab095312d7fe8481565b34801561027d57600080fd5b506101aa61028c366004611175565b610938565b600080821561030e57604051638367080f60e01b81526001600160a01b03858116600483015260248201879052871690638367080f90604401602060405180830381865afa1580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b9190611199565b90505b600061031a82896111b2565b90507f0000000000000000000000007f39c581f595b53c5cb19bd0b3f8da6c935e2ca06001600160a01b031663c1fe3e486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561037a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039e91906111ec565b6001600160a01b03166319208451826040518263ffffffff1660e01b81526004016103cb91815260200190565b602060405180830381865afa1580156103e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061040c9190611199565b98975050505050505050565b6104206109e7565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015610486573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104aa9190611209565b506104b3610a5b565b5050565b6104c384848484610a87565b50505050565b6104d16109e7565b6104db6000610d26565b565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690527f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b0316906323b872dd906064016020604051808303816000875af1158015610569573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058d9190611209565b506040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201527f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b031690632e1a7d4d9082906370a0823190602401602060405180830381865afa158015610613573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106379190611199565b6040518263ffffffff1660e01b815260040161065591815260200190565b600060405180830381600087803b15801561066f57600080fd5b505af1158015610683573d6000803e3d6000fd5b5050505061069384848484610a87565b5050505050565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690527f000000000000000000000000ae7ab96520de3a18e5e111b5eaab095312d7fe846001600160a01b0316906323b872dd906064016020604051808303816000875af1158015610726573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074a9190611209565b5060405163095ea7b360e01b81526001600160a01b037f0000000000000000000000007f39c581f595b53c5cb19bd0b3f8da6c935e2ca081166004830152602482018790527f000000000000000000000000ae7ab96520de3a18e5e111b5eaab095312d7fe84169063095ea7b3906044016020604051808303816000875af11580156107da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fe9190611209565b506040517fea598cb0000000000000000000000000000000000000000000000000000000008152600481018690527f0000000000000000000000007f39c581f595b53c5cb19bd0b3f8da6c935e2ca06001600160a01b03169063ea598cb0906024016020604051808303816000875af115801561087f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a39190611199565b50604051638367080f60e01b81526001600160a01b0382811660048301526024820184905260009190861690638367080f90604401602060405180830381865afa1580156108f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109199190611199565b90506109308584848461092b89610d8e565b610e33565b505050505050565b6109406109e7565b6001600160a01b0381166109db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6109e481610d26565b50565b6000546001600160a01b031633146104db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109d2565b60405133904780156108fc02916000818181858888f193505050501580156109e4573d6000803e3d6000fd5b604051638367080f60e01b81526001600160a01b038281166004830152602482018490524791600091871690638367080f90604401602060405180830381865afa158015610ad9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610afd9190611199565b90506000610b0b82846111b2565b6040517fa1903eab0000000000000000000000000000000000000000000000000000000081523060048201529091506001600160a01b037f000000000000000000000000ae7ab96520de3a18e5e111b5eaab095312d7fe84169063a1903eab90839060240160206040518083038185885af1158015610b8e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610bb39190611199565b5060405163095ea7b360e01b81526001600160a01b037f0000000000000000000000007f39c581f595b53c5cb19bd0b3f8da6c935e2ca081166004830152602482018390527f000000000000000000000000ae7ab96520de3a18e5e111b5eaab095312d7fe84169063095ea7b3906044016020604051808303816000875af1158015610c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c679190611209565b506040517fea598cb0000000000000000000000000000000000000000000000000000000008152600481018290527f0000000000000000000000007f39c581f595b53c5cb19bd0b3f8da6c935e2ca06001600160a01b03169063ea598cb0906024016020604051808303816000875af1158015610ce8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0c9190611199565b50610d1d8786868561092b8b610d8e565b50505050505050565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008115610e2c576040517f8cb84e180000000000000000000000000000000000000000000000000000000081523360048201526000602482015270893a26168158fbeadd9335be5bc96592e290638cb84e1890604401602060405180830381865afa158015610e02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2691906111ec565b92915050565b5033919050565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f0000000000000000000000007f39c581f595b53c5cb19bd0b3f8da6c935e2ca06001600160a01b0316906370a0823190602401602060405180830381865afa158015610eb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed79190611199565b60405163095ea7b360e01b81526001600160a01b0388811660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248301529192507f0000000000000000000000007f39c581f595b53c5cb19bd0b3f8da6c935e2ca09091169063095ea7b3906044016020604051808303816000875af1158015610f6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8e9190611209565b506040517f864f6a7a0000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301526024820183905260448201879052858116606483015287169063864f6a7a9085906084016000604051808303818588803b15801561100257600080fd5b505af1158015611016573d6000803e3d6000fd5b5050505050610930610a5b565b6001600160a01b03811681146109e457600080fd5b80151581146109e457600080fd5b600080600080600060a0868803121561105e57600080fd5b85359450602086013561107081611023565b935060408601359250606086013561108781611023565b9150608086013561109781611038565b809150509295509295909350565b600080604083850312156110b857600080fd5b82356110c381611023565b946020939093013593505050565b600080600080608085870312156110e757600080fd5b84356110f281611023565b9350602085013561110281611038565b925060408501359150606085013561111981611023565b939692955090935050565b600080600080600060a0868803121561113c57600080fd5b85359450602086013561114e81611023565b9350604086013561115e81611038565b925060608601359150608086013561109781611023565b60006020828403121561118757600080fd5b813561119281611023565b9392505050565b6000602082840312156111ab57600080fd5b5051919050565b81810381811115610e26577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000602082840312156111fe57600080fd5b815161119281611023565b60006020828403121561121b57600080fd5b81516111928161103856fea2646970667358221220cef04dbeabeba88d18ce9a622f3de47885348ca945a596b126a87d776d3c0bee64736f6c63430008150033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000007f39c581f595b53c5cb19bd0b3f8da6c935e2ca0
-----Decoded View---------------
Arg [0] : _weth (address): 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
Arg [1] : _wstETH (address): 0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Arg [1] : 0000000000000000000000007f39c581f595b53c5cb19bd0b3f8da6c935e2ca0
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 ]
[ 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.