// SPDX-License-Identifier: BUSL-1.1
pragma solidity 0.8.21;
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/security/ReentrancyGuard.sol";
import "@openzeppelin/contracts/utils/Address.sol";
import "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
contract DexFiTreasury is Ownable, ReentrancyGuard {
using SafeERC20 for IERC20;
using EnumerableSet for EnumerableSet.AddressSet;
struct FeeReceiverData {
address receiver;
uint256 percent;
}
uint256 public constant DIVIDER = 1e18;
EnumerableSet.AddressSet private _receivers;
mapping(address => uint256) private _percents;
function receivers(uint256 index) external view returns (address) {
return _receivers.at(index);
}
function receiversCount() external view returns (uint256) {
return _receivers.length();
}
function receiversContains(address receiver) external view returns (bool) {
return _receivers.contains(receiver);
}
function receiversPercent(address receiver) external view returns (uint256) {
return _percents[receiver];
}
event FeeReceiversUpdated(FeeReceiverData[] receivers);
event TreasuryClaimed(address indexed token, address indexed receiver, uint256 amount);
error UpdateFeeReceiversReceiverZero();
error UpdateFeeReceiversPercentSumDiffers(uint256 sum, uint256 target);
error UpdateFeeReceiversDuplicatedData();
error ClaimTreasuryTokenBalanceZero(address token);
constructor(FeeReceiverData[] memory data) {
_updateFeeReceivers(data);
}
receive() external payable {}
function claimTreasury(address[] memory tokens) external nonReentrant returns (bool) {
for (uint256 j = 0; j < tokens.length; j++) {
address token = tokens[j];
uint256 balance = token == address(0) ? address(this).balance : IERC20(token).balanceOf(address(this));
if (balance == 0) revert ClaimTreasuryTokenBalanceZero(token);
uint256 amountSum = 0;
uint256 receiversLength = _receivers.length();
for (uint256 i = 0; i < receiversLength; i++) {
address receiver = _receivers.at(i);
uint256 amount = i != receiversLength - 1
? (balance * _percents[receiver]) / DIVIDER
: balance - amountSum;
amountSum += amount;
if (token == address(0)) Address.sendValue(payable(receiver), amount);
else IERC20(token).safeTransfer(receiver, amount);
emit TreasuryClaimed(token, receiver, amount);
}
}
return true;
}
function updateFeeReceivers(FeeReceiverData[] memory data) external onlyOwner returns (bool) {
_updateFeeReceivers(data);
return true;
}
function _updateFeeReceivers(FeeReceiverData[] memory data) private {
if (_receivers.length() > 0) {
for (uint256 i = _receivers.length() - 1; i >= 0; i--) {
_receivers.remove(_receivers.at(i));
if (i == 0) break;
}
}
uint256 percentSum = 0;
for (uint256 i = 0; i < data.length; i++) {
FeeReceiverData memory receiverData = data[i];
if (receiverData.receiver == address(0)) revert UpdateFeeReceiversReceiverZero();
_receivers.add(receiverData.receiver);
_percents[receiverData.receiver] = receiverData.percent;
percentSum += receiverData.percent;
}
if (percentSum != DIVIDER) revert UpdateFeeReceiversPercentSumDiffers(percentSum, DIVIDER);
if (_receivers.length() != data.length) revert UpdateFeeReceiversDuplicatedData();
emit FeeReceiversUpdated(data);
}
}[
{
"type": "constructor",
"inputs": [
{
"name": "data",
"type": "tuple[]",
"components": [
{
"name": "receiver",
"type": "address",
"internalType": "address"
},
{
"name": "percent",
"type": "uint256",
"internalType": "uint256"
}
],
"internalType": "struct DexFiTreasury.FeeReceiverData[]"
}
],
"stateMutability": "nonpayable"
},
{
"name": "ClaimTreasuryTokenBalanceZero",
"type": "error",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "UpdateFeeReceiversDuplicatedData",
"type": "error",
"inputs": []
},
{
"name": "UpdateFeeReceiversPercentSumDiffers",
"type": "error",
"inputs": [
{
"name": "sum",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "target",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "UpdateFeeReceiversReceiverZero",
"type": "error",
"inputs": []
},
{
"name": "FeeReceiversUpdated",
"type": "event",
"inputs": [
{
"name": "receivers",
"type": "tuple[]",
"indexed": false,
"components": [
{
"name": "receiver",
"type": "address",
"internalType": "address"
},
{
"name": "percent",
"type": "uint256",
"internalType": "uint256"
}
],
"internalType": "struct DexFiTreasury.FeeReceiverData[]"
}
],
"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": "TreasuryClaimed",
"type": "event",
"inputs": [
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "receiver",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "DIVIDER",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "claimTreasury",
"type": "function",
"inputs": [
{
"name": "tokens",
"type": "address[]",
"internalType": "address[]"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "nonpayable"
},
{
"name": "owner",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "receivers",
"type": "function",
"inputs": [
{
"name": "index",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "receiversContains",
"type": "function",
"inputs": [
{
"name": "receiver",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "receiversCount",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "receiversPercent",
"type": "function",
"inputs": [
{
"name": "receiver",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "renounceOwnership",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "transferOwnership",
"type": "function",
"inputs": [
{
"name": "newOwner",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "updateFeeReceivers",
"type": "function",
"inputs": [
{
"name": "data",
"type": "tuple[]",
"components": [
{
"name": "receiver",
"type": "address",
"internalType": "address"
},
{
"name": "percent",
"type": "uint256",
"internalType": "uint256"
}
],
"internalType": "struct DexFiTreasury.FeeReceiverData[]"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "nonpayable"
},
{
"type": "receive",
"stateMutability": "payable"
}
]0x604060808152346200031c57620012c7803803806200001e8162000348565b928339810160209182818303126200031c5780516001600160401b03918282116200031c57019082601f830112156200031c5781519281841162000334576005926200006e8686861b0162000348565b928684878152019187839760061b820101938085116200031c5792908801925b848410620002d25750505f8054336001600160a01b03198216811783556001600160a01b0399955091935090915087167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a360019384805560029081548062000264575b5085839184915b620001c3575b5050670de0b6b3a7640000808203620001a657505054835103620001955792919086519581870192828852518093528787019594905b8884831062000174577fa220fc1ab8a6f8eb5d2507e43b3703a77d58ebc26bf635082c29c20906d9bd878989038aa151610dc59081620005028239f35b86518051831689528401518489015290960195948201949084019062000137565b8651636ae8991560e11b8152600490fd5b60449250895191635f22daad60e01b835260048301526024820152fd5b909186518310156200025d578583831b880101518a815116156200024c57620001ef8b8251166200039b565b508681018b815192511687526004918289528d882055518201809211620002395750915f198114620002255787019087620000fb565b634e487b7160e01b85526011600452602485fd5b634e487b7160e01b865260119052602485fd5b8b516319598b0360e31b8152600490fd5b9162000101565b5f19908082019081116200022557875b62000281575b50620000f4565b8354811015620002be57838552620002a08a8288882001541662000420565b508015620002b8578015620002255781018762000274565b6200027a565b634e487b7160e01b85526032600452602485fd5b89848203126200031c5789518a81018181108582111762000320578b5284516001600160a01b03811681036200031c578152848a01518a820152825292890192908801906200008e565b5f80fd5b60245f634e487b7160e01b81526041600452fd5b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f191682016001600160401b038111838210176200033457604052565b600254811015620003875760025f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b5f818152600360205260408120546200041b576002546801000000000000000081101562000407579082620003f3620003dd846001604096016002556200036e565b819391549060031b91821b915f19901b19161790565b905560025492815260036020522055600190565b634e487b7160e01b82526041600452602482fd5b905090565b5f818152600360205260408120549091908015620004fc575f1990808201818111620002255760025490838201918211620004e857808203620004ae575b50505060025480156200049a5781019062000479826200036e565b909182549160031b1b19169055600255815260036020526040812055600190565b634e487b7160e01b84526031600452602484fd5b620004d1620004c1620003dd936200036e565b90549060031b1c9283926200036e565b90558452600360205260408420555f80806200045e565b634e487b7160e01b86526011600452602486fd5b50509056fe608080604052600436101561001c575b50361561001a575f80fd5b005b5f3560e01c908163360ed9c2146109ac5750806362043bd81461098a578063715018a61461094657806372c0783f146104a05780638da5cb5b146104795780639fe9415014610441578063bfd772fc1461040a578063ef0181bb1461017f578063f2fde38b146100d45763f9316b0c14610096575f61000f565b346100d05760203660031901126100d0576001600160a01b036100b7610a00565b165f526003602052602060405f20541515604051908152f35b5f80fd5b346100d05760203660031901126100d0576100ed610a00565b6100f5610a2a565b6001600160a01b0390811690811561012b575f548260018060a01b03198216175f55165f80516020610d708339815191525f80a3005b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346100d0576020806003193601126100d0576001600160401b0390600435908282116100d057366023830112156100d0578160040135926024926101c2856109e9565b916101d060405193846109c6565b8583528383019085829760061b840101923684116100d0578601915b8383106103b557505050506101ff610a2a565b6002548061034d575b505f93845b8251861015610282576102208684610abb565b5180516001600160a01b03929083161561027057828261024861026a95610264955116610bec565b508781019182519151165f526004885260405f20555190610acf565b95610aad565b9461020d565b6040516319598b0360e31b8152600490fd5b670de0b6b3a764000085670de0b6b3a763ffff1983016103315750505060025482510361031f576040519183830190848452518091526040830191905f5b858282106102f7577fa220fc1ab8a6f8eb5d2507e43b3703a77d58ebc26bf635082c29c20906d9bd8786860387a160405160018152f35b835180516001600160a01b0316865281015181860152604090940193909201916001016102c0565b604051636ae8991560e11b8152600490fd5b6044935060405192635f22daad60e01b84526004840152820152fd5b5f199491939290858101908111610396575b61038261036b82610a81565b905460039190911b1c6001600160a01b0316610c67565b5080156103a957801561039657850161035f565b83634e487b7160e01b5f5260116004525ffd5b50919290935084610208565b6040833603126100d05760405160408101818110848211176103f75791879160409384526103e286610a16565b815282860135838201528152019201916101ec565b88634e487b7160e01b5f5260416004525ffd5b346100d05760203660031901126100d0576020610428600435610a81565b905460405160039290921b1c6001600160a01b03168152f35b346100d05760203660031901126100d0576001600160a01b03610462610a00565b165f526004602052602060405f2054604051908152f35b346100d0575f3660031901126100d0575f546040516001600160a01b039091168152602090f35b346100d05760203660031901126100d0576004356001600160401b0381116100d057366023820112156100d0578060040135906104dc826109e9565b916104ea60405193846109c6565b8083526024602084019160051b830101913683116100d057602401905b82821061092e57836002600154146108e95760026001555f5b81518110156108da576001600160a01b0361053b8284610abb565b51168061086d57475b8015610854576002545f92835b82851061056b57505050505061056690610aad565b610520565b61057485610a81565b905460039190911b1c6001600160a01b0316945f198401841061082a575f198401811461083e57855f52600460205260405f20548581810204810361082a57670de0b6b3a76400006105ca918702048093610acf565b95836106c25782471061067d575f80808086855af16105e7610adc565b501561061557835f80516020610d50833981519152602061060f955b604051908152a3610aad565b93610551565b60405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b6064820152608490fd5b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606490fd5b60405163a9059cbb60e01b602082015260248101829052604480820185905281526001600160401b036080820190811190821117610816576001600160401b0360c082019081116080830190911017610816578060c061076d9201604052602060808201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656460a082015260805f80835160208501828b5af1910190610766610adc565b9087610b1a565b80519081159182156107f3575b50501561079b57835f80516020610d50833981519152602061060f95610603565b60405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608490fd5b81925090602091810103126100d0576020015180151581036100d0578a8061077a565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b848281031161082a576105ca8286038093610acf565b60405163113904c160e21b815260048101839052602490fd5b6040516370a0823160e01b8152306004820152602081602481855afa9081156108cf575f9161089d575b50610544565b90506020813d6020116108c7575b816108b8602093836109c6565b810103126100d0575184610897565b3d91506108ab565b6040513d5f823e3d90fd5b60018055602060405160018152f35b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b6020809161093b84610a16565b815201910190610507565b346100d0575f3660031901126100d05761095e610a2a565b5f80546001600160a01b0319811682556001600160a01b03165f80516020610d708339815191528280a3005b346100d0575f3660031901126100d0576020604051670de0b6b3a76400008152f35b346100d0575f3660031901126100d0576020906002548152f35b601f909101601f19168101906001600160401b0382119082101761081657604052565b6001600160401b0381116108165760051b60200190565b600435906001600160a01b03821682036100d057565b35906001600160a01b03821682036100d057565b5f546001600160a01b03163303610a3d57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b600254811015610a995760025f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b5f19811461082a5760010190565b8051821015610a995760209160051b010190565b9190820180921161082a57565b3d15610b15573d906001600160401b0382116108165760405191610b0a601f8201601f1916602001846109c6565b82523d5f602084013e565b606090565b91929015610b7c5750815115610b2e575090565b3b15610b375790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b825190915015610b8f5750805190602001fd5b6040519062461bcd60e51b82528160208060048301528251908160248401525f935b828510610bd3575050604492505f838284010152601f80199101168101030190fd5b8481018201518686016044015293810193859350610bb1565b5f81815260036020526040812054610c6257600254600160401b811015610c4e579082610c3a610c2484600160409601600255610a81565b819391549060031b91821b915f19901b19161790565b905560025492815260036020522055600190565b634e487b7160e01b82526041600452602482fd5b905090565b5f818152600360205260408120549091908015610d4a575f1990808201818111610d365760025490838201918211610d2257808203610cee575b5050506002548015610cda57810190610cb982610a81565b909182549160031b1b19169055600255815260036020526040812055600190565b634e487b7160e01b84526031600452602484fd5b610d0c610cfd610c2493610a81565b90549060031b1c928392610a81565b90558452600360205260408420555f8080610ca1565b634e487b7160e01b86526011600452602486fd5b634e487b7160e01b85526011600452602485fd5b50509056fe6458407f0340d4c9ab27e2a8e4cc46dc2773a24dca8086eef793c12bb811a29a8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a26469706673582212206724f987770c1bc81385dabf9686cf22f8b6776270146a3920324ec43a4163b464736f6c634300081500330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000600000000000000000000000053c9e51afecda7a502a4432a10a319a6d41e8b6e0000000000000000000000000000000000000000000000000429d069189e00000000000000000000000000009dff54c6b45da1edaa5f331193e3fc01937c80cb0000000000000000000000000000000000000000000000000214e8348c4f00000000000000000000000000009a13ddefd86c636d587be0d7926086136311ba7e0000000000000000000000000000000000000000000000000214e8348c4f0000000000000000000000000000d77c3a266fe1f713793e33ee36f59a44c48a9af600000000000000000000000000000000000000000000000002c68af0bb140000000000000000000000000000eff89c02ab411d22529547876953dc611dc0aba90000000000000000000000000000000000000000000000000214e8348c4f000000000000000000000000000034af4f356a609f809d84e7a01a6016a34c2ccde800000000000000000000000000000000000000000000000000b1a2bc2ec50000
0x608080604052600436101561001c575b50361561001a575f80fd5b005b5f3560e01c908163360ed9c2146109ac5750806362043bd81461098a578063715018a61461094657806372c0783f146104a05780638da5cb5b146104795780639fe9415014610441578063bfd772fc1461040a578063ef0181bb1461017f578063f2fde38b146100d45763f9316b0c14610096575f61000f565b346100d05760203660031901126100d0576001600160a01b036100b7610a00565b165f526003602052602060405f20541515604051908152f35b5f80fd5b346100d05760203660031901126100d0576100ed610a00565b6100f5610a2a565b6001600160a01b0390811690811561012b575f548260018060a01b03198216175f55165f80516020610d708339815191525f80a3005b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346100d0576020806003193601126100d0576001600160401b0390600435908282116100d057366023830112156100d0578160040135926024926101c2856109e9565b916101d060405193846109c6565b8583528383019085829760061b840101923684116100d0578601915b8383106103b557505050506101ff610a2a565b6002548061034d575b505f93845b8251861015610282576102208684610abb565b5180516001600160a01b03929083161561027057828261024861026a95610264955116610bec565b508781019182519151165f526004885260405f20555190610acf565b95610aad565b9461020d565b6040516319598b0360e31b8152600490fd5b670de0b6b3a764000085670de0b6b3a763ffff1983016103315750505060025482510361031f576040519183830190848452518091526040830191905f5b858282106102f7577fa220fc1ab8a6f8eb5d2507e43b3703a77d58ebc26bf635082c29c20906d9bd8786860387a160405160018152f35b835180516001600160a01b0316865281015181860152604090940193909201916001016102c0565b604051636ae8991560e11b8152600490fd5b6044935060405192635f22daad60e01b84526004840152820152fd5b5f199491939290858101908111610396575b61038261036b82610a81565b905460039190911b1c6001600160a01b0316610c67565b5080156103a957801561039657850161035f565b83634e487b7160e01b5f5260116004525ffd5b50919290935084610208565b6040833603126100d05760405160408101818110848211176103f75791879160409384526103e286610a16565b815282860135838201528152019201916101ec565b88634e487b7160e01b5f5260416004525ffd5b346100d05760203660031901126100d0576020610428600435610a81565b905460405160039290921b1c6001600160a01b03168152f35b346100d05760203660031901126100d0576001600160a01b03610462610a00565b165f526004602052602060405f2054604051908152f35b346100d0575f3660031901126100d0575f546040516001600160a01b039091168152602090f35b346100d05760203660031901126100d0576004356001600160401b0381116100d057366023820112156100d0578060040135906104dc826109e9565b916104ea60405193846109c6565b8083526024602084019160051b830101913683116100d057602401905b82821061092e57836002600154146108e95760026001555f5b81518110156108da576001600160a01b0361053b8284610abb565b51168061086d57475b8015610854576002545f92835b82851061056b57505050505061056690610aad565b610520565b61057485610a81565b905460039190911b1c6001600160a01b0316945f198401841061082a575f198401811461083e57855f52600460205260405f20548581810204810361082a57670de0b6b3a76400006105ca918702048093610acf565b95836106c25782471061067d575f80808086855af16105e7610adc565b501561061557835f80516020610d50833981519152602061060f955b604051908152a3610aad565b93610551565b60405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b6064820152608490fd5b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606490fd5b60405163a9059cbb60e01b602082015260248101829052604480820185905281526001600160401b036080820190811190821117610816576001600160401b0360c082019081116080830190911017610816578060c061076d9201604052602060808201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656460a082015260805f80835160208501828b5af1910190610766610adc565b9087610b1a565b80519081159182156107f3575b50501561079b57835f80516020610d50833981519152602061060f95610603565b60405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608490fd5b81925090602091810103126100d0576020015180151581036100d0578a8061077a565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b848281031161082a576105ca8286038093610acf565b60405163113904c160e21b815260048101839052602490fd5b6040516370a0823160e01b8152306004820152602081602481855afa9081156108cf575f9161089d575b50610544565b90506020813d6020116108c7575b816108b8602093836109c6565b810103126100d0575184610897565b3d91506108ab565b6040513d5f823e3d90fd5b60018055602060405160018152f35b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b6020809161093b84610a16565b815201910190610507565b346100d0575f3660031901126100d05761095e610a2a565b5f80546001600160a01b0319811682556001600160a01b03165f80516020610d708339815191528280a3005b346100d0575f3660031901126100d0576020604051670de0b6b3a76400008152f35b346100d0575f3660031901126100d0576020906002548152f35b601f909101601f19168101906001600160401b0382119082101761081657604052565b6001600160401b0381116108165760051b60200190565b600435906001600160a01b03821682036100d057565b35906001600160a01b03821682036100d057565b5f546001600160a01b03163303610a3d57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b600254811015610a995760025f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b5f19811461082a5760010190565b8051821015610a995760209160051b010190565b9190820180921161082a57565b3d15610b15573d906001600160401b0382116108165760405191610b0a601f8201601f1916602001846109c6565b82523d5f602084013e565b606090565b91929015610b7c5750815115610b2e575090565b3b15610b375790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b825190915015610b8f5750805190602001fd5b6040519062461bcd60e51b82528160208060048301528251908160248401525f935b828510610bd3575050604492505f838284010152601f80199101168101030190fd5b8481018201518686016044015293810193859350610bb1565b5f81815260036020526040812054610c6257600254600160401b811015610c4e579082610c3a610c2484600160409601600255610a81565b819391549060031b91821b915f19901b19161790565b905560025492815260036020522055600190565b634e487b7160e01b82526041600452602482fd5b905090565b5f818152600360205260408120549091908015610d4a575f1990808201818111610d365760025490838201918211610d2257808203610cee575b5050506002548015610cda57810190610cb982610a81565b909182549160031b1b19169055600255815260036020526040812055600190565b634e487b7160e01b84526031600452602484fd5b610d0c610cfd610c2493610a81565b90549060031b1c928392610a81565b90558452600360205260408420555f8080610ca1565b634e487b7160e01b86526011600452602486fd5b634e487b7160e01b85526011600452602485fd5b50509056fe6458407f0340d4c9ab27e2a8e4cc46dc2773a24dca8086eef793c12bb811a29a8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a26469706673582212206724f987770c1bc81385dabf9686cf22f8b6776270146a3920324ec43a4163b464736f6c63430008150033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
WETH (WETH) | WETH | 0.031078 | $1,877.93 | $58.36 |
| Global Dollar (USDG) | USDG | 1 | $1 | $1 |
| DIH | 1 | $0.0000106 | $0 | |
| catcall (catcall) | catcall | 30 | — | — |
| Bycockets (BYCOCKET) | BYCOCKET | 21 | — | — |
| HOOD CLAW (HOODCLAW) | HOODCLAW | 10 | — | — |
| Trump Account Fund (TA) | TA | 1 | — | — |
| Apes Together Strong (APES) | APES | 1 | — | — |
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| no internal transactions found for this address yet (traced blocks + on-demand) | ||||||||
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0xf61693…678e34 | 1 day agoFri, 14 Aug 2026 20:30:01 UTC | 0x645840…a29a | [0] 0x000000000000…1eacad73 [1] 0x000000000000…4c2ccde8 data: 0x000000000000000000…d48c0ed2 |
| 0xf61693…678e34 | 1 day agoFri, 14 Aug 2026 20:30:01 UTC | 0x645840…a29a | [0] 0x000000000000…1eacad73 [1] 0x000000000000…1dc0aba9 data: 0x000000000000000000…7da42c70 |
| 0xf61693…678e34 | 1 day agoFri, 14 Aug 2026 20:30:01 UTC | 0x645840…a29a | [0] 0x000000000000…1eacad73 [1] 0x000000000000…c48a9af6 data: 0x000000000000000000…52303b40 |
| 0xf61693…678e34 | 1 day agoFri, 14 Aug 2026 20:30:01 UTC | 0x645840…a29a | [0] 0x000000000000…1eacad73 [1] 0x000000000000…6311ba7e data: 0x000000000000000000…7da42c70 |
| 0xf61693…678e34 | 1 day agoFri, 14 Aug 2026 20:30:01 UTC | 0x645840…a29a | [0] 0x000000000000…1eacad73 [1] 0x000000000000…937c80cb data: 0x000000000000000000…7da42c70 |
| 0xf61693…678e34 | 1 day agoFri, 14 Aug 2026 20:30:01 UTC | 0x645840…a29a | [0] 0x000000000000…1eacad73 [1] 0x000000000000…d41e8b6e data: 0x000000000000000000…fb4858e0 |
| 0x5c3794…57e5b4 | 2 days agoThu, 13 Aug 2026 20:30:01 UTC | 0x645840…a29a | [0] 0x000000000000…1eacad73 [1] 0x000000000000…4c2ccde8 data: 0x000000000000000000…b26cc6b7 |
| 0x5c3794…57e5b4 | 2 days agoThu, 13 Aug 2026 20:30:01 UTC | 0x645840…a29a | [0] 0x000000000000…1eacad73 [1] 0x000000000000…1dc0aba9 data: 0x000000000000000000…17465421 |
| 0x5c3794…57e5b4 | 2 days agoThu, 13 Aug 2026 20:30:01 UTC | 0x645840…a29a | [0] 0x000000000000…1eacad73 [1] 0x000000000000…c48a9af6 data: 0x000000000000000000…c9b31ad6 |
| 0x5c3794…57e5b4 | 2 days agoThu, 13 Aug 2026 20:30:01 UTC | 0x645840…a29a | [0] 0x000000000000…1eacad73 [1] 0x000000000000…6311ba7e data: 0x000000000000000000…17465421 |
| 0x5c3794…57e5b4 | 2 days agoThu, 13 Aug 2026 20:30:01 UTC | 0x645840…a29a | [0] 0x000000000000…1eacad73 [1] 0x000000000000…937c80cb data: 0x000000000000000000…17465421 |
| 0x5c3794…57e5b4 | 2 days agoThu, 13 Aug 2026 20:30:01 UTC | 0x645840…a29a | [0] 0x000000000000…1eacad73 [1] 0x000000000000…d41e8b6e data: 0x000000000000000000…2e8ca842 |
| 0x9640e4…bf3d93 | 3 days agoWed, 12 Aug 2026 20:30:01 UTC | 0x645840…a29a | [0] 0x000000000000…1eacad73 [1] 0x000000000000…4c2ccde8 data: 0x000000000000000000…9793cc8e |
| 0x9640e4…bf3d93 | 3 days agoWed, 12 Aug 2026 20:30:01 UTC | 0x645840…a29a | [0] 0x000000000000…1eacad73 [1] 0x000000000000…1dc0aba9 data: 0x000000000000000000…c6bb659c |
| 0x9640e4…bf3d93 | 3 days agoWed, 12 Aug 2026 20:30:01 UTC | 0x645840…a29a | [0] 0x000000000000…1eacad73 [1] 0x000000000000…c48a9af6 data: 0x000000000000000000…5e4f3226 |
| 0x9640e4…bf3d93 | 3 days agoWed, 12 Aug 2026 20:30:01 UTC | 0x645840…a29a | [0] 0x000000000000…1eacad73 [1] 0x000000000000…6311ba7e data: 0x000000000000000000…c6bb659c |
| 0x9640e4…bf3d93 | 3 days agoWed, 12 Aug 2026 20:30:01 UTC | 0x645840…a29a | [0] 0x000000000000…1eacad73 [1] 0x000000000000…937c80cb data: 0x000000000000000000…c6bb659c |
| 0x9640e4…bf3d93 | 3 days agoWed, 12 Aug 2026 20:30:01 UTC | 0x645840…a29a | [0] 0x000000000000…1eacad73 [1] 0x000000000000…d41e8b6e data: 0x000000000000000000…8d76cb39 |
| 0x46e9c0…1ed5d3 | 4 days agoTue, 11 Aug 2026 20:30:01 UTC | 0x645840…a29a | [0] 0x000000000000…1eacad73 [1] 0x000000000000…4c2ccde8 data: 0x000000000000000000…990f88a8 |
| 0x46e9c0…1ed5d3 | 4 days agoTue, 11 Aug 2026 20:30:01 UTC | 0x645840…a29a | [0] 0x000000000000…1eacad73 [1] 0x000000000000…1dc0aba9 data: 0x000000000000000000…cb2e99f3 |
| 0x46e9c0…1ed5d3 | 4 days agoTue, 11 Aug 2026 20:30:01 UTC | 0x645840…a29a | [0] 0x000000000000…1eacad73 [1] 0x000000000000…c48a9af6 data: 0x000000000000000000…643e229a |
| 0x46e9c0…1ed5d3 | 4 days agoTue, 11 Aug 2026 20:30:01 UTC | 0x645840…a29a | [0] 0x000000000000…1eacad73 [1] 0x000000000000…6311ba7e data: 0x000000000000000000…cb2e99f3 |
| 0x46e9c0…1ed5d3 | 4 days agoTue, 11 Aug 2026 20:30:01 UTC | 0x645840…a29a | [0] 0x000000000000…1eacad73 [1] 0x000000000000…937c80cb data: 0x000000000000000000…cb2e99f3 |
| 0x46e9c0…1ed5d3 | 4 days agoTue, 11 Aug 2026 20:30:01 UTC | 0x645840…a29a | [0] 0x000000000000…1eacad73 [1] 0x000000000000…d41e8b6e data: 0x000000000000000000…965d33e7 |
| 0xffad10…6a8ba6 | 5 days agoMon, 10 Aug 2026 20:30:01 UTC | 0x645840…a29a | [0] 0x000000000000…1eacad73 [1] 0x000000000000…4c2ccde8 data: 0x000000000000000000…8e3446f0 |
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0xf61693…678e34 | claimTreasury | 36,541,122 | 1 day agoFri, 14 Aug 2026 20:30:01 UTC | 0xa7ab…ff3f | IN | DexFiTreasury | $0.000 ETH | 0.00000516 | |
| 0x5c3794…57e5b4 | claimTreasury | 35,678,759 | 2 days agoThu, 13 Aug 2026 20:30:01 UTC | 0xa7ab…ff3f | IN | DexFiTreasury | $0.000 ETH | 0.00000576 | |
| 0x9640e4…bf3d93 | claimTreasury | 34,817,038 | 3 days agoWed, 12 Aug 2026 20:30:01 UTC | 0xa7ab…ff3f | IN | DexFiTreasury | $0.000 ETH | 0.00000847 | |
| 0x46e9c0…1ed5d3 | claimTreasury | 33,950,971 | 4 days agoTue, 11 Aug 2026 20:30:01 UTC | 0xa7ab…ff3f | IN | DexFiTreasury | $0.000 ETH | 0.00000403 | |
| 0xffad10…6a8ba6 | claimTreasury | 33,087,044 | 5 days agoMon, 10 Aug 2026 20:30:01 UTC | 0xa7ab…ff3f | IN | DexFiTreasury | $0.000 ETH | 0.00000393 | |
| 0xb93d6c…4da904 | claimTreasury | 32,224,440 | 6 days agoSun, 09 Aug 2026 20:30:01 UTC | 0xa7ab…ff3f | IN | DexFiTreasury | $0.000 ETH | 0.00000364 | |
| 0xfb4bea…60114b | claimTreasury | 31,362,035 | 7 days agoSat, 08 Aug 2026 20:30:01 UTC | 0xa7ab…ff3f | IN | DexFiTreasury | $0.000 ETH | 0.00000394 | |
| 0x3a50a6…259da5 | claimTreasury | 30,499,491 | 8 days agoFri, 07 Aug 2026 20:30:01 UTC | 0xa7ab…ff3f | IN | DexFiTreasury | $0.000 ETH | 0.00000395 | |
| 0xca700a…df1fd7 | claimTreasury | 29,637,118 | 9 days agoThu, 06 Aug 2026 20:30:01 UTC | 0xa7ab…ff3f | IN | DexFiTreasury | $0.000 ETH | 0.00000454 | |
| 0x399d73…7e8bc2 | claimTreasury | 28,774,674 | 10 days agoWed, 05 Aug 2026 20:30:01 UTC | 0xa7ab…ff3f | IN | DexFiTreasury | $0.000 ETH | 0.00000319 | |
| 0xb61570…fb40f8 | claimTreasury | 27,912,342 | 11 days agoTue, 04 Aug 2026 20:30:01 UTC | 0xa7ab…ff3f | IN | DexFiTreasury | $0.000 ETH | 0.00000293 | |
| 0x5024e5…0df4c8 | claimTreasury | 27,050,793 | 12 days agoMon, 03 Aug 2026 20:30:01 UTC | 0xa7ab…ff3f | IN | DexFiTreasury | $0.000 ETH | 0.00000276 | |
| 0x235ede…0e2133 | claimTreasury | 26,188,670 | 13 days agoSun, 02 Aug 2026 20:30:01 UTC | 0xa7ab…ff3f | IN | DexFiTreasury | $0.000 ETH | 0.00000265 | |
| 0x71a189…347cc0 | claimTreasury | 25,327,293 | 14 days agoSat, 01 Aug 2026 20:30:01 UTC | 0xa7ab…ff3f | IN | DexFiTreasury | $0.000 ETH | 0.00000272 | |
| 0xa4012b…27d806 | claimTreasury | 24,465,834 | 15 days agoFri, 31 Jul 2026 20:30:01 UTC | 0xa7ab…ff3f | IN | DexFiTreasury | $0.000 ETH | 0.00000272 | |
| 0x322f91…b7fdc5 | claimTreasury | 23,603,593 | 16 days agoThu, 30 Jul 2026 20:30:01 UTC | 0xa7ab…ff3f | IN | DexFiTreasury | $0.000 ETH | 0.00000303 | |
| 0x7e7c2c…ffda54 | claimTreasury | 22,741,998 | 17 days agoWed, 29 Jul 2026 20:30:01 UTC | 0xa7ab…ff3f | IN | DexFiTreasury | $0.000 ETH | 0.00000290 | |
| 0x9c0169…b04a14 | claimTreasury | 21,880,109 | 18 days agoTue, 28 Jul 2026 20:30:01 UTC | 0xa7ab…ff3f | IN | DexFiTreasury | $0.000 ETH | 0.00000416 | |
| 0x287a3a…d771d3 | claimTreasury | 21,019,053 | 19 days agoMon, 27 Jul 2026 20:30:01 UTC | 0xa7ab…ff3f | IN | DexFiTreasury | $0.000 ETH | 0.00000562 | |
| 0x0cd38f…ffb718 | claimTreasury | 20,159,062 | 20 days agoSun, 26 Jul 2026 20:30:01 UTC | 0xa7ab…ff3f | IN | DexFiTreasury | $0.000 ETH | 0.00000666 | |
| 0xaae4b5…c4ef46 | claimTreasury | 19,297,760 | 21 days agoSat, 25 Jul 2026 20:30:01 UTC | 0xa7ab…ff3f | IN | DexFiTreasury | $0.000 ETH | 0.00001096 | |
| 0x49a56f…846faa | claimTreasury | 18,437,205 | 22 days agoFri, 24 Jul 2026 20:30:01 UTC | 0xa7ab…ff3f | IN | DexFiTreasury | $0.000 ETH | 0.00001432 | |
| 0xca935d…ca5bf6 | claimTreasury | 17,575,829 | 23 days agoThu, 23 Jul 2026 20:30:01 UTC | 0xa7ab…ff3f | IN | DexFiTreasury | $0.000 ETH | 0.00001841 | |
| 0x98170f…f9c8f2 | claimTreasury | 16,713,905 | 24 days agoWed, 22 Jul 2026 20:30:01 UTC | 0xa7ab…ff3f | IN | DexFiTreasury | $0.000 ETH | 0.00001204 | |
| 0x0dc51e…dea758 | claimTreasury | 15,851,553 | 25 days agoTue, 21 Jul 2026 20:30:01 UTC | 0xa7ab…ff3f | IN | DexFiTreasury | $0.000 ETH | 0.00000941 |
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| 0xffa53c22…3227bf | Transfer | 37,105,378 | 13 hrs agoSat, 15 Aug 2026 12:13:03 UTC | 0x2dcd…91d8 | IN | 0xb56b…bd3f | 0.000000 WETH | WETH (WETH) | |
| 0x594007df…c657f5 | Transfer | 37,100,934 | 13 hrs agoSat, 15 Aug 2026 12:05:37 UTC | 0xa356…8bde | IN | 0xb56b…bd3f | 0.000054 WETH | WETH (WETH) | |
| 0x594007df…c657f5 | Transfer | 37,100,934 | 13 hrs agoSat, 15 Aug 2026 12:05:37 UTC | 0xd7c8…7a23 | IN | 0xb56b…bd3f | 0.006237 WETH | WETH (WETH) | |
| 0xa5aea21b…35bac4 | Transfer | 37,100,896 | 13 hrs agoSat, 15 Aug 2026 12:05:33 UTC | 0x1c24…0bfe | IN | 0xb56b…bd3f | 0.000137 WETH | WETH (WETH) | |
| 0xa5aea21b…35bac4 | Transfer | 37,100,896 | 13 hrs agoSat, 15 Aug 2026 12:05:33 UTC | 0xa700…3d39 | IN | 0xb56b…bd3f | 0.000033 WETH | WETH (WETH) | |
| 0xa5aea21b…35bac4 | Transfer | 37,100,896 | 13 hrs agoSat, 15 Aug 2026 12:05:33 UTC | 0xb8cf…8547 | IN | 0xb56b…bd3f | 0.000141 WETH | WETH (WETH) | |
| 0xa5aea21b…35bac4 | Transfer | 37,100,896 | 13 hrs agoSat, 15 Aug 2026 12:05:33 UTC | 0xc26d…088e | IN | 0xb56b…bd3f | 0.000184 WETH | WETH (WETH) | |
| 0xa5aea21b…35bac4 | Transfer | 37,100,896 | 13 hrs agoSat, 15 Aug 2026 12:05:33 UTC | 0x098c…0755 | IN | 0xb56b…bd3f | 0.000030 WETH | WETH (WETH) | |
| 0x95f5f1aa…ed1f98 | Transfer | 37,100,856 | 13 hrs agoSat, 15 Aug 2026 12:05:29 UTC | 0x95df…6d38 | IN | 0xb56b…bd3f | 0.000079 WETH | WETH (WETH) | |
| 0x95f5f1aa…ed1f98 | Transfer | 37,100,856 | 13 hrs agoSat, 15 Aug 2026 12:05:29 UTC | 0xe840…6d60 | IN | 0xb56b…bd3f | 0.000021 WETH | WETH (WETH) | |
| 0x95f5f1aa…ed1f98 | Transfer | 37,100,856 | 13 hrs agoSat, 15 Aug 2026 12:05:29 UTC | 0x12d5…3253 | IN | 0xb56b…bd3f | 0.000022 WETH | WETH (WETH) | |
| 0x95f5f1aa…ed1f98 | Transfer | 37,100,856 | 13 hrs agoSat, 15 Aug 2026 12:05:29 UTC | 0xea93…0284 | IN | 0xb56b…bd3f | 0.000038 WETH | WETH (WETH) | |
| 0x95f5f1aa…ed1f98 | Transfer | 37,100,856 | 13 hrs agoSat, 15 Aug 2026 12:05:29 UTC | 0xe7c1…4707 | IN | 0xb56b…bd3f | 0.000034 WETH | WETH (WETH) | |
| 0xcb26c2c5…db3a3c | Transfer | 37,100,813 | 13 hrs agoSat, 15 Aug 2026 12:05:25 UTC | 0xc1c0…0899 | IN | 0xb56b…bd3f | 0.000160 WETH | WETH (WETH) | |
| 0xcb26c2c5…db3a3c | Transfer | 37,100,813 | 13 hrs agoSat, 15 Aug 2026 12:05:25 UTC | 0x2dcd…91d8 | IN | 0xb56b…bd3f | 0.000245 WETH | WETH (WETH) | |
| 0xcb26c2c5…db3a3c | Transfer | 37,100,813 | 13 hrs agoSat, 15 Aug 2026 12:05:25 UTC | 0x825c…8a8d | IN | 0xb56b…bd3f | 0.000614 WETH | WETH (WETH) | |
| 0xcb26c2c5…db3a3c | Transfer | 37,100,813 | 13 hrs agoSat, 15 Aug 2026 12:05:25 UTC | 0x62b2…a9db | IN | 0xb56b…bd3f | 0.000052 WETH | WETH (WETH) | |
| 0xcb26c2c5…db3a3c | Transfer | 37,100,813 | 13 hrs agoSat, 15 Aug 2026 12:05:25 UTC | 0x849e…f6fe | IN | 0xb56b…bd3f | 0.000130 WETH | WETH (WETH) | |
| 0xc4cf4b65…77239b | Transfer | 37,100,763 | 13 hrs agoSat, 15 Aug 2026 12:05:20 UTC | 0x53fd…32fe | IN | 0xb56b…bd3f | 0.000039 WETH | WETH (WETH) | |
| 0xdbd3f39b…f826e8 | Transfer | 37,065,048 | 14 hrs agoSat, 15 Aug 2026 11:05:35 UTC | 0x1cf3…1309 | IN | 0xb56b…bd3f | 0.000024 WETH | WETH (WETH) | |
| 0xdbd3f39b…f826e8 | Transfer | 37,065,048 | 14 hrs agoSat, 15 Aug 2026 11:05:35 UTC | 0x5f0b…5bff | IN | 0xb56b…bd3f | 0.000035 WETH | WETH (WETH) | |
| 0xdbd3f39b…f826e8 | Transfer | 37,065,048 | 14 hrs agoSat, 15 Aug 2026 11:05:35 UTC | 0x098c…0755 | IN | 0xb56b…bd3f | 0.000146 WETH | WETH (WETH) | |
| 0xdbd3f39b…f826e8 | Transfer | 37,065,048 | 14 hrs agoSat, 15 Aug 2026 11:05:35 UTC | 0x62b2…a9db | IN | 0xb56b…bd3f | 0.000194 WETH | WETH (WETH) | |
| 0x330ab426…cb1a6b | Transfer | 37,065,008 | 14 hrs agoSat, 15 Aug 2026 11:05:31 UTC | 0xa700…3d39 | IN | 0xb56b…bd3f | 0.000159 WETH | WETH (WETH) | |
| 0x330ab426…cb1a6b | Transfer | 37,065,008 | 14 hrs agoSat, 15 Aug 2026 11:05:31 UTC | 0xca50…2224 | IN | 0xb56b…bd3f | 0.000069 WETH | WETH (WETH) |
| Transaction Hash | Method | Block | Age | From | To | Type | Item | ||
|---|---|---|---|---|---|---|---|---|---|
| no NFT transfers for this address yet | |||||||||