// SPDX-License-Identifier: MIT
pragma solidity 0.8.26;
/*
Gamma — Vault (V4)
The token launchpad on Robinhood Chain.
Holders earn real stock · liquidity locked for life · no owner keys.
Web https://gammahood.xyz
X https://x.com/gammahood
Deployed immutably on Robinhood Chain (chainId 4663).
*/
import {IPoolManager} from "@uniswap/v4-core/src/interfaces/IPoolManager.sol";
import {IUnlockCallback} from "@uniswap/v4-core/src/interfaces/callback/IUnlockCallback.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 {ModifyLiquidityParams} from "@uniswap/v4-core/src/types/PoolOperation.sol";
import {BalanceDelta} from "@uniswap/v4-core/src/types/BalanceDelta.sol";
import {CurrencySettler} from "@uniswap/v4-core/test/utils/CurrencySettler.sol";
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
import {ReentrancyGuard} from "@openzeppelin/contracts/utils/ReentrancyGuard.sol";
import {Ownable2Step, Ownable} from "@openzeppelin/contracts/access/Ownable2Step.sol";
/**
* @title GammaVault
* @notice Permanent custodian of a launch's V4 liquidity position. Collects the pool's fees and
* splits them: the QUOTE-side fees (the stock, e.g. AAPL) go platform / creator / holders,
* so holders earn the paired stock. The TOKEN-side fees go creator / platform.
*
* The liquidity is locked for life. Search this contract: there is NO negative
* `liquidityDelta` path, no `decreaseLiquidity`, no position transfer. `unlockCallback`
* hard-reverts on any negative liquidity delta, so even a malformed internal call cannot
* remove liquidity. Only fee collection (delta = 0) and the one-time seed are possible.
*/
contract GammaVault is IUnlockCallback, Ownable2Step, ReentrancyGuard {
using CurrencySettler for Currency;
using PoolIdLibrary for PoolKey;
using SafeERC20 for IERC20;
IPoolManager public immutable pm;
address public treasury;
/// @notice The factory, the only address allowed to open+seed positions. Set once.
address public factory;
bool private _factoryLocked;
struct Position {
address token;
address quoteToken;
address creator;
address feeRecipient; // creator payout
address rewards; // distributor for the holder share
int24 tickLower;
int24 tickUpper;
uint16 creatorBps; // share of fees to the creator
uint16 holderBps; // share of QUOTE fees to holders (platform floor => creator+holder <= 7000)
}
mapping(PoolId => Position) public positions;
enum Action { ADD, COLLECT }
event FeesSplit(
PoolId indexed id, uint256 quoteHolders, uint256 quoteCreator, uint256 quotePlatform,
uint256 tokenCreator, uint256 tokenPlatform
);
event FactorySet(address indexed factory);
event TreasuryUpdated(address indexed treasury);
error PlatformFloor();
error NotFactory();
error FactoryAlreadySet();
error AlreadySeeded();
error LiquidityWithdrawalForbidden();
error ZeroAddress();
constructor(IPoolManager _pm, address _treasury, address _owner) Ownable(_owner) {
if (address(_pm) == address(0) || _treasury == address(0) || _owner == address(0)) revert ZeroAddress();
pm = _pm;
treasury = _treasury;
}
// --- one-shot wiring -------------------------------------------------------------------
function setFactory(address f) external onlyOwner {
if (_factoryLocked) revert FactoryAlreadySet();
if (f == address(0)) revert ZeroAddress();
_factoryLocked = true;
factory = f;
emit FactorySet(f);
}
function setTreasury(address t) external onlyOwner {
if (t == address(0)) revert ZeroAddress();
treasury = t;
emit TreasuryUpdated(t);
}
// --- seed (factory only, once per pool) ------------------------------------------------
function openAndSeed(PoolKey calldata key, uint160 sqrtPriceX96, Position calldata p, uint256 liquidity)
external
nonReentrant
{
if (msg.sender != factory) revert NotFactory();
if (uint256(p.creatorBps) + p.holderBps > 7000) revert PlatformFloor(); // platform >= 30%
PoolId id = key.toId();
if (positions[id].creator != address(0)) revert AlreadySeeded();
positions[id] = p;
pm.initialize(key, sqrtPriceX96);
pm.unlock(abi.encode(Action.ADD, key, p.tickLower, p.tickUpper, int256(liquidity)));
}
// --- collect (permissionless: funds can only reach the fixed recipients) ---------------
function collect(PoolKey calldata key) external nonReentrant {
Position memory p = positions[key.toId()];
bytes memory res = pm.unlock(abi.encode(Action.COLLECT, key, p.tickLower, p.tickUpper, int256(0)));
(uint256 amt0, uint256 amt1) = abi.decode(res, (uint256, uint256));
bool quoteIs0 = Currency.unwrap(key.currency0) == p.quoteToken;
uint256 quoteAmt = quoteIs0 ? amt0 : amt1;
uint256 tokenAmt = quoteIs0 ? amt1 : amt0;
uint256 qHolders = (quoteAmt * p.holderBps) / 10000;
uint256 qCreator = (quoteAmt * p.creatorBps) / 10000;
uint256 qPlatform = quoteAmt - qHolders - qCreator;
_pay(p.quoteToken, p.rewards, qHolders);
_pay(p.quoteToken, p.feeRecipient, qCreator);
_pay(p.quoteToken, treasury, qPlatform);
uint256 tCreator = (tokenAmt * p.creatorBps) / 10000;
uint256 tPlatform = tokenAmt - tCreator;
_pay(p.token, p.feeRecipient, tCreator);
_pay(p.token, treasury, tPlatform);
emit FeesSplit(key.toId(), qHolders, qCreator, qPlatform, tCreator, tPlatform);
}
function unlockCallback(bytes calldata data) external returns (bytes memory) {
require(msg.sender == address(pm), "not pm");
(Action action, PoolKey memory key, int24 tl, int24 tu, int256 liqDelta) =
abi.decode(data, (Action, PoolKey, int24, int24, int256));
// The one guarantee that makes the lock real: liquidity can never decrease.
if (liqDelta < 0) revert LiquidityWithdrawalForbidden();
(BalanceDelta delta,) = pm.modifyLiquidity(key, ModifyLiquidityParams(tl, tu, liqDelta, bytes32(0)), "");
int128 d0 = delta.amount0();
int128 d1 = delta.amount1();
if (d0 < 0) key.currency0.settle(pm, address(this), uint256(uint128(-d0)), false);
if (d1 < 0) key.currency1.settle(pm, address(this), uint256(uint128(-d1)), false);
uint256 got0;
uint256 got1;
if (d0 > 0) { got0 = uint256(uint128(d0)); key.currency0.take(pm, address(this), got0, false); }
if (d1 > 0) { got1 = uint256(uint128(d1)); key.currency1.take(pm, address(this), got1, false); }
if (action == Action.COLLECT) return abi.encode(got0, got1);
return "";
}
function _pay(address token, address to, uint256 amt) internal {
if (amt != 0) IERC20(token).safeTransfer(to, amt);
}
}[
{
"type": "constructor",
"inputs": [
{
"name": "_pm",
"type": "address",
"internalType": "contract IPoolManager"
},
{
"name": "_treasury",
"type": "address",
"internalType": "address"
},
{
"name": "_owner",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "nonpayable"
},
{
"name": "AlreadySeeded",
"type": "error",
"inputs": []
},
{
"name": "FactoryAlreadySet",
"type": "error",
"inputs": []
},
{
"name": "LiquidityWithdrawalForbidden",
"type": "error",
"inputs": []
},
{
"name": "NotFactory",
"type": "error",
"inputs": []
},
{
"name": "OwnableInvalidOwner",
"type": "error",
"inputs": [
{
"name": "owner",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "OwnableUnauthorizedAccount",
"type": "error",
"inputs": [
{
"name": "account",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "PlatformFloor",
"type": "error",
"inputs": []
},
{
"name": "ReentrancyGuardReentrantCall",
"type": "error",
"inputs": []
},
{
"name": "SafeERC20FailedOperation",
"type": "error",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "ZeroAddress",
"type": "error",
"inputs": []
},
{
"name": "FactorySet",
"type": "event",
"inputs": [
{
"name": "factory",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "FeesSplit",
"type": "event",
"inputs": [
{
"name": "id",
"type": "bytes32",
"indexed": true,
"internalType": "PoolId"
},
{
"name": "quoteHolders",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "quoteCreator",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "quotePlatform",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "tokenCreator",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "tokenPlatform",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "OwnershipTransferStarted",
"type": "event",
"inputs": [
{
"name": "previousOwner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "newOwner",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "OwnershipTransferred",
"type": "event",
"inputs": [
{
"name": "previousOwner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "newOwner",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "TreasuryUpdated",
"type": "event",
"inputs": [
{
"name": "treasury",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "acceptOwnership",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "collect",
"type": "function",
"inputs": [
{
"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"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "factory",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "openAndSeed",
"type": "function",
"inputs": [
{
"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": "sqrtPriceX96",
"type": "uint160",
"internalType": "uint160"
},
{
"name": "p",
"type": "tuple",
"components": [
{
"name": "token",
"type": "address",
"internalType": "address"
},
{
"name": "quoteToken",
"type": "address",
"internalType": "address"
},
{
"name": "creator",
"type": "address",
"internalType": "address"
},
{
"name": "feeRecipient",
"type": "address",
"internalType": "address"
},
{
"name": "rewards",
"type": "address",
"internalType": "address"
},
{
"name": "tickLower",
"type": "int24",
"internalType": "int24"
},
{
"name": "tickUpper",
"type": "int24",
"internalType": "int24"
},
{
"name": "creatorBps",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "holderBps",
"type": "uint16",
"internalType": "uint16"
}
],
"internalType": "struct GammaVault.Position"
},
{
"name": "liquidity",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "owner",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "pendingOwner",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "pm",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract IPoolManager"
}
],
"stateMutability": "view"
},
{
"name": "positions",
"type": "function",
"inputs": [
{
"name": "",
"type": "bytes32",
"internalType": "PoolId"
}
],
"outputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
},
{
"name": "quoteToken",
"type": "address",
"internalType": "address"
},
{
"name": "creator",
"type": "address",
"internalType": "address"
},
{
"name": "feeRecipient",
"type": "address",
"internalType": "address"
},
{
"name": "rewards",
"type": "address",
"internalType": "address"
},
{
"name": "tickLower",
"type": "int24",
"internalType": "int24"
},
{
"name": "tickUpper",
"type": "int24",
"internalType": "int24"
},
{
"name": "creatorBps",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "holderBps",
"type": "uint16",
"internalType": "uint16"
}
],
"stateMutability": "view"
},
{
"name": "renounceOwnership",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setFactory",
"type": "function",
"inputs": [
{
"name": "f",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setTreasury",
"type": "function",
"inputs": [
{
"name": "t",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "transferOwnership",
"type": "function",
"inputs": [
{
"name": "newOwner",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "treasury",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "unlockCallback",
"type": "function",
"inputs": [
{
"name": "data",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [
{
"name": "",
"type": "bytes",
"internalType": "bytes"
}
],
"stateMutability": "nonpayable"
}
]0x60a03461018b57601f6117bd38819003918201601f19168301916001600160401b0383118484101761018f5780849260609460405283398101031261018b5780516001600160a01b038116919082810361018b5761005f602083016101a3565b916001600160a01b0390610075906040016101a3565b1692831561017857600180546001600160a01b03199081169091555f80549182168617815560405195916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055158015610167575b8015610160575b61015157608052600280546001600160a01b0319166001600160a01b039290921691909117905561160590816101b8823960805181818161040d015281816106a80152818161081c0152610eda0152f35b63d92e233d60e01b5f5260045ffd5b505f610100565b506001600160a01b038216156100f9565b631e4fbdf760e01b5f525f60045260245ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b038216820361018b5756fe6080806040526004361015610012575f80fd5b5f3560e01c908163514ea4bf14610bca575080635bb4780814610b4057806361d027b314610b18578063715018a614610ab557806379ba509714610a30578063839197e3146106d75780638970cdff146106935780638da5cb5b1461066c57806391dd7346146105fd578063bd564f45146101f3578063c45a0155146101cb578063e30c3978146101a3578063f0f442601461012c5763f2fde38b146100b6575f80fd5b34610128576020366003190112610128576100cf610c77565b6100d761127c565b60018060a01b0316806bffffffffffffffffffffffff60a01b600154161760015560018060a01b035f54167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e227005f80a3005b5f80fd5b3461012857602036600319011261012857610145610c77565b61014d61127c565b6001600160a01b0316801561019457600280546001600160a01b031916821790557f7dae230f18360d76a040c81f050aa14eb9d6dc7901b20fc5d855e2a20fe814d15f80a2005b63d92e233d60e01b5f5260045ffd5b34610128575f366003190112610128576001546040516001600160a01b039091168152602090f35b34610128575f366003190112610128576003546040516001600160a01b039091168152602090f35b3461012857366003190161020081126101285760a0136101285760a4356001600160a01b03811690819003610128576101203660c31901126101285761023761128f565b6003546001600160a01b031633036105ee5761ffff610254611236565b1661ffff610260611248565b1681018091116105da57611b58106105cb5760a061027d36610d27565b205f818152600460205260409020600201546001600160a01b03166105bc575f90815260046020526040902060c4356001600160a01b03811681036101285781546001600160a01b0319166001600160a01b0391821617825560e4359081168103610128576001820180546001600160a01b0319166001600160a01b03928316179055610104359081168103610128576002820180546001600160a01b0319166001600160a01b0392831617905561012435919082168203610128576003810180546001600160a01b0319166001600160a01b03938416179055600401906101443590811681036101285781546001600160a01b0319166001600160a01b039190911617815561038b61125a565b81549061039661126b565b60b81b61ffff60d01b6103a7611236565b60d01b169161ffff60e01b6103ba611248565b60e01b1662ffffff60a01b60a09290921b9190911669ffffffffffffffffffff60a01b19949094169390931762ffffff60b81b91909116171717905560405163313b65df60e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169290600435908116908190036101285760048301526024356001600160a01b0381169081900361012857602483015260443562ffffff81168091036101285760448301526064358060020b8091036101285760648301526084356001600160a01b0381169081900361012857608483015260a482015260208160c4815f865af180156105745761057f575b505f61053081926104c861125a565b6104d061126b565b604051918560208401526104e8604084016004610dae565b60020b60e083015260020b6101008201526101e435610120820152610120815261051461014082610ce7565b6040519485809481936348c8949160e01b835260048301610ca1565b03925af1801561057457610552575b60015f805160206115b083398151915255005b61056d903d805f833e6105658183610ce7565b810190610e23565b508061053f565b6040513d5f823e3d90fd5b6020813d6020116105b4575b8161059860209383610ce7565b810103126101285751908160020b82036101285790505f6104b9565b3d915061058b565b6308627e3960e31b5f5260045ffd5b63065d2ff160e11b5f5260045ffd5b634e487b7160e01b5f52601160045260245ffd5b631966391b60e11b5f5260045ffd5b346101285760203660031901126101285760043567ffffffffffffffff811161012857366023820112156101285780600401359067ffffffffffffffff82116101285736602483830101116101285761066891602461065c9201610ed6565b60405191829182610ca1565b0390f35b34610128575f366003190112610128575f546040516001600160a01b039091168152602090f35b34610128575f366003190112610128576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346101285760a0366003190112610128576106f061128f565b60a06106fb36610d27565b205f52600460205260405f2060405161012081019181831067ffffffffffffffff841117610a1c576108179260405260018060a01b03815416825260018060a01b03600182015416916020810192835260018060a01b036002830154166040820152600460018060a01b036003840154169260608301938452015490608081019060018060a01b03831682528260a01c60020b8060a08301525f8460b81c60020b918260c085015260e084019261ffff8760d01c16845261ffff61010086019760e01c16875260405191600160208401526107da604084016004610dae565b60e08301526101008201528161012082015261012081526107fd61014082610ce7565b604051809981926348c8949160e01b835260048301610ca1565b0381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1968715610574575f97610a00575b506040878051810103126101285760208701516040909701516004356001600160a01b03811690818103610128575087516001600160a01b0316149788156109f95780985b156109f15750935b5161ffff166108b09088610e96565b61271090049586825161ffff166108c7908a610e96565b61271090049889916108d891610ea9565b906108e291610ea9565b8151945190946109009189916001600160a01b0391821691166112c7565b8051865161091c918a916001600160a01b0390811691166112c7565b516002546109389185916001600160a01b0390811691166112c7565b5161ffff166109479084610e96565b6127109004928361095791610ea9565b8151945190946109759185916001600160a01b0391821691166112c7565b516002546109919185916001600160a01b0390811691166112c7565b61099a36610d27565b60a0902094604051948552602085015260408401526060830152608082015260a07f21f2110b661f32f20e79c0fcdee1a2640c1f7ba2701cc419b9721cfc52a6336d91a260015f805160206115b083398151915255005b9050936108a1565b8198610899565b610a159197503d805f833e6105658183610ce7565b9587610854565b634e487b7160e01b5f52604160045260245ffd5b34610128575f36600319011261012857600154336001600160a01b0390911603610aa257600180546001600160a01b03199081169091555f805433928116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a3005b63118cdaa760e01b5f523360045260245ffd5b34610128575f36600319011261012857610acd61127c565b600180546001600160a01b03199081169091555f80549182168155906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b34610128575f366003190112610128576002546040516001600160a01b039091168152602090f35b3461012857602036600319011261012857610b59610c77565b610b6161127c565b6003549060ff8260a01c16610bbb576001600160a01b0316908115610194576001600160a81b0319168117600160a01b176003557f1edf3afd4ac789736e00d216cd88be164ddcef26a6eedcc30cdb0cb62f3741b15f80a2005b6302a98a3760e31b5f5260045ffd5b3461012857602036600319011261012857610120906004355f52600460205261ffff60405f2060018060a01b038154169060018060a01b0360018201541660018060a01b0360028301541690600460018060a01b0360038501541693015493865260208601526040850152606084015260018060a01b03811660808401528060a01c60020b60a08401528060b81c60020b60c0840152818160d01c1660e084015260e01c16610100820152f35b600435906001600160a01b038216820361012857565b35906001600160a01b038216820361012857565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b60a0810190811067ffffffffffffffff821117610a1c57604052565b90601f8019910116810190811067ffffffffffffffff821117610a1c57604052565b359062ffffff8216820361012857565b35908160020b820361012857565b60a09060031901126101285760405190610d4082610ccb565b816004356001600160a01b03811681036101285781526024356001600160a01b038116810361012857602082015260443562ffffff811681036101285760408201526064358060020b8103610128576060820152608435906001600160a01b03821682036101285760800152565b6080906001600160a01b03610dc282610c8d565b1683526001600160a01b03610dd960208301610c8d565b16602084015262ffffff610def60408301610d09565b166040840152610e0160608201610d19565b60020b60608401526001600160a01b0390610e1d908301610c8d565b16910152565b6020818303126101285780519067ffffffffffffffff8211610128570181601f820112156101285780519067ffffffffffffffff8211610a1c5760405192610e75601f8401601f191660200185610ce7565b8284526020838301011161012857815f9260208093018386015e8301015290565b818102929181159184041417156105da57565b919082039182116105da57565b600f0b6f7fffffffffffffffffffffffffffffff1981146105da575f0390565b60607f000000000000000000000000000000000000000000000000000000000000000060018060a01b038116938433036112085783908101039061012082126101285783359160028310156101285760a090601f1901126101285760405193610f3e85610ccb565b610f4a60208201610c8d565b8552610f5860408201610c8d565b9060208601918252610f6b858201610d09565b9060408701918252610f7f60808201610d19565b97868801988952610f9260a08301610c8d565b60808901908152610fa560c08401610d19565b92610100610fb560e08301610d19565b910135905f82126111f957604051608081019581871067ffffffffffffffff881117610a1c578c9660405260020b8152602081019160020b8252604081019283528a8101935f85526040519d8e988998632d35e7ed60e11b8a52600160a01b6001900390511660048a0152600160a01b600190038b511660248a01525162ffffff1660448901525160020b6064880152600160a01b6001900390511660848701525160020b60a48601525160020b60c48501525160e4840152516101048301526101248201610140905261014482015f90525a925f61016492604095f1958615610574575f966111c5575b508560801d9580600f0b87600f0b965f88126111a0575b5f8212611171575b5f985f809913611144575b50505f12611113575b5050506001146110f4575050506040516110ee602082610ce7565b5f815290565b6111109160405193602085015260408401526040835282610ce7565b90565b90516001600160801b0390911694506001929161113c91869130916001600160a01b0316611549565b905f806110d3565b5f929199506001600160801b0361116a9116809a60018060a01b03905116873091611549565b905f6110ca565b835161119b906001600160a01b03166001600160801b0361119185610eb6565b1690873091611374565b6110bf565b80516111c0906001600160a01b03166001600160801b036111918c610eb6565b6110b7565b9095506040813d6040116111f1575b816111e160409383610ce7565b810103126101285751945f6110a0565b3d91506111d4565b63db37124f60e01b5f5260045ffd5b60405162461bcd60e51b81526020600482015260066024820152656e6f7420706d60d01b6044820152606490fd5b6101a43561ffff811681036101285790565b6101c43561ffff811681036101285790565b610164358060020b81036101285790565b610184358060020b81036101285790565b5f546001600160a01b03163303610aa257565b60025f805160206115b083398151915254146112b85760025f805160206115b083398151915255565b633ee5aeb560e01b5f5260045ffd5b826112d157505050565b60405163a9059cbb60e01b5f9081526001600160a01b0393841660045260249490945291169160209060448180865af19060015f511482161561132c575b6040521561131a5750565b635274afe760e01b5f5260045260245ffd5b90600181151661134457823b15153d1516169061130f565b503d5f823e3d90fd5b90816020910312610128575180151581036101285790565b90816020910312610128575190565b9192916001600160a01b0316806113e25750604051630476982d60e21b81529250602091839160049183916001600160a01b03165af18015610574576113b75750565b6113d89060203d6020116113db575b6113d08183610ce7565b810190611365565b50565b503d6113c6565b6001600160a01b0390911691823b1561012857604051632961046560e21b815260048101839052935a945f816024818389819bf1801561057457611534575b506001600160a01b0316843082146114d9576020929160649160405195869485936323b872dd60e01b8552600485015288602485015260448401525af180156114ce579160209184936114a1575b505b600460405180958193630476982d60e21b83525af190811561149557506113b75750565b604051903d90823e3d90fd5b6114c090833d85116114c7575b6114b88183610ce7565b81019061134d565b505f61146f565b503d6114ae565b6040513d85823e3d90fd5b9290506044602092604051948593849263a9059cbb60e01b845288600485015260248401525af180156114ce57916020918493611517575b50611471565b61152d90833d85116114c7576114b88183610ce7565b505f611511565b6115419195505f90610ce7565b5f935f611421565b91906001600160a01b0316803b1561012857604051630b0d9c0960e01b81526001600160a01b03938416600482015291909216602482015260448101929092525f908290606490829084905af18015610574576115a35750565b5f6115ad91610ce7565b56fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a264697066735822122028fa1db604ba9f3c376dabe7ccd5a5a2ac6534da91fd82893ceac59df750778f64736f6c634300081a00330000000000000000000000008366a39cc670b4001a1121b8f6a443a643e40951000000000000000000000000060f555dcbb787a51825f299de91e3b01a0d175f000000000000000000000000060f555dcbb787a51825f299de91e3b01a0d175f
0x6080806040526004361015610012575f80fd5b5f3560e01c908163514ea4bf14610bca575080635bb4780814610b4057806361d027b314610b18578063715018a614610ab557806379ba509714610a30578063839197e3146106d75780638970cdff146106935780638da5cb5b1461066c57806391dd7346146105fd578063bd564f45146101f3578063c45a0155146101cb578063e30c3978146101a3578063f0f442601461012c5763f2fde38b146100b6575f80fd5b34610128576020366003190112610128576100cf610c77565b6100d761127c565b60018060a01b0316806bffffffffffffffffffffffff60a01b600154161760015560018060a01b035f54167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e227005f80a3005b5f80fd5b3461012857602036600319011261012857610145610c77565b61014d61127c565b6001600160a01b0316801561019457600280546001600160a01b031916821790557f7dae230f18360d76a040c81f050aa14eb9d6dc7901b20fc5d855e2a20fe814d15f80a2005b63d92e233d60e01b5f5260045ffd5b34610128575f366003190112610128576001546040516001600160a01b039091168152602090f35b34610128575f366003190112610128576003546040516001600160a01b039091168152602090f35b3461012857366003190161020081126101285760a0136101285760a4356001600160a01b03811690819003610128576101203660c31901126101285761023761128f565b6003546001600160a01b031633036105ee5761ffff610254611236565b1661ffff610260611248565b1681018091116105da57611b58106105cb5760a061027d36610d27565b205f818152600460205260409020600201546001600160a01b03166105bc575f90815260046020526040902060c4356001600160a01b03811681036101285781546001600160a01b0319166001600160a01b0391821617825560e4359081168103610128576001820180546001600160a01b0319166001600160a01b03928316179055610104359081168103610128576002820180546001600160a01b0319166001600160a01b0392831617905561012435919082168203610128576003810180546001600160a01b0319166001600160a01b03938416179055600401906101443590811681036101285781546001600160a01b0319166001600160a01b039190911617815561038b61125a565b81549061039661126b565b60b81b61ffff60d01b6103a7611236565b60d01b169161ffff60e01b6103ba611248565b60e01b1662ffffff60a01b60a09290921b9190911669ffffffffffffffffffff60a01b19949094169390931762ffffff60b81b91909116171717905560405163313b65df60e11b81526001600160a01b037f0000000000000000000000008366a39cc670b4001a1121b8f6a443a643e4095181169290600435908116908190036101285760048301526024356001600160a01b0381169081900361012857602483015260443562ffffff81168091036101285760448301526064358060020b8091036101285760648301526084356001600160a01b0381169081900361012857608483015260a482015260208160c4815f865af180156105745761057f575b505f61053081926104c861125a565b6104d061126b565b604051918560208401526104e8604084016004610dae565b60020b60e083015260020b6101008201526101e435610120820152610120815261051461014082610ce7565b6040519485809481936348c8949160e01b835260048301610ca1565b03925af1801561057457610552575b60015f805160206115b083398151915255005b61056d903d805f833e6105658183610ce7565b810190610e23565b508061053f565b6040513d5f823e3d90fd5b6020813d6020116105b4575b8161059860209383610ce7565b810103126101285751908160020b82036101285790505f6104b9565b3d915061058b565b6308627e3960e31b5f5260045ffd5b63065d2ff160e11b5f5260045ffd5b634e487b7160e01b5f52601160045260245ffd5b631966391b60e11b5f5260045ffd5b346101285760203660031901126101285760043567ffffffffffffffff811161012857366023820112156101285780600401359067ffffffffffffffff82116101285736602483830101116101285761066891602461065c9201610ed6565b60405191829182610ca1565b0390f35b34610128575f366003190112610128575f546040516001600160a01b039091168152602090f35b34610128575f366003190112610128576040517f0000000000000000000000008366a39cc670b4001a1121b8f6a443a643e409516001600160a01b03168152602090f35b346101285760a0366003190112610128576106f061128f565b60a06106fb36610d27565b205f52600460205260405f2060405161012081019181831067ffffffffffffffff841117610a1c576108179260405260018060a01b03815416825260018060a01b03600182015416916020810192835260018060a01b036002830154166040820152600460018060a01b036003840154169260608301938452015490608081019060018060a01b03831682528260a01c60020b8060a08301525f8460b81c60020b918260c085015260e084019261ffff8760d01c16845261ffff61010086019760e01c16875260405191600160208401526107da604084016004610dae565b60e08301526101008201528161012082015261012081526107fd61014082610ce7565b604051809981926348c8949160e01b835260048301610ca1565b0381837f0000000000000000000000008366a39cc670b4001a1121b8f6a443a643e409516001600160a01b03165af1968715610574575f97610a00575b506040878051810103126101285760208701516040909701516004356001600160a01b03811690818103610128575087516001600160a01b0316149788156109f95780985b156109f15750935b5161ffff166108b09088610e96565b61271090049586825161ffff166108c7908a610e96565b61271090049889916108d891610ea9565b906108e291610ea9565b8151945190946109009189916001600160a01b0391821691166112c7565b8051865161091c918a916001600160a01b0390811691166112c7565b516002546109389185916001600160a01b0390811691166112c7565b5161ffff166109479084610e96565b6127109004928361095791610ea9565b8151945190946109759185916001600160a01b0391821691166112c7565b516002546109919185916001600160a01b0390811691166112c7565b61099a36610d27565b60a0902094604051948552602085015260408401526060830152608082015260a07f21f2110b661f32f20e79c0fcdee1a2640c1f7ba2701cc419b9721cfc52a6336d91a260015f805160206115b083398151915255005b9050936108a1565b8198610899565b610a159197503d805f833e6105658183610ce7565b9587610854565b634e487b7160e01b5f52604160045260245ffd5b34610128575f36600319011261012857600154336001600160a01b0390911603610aa257600180546001600160a01b03199081169091555f805433928116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a3005b63118cdaa760e01b5f523360045260245ffd5b34610128575f36600319011261012857610acd61127c565b600180546001600160a01b03199081169091555f80549182168155906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b34610128575f366003190112610128576002546040516001600160a01b039091168152602090f35b3461012857602036600319011261012857610b59610c77565b610b6161127c565b6003549060ff8260a01c16610bbb576001600160a01b0316908115610194576001600160a81b0319168117600160a01b176003557f1edf3afd4ac789736e00d216cd88be164ddcef26a6eedcc30cdb0cb62f3741b15f80a2005b6302a98a3760e31b5f5260045ffd5b3461012857602036600319011261012857610120906004355f52600460205261ffff60405f2060018060a01b038154169060018060a01b0360018201541660018060a01b0360028301541690600460018060a01b0360038501541693015493865260208601526040850152606084015260018060a01b03811660808401528060a01c60020b60a08401528060b81c60020b60c0840152818160d01c1660e084015260e01c16610100820152f35b600435906001600160a01b038216820361012857565b35906001600160a01b038216820361012857565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b60a0810190811067ffffffffffffffff821117610a1c57604052565b90601f8019910116810190811067ffffffffffffffff821117610a1c57604052565b359062ffffff8216820361012857565b35908160020b820361012857565b60a09060031901126101285760405190610d4082610ccb565b816004356001600160a01b03811681036101285781526024356001600160a01b038116810361012857602082015260443562ffffff811681036101285760408201526064358060020b8103610128576060820152608435906001600160a01b03821682036101285760800152565b6080906001600160a01b03610dc282610c8d565b1683526001600160a01b03610dd960208301610c8d565b16602084015262ffffff610def60408301610d09565b166040840152610e0160608201610d19565b60020b60608401526001600160a01b0390610e1d908301610c8d565b16910152565b6020818303126101285780519067ffffffffffffffff8211610128570181601f820112156101285780519067ffffffffffffffff8211610a1c5760405192610e75601f8401601f191660200185610ce7565b8284526020838301011161012857815f9260208093018386015e8301015290565b818102929181159184041417156105da57565b919082039182116105da57565b600f0b6f7fffffffffffffffffffffffffffffff1981146105da575f0390565b60607f0000000000000000000000008366a39cc670b4001a1121b8f6a443a643e4095160018060a01b038116938433036112085783908101039061012082126101285783359160028310156101285760a090601f1901126101285760405193610f3e85610ccb565b610f4a60208201610c8d565b8552610f5860408201610c8d565b9060208601918252610f6b858201610d09565b9060408701918252610f7f60808201610d19565b97868801988952610f9260a08301610c8d565b60808901908152610fa560c08401610d19565b92610100610fb560e08301610d19565b910135905f82126111f957604051608081019581871067ffffffffffffffff881117610a1c578c9660405260020b8152602081019160020b8252604081019283528a8101935f85526040519d8e988998632d35e7ed60e11b8a52600160a01b6001900390511660048a0152600160a01b600190038b511660248a01525162ffffff1660448901525160020b6064880152600160a01b6001900390511660848701525160020b60a48601525160020b60c48501525160e4840152516101048301526101248201610140905261014482015f90525a925f61016492604095f1958615610574575f966111c5575b508560801d9580600f0b87600f0b965f88126111a0575b5f8212611171575b5f985f809913611144575b50505f12611113575b5050506001146110f4575050506040516110ee602082610ce7565b5f815290565b6111109160405193602085015260408401526040835282610ce7565b90565b90516001600160801b0390911694506001929161113c91869130916001600160a01b0316611549565b905f806110d3565b5f929199506001600160801b0361116a9116809a60018060a01b03905116873091611549565b905f6110ca565b835161119b906001600160a01b03166001600160801b0361119185610eb6565b1690873091611374565b6110bf565b80516111c0906001600160a01b03166001600160801b036111918c610eb6565b6110b7565b9095506040813d6040116111f1575b816111e160409383610ce7565b810103126101285751945f6110a0565b3d91506111d4565b63db37124f60e01b5f5260045ffd5b60405162461bcd60e51b81526020600482015260066024820152656e6f7420706d60d01b6044820152606490fd5b6101a43561ffff811681036101285790565b6101c43561ffff811681036101285790565b610164358060020b81036101285790565b610184358060020b81036101285790565b5f546001600160a01b03163303610aa257565b60025f805160206115b083398151915254146112b85760025f805160206115b083398151915255565b633ee5aeb560e01b5f5260045ffd5b826112d157505050565b60405163a9059cbb60e01b5f9081526001600160a01b0393841660045260249490945291169160209060448180865af19060015f511482161561132c575b6040521561131a5750565b635274afe760e01b5f5260045260245ffd5b90600181151661134457823b15153d1516169061130f565b503d5f823e3d90fd5b90816020910312610128575180151581036101285790565b90816020910312610128575190565b9192916001600160a01b0316806113e25750604051630476982d60e21b81529250602091839160049183916001600160a01b03165af18015610574576113b75750565b6113d89060203d6020116113db575b6113d08183610ce7565b810190611365565b50565b503d6113c6565b6001600160a01b0390911691823b1561012857604051632961046560e21b815260048101839052935a945f816024818389819bf1801561057457611534575b506001600160a01b0316843082146114d9576020929160649160405195869485936323b872dd60e01b8552600485015288602485015260448401525af180156114ce579160209184936114a1575b505b600460405180958193630476982d60e21b83525af190811561149557506113b75750565b604051903d90823e3d90fd5b6114c090833d85116114c7575b6114b88183610ce7565b81019061134d565b505f61146f565b503d6114ae565b6040513d85823e3d90fd5b9290506044602092604051948593849263a9059cbb60e01b845288600485015260248401525af180156114ce57916020918493611517575b50611471565b61152d90833d85116114c7576114b88183610ce7565b505f611511565b6115419195505f90610ce7565b5f935f611421565b91906001600160a01b0316803b1561012857604051630b0d9c0960e01b81526001600160a01b03938416600482015291909216602482015260448101929092525f908290606490829084905af18015610574576115a35750565b5f6115ad91610ce7565b56fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a264697066735822122028fa1db604ba9f3c376dabe7ccd5a5a2ac6534da91fd82893ceac59df750778f64736f6c634300081a0033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| Gamma Yield Test (YIELD1) | YIELD1 | 0.000000 | — | — |
| Gamma (GAMMA) | GAMMA | 0.000000 | — | — |
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0x70f756…5847e1 | 18 days agoThu, 30 Jul 2026 21:16:03 UTC | 0x1edf3a…41b1 | [0] 0x000000000000…a117f734 |
| 0x3190a5…74d5b0 | 18 days agoThu, 30 Jul 2026 21:15:49 UTC | 0x8be007…57e0 | [0] 0x000000000000…00000000 [1] 0x000000000000…1a0d175f |
| 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 | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0x70f756…5847e1 | setFactory | 23,631,162 | 18 days agoThu, 30 Jul 2026 21:16:03 UTC | 0x060f…175f | IN | GammaVault | $0.000 ETH | 0.00000095 |
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| 0x6e980731…28592e | Transfer | 23,667,005 | 18 days agoThu, 30 Jul 2026 22:16:04 UTC | 0xc0b9…5e73 | OUT | 0x8366…0951 | 1,000,000,000.000000 GAMMA | Gamma (GAMMA) | |
| 0x6e980731…28592e | Transfer | 23,667,005 | 18 days agoThu, 30 Jul 2026 22:16:04 UTC | 0xfb73…f734 | IN | 0xc0b9…5e73 | 1,000,000,000.000000 GAMMA | Gamma (GAMMA) | |
| 0x036e5e97…7a1597 | Transfer | 23,634,680 | 18 days agoThu, 30 Jul 2026 21:21:56 UTC | 0xc0b9…5e73 | OUT | 0x8366…0951 | 1,000,000,000.000000 YIELD1 | Gamma Yield Test (YIELD1) | |
| 0x036e5e97…7a1597 | Transfer | 23,634,680 | 18 days agoThu, 30 Jul 2026 21:21:56 UTC | 0xfb73…f734 | IN | 0xc0b9…5e73 | 1,000,000,000.000000 YIELD1 | Gamma Yield Test (YIELD1) |