Uniswap v4 · Ethereum

Prism

Modular, composable, and built for the next wave of Ethereum onchain applications.

2% buy · 2% sell, in ETHNative v4 hookLP held by contractFixed supply
Contractnot deployed yet
Connecting
PRISM price
live from the v4 pool
Tax collected
2% buy · 2% sell
PRISM staked
in the Lattice
Treasury
governed onchain
The kernel

Eight modules, one registry, nothing welded shut

Every Prism contract holds an immutable pointer to a single registry and resolves its siblings at call time — not at deploy time. Replace the staking module and every route pointing at prism.module.staking follows it. No migration, no re-plumbing, no redeploying the token.

Changes are two-phase: governance schedules a swap, it sits in public view for the kernel delay, and only then can anyone commit it. Composability without a trapdoor.

The asset

PrismToken

A fixed-supply ERC20 with EIP-2612 permit. No mint function, no transfer fee, no blacklist. The only privileged switch is a one-way launch gate, and once it is open nothing can close it.

1,000,000,000 fixedno mint · no fee · no blacklist
The venue

PrismHook

A native Uniswap v4 hook that charges 2% on buys and 2% on sells, always denominated in ETH, on all four swap shapes. Fees are booked as ERC-6909 claims mid-swap, so a taxed trade moves no ETH and makes no external call.

2% / 2% in ETH5% hard cap · renounceable
The Lattice

PrismStaking

Lock PRISM to earn a share of every ETH the protocol collects and to mint governance weight. Longer locks multiply both, so the people steering Prism are the ones who cannot leave quickly.

1x to 4x weightO(1) distribution
The splitter

PrismRefractor

A programmable value splitter. ETH enters as one beam and leaves across a governance-defined spectrum. Routes address destinations by module id, so upgrading a module re-plumbs nothing.

60% stakers / 40% treasurypermissionless to trigger
The balance sheet

PrismTreasury

Holds ETH and any ERC20, movable only by governance — with one deliberate exception: registered applications can draw a metered PRISM budget without a vote per withdrawal.

10% of supply at launcharbitrary-call escape hatch
The custodian

PrismLiquidityLocker

Custodian of the v4 LP NFT. The position is minted to this contract, never to an EOA, so trading fees can be routed back into the protocol and a promised lock is enforced by the chain.

LP NFT held by contractone-way lock ratchet
The steering

PrismGovernor

Governance over the module graph itself. Voting power is locked-stake weight, not a token balance. Every passed proposal waits out a timelock, and module swaps wait out the kernel delay on top.

10% quorum · 2-day timelockcan replace any module
The surface

PrismAppRegistry

Where the next wave plugs in. Any app can list itself permissionlessly; approved apps draw a rate-limited PRISM budget every epoch with no human in the loop, revocable instantly.

7-day epochspermissionless listing
The hook

A 2/2 tax that lives at the venue, not in the token

Most tokens put their tax in transfer. That breaks on Uniswap v4 — the PoolManager settles on exact balance deltas, so a token that delivers less than it promised makes swaps revert. It also taxes things that were never trades: wallet-to-wallet sends, staking deposits, every integration that ever touches the token.

Prism charges the fee where the trade actually happens. PrismHook is a native v4 hook that takes 2% on buys and 2% on sells, always denominated in ETH, and never touches a transfer.

Swap arrives
exact-in or exact-out
PrismHook
beforeSwap · afterSwap
2% booked in ETH
as ERC-6909 claims
Treasury wallet
flush() · permissionless
Refractor split
optional, governed
Stakers
ETH, claimable
All four shapes

No free exit

A v4 swap can be exact-input or exact-output, in either direction. ETH is the specified currency in two of those and the unspecified currency in the other two. The hook covers the first pair in beforeSwap and the second in afterSwap. A tax that only works on the common path is a tax with a free exit.

4 / 4 coveredverified on a mainnet fork
Mechanism

No ETH moves mid-swap

Fees are booked as ERC-6909 claim tokens against the PoolManager instead of being transferred. A taxed swap therefore performs no value transfer and makes no external call — there is no reentrancy surface, and a misconfigured fee recipient cannot brick trading.

claims, then flushanyone may settle
Limits

Bounded and renounceable

Either side of the tax is capped at 5% in the setter itself, so no future owner or governance vote can raise it past that. renounceFees() sets both to zero permanently and cannot be undone.

5% hard ceilingone-way renounce
Supply and liquidity

One billion PRISM, minted once, never again

There is no mint function. The entire supply exists from the constructor, and 100% of it is placed at launch: 90% into the Uniswap v4 pool, 10% into the onchain treasury that governance and registered applications draw from.

90% · Liquidity
10%

900,000,000 PRISM → the pool

Added single-sided against 5 virtual ETH. No real ETH is contributed: the position is placed as one range whose upper bound is the launch tick, which is exactly the condition under which a position holds 100% PRISM and zero ETH. Buyers walk the price down through the range, and the curve behaves like a 5-ETH-deep pool from the very first block.

100,000,000 PRISM → the treasury

Held by PrismTreasury, movable only by governance, and the funding source for the App Registry's metered per-epoch budgets. Not a team wallet — a contract with rules.

Custody

The LP NFT belongs to a contract

The v4 position is minted directly to PrismLiquidityLocker, never to an EOA. A leaked private key alone cannot move it; every action on the position goes through the contract's rules and emits an event. Trading fees can be collected by anyone and routed into the Refractor rather than into a wallet, and a lock the project advertises is a lock the chain enforces — extendLock is a one-way ratchet.

position minted to the lockeronchain custody
The launch gate

Open once, open forever

Before launch only the protocol's own contracts can move tokens, so liquidity can be seeded atomically without a sniper front-running the pool's first block. enableTrading() is one-way: once the market is open, no function in the token can close it again. No pause, no blacklist, no fee switch.

irreversible by constructionno pause · no blacklist
The Lattice

Weight, not balance, is the unit of account

Stake PRISM to earn a share of every ETH the protocol collects and to mint the governance weight that steers the module graph. Locking longer multiplies both — so the people deciding Prism's direction are the ones who cannot leave quickly. Rewards accrue through a pull-based accumulator, so distribution is O(1) no matter how many stakers exist.

LockWeight multiplierReward shareGovernance voice
Flexible1.0x1.0x per PRISM1.0x per PRISM
30 days1.5x1.5x per PRISM1.5x per PRISM
90 days2.0x2.0x per PRISM2.0x per PRISM
180 days3.0x3.0x per PRISM3.0x per PRISM
365 days4.0x4.0x per PRISM4.0x per PRISM
The next wave

Apps draw budget, not favours

“Built for onchain applications” has to mean something more than a slogan. In Prism it means a contract: an application registers itself permissionlessly, governance grants a per-epoch PRISM budget once, and from then on the app draws against a rate-limited allowance with no vote per withdrawal and no human in the loop. Governance sets the ceiling and can revoke instantly.

// 1. list your application — permissionless, no budget yet
bytes32 id = registry.register("my-app", "https://my.app", payoutAddress);
// 2. governance approves a per-epoch ceiling
registry.approve(id, 250_000e18); // 250k PRISM every 7 days
// 3. draw against it whenever you need to. no vote, no waiting.
registry.draw(id, 10_000e18);
// the whole module graph is discoverable from the token alone
address staking = IPrismToken(PRISM).staking();
Discoverable

Start from one address

Given nothing but the token, an integrator can resolve the kernel and walk the entire live module graph. No documentation drift, no address lists to maintain.

allModules()onchain registry
Rate limited

Epochs roll lazily

Budgets reset on a 7-day epoch that advances on use rather than on a schedule. No keeper is needed and an idle application costs the protocol nothing.

7-day epochsno keeper
Composable revenue

Point value anywhere

The Refractor splits incoming ETH across a governance-defined set of routes, addressed by module id. Add a destination, change a weight, or send a slice straight to an application — all without touching another contract.

weights in bpsmodule-id routing