/**
SPDX-License-Identifier: Unlicensed
*/
/**
* Permanent liquidity lock + fee harvester for a Uniswap v4 position.
*
* Holds exactly one full-range v4 position NFT forever: there is no owner
* and no function that can move the NFT or remove liquidity. The only
* liquidity actions it can perform are a zero-liquidity decrease (fee
* collection) and INCREASE_LIQUIDITY (compounding) — locked liquidity can
* grow but never shrink.
*
* harvest() — callable by anyone:
* 1. collects accrued swap fees (native + token)
* 2. values everything in native terms at the live pool price
* 3. keeps 1/5 of that value aside as liquidity: half native, half token,
* compounded into the locked position
* 4. sells the remaining token fees through the pool (price-impact
* bounded; unsold remainder rolls to the next harvest)
* 5. pushes the remaining native balance into the dividend distributor
* (skipped while there are no shareholders)
*/
pragma solidity ^0.8.26;
import {IPositionManager} from "v4-periphery/interfaces/IPositionManager.sol";
import {Actions} from "v4-periphery/libraries/Actions.sol";
import {LiquidityAmounts} from "v4-periphery/libraries/LiquidityAmounts.sol";
import {PositionInfo} from "v4-periphery/libraries/PositionInfoLibrary.sol";
import {PoolKey} from "@uniswap/v4-core/src/types/PoolKey.sol";
import {PoolId, PoolIdLibrary} from "@uniswap/v4-core/src/types/PoolId.sol";
import {Currency} from "@uniswap/v4-core/src/types/Currency.sol";
import {IHooks} from "@uniswap/v4-core/src/interfaces/IHooks.sol";
import {IPoolManager} from "@uniswap/v4-core/src/interfaces/IPoolManager.sol";
import {IUnlockCallback} from "@uniswap/v4-core/src/interfaces/callback/IUnlockCallback.sol";
import {SwapParams} from "@uniswap/v4-core/src/types/PoolOperation.sol";
import {BalanceDelta} from "@uniswap/v4-core/src/types/BalanceDelta.sol";
import {TickMath} from "@uniswap/v4-core/src/libraries/TickMath.sol";
import {FullMath} from "@uniswap/v4-core/src/libraries/FullMath.sol";
import {FixedPoint96} from "@uniswap/v4-core/src/libraries/FixedPoint96.sol";
import {IAllowanceTransfer} from "permit2/src/interfaces/IAllowanceTransfer.sol";
interface IPositionManagerV2 is IPositionManager {
function ownerOf(uint256 tokenId) external view returns (address);
}
interface IStateViewMinimal {
function getSlot0(PoolId poolId)
external
view
returns (uint160 sqrtPriceX96, int24 tick, uint24 protocolFee, uint24 lpFee);
}
interface IDistributorSink {
function deposit() external payable;
function totalShares() external view returns (uint256);
}
interface IERC20Lk {
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function approve(address spender, uint256 amount) external returns (bool);
}
contract LockerV2 is IUnlockCallback {
using PoolIdLibrary for PoolKey;
IPositionManagerV2 public immutable positionManager;
IPoolManager public immutable poolManager;
IStateViewMinimal public immutable stateView;
IERC20Lk public immutable token; // pool currency1
IDistributorSink public immutable distributor;
uint24 public immutable poolFee;
int24 public immutable poolTickSpacing;
// Of the value collected each harvest, 1/LIQUIDITY_SHARE is compounded
// into the locked position and the rest is distributed as dividends
// (5% pool fee => 4% dividends / 1% liquidity).
uint256 public constant LIQUIDITY_SHARE = 5;
// Maximum price movement the harvest sell may cause, in bps of the
// pre-swap price. If the bound is hit the swap partially fills and the
// unsold remainder simply waits for the next harvest.
uint256 public constant MAX_SELL_IMPACT_BPS = 1000; // 10%
uint256 public tokenId; // 0 until lock() registers the position
bool private inHarvest;
event Locked(uint256 indexed tokenId);
event Harvested(uint256 ethToDividends, uint256 ethToLiquidity, uint256 tokensToLiquidity, uint256 tokensSold);
constructor (
address _positionManager,
address _poolManager,
address _stateView,
address _permit2,
address _token,
address _distributor,
uint24 _poolFee,
int24 _poolTickSpacing
) {
require(_positionManager != address(0), "posm is zero address");
require(_poolManager != address(0), "pm is zero address");
require(_stateView != address(0), "stateView is zero address");
require(_token != address(0), "token is zero address");
require(_distributor != address(0), "distributor is zero address");
positionManager = IPositionManagerV2(_positionManager);
poolManager = IPoolManager(_poolManager);
stateView = IStateViewMinimal(_stateView);
token = IERC20Lk(_token);
distributor = IDistributorSink(_distributor);
poolFee = _poolFee;
poolTickSpacing = _poolTickSpacing;
// standing approvals so INCREASE_LIQUIDITY can settle the token side
IERC20Lk(_token).approve(_permit2, type(uint256).max);
IAllowanceTransfer(_permit2).approve(_token, _positionManager, type(uint160).max, type(uint48).max);
}
function poolKey() public view returns (PoolKey memory) {
return PoolKey({
currency0: Currency.wrap(address(0)),
currency1: Currency.wrap(address(token)),
fee: poolFee,
tickSpacing: poolTickSpacing,
hooks: IHooks(address(0))
});
}
// One-time, trustless registration: the position must already be owned
// by this contract and must be the expected native/token pool.
function lock(uint256 _tokenId) external {
require(tokenId == 0, "already locked");
require(_tokenId != 0, "zero id");
require(positionManager.ownerOf(_tokenId) == address(this), "position not owned");
(PoolKey memory key, ) = positionManager.getPoolAndPositionInfo(_tokenId);
require(Currency.unwrap(key.currency0) == address(0), "currency0 not native");
require(Currency.unwrap(key.currency1) == address(token), "wrong token");
require(key.fee == poolFee, "wrong fee");
require(key.tickSpacing == poolTickSpacing, "wrong spacing");
require(address(key.hooks) == address(0), "hooked pool");
tokenId = _tokenId;
emit Locked(_tokenId);
}
function harvest() external {
uint256 id = tokenId;
require(id != 0, "not locked");
require(!inHarvest, "reentrancy");
_collectFees(id);
uint160 sqrtPriceX96 = _currentSqrtPrice();
uint256 nativeBalance = address(this).balance;
uint256 tokenBalance = token.balanceOf(address(this));
// value the token fees in native terms: amount1 / price, where
// price (token per native) = (sqrtP/Q96)^2
uint256 tokenValueNative = _tokenToNative(tokenBalance, sqrtPriceX96);
uint256 totalValue = nativeBalance + tokenValueNative;
if (totalValue == 0) {
emit Harvested(0, 0, 0, 0);
return;
}
// 1/LIQUIDITY_SHARE of total value goes to liquidity, half per side
uint256 lpSideValue = totalValue / LIQUIDITY_SHARE / 2;
uint256 tokensForLp = _min(tokenBalance, _nativeToToken(lpSideValue, sqrtPriceX96));
// sell everything above the liquidity reservation, impact-bounded
uint256 tokensSold = 0;
uint256 tokensToSell = tokenBalance - tokensForLp;
if (tokensToSell > 0) {
tokensSold = _sellTokens(tokensToSell, sqrtPriceX96);
}
// compound: pair the reserved sides into the locked position
// (price may have moved from the sell; re-read)
uint256 ethForLp = _min(address(this).balance, lpSideValue);
(uint256 ethUsed, uint256 tokensUsed) = _increaseLiquidity(id, ethForLp, tokensForLp);
// Everything else in native terms is dividends. The deposit swaps ETH
// to the reward token via an external DEX, which can fail (dry pair,
// slippage guard). It is wrapped so a failed deposit never bricks the
// harvest: the native balance simply stays in the locker and rolls to
// the next harvest. Skipped entirely while there are no shareholders.
//
// The gas guard closes the try/catch silent-skip hole: a caller could
// otherwise provide just enough gas for the deposit to run out mid-swap
// (caught here) while the harvest still "succeeds" doing nothing. We
// only attempt the deposit with ample gas, so an under-funded harvest
// reverts rather than silently skipping dividends.
uint256 ethToDividends = 0;
uint256 rest = address(this).balance;
if (rest > 0 && distributor.totalShares() > 0) {
require(gasleft() > 400000, "insufficient gas for deposit");
try distributor.deposit{value: rest}() {
ethToDividends = rest;
} catch {}
}
emit Harvested(ethToDividends, ethUsed, tokensUsed, tokensSold);
}
// ---------- internals ----------
function _collectFees(uint256 id) internal {
bytes memory actions = abi.encodePacked(
uint8(Actions.DECREASE_LIQUIDITY),
uint8(Actions.TAKE_PAIR)
);
bytes[] memory params = new bytes[](2);
params[0] = abi.encode(id, uint256(0), uint128(0), uint128(0), bytes(""));
params[1] = abi.encode(Currency.wrap(address(0)), Currency.wrap(address(token)), address(this));
positionManager.modifyLiquidities(abi.encode(actions, params), block.timestamp);
}
function _sellTokens(uint256 amount, uint160 sqrtPriceX96) internal returns (uint256 sold) {
// selling currency1 pushes sqrtPrice up; cap the move at
// ~MAX_SELL_IMPACT_BPS of price (first-order: sqrt moves half as far)
uint160 sqrtLimit = uint160(
uint256(sqrtPriceX96) + FullMath.mulDiv(uint256(sqrtPriceX96), MAX_SELL_IMPACT_BPS, 2 * 10000)
);
inHarvest = true;
bytes memory result = poolManager.unlock(abi.encode(amount, sqrtLimit));
inHarvest = false;
sold = abi.decode(result, (uint256));
}
function unlockCallback(bytes calldata data) external returns (bytes memory) {
require(msg.sender == address(poolManager), "not pool manager");
require(inHarvest, "not harvesting");
(uint256 amount, uint160 sqrtLimit) = abi.decode(data, (uint256, uint160));
BalanceDelta delta = poolManager.swap(
poolKey(),
SwapParams({
zeroForOne: false,
amountSpecified: -int256(amount),
sqrtPriceLimitX96: sqrtLimit
}),
""
);
// amount1 negative = tokens consumed (may be partial at the limit),
// amount0 positive = native received
uint256 sold = uint256(uint128(uint256(-int256(delta.amount1()))));
uint256 received = uint256(uint128(uint256(int256(delta.amount0()))));
if (sold > 0) {
poolManager.sync(Currency.wrap(address(token)));
token.transfer(address(poolManager), sold);
poolManager.settle();
}
if (received > 0) {
poolManager.take(Currency.wrap(address(0)), address(this), received);
}
return abi.encode(sold);
}
function _increaseLiquidity(uint256 id, uint256 ethAmount, uint256 tokenAmount)
internal
returns (uint256 ethUsed, uint256 tokensUsed)
{
if (ethAmount == 0 || tokenAmount == 0) return (0, 0);
uint160 sqrtPriceX96 = _currentSqrtPrice();
int24 tickLower = (TickMath.MIN_TICK / poolTickSpacing) * poolTickSpacing;
int24 tickUpper = (TickMath.MAX_TICK / poolTickSpacing) * poolTickSpacing;
uint128 liquidity = LiquidityAmounts.getLiquidityForAmounts(
sqrtPriceX96,
TickMath.getSqrtPriceAtTick(tickLower),
TickMath.getSqrtPriceAtTick(tickUpper),
ethAmount,
tokenAmount
);
if (liquidity == 0) return (0, 0);
uint256 ethBefore = address(this).balance;
uint256 tokensBefore = token.balanceOf(address(this));
bytes memory actions = abi.encodePacked(
uint8(Actions.INCREASE_LIQUIDITY),
uint8(Actions.SETTLE_PAIR),
uint8(Actions.SWEEP)
);
bytes[] memory params = new bytes[](3);
params[0] = abi.encode(id, uint256(liquidity), uint128(ethAmount), uint128(tokenAmount), bytes(""));
params[1] = abi.encode(Currency.wrap(address(0)), Currency.wrap(address(token)));
params[2] = abi.encode(Currency.wrap(address(0)), address(1)); // sweep native surplus back
positionManager.modifyLiquidities{value: ethAmount}(abi.encode(actions, params), block.timestamp);
ethUsed = ethBefore - address(this).balance;
tokensUsed = tokensBefore - token.balanceOf(address(this));
}
function _currentSqrtPrice() internal view returns (uint160 sqrtPriceX96) {
(sqrtPriceX96,,,) = stateView.getSlot0(poolKey().toId());
require(sqrtPriceX96 > 0, "pool not initialized");
}
function _tokenToNative(uint256 tokenAmount, uint160 sqrtPriceX96) internal pure returns (uint256) {
if (tokenAmount == 0) return 0;
uint256 intermediate = FullMath.mulDiv(tokenAmount, FixedPoint96.Q96, sqrtPriceX96);
return FullMath.mulDiv(intermediate, FixedPoint96.Q96, sqrtPriceX96);
}
function _nativeToToken(uint256 nativeAmount, uint160 sqrtPriceX96) internal pure returns (uint256) {
if (nativeAmount == 0) return 0;
uint256 intermediate = FullMath.mulDiv(nativeAmount, sqrtPriceX96, FixedPoint96.Q96);
return FullMath.mulDiv(intermediate, sqrtPriceX96, FixedPoint96.Q96);
}
function _min(uint256 a, uint256 b) internal pure returns (uint256) {
return a < b ? a : b;
}
// Accepts native currency from the pool manager during collection,
// swaps, and sweep refunds.
receive() external payable { }
}[
{
"type": "constructor",
"inputs": [
{
"name": "_positionManager",
"type": "address",
"internalType": "address"
},
{
"name": "_poolManager",
"type": "address",
"internalType": "address"
},
{
"name": "_stateView",
"type": "address",
"internalType": "address"
},
{
"name": "_permit2",
"type": "address",
"internalType": "address"
},
{
"name": "_token",
"type": "address",
"internalType": "address"
},
{
"name": "_distributor",
"type": "address",
"internalType": "address"
},
{
"name": "_poolFee",
"type": "uint24",
"internalType": "uint24"
},
{
"name": "_poolTickSpacing",
"type": "int24",
"internalType": "int24"
}
],
"stateMutability": "nonpayable"
},
{
"name": "Harvested",
"type": "event",
"inputs": [
{
"name": "ethToDividends",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "ethToLiquidity",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "tokensToLiquidity",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "tokensSold",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "Locked",
"type": "event",
"inputs": [
{
"name": "tokenId",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "LIQUIDITY_SHARE",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "MAX_SELL_IMPACT_BPS",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "distributor",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract IDistributorSink"
}
],
"stateMutability": "view"
},
{
"name": "harvest",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "lock",
"type": "function",
"inputs": [
{
"name": "_tokenId",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "poolFee",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint24",
"internalType": "uint24"
}
],
"stateMutability": "view"
},
{
"name": "poolKey",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"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"
}
],
"stateMutability": "view"
},
{
"name": "poolManager",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract IPoolManager"
}
],
"stateMutability": "view"
},
{
"name": "poolTickSpacing",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "int24",
"internalType": "int24"
}
],
"stateMutability": "view"
},
{
"name": "positionManager",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract IPositionManagerV2"
}
],
"stateMutability": "view"
},
{
"name": "stateView",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract IStateViewMinimal"
}
],
"stateMutability": "view"
},
{
"name": "token",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract IERC20Lk"
}
],
"stateMutability": "view"
},
{
"name": "tokenId",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "unlockCallback",
"type": "function",
"inputs": [
{
"name": "data",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [
{
"name": "",
"type": "bytes",
"internalType": "bytes"
}
],
"stateMutability": "nonpayable"
},
{
"type": "receive",
"stateMutability": "payable"
}
]0x610160604052348015610010575f80fd5b5060405161289138038061289183398101604081905261002f91610313565b6001600160a01b03881661008a5760405162461bcd60e51b815260206004820152601460248201527f706f736d206973207a65726f206164647265737300000000000000000000000060448201526064015b60405180910390fd5b6001600160a01b0387166100d55760405162461bcd60e51b8152602060048201526012602482015271706d206973207a65726f206164647265737360701b6044820152606401610081565b6001600160a01b03861661012b5760405162461bcd60e51b815260206004820152601960248201527f737461746556696577206973207a65726f2061646472657373000000000000006044820152606401610081565b6001600160a01b0384166101815760405162461bcd60e51b815260206004820152601560248201527f746f6b656e206973207a65726f206164647265737300000000000000000000006044820152606401610081565b6001600160a01b0383166101d75760405162461bcd60e51b815260206004820152601b60248201527f6469737472696275746f72206973207a65726f206164647265737300000000006044820152606401610081565b6001600160a01b0388811660805287811660a05286811660c05284811660e08190528482166101005262ffffff841661012052600283900b6101405260405163095ea7b360e01b815291871660048301525f1960248301529063095ea7b3906044016020604051808303815f875af1158015610255573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061027991906103b9565b506040516387517c4560e01b81526001600160a01b03858116600483015289811660248301526044820181905265ffffffffffff60648301528616906387517c45906084015f604051808303815f87803b1580156102d5575f80fd5b505af11580156102e7573d5f803e3d5ffd5b5050505050505050505050506103df565b80516001600160a01b038116811461030e575f80fd5b919050565b5f805f805f805f80610100898b03121561032b575f80fd5b610334896102f8565b975061034260208a016102f8565b965061035060408a016102f8565b955061035e60608a016102f8565b945061036c60808a016102f8565b935061037a60a08a016102f8565b925060c089015162ffffff81168114610391575f80fd5b8092505060e08901518060020b81146103a8575f80fd5b809150509295985092959890939650565b5f602082840312156103c9575f80fd5b815180151581146103d8575f80fd5b9392505050565b60805160a05160c05160e0516101005161012051610140516123976104fa5f395f81816101fc015281816103fd01528181610f34015281816114bb01526114f701525f818160f8015281816103d20152610ecb01525f81816102b60152818161064a015261072301525f818161033b015281816103a3015281816104e9015281816109c901528181610a8c01528181610e58015281816110d201528181611587015281816116b2015261182c01525f81816101b101526111d001525f81816102e9015281816107fb015281816108b3015281816109f101528181610a5d01528181610afb01528181610ba401526113b001525f818161024201528181610cc601528181610d920152818161112e015261176c01526123975ff3fe6080604052600436106100dc575f3560e01c8063791b98bc1161007c578063bfe1092811610057578063bfe10928146102a5578063dc4c90d3146102d8578063dd4670641461030b578063fc0c546a1461032a575f80fd5b8063791b98bc14610231578063794b5fc61461026457806391dd734614610279575f80fd5b806343270d56116100b757806343270d56146101765780634641257d1461018a5780634c4a3c25146101a05780637164cf9b146101eb575f80fd5b8063089fe6aa146100e757806317d70f7c14610133578063182148ef14610155575f80fd5b366100e357005b5f80fd5b3480156100f2575f80fd5b5061011a7f000000000000000000000000000000000000000000000000000000000000000081565b60405162ffffff90911681526020015b60405180910390f35b34801561013e575f80fd5b506101475f5481565b60405190815260200161012a565b348015610160575f80fd5b5061016961035d565b60405161012a9190611dea565b348015610181575f80fd5b50610147600581565b348015610195575f80fd5b5061019e610436565b005b3480156101ab575f80fd5b506101d37f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161012a565b3480156101f6575f80fd5b5061021e7f000000000000000000000000000000000000000000000000000000000000000081565b60405160029190910b815260200161012a565b34801561023c575f80fd5b506101d37f000000000000000000000000000000000000000000000000000000000000000081565b34801561026f575f80fd5b506101476103e881565b348015610284575f80fd5b50610298610293366004611df8565b6107ee565b60405161012a9190611e94565b3480156102b0575f80fd5b506101d37f000000000000000000000000000000000000000000000000000000000000000081565b3480156102e3575f80fd5b506101d37f000000000000000000000000000000000000000000000000000000000000000081565b348015610316575f80fd5b5061019e610325366004611ea6565b610c2d565b348015610335575f80fd5b506101d37f000000000000000000000000000000000000000000000000000000000000000081565b6040805160a0810182525f808252602082018190529181018290526060810182905260808101919091526040518060a001604052805f6001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f000000000000000000000000000000000000000000000000000000000000000062ffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000060020b81526020015f6001600160a01b0316815250905090565b5f80549081900361047b5760405162461bcd60e51b815260206004820152600a6024820152691b9bdd081b1bd8dad95960b21b60448201526064015b60405180910390fd5b60015460ff16156104bb5760405162461bcd60e51b815260206004820152600a6024820152697265656e7472616e637960b01b6044820152606401610472565b6104c481611014565b5f6104cd6111cd565b6040516370a0823160e01b815230600482015290915047905f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610536573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061055a9190611ebd565b90505f61056782856112c2565b90505f6105748285611ee8565b9050805f036105cb57604080515f80825260208201819052818301819052606082015290517f4c0f499ffe6befa0ca7c826b0916cf87bea98de658013e76938489368d60d5099181900360800190a1505050505050565b5f60026105d9600584611f0f565b6105e39190611f0f565b90505f6105f9856105f4848a61130c565b61134e565b90505f806106078388611f22565b9050801561061c57610619818a611365565b91505b5f610627478661134e565b90505f806106368d8488611491565b90925090505f4780158015906106ca57505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633a98ef396040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106a4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106c89190611ebd565b115b156107955762061a805a116107215760405162461bcd60e51b815260206004820152601c60248201527f696e73756666696369656e742067617320666f72206465706f736974000000006044820152606401610472565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004015f604051808303818588803b15801561077a575f80fd5b505af19350505050801561078c575060015b15610795578091505b6040805183815260208101869052908101849052606081018890527f4c0f499ffe6befa0ca7c826b0916cf87bea98de658013e76938489368d60d5099060800160405180910390a1505050505050505050505050505050565b6060336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461085b5760405162461bcd60e51b815260206004820152601060248201526f3737ba103837b7b61036b0b730b3b2b960811b6044820152606401610472565b60015460ff1661089e5760405162461bcd60e51b815260206004820152600e60248201526d6e6f742068617276657374696e6760901b6044820152606401610472565b5f806108ac84860186611f4c565b915091505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f3cd914c6108e861035d565b60408051606081019091525f81526020810161090388611f7a565b8152602001866001600160a01b03168152506040518363ffffffff1660e01b8152600401610932929190611f94565b6020604051808303815f875af115801561094e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109729190611ebd565b90505f61097f82600f0b90565b600f0b61098b90611f7a565b6001600160801b031690505f6109a18360801d90565b6001600160801b031690508115610b7c57604051632961046560e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a5841194906024015f604051808303815f87803b158015610a32575f80fd5b505af1158015610a44573d5f803e3d5ffd5b505060405163a9059cbb60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018690527f000000000000000000000000000000000000000000000000000000000000000016925063a9059cbb91506044016020604051808303815f875af1158015610ad4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610af89190611fde565b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166311da60b46040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610b56573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b7a9190611ebd565b505b8015610c0457604051630b0d9c0960e01b81525f6004820152306024820152604481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690630b0d9c09906064015f604051808303815f87803b158015610bed575f80fd5b505af1158015610bff573d5f803e3d5ffd5b505050505b604080516020810184905201604051602081830303815290604052955050505050505b92915050565b5f5415610c6d5760405162461bcd60e51b815260206004820152600e60248201526d185b1c9958591e481b1bd8dad95960921b6044820152606401610472565b805f03610ca65760405162461bcd60e51b81526020600482015260076024820152661e995c9bc81a5960ca1b6044820152606401610472565b6040516331a9108f60e11b81526004810182905230906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015610d0b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d2f9190611ffd565b6001600160a01b031614610d7a5760405162461bcd60e51b81526020600482015260126024820152711c1bdcda5d1a5bdb881b9bdd081bdddb995960721b6044820152606401610472565b604051637ba03aad60e01b8152600481018290525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637ba03aad9060240160c060405180830381865afa158015610ddf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e039190612080565b5080519091506001600160a01b031615610e565760405162461bcd60e51b815260206004820152601460248201527363757272656e637930206e6f74206e617469766560601b6044820152606401610472565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681602001516001600160a01b031614610ec95760405162461bcd60e51b815260206004820152600b60248201526a3bb937b733903a37b5b2b760a91b6044820152606401610472565b7f000000000000000000000000000000000000000000000000000000000000000062ffffff16816040015162ffffff1614610f325760405162461bcd60e51b815260206004820152600960248201526877726f6e672066656560b81b6044820152606401610472565b7f000000000000000000000000000000000000000000000000000000000000000060020b816060015160020b14610f9b5760405162461bcd60e51b815260206004820152600d60248201526c77726f6e672073706163696e6760981b6044820152606401610472565b60808101516001600160a01b031615610fe45760405162461bcd60e51b815260206004820152600b60248201526a1a1bdbdad959081c1bdbdb60aa1b6044820152606401610472565b5f82815560405183917f032bc66be43dbccb7487781d168eb7bda224628a3b2c3388bdf69b532a3a161191a25050565b604051600160f81b6020820152601160f81b60218201525f9060220160408051808303601f1901815260028084526060840190925292505f9190816020015b606081526020019060019003908161105357505060408051602080820183525f808352925193945061108c93879392839283920161212b565b604051602081830303815290604052815f815181106110ad576110ad612172565b602090810291909101810191909152604080515f928101929092526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016908201523060608201526080016040516020818303038152906040528160018151811061112157611121612172565b60200260200101819052507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dd46508f838360405160200161116e929190612186565b604051602081830303815290604052426040518363ffffffff1660e01b815260040161119b9291906121fb565b5f604051808303815f87803b1580156111b2575f80fd5b505af11580156111c4573d5f803e3d5ffd5b50505050505050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c815641c61120f61120861035d565b60a0902090565b6040518263ffffffff1660e01b815260040161122d91815260200190565b608060405180830381865afa158015611248573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061126c919061221c565b5091925050506001600160a01b0381166112bf5760405162461bcd60e51b81526020600482015260146024820152731c1bdbdb081b9bdd081a5b9a5d1a585b1a5e995960621b6044820152606401610472565b90565b5f825f036112d157505f610c27565b5f6112ea84600160601b856001600160a01b03166118ba565b905061130481600160601b856001600160a01b03166118ba565b949350505050565b5f825f0361131b57505f610c27565b5f61133484846001600160a01b0316600160601b6118ba565b905061130481846001600160a01b0316600160601b6118ba565b5f81831061135c578161135e565b825b9392505050565b5f8061137f836001600160a01b03166103e8614e206118ba565b611392906001600160a01b038516611ee8565b6001805460ff1916811790556040519091505f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906348c89491906113f990889086906020019182526001600160a01b0316602082015260400190565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016114249190611e94565b5f604051808303815f875af115801561143f573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611466919081019061226f565b6001805460ff1916905580519091506114889082016020908101908301611ebd565b95945050505050565b5f8083158061149e575082155b156114ad57505f9050806118b2565b5f6114b66111cd565b90505f7f00000000000000000000000000000000000000000000000000000000000000006114e881620d89e719612303565b6114f2919061233b565b90505f7f000000000000000000000000000000000000000000000000000000000000000061152381620d89e8612303565b61152d919061233b565b90505f61154d8461153d85611956565b61154685611956565b8b8b611c0e565b9050806001600160801b03165f0361156e575f8095509550505050506118b2565b6040516370a0823160e01b815230600482015247905f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156115d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115f89190611ebd565b604080515f60208201819052600d60f81b6021830152600560fa1b602283015282516003818403810182526023840181815260a38501909552949550939092916043015b606081526020019060019003908161163c5790505090508c856001600160801b03168d8d60405180602001604052805f81525060405160200161168395949392919061212b565b604051602081830303815290604052815f815181106116a4576116a4612172565b60200260200101819052505f7f00000000000000000000000000000000000000000000000000000000000000006040516020016116f79291906001600160a01b0392831681529116602082015260400190565b6040516020818303038152906040528160018151811061171957611719612172565b602090810291909101810191909152604080515f928101929092526001908201526060016040516020818303038152906040528160028151811061175f5761175f612172565b60200260200101819052507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dd46508f8d84846040516020016117ad929190612186565b604051602081830303815290604052426040518463ffffffff1660e01b81526004016117da9291906121fb565b5f604051808303818588803b1580156117f1575f80fd5b505af1158015611803573d5f803e3d5ffd5b505050505047846118149190611f22565b6040516370a0823160e01b8152306004820152909a507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015611879573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061189d9190611ebd565b6118a79084611f22565b985050505050505050505b935093915050565b5f838302815f19858709828110838203039150508084116118d9575f80fd5b805f036118eb5750829004905061135e565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b60020b5f60ff82901d80830118620d89e881111561197f5761197f6345c3193d60e11b84611ccd565b7001fffcb933bd6fad37aa2d162d1a5940016001821602600160801b1860028216156119bb576ffff97272373d413259a46990580e213a0260801c5b60048216156119da576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b60088216156119f9576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615611a18576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615611a37576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615611a56576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615611a75576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615611a95576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615611ab5576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615611ad5576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615611af5576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615611b15576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615611b35576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615611b55576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615611b75576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615611b96576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615611bb6576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615611bd5576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615611bf2576b048a170391f7dc42444e8fa20260801c5b5f841315611bfe575f19045b63ffffffff0160201c9392505050565b5f836001600160a01b0316856001600160a01b03161115611c2d579293925b846001600160a01b0316866001600160a01b031611611c5857611c51858585611cdc565b9050611488565b836001600160a01b0316866001600160a01b03161015611cb8575f611c7e878686611cdc565b90505f611c8c878986611d3d565b9050806001600160801b0316826001600160801b031610611cad5780611caf565b815b92505050611488565b611cc3858584611d3d565b9695505050505050565b815f528060020b60045260245ffd5b5f826001600160a01b0316846001600160a01b03161115611cfb579192915b5f611d1d856001600160a01b0316856001600160a01b0316600160601b6118ba565b9050611488611d3884838888036001600160a01b03166118ba565b611d79565b5f826001600160a01b0316846001600160a01b03161115611d5c579192915b611304611d3883600160601b8787036001600160a01b03166118ba565b806001600160801b0381168114611d9a57611d9a6393dafdf160e01b611d9f565b919050565b805f5260045ffd5b80516001600160a01b03908116835260208083015182169084015260408083015162ffffff169084015260608083015160020b9084015260809182015116910152565b60a08101610c278284611da7565b5f8060208385031215611e09575f80fd5b823567ffffffffffffffff811115611e1f575f80fd5b8301601f81018513611e2f575f80fd5b803567ffffffffffffffff811115611e45575f80fd5b856020828401011115611e56575f80fd5b6020919091019590945092505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61135e6020830184611e66565b5f60208284031215611eb6575f80fd5b5035919050565b5f60208284031215611ecd575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610c2757610c27611ed4565b634e487b7160e01b5f52601260045260245ffd5b5f82611f1d57611f1d611efb565b500490565b81810381811115610c2757610c27611ed4565b6001600160a01b0381168114611f49575f80fd5b50565b5f8060408385031215611f5d575f80fd5b823591506020830135611f6f81611f35565b809150509250929050565b5f600160ff1b8201611f8e57611f8e611ed4565b505f0390565b611f9e8184611da7565b8151151560a0820152602082015160c08201526040909101516001600160a01b031660e082015261012061010082018190525f9082015261014001919050565b5f60208284031215611fee575f80fd5b8151801515811461135e575f80fd5b5f6020828403121561200d575f80fd5b815161135e81611f35565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561205557612055612018565b604052919050565b805162ffffff81168114611d9a575f80fd5b8051600281900b8114611d9a575f80fd5b5f8082840360c0811215612092575f80fd5b60a081121561209f575f80fd5b5060405160a0810167ffffffffffffffff811182821017156120c3576120c3612018565b60405283516120d181611f35565b815260208401516120e181611f35565b60208201526120f26040850161205d565b60408201526121036060850161206f565b6060820152608084015161211681611f35565b608082015260a0939093015192949293505050565b8581528460208201526001600160801b03841660408201526001600160801b038316606082015260a060808201525f61216760a0830184611e66565b979650505050505050565b634e487b7160e01b5f52603260045260245ffd5b604081525f6121986040830185611e66565b828103602084015280845180835260208301915060208160051b840101602087015f5b838110156121ed57601f198684030185526121d7838351611e66565b60209586019590935091909101906001016121bb565b509098975050505050505050565b604081525f61220d6040830185611e66565b90508260208301529392505050565b5f805f806080858703121561222f575f80fd5b845161223a81611f35565b93506122486020860161206f565b92506122566040860161205d565b91506122646060860161205d565b905092959194509250565b5f6020828403121561227f575f80fd5b815167ffffffffffffffff811115612295575f80fd5b8201601f810184136122a5575f80fd5b805167ffffffffffffffff8111156122bf576122bf612018565b6122d2601f8201601f191660200161202c565b8181528560208385010111156122e6575f80fd5b8160208401602083015e5f91810160200191909152949350505050565b5f8160020b8360020b8061231957612319611efb565b627fffff1982145f198214161561233257612332611ed4565b90059392505050565b5f8260020b8260020b028060020b915080821461235a5761235a611ed4565b509291505056fea2646970667358221220ec0ec57ce5a5f1130f2550c3f9c2a66e07dd604a22a138fe16125312ccece98a64736f6c634300081a003300000000000000000000000058daec3116aae6d93017baaea7749052e8a04fa70000000000000000000000008366a39cc670b4001a1121b8f6a443a643e40951000000000000000000000000f3334192d15450cdd385c8b70e03f9a6bd9e673b000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba300000000000000000000000000f0b7b5111ee8fa10f803d5f489842066d46ed6000000000000000000000000b726088be96c36f4e058853f62a226cf39b431b8000000000000000000000000000000000000000000000000000000000000c35000000000000000000000000000000000000000000000000000000000000000c8
0x6080604052600436106100dc575f3560e01c8063791b98bc1161007c578063bfe1092811610057578063bfe10928146102a5578063dc4c90d3146102d8578063dd4670641461030b578063fc0c546a1461032a575f80fd5b8063791b98bc14610231578063794b5fc61461026457806391dd734614610279575f80fd5b806343270d56116100b757806343270d56146101765780634641257d1461018a5780634c4a3c25146101a05780637164cf9b146101eb575f80fd5b8063089fe6aa146100e757806317d70f7c14610133578063182148ef14610155575f80fd5b366100e357005b5f80fd5b3480156100f2575f80fd5b5061011a7f000000000000000000000000000000000000000000000000000000000000c35081565b60405162ffffff90911681526020015b60405180910390f35b34801561013e575f80fd5b506101475f5481565b60405190815260200161012a565b348015610160575f80fd5b5061016961035d565b60405161012a9190611dea565b348015610181575f80fd5b50610147600581565b348015610195575f80fd5b5061019e610436565b005b3480156101ab575f80fd5b506101d37f000000000000000000000000f3334192d15450cdd385c8b70e03f9a6bd9e673b81565b6040516001600160a01b03909116815260200161012a565b3480156101f6575f80fd5b5061021e7f00000000000000000000000000000000000000000000000000000000000000c881565b60405160029190910b815260200161012a565b34801561023c575f80fd5b506101d37f00000000000000000000000058daec3116aae6d93017baaea7749052e8a04fa781565b34801561026f575f80fd5b506101476103e881565b348015610284575f80fd5b50610298610293366004611df8565b6107ee565b60405161012a9190611e94565b3480156102b0575f80fd5b506101d37f000000000000000000000000b726088be96c36f4e058853f62a226cf39b431b881565b3480156102e3575f80fd5b506101d37f0000000000000000000000008366a39cc670b4001a1121b8f6a443a643e4095181565b348015610316575f80fd5b5061019e610325366004611ea6565b610c2d565b348015610335575f80fd5b506101d37f00000000000000000000000000f0b7b5111ee8fa10f803d5f489842066d46ed681565b6040805160a0810182525f808252602082018190529181018290526060810182905260808101919091526040518060a001604052805f6001600160a01b031681526020017f00000000000000000000000000f0b7b5111ee8fa10f803d5f489842066d46ed66001600160a01b031681526020017f000000000000000000000000000000000000000000000000000000000000c35062ffffff1681526020017f00000000000000000000000000000000000000000000000000000000000000c860020b81526020015f6001600160a01b0316815250905090565b5f80549081900361047b5760405162461bcd60e51b815260206004820152600a6024820152691b9bdd081b1bd8dad95960b21b60448201526064015b60405180910390fd5b60015460ff16156104bb5760405162461bcd60e51b815260206004820152600a6024820152697265656e7472616e637960b01b6044820152606401610472565b6104c481611014565b5f6104cd6111cd565b6040516370a0823160e01b815230600482015290915047905f907f00000000000000000000000000f0b7b5111ee8fa10f803d5f489842066d46ed66001600160a01b0316906370a0823190602401602060405180830381865afa158015610536573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061055a9190611ebd565b90505f61056782856112c2565b90505f6105748285611ee8565b9050805f036105cb57604080515f80825260208201819052818301819052606082015290517f4c0f499ffe6befa0ca7c826b0916cf87bea98de658013e76938489368d60d5099181900360800190a1505050505050565b5f60026105d9600584611f0f565b6105e39190611f0f565b90505f6105f9856105f4848a61130c565b61134e565b90505f806106078388611f22565b9050801561061c57610619818a611365565b91505b5f610627478661134e565b90505f806106368d8488611491565b90925090505f4780158015906106ca57505f7f000000000000000000000000b726088be96c36f4e058853f62a226cf39b431b86001600160a01b0316633a98ef396040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106a4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106c89190611ebd565b115b156107955762061a805a116107215760405162461bcd60e51b815260206004820152601c60248201527f696e73756666696369656e742067617320666f72206465706f736974000000006044820152606401610472565b7f000000000000000000000000b726088be96c36f4e058853f62a226cf39b431b86001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004015f604051808303818588803b15801561077a575f80fd5b505af19350505050801561078c575060015b15610795578091505b6040805183815260208101869052908101849052606081018890527f4c0f499ffe6befa0ca7c826b0916cf87bea98de658013e76938489368d60d5099060800160405180910390a1505050505050505050505050505050565b6060336001600160a01b037f0000000000000000000000008366a39cc670b4001a1121b8f6a443a643e40951161461085b5760405162461bcd60e51b815260206004820152601060248201526f3737ba103837b7b61036b0b730b3b2b960811b6044820152606401610472565b60015460ff1661089e5760405162461bcd60e51b815260206004820152600e60248201526d6e6f742068617276657374696e6760901b6044820152606401610472565b5f806108ac84860186611f4c565b915091505f7f0000000000000000000000008366a39cc670b4001a1121b8f6a443a643e409516001600160a01b031663f3cd914c6108e861035d565b60408051606081019091525f81526020810161090388611f7a565b8152602001866001600160a01b03168152506040518363ffffffff1660e01b8152600401610932929190611f94565b6020604051808303815f875af115801561094e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109729190611ebd565b90505f61097f82600f0b90565b600f0b61098b90611f7a565b6001600160801b031690505f6109a18360801d90565b6001600160801b031690508115610b7c57604051632961046560e21b81526001600160a01b037f00000000000000000000000000f0b7b5111ee8fa10f803d5f489842066d46ed6811660048301527f0000000000000000000000008366a39cc670b4001a1121b8f6a443a643e40951169063a5841194906024015f604051808303815f87803b158015610a32575f80fd5b505af1158015610a44573d5f803e3d5ffd5b505060405163a9059cbb60e01b81526001600160a01b037f0000000000000000000000008366a39cc670b4001a1121b8f6a443a643e4095181166004830152602482018690527f00000000000000000000000000f0b7b5111ee8fa10f803d5f489842066d46ed616925063a9059cbb91506044016020604051808303815f875af1158015610ad4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610af89190611fde565b507f0000000000000000000000008366a39cc670b4001a1121b8f6a443a643e409516001600160a01b03166311da60b46040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610b56573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b7a9190611ebd565b505b8015610c0457604051630b0d9c0960e01b81525f6004820152306024820152604481018290527f0000000000000000000000008366a39cc670b4001a1121b8f6a443a643e409516001600160a01b031690630b0d9c09906064015f604051808303815f87803b158015610bed575f80fd5b505af1158015610bff573d5f803e3d5ffd5b505050505b604080516020810184905201604051602081830303815290604052955050505050505b92915050565b5f5415610c6d5760405162461bcd60e51b815260206004820152600e60248201526d185b1c9958591e481b1bd8dad95960921b6044820152606401610472565b805f03610ca65760405162461bcd60e51b81526020600482015260076024820152661e995c9bc81a5960ca1b6044820152606401610472565b6040516331a9108f60e11b81526004810182905230906001600160a01b037f00000000000000000000000058daec3116aae6d93017baaea7749052e8a04fa71690636352211e90602401602060405180830381865afa158015610d0b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d2f9190611ffd565b6001600160a01b031614610d7a5760405162461bcd60e51b81526020600482015260126024820152711c1bdcda5d1a5bdb881b9bdd081bdddb995960721b6044820152606401610472565b604051637ba03aad60e01b8152600481018290525f907f00000000000000000000000058daec3116aae6d93017baaea7749052e8a04fa76001600160a01b031690637ba03aad9060240160c060405180830381865afa158015610ddf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e039190612080565b5080519091506001600160a01b031615610e565760405162461bcd60e51b815260206004820152601460248201527363757272656e637930206e6f74206e617469766560601b6044820152606401610472565b7f00000000000000000000000000f0b7b5111ee8fa10f803d5f489842066d46ed66001600160a01b031681602001516001600160a01b031614610ec95760405162461bcd60e51b815260206004820152600b60248201526a3bb937b733903a37b5b2b760a91b6044820152606401610472565b7f000000000000000000000000000000000000000000000000000000000000c35062ffffff16816040015162ffffff1614610f325760405162461bcd60e51b815260206004820152600960248201526877726f6e672066656560b81b6044820152606401610472565b7f00000000000000000000000000000000000000000000000000000000000000c860020b816060015160020b14610f9b5760405162461bcd60e51b815260206004820152600d60248201526c77726f6e672073706163696e6760981b6044820152606401610472565b60808101516001600160a01b031615610fe45760405162461bcd60e51b815260206004820152600b60248201526a1a1bdbdad959081c1bdbdb60aa1b6044820152606401610472565b5f82815560405183917f032bc66be43dbccb7487781d168eb7bda224628a3b2c3388bdf69b532a3a161191a25050565b604051600160f81b6020820152601160f81b60218201525f9060220160408051808303601f1901815260028084526060840190925292505f9190816020015b606081526020019060019003908161105357505060408051602080820183525f808352925193945061108c93879392839283920161212b565b604051602081830303815290604052815f815181106110ad576110ad612172565b602090810291909101810191909152604080515f928101929092526001600160a01b037f00000000000000000000000000f0b7b5111ee8fa10f803d5f489842066d46ed616908201523060608201526080016040516020818303038152906040528160018151811061112157611121612172565b60200260200101819052507f00000000000000000000000058daec3116aae6d93017baaea7749052e8a04fa76001600160a01b031663dd46508f838360405160200161116e929190612186565b604051602081830303815290604052426040518363ffffffff1660e01b815260040161119b9291906121fb565b5f604051808303815f87803b1580156111b2575f80fd5b505af11580156111c4573d5f803e3d5ffd5b50505050505050565b5f7f000000000000000000000000f3334192d15450cdd385c8b70e03f9a6bd9e673b6001600160a01b031663c815641c61120f61120861035d565b60a0902090565b6040518263ffffffff1660e01b815260040161122d91815260200190565b608060405180830381865afa158015611248573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061126c919061221c565b5091925050506001600160a01b0381166112bf5760405162461bcd60e51b81526020600482015260146024820152731c1bdbdb081b9bdd081a5b9a5d1a585b1a5e995960621b6044820152606401610472565b90565b5f825f036112d157505f610c27565b5f6112ea84600160601b856001600160a01b03166118ba565b905061130481600160601b856001600160a01b03166118ba565b949350505050565b5f825f0361131b57505f610c27565b5f61133484846001600160a01b0316600160601b6118ba565b905061130481846001600160a01b0316600160601b6118ba565b5f81831061135c578161135e565b825b9392505050565b5f8061137f836001600160a01b03166103e8614e206118ba565b611392906001600160a01b038516611ee8565b6001805460ff1916811790556040519091505f906001600160a01b037f0000000000000000000000008366a39cc670b4001a1121b8f6a443a643e4095116906348c89491906113f990889086906020019182526001600160a01b0316602082015260400190565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016114249190611e94565b5f604051808303815f875af115801561143f573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611466919081019061226f565b6001805460ff1916905580519091506114889082016020908101908301611ebd565b95945050505050565b5f8083158061149e575082155b156114ad57505f9050806118b2565b5f6114b66111cd565b90505f7f00000000000000000000000000000000000000000000000000000000000000c86114e881620d89e719612303565b6114f2919061233b565b90505f7f00000000000000000000000000000000000000000000000000000000000000c861152381620d89e8612303565b61152d919061233b565b90505f61154d8461153d85611956565b61154685611956565b8b8b611c0e565b9050806001600160801b03165f0361156e575f8095509550505050506118b2565b6040516370a0823160e01b815230600482015247905f907f00000000000000000000000000f0b7b5111ee8fa10f803d5f489842066d46ed66001600160a01b0316906370a0823190602401602060405180830381865afa1580156115d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115f89190611ebd565b604080515f60208201819052600d60f81b6021830152600560fa1b602283015282516003818403810182526023840181815260a38501909552949550939092916043015b606081526020019060019003908161163c5790505090508c856001600160801b03168d8d60405180602001604052805f81525060405160200161168395949392919061212b565b604051602081830303815290604052815f815181106116a4576116a4612172565b60200260200101819052505f7f00000000000000000000000000f0b7b5111ee8fa10f803d5f489842066d46ed66040516020016116f79291906001600160a01b0392831681529116602082015260400190565b6040516020818303038152906040528160018151811061171957611719612172565b602090810291909101810191909152604080515f928101929092526001908201526060016040516020818303038152906040528160028151811061175f5761175f612172565b60200260200101819052507f00000000000000000000000058daec3116aae6d93017baaea7749052e8a04fa76001600160a01b031663dd46508f8d84846040516020016117ad929190612186565b604051602081830303815290604052426040518463ffffffff1660e01b81526004016117da9291906121fb565b5f604051808303818588803b1580156117f1575f80fd5b505af1158015611803573d5f803e3d5ffd5b505050505047846118149190611f22565b6040516370a0823160e01b8152306004820152909a507f00000000000000000000000000f0b7b5111ee8fa10f803d5f489842066d46ed66001600160a01b0316906370a0823190602401602060405180830381865afa158015611879573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061189d9190611ebd565b6118a79084611f22565b985050505050505050505b935093915050565b5f838302815f19858709828110838203039150508084116118d9575f80fd5b805f036118eb5750829004905061135e565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b60020b5f60ff82901d80830118620d89e881111561197f5761197f6345c3193d60e11b84611ccd565b7001fffcb933bd6fad37aa2d162d1a5940016001821602600160801b1860028216156119bb576ffff97272373d413259a46990580e213a0260801c5b60048216156119da576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b60088216156119f9576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615611a18576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615611a37576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615611a56576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615611a75576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615611a95576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615611ab5576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615611ad5576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615611af5576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615611b15576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615611b35576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615611b55576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615611b75576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615611b96576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615611bb6576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615611bd5576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615611bf2576b048a170391f7dc42444e8fa20260801c5b5f841315611bfe575f19045b63ffffffff0160201c9392505050565b5f836001600160a01b0316856001600160a01b03161115611c2d579293925b846001600160a01b0316866001600160a01b031611611c5857611c51858585611cdc565b9050611488565b836001600160a01b0316866001600160a01b03161015611cb8575f611c7e878686611cdc565b90505f611c8c878986611d3d565b9050806001600160801b0316826001600160801b031610611cad5780611caf565b815b92505050611488565b611cc3858584611d3d565b9695505050505050565b815f528060020b60045260245ffd5b5f826001600160a01b0316846001600160a01b03161115611cfb579192915b5f611d1d856001600160a01b0316856001600160a01b0316600160601b6118ba565b9050611488611d3884838888036001600160a01b03166118ba565b611d79565b5f826001600160a01b0316846001600160a01b03161115611d5c579192915b611304611d3883600160601b8787036001600160a01b03166118ba565b806001600160801b0381168114611d9a57611d9a6393dafdf160e01b611d9f565b919050565b805f5260045ffd5b80516001600160a01b03908116835260208083015182169084015260408083015162ffffff169084015260608083015160020b9084015260809182015116910152565b60a08101610c278284611da7565b5f8060208385031215611e09575f80fd5b823567ffffffffffffffff811115611e1f575f80fd5b8301601f81018513611e2f575f80fd5b803567ffffffffffffffff811115611e45575f80fd5b856020828401011115611e56575f80fd5b6020919091019590945092505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61135e6020830184611e66565b5f60208284031215611eb6575f80fd5b5035919050565b5f60208284031215611ecd575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610c2757610c27611ed4565b634e487b7160e01b5f52601260045260245ffd5b5f82611f1d57611f1d611efb565b500490565b81810381811115610c2757610c27611ed4565b6001600160a01b0381168114611f49575f80fd5b50565b5f8060408385031215611f5d575f80fd5b823591506020830135611f6f81611f35565b809150509250929050565b5f600160ff1b8201611f8e57611f8e611ed4565b505f0390565b611f9e8184611da7565b8151151560a0820152602082015160c08201526040909101516001600160a01b031660e082015261012061010082018190525f9082015261014001919050565b5f60208284031215611fee575f80fd5b8151801515811461135e575f80fd5b5f6020828403121561200d575f80fd5b815161135e81611f35565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561205557612055612018565b604052919050565b805162ffffff81168114611d9a575f80fd5b8051600281900b8114611d9a575f80fd5b5f8082840360c0811215612092575f80fd5b60a081121561209f575f80fd5b5060405160a0810167ffffffffffffffff811182821017156120c3576120c3612018565b60405283516120d181611f35565b815260208401516120e181611f35565b60208201526120f26040850161205d565b60408201526121036060850161206f565b6060820152608084015161211681611f35565b608082015260a0939093015192949293505050565b8581528460208201526001600160801b03841660408201526001600160801b038316606082015260a060808201525f61216760a0830184611e66565b979650505050505050565b634e487b7160e01b5f52603260045260245ffd5b604081525f6121986040830185611e66565b828103602084015280845180835260208301915060208160051b840101602087015f5b838110156121ed57601f198684030185526121d7838351611e66565b60209586019590935091909101906001016121bb565b509098975050505050505050565b604081525f61220d6040830185611e66565b90508260208301529392505050565b5f805f806080858703121561222f575f80fd5b845161223a81611f35565b93506122486020860161206f565b92506122566040860161205d565b91506122646060860161205d565b905092959194509250565b5f6020828403121561227f575f80fd5b815167ffffffffffffffff811115612295575f80fd5b8201601f810184136122a5575f80fd5b805167ffffffffffffffff8111156122bf576122bf612018565b6122d2601f8201601f191660200161202c565b8181528560208385010111156122e6575f80fd5b8160208401602083015e5f91810160200191909152949350505050565b5f8160020b8360020b8061231957612319611efb565b627fffff1982145f198214161561233257612332611ed4565b90059392505050565b5f8260020b8260020b028060020b915080821461235a5761235a611ed4565b509291505056fea2646970667358221220ec0ec57ce5a5f1130f2550c3f9c2a66e07dd604a22a138fe16125312ccece98a64736f6c634300081a0033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| DIH | 1 | $0.0000123 | $0 | |
| T-BILL (TBILL) | TBILL | 310,167,815.732843 | — | — |
| RobinHood Bounty (RHB) | RHB | 10 | — | — |
| Black Cat (CAT) | CAT | 7 | — | — |
| Uniswap v4 Positions NFT (UNI-V4-POSM) | UNI-V4-POSM | 1 | — | — |
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0xbb3998…853f2c | 5 days agoMon, 10 Aug 2026 11:52:06 UTC | 0x4c0f49…d509 | data: 0x000000000000000000…0965e42d |
| 0x1438f4…d349fb | 5 days agoMon, 10 Aug 2026 01:09:41 UTC | 0x4c0f49…d509 | data: 0x000000000000000000…d8b83c4b |
| 0x71c9e8…fd786e | 6 days agoSun, 09 Aug 2026 08:00:38 UTC | 0x4c0f49…d509 | data: 0x000000000000000000…00000000 |
| 0x379b12…2945eb | 6 days agoSun, 09 Aug 2026 02:01:47 UTC | 0x4c0f49…d509 | data: 0x000000000000000000…00000000 |
| 0x19453f…3d2a48 | 7 days agoSat, 08 Aug 2026 20:04:35 UTC | 0x4c0f49…d509 | data: 0x000000000000000000…ca9e9340 |
| 0xc22c55…93538c | 7 days agoSat, 08 Aug 2026 14:01:11 UTC | 0x4c0f49…d509 | data: 0x000000000000000000…fa955d90 |
| 0x7903fb…ea78e4 | 7 days agoSat, 08 Aug 2026 08:00:52 UTC | 0x4c0f49…d509 | data: 0x000000000000000000…fe34b64c |
| 0xbe1711…973eae | 7 days agoSat, 08 Aug 2026 02:04:51 UTC | 0x4c0f49…d509 | data: 0x000000000000000000…d4cb83f9 |
| 0x412553…941798 | 8 days agoFri, 07 Aug 2026 20:03:17 UTC | 0x4c0f49…d509 | data: 0x000000000000000000…4303cf7d |
| 0x0ddc8d…b73fdc | 8 days agoFri, 07 Aug 2026 14:00:40 UTC | 0x4c0f49…d509 | data: 0x000000000000000000…a713cbc1 |
| 0x404355…5d4128 | 8 days agoFri, 07 Aug 2026 08:03:43 UTC | 0x4c0f49…d509 | data: 0x000000000000000000…66b86bb9 |
| 0xf63bff…4ca8ee | 8 days agoFri, 07 Aug 2026 02:04:03 UTC | 0x4c0f49…d509 | data: 0x000000000000000000…dcf6dbad |
| 0x165e21…3c87c9 | 9 days agoThu, 06 Aug 2026 20:02:38 UTC | 0x4c0f49…d509 | data: 0x000000000000000000…550bddad |
| 0x91fb9e…8c41aa | 9 days agoThu, 06 Aug 2026 14:04:06 UTC | 0x4c0f49…d509 | data: 0x000000000000000000…5021df18 |
| 0x56edab…1275d5 | 9 days agoThu, 06 Aug 2026 08:01:56 UTC | 0x4c0f49…d509 | data: 0x000000000000000000…19adb704 |
| 0x21d133…57b073 | 9 days agoThu, 06 Aug 2026 02:01:32 UTC | 0x4c0f49…d509 | data: 0x000000000000000000…a9859557 |
| 0x3eb51e…0e5e4b | 10 days agoWed, 05 Aug 2026 20:03:24 UTC | 0x4c0f49…d509 | data: 0x000000000000000000…c99f83a9 |
| 0x7c3a62…940dfd | 10 days agoWed, 05 Aug 2026 14:01:24 UTC | 0x4c0f49…d509 | data: 0x000000000000000000…e0e18c6f |
| 0x8f660b…eed77e | 10 days agoWed, 05 Aug 2026 08:00:56 UTC | 0x4c0f49…d509 | data: 0x000000000000000000…567d25e7 |
| 0x3d8a0f…7aad4e | 10 days agoWed, 05 Aug 2026 02:03:09 UTC | 0x4c0f49…d509 | data: 0x000000000000000000…7751a53c |
| 0x0f6894…f3ef37 | 11 days agoTue, 04 Aug 2026 20:02:39 UTC | 0x4c0f49…d509 | data: 0x000000000000000000…9cc61fe7 |
| 0x26aa89…db24ea | 11 days agoTue, 04 Aug 2026 14:00:50 UTC | 0x4c0f49…d509 | data: 0x000000000000000000…48a273a0 |
| 0xb5902b…49e2af | 11 days agoTue, 04 Aug 2026 08:04:53 UTC | 0x4c0f49…d509 | data: 0x000000000000000000…b7c0e368 |
| 0xd9baf3…af6fd6 | 11 days agoTue, 04 Aug 2026 02:01:16 UTC | 0x4c0f49…d509 | data: 0x000000000000000000…0018bc00 |
| 0xb88021…68c008 | 12 days agoMon, 03 Aug 2026 14:01:03 UTC | 0x4c0f49…d509 | data: 0x000000000000000000…127d090b |
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0xbb3998…853f2c | harvest | 32,776,713 | 5 days agoMon, 10 Aug 2026 11:52:06 UTC | 0x6a0e…b6c5 | IN | LockerV2 | $0.000 ETH | 0.00005272 | |
| 0x1438f4…d349fb | harvest | 32,392,158 | 5 days agoMon, 10 Aug 2026 01:09:41 UTC | 0x6a0e…b6c5 | IN | LockerV2 | $0.000 ETH | 0.00005751 | |
| 0x71c9e8…fd786e | harvest | 31,775,613 | 6 days agoSun, 09 Aug 2026 08:00:38 UTC | 0x153a…c7f7 | IN | LockerV2 | $0.000 ETH | 0.00000284 | |
| 0x379b12…2945eb | harvest | 31,560,825 | 6 days agoSun, 09 Aug 2026 02:01:47 UTC | 0x153a…c7f7 | IN | LockerV2 | $0.000 ETH | 0.00004447 | |
| 0x19453f…3d2a48 | harvest | 31,346,787 | 7 days agoSat, 08 Aug 2026 20:04:35 UTC | 0x153a…c7f7 | IN | LockerV2 | $0.000 ETH | 0.00006009 | |
| 0xc22c55…93538c | harvest | 31,128,959 | 7 days agoSat, 08 Aug 2026 14:01:11 UTC | 0x153a…c7f7 | IN | LockerV2 | $0.000 ETH | 0.00005753 | |
| 0x7903fb…ea78e4 | harvest | 30,913,352 | 7 days agoSat, 08 Aug 2026 08:00:52 UTC | 0x153a…c7f7 | IN | LockerV2 | $0.000 ETH | 0.00006154 | |
| 0xbe1711…973eae | harvest | 30,700,293 | 7 days agoSat, 08 Aug 2026 02:04:51 UTC | 0x153a…c7f7 | IN | LockerV2 | $0.000 ETH | 0.00006402 | |
| 0x412553…941798 | harvest | 30,483,475 | 8 days agoFri, 07 Aug 2026 20:03:17 UTC | 0x153a…c7f7 | IN | LockerV2 | $0.000 ETH | 0.00006051 | |
| 0x0ddc8d…b73fdc | harvest | 30,266,268 | 8 days agoFri, 07 Aug 2026 14:00:40 UTC | 0x153a…c7f7 | IN | LockerV2 | $0.000 ETH | 0.00006096 | |
| 0x404355…5d4128 | harvest | 30,052,742 | 8 days agoFri, 07 Aug 2026 08:03:43 UTC | 0x153a…c7f7 | IN | LockerV2 | $0.000 ETH | 0.00006435 | |
| 0xf63bff…4ca8ee | harvest | 29,837,645 | 8 days agoFri, 07 Aug 2026 02:04:03 UTC | 0x153a…c7f7 | IN | LockerV2 | $0.000 ETH | 0.00006700 | |
| 0x165e21…3c87c9 | harvest | 29,620,717 | 9 days agoThu, 06 Aug 2026 20:02:38 UTC | 0x153a…c7f7 | IN | LockerV2 | $0.000 ETH | 0.00006258 | |
| 0x91fb9e…8c41aa | harvest | 29,405,941 | 9 days agoThu, 06 Aug 2026 14:04:06 UTC | 0x153a…c7f7 | IN | LockerV2 | $0.000 ETH | 0.00005910 | |
| 0x56edab…1275d5 | harvest | 29,189,168 | 9 days agoThu, 06 Aug 2026 08:01:56 UTC | 0x153a…c7f7 | IN | LockerV2 | $0.000 ETH | 0.00005506 | |
| 0x21d133…57b073 | harvest | 28,973,364 | 9 days agoThu, 06 Aug 2026 02:01:32 UTC | 0x153a…c7f7 | IN | LockerV2 | $0.000 ETH | 0.00005349 | |
| 0x3eb51e…0e5e4b | harvest | 28,758,671 | 10 days agoWed, 05 Aug 2026 20:03:24 UTC | 0x153a…c7f7 | IN | LockerV2 | $0.000 ETH | 0.00005125 | |
| 0x7c3a62…940dfd | harvest | 28,541,374 | 10 days agoWed, 05 Aug 2026 14:01:24 UTC | 0x153a…c7f7 | IN | LockerV2 | $0.000 ETH | 0.00004299 | |
| 0x8f660b…eed77e | harvest | 28,325,723 | 10 days agoWed, 05 Aug 2026 08:00:56 UTC | 0x153a…c7f7 | IN | LockerV2 | $0.000 ETH | 0.00004228 | |
| 0x3d8a0f…7aad4e | harvest | 28,111,675 | 10 days agoWed, 05 Aug 2026 02:03:09 UTC | 0x153a…c7f7 | IN | LockerV2 | $0.000 ETH | 0.00004442 | |
| 0x0f6894…f3ef37 | harvest | 27,895,980 | 11 days agoTue, 04 Aug 2026 20:02:39 UTC | 0x153a…c7f7 | IN | LockerV2 | $0.000 ETH | 0.00004486 | |
| 0x26aa89…db24ea | harvest | 27,679,581 | 11 days agoTue, 04 Aug 2026 14:00:50 UTC | 0x153a…c7f7 | IN | LockerV2 | $0.000 ETH | 0.00004170 | |
| 0xb5902b…49e2af | harvest | 27,466,640 | 11 days agoTue, 04 Aug 2026 08:04:53 UTC | 0x153a…c7f7 | IN | LockerV2 | $0.000 ETH | 0.00004100 | |
| 0xd9baf3…af6fd6 | harvest | 27,249,057 | 11 days agoTue, 04 Aug 2026 02:01:16 UTC | 0x153a…c7f7 | IN | LockerV2 | $0.000 ETH | 0.00004049 | |
| 0xb88021…68c008 | harvest | 26,817,712 | 12 days agoMon, 03 Aug 2026 14:01:03 UTC | 0x153a…c7f7 | IN | LockerV2 | $0.000 ETH | 0.00004208 |
| Transaction Hash | Method | Block | Age | From | To | Type | Item | ||
|---|---|---|---|---|---|---|---|---|---|
| 0xe6a81acf…400983 | Transfer | 9,257,006 | 32 days agoTue, 14 Jul 2026 04:53:35 UTC | 0x0000…0000 | IN | 0xae3f…b02b | Mint | Uniswap v4 Positions NFT (UNI-V4-POSM) #85299 |
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| 0xbb39988c…853f2c | Transfer | 32,776,713 | 5 days agoMon, 10 Aug 2026 11:52:06 UTC | 0xae3f…b02b | OUT | 0x8366…0951 | 10,127,887,512.257138 TBILL | T-BILL (TBILL) | |
| 0xbb39988c…853f2c | Transfer | 32,776,713 | 5 days agoMon, 10 Aug 2026 11:52:06 UTC | 0xae3f…b02b | OUT | 0x8366…0951 | 59,941,805,314.013519 TBILL | T-BILL (TBILL) | |
| 0xbb39988c…853f2c | Transfer | 32,776,713 | 5 days agoMon, 10 Aug 2026 11:52:06 UTC | 0x8366…0951 | IN | 0xae3f…b02b | 69,595,689,550.855716 TBILL | T-BILL (TBILL) | |
| 0x1438f451…d349fb | Transfer | 32,392,158 | 5 days agoMon, 10 Aug 2026 01:09:41 UTC | 0xae3f…b02b | OUT | 0x8366…0951 | 31,768,574,300.278951 TBILL | T-BILL (TBILL) | |
| 0x1438f451…d349fb | Transfer | 32,392,158 | 5 days agoMon, 10 Aug 2026 01:09:41 UTC | 0xae3f…b02b | OUT | 0x8366…0951 | 151,759,481,704.543682 TBILL | T-BILL (TBILL) | |
| 0x1438f451…d349fb | Transfer | 32,392,158 | 5 days agoMon, 10 Aug 2026 01:09:41 UTC | 0x8366…0951 | IN | 0xae3f…b02b | 184,312,227,095.970447 TBILL | T-BILL (TBILL) | |
| 0x379b12bf…2945eb | Transfer | 31,560,825 | 6 days agoSun, 09 Aug 2026 02:01:47 UTC | 0xae3f…b02b | OUT | 0x8366…0951 | 14,945,896.621119 TBILL | T-BILL (TBILL) | |
| 0x379b12bf…2945eb | Transfer | 31,560,825 | 6 days agoSun, 09 Aug 2026 02:01:47 UTC | 0x8366…0951 | IN | 0xae3f…b02b | 10,153,258.138369 TBILL | T-BILL (TBILL) | |
| 0x19453f4a…3d2a48 | Transfer | 31,346,787 | 7 days agoSat, 08 Aug 2026 20:04:35 UTC | 0xae3f…b02b | OUT | 0x8366…0951 | 98,059,152.276743 TBILL | T-BILL (TBILL) | |
| 0x19453f4a…3d2a48 | Transfer | 31,346,787 | 7 days agoSat, 08 Aug 2026 20:04:35 UTC | 0xae3f…b02b | OUT | 0x8366…0951 | 925,666,116.835906 TBILL | T-BILL (TBILL) | |
| 0x19453f4a…3d2a48 | Transfer | 31,346,787 | 7 days agoSat, 08 Aug 2026 20:04:35 UTC | 0x8366…0951 | IN | 0xae3f…b02b | 1,011,023,836.469291 TBILL | T-BILL (TBILL) | |
| 0xc22c5593…93538c | Transfer | 31,128,959 | 7 days agoSat, 08 Aug 2026 14:01:11 UTC | 0xae3f…b02b | OUT | 0x8366…0951 | 357,932,455.703724 TBILL | T-BILL (TBILL) | |
| 0xc22c5593…93538c | Transfer | 31,128,959 | 7 days agoSat, 08 Aug 2026 14:01:11 UTC | 0xae3f…b02b | OUT | 0x8366…0951 | 3,378,838,741.468929 TBILL | T-BILL (TBILL) | |
| 0xc22c5593…93538c | Transfer | 31,128,959 | 7 days agoSat, 08 Aug 2026 14:01:11 UTC | 0x8366…0951 | IN | 0xae3f…b02b | 3,752,867,821.807959 TBILL | T-BILL (TBILL) | |
| 0x7903fbed…ea78e4 | Transfer | 30,913,352 | 7 days agoSat, 08 Aug 2026 08:00:52 UTC | 0xae3f…b02b | OUT | 0x8366…0951 | 28,592,126.858758 TBILL | T-BILL (TBILL) | |
| 0x7903fbed…ea78e4 | Transfer | 30,913,352 | 7 days agoSat, 08 Aug 2026 08:00:52 UTC | 0xae3f…b02b | OUT | 0x8366…0951 | 269,906,160.146232 TBILL | T-BILL (TBILL) | |
| 0x7903fbed…ea78e4 | Transfer | 30,913,352 | 7 days agoSat, 08 Aug 2026 08:00:52 UTC | 0x8366…0951 | IN | 0xae3f…b02b | 185,108,365.861791 TBILL | T-BILL (TBILL) | |
| 0xbe171154…973eae | Transfer | 30,700,293 | 7 days agoSat, 08 Aug 2026 02:04:51 UTC | 0xae3f…b02b | OUT | 0x8366…0951 | 2,371,866,477.770462 TBILL | T-BILL (TBILL) | |
| 0xbe171154…973eae | Transfer | 30,700,293 | 7 days agoSat, 08 Aug 2026 02:04:51 UTC | 0xae3f…b02b | OUT | 0x8366…0951 | 22,174,508,633.43616 TBILL | T-BILL (TBILL) | |
| 0xbe171154…973eae | Transfer | 30,700,293 | 7 days agoSat, 08 Aug 2026 02:04:51 UTC | 0x8366…0951 | IN | 0xae3f…b02b | 24,633,291,591.201431 TBILL | T-BILL (TBILL) | |
| 0x412553f2…941798 | Transfer | 30,483,475 | 8 days agoFri, 07 Aug 2026 20:03:17 UTC | 0xae3f…b02b | OUT | 0x8366…0951 | 4,256,042,820.023810 TBILL | T-BILL (TBILL) | |
| 0x412553f2…941798 | Transfer | 30,483,475 | 8 days agoFri, 07 Aug 2026 20:03:17 UTC | 0xae3f…b02b | OUT | 0x8366…0951 | 5,383,194,731.553738 TBILL | T-BILL (TBILL) | |
| 0x412553f2…941798 | Transfer | 30,483,475 | 8 days agoFri, 07 Aug 2026 20:03:17 UTC | 0x8366…0951 | IN | 0xae3f…b02b | 9,592,432,714.565371 TBILL | T-BILL (TBILL) | |
| 0x0ddc8df6…b73fdc | Transfer | 30,266,268 | 8 days agoFri, 07 Aug 2026 14:00:40 UTC | 0xae3f…b02b | OUT | 0x8366…0951 | 1,854,441,995.156149 TBILL | T-BILL (TBILL) | |
| 0x0ddc8df6…b73fdc | Transfer | 30,266,268 | 8 days agoFri, 07 Aug 2026 14:00:40 UTC | 0xae3f…b02b | OUT | 0x8366…0951 | 14,424,733,071.843772 TBILL | T-BILL (TBILL) |
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| 32,776,713 | 5 days agoMon, 10 Aug 2026 11:52:06 UTC | 0xbb3998…853f2c | CALL | harvest | 0xae3f…b02b | OUT | 0xb726…31b8 | 0.00097 ETH |
| 32,776,713 | 5 days agoMon, 10 Aug 2026 11:52:06 UTC | 0xbb3998…853f2c | CALL | harvest | 0x58da…4fa7 | IN | 0xae3f…b02b | 0.00000 ETH |
| 32,776,713 | 5 days agoMon, 10 Aug 2026 11:52:06 UTC | 0xbb3998…853f2c | CALL | harvest | 0xae3f…b02b | OUT | 0x58da…4fa7 | 0.00012 ETH |
| 32,776,713 | 5 days agoMon, 10 Aug 2026 11:52:06 UTC | 0xbb3998…853f2c | CALL | harvest | 0x8366…0951 | IN | 0xae3f…b02b | 0.00068 ETH |
| 32,776,713 | 5 days agoMon, 10 Aug 2026 11:52:06 UTC | 0xbb3998…853f2c | CALL | harvest | 0x8366…0951 | IN | 0xae3f…b02b | 0.00041 ETH |
| 32,392,158 | 5 days agoMon, 10 Aug 2026 01:09:41 UTC | 0x1438f4…d349fb | CALL | harvest | 0xae3f…b02b | OUT | 0xb726…31b8 | 0.00357 ETH |
| 32,392,158 | 5 days agoMon, 10 Aug 2026 01:09:41 UTC | 0x1438f4…d349fb | CALL | harvest | 0x58da…4fa7 | IN | 0xae3f…b02b | 0.00000 ETH |
| 32,392,158 | 5 days agoMon, 10 Aug 2026 01:09:41 UTC | 0x1438f4…d349fb | CALL | harvest | 0xae3f…b02b | OUT | 0x58da…4fa7 | 0.00046 ETH |
| 32,392,158 | 5 days agoMon, 10 Aug 2026 01:09:41 UTC | 0x1438f4…d349fb | CALL | harvest | 0x8366…0951 | IN | 0xae3f…b02b | 0.00203 ETH |
| 32,392,158 | 5 days agoMon, 10 Aug 2026 01:09:41 UTC | 0x1438f4…d349fb | CALL | harvest | 0x8366…0951 | IN | 0xae3f…b02b | 0.00199 ETH |
| 31,346,787 | 7 days agoSat, 08 Aug 2026 20:04:35 UTC | 0x19453f…3d2a48 | CALL | harvest | 0xae3f…b02b | OUT | 0xb726…31b8 | 0.00001 ETH |
| 31,346,787 | 7 days agoSat, 08 Aug 2026 20:04:35 UTC | 0x19453f…3d2a48 | CALL | harvest | 0x58da…4fa7 | IN | 0xae3f…b02b | 0.00000 ETH |
| 31,346,787 | 7 days agoSat, 08 Aug 2026 20:04:35 UTC | 0x19453f…3d2a48 | CALL | harvest | 0xae3f…b02b | OUT | 0x58da…4fa7 | 0.00000 ETH |
| 31,346,787 | 7 days agoSat, 08 Aug 2026 20:04:35 UTC | 0x19453f…3d2a48 | CALL | harvest | 0x8366…0951 | IN | 0xae3f…b02b | 0.00001 ETH |
| 31,128,959 | 7 days agoSat, 08 Aug 2026 14:01:11 UTC | 0xc22c55…93538c | CALL | harvest | 0xae3f…b02b | OUT | 0xb726…31b8 | 0.00004 ETH |
| 31,128,959 | 7 days agoSat, 08 Aug 2026 14:01:11 UTC | 0xc22c55…93538c | CALL | harvest | 0x58da…4fa7 | IN | 0xae3f…b02b | 0.00000 ETH |
| 31,128,959 | 7 days agoSat, 08 Aug 2026 14:01:11 UTC | 0xc22c55…93538c | CALL | harvest | 0xae3f…b02b | OUT | 0x58da…4fa7 | 0.00000 ETH |
| 31,128,959 | 7 days agoSat, 08 Aug 2026 14:01:11 UTC | 0xc22c55…93538c | CALL | harvest | 0x8366…0951 | IN | 0xae3f…b02b | 0.00004 ETH |
| 30,913,352 | 7 days agoSat, 08 Aug 2026 08:00:52 UTC | 0x7903fb…ea78e4 | CALL | harvest | 0xae3f…b02b | OUT | 0xb726…31b8 | 0.00000 ETH |
| 30,913,352 | 7 days agoSat, 08 Aug 2026 08:00:52 UTC | 0x7903fb…ea78e4 | CALL | harvest | 0x58da…4fa7 | IN | 0xae3f…b02b | 0.00000 ETH |
| 30,913,352 | 7 days agoSat, 08 Aug 2026 08:00:52 UTC | 0x7903fb…ea78e4 | CALL | harvest | 0xae3f…b02b | OUT | 0x58da…4fa7 | 0.00000 ETH |
| 30,913,352 | 7 days agoSat, 08 Aug 2026 08:00:52 UTC | 0x7903fb…ea78e4 | CALL | harvest | 0x8366…0951 | IN | 0xae3f…b02b | 0.00000 ETH |
| 30,700,293 | 7 days agoSat, 08 Aug 2026 02:04:51 UTC | 0xbe1711…973eae | CALL | harvest | 0xae3f…b02b | OUT | 0xb726…31b8 | 0.00027 ETH |
| 30,700,293 | 7 days agoSat, 08 Aug 2026 02:04:51 UTC | 0xbe1711…973eae | CALL | harvest | 0x58da…4fa7 | IN | 0xae3f…b02b | 0.00000 ETH |
| 30,700,293 | 7 days agoSat, 08 Aug 2026 02:04:51 UTC | 0xbe1711…973eae | CALL | harvest | 0xae3f…b02b | OUT | 0x58da…4fa7 | 0.00003 ETH |