Latest 25 from a total of 222 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Transfer ETH | 18591014 | 848 days ago | IN | 0 ETH | 0.00112828 | ||||
| Transfer ETH | 18583896 | 849 days ago | IN | 0 ETH | 0.00189125 | ||||
| Transfer ETH | 18569751 | 851 days ago | IN | 0 ETH | 0.00195768 | ||||
| Transfer ETH | 18562726 | 852 days ago | IN | 0 ETH | 0.00222383 | ||||
| Transfer ETH | 18555280 | 853 days ago | IN | 0 ETH | 0.00122545 | ||||
| Transfer ETH | 18548377 | 854 days ago | IN | 0 ETH | 0.00097977 | ||||
| Transfer ETH | 18541123 | 855 days ago | IN | 0 ETH | 0.00209452 | ||||
| Transfer ETH | 18535978 | 856 days ago | IN | 0 ETH | 0.00385376 | ||||
| Transfer ETH | 18528894 | 857 days ago | IN | 0 ETH | 0.00292365 | ||||
| Transfer ETH | 18519573 | 858 days ago | IN | 0 ETH | 0.00142968 | ||||
| Transfer ETH | 18512589 | 859 days ago | IN | 0 ETH | 0.0008794 | ||||
| Transfer ETH | 18505100 | 860 days ago | IN | 0 ETH | 0.00096908 | ||||
| Transfer ETH | 18491084 | 862 days ago | IN | 0 ETH | 0.00110605 | ||||
| Transfer ETH | 18476686 | 864 days ago | IN | 0 ETH | 0.00084982 | ||||
| Transfer ETH | 18469571 | 865 days ago | IN | 0 ETH | 0.00084816 | ||||
| Transfer ETH | 18462449 | 866 days ago | IN | 0 ETH | 0.00120603 | ||||
| Transfer ETH | 18455752 | 867 days ago | IN | 0 ETH | 0.00075978 | ||||
| Transfer ETH | 18448290 | 868 days ago | IN | 0 ETH | 0.00059436 | ||||
| Transfer ETH | 18440993 | 869 days ago | IN | 0 ETH | 0.00113719 | ||||
| Transfer ETH | 18433986 | 870 days ago | IN | 0 ETH | 0.00075845 | ||||
| Transfer ETH | 18426741 | 871 days ago | IN | 0 ETH | 0.00086468 | ||||
| Transfer ETH | 18419532 | 872 days ago | IN | 0 ETH | 0.00117532 | ||||
| Transfer ETH | 18412901 | 873 days ago | IN | 0 ETH | 0.00071275 | ||||
| Transfer ETH | 18398841 | 875 days ago | IN | 0 ETH | 0.00037744 | ||||
| Transfer ETH | 18391346 | 876 days ago | IN | 0 ETH | 0.00074228 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 19928264 | 661 days ago | 1 wei | ||||
| Transfer | 19906513 | 664 days ago | 1 wei | ||||
| Transfer | 19879479 | 668 days ago | 1 wei | ||||
| Transfer | 19870514 | 669 days ago | 1 wei | ||||
| Transfer | 19525891 | 717 days ago | 1 wei | ||||
| Transfer | 19506894 | 720 days ago | 1 wei | ||||
| Transfer | 19436662 | 730 days ago | 1 wei | ||||
| Transfer | 19436374 | 730 days ago | 1 wei | ||||
| Transfer | 19350109 | 742 days ago | 1 wei | ||||
| Transfer | 19348335 | 742 days ago | 1 wei | ||||
| Transfer | 19346379 | 743 days ago | 1 wei | ||||
| Transfer | 19346370 | 743 days ago | 1 wei | ||||
| Transfer | 19345468 | 743 days ago | 1 wei | ||||
| Transfer | 19345022 | 743 days ago | 1 wei | ||||
| Transfer | 19342393 | 743 days ago | 1 wei | ||||
| Transfer | 19342249 | 743 days ago | 1 wei | ||||
| Transfer | 19336668 | 744 days ago | 1 wei | ||||
| Transfer | 19332231 | 745 days ago | 1 wei | ||||
| Transfer | 19332005 | 745 days ago | 1 wei | ||||
| Transfer | 19330679 | 745 days ago | 1 wei | ||||
| Transfer | 19330679 | 745 days ago | 1 wei | ||||
| Transfer | 19328438 | 745 days ago | 1 wei | ||||
| Transfer | 19328379 | 745 days ago | 1 wei | ||||
| Transfer | 19328231 | 745 days ago | 1 wei | ||||
| Transfer | 19325769 | 745 days ago | 1 wei |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
ProtocolFeeRecipient
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
Yes with 888888 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;
// LooksRare unopinionated libraries
import {LowLevelERC20Transfer} from "@looksrare/contracts-libs/contracts/lowLevelCallers/LowLevelERC20Transfer.sol";
import {IWETH} from "@looksrare/contracts-libs/contracts/interfaces/generic/IWETH.sol";
import {IERC20} from "@looksrare/contracts-libs/contracts/interfaces/generic/IERC20.sol";
/**
* @title ProtocolFeeRecipient
* @notice This contract is used to receive protocol fees and transfer them to the fee sharing setter.
* Fee sharing setter cannot receive ETH directly, so we need to use this contract as a middleman
* to convert ETH into WETH before sending it.
* @author LooksRare protocol team (👀,💎)
*/
contract ProtocolFeeRecipient is LowLevelERC20Transfer {
address public immutable FEE_SHARING_SETTER;
IWETH public immutable WETH;
error NothingToTransfer();
constructor(address _feeSharingSetter, address _weth) {
FEE_SHARING_SETTER = _feeSharingSetter;
WETH = IWETH(_weth);
}
function transferETH() external {
uint256 ethBalance = address(this).balance;
if (ethBalance != 0) {
WETH.deposit{value: ethBalance}();
}
uint256 wethBalance = IERC20(address(WETH)).balanceOf(address(this));
if (wethBalance == 0) {
revert NothingToTransfer();
}
_executeERC20DirectTransfer(address(WETH), FEE_SHARING_SETTER, wethBalance);
}
/**
* @param currency ERC20 currency address
*/
function transferERC20(address currency) external {
uint256 balance = IERC20(currency).balanceOf(address(this));
if (balance == 0) {
revert NothingToTransfer();
}
_executeERC20DirectTransfer(currency, FEE_SHARING_SETTER, balance);
}
receive() external payable {}
}// SPDX-License-Identifier: MIT pragma solidity ^0.8.17; /** * @notice It is emitted if the call recipient is not a contract. */ error NotAContract();
// SPDX-License-Identifier: MIT pragma solidity ^0.8.17; /** * @notice It is emitted if the ETH transfer fails. */ error ETHTransferFail(); /** * @notice It is emitted if the ERC20 approval fails. */ error ERC20ApprovalFail(); /** * @notice It is emitted if the ERC20 transfer fails. */ error ERC20TransferFail(); /** * @notice It is emitted if the ERC20 transferFrom fails. */ error ERC20TransferFromFail(); /** * @notice It is emitted if the ERC721 transferFrom fails. */ error ERC721TransferFromFail(); /** * @notice It is emitted if the ERC1155 safeTransferFrom fails. */ error ERC1155SafeTransferFromFail(); /** * @notice It is emitted if the ERC1155 safeBatchTransferFrom fails. */ error ERC1155SafeBatchTransferFromFail();
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;
interface IERC20 {
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address to, uint256 amount) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(address from, address to, uint256 amount) external returns (bool);
}// SPDX-License-Identifier: MIT
pragma solidity >=0.5.0;
interface IWETH {
function deposit() external payable;
function transfer(address dst, uint256 wad) external returns (bool);
function withdraw(uint256 wad) external;
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;
// Interfaces
import {IERC20} from "../interfaces/generic/IERC20.sol";
// Errors
import {ERC20TransferFail, ERC20TransferFromFail} from "../errors/LowLevelErrors.sol";
import {NotAContract} from "../errors/GenericErrors.sol";
/**
* @title LowLevelERC20Transfer
* @notice This contract contains low-level calls to transfer ERC20 tokens.
* @author LooksRare protocol team (👀,💎)
*/
contract LowLevelERC20Transfer {
/**
* @notice Execute ERC20 transferFrom
* @param currency Currency address
* @param from Sender address
* @param to Recipient address
* @param amount Amount to transfer
*/
function _executeERC20TransferFrom(address currency, address from, address to, uint256 amount) internal {
if (currency.code.length == 0) {
revert NotAContract();
}
(bool status, bytes memory data) = currency.call(abi.encodeCall(IERC20.transferFrom, (from, to, amount)));
if (!status) {
revert ERC20TransferFromFail();
}
if (data.length > 0) {
if (!abi.decode(data, (bool))) {
revert ERC20TransferFromFail();
}
}
}
/**
* @notice Execute ERC20 (direct) transfer
* @param currency Currency address
* @param to Recipient address
* @param amount Amount to transfer
*/
function _executeERC20DirectTransfer(address currency, address to, uint256 amount) internal {
if (currency.code.length == 0) {
revert NotAContract();
}
(bool status, bytes memory data) = currency.call(abi.encodeCall(IERC20.transfer, (to, amount)));
if (!status) {
revert ERC20TransferFail();
}
if (data.length > 0) {
if (!abi.decode(data, (bool))) {
revert ERC20TransferFail();
}
}
}
}{
"remappings": [
"@chainlink/=node_modules/@chainlink/",
"@ensdomains/=node_modules/@ensdomains/",
"@eth-optimism/=node_modules/@eth-optimism/",
"@looksrare/=node_modules/@looksrare/",
"@openzeppelin/=node_modules/@openzeppelin/",
"ds-test/=lib/forge-std/lib/ds-test/src/",
"eth-gas-reporter/=node_modules/eth-gas-reporter/",
"forge-std/=lib/forge-std/src/",
"hardhat/=node_modules/hardhat/",
"murky/=lib/murky/src/",
"openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/",
"solmate/=node_modules/solmate/"
],
"optimizer": {
"enabled": true,
"runs": 888888
},
"metadata": {
"bytecodeHash": "ipfs"
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "london",
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_feeSharingSetter","type":"address"},{"internalType":"address","name":"_weth","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ERC20TransferFail","type":"error"},{"inputs":[],"name":"NotAContract","type":"error"},{"inputs":[],"name":"NothingToTransfer","type":"error"},{"inputs":[],"name":"FEE_SHARING_SETTER","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"contract IWETH","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"currency","type":"address"}],"name":"transferERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60c060405234801561001057600080fd5b5060405161076238038061076283398101604081905261002f91610062565b6001600160a01b039182166080521660a052610095565b80516001600160a01b038116811461005d57600080fd5b919050565b6000806040838503121561007557600080fd5b61007e83610046565b915061008c60208401610046565b90509250929050565b60805160a0516106876100db6000396000818160be0152818161021c015281816102cd015261038e0152600081816061015281816101ea01526103af01526106876000f3fe6080604052600436106100435760003560e01c8063a9023d621461004f578063ad5c4648146100ac578063d1d6b739146100e0578063e28d717b1461010257600080fd5b3661004a57005b600080fd5b34801561005b57600080fd5b506100837f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100b857600080fd5b506100837f000000000000000000000000000000000000000000000000000000000000000081565b3480156100ec57600080fd5b506101006100fb3660046105aa565b610117565b005b34801561010e57600080fd5b50610100610213565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381865afa158015610184573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101a891906105e7565b9050806000036101e4576040517f744cfd1200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61020f827f0000000000000000000000000000000000000000000000000000000000000000836103d0565b5050565b47801561029c577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561028257600080fd5b505af1158015610296573d6000803e3d6000fd5b50505050505b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610329573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034d91906105e7565b905080600003610389576040517f744cfd1200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61020f7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000835b8273ffffffffffffffffffffffffffffffffffffffff163b600003610421576040517f09ee12d500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff8381166024830152604482018390526000918291861690606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052516104d49190610600565b6000604051808303816000865af19150503d8060008114610511576040519150601f19603f3d011682016040523d82523d6000602084013e610516565b606091505b509150915081610552576040517ff1568f9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051156105a3578080602001905181019061056d919061062f565b6105a3576040517ff1568f9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050565b6000602082840312156105bc57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146105e057600080fd5b9392505050565b6000602082840312156105f957600080fd5b5051919050565b6000825160005b818110156106215760208186018101518583015201610607565b506000920191825250919050565b60006020828403121561064157600080fd5b815180151581146105e057600080fdfea2646970667358221220f4e5d7bfb8d7d7f16aa27492bf7cafc315e2e7767241afc63e6a5c6f2d4366b064736f6c634300081100330000000000000000000000005924a28caaf1cc016617874a2f0c3710d881f3c1000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Deployed Bytecode
0x6080604052600436106100435760003560e01c8063a9023d621461004f578063ad5c4648146100ac578063d1d6b739146100e0578063e28d717b1461010257600080fd5b3661004a57005b600080fd5b34801561005b57600080fd5b506100837f0000000000000000000000005924a28caaf1cc016617874a2f0c3710d881f3c181565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100b857600080fd5b506100837f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b3480156100ec57600080fd5b506101006100fb3660046105aa565b610117565b005b34801561010e57600080fd5b50610100610213565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381865afa158015610184573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101a891906105e7565b9050806000036101e4576040517f744cfd1200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61020f827f0000000000000000000000005924a28caaf1cc016617874a2f0c3710d881f3c1836103d0565b5050565b47801561029c577f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561028257600080fd5b505af1158015610296573d6000803e3d6000fd5b50505050505b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610329573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034d91906105e7565b905080600003610389576040517f744cfd1200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61020f7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc27f0000000000000000000000005924a28caaf1cc016617874a2f0c3710d881f3c1835b8273ffffffffffffffffffffffffffffffffffffffff163b600003610421576040517f09ee12d500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff8381166024830152604482018390526000918291861690606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052516104d49190610600565b6000604051808303816000865af19150503d8060008114610511576040519150601f19603f3d011682016040523d82523d6000602084013e610516565b606091505b509150915081610552576040517ff1568f9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051156105a3578080602001905181019061056d919061062f565b6105a3576040517ff1568f9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050565b6000602082840312156105bc57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146105e057600080fd5b9392505050565b6000602082840312156105f957600080fd5b5051919050565b6000825160005b818110156106215760208186018101518583015201610607565b506000920191825250919050565b60006020828403121561064157600080fd5b815180151581146105e057600080fdfea2646970667358221220f4e5d7bfb8d7d7f16aa27492bf7cafc315e2e7767241afc63e6a5c6f2d4366b064736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000005924a28caaf1cc016617874a2f0c3710d881f3c1000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
-----Decoded View---------------
Arg [0] : _feeSharingSetter (address): 0x5924A28caAF1cc016617874a2f0C3710d881f3c1
Arg [1] : _weth (address): 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000005924a28caaf1cc016617874a2f0c3710d881f3c1
Arg [1] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Loading...
Loading
Loading...
Loading
Net Worth in USD
$268.49
Net Worth in ETH
0.126771
Token Allocations
ETH
100.00%
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $2,117.2 | 0.1268 | $268.49 |
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.