> hook / token
0x4AC476012f059091b474e794644E9aB15c16c040
100,000 SUPPLY
> dual ledger
balanceOf(a) = sload(bal) + tload(delta)
SSTORE for canonical balances across txs. TSTORE for the per-tx session ledger that flushes once at end of call. Multi-hop routes collapse to one SSTORE per touched holder.
mstore(0x0c, _BALANCE_SLOT_SEED) mstore(0x00, a) let bal := sload(keccak256(0x0c, 0x20)) mstore(0x0c, _TDELTA_SLOT_SEED) mstore(0x00, a) let r := add(bal, tload(keccak256(0x0c, 0x20)))
> flash-mint
free · atomic · no callback
Conjure VYPER into the caller's TSTORE delta. A flush refuses to commit while the loan is open — forget to repay and the whole tx reverts.
flashMint(1_000_000e18); // ... arbitrage with transferSession ... flashBurn(1_000_000e18); // flush is clean; tx settles
> trade direct
no router, no permit2. the hook is the router.
BUY · ETH → VYPER
hook.buy{value: 1 ether}(minOut);SELL · VYPER → ETH
hook.approve(hook, amount); hook.sell(amount, minEthOut);
POOL
ETH / eVYPER
FEE
1%
HOOK FLAGS
AFTER_SWAP
CHAIN
ETHEREUM
SUPPLY
100,000
DECIMALS
18
> gas
| scenario | before | after | Δ |
|---|---|---|---|
| transfer (fast path) | 53 449 | 40 737 | −23.8% |
| approve + transferFrom | 78 693 | 65 873 | −16.3% |
| session multi-hop → flush | 100 180 | 87 391 | −12.8% |
| session cancel self | 33 663 | 26 352 | −21.7% |
| genesis mint (ctor) | 15 005 | 12 135 | −19.1% |