No description
Find a file
openhands 777bec8563 fix: evolution.patch references removed LiquidityManager constant (pre-existing structural debt) (#842)
Extend the patch to also replace the NatSpec comments above MAX_ANCHOR_WIDTH,
which became misleading after switching to type(uint24).max. The old comments
claimed overflow-safety ("fits in int24"); the new comments document that the
production cap is 1233, that values above 123358 overflow int24 and revert,
and that this is tolerable in the evolution context where reverts score zero
fitness. The patch now correctly updates both the constant and its documentation.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-16 09:20:41 +00:00
.claude fix: refactor AGENTS.md into progressive-disclosure structure (#184) 2026-02-23 09:46:35 +00:00
.codeberg/ISSUE_TEMPLATE fix: Issue template (push3-seed.yaml) doesn't enumerate manifest.jsonl fields (#705) 2026-03-14 00:37:06 +00:00
.husky feat: OptimizerV3 with direct 2D staking-to-LP parameter mapping 2026-02-13 18:21:18 +00:00
.woodpecker ci: use local git mirror as clone reference 2026-03-14 12:44:08 +00:00
containers fix: bootstrap.sh hardcodes BASE_SEPOLIA_LOCAL_FORK even on mainnet forks (#746) 2026-03-14 22:36:52 +00:00
docker fix: copy hoisted node_modules in CI Dockerfile (#161) 2026-02-20 02:36:00 +01:00
docs fix: Hardcoded TWAP/cooldown values not documented (#825) 2026-03-15 19:51:52 +00:00
kraiken-lib chore: add planner watermarks to all AGENTS.md files 2026-03-15 16:42:45 +00:00
landing chore: add planner watermarks to all AGENTS.md files 2026-03-15 16:42:45 +00:00
onchain fix: AttackRunner.s.sol NPM_ADDR last byte is 0xF1 but scripts use 0xF3 (#807) 2026-03-16 00:50:28 +00:00
packages fix: correct TypeScript cast for shortMessage in getErrorMessage (#430) 2026-03-06 05:13:27 +00:00
scripts fix: MEMORY_FILE parent directory ($REPO_ROOT/tmp/) also not guaranteed to exist (#844) 2026-03-16 07:57:20 +00:00
services chore: add planner watermarks to all AGENTS.md files 2026-03-15 16:42:45 +00:00
tests fix: update e2e tests for public recenter() — remove recenterAccess references 2026-03-14 01:44:15 +00:00
tools fix: evolution.patch references removed LiquidityManager constant (pre-existing structural debt) (#842) 2026-03-16 09:20:41 +00:00
web-app chore: add planner watermarks to all AGENTS.md files 2026-03-15 16:42:45 +00:00
.claude-code-supervisor.yml fix: refactor AGENTS.md into progressive-disclosure structure (#184) 2026-02-23 09:46:35 +00:00
.dockerignore feature/ci (#84) 2026-02-02 19:24:57 +01:00
.gitignore Move holdout scenarios to separate repo 2026-03-04 08:20:11 +00:00
.gitmodules fix: clean URLs, contract addresses, gitmodule (#16, #58, #147) (#162) 2026-02-20 17:28:59 +01:00
.lintstagedrc.json fix: lint: Ban waitForTimeout, setTimeout-as-delay, and fixed sleep patterns (#442) 2026-03-03 20:58:01 +00:00
AGENTS.md fix: Kraiken.sol and Stake.sol absent from agent context across all runs (#829) 2026-03-15 18:41:57 +00:00
docker-compose.yml fix: Get KRK: inline swap widget for local dev, Uniswap link for production (#136) 2026-02-27 06:55:41 +00:00
eslint.config.js fix: lint: Ban waitForTimeout, setTimeout-as-delay, and fixed sleep patterns (#442) 2026-03-03 20:58:01 +00:00
HARBERG.md docs: consolidate and update all documentation for launch readiness 2026-02-13 19:22:34 +00:00
IMPLEMENTATION_SUMMARY.md feat/ponder-lm-indexing (#142) 2026-02-18 00:19:05 +01:00
package-lock.json fix: evaluator: add stakeKrk and unstakeKrk browser helpers (#460) 2026-03-05 14:38:13 +00:00
package.json fix: lint: Ban waitForTimeout, setTimeout-as-delay, and fixed sleep patterns (#442) 2026-03-03 20:58:01 +00:00
playwright.config.ts feat/ponder-lm-indexing (#142) 2026-02-18 00:19:05 +01:00
README.md docs: consolidate and update all documentation for launch readiness 2026-02-13 19:22:34 +00:00
STATE.md fix: Unclamped anchorWidth can overflow tick range — no upper-bound guard after MAX_ANCHOR_WIDTH removal (#783) (#817) 2026-03-15 21:34:33 +00:00
TECHNICAL_APPENDIX.md docs: consolidate and update all documentation for launch readiness 2026-02-13 19:22:34 +00:00
USERTEST-REPORT-V2.md feat/ponder-lm-indexing (#142) 2026-02-18 00:19:05 +01:00
VERSION_VALIDATION.md docs: consolidate and update all documentation for launch readiness 2026-02-13 19:22:34 +00:00

KRAIKEN

The fairest ponzi in the world.

KRAIKEN is a DeFi protocol that couples Harberger-tax staking with a dominant Uniswap V3 liquidity manager. The result: asymmetric slippage, sentiment-driven pricing, and VWAP-based price memory that protects the protocol from exploitation.

Deployed on Base.

The Three Stages

  1. Harberger — A staking market balanced by the Harberger tax. Complete.
  2. KRAIKEN — Token issuance governed by an automated liquidity manager. Current stage.
  3. SoverAIgns — The liquidity manager augmented by AI for outlandish performance. Future.

How It Works

Three-Position Liquidity Strategy

The LiquidityManager maintains three Uniswap V3 positions simultaneously:

  • Anchor — Shallow liquidity near the current price. Fast price discovery, high slippage for attackers.
  • Discovery — Medium liquidity bordering the anchor. The fee capture zone.
  • Floor — Deep liquidity at VWAP-adjusted distance. Price memory that protects against whale dumps.

Any round-trip trade (buy → recenter → sell) pays disproportionate slippage costs twice, making manipulation unprofitable.

Harberger Tax Sentiment Oracle

Stakers self-assess tax rates on their positions. Higher tax = higher confidence. Positions can be snatched by anyone willing to pay more. This creates a continuous prediction market for token sentiment.

OptimizerV3

Reads staking data (% staked, average tax rate) and outputs a binary bear/bull configuration:

  • Bear (~94% of state space): AS=30%, AW=100, CI=0, DD=0.3e18 — protective
  • Bull (>91% staked, low tax): AS=100%, AW=20, CI=0, DD=1e18 — aggressive fee capture

The binary step avoids the AW 40-80 kill zone where intermediate parameters are exploitable.

VWAP Floor Defense

The floor position uses volume-weighted average price with directional recording (buys only). During sell pressure, the VWAP-to-price distance grows, making the floor resist walkdown. This gives the protocol "eternal memory" against dormant whale attacks.

Tech Stack

Component Technology Location
Smart Contracts Solidity, Foundry onchain/
Indexer Ponder (TypeScript) services/ponder/
Staking App Vue 3, Vite, Wagmi web-app/
Landing Page Vue 3, Vite landing/
Automation Bot Node.js, Express services/txnBot/
Shared Library TypeScript kraiken-lib/
Block Explorer Otterscan Docker service
Reverse Proxy Caddy Docker service

Repository Structure

harb/
├── onchain/           # Solidity contracts, tests, deployment scripts, analysis
│   ├── src/           # Core: Kraiken, Stake, LiquidityManager, OptimizerV3
│   ├── test/          # Foundry test suite
│   ├── script/        # Deployment scripts
│   └── analysis/      # Fuzzing, parameter sweeps, security review
├── services/
│   ├── ponder/        # Blockchain indexer → GraphQL API
│   └── txnBot/        # recenter() + payTax() automation
├── web-app/           # Staking dashboard (Vue 3)
├── landing/           # Marketing site (Vue 3)
├── kraiken-lib/       # Shared TypeScript helpers and ABIs
├── tests/e2e/         # Playwright end-to-end tests
├── scripts/           # Dev environment, CI bootstrap, utilities
├── docker/            # CI Dockerfiles
├── containers/        # Entrypoints, Caddyfile
└── docs/              # Deployment runbook, Docker guide

Quick Start

# Prerequisites: Docker Engine (Linux) or Colima (Mac)
# See docs/docker.md for installation

nohup ./scripts/dev.sh start &    # Start full stack (~3-6 min first time)
tail -f nohup.out                  # Watch progress
./scripts/dev.sh health            # Verify all services healthy

Access points (via Caddy on port 8081):

Contracts (Base Mainnet)

Contract Address
Kraiken 0x45caa5929f6ee038039984205bdecf968b954820
Stake 0xed70707fab05d973ad41eae8d17e2bcd36192cfc
LiquidityManager 0x7fd4e645ce258dd3942eddbeb2f99137da8ba13b

Documentation

License

GPL-3.0-or-later