Contracts
Three small contracts hold the parts of CONNEX that should not rest on trust. None has an owner, an admin key, a proxy or a fee setter; every number below is fixed at deployment. Source, tests and the deploy tool live in the project repository.
ConnexTreasury
Receives every launch's Pons creator fees and splits them between the buyback reserve and the launch budget.
Deployable now, before the token exists.
- Pons factory, fee escrow
- 0x7eD598Bc…, 0xd3AFEB2a…
- Uniswap SwapRouter02, WETH
- 0xCaf681a6…, 0x0Bd7D308…
- Operator (agent wallet)
- 0x46ce33e5F6DEcC0F9e36333fE475ca4b3bA33399
- Buyback share
- 50%
- Per-launch allowance
- 0.0005 ETH
- Launch budget ceiling
- 0.5 ETH
- Max buyback per call
- 0.05 ETH
- Min time between buybacks
- 1 h
- Open to anyone after silence
- 7 days
Functions
- collect()Claims ETH from the Pons escrow and splits everything unbooked. Anyone.
- collectToken(token)Same for fees paid in a pair token (stock or USDG). Anyone.
- sweepCurve(token) / sweepPool(token)Moves a CONNEX launch's fees into the escrow, then collects. Anyone.
- fundLaunch(amount)Pays the Pons launch fee to the launcher, plus the allowance to the operator. Launcher only.
- executeBuyback(amount, minOut)Buys $CONNEX and burns it, within the caps. Operator, or anyone after the silence period.
- convertToken(token, side, amount, fee, minOut)Swaps one side's pair-token fees to ETH on that same side. Operator.
- burnStray(token)Burns any CONNEX launch token or $CONNEX sent here. Anyone.
- wire(launcher) / setBuyback(sink)One-time wiring by the deployer; each can run once.
Events
EthSplit · TokenSplit · LaunchFunded · BuybackExecuted · TokenConverted · CurveSwept · PoolSwept · StrayBurned · Wired · BuybackSet
ConnexLauncher
The only way the agent launches. Creates each token on Pons with no opening buy and the treasury as fee recipient, and can never move a launched token.
Deployable now; needs the treasury address.
- Pons factory
- 0x7eD598Bc…
- Treasury
- 0xad37ba6adbe9a6ed062e183ad78eab5621912681
- Operator (agent wallet)
- 0x46ce33e5F6DEcC0F9e36333fE475ca4b3bA33399
- Min time between launches
- 10 min
Functions
- launch(params)Creates a token on Pons; pays the fee itself or from the treasury budget. Operator only.
- burnStray(token)Burns anything sent to the launcher. Anyone.
- launchCount() / launchesPage(offset, limit) / isLaunch(token)The public record of every launch.
Events
Launched · StrayBurned
ConnexBuyback
Buys $CONNEX on its Pons curve or Uniswap v4 pool with ETH from the treasury and sends every token straight to the burn address.
After $CONNEX exists (an ETH-paired Pons launch).
- Pons factory, v4 PoolManager
- 0x7eD598Bc…, 0x8366a39C…
- Treasury
- 0xad37ba6adbe9a6ed062e183ad78eab5621912681
- $CONNEX
- the token address, once it exists
Functions
- buyAndBurn(minOut)Treasury only. Refunds unspent ETH to the treasury.
Events
Burned
Verifying a Deployment
- Build the contracts (
forge buildincontracts/, solc 0.8.26, via-IR, optimizer 200 runs, EVM cancun). - Run
npm run verify-deployment -- <address> <deploy tx>: it checks the creation transaction, the runtime code and every constructor value against this build and exits with an error on any mismatch. - Match the source on Blockscout with the same compiler settings, so the explorer shows the code next to the address.
The tests run against mocks and against a fork of Robinhood Chain mainnet: real Pons launches through the launcher, real curve trades, fees swept into the treasury, a stock-paired launch whose NVDA fees are swapped to ETH on Uniswap, graduation, and buybacks on both the curve and the v4 pool.