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.
Modular, composable, and built for the next wave of Ethereum onchain applications.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
| Lock | Weight multiplier | Reward share | Governance voice |
|---|---|---|---|
| Flexible | 1.0x | 1.0x per PRISM | 1.0x per PRISM |
| 30 days | 1.5x | 1.5x per PRISM | 1.5x per PRISM |
| 90 days | 2.0x | 2.0x per PRISM | 2.0x per PRISM |
| 180 days | 3.0x | 3.0x per PRISM | 3.0x per PRISM |
| 365 days | 4.0x | 4.0x per PRISM | 4.0x per PRISM |
“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.
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.
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.
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.