Powered by SwapVM — © Degensoft Ltd 2025
Breakwater is an Aqua/SwapVM liquidity position for DAO treasuries. It provides two-way stablecoin liquidity while the pair is healthy, then turns the same immutable position into a one-way exit market when an authenticated price feed detects a depeg.
During stress, a successful swap may never increase the strategy's virtual balance of the impaired asset. An exposure-reducing swap must remain executable at a bounded oracle-derived price.
Breakwater passed its bounded ETHOnline 2026 sponsor spike and is now
commissioning the public taker journey. Project-specific work began after the
official kickoff at 2026-09-04T16:00:00Z; this repository was initialized at
2026-09-04T17:04:11Z.
The spike must prove:
- an official Aqua/SwapVM token transfer;
- a healthy two-way quote and swap;
- an execution-time depeg guard that rejects impaired-asset accumulation;
- an oracle-priced exposure-reducing swap;
- the Aqua virtual-balance invariant across both token orderings; and
- deterministic stale/invalid-feed and quote-to-execution behavior.
Those claims reproduce in the local suite and on the pinned Ethereum fork. The remaining launch gate is a cold completion of the public quote → approve → swap journey.
ETHOnline 2026 Classic — 1inch, Build an Aqua App.
Node 24 is used in CI. Yarn 1 is invoked through npx so no global install is
required:
npx -y yarn@1.22.22 install --frozen-lockfile
npx -y yarn@1.22.22 build
npx -y yarn@1.22.22 testAn optional pinned Ethereum-fork test exercises real USDC, USDT, and Chainlink feed contracts without broadcasting a transaction. It runs the same proof through both an exact-tag local deployment and 1inch's canonical Ethereum SwapVM v1.0.2 router:
MAINNET_RPC_URL=<ethereum-rpc-url> \
MAINNET_FORK_BLOCK=25905465 \
npx -y yarn@1.22.22 test:forkThe captured block, feed rounds, quote, and Aqua balance deltas are recorded in
evidence/mainnet-fork-2026-09-04.md.
The taker console lives in web and reads the committed Sepolia market
manifest. The intended public hostname is https://breakwater.dolepee.com;
website access and an independent wallet completion remain launch checks:
cd web
npm install
npm run devIts production dependency audit, lint, and build can be reproduced with:
cd web
npm audit --omit=dev
npm run lint
npm run buildBefore requesting the final executable quote, a taker must read
BreakwaterGuard.currentOracleCommitment() and place that 32-byte value first
in the official SDK's TakerTraits.instructionsArgs. The exact encoded traits
used for that final quote must be reused for execution. If either complete feed
observation changes, execution reverts and the taker must fetch a new
commitment and requote.
The oracle commitment prevents a stale quote from executing against a new oracle round. It does not replace the SDK's minimum-output/maximum-input threshold or deadline; production takers should set all three controls.
The constructor rejects one feed address being reused for both assets. Before deployment, operators must still verify each distinct proxy's network, asset/USD denomination, heartbeat, and decimals against the oracle publisher's canonical registry; AggregatorV3 cannot prove those semantics to the guard itself.
The complete demonstration stack was deployed to Ethereum Sepolia on September
5, 2026. All 11 deployment and initialization receipts succeeded; addresses and
transaction hashes are in evidence/sepolia-deployment-2026-09-05.json.
The market uses no-value test tokens and fixed demonstration prices, not live
Chainlink feeds. Protection applies only to this position, not other strategies
or total wallet exposure. The taker buys impaired inventory; no recovery,
redemption, or capital-preservation guarantee is made.
Local tests reproduce the same immutable stressed market. The separate pinned fork calls canonical Ethereum Aqua and AquaSwapVMRouter contracts, while Breakwater's fork transactions remain ephemeral state, not mainnet broadcasts.
The event-only deployer's dedicated public-market script self-deploys the exact
pinned Aqua/SwapVM stack, immutable
testnet-only price observations, two demo tokens, the guard, and a funded Aqua
position. The reserve token faucet permits one 1,000-token claim per address and
has a hard 100,000-token global issuance cap, so public claims cannot exhaust
the 1,000,000-token unwind reserve. The maker retains a 200,000-token buffer;
rerunning the deploy task restores any depleted active Aqua balance with
Aqua.push without mutating the strategy.
The task emits BREAKWATER_PUBLIC_MANIFEST in the exact JSON shape consumed by
web/lib/breakwater-deployment.json, plus
a separate transaction-rich evidence record:
cp .env.example .env
# Fill PRIVATE_KEY and SEPOLIA_RPC_URL locally; never commit .env.
npm run deploy:public:sepoliaOfficial 1inch dependencies and the official SwapVM template are pinned in
DEPENDENCIES.md. AI assistance and reuse are disclosed in
AI_DISCLOSURE.md.