// SPDX-License-Identifier: MIT
pragma solidity 0.8.26;
import {IPoolManager} from "v4-core/interfaces/IPoolManager.sol";
import {Currency} from "v4-core/types/Currency.sol";
import {PoolKey} from "v4-core/types/PoolKey.sol";
import {PoolId, PoolIdLibrary} from "v4-core/types/PoolId.sol";
import {StateLibrary} from "v4-core/libraries/StateLibrary.sol";
import {FullMath} from "v4-core/libraries/FullMath.sol";
import {FixedPoint96} from "v4-core/libraries/FixedPoint96.sol";
import {BPS, VaultParams} from "./Params.sol";
import {IParamRegistry} from "./interfaces/ILoxley.sol";
/// @notice Clamped-EMA price feed for every token the vault touches, sourced from the token's
/// v4 pool against USDG. Prices are USDG-wei (6 decimals) per whole token (1e18 raw units).
/// Anyone can update; each update moves the EMA at most emaMaxStepBps, so a single-block spot
/// manipulation cannot swing the value the buyback crank triggers on. The feed's pool doubles
/// as the VaultManager's swap route — one timelocked source of truth per token.
///
/// ETH uses the pseudo-token address(0) with the canonical ETH/USDG pool.
contract MarkOracle {
using PoolIdLibrary for PoolKey;
using StateLibrary for IPoolManager;
uint256 public constant TIMELOCK = 48 hours;
struct Feed {
PoolKey key;
bool tokenIsCurrency0;
bool exists;
uint128 ema; // USDG-wei per whole token
uint64 lastUpdate;
}
struct PendingFeed {
PoolKey key;
bool tokenIsCurrency0;
uint64 eta;
}
IPoolManager public immutable poolManager;
IParamRegistry public immutable registry;
bool public feedsLocked;
mapping(address token => Feed) internal _feeds;
mapping(address token => PendingFeed) internal _pending;
event FeedSet(address indexed token, PoolId indexed poolId, bool tokenIsCurrency0);
event FeedQueued(address indexed token, PoolId indexed poolId, uint64 eta);
event Updated(address indexed token, uint256 spot, uint256 ema);
error NotAuthorized();
error FeedMissing();
error NothingQueued();
error TimelockNotElapsed();
error PoolMismatch();
error CounterassetMismatch();
error PoolNotLive();
constructor(address poolManager_, address registry_) {
poolManager = IPoolManager(poolManager_);
registry = IParamRegistry(registry_);
}
// ------------------------------------------------------------------
// feed governance: the ParamRegistry owner (deployer at genesis, the
// governance multisig once it accepts ownership) sets genesis feeds,
// then locks; all later changes wait out the 48h timelock
// ------------------------------------------------------------------
function setFeed(address token, PoolKey calldata key, bool tokenIsCurrency0) external {
if (msg.sender != registry.owner() || feedsLocked) revert NotAuthorized();
_installFeed(token, key, tokenIsCurrency0);
}
function lockFeeds() external {
if (msg.sender != registry.owner()) revert NotAuthorized();
feedsLocked = true;
}
function queueFeed(address token, PoolKey calldata key, bool tokenIsCurrency0) external {
if (msg.sender != registry.owner()) revert NotAuthorized();
_validateFeed(token, key, tokenIsCurrency0);
_pending[token] = PendingFeed(key, tokenIsCurrency0, uint64(block.timestamp + TIMELOCK));
emit FeedQueued(token, key.toId(), _pending[token].eta);
}
function applyFeed(address token) external {
PendingFeed memory p = _pending[token];
if (p.eta == 0) revert NothingQueued();
if (block.timestamp < p.eta) revert TimelockNotElapsed();
_installFeed(token, p.key, p.tokenIsCurrency0);
delete _pending[token];
}
// ------------------------------------------------------------------
// pricing
// ------------------------------------------------------------------
function hasFeed(address token) external view returns (bool) {
return _feeds[token].exists;
}
function feedOf(address token) external view returns (PoolKey memory key, bool tokenIsCurrency0) {
Feed storage f = _feeds[token];
if (!f.exists) revert FeedMissing();
return (f.key, f.tokenIsCurrency0);
}
/// @notice Current pool spot, USDG-wei per whole token.
function spotOf(address token) public view returns (uint256) {
Feed storage f = _feeds[token];
if (!f.exists) revert FeedMissing();
(uint160 sqrtPriceX96,,,) = poolManager.getSlot0(f.key.toId());
if (f.tokenIsCurrency0) {
// price = currency1 per currency0 = USDG per token: (sqrtP^2 / 2^192) * 1e18
uint256 num = FullMath.mulDiv(sqrtPriceX96, sqrtPriceX96, FixedPoint96.Q96);
return FullMath.mulDiv(num, 1e18, FixedPoint96.Q96);
} else {
// token is currency1: invert
uint256 num = FullMath.mulDiv(FixedPoint96.Q96, FixedPoint96.Q96, sqrtPriceX96);
return FullMath.mulDiv(num, 1e18, sqrtPriceX96);
}
}
function emaOf(address token) external view returns (uint256) {
Feed storage f = _feeds[token];
if (!f.exists) revert FeedMissing();
return f.ema == 0 ? spotOf(token) : f.ema;
}
/// @notice Fold the current spot into the EMA. Permissionless; the clamp bounds every
/// update to emaMaxStepBps regardless of how hard spot was pushed this block.
function update(address token) external returns (uint256) {
Feed storage f = _feeds[token];
if (!f.exists) revert FeedMissing();
uint256 spot = spotOf(token);
if (f.ema == 0) {
f.ema = uint128(_min(spot, type(uint128).max));
f.lastUpdate = uint64(block.timestamp);
emit Updated(token, spot, f.ema);
return f.ema;
}
uint256 elapsed = block.timestamp - f.lastUpdate;
if (elapsed == 0) return f.ema;
VaultParams memory vp = registry.getVaultParams();
// linear approximation of exponential decay, capped at half-way per update
uint256 ema = f.ema;
uint256 window = elapsed >= vp.emaHalfLife ? vp.emaHalfLife : elapsed;
uint256 move;
if (spot > ema) {
move = (spot - ema) * window / (uint256(vp.emaHalfLife) * 2);
uint256 cap = ema * vp.emaMaxStepBps / BPS;
if (move > cap) move = cap;
ema += move;
} else {
move = (ema - spot) * window / (uint256(vp.emaHalfLife) * 2);
uint256 cap = ema * vp.emaMaxStepBps / BPS;
if (move > cap) move = cap;
ema -= move;
}
f.ema = uint128(_min(ema, type(uint128).max));
f.lastUpdate = uint64(block.timestamp);
emit Updated(token, spot, f.ema);
return f.ema;
}
function _min(uint256 a, uint256 b) private pure returns (uint256) {
return a < b ? a : b;
}
function _installFeed(address token, PoolKey memory key, bool tokenIsCurrency0) internal {
_validateFeed(token, key, tokenIsCurrency0);
_feeds[token] = Feed(key, tokenIsCurrency0, true, 0, 0);
emit FeedSet(token, key.toId(), tokenIsCurrency0);
uint256 spot = spotOf(token);
if (spot == 0) revert PoolNotLive();
Feed storage f = _feeds[token];
f.ema = uint128(_min(spot, type(uint128).max));
f.lastUpdate = uint64(block.timestamp);
emit Updated(token, spot, f.ema);
}
function _validateFeed(address token, PoolKey memory key, bool tokenIsCurrency0) internal view {
address c0 = Currency.unwrap(key.currency0);
address c1 = Currency.unwrap(key.currency1);
if (tokenIsCurrency0 ? c0 != token : c1 != token) revert PoolMismatch();
address counter = tokenIsCurrency0 ? c1 : c0;
address expectedCounter = _expectedCounterasset(token);
if (expectedCounter != address(0) && counter != expectedCounter) revert CounterassetMismatch();
(uint160 sqrtPriceX96,,,) = poolManager.getSlot0(key.toId());
if (sqrtPriceX96 == 0) revert PoolNotLive();
}
function _expectedCounterasset(address token) internal view returns (address) {
Feed storage ethFeed = _feeds[address(0)];
if (!ethFeed.exists) return address(0);
address c0 = Currency.unwrap(ethFeed.key.currency0);
address c1 = Currency.unwrap(ethFeed.key.currency1);
address ethCounter = ethFeed.tokenIsCurrency0 ? c1 : c0;
if (token == address(0)) return ethCounter;
return ethCounter;
}
}[
{
"type": "constructor",
"inputs": [
{
"name": "poolManager_",
"type": "address",
"internalType": "address"
},
{
"name": "registry_",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "nonpayable"
},
{
"name": "CounterassetMismatch",
"type": "error",
"inputs": []
},
{
"name": "FeedMissing",
"type": "error",
"inputs": []
},
{
"name": "NotAuthorized",
"type": "error",
"inputs": []
},
{
"name": "NothingQueued",
"type": "error",
"inputs": []
},
{
"name": "PoolMismatch",
"type": "error",
"inputs": []
},
{
"name": "PoolNotLive",
"type": "error",
"inputs": []
},
{
"name": "TimelockNotElapsed",
"type": "error",
"inputs": []
},
{
"name": "FeedQueued",
"type": "event",
"inputs": [
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "poolId",
"type": "bytes32",
"indexed": true,
"internalType": "PoolId"
},
{
"name": "eta",
"type": "uint64",
"indexed": false,
"internalType": "uint64"
}
],
"anonymous": false
},
{
"name": "FeedSet",
"type": "event",
"inputs": [
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "poolId",
"type": "bytes32",
"indexed": true,
"internalType": "PoolId"
},
{
"name": "tokenIsCurrency0",
"type": "bool",
"indexed": false,
"internalType": "bool"
}
],
"anonymous": false
},
{
"name": "Updated",
"type": "event",
"inputs": [
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "spot",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "ema",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "TIMELOCK",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "applyFeed",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "emaOf",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "feedOf",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "key",
"type": "tuple",
"components": [
{
"name": "currency0",
"type": "address",
"internalType": "Currency"
},
{
"name": "currency1",
"type": "address",
"internalType": "Currency"
},
{
"name": "fee",
"type": "uint24",
"internalType": "uint24"
},
{
"name": "tickSpacing",
"type": "int24",
"internalType": "int24"
},
{
"name": "hooks",
"type": "address",
"internalType": "contract IHooks"
}
],
"internalType": "struct PoolKey"
},
{
"name": "tokenIsCurrency0",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "feedsLocked",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "hasFeed",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "lockFeeds",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "poolManager",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract IPoolManager"
}
],
"stateMutability": "view"
},
{
"name": "queueFeed",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
},
{
"name": "key",
"type": "tuple",
"components": [
{
"name": "currency0",
"type": "address",
"internalType": "Currency"
},
{
"name": "currency1",
"type": "address",
"internalType": "Currency"
},
{
"name": "fee",
"type": "uint24",
"internalType": "uint24"
},
{
"name": "tickSpacing",
"type": "int24",
"internalType": "int24"
},
{
"name": "hooks",
"type": "address",
"internalType": "contract IHooks"
}
],
"internalType": "struct PoolKey"
},
{
"name": "tokenIsCurrency0",
"type": "bool",
"internalType": "bool"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "registry",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract IParamRegistry"
}
],
"stateMutability": "view"
},
{
"name": "setFeed",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
},
{
"name": "key",
"type": "tuple",
"components": [
{
"name": "currency0",
"type": "address",
"internalType": "Currency"
},
{
"name": "currency1",
"type": "address",
"internalType": "Currency"
},
{
"name": "fee",
"type": "uint24",
"internalType": "uint24"
},
{
"name": "tickSpacing",
"type": "int24",
"internalType": "int24"
},
{
"name": "hooks",
"type": "address",
"internalType": "contract IHooks"
}
],
"internalType": "struct PoolKey"
},
{
"name": "tokenIsCurrency0",
"type": "bool",
"internalType": "bool"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "spotOf",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "update",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "nonpayable"
}
]0x60c0604052348015600e575f80fd5b5060405161195d38038061195d833981016040819052602b91605b565b6001600160a01b039182166080521660a0526087565b80516001600160a01b03811681146056575f80fd5b919050565b5f8060408385031215606b575f80fd5b6072836041565b9150607e602084016041565b90509250929050565b60805160a0516118926100cb5f395f81816102000152818161040a01528181610905015281816109c40152610e3b01525f81816102650152610d7301526118925ff3fe608060405234801561000f575f80fd5b50600436106100da575f3560e01c8063653c3c5d1161008857806391b396471161006357806391b396471461023a5780639aa06f2f1461024d578063dc4c90d314610260578063e87882cb14610287575f80fd5b8063653c3c5d146101de5780637aadef8b146101f15780637b103999146101fb575f80fd5b80635304c572116100b85780635304c572146101b55780635a34a0fc146101ca57806362b88334146101d6575f80fd5b80630268d379146100de5780631c1b8772146101265780634b45e8a614610147575b5f80fd5b6101116100ec366004611562565b6001600160a01b03165f90815260016020526040902060030154610100900460ff1690565b60405190151581526020015b60405180910390f35b610139610134366004611562565b61029a565b60405190815260200161011d565b61015a610155366004611562565b61068d565b60405161011d92919082516001600160a01b03908116825260208085015182169083015260408085015162ffffff169083015260608085015160020b908301526080938401511692810192909252151560a082015260c00190565b6101c86101c3366004611562565b610760565b005b5f546101119060ff1681565b6101c8610903565b6101c86101ec36600461157d565b6109c2565b6101396202a30081565b6102227f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161011d565b610139610248366004611562565b610c46565b61013961025b366004611562565b610cc9565b6102227f000000000000000000000000000000000000000000000000000000000000000081565b6101c861029536600461157d565b610e39565b6001600160a01b0381165f9081526001602052604081206003810154610100900460ff166102db576040516308c098a760e01b815260040160405180910390fd5b5f6102e584610cc9565b60038301549091506201000090046001600160801b03165f036103c157610313816001600160801b03610f16565b60038301805462010000600160d01b031916620100006001600160801b03938416810267ffffffffffffffff60901b191691909117600160901b4267ffffffffffffffff16021791829055604080518581529190920490921660208301526001600160a01b038616917f99cc044fd36aeecc372e0e5efa3b9fb561c7bd355a7c7de464a05776716b1476910160405180910390a250600301546201000090046001600160801b031692915050565b60038201545f906103e390600160901b900467ffffffffffffffff16426115e6565b9050805f03610407575050600301546201000090046001600160801b031692915050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166388bb4f606040518163ffffffff1660e01b815260040161016060405180830381865afa158015610465573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610489919061169d565b60038501546101008201519192506201000090046001600160801b0316905f9063ffffffff168410156104bc57836104c9565b82610100015163ffffffff165b90505f8286111561054f576101008401516104eb9063ffffffff16600261177a565b826104f685896115e6565b610500919061177a565b61050a9190611791565b90505f61271085610120015161ffff1685610525919061177a565b61052f9190611791565b90508082111561053d578091505b61054782856117b0565b9350506105c6565b6101008401516105669063ffffffff16600261177a565b8261057188866115e6565b61057b919061177a565b6105859190611791565b90505f61271085610120015161ffff16856105a0919061177a565b6105aa9190611791565b9050808211156105b8578091505b6105c282856115e6565b9350505b6105d7836001600160801b03610f16565b60038801805462010000600160d01b031916620100006001600160801b03938416810267ffffffffffffffff60901b191691909117600160901b4267ffffffffffffffff16021791829055604080518a81529190920490921660208301526001600160a01b038b16917f99cc044fd36aeecc372e0e5efa3b9fb561c7bd355a7c7de464a05776716b1476910160405180910390a25050506003909301546001600160801b03620100009091041695945050505050565b6040805160a0810182525f808252602082018190529181018290526060810182905260808101919091526001600160a01b0382165f9081526001602052604081206003810154610100900460ff166106f8576040516308c098a760e01b815260040160405180910390fd5b60038101546040805160a08101825283546001600160a01b0390811682526001850154808216602084015262ffffff600160a01b82041693830193909352600160b81b909204600290810b606083015290930154166080830152909460ff9091169350915050565b6001600160a01b038181165f9081526002602081815260408084208151610100808201845282548816606083019081526001840154808a166080850152600160a01b810462ffffff1660a0850152600160b81b9004870b60c08401529583015490971660e08201529384526003015460ff811615159284019290925293900467ffffffffffffffff16928101839052919003610828576040517f05102b0400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806040015167ffffffffffffffff16421015610870576040517f6677a59600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61088282825f01518360200151610f2f565b506001600160a01b03165f908152600260208190526040909120805473ffffffffffffffffffffffffffffffffffffffff1990811682556001820180547fffffffffffff00000000000000000000000000000000000000000000000000001690559181018054909216909155600301805468ffffffffffffffffff19169055565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561095f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061098391906117c3565b6001600160a01b0316336001600160a01b0316146109b45760405163ea8e4eb560e01b815260040160405180910390fd5b5f805460ff19166001179055565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a1e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a4291906117c3565b6001600160a01b0316336001600160a01b031614610a735760405163ea8e4eb560e01b815260040160405180910390fd5b610a8c83610a86368590038501856117e9565b836111c8565b604051806060016040528083803603810190610aa891906117e9565b81528215156020820152604001610ac26202a300426117b0565b67ffffffffffffffff9081169091526001600160a01b038581165f9081526002602081815260409283902086518051825473ffffffffffffffffffffffffffffffffffffffff1990811691881691909117835581840151600184018054848901516060860151938b1676ffffffffffffffffffffffffffffffffffffffffffffff1990921691909117600160a01b62ffffff928316021762ffffff60b81b1916600160b81b9190931602919091179055608090910151938201805490911693909516929092179093559184015160039092018054949091015168ffffffffffffffffff1990941691151568ffffffffffffffff001916919091176101009390921692909202179055610be3610bdc368490038401846117e9565b60a0902090565b6001600160a01b0384165f8181526002602090815260409182902060030154915161010090920467ffffffffffffffff1682527fb261e5d0c7d3f7e94e922be529b3d186b7100f6cecca90b49aa0c04114de73af910160405180910390a3505050565b6001600160a01b0381165f9081526001602052604081206003810154610100900460ff16610c87576040516308c098a760e01b815260040160405180910390fd5b60038101546201000090046001600160801b031615610cb95760038101546201000090046001600160801b0316610cc2565b610cc283610cc9565b9392505050565b6001600160a01b0381165f9081526001602052604081206003810154610100900460ff16610d0a576040516308c098a760e01b815260040160405180910390fd5b6040805160a0808201835283546001600160a01b03908116835260018501548082166020850152600160a01b810462ffffff1694840194909452600160b81b909304600290810b60608401528401549092166080820152205f90610d99905b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690611301565b505050600383015490915060ff1615610df9575f610dce6001600160a01b038316806c010000000000000000000000006113cc565b9050610df081670de0b6b3a76400006c010000000000000000000000006113cc565b95945050505050565b5f610e1b6c0100000000000000000000000080846001600160a01b03166113cc565b9050610df081670de0b6b3a7640000846001600160a01b03166113cc565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e95573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eb991906117c3565b6001600160a01b0316336001600160a01b0316141580610eda57505f5460ff165b15610ef85760405163ea8e4eb560e01b815260040160405180910390fd5b610f1183610f0b368590038501856117e9565b83610f2f565b505050565b5f818310610f245781610f26565b825b90505b92915050565b610f3a8383836111c8565b6040805160a08082018352848252831515602080840191825260018486018181525f60608088018281526080808a018481526001600160a01b038f81168652878952948c90209a5180518c5473ffffffffffffffffffffffffffffffffffffffff19908116918816919091178d5598810151978c0180549d8201519582015198871676ffffffffffffffffffffffffffffffffffffffffffffff19909e169d909d17600160a01b62ffffff968716021762ffffff60b81b1916600160b81b959098169490940296909617909a5598015160028801805490951691161790925591516003909401805491519551925161ffff1990921694151561ff00191694909417610100951515959095029490941762010000600160d01b031916620100006001600160801b039092169190910267ffffffffffffffff60901b191617600160901b67ffffffffffffffff909416939093029290921790558220836001600160a01b03167f231f4f98865426ac0b9c162a32f8a904d8ec285c672e94579978924822c9281a836040516110d1911515815260200190565b60405180910390a35f6110e384610cc9565b9050805f03611105576040516301825b9960e01b815260040160405180910390fd5b6001600160a01b0384165f90815260016020526040902061112d826001600160801b03610f16565b60038201805462010000600160d01b031916620100006001600160801b03938416810267ffffffffffffffff60901b191691909117600160901b4267ffffffffffffffff16021791829055604080518681529190920490921660208301526001600160a01b038716917f99cc044fd36aeecc372e0e5efa3b9fb561c7bd355a7c7de464a05776716b1476910160405180910390a25050505050565b81516020830151826111ef57846001600160a01b0316816001600160a01b03161415611206565b846001600160a01b0316826001600160a01b031614155b1561123d576040517feab28cb400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83611249578261124b565b815b90505f61125787611468565b90506001600160a01b038116158015906112835750806001600160a01b0316826001600160a01b031614155b156112ba576040517f03b12abe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6112c9610d698860a0902090565b5050509050806001600160a01b03165f036112f7576040516301825b9960e01b815260040160405180910390fd5b5050505050505050565b5f805f805f61130f8661150f565b6040517f1e2eaeaf000000000000000000000000000000000000000000000000000000008152600481018290529091505f906001600160a01b03891690631e2eaeaf90602401602060405180830381865afa158015611370573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611394919061186e565b90506001600160a01b03811695508060a01c60020b945062ffffff8160b81c16935062ffffff8160d01c169250505092959194509250565b5f838302815f19858709828110838203039150508084116113eb575f80fd5b805f036113fd57508290049050610cc2565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f80805260016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb4c547fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb4990610100900460ff166114c957505f92915050565b8054600182015460038301546001600160a01b0392831692909116905f9060ff166114f457826114f6565b815b90506001600160a01b038616610df05795945050505050565b6040515f9061152e908390600690602001918252602082015260400190565b604051602081830303815290604052805190602001209050919050565b6001600160a01b038116811461155f575f80fd5b50565b5f60208284031215611572575f80fd5b8135610cc28161154b565b5f805f83850360e0811215611590575f80fd5b843561159b8161154b565b935060a0601f19820112156115ae575f80fd5b5060208401915060c084013580151581146115c7575f80fd5b809150509250925092565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610f2957610f296115d2565b604051610160810167ffffffffffffffff8111828210171561162957634e487b7160e01b5f52604160045260245ffd5b60405290565b60405160a0810167ffffffffffffffff8111828210171561162957634e487b7160e01b5f52604160045260245ffd5b80516001600160801b0381168114611674575f80fd5b919050565b805163ffffffff81168114611674575f80fd5b805161ffff81168114611674575f80fd5b5f6101608284031280156116af575f80fd5b506116b86115f9565b6116c18361165e565b81526116cf6020840161165e565b60208201526116e060408401611679565b60408201526116f16060840161165e565b60608201526117026080840161168c565b608082015261171360a0840161168c565b60a082015261172460c0840161168c565b60c082015261173560e0840161165e565b60e08201526117476101008401611679565b61010082015261175a610120840161168c565b61012082015261176d610140840161168c565b6101408201529392505050565b8082028115828204841417610f2957610f296115d2565b5f826117ab57634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115610f2957610f296115d2565b5f602082840312156117d3575f80fd5b8151610cc28161154b565b80356116748161154b565b5f60a08284031280156117fa575f80fd5b5061180361162f565b823561180e8161154b565b8152602083013561181e8161154b565b6020820152604083013562ffffff81168114611838575f80fd5b60408201526060830135600281900b8114611851575f80fd5b6060820152611862608084016117de565b60808201529392505050565b5f6020828403121561187e575f80fd5b505191905056fea164736f6c634300081a000a0000000000000000000000008366a39cc670b4001a1121b8f6a443a643e409510000000000000000000000002a4223b9c448e29594ca88dbf29b8cae11033956
0x608060405234801561000f575f80fd5b50600436106100da575f3560e01c8063653c3c5d1161008857806391b396471161006357806391b396471461023a5780639aa06f2f1461024d578063dc4c90d314610260578063e87882cb14610287575f80fd5b8063653c3c5d146101de5780637aadef8b146101f15780637b103999146101fb575f80fd5b80635304c572116100b85780635304c572146101b55780635a34a0fc146101ca57806362b88334146101d6575f80fd5b80630268d379146100de5780631c1b8772146101265780634b45e8a614610147575b5f80fd5b6101116100ec366004611562565b6001600160a01b03165f90815260016020526040902060030154610100900460ff1690565b60405190151581526020015b60405180910390f35b610139610134366004611562565b61029a565b60405190815260200161011d565b61015a610155366004611562565b61068d565b60405161011d92919082516001600160a01b03908116825260208085015182169083015260408085015162ffffff169083015260608085015160020b908301526080938401511692810192909252151560a082015260c00190565b6101c86101c3366004611562565b610760565b005b5f546101119060ff1681565b6101c8610903565b6101c86101ec36600461157d565b6109c2565b6101396202a30081565b6102227f0000000000000000000000002a4223b9c448e29594ca88dbf29b8cae1103395681565b6040516001600160a01b03909116815260200161011d565b610139610248366004611562565b610c46565b61013961025b366004611562565b610cc9565b6102227f0000000000000000000000008366a39cc670b4001a1121b8f6a443a643e4095181565b6101c861029536600461157d565b610e39565b6001600160a01b0381165f9081526001602052604081206003810154610100900460ff166102db576040516308c098a760e01b815260040160405180910390fd5b5f6102e584610cc9565b60038301549091506201000090046001600160801b03165f036103c157610313816001600160801b03610f16565b60038301805462010000600160d01b031916620100006001600160801b03938416810267ffffffffffffffff60901b191691909117600160901b4267ffffffffffffffff16021791829055604080518581529190920490921660208301526001600160a01b038616917f99cc044fd36aeecc372e0e5efa3b9fb561c7bd355a7c7de464a05776716b1476910160405180910390a250600301546201000090046001600160801b031692915050565b60038201545f906103e390600160901b900467ffffffffffffffff16426115e6565b9050805f03610407575050600301546201000090046001600160801b031692915050565b5f7f0000000000000000000000002a4223b9c448e29594ca88dbf29b8cae110339566001600160a01b03166388bb4f606040518163ffffffff1660e01b815260040161016060405180830381865afa158015610465573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610489919061169d565b60038501546101008201519192506201000090046001600160801b0316905f9063ffffffff168410156104bc57836104c9565b82610100015163ffffffff165b90505f8286111561054f576101008401516104eb9063ffffffff16600261177a565b826104f685896115e6565b610500919061177a565b61050a9190611791565b90505f61271085610120015161ffff1685610525919061177a565b61052f9190611791565b90508082111561053d578091505b61054782856117b0565b9350506105c6565b6101008401516105669063ffffffff16600261177a565b8261057188866115e6565b61057b919061177a565b6105859190611791565b90505f61271085610120015161ffff16856105a0919061177a565b6105aa9190611791565b9050808211156105b8578091505b6105c282856115e6565b9350505b6105d7836001600160801b03610f16565b60038801805462010000600160d01b031916620100006001600160801b03938416810267ffffffffffffffff60901b191691909117600160901b4267ffffffffffffffff16021791829055604080518a81529190920490921660208301526001600160a01b038b16917f99cc044fd36aeecc372e0e5efa3b9fb561c7bd355a7c7de464a05776716b1476910160405180910390a25050506003909301546001600160801b03620100009091041695945050505050565b6040805160a0810182525f808252602082018190529181018290526060810182905260808101919091526001600160a01b0382165f9081526001602052604081206003810154610100900460ff166106f8576040516308c098a760e01b815260040160405180910390fd5b60038101546040805160a08101825283546001600160a01b0390811682526001850154808216602084015262ffffff600160a01b82041693830193909352600160b81b909204600290810b606083015290930154166080830152909460ff9091169350915050565b6001600160a01b038181165f9081526002602081815260408084208151610100808201845282548816606083019081526001840154808a166080850152600160a01b810462ffffff1660a0850152600160b81b9004870b60c08401529583015490971660e08201529384526003015460ff811615159284019290925293900467ffffffffffffffff16928101839052919003610828576040517f05102b0400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806040015167ffffffffffffffff16421015610870576040517f6677a59600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61088282825f01518360200151610f2f565b506001600160a01b03165f908152600260208190526040909120805473ffffffffffffffffffffffffffffffffffffffff1990811682556001820180547fffffffffffff00000000000000000000000000000000000000000000000000001690559181018054909216909155600301805468ffffffffffffffffff19169055565b7f0000000000000000000000002a4223b9c448e29594ca88dbf29b8cae110339566001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561095f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061098391906117c3565b6001600160a01b0316336001600160a01b0316146109b45760405163ea8e4eb560e01b815260040160405180910390fd5b5f805460ff19166001179055565b7f0000000000000000000000002a4223b9c448e29594ca88dbf29b8cae110339566001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a1e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a4291906117c3565b6001600160a01b0316336001600160a01b031614610a735760405163ea8e4eb560e01b815260040160405180910390fd5b610a8c83610a86368590038501856117e9565b836111c8565b604051806060016040528083803603810190610aa891906117e9565b81528215156020820152604001610ac26202a300426117b0565b67ffffffffffffffff9081169091526001600160a01b038581165f9081526002602081815260409283902086518051825473ffffffffffffffffffffffffffffffffffffffff1990811691881691909117835581840151600184018054848901516060860151938b1676ffffffffffffffffffffffffffffffffffffffffffffff1990921691909117600160a01b62ffffff928316021762ffffff60b81b1916600160b81b9190931602919091179055608090910151938201805490911693909516929092179093559184015160039092018054949091015168ffffffffffffffffff1990941691151568ffffffffffffffff001916919091176101009390921692909202179055610be3610bdc368490038401846117e9565b60a0902090565b6001600160a01b0384165f8181526002602090815260409182902060030154915161010090920467ffffffffffffffff1682527fb261e5d0c7d3f7e94e922be529b3d186b7100f6cecca90b49aa0c04114de73af910160405180910390a3505050565b6001600160a01b0381165f9081526001602052604081206003810154610100900460ff16610c87576040516308c098a760e01b815260040160405180910390fd5b60038101546201000090046001600160801b031615610cb95760038101546201000090046001600160801b0316610cc2565b610cc283610cc9565b9392505050565b6001600160a01b0381165f9081526001602052604081206003810154610100900460ff16610d0a576040516308c098a760e01b815260040160405180910390fd5b6040805160a0808201835283546001600160a01b03908116835260018501548082166020850152600160a01b810462ffffff1694840194909452600160b81b909304600290810b60608401528401549092166080820152205f90610d99905b6001600160a01b037f0000000000000000000000008366a39cc670b4001a1121b8f6a443a643e409511690611301565b505050600383015490915060ff1615610df9575f610dce6001600160a01b038316806c010000000000000000000000006113cc565b9050610df081670de0b6b3a76400006c010000000000000000000000006113cc565b95945050505050565b5f610e1b6c0100000000000000000000000080846001600160a01b03166113cc565b9050610df081670de0b6b3a7640000846001600160a01b03166113cc565b7f0000000000000000000000002a4223b9c448e29594ca88dbf29b8cae110339566001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e95573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eb991906117c3565b6001600160a01b0316336001600160a01b0316141580610eda57505f5460ff165b15610ef85760405163ea8e4eb560e01b815260040160405180910390fd5b610f1183610f0b368590038501856117e9565b83610f2f565b505050565b5f818310610f245781610f26565b825b90505b92915050565b610f3a8383836111c8565b6040805160a08082018352848252831515602080840191825260018486018181525f60608088018281526080808a018481526001600160a01b038f81168652878952948c90209a5180518c5473ffffffffffffffffffffffffffffffffffffffff19908116918816919091178d5598810151978c0180549d8201519582015198871676ffffffffffffffffffffffffffffffffffffffffffffff19909e169d909d17600160a01b62ffffff968716021762ffffff60b81b1916600160b81b959098169490940296909617909a5598015160028801805490951691161790925591516003909401805491519551925161ffff1990921694151561ff00191694909417610100951515959095029490941762010000600160d01b031916620100006001600160801b039092169190910267ffffffffffffffff60901b191617600160901b67ffffffffffffffff909416939093029290921790558220836001600160a01b03167f231f4f98865426ac0b9c162a32f8a904d8ec285c672e94579978924822c9281a836040516110d1911515815260200190565b60405180910390a35f6110e384610cc9565b9050805f03611105576040516301825b9960e01b815260040160405180910390fd5b6001600160a01b0384165f90815260016020526040902061112d826001600160801b03610f16565b60038201805462010000600160d01b031916620100006001600160801b03938416810267ffffffffffffffff60901b191691909117600160901b4267ffffffffffffffff16021791829055604080518681529190920490921660208301526001600160a01b038716917f99cc044fd36aeecc372e0e5efa3b9fb561c7bd355a7c7de464a05776716b1476910160405180910390a25050505050565b81516020830151826111ef57846001600160a01b0316816001600160a01b03161415611206565b846001600160a01b0316826001600160a01b031614155b1561123d576040517feab28cb400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83611249578261124b565b815b90505f61125787611468565b90506001600160a01b038116158015906112835750806001600160a01b0316826001600160a01b031614155b156112ba576040517f03b12abe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6112c9610d698860a0902090565b5050509050806001600160a01b03165f036112f7576040516301825b9960e01b815260040160405180910390fd5b5050505050505050565b5f805f805f61130f8661150f565b6040517f1e2eaeaf000000000000000000000000000000000000000000000000000000008152600481018290529091505f906001600160a01b03891690631e2eaeaf90602401602060405180830381865afa158015611370573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611394919061186e565b90506001600160a01b03811695508060a01c60020b945062ffffff8160b81c16935062ffffff8160d01c169250505092959194509250565b5f838302815f19858709828110838203039150508084116113eb575f80fd5b805f036113fd57508290049050610cc2565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f80805260016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb4c547fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb4990610100900460ff166114c957505f92915050565b8054600182015460038301546001600160a01b0392831692909116905f9060ff166114f457826114f6565b815b90506001600160a01b038616610df05795945050505050565b6040515f9061152e908390600690602001918252602082015260400190565b604051602081830303815290604052805190602001209050919050565b6001600160a01b038116811461155f575f80fd5b50565b5f60208284031215611572575f80fd5b8135610cc28161154b565b5f805f83850360e0811215611590575f80fd5b843561159b8161154b565b935060a0601f19820112156115ae575f80fd5b5060208401915060c084013580151581146115c7575f80fd5b809150509250925092565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610f2957610f296115d2565b604051610160810167ffffffffffffffff8111828210171561162957634e487b7160e01b5f52604160045260245ffd5b60405290565b60405160a0810167ffffffffffffffff8111828210171561162957634e487b7160e01b5f52604160045260245ffd5b80516001600160801b0381168114611674575f80fd5b919050565b805163ffffffff81168114611674575f80fd5b805161ffff81168114611674575f80fd5b5f6101608284031280156116af575f80fd5b506116b86115f9565b6116c18361165e565b81526116cf6020840161165e565b60208201526116e060408401611679565b60408201526116f16060840161165e565b60608201526117026080840161168c565b608082015261171360a0840161168c565b60a082015261172460c0840161168c565b60c082015261173560e0840161165e565b60e08201526117476101008401611679565b61010082015261175a610120840161168c565b61012082015261176d610140840161168c565b6101408201529392505050565b8082028115828204841417610f2957610f296115d2565b5f826117ab57634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115610f2957610f296115d2565b5f602082840312156117d3575f80fd5b8151610cc28161154b565b80356116748161154b565b5f60a08284031280156117fa575f80fd5b5061180361162f565b823561180e8161154b565b8152602083013561181e8161154b565b6020820152604083013562ffffff81168114611838575f80fd5b60408201526060830135600281900b8114611851575f80fd5b6060820152611862608084016117de565b60808201529392505050565b5f6020828403121561187e575f80fd5b505191905056fea164736f6c634300081a000a
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| DIH | 1 | $0.0000130 | $0 |
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| Transaction Hash | Method | Block | Age | From | To | Type | Item | ||
|---|---|---|---|---|---|---|---|---|---|
| no NFT transfers for this address yet | |||||||||
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| no internal transactions found for this address yet (traced blocks + on-demand) | ||||||||
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| 0x5c4f6210…da6614 | Transfer | 18,962,918 | 30 days agoSat, 25 Jul 2026 11:10:05 UTC | 0xcaf7…5d11 | IN | 0x1cf4…c7b5 | $0.001 DIH |
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0x9d3477…7c440b | update | 3,375,063 | 48 days agoMon, 06 Jul 2026 23:35:49 UTC | 0x9e7d…f1ba | IN | MarkOracle | $0.000 ETH | 0.00000110 | |
| 0xa3f115…45e0a5 | update | 3,375,059 | 48 days agoMon, 06 Jul 2026 23:35:48 UTC | 0x9e7d…f1ba | IN | MarkOracle | $0.000 ETH | 0.00000110 | |
| 0x1b9d8d…026b38 | update | 3,374,493 | 48 days agoMon, 06 Jul 2026 23:33:49 UTC | 0x9e7d…f1ba | IN | MarkOracle | $0.000 ETH | 0.00000110 | |
| 0x0dc799…395111 | update | 3,374,485 | 48 days agoMon, 06 Jul 2026 23:33:48 UTC | 0x9e7d…f1ba | IN | MarkOracle | $0.000 ETH | 0.00000110 | |
| 0xd41365…7b9749 | update | 3,373,956 | 48 days agoMon, 06 Jul 2026 23:31:50 UTC | 0x9e7d…f1ba | IN | MarkOracle | $0.000 ETH | 0.00000110 | |
| 0xb6281e…785618 | update | 3,373,948 | 48 days agoMon, 06 Jul 2026 23:31:48 UTC | 0x9e7d…f1ba | IN | MarkOracle | $0.000 ETH | 0.00000110 | |
| 0x069944…886313 | update | 3,373,385 | 48 days agoMon, 06 Jul 2026 23:29:49 UTC | 0x9e7d…f1ba | IN | MarkOracle | $0.000 ETH | 0.00000111 | |
| 0x0a8b5d…411321 | update | 3,373,383 | 48 days agoMon, 06 Jul 2026 23:29:48 UTC | 0x9e7d…f1ba | IN | MarkOracle | $0.000 ETH | 0.00000110 | |
| 0x62ed0c…1fb4d4 | update | 3,372,854 | 48 days agoMon, 06 Jul 2026 23:27:50 UTC | 0x9e7d…f1ba | IN | MarkOracle | $0.000 ETH | 0.00000111 | |
| 0xc5ceb3…e5a457 | update | 3,372,844 | 48 days agoMon, 06 Jul 2026 23:27:48 UTC | 0x9e7d…f1ba | IN | MarkOracle | $0.000 ETH | 0.00000110 | |
| 0xd15e1b…ac535a | update | 3,372,302 | 48 days agoMon, 06 Jul 2026 23:25:49 UTC | 0x9e7d…f1ba | IN | MarkOracle | $0.000 ETH | 0.00000111 | |
| 0xb9691c…824453 | update | 3,372,293 | 48 days agoMon, 06 Jul 2026 23:25:48 UTC | 0x9e7d…f1ba | IN | MarkOracle | $0.000 ETH | 0.00000110 | |
| 0xc54dcb…c2e6b7 | update | 3,371,641 | 48 days agoMon, 06 Jul 2026 23:23:49 UTC | 0x9e7d…f1ba | IN | MarkOracle | $0.000 ETH | 0.00000111 | |
| 0xd9722f…bf503d | update | 3,371,638 | 48 days agoMon, 06 Jul 2026 23:23:48 UTC | 0x9e7d…f1ba | IN | MarkOracle | $0.000 ETH | 0.00000110 | |
| 0x1e7b34…2c149d | update | 3,371,080 | 48 days agoMon, 06 Jul 2026 23:21:49 UTC | 0x9e7d…f1ba | IN | MarkOracle | $0.000 ETH | 0.00000111 | |
| 0xdcb7e5…cde1ba | update | 3,371,066 | 48 days agoMon, 06 Jul 2026 23:21:48 UTC | 0x9e7d…f1ba | IN | MarkOracle | $0.000 ETH | 0.00000110 | |
| 0xae5813…81f795 | update | 3,370,450 | 48 days agoMon, 06 Jul 2026 23:19:49 UTC | 0x9e7d…f1ba | IN | MarkOracle | $0.000 ETH | 0.00000111 | |
| 0xe7a7b8…4b364d | update | 3,370,439 | 48 days agoMon, 06 Jul 2026 23:19:48 UTC | 0x9e7d…f1ba | IN | MarkOracle | $0.000 ETH | 0.00000110 | |
| 0x08df07…81fced | update | 3,369,897 | 48 days agoMon, 06 Jul 2026 23:17:49 UTC | 0x9e7d…f1ba | IN | MarkOracle | $0.000 ETH | 0.00000111 | |
| 0x9f1257…3841a0 | update | 3,369,893 | 48 days agoMon, 06 Jul 2026 23:17:48 UTC | 0x9e7d…f1ba | IN | MarkOracle | $0.000 ETH | 0.00000110 | |
| 0x4f3501…5bcf90 | update | 3,369,297 | 48 days agoMon, 06 Jul 2026 23:15:49 UTC | 0x9e7d…f1ba | IN | MarkOracle | $0.000 ETH | 0.00000111 | |
| 0x922724…cc33e1 | update | 3,369,294 | 48 days agoMon, 06 Jul 2026 23:15:48 UTC | 0x9e7d…f1ba | IN | MarkOracle | $0.000 ETH | 0.00000110 | |
| 0xa31c0f…e59754 | update | 3,368,761 | 48 days agoMon, 06 Jul 2026 23:13:49 UTC | 0x9e7d…f1ba | IN | MarkOracle | $0.000 ETH | 0.00000111 | |
| 0xebbcd8…60fa80 | update | 3,368,752 | 48 days agoMon, 06 Jul 2026 23:13:48 UTC | 0x9e7d…f1ba | IN | MarkOracle | $0.000 ETH | 0.00000110 | |
| 0xef6e1c…8dee3a | update | 3,368,205 | 48 days agoMon, 06 Jul 2026 23:11:49 UTC | 0x9e7d…f1ba | IN | MarkOracle | $0.000 ETH | 0.00000111 |
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0x9d3477…7c440b | 48 days agoMon, 06 Jul 2026 23:35:49 UTC | 0x99cc04…1476 | [0] 0x000000000000…fae35eea data: 0x000000000000000000…099f1a4d |
| 0xa3f115…45e0a5 | 48 days agoMon, 06 Jul 2026 23:35:48 UTC | 0x99cc04…1476 | [0] 0x000000000000…00000000 data: 0x000000000000000000…6bc20b04 |
| 0x1b9d8d…026b38 | 48 days agoMon, 06 Jul 2026 23:33:49 UTC | 0x99cc04…1476 | [0] 0x000000000000…fae35eea data: 0x000000000000000000…099f04b2 |
| 0x0dc799…395111 | 48 days agoMon, 06 Jul 2026 23:33:48 UTC | 0x99cc04…1476 | [0] 0x000000000000…00000000 data: 0x000000000000000000…6bc3ed23 |
| 0xd41365…7b9749 | 48 days agoMon, 06 Jul 2026 23:31:50 UTC | 0x99cc04…1476 | [0] 0x000000000000…fae35eea data: 0x000000000000000000…099eee89 |
| 0xb6281e…785618 | 48 days agoMon, 06 Jul 2026 23:31:48 UTC | 0x99cc04…1476 | [0] 0x000000000000…00000000 data: 0x000000000000000000…6bc630a6 |
| 0x069944…886313 | 48 days agoMon, 06 Jul 2026 23:29:49 UTC | 0x99cc04…1476 | [0] 0x000000000000…fae35eea data: 0x000000000000000000…099ed738 |
| 0x0a8b5d…411321 | 48 days agoMon, 06 Jul 2026 23:29:48 UTC | 0x99cc04…1476 | [0] 0x000000000000…00000000 data: 0x000000000000000000…6bc89c4c |
| 0x62ed0c…1fb4d4 | 48 days agoMon, 06 Jul 2026 23:27:50 UTC | 0x99cc04…1476 | [0] 0x000000000000…fae35eea data: 0x000000000000000000…099ebf81 |
| 0xc5ceb3…e5a457 | 48 days agoMon, 06 Jul 2026 23:27:48 UTC | 0x99cc04…1476 | [0] 0x000000000000…00000000 data: 0x000000000000000000…6bcb23e2 |
| 0xd15e1b…ac535a | 48 days agoMon, 06 Jul 2026 23:25:49 UTC | 0x99cc04…1476 | [0] 0x000000000000…fae35eea data: 0x000000000000000000…099ea68e |
| 0xb9691c…824453 | 48 days agoMon, 06 Jul 2026 23:25:48 UTC | 0x99cc04…1476 | [0] 0x000000000000…00000000 data: 0x000000000000000000…6bccd35e |
| 0xc54dcb…c2e6b7 | 48 days agoMon, 06 Jul 2026 23:23:49 UTC | 0x99cc04…1476 | [0] 0x000000000000…fae35eea data: 0x000000000000000000…099e8cf5 |
| 0xd9722f…bf503d | 48 days agoMon, 06 Jul 2026 23:23:48 UTC | 0x99cc04…1476 | [0] 0x000000000000…00000000 data: 0x000000000000000000…6bced8fe |
| 0x1e7b34…2c149d | 48 days agoMon, 06 Jul 2026 23:21:49 UTC | 0x99cc04…1476 | [0] 0x000000000000…fae35eea data: 0x000000000000000000…099e727a |
| 0xdcb7e5…cde1ba | 48 days agoMon, 06 Jul 2026 23:21:48 UTC | 0x99cc04…1476 | [0] 0x000000000000…00000000 data: 0x000000000000000000…6bd06b15 |
| 0xae5813…81f795 | 48 days agoMon, 06 Jul 2026 23:19:49 UTC | 0x99cc04…1476 | [0] 0x000000000000…fae35eea data: 0x000000000000000000…099e5715 |
| 0xe7a7b8…4b364d | 48 days agoMon, 06 Jul 2026 23:19:48 UTC | 0x99cc04…1476 | [0] 0x000000000000…00000000 data: 0x000000000000000000…6bd20b09 |
| 0x08df07…81fced | 48 days agoMon, 06 Jul 2026 23:17:49 UTC | 0x99cc04…1476 | [0] 0x000000000000…fae35eea data: 0x000000000000000000…099e3abe |
| 0x9f1257…3841a0 | 48 days agoMon, 06 Jul 2026 23:17:48 UTC | 0x99cc04…1476 | [0] 0x000000000000…00000000 data: 0x000000000000000000…6bd2f573 |
| 0x4f3501…5bcf90 | 48 days agoMon, 06 Jul 2026 23:15:49 UTC | 0x99cc04…1476 | [0] 0x000000000000…fae35eea data: 0x000000000000000000…099e1d6d |
| 0x922724…cc33e1 | 48 days agoMon, 06 Jul 2026 23:15:48 UTC | 0x99cc04…1476 | [0] 0x000000000000…00000000 data: 0x000000000000000000…6bd3b435 |
| 0xa31c0f…e59754 | 48 days agoMon, 06 Jul 2026 23:13:49 UTC | 0x99cc04…1476 | [0] 0x000000000000…fae35eea data: 0x000000000000000000…099dff19 |
| 0xebbcd8…60fa80 | 48 days agoMon, 06 Jul 2026 23:13:48 UTC | 0x99cc04…1476 | [0] 0x000000000000…00000000 data: 0x000000000000000000…6bd3c7a4 |
| 0xef6e1c…8dee3a | 48 days agoMon, 06 Jul 2026 23:11:49 UTC | 0x99cc04…1476 | [0] 0x000000000000…fae35eea data: 0x000000000000000000…099ddfba |