Source Code
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 22810729 | 135 days ago | 0.00000346 ETH | ||||
| Transfer | 22810729 | 135 days ago | 0.00000346 ETH | ||||
| Transfer | 21129314 | 370 days ago | 0.47999999 ETH | ||||
| Transfer | 21129314 | 370 days ago | 0.47999999 ETH | ||||
| Transfer | 21129314 | 370 days ago | 0.47999999 ETH | ||||
| Transfer | 21129314 | 370 days ago | 0.47999999 ETH | ||||
| Transfer | 21129313 | 370 days ago | 5 ETH | ||||
| Transfer | 21129313 | 370 days ago | 5 ETH | ||||
| Transfer | 21129210 | 370 days ago | 1.4 ETH | ||||
| Transfer | 21129210 | 370 days ago | 1.4 ETH | ||||
| Transfer | 21129210 | 370 days ago | 3 ETH | ||||
| Transfer | 21129210 | 370 days ago | 3 ETH | ||||
| Transfer | 20852381 | 408 days ago | 8.22479921 ETH | ||||
| Transfer | 20852381 | 408 days ago | 8.22479921 ETH | ||||
| Transfer | 20838951 | 410 days ago | 0.83402735 ETH | ||||
| Transfer | 20838951 | 410 days ago | 0.83402735 ETH | ||||
| Transfer | 20181366 | 502 days ago | 111.0146097 ETH | ||||
| Transfer | 20181366 | 502 days ago | 111.0146097 ETH | ||||
| Transfer | 20173647 | 503 days ago | 0.77613749 ETH | ||||
| Transfer | 20173647 | 503 days ago | 0.77613749 ETH | ||||
| Transfer | 20119953 | 511 days ago | 100.0097056 ETH | ||||
| Transfer | 20119953 | 511 days ago | 100.0097056 ETH | ||||
| Transfer | 20101138 | 513 days ago | 50.0121751 ETH | ||||
| Transfer | 20101138 | 513 days ago | 50.0121751 ETH | ||||
| Transfer | 20084344 | 516 days ago | 10.1269157 ETH |
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
WethUnwrapper
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
Yes with 1000000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;
pragma abicoder v1;
import "@1inch/solidity-utils/contracts/OnlyWethReceiver.sol";
import "@1inch/solidity-utils/contracts/interfaces/IWETH.sol";
import "../interfaces/IPostInteractionNotificationReceiver.sol";
import "../libraries/Errors.sol";
contract WethUnwrapper is OnlyWethReceiver, IPostInteractionNotificationReceiver {
IWETH private immutable _WETH; // solhint-disable-line var-name-mixedcase
uint256 private constant _RAW_CALL_GAS_LIMIT = 5000;
constructor(IWETH weth) OnlyWethReceiver(address(weth)) {
_WETH = weth;
}
function fillOrderPostInteraction(
bytes32 /* orderHash */,
address maker,
address /* taker */,
uint256 /* makingAmount */,
uint256 takingAmount,
uint256 /* remainingMakerAmount */,
bytes calldata /* interactiveData */
) external override {
_WETH.withdraw(takingAmount);
// solhint-disable-next-line avoid-low-level-calls
(bool success, ) = maker.call{value: takingAmount, gas: _RAW_CALL_GAS_LIMIT}("");
if (!success) revert Errors.ETHTransferFailed();
}
}// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;
pragma abicoder v1;
/**
* @title Interface for interactor which acts after `taker -> maker` transfers.
* @notice The order filling steps are `preInteraction` =>` Transfer "maker -> taker"` => `Interaction` => `Transfer "taker -> maker"` => **`postInteraction`**
*/
interface IPostInteractionNotificationReceiver {
/**
* @notice Callback method that gets called after all funds transfers
* @param orderHash Hash of the order being processed
* @param maker Maker address
* @param taker Taker address
* @param makingAmount Actual making amount
* @param takingAmount Actual taking amount
* @param remainingAmount Limit order remaining maker amount after the swap
* @param interactionData Interaction calldata
*/
function fillOrderPostInteraction(
bytes32 orderHash,
address maker,
address taker,
uint256 makingAmount,
uint256 takingAmount,
uint256 remainingAmount,
bytes memory interactionData
) external;
}// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;
library Errors {
error InvalidMsgValue();
error ETHTransferFailed();
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
pragma abicoder v1;
import "./EthReceiver.sol";
abstract contract OnlyWethReceiver is EthReceiver {
address private immutable _WETH; // solhint-disable-line var-name-mixedcase
constructor(address weth) {
_WETH = address(weth);
}
function _receive() internal virtual override {
if (msg.sender != _WETH) revert EthDepositRejected();
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
pragma abicoder v1;
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
interface IWETH is IERC20 {
function deposit() external payable;
function withdraw(uint256 amount) external;
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
pragma abicoder v1;
abstract contract EthReceiver {
error EthDepositRejected();
receive() external payable {
_receive();
}
function _receive() internal virtual {
// solhint-disable-next-line avoid-tx-origin
if (msg.sender == tx.origin) revert EthDepositRejected();
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.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);
}{
"optimizer": {
"enabled": true,
"runs": 1000000
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"metadata": {
"useLiteralContent": true
},
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"contract IWETH","name":"weth","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ETHTransferFailed","type":"error"},{"inputs":[],"name":"EthDepositRejected","type":"error"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"maker","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"takingAmount","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"fillOrderPostInteraction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60c060405234801561001057600080fd5b506040516103333803806103338339818101604052602081101561003357600080fd5b50516001600160a01b0316608081905260a0819052806102cb61006860003960006101640152600061010901526102cb6000f3fe6080604052600436106100225760003560e01c80633504ed621461003657600080fd5b366100315761002f6100f1565b005b600080fd5b34801561004257600080fd5b5061002f600480360360e081101561005957600080fd5b81359173ffffffffffffffffffffffffffffffffffffffff602082013581169260408301359091169160608101359160808201359160a08101359181019060e0810160c08201356401000000008111156100b257600080fd5b8201836020820111156100c457600080fd5b803590602001918460018302840111640100000000831117156100e657600080fd5b509092509050610162565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610160576040517f1b10b0f900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156101d557600080fd5b505af11580156101e9573d6000803e3d6000fd5b50506040516000925073ffffffffffffffffffffffffffffffffffffffff8a16915061138890879084818181858888f193505050503d806000811461024a576040519150601f19603f3d011682016040523d82523d6000602084013e61024f565b606091505b505090508061028a576040517fb12d13eb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050505056fea26469706673582212205c801ee6af53a99f51dc4d8f4ce538ae9e7a40f77957dfe6e1163737e5a949c864736f6c63430008110033000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Deployed Bytecode
0x6080604052600436106100225760003560e01c80633504ed621461003657600080fd5b366100315761002f6100f1565b005b600080fd5b34801561004257600080fd5b5061002f600480360360e081101561005957600080fd5b81359173ffffffffffffffffffffffffffffffffffffffff602082013581169260408301359091169160608101359160808201359160a08101359181019060e0810160c08201356401000000008111156100b257600080fd5b8201836020820111156100c457600080fd5b803590602001918460018302840111640100000000831117156100e657600080fd5b509092509050610162565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21614610160576040517f1b10b0f900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156101d557600080fd5b505af11580156101e9573d6000803e3d6000fd5b50506040516000925073ffffffffffffffffffffffffffffffffffffffff8a16915061138890879084818181858888f193505050503d806000811461024a576040519150601f19603f3d011682016040523d82523d6000602084013e61024f565b606091505b505090508061028a576040517fb12d13eb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050505056fea26469706673582212205c801ee6af53a99f51dc4d8f4ce538ae9e7a40f77957dfe6e1163737e5a949c864736f6c63430008110033
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
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.