Slice
Reference

Contracts

Everything is deployed permissionlessly and verifiable on-chain. Currently targeting Arc (chain 5042).

Slice contracts

ContractAddressRole
VaultFactory0x9ABDd9Ba9C8Cb77e8676141c5bDa18fD107beD7DCreates one vault per pool, keeps the registry, deploys fee routers.
VaultDeployer0x32F0b8964B51E157Fb58AdF33fdA228Cf16476AFHolds the vault creation bytecode so the factory stays under the 24KB contract size limit.

Live vaults

No vaults deployed yet, or still loading from the chain.

Arc and Uniswap

Slice only ever calls two of these at runtime: the Uniswap PoolManager and the USDC ERC-20 interface. Both carry identical bytecode on Arc mainnet and testnet.

ContractAddressUsed by Slice
USDC (ERC-20)0x3600000000000000000000000000000000000000Yes — the reward and quote currency.
Uniswap v4 PoolManager0x8366a39CC670B4001A1121B8F6A443A643e40951Yes — vaults hold liquidity here directly.
StateView0xF3334192D15450CdD385c8B70e03f9A6bD9E673bNo — reference only.
PositionManager0x6049c9a0e26405C0985f9E3685C87d0aE917f82BNo — mainnet only, absent on testnet.
UniversalRouter0x4fcA4a51Ab4F23A7447b3284fBd7D73289A89Fb1No — mainnet only, absent on testnet.

Which pools Slice works with

Slice attaches to a Uniswap v4 pool, not to a launchpad. It does not care which platform created the token — if the launch put the token into a v4 pool quoted in USDC, a vault can be created for it permissionlessly. On Arc that covers most launchpads, because v4 plus USDC is the default shape.

There is no allowlist
createVault carries no access control, so anyone can list any qualifying pool and anyone can then stake in it — list one from the app if the pool you want is not already there. Listing a pool gives the lister no rights over the resulting vault: owner, treasury and fee recipient are set by the factory, identically for every vault it creates. The four requirements below are enforced in the vault's constructor, not by a reviewer.
RequirementWhy
A Uniswap v4 poolVaults hold liquidity in the PoolManager directly. A platform running its own AMM is not supported.
Quoted in USDCThe 6-decimal ERC-20 at 0x3600…0000. Rewards are denominated in it, and native-currency pools are rejected.
Already initializedOtherwise the vault creator would get to pick the starting price on the first deposit.
No exit-blocking hookRejected at creation if the hook can intercept a withdrawal — see below.

Hooks

v4 lets a pool attach a hook, and launchpads use them for taxes, fee splits and buybacks. Slice allows those. What it refuses is a hook that could stand between a staker and their money.

A hook's permissions are encoded in the low bits of its address, so this is checkable before a vault ever holds anything. Vault creation reverts with HookMayBlockExit if the hook implements any remove-liquidity callback, or can return a delta on add or remove. Those could revert a withdrawal or skim it — on a vault other people deposit into, that is a trap rather than a fee.

  • Allowed: swap hooks — taxes, dynamic fees, dividends, buybacks. The worst they do is make the vault's own fee conversion less efficient.
  • Allowed: hooks that gate adding liquidity. Deposits may fail, which is an annoyance, not a way to strand principal.
  • Refused: anything that runs on removal, or returns a delta on add or remove.
Check the pool before you deposit
The guard proves a hook cannot block your exit. It cannot tell you whether a token's tax makes the position unprofitable, or whether the team can mint more supply. Those are properties of the token, not of Slice.

What each role can do

  • Anyone — create a vault for any USDC pool, create a fee router, poke, harvest, compound, collect protocol fees to the treasury, deposit, withdraw, claim.
  • Vault owner — adjust the protocol fee (max 10%), the stream and compound split, and the price deviation band (max 5%). Cannot move user funds or pause anything.
  • Router creator — configure triggers, change the injection recipient, and withdraw unspent budget. Cannot touch the vault or anyone else's position.

Source

Contracts are written in Solidity 0.8.26 against Uniswap v4 core. See the security model for the testing approach, including the fork suite that runs against live Arc.