Architecture
Core contracts, periphery, data services, authority boundaries, and governance.
System map
Wallet
| reads and unsigned quote requests
v
Abyss UI ----> Abyss API / Ponder indexer ----> RISE RPC
| | |
| signed writes | quoter calls and simulation |
v v v
Router / Position Manager ----> Factory ----> Deterministic Pools
| |
v v
Pool Deployer FeeVault claimsPool core
All pools use the same concentrated-liquidity curve. Separate profile bytecode implements immutable fee and observation combinations. Core owns curve movement, fee accounting, observations, callbacks, settlement verification, and protocol-fee claims so direct callers cannot bypass profile behavior.
Pool core is non-upgradeable and guarded by a reentrancy lock. Mint, swap, and flash callbacks verify actual token balance deltas. The design treats ERC-20 contracts and callbacks as adversarial.
Factory and deterministic deployment
AbyssFactory validates complete keys and stores pool discovery by pool ID. AbyssPoolDeployer accepts parameters only from the factory and deploys profile bytecode deterministically. Creation and initialization are separate permissionless operations, although periphery can combine them.
The factory enables three immutable fee tiers and registers immutable oracle configurations. Enabled tiers and registered configurations cannot be disabled.
Governance boundary
Factory ownership uses a two-step transfer. The accepted owner can:
- enable a new fee tier one way;
- register an oracle configuration one way;
- change the default protocol-fee denominator; and
- set an existing pool's protocol-fee denominator within fixed bounds.
It cannot pause creation, swaps, or liquidity; rewrite pool keys; redirect a pool's immutable FeeVault; rewrite observation history; upgrade pool core; or control who trades and supplies liquidity.
The FeeVault has separate two-step ownership and can transfer treasury assets it receives. Governance and ownership addresses can change after deployment. Query live chain state before relying on mutable fields.
Periphery
- AbyssRouter authenticates complete pool keys and executes single-pool or bounded multihop swaps.
- AbyssQuoter reproduces profile-specific rounding without serving as settlement authority.
- AbyssPositionManager creates position NFTs and coordinates immutable custody accounts.
- AbyssPositionAccount owns one managed pool position and limits callers to its manager and pool.
- AbyssPositionLocker optionally time-locks or permanently locks position NFTs. It is not part of the published current periphery deployment record.
Periphery contracts do not make direct pool calls safer than core. Core applies the same fee, oracle, and settlement rules to every caller.
Data plane
The Ponder indexer discovers pool topology, position ownership, and historical events. Live RPC is authoritative for mutable pool and position state. The API hydrates discovered objects at pinned blocks and returns the block identity used.
indexedBlockidentifies an indexer checkpoint.blockNumberidentifies a live-RPC snapshot.quotedBlockidentifies the state used for a quote.- Large blockchain integers are decimal strings in JSON.
An indexed owner record does not authorize a position action. Current ownerOf and mutable fields are reread from RPC.