// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
import {ReentrancyGuard} from "@openzeppelin/contracts/utils/ReentrancyGuard.sol";
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol";
import {IERC1155} from "@openzeppelin/contracts/token/ERC1155/IERC1155.sol";
import {ERC721Holder} from "@openzeppelin/contracts/token/ERC721/utils/ERC721Holder.sol";
import {ERC1155Holder} from "@openzeppelin/contracts/token/ERC1155/utils/ERC1155Holder.sol";
interface IWETH {
function withdraw(uint256 amount) external;
function balanceOf(address account) external view returns (uint256);
}
interface IVaultDeposit {
function deposit() external payable;
}
contract RoyaltyForwarder is Ownable, ReentrancyGuard, ERC721Holder, ERC1155Holder {
using SafeERC20 for IERC20;
IWETH public weth;
IVaultDeposit public vault;
error NothingToFlush();
error TransferFailed();
error ZeroAddress();
error CallFailed();
error RenounceDisabled();
event Flushed(uint256 ethToVault, uint256 wethUnwrapped);
event SweptETH(address indexed to, uint256 amount);
event SweptERC20(address indexed token, address indexed to, uint256 amount);
event SweptERC721(address indexed token, address indexed to, uint256 tokenId);
event SweptERC1155(address indexed token, address indexed to, uint256 id, uint256 amount);
event WETHUpdated(address indexed weth);
event VaultUpdated(address indexed vault);
event Executed(address indexed target, uint256 value, bytes data);
constructor(address _weth, address _vault, address _owner) Ownable(_owner) {
if (_weth == address(0) || _vault == address(0)) revert ZeroAddress();
weth = IWETH(_weth);
vault = IVaultDeposit(_vault);
}
receive() external payable {}
fallback() external payable {}
function flush() external nonReentrant {
uint256 wethBal = weth.balanceOf(address(this));
if (wethBal > 0) weth.withdraw(wethBal);
uint256 bal = address(this).balance;
if (bal == 0) revert NothingToFlush();
vault.deposit{value: bal}();
emit Flushed(bal, wethBal);
}
function setWETH(address _weth) external onlyOwner {
if (_weth == address(0)) revert ZeroAddress();
weth = IWETH(_weth);
emit WETHUpdated(_weth);
}
function setVault(address _vault) external onlyOwner {
if (_vault == address(0)) revert ZeroAddress();
vault = IVaultDeposit(_vault);
emit VaultUpdated(_vault);
}
function sweepETH(address payable to, uint256 amount) external onlyOwner nonReentrant {
if (to == address(0)) revert ZeroAddress();
uint256 value = amount == 0 ? address(this).balance : amount;
(bool ok, ) = to.call{value: value}("");
if (!ok) revert TransferFailed();
emit SweptETH(to, value);
}
function unwrapWETHTo(address payable to) external onlyOwner nonReentrant {
if (to == address(0)) revert ZeroAddress();
uint256 wethBal = weth.balanceOf(address(this));
if (wethBal > 0) weth.withdraw(wethBal);
uint256 value = address(this).balance;
(bool ok, ) = to.call{value: value}("");
if (!ok) revert TransferFailed();
emit SweptETH(to, value);
}
function sweepERC20(address token, address to, uint256 amount) external onlyOwner nonReentrant {
uint256 value = amount == 0 ? IERC20(token).balanceOf(address(this)) : amount;
IERC20(token).safeTransfer(to, value);
emit SweptERC20(token, to, value);
}
function sweepERC721(address token, address to, uint256 tokenId) external onlyOwner nonReentrant {
IERC721(token).safeTransferFrom(address(this), to, tokenId);
emit SweptERC721(token, to, tokenId);
}
function sweepERC1155(address token, address to, uint256 id, uint256 amount) external onlyOwner nonReentrant {
uint256 value = amount == 0 ? IERC1155(token).balanceOf(address(this), id) : amount;
IERC1155(token).safeTransferFrom(address(this), to, id, value, "");
emit SweptERC1155(token, to, id, value);
}
function execute(address target, uint256 value, bytes calldata data)
external
onlyOwner
nonReentrant
returns (bytes memory result)
{
if (target == address(0)) revert ZeroAddress();
bool ok;
(ok, result) = target.call{value: value}(data);
if (!ok) {
if (result.length > 0) {
assembly {
revert(add(result, 0x20), mload(result))
}
}
revert CallFailed();
}
emit Executed(target, value, data);
}
function renounceOwnership() public pure override {
revert RenounceDisabled();
}
}[
{
"type": "constructor",
"inputs": [
{
"name": "_weth",
"type": "address",
"internalType": "address"
},
{
"name": "_vault",
"type": "address",
"internalType": "address"
},
{
"name": "_owner",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "nonpayable"
},
{
"name": "CallFailed",
"type": "error",
"inputs": []
},
{
"name": "NothingToFlush",
"type": "error",
"inputs": []
},
{
"name": "OwnableInvalidOwner",
"type": "error",
"inputs": [
{
"name": "owner",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "OwnableUnauthorizedAccount",
"type": "error",
"inputs": [
{
"name": "account",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "ReentrancyGuardReentrantCall",
"type": "error",
"inputs": []
},
{
"name": "RenounceDisabled",
"type": "error",
"inputs": []
},
{
"name": "SafeERC20FailedOperation",
"type": "error",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "TransferFailed",
"type": "error",
"inputs": []
},
{
"name": "ZeroAddress",
"type": "error",
"inputs": []
},
{
"name": "Executed",
"type": "event",
"inputs": [
{
"name": "target",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "value",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "data",
"type": "bytes",
"indexed": false,
"internalType": "bytes"
}
],
"anonymous": false
},
{
"name": "Flushed",
"type": "event",
"inputs": [
{
"name": "ethToVault",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "wethUnwrapped",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "OwnershipTransferred",
"type": "event",
"inputs": [
{
"name": "previousOwner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "newOwner",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "SweptERC1155",
"type": "event",
"inputs": [
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "to",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "id",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "amount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "SweptERC20",
"type": "event",
"inputs": [
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "to",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "SweptERC721",
"type": "event",
"inputs": [
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "to",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "tokenId",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "SweptETH",
"type": "event",
"inputs": [
{
"name": "to",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "VaultUpdated",
"type": "event",
"inputs": [
{
"name": "vault",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "WETHUpdated",
"type": "event",
"inputs": [
{
"name": "weth",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"type": "fallback",
"stateMutability": "payable"
},
{
"name": "execute",
"type": "function",
"inputs": [
{
"name": "target",
"type": "address",
"internalType": "address"
},
{
"name": "value",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "data",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [
{
"name": "result",
"type": "bytes",
"internalType": "bytes"
}
],
"stateMutability": "nonpayable"
},
{
"name": "flush",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "onERC1155BatchReceived",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
},
{
"name": "",
"type": "address",
"internalType": "address"
},
{
"name": "",
"type": "uint256[]",
"internalType": "uint256[]"
},
{
"name": "",
"type": "uint256[]",
"internalType": "uint256[]"
},
{
"name": "",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [
{
"name": "",
"type": "bytes4",
"internalType": "bytes4"
}
],
"stateMutability": "nonpayable"
},
{
"name": "onERC1155Received",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
},
{
"name": "",
"type": "address",
"internalType": "address"
},
{
"name": "",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [
{
"name": "",
"type": "bytes4",
"internalType": "bytes4"
}
],
"stateMutability": "nonpayable"
},
{
"name": "onERC721Received",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
},
{
"name": "",
"type": "address",
"internalType": "address"
},
{
"name": "",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [
{
"name": "",
"type": "bytes4",
"internalType": "bytes4"
}
],
"stateMutability": "nonpayable"
},
{
"name": "owner",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "renounceOwnership",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "pure"
},
{
"name": "setVault",
"type": "function",
"inputs": [
{
"name": "_vault",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setWETH",
"type": "function",
"inputs": [
{
"name": "_weth",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "supportsInterface",
"type": "function",
"inputs": [
{
"name": "interfaceId",
"type": "bytes4",
"internalType": "bytes4"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "sweepERC1155",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
},
{
"name": "to",
"type": "address",
"internalType": "address"
},
{
"name": "id",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "amount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "sweepERC20",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
},
{
"name": "to",
"type": "address",
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "sweepERC721",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
},
{
"name": "to",
"type": "address",
"internalType": "address"
},
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "sweepETH",
"type": "function",
"inputs": [
{
"name": "to",
"type": "address",
"internalType": "address payable"
},
{
"name": "amount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "transferOwnership",
"type": "function",
"inputs": [
{
"name": "newOwner",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "unwrapWETHTo",
"type": "function",
"inputs": [
{
"name": "to",
"type": "address",
"internalType": "address payable"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "vault",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract IVaultDeposit"
}
],
"stateMutability": "view"
},
{
"name": "weth",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract IWETH"
}
],
"stateMutability": "view"
},
{
"type": "receive",
"stateMutability": "payable"
}
]0x60803461011a57601f6110bf38819003918201601f19168301916001600160401b0383118484101761011e5780849260609460405283398101031261011a57604061004982610132565b9161005660208201610132565b6001600160a01b03929091839161006d9101610132565b1692831561010257825f549160018060a01b03199580878516175f558260405194167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3600180551690811580156100f8575b6100e9575083600254161760025516906003541617600355604051610f7890816101478239f35b63d92e233d60e01b8152600490fd5b50838316156100c2565b604051631e4fbdf760e01b81525f6004820152602490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b038216820361011a5756fe60806040526004361015610018575b361561001657005b005b5f3560e01c806301ffc9a714610137578063150b7a02146101325780632c9471561461012d57806330489a78146101285780633fc8cef314610123578063503690d11461011e5780635b116ab8146101195780635b769f3c146101145780636817031b1461010f5780636b9f96ea1461010a578063715018a6146101055780638d337099146101005780638da5cb5b146100fb578063b61d27f6146100f6578063bc197c81146100f1578063f23a6e61146100ec578063f2fde38b146100e75763fbfa77cf0361000e57610d2b565b610c9d565b610c43565b610bb6565b610ad7565b610a69565b6109b5565b610993565b610823565b6107b7565b61074b565b6106ed565b610602565b6105ae565b610439565b6102ad565b610253565b3461018d57602036600319011261018d5760043563ffffffff60e01b811680910361018d57602090630271189760e51b811490811561017c575b506040519015158152f35b6301ffc9a760e01b1490505f610171565b5f80fd5b6001600160a01b0381160361018d57565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff81116101ca57604052565b6101a2565b90601f8019910116810190811067ffffffffffffffff8211176101ca57604052565b67ffffffffffffffff81116101ca57601f01601f191660200190565b81601f8201121561018d57803590610224826101f1565b9261023260405194856101cf565b8284526020838301011161018d57815f926020809301838601378301015290565b3461018d57608036600319011261018d5761026f600435610191565b61027a602435610191565b60643567ffffffffffffffff811161018d5761029a90369060040161020d565b50604051630a85bd0160e11b8152602090f35b3461018d57608036600319011261018d576004356102ca81610191565b6024356102d681610191565b604435916064356102e5610e63565b6102ed610e8e565b806104335750604051627eeac760e11b8152306004820152602481018490526020816044816001600160a01b0386165afa9081156103ff575f91610404575b50905b6001600160a01b0390811692833b1561018d57604051637921219560e11b81523060048201526001600160a01b0382166024820152604481018690526064810184905260a060848201525f60a482018190529093908460c48183895af19081156103ff577f59fa082d45ce1e99f46d74a8fc9905b65873fb88b9b486d04a1c1cc8a5c0d0b9946103da926103e6575b5060405193849316968360209093929193604081019481520152565b0390a361001660018055565b806103f36103f9926101b6565b806105a4565b5f6103be565b610d62565b610426915060203d60201161042c575b61041e81836101cf565b810190610d53565b5f61032c565b503d610414565b9061032f565b3461018d57602036600319011261018d5760043561045681610191565b61045e610e63565b610466610e8e565b6001600160a01b0316801561059257600254610492906001600160a01b03165b6001600160a01b031690565b6040516370a0823160e01b815230600482015290602082602481845afa9182156103ff575f92610571575b5081610524575b5050475f80808084865af16104d7610d6d565b5015610512576040519081527f4abde9448551dd0f804bf92de5a15dd629946b90dda555c79914e5d12537755b90602090a261001660018055565b6040516312171d8360e31b8152600490fd5b803b1561018d57604051632e1a7d4d60e01b815260048101929092525f908290602490829084905af180156103ff5761055e575b806104c4565b806103f361056b926101b6565b5f610558565b61058b91925060203d60201161042c5761041e81836101cf565b905f6104bd565b60405163d92e233d60e01b8152600490fd5b5f91031261018d57565b3461018d575f36600319011261018d576002546040516001600160a01b039091168152602090f35b606090600319011261018d576004356105ee81610191565b906024356105fb81610191565b9060443590565b3461018d57610610366105d6565b610618610e63565b610620610e8e565b806106c557506040516370a0823160e01b81523060048201526020816024816001600160a01b0387165afa80156103ff577ff50329e84914819cd1df30a3b32ea86d7b37a7f0dd963d60aec1c7207f9f6932915f916106a6575b50925b6001600160a01b0390811692610694858286610eb1565b604051948552169280602081016103da565b6106bf915060203d60201161042c5761041e81836101cf565b5f61067a565b7ff50329e84914819cd1df30a3b32ea86d7b37a7f0dd963d60aec1c7207f9f6932909261067d565b3461018d57604036600319011261018d5760043561070a81610191565b60243590610716610e63565b61071e610e8e565b6001600160a01b031690811561059257806107465750475b5f80808084865af16104d7610d6d565b610736565b3461018d57602036600319011261018d5760043561076881610191565b610770610e63565b6001600160a01b0316801561059257600280546001600160a01b031916821790557f5f85e7e522385144040f94bcb1eeaeb07da5e11d6384c124c09f53986d0ed8bc5f80a2005b3461018d57602036600319011261018d576004356107d481610191565b6107dc610e63565b6001600160a01b0316801561059257600380546001600160a01b031916821790557f161584aed96e7f34998117c9ad67e2d21ff46d2a42775c22b11ed282f3c7b2cd5f80a2005b3461018d575f36600319011261018d5761083b610e8e565b600254610850906001600160a01b0316610486565b6040516370a0823160e01b815230600482015290602082602481845afa9182156103ff575f92610972575b508161092b575b5047908115610919576003546108a0906001600160a01b0316610486565b803b1561018d575f8391600460405180968193630d0e30db60e41b83525af19283156103ff577ea11fc50824122dc69343eb793fb46a147d74ba67b5c4b966af3129978ce9f793610906575b50604080519182526020820192909252a161001660018055565b806103f3610913926101b6565b5f6108ec565b604051633ada528f60e21b8152600490fd5b803b1561018d57604051632e1a7d4d60e01b815260048101839052905f908290602490829084905af180156103ff571561088257806103f361096c926101b6565b5f610882565b61098c91925060203d60201161042c5761041e81836101cf565b905f61087b565b3461018d575f36600319011261018d57604051638905116560e01b8152600490fd5b3461018d576109c3366105d6565b91906109cd610e63565b6109d5610e8e565b6001600160a01b0391821691823b1561018d5760405191632142170760e11b835230600484015216928360248301528060448301525f8260648183875af19081156103ff577f33c8b74117570876e542afe9c636554dfafd2da6e8ba45e7fafc463d59a02c1a926103da92610a56575b506040519081529081906020820190565b806103f3610a63926101b6565b5f610a45565b3461018d575f36600319011261018d575f546040516001600160a01b039091168152602090f35b602080825282518183018190529093925f5b828110610ac357505060409293505f838284010152601f8019910116010190565b818101860151848201604001528501610aa2565b3461018d57606036600319011261018d57600435610af481610191565b60443567ffffffffffffffff80821161018d573660238301121561018d57816004013590811161018d57366024828401011161018d57610b4b926024610b3f93019060243590610d9c565b60405191829182610a90565b0390f35b81601f8201121561018d5780359160209167ffffffffffffffff84116101ca578360051b9060405194610b84858401876101cf565b8552838086019282010192831161018d578301905b828210610ba7575050505090565b81358152908301908301610b99565b3461018d5760a036600319011261018d57610bd2600435610191565b610bdd602435610191565b67ffffffffffffffff60443581811161018d57610bfe903690600401610b4f565b5060643581811161018d57610c17903690600401610b4f565b5060843590811161018d57610c3090369060040161020d565b5060405163bc197c8160e01b8152602090f35b3461018d5760a036600319011261018d57610c5f600435610191565b610c6a602435610191565b60843567ffffffffffffffff811161018d57610c8a90369060040161020d565b5060405163f23a6e6160e01b8152602090f35b3461018d57602036600319011261018d57600435610cba81610191565b610cc2610e63565b6001600160a01b03908116908115610d13575f54826bffffffffffffffffffffffff60a01b8216175f55167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b604051631e4fbdf760e01b81525f6004820152602490fd5b3461018d575f36600319011261018d576003546040516001600160a01b039091168152602090f35b9081602091031261018d575190565b6040513d5f823e3d90fd5b3d15610d97573d90610d7e826101f1565b91610d8c60405193846101cf565b82523d5f602084013e565b606090565b9190610da6610e63565b610dae610e8e565b6001600160a01b038316928315610592575f809160405187868237848189810185815203925af193610dde610d6d565b9415610e44577fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f929181606092604051948593845260406020850152816040850152848401375f828201840152601f01601f19168101030190a2610e4160018055565b90565b84518581610e5e57604051633204506f60e01b8152600490fd5b602001fd5b5f546001600160a01b03163303610e7657565b60405163118cdaa760e01b8152336004820152602490fd5b600260015414610e9f576002600155565b604051633ee5aeb560e01b8152600490fd5b60405163a9059cbb60e01b60208083019182526001600160a01b0394909416602483015260448083019590955293815290925f91610ef06064826101cf565b519082855af115610d62575f513d610f3957506001600160a01b0381163b155b610f175750565b604051635274afe760e01b81526001600160a01b039091166004820152602490fd5b60011415610f1056fea2646970667358221220a64bf71d255fa8994c9810386b01a9d86fe8295b62ddb8588f58bb486865bb4164736f6c634300081800330000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad73000000000000000000000000d0c9652be8db050c620fcefb799c0152fff2218900000000000000000000000000439ffb31a8d32a7bb8bff25a4347f87904dcae
0x60806040526004361015610018575b361561001657005b005b5f3560e01c806301ffc9a714610137578063150b7a02146101325780632c9471561461012d57806330489a78146101285780633fc8cef314610123578063503690d11461011e5780635b116ab8146101195780635b769f3c146101145780636817031b1461010f5780636b9f96ea1461010a578063715018a6146101055780638d337099146101005780638da5cb5b146100fb578063b61d27f6146100f6578063bc197c81146100f1578063f23a6e61146100ec578063f2fde38b146100e75763fbfa77cf0361000e57610d2b565b610c9d565b610c43565b610bb6565b610ad7565b610a69565b6109b5565b610993565b610823565b6107b7565b61074b565b6106ed565b610602565b6105ae565b610439565b6102ad565b610253565b3461018d57602036600319011261018d5760043563ffffffff60e01b811680910361018d57602090630271189760e51b811490811561017c575b506040519015158152f35b6301ffc9a760e01b1490505f610171565b5f80fd5b6001600160a01b0381160361018d57565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff81116101ca57604052565b6101a2565b90601f8019910116810190811067ffffffffffffffff8211176101ca57604052565b67ffffffffffffffff81116101ca57601f01601f191660200190565b81601f8201121561018d57803590610224826101f1565b9261023260405194856101cf565b8284526020838301011161018d57815f926020809301838601378301015290565b3461018d57608036600319011261018d5761026f600435610191565b61027a602435610191565b60643567ffffffffffffffff811161018d5761029a90369060040161020d565b50604051630a85bd0160e11b8152602090f35b3461018d57608036600319011261018d576004356102ca81610191565b6024356102d681610191565b604435916064356102e5610e63565b6102ed610e8e565b806104335750604051627eeac760e11b8152306004820152602481018490526020816044816001600160a01b0386165afa9081156103ff575f91610404575b50905b6001600160a01b0390811692833b1561018d57604051637921219560e11b81523060048201526001600160a01b0382166024820152604481018690526064810184905260a060848201525f60a482018190529093908460c48183895af19081156103ff577f59fa082d45ce1e99f46d74a8fc9905b65873fb88b9b486d04a1c1cc8a5c0d0b9946103da926103e6575b5060405193849316968360209093929193604081019481520152565b0390a361001660018055565b806103f36103f9926101b6565b806105a4565b5f6103be565b610d62565b610426915060203d60201161042c575b61041e81836101cf565b810190610d53565b5f61032c565b503d610414565b9061032f565b3461018d57602036600319011261018d5760043561045681610191565b61045e610e63565b610466610e8e565b6001600160a01b0316801561059257600254610492906001600160a01b03165b6001600160a01b031690565b6040516370a0823160e01b815230600482015290602082602481845afa9182156103ff575f92610571575b5081610524575b5050475f80808084865af16104d7610d6d565b5015610512576040519081527f4abde9448551dd0f804bf92de5a15dd629946b90dda555c79914e5d12537755b90602090a261001660018055565b6040516312171d8360e31b8152600490fd5b803b1561018d57604051632e1a7d4d60e01b815260048101929092525f908290602490829084905af180156103ff5761055e575b806104c4565b806103f361056b926101b6565b5f610558565b61058b91925060203d60201161042c5761041e81836101cf565b905f6104bd565b60405163d92e233d60e01b8152600490fd5b5f91031261018d57565b3461018d575f36600319011261018d576002546040516001600160a01b039091168152602090f35b606090600319011261018d576004356105ee81610191565b906024356105fb81610191565b9060443590565b3461018d57610610366105d6565b610618610e63565b610620610e8e565b806106c557506040516370a0823160e01b81523060048201526020816024816001600160a01b0387165afa80156103ff577ff50329e84914819cd1df30a3b32ea86d7b37a7f0dd963d60aec1c7207f9f6932915f916106a6575b50925b6001600160a01b0390811692610694858286610eb1565b604051948552169280602081016103da565b6106bf915060203d60201161042c5761041e81836101cf565b5f61067a565b7ff50329e84914819cd1df30a3b32ea86d7b37a7f0dd963d60aec1c7207f9f6932909261067d565b3461018d57604036600319011261018d5760043561070a81610191565b60243590610716610e63565b61071e610e8e565b6001600160a01b031690811561059257806107465750475b5f80808084865af16104d7610d6d565b610736565b3461018d57602036600319011261018d5760043561076881610191565b610770610e63565b6001600160a01b0316801561059257600280546001600160a01b031916821790557f5f85e7e522385144040f94bcb1eeaeb07da5e11d6384c124c09f53986d0ed8bc5f80a2005b3461018d57602036600319011261018d576004356107d481610191565b6107dc610e63565b6001600160a01b0316801561059257600380546001600160a01b031916821790557f161584aed96e7f34998117c9ad67e2d21ff46d2a42775c22b11ed282f3c7b2cd5f80a2005b3461018d575f36600319011261018d5761083b610e8e565b600254610850906001600160a01b0316610486565b6040516370a0823160e01b815230600482015290602082602481845afa9182156103ff575f92610972575b508161092b575b5047908115610919576003546108a0906001600160a01b0316610486565b803b1561018d575f8391600460405180968193630d0e30db60e41b83525af19283156103ff577ea11fc50824122dc69343eb793fb46a147d74ba67b5c4b966af3129978ce9f793610906575b50604080519182526020820192909252a161001660018055565b806103f3610913926101b6565b5f6108ec565b604051633ada528f60e21b8152600490fd5b803b1561018d57604051632e1a7d4d60e01b815260048101839052905f908290602490829084905af180156103ff571561088257806103f361096c926101b6565b5f610882565b61098c91925060203d60201161042c5761041e81836101cf565b905f61087b565b3461018d575f36600319011261018d57604051638905116560e01b8152600490fd5b3461018d576109c3366105d6565b91906109cd610e63565b6109d5610e8e565b6001600160a01b0391821691823b1561018d5760405191632142170760e11b835230600484015216928360248301528060448301525f8260648183875af19081156103ff577f33c8b74117570876e542afe9c636554dfafd2da6e8ba45e7fafc463d59a02c1a926103da92610a56575b506040519081529081906020820190565b806103f3610a63926101b6565b5f610a45565b3461018d575f36600319011261018d575f546040516001600160a01b039091168152602090f35b602080825282518183018190529093925f5b828110610ac357505060409293505f838284010152601f8019910116010190565b818101860151848201604001528501610aa2565b3461018d57606036600319011261018d57600435610af481610191565b60443567ffffffffffffffff80821161018d573660238301121561018d57816004013590811161018d57366024828401011161018d57610b4b926024610b3f93019060243590610d9c565b60405191829182610a90565b0390f35b81601f8201121561018d5780359160209167ffffffffffffffff84116101ca578360051b9060405194610b84858401876101cf565b8552838086019282010192831161018d578301905b828210610ba7575050505090565b81358152908301908301610b99565b3461018d5760a036600319011261018d57610bd2600435610191565b610bdd602435610191565b67ffffffffffffffff60443581811161018d57610bfe903690600401610b4f565b5060643581811161018d57610c17903690600401610b4f565b5060843590811161018d57610c3090369060040161020d565b5060405163bc197c8160e01b8152602090f35b3461018d5760a036600319011261018d57610c5f600435610191565b610c6a602435610191565b60843567ffffffffffffffff811161018d57610c8a90369060040161020d565b5060405163f23a6e6160e01b8152602090f35b3461018d57602036600319011261018d57600435610cba81610191565b610cc2610e63565b6001600160a01b03908116908115610d13575f54826bffffffffffffffffffffffff60a01b8216175f55167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b604051631e4fbdf760e01b81525f6004820152602490fd5b3461018d575f36600319011261018d576003546040516001600160a01b039091168152602090f35b9081602091031261018d575190565b6040513d5f823e3d90fd5b3d15610d97573d90610d7e826101f1565b91610d8c60405193846101cf565b82523d5f602084013e565b606090565b9190610da6610e63565b610dae610e8e565b6001600160a01b038316928315610592575f809160405187868237848189810185815203925af193610dde610d6d565b9415610e44577fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f929181606092604051948593845260406020850152816040850152848401375f828201840152601f01601f19168101030190a2610e4160018055565b90565b84518581610e5e57604051633204506f60e01b8152600490fd5b602001fd5b5f546001600160a01b03163303610e7657565b60405163118cdaa760e01b8152336004820152602490fd5b600260015414610e9f576002600155565b604051633ee5aeb560e01b8152600490fd5b60405163a9059cbb60e01b60208083019182526001600160a01b0394909416602483015260448083019590955293815290925f91610ef06064826101cf565b519082855af115610d62575f513d610f3957506001600160a01b0381163b155b610f175750565b604051635274afe760e01b81526001600160a01b039091166004820152602490fd5b60011415610f1056fea2646970667358221220a64bf71d255fa8994c9810386b01a9d86fe8295b62ddb8588f58bb486865bb4164736f6c63430008180033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
WETH (WETH) | WETH | 0.0061 | $1,894.81 | $11.56 |
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0xd072fd…ba8148 | 13 hrs agoMon, 17 Aug 2026 15:39:41 UTC | 0x00a11f…e9f7 | data: 0x000000000000000000…cf65a000 |
| 0x41e0c3…60a95b | 21 hrs agoMon, 17 Aug 2026 07:09:28 UTC | 0x00a11f…e9f7 | data: 0x000000000000000000…698c8000 |
| 0x2cbd2d…f95bb0 | 1 day agoSun, 16 Aug 2026 21:15:08 UTC | 0x00a11f…e9f7 | data: 0x000000000000000000…00000000 |
| 0x779fef…f96a40 | 1 day agoSun, 16 Aug 2026 21:10:25 UTC | 0x8be007…57e0 | [0] 0x000000000000…00000000 [1] 0x000000000000…7904dcae |
| Transaction Hash | Method | Block | Age | From | To | Type | Item | ||
|---|---|---|---|---|---|---|---|---|---|
| no NFT transfers for this address yet | |||||||||
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| 0xfe704482…50d79e | Transfer | 39,355,449 | 2 hrs agoTue, 18 Aug 2026 02:55:08 UTC | 0x7ae3…6c0d | IN | 0x0772…9bb8 | 0.00015 WETH | WETH (WETH) | |
| 0xf08f366d…485d5e | Transfer | 39,288,515 | 3 hrs agoTue, 18 Aug 2026 01:03:16 UTC | 0x4435…f9f9 | IN | 0x0772…9bb8 | 0.0001 WETH | WETH (WETH) | |
| 0x69847590…6021ec | Transfer | 39,281,418 | 4 hrs agoTue, 18 Aug 2026 00:51:24 UTC | 0x5b66…334c | IN | 0x0772…9bb8 | 0.00031 WETH | WETH (WETH) | |
| 0xd320431a…1c9c1f | Transfer | 39,266,643 | 4 hrs agoTue, 18 Aug 2026 00:26:43 UTC | 0xa414…b64c | IN | 0x0772…9bb8 | 0.00101 WETH | WETH (WETH) | |
| 0x15febd4c…954ff2 | Transfer | 39,216,391 | 5 hrs agoMon, 17 Aug 2026 23:02:50 UTC | 0x163a…2094 | IN | 0x0772…9bb8 | 0.0001 WETH | WETH (WETH) | |
| 0x59b148e2…8f3ac5 | Transfer | 39,216,226 | 5 hrs agoMon, 17 Aug 2026 23:02:33 UTC | 0x163a…2094 | IN | 0x0772…9bb8 | 0.0001 WETH | WETH (WETH) | |
| 0x380f9979…4b48d2 | Transfer | 39,214,890 | 5 hrs agoMon, 17 Aug 2026 23:00:19 UTC | 0x7738…42cd | IN | 0x0772…9bb8 | 0.0001 WETH | WETH (WETH) | |
| 0x678d269a…498c07 | Transfer | 39,210,093 | 6 hrs agoMon, 17 Aug 2026 22:52:20 UTC | 0x23cd…21e1 | IN | 0x0772…9bb8 | 0.00193 WETH | WETH (WETH) | |
| 0xf8ee001c…28ebd1 | Transfer | 39,140,797 | 8 hrs agoMon, 17 Aug 2026 20:56:31 UTC | 0x23cd…21e1 | IN | 0x0772…9bb8 | 0.00079 WETH | WETH (WETH) | |
| 0xc8d28d2f…39d072 | Transfer | 39,132,021 | 8 hrs agoMon, 17 Aug 2026 20:41:51 UTC | 0x1b06…d0f4 | IN | 0x0772…9bb8 | 0.00012 WETH | WETH (WETH) | |
| 0x7f82e7d7…e4f4d1 | Transfer | 39,131,359 | 8 hrs agoMon, 17 Aug 2026 20:40:44 UTC | 0xe90e…7a0b | IN | 0x0772…9bb8 | 0.00052 WETH | WETH (WETH) | |
| 0x872e0e18…28ee4e | Transfer | 39,094,876 | 9 hrs agoMon, 17 Aug 2026 19:39:43 UTC | 0xe66c…d2c9 | IN | 0x0772…9bb8 | 0.00037 WETH | WETH (WETH) | |
| 0x1e2ce7a7…c1b9e5 | Transfer | 39,088,231 | 9 hrs agoMon, 17 Aug 2026 19:28:37 UTC | 0x340b…2be8 | IN | 0x0772…9bb8 | 0.00013 WETH | WETH (WETH) | |
| 0x9b45a407…a9a32a | Transfer | 38,985,725 | 12 hrs agoMon, 17 Aug 2026 16:37:18 UTC | 0x907b…0273 | IN | 0x0772…9bb8 | 0.00012 WETH | WETH (WETH) | |
| 0x5d1eebf1…13059f | Transfer | 38,985,577 | 12 hrs agoMon, 17 Aug 2026 16:37:03 UTC | 0x907b…0273 | IN | 0x0772…9bb8 | 0.00012 WETH | WETH (WETH) | |
| 0x71dfa14b…ed0eaa | Transfer | 38,982,074 | 12 hrs agoMon, 17 Aug 2026 16:31:12 UTC | 0xd954…5d97 | IN | 0x0772…9bb8 | 0.00013 WETH | WETH (WETH) | |
| 0xd072fd26…ba8148 | Transfer | 38,951,220 | 13 hrs agoMon, 17 Aug 2026 15:39:41 UTC | 0x0772…9bb8 | OUT | 0x0000…0000 | 0.00825 WETH | WETH (WETH) | |
| 0xbbc89093…9b8a1d | Transfer | 38,945,113 | 13 hrs agoMon, 17 Aug 2026 15:29:30 UTC | 0xd83f…8ff2 | IN | 0x0772…9bb8 | 0.00018 WETH | WETH (WETH) | |
| 0x0c81037a…b62ec2 | Transfer | 38,943,360 | 13 hrs agoMon, 17 Aug 2026 15:26:34 UTC | 0xc73e…243c | IN | 0x0772…9bb8 | 0.00327 WETH | WETH (WETH) | |
| 0x287eafec…de82df | Transfer | 38,940,456 | 13 hrs agoMon, 17 Aug 2026 15:21:43 UTC | 0x4137…ea7a | IN | 0x0772…9bb8 | 0.00037 WETH | WETH (WETH) | |
| 0x7c046b4f…38678d | Transfer | 38,908,372 | 14 hrs agoMon, 17 Aug 2026 14:28:11 UTC | 0x90ec…65fd | IN | 0x0772…9bb8 | 0.0002 WETH | WETH (WETH) | |
| 0x3d885dd9…c697c3 | Transfer | 38,892,046 | 14 hrs agoMon, 17 Aug 2026 14:00:59 UTC | 0x83cb…d61e | IN | 0x0772…9bb8 | 0.0002 WETH | WETH (WETH) | |
| 0x1a830ad4…02a5d2 | Transfer | 38,889,639 | 15 hrs agoMon, 17 Aug 2026 13:56:57 UTC | 0xb359…d07c | IN | 0x0772…9bb8 | 0.0002 WETH | WETH (WETH) | |
| 0x23fc976b…07e874 | Transfer | 38,814,289 | 17 hrs agoMon, 17 Aug 2026 11:51:07 UTC | 0x86a0…66d2 | IN | 0x0772…9bb8 | 0.00016 WETH | WETH (WETH) | |
| 0xd965f2ed…725e52 | Transfer | 38,796,096 | 17 hrs agoMon, 17 Aug 2026 11:20:41 UTC | 0xe86d…3af9 | IN | 0x0772…9bb8 | 0.00048 WETH | WETH (WETH) |
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0xd072fd…ba8148 | flush | 38,951,220 | 13 hrs agoMon, 17 Aug 2026 15:39:41 UTC | 0x30d8…740a | IN | RoyaltyForwarder | $0.000 ETH | 0.00000162 | |
| 0x41e0c3…60a95b | flush | 38,645,981 | 21 hrs agoMon, 17 Aug 2026 07:09:28 UTC | 0x30d8…740a | IN | RoyaltyForwarder | $0.000 ETH | 0.00000162 | |
| 0x2cbd2d…f95bb0 | flush | 38,290,674 | 1 day agoSun, 16 Aug 2026 21:15:08 UTC | 0x0043…dcae | IN | RoyaltyForwarder | $0.000 ETH | 0.00000134 | |
| 0xcfb677…d5e9cc | Transfer | 38,290,264 | 1 day agoSun, 16 Aug 2026 21:14:27 UTC | 0x0043…dcae | IN | RoyaltyForwarder | $1.890.001 ETH | 0.00000043 |
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| 39,359,596 | 1 hr agoTue, 18 Aug 2026 03:02:03 UTC | 0x76a3aa…32aedf | CALL | fulfillAvailableAdvancedOrders | 0x0000…b395 | IN | 0x0772…9bb8 | 0.00090 ETH |
| 39,348,518 | 2 hrs agoTue, 18 Aug 2026 02:43:33 UTC | 0x879e3d…466e4d | CALL | fulfillAdvancedOrder | 0x0000…b395 | IN | 0x0772…9bb8 | 0.00018 ETH |
| 39,348,064 | 2 hrs agoTue, 18 Aug 2026 02:42:47 UTC | 0xca886c…07c7ef | CALL | fulfillAvailableAdvancedOrders | 0x0000…b395 | IN | 0x0772…9bb8 | 0.00470 ETH |
| 39,339,423 | 2 hrs agoTue, 18 Aug 2026 02:28:21 UTC | 0x6cd0d1…ff300d | CALL | fulfillAdvancedOrder | 0x0000…b395 | IN | 0x0772…9bb8 | 0.00013 ETH |
| 39,338,769 | 2 hrs agoTue, 18 Aug 2026 02:27:15 UTC | 0x785fd0…d8bc5d | CALL | fulfillAvailableAdvancedOrders | 0x0000…b395 | IN | 0x0772…9bb8 | 0.00026 ETH |
| 39,290,214 | 3 hrs agoTue, 18 Aug 2026 01:06:07 UTC | 0xcc2afd…2f322b | CALL | fulfillAdvancedOrder | 0x0000…b395 | IN | 0x0772…9bb8 | 0.00013 ETH |
| 39,288,676 | 3 hrs agoTue, 18 Aug 2026 01:03:32 UTC | 0x942f85…0a6620 | CALL | fulfillAdvancedOrder | 0x0000…b395 | IN | 0x0772…9bb8 | 0.00018 ETH |
| 39,280,520 | 4 hrs agoTue, 18 Aug 2026 00:49:54 UTC | 0x5b5b0f…7efca8 | CALL | fulfillAdvancedOrder | 0x0000…b395 | IN | 0x0772…9bb8 | 0.00018 ETH |
| 39,271,915 | 4 hrs agoTue, 18 Aug 2026 00:35:32 UTC | 0x4f8d51…7a7600 | CALL | fulfillAdvancedOrder | 0x0000…b395 | IN | 0x0772…9bb8 | 0.00013 ETH |
| 39,259,878 | 4 hrs agoTue, 18 Aug 2026 00:15:26 UTC | 0x3b6f30…791ad1 | CALL | multicall | 0x0000…b395 | IN | 0x0772…9bb8 | 0.00040 ETH |
| 39,240,555 | 5 hrs agoMon, 17 Aug 2026 23:43:10 UTC | 0xe9e034…51b811 | CALL | fulfillAdvancedOrder | 0x0000…b395 | IN | 0x0772…9bb8 | 0.00013 ETH |
| 39,222,142 | 5 hrs agoMon, 17 Aug 2026 23:12:27 UTC | 0xdd2a09…7e85a9 | CALL | fulfillAdvancedOrder | 0x0000…b395 | IN | 0x0772…9bb8 | 0.00013 ETH |
| 39,204,360 | 6 hrs agoMon, 17 Aug 2026 22:42:45 UTC | 0x68b165…2434c5 | CALL | fulfillAvailableAdvancedOrders | 0x0000…b395 | IN | 0x0772…9bb8 | 0.00027 ETH |
| 39,198,029 | 6 hrs agoMon, 17 Aug 2026 22:32:11 UTC | 0x9f9b5c…f35a77 | CALL | fulfillAdvancedOrder | 0x0000…b395 | IN | 0x0772…9bb8 | 0.00014 ETH |
| 39,196,881 | 6 hrs agoMon, 17 Aug 2026 22:30:16 UTC | 0xbe1f71…22275d | CALL | fulfillAdvancedOrder | 0x0000…b395 | IN | 0x0772…9bb8 | 0.00018 ETH |
| 39,135,623 | 8 hrs agoMon, 17 Aug 2026 20:47:52 UTC | 0xe196ea…861239 | CALL | fulfillAvailableAdvancedOrders | 0x0000…b395 | IN | 0x0772…9bb8 | 0.00092 ETH |
| 39,122,764 | 8 hrs agoMon, 17 Aug 2026 20:26:23 UTC | 0x7a956e…b26a0b | CALL | fulfillAvailableAdvancedOrders | 0x0000…b395 | IN | 0x0772…9bb8 | 0.00035 ETH |
| 39,120,418 | 8 hrs agoMon, 17 Aug 2026 20:22:28 UTC | 0xe71a4a…5bebfd | CALL | fulfillAdvancedOrder | 0x0000…b395 | IN | 0x0772…9bb8 | 0.00017 ETH |
| 39,120,018 | 8 hrs agoMon, 17 Aug 2026 20:21:48 UTC | 0x2ffce0…2b90f8 | CALL | fulfillAdvancedOrder | 0x0000…b395 | IN | 0x0772…9bb8 | 0.00018 ETH |
| 39,119,645 | 8 hrs agoMon, 17 Aug 2026 20:21:10 UTC | 0x69f237…3c3ce6 | CALL | fulfillAdvancedOrder | 0x0000…b395 | IN | 0x0772…9bb8 | 0.00017 ETH |
| 39,119,464 | 8 hrs agoMon, 17 Aug 2026 20:20:52 UTC | 0xbeb981…2bfc89 | CALL | fulfillAdvancedOrder | 0x0000…b395 | IN | 0x0772…9bb8 | 0.00017 ETH |
| 39,101,669 | 9 hrs agoMon, 17 Aug 2026 19:51:04 UTC | 0x2147e8…488894 | CALL | fulfillAdvancedOrder | 0x0000…b395 | IN | 0x0772…9bb8 | 0.00018 ETH |
| 39,069,098 | 10 hrs agoMon, 17 Aug 2026 18:56:37 UTC | 0x5365cf…9e8a49 | CALL | fulfillAdvancedOrder | 0x0000…b395 | IN | 0x0772…9bb8 | 0.00018 ETH |
| 39,068,376 | 10 hrs agoMon, 17 Aug 2026 18:55:26 UTC | 0x546548…38b5f0 | CALL | fulfillAdvancedOrder | 0x0000…b395 | IN | 0x0772…9bb8 | 0.00018 ETH |
| 39,068,109 | 10 hrs agoMon, 17 Aug 2026 18:54:59 UTC | 0xc6c39a…288c47 | CALL | fulfillAdvancedOrder | 0x0000…b395 | IN | 0x0772…9bb8 | 0.00018 ETH |