Trinity V6: Uniswap V4 Hook Bonding Curve Protocol


Trade at your own risk. This is experimental DeFi. The contracts have not been independently audited — only reviewed by the creator and his computer, and he’s hardly impartial. Don’t put in more than you’re comfortable losing entirely.

Overview


Trinity is a bonding curve protocol implemented as a Uniswap V4 hook. A single hook contract serves three independent liquidity pools (USDC, WETH, $CHAOSLP), each with its own curve shape. The hook manages concentrated LP positions across price bands that approximate a bonding curve.


Because swaps route through Uniswap V4’s PoolManager and Universal Router, Trinity pools are natively visible to the entire ecosystem: aggregators, bots, GeckoTerminal, block explorers. Trading fees are asymmetric: buy-side fees go to the multisig, sell-side fees burn $TRINI.




Architecture


Token: $TRINI


Total Supply: 1,000,000,000 (1B)
Decimals: 18
Type: Standard ERC-20 (OpenZeppelin, non-upgradeable)
Ticker: TRINI
Starting price: $0.000025 / TRINI ($25K FDV)
Chain: Base (L2 — gas is ~$0.005 per swap)

Supply Distribution


Allocation Amount % Purpose
TRINI/USDC Pool450,000,00045%Deep anchor — stable pricing
TRINI/WETH Pool297,000,00029.7%ETH relay — moderate depth
TRINI/$CHAOSLP Pool153,000,00015.3%Volatility engine — thin, steep
Treasury (Multisig)100,000,00010%Team, partnerships, reserves

V6 Hook Architecture


One hook contract, three pools. The AMM runs normally — the hook manages WHERE liquidity sits (concentrated LP bands) and collects fees via beforeSwap. LP is seeded one-sided (TRINI only, Clanker pattern) and rebalances across bands as price moves.



                    +-----------------------+
                    |    POOL MANAGER       |
                    |  (Uniswap V4 core)    |
                    +----------+------------+
                               |
                    +----------v------------+
                    |   TRINITY HOOK V6     |
                    |  beforeSwap: 1% fee   |
                    |  afterSwap: rebalance  |
                    |  LP bands per pool    |
                    +--+--------+--------+--+
                       |        |        |
              +--------v--+ +---v------+ +--v-----------+
              | TRINI/USDC | | TRINI/WETH| | TRINI/$CHAOSLP|
              | 450M TRINI | | 297M TRINI| | 153M TRINI   |
              | 16 bands   | | 15 bands  | | 15 bands     |
              | Deep/flat  | | Moderate  | | Thin/steep   |
              +-----------+ +----------+ +--------------+
                       |        |        |
                       v        v        v
                  Buy fees --> Multisig
                  Sell fees --> Burn to 0xdead

Each pool has its own band schedule and curve shape. The pools share TRINI as currency0 but have independent LP positions, active bands, and fee recipients.


Deployed Contracts (Base Mainnet)


Contract Address
TRINI Token0x17790eFD4896A981Db1d9607A301BC4F7407F3dF
TrinityHookV60xe89a658e4bec91caea242aD032280a5D3015C8c8
Staking Hub0x76F63BB9990a1afdB1c426394D3Fc2448FBe77d6
WETH Gauge0x97F6f66d2BD30a87D6C4581390343e9cA02c7ae2
Multisig (Owner)0xb7DD467A573809218aAE30EB2c60e8AE3a9198a0

All contracts verified on Basescan. Source: github.com/ipfsnut/trinity-prototype


The hook address encodes V4 permissions in its lower bits: BEFORE_ADD_LIQUIDITY, BEFORE_SWAP, BEFORE_SWAP_RETURNS_DELTA, AFTER_SWAP. Deployed via CREATE2 address mining.




LP Band Mechanics


How It Works


Instead of a formula-based bonding curve, V6 uses discrete LP bands — concentrated Uniswap V4 positions at different tick ranges. Each band covers a price segment. Together they approximate a bonding curve with variable steepness.


The hook owns all LP positions. External LP is permanently blocked via beforeAddLiquidity. Only the hook can add or remove liquidity.


One active band at a time per pool
afterSwap checks if price exited the current band and rebalances (up to 5 transitions per swap)
• Band widths vary: narrow at the start (steep price discovery), wider later (deep, stable)
• The curves never graduate — they are permanent infrastructure

Band Schedules


Each pool decelerates at a different rate after a shared steep ignition band:


Pool Bands TRINI Character Total Curve
USDC16450MFast decel → deep anchor327,612x
WETH15297MMedium decel → relay12,154x
$CHAOSLP15153MSlow decel → volatility engine1,045x

The USDC curve is 327,612x deep — it effectively never finishes. ChaosLP is 1,045x — theoretically reachable, but its volatile underlying means the price oscillates rather than climbing steadily.




Fee Structure


1% Flat Trading Fee


Every swap across all three pools incurs a 1% fee on the input amount. Extracted in beforeSwap before the AMM runs.


On Buys: 1% in quote asset → Multisig


User buys with 1000 USDC:
  - 10 USDC (1%) --> multisig (fee recipient)
  - 990 USDC enters the AMM

On Sells: 1% in $TRINI → Burned


User sells 10,000 TRINI for ETH:
  - 100 TRINI (1%) --> 0x000...dead (burned permanently)
  - 9,900 TRINI enters the AMM
  - User receives ETH output

Every sell is deflationary. No exceptions. All three pools burn on sells.


exactOutput swaps are blocked — the hook reverts on amountSpecified >= 0. This closes a fee bypass vector found in V5.




The Arb Flywheel


Because the three curves have different shapes, TRINI has different prices on different pools at any given time. Arbitrage bots trade the spread:


1. Bot buys TRINI on the cheap pool (e.g., USDC -- deep, stable)
2. Bot sells TRINI on the expensive pool (e.g., ChaosLP -- just spiked)
3. Each leg pays 1% fee (2% round-trip)
4. Buy fee --> multisig. Sell fee --> burned.
5. Spread narrows -- until the next trade reopens it

ChaosLP is the engine: thin depth (153M) + slow deceleration means every trade moves the price significantly. Its micro-cap underlying (~$2,600 MC) means constant external price shocks that create new dislocations.


USDC is the anchor: deep depth (450M) + fast deceleration means organic buys barely move the price. It provides the stable reference for arb bots.


The spread never fully closes because every arb cycle costs ~2% in fees. Bots stop when the spread falls below ~2%, then the next ChaosLP price move reopens the gap.




Swaps (V4 Internals)


Swaps go through Uniswap’s Universal Router with the standard V4 swap encoding (same as Clanker). No custom router needed — the hook intercepts via callbacks.


Hook Permissions


Permission Purpose
BEFORE_ADD_LIQUIDITYBlocks external LP permanently. Only the hook manages positions.
BEFORE_SWAPExtracts 1% fee before the AMM runs
BEFORE_SWAP_RETURNS_DELTAReturns fee delta so the AMM sees reduced input
AFTER_SWAPRebalances LP bands after price moves

For the WETH pool, native ETH is accepted: the Universal Router wraps ETH to WETH via WRAP_ETH command before the V4 swap.




Staking


Stake TRINI to earn rewards from pool fees. Uses the ChaosLPHub + RewardGauge pattern.


Hub: Stake TRINI, earn TRINI (hub rewards, funded by multisig)
WETH Gauge: Earn WETH (from ETH pool buy fees, forwarded by multisig)

Multisig collects buy fees from all three pools, then distributes to gauges via notifyRewardAmount(). Staking locks TRINI, reducing circulating supply.




Governance & Trust


All contracts are owned by the multisig (0xb7DD...8a0). The multisig can:


emergencyWithdrawLP — recover the hook’s LP positions
updateFeeRecipient — redirect fee collection
withdrawTokens — recover ERC20s held by the hook
Fund staking gauges — distribute rewards

The multisig cannot change the fee rate (hardcoded 1%), the burn mechanism, or the band configurations (set at registration).


Immutability


Parameter Mutable?
Fee rate (1%)No — hardcoded
Burn on sellsNo — hardcoded
Band configuration per poolNo — set at registerPool
External LP blockNo — permanent
Hook address & permissionsNo — V4 hooks are immutable
Fee recipient per poolYes — owner only
LP positionsYes — owner can emergency withdraw



Risk Disclosure


This is a prototype. It is experimental DeFi built by a small team. The contracts have been through internal review (two audit cycles, six passes) but have not been independently audited by a third party. Unknown bugs may exist. Don’t put in more than you’re comfortable losing entirely.

Risk Severity Mitigation
Smart contract bugCriticalInternal audit (6 passes), 18 tests passing, all contracts verified
Multisig compromiseHighCan drain hook LP, not user wallets. Timelock can be added later.
Low volume / no arbMediumThree curve shapes create persistent dislocations. ChaosLP volatility feeds the flywheel.
$CHAOSLP goes to zeroLow impactThat pool dies, 2/3 of liquidity unaffected
MEV / sandwichLow1% fee + burn = ~3% attacker cost per round-trip
Cross-pool TRINI leakageAcceptedLeftover TRINI auto-redistributes across pools. Quote-side tokens never cross-contaminate.



Summary


Buys: 1% fee in quote asset → multisig (WETH pool accepts native ETH)
Sells: 1% of TRINI → burned permanently
Arb: Three different curve shapes create persistent cross-pool dislocations. Every arb burns supply and funds the protocol.
Staking: Stake TRINI, earn WETH from pool fees
Permanent: No graduation. Curves run forever. Fees collect forever.

Built by epicdylanGitHub • All contracts verified on Basescan