No description
Find a file
openhands a6b64d3219 fix: Push3 evolution: mutation operators for bytecode programs (#544)
Implements the five Push3 mutation operators and the meta-operator for
the optimizer evolution pipeline:

- mutateConstant: shifts a random integer literal by ±δ (clamped to 0)
- swapOperator: swaps ADD↔SUB, MUL↔DIV, GT↔LT, GTE↔LTE
- deleteInstruction: removes a random non-EXEC.IF instr; validates result
- insertInstruction: inserts stack-neutral pair (push 0 + DYADIC.POP)
- crossover: single-point crossover of two programs at instruction boundaries
- mutate: applies N random mutations from the four single-program operators

All mutations validate output via transpile() symbolic stack simulation.
Invalid mutations silently return the original program.

35 unit tests cover all operators, edge cases (empty program, single
instruction, deep stack), and the acceptance criterion that
mutate(optimizer_v3, 3) produces ≥10 distinct valid variants in 20 trials.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-11 16:24:24 +00:00
.claude fix: refactor AGENTS.md into progressive-disclosure structure (#184) 2026-02-23 09:46:35 +00:00
.husky feat: OptimizerV3 with direct 2D staking-to-LP parameter mapping 2026-02-13 18:21:18 +00:00
.woodpecker fix: overlay @harb/utils into CI webapp container 2026-03-03 06:21:22 +00:00
containers fix: webapp-entrypoint.sh CI path bypasses contracts.env sourcing without documentation (#422) 2026-03-06 07:24:54 +00:00
docker fix: copy hoisted node_modules in CI Dockerfile (#161) 2026-02-20 02:36:00 +01:00
docs fix: Red-team: replace ethPerToken with exact total-LM-ETH metric (#539) 2026-03-11 06:28:02 +00:00
kraiken-lib fix: \commaNumber\ silently returns '0' for NaN and falsy values (#427) 2026-03-06 05:51:50 +00:00
landing fix: Add cache headers to Ponder GraphQL proxy in Caddy (#447) 2026-03-06 03:07:24 +00:00
onchain fix: Push3 optimizer: dyadic rational input interface (8 slots) + 4-output redesign (#548) 2026-03-11 15:23:36 +00:00
packages fix: correct TypeScript cast for shortMessage in getErrorMessage (#430) 2026-03-06 05:13:27 +00:00
scripts fix: fix: strip cast formatted annotations from red-team.sh (#577) 2026-03-11 10:19:14 +00:00
services fix: Issue #447 remains unresolved: no caching path exists for POST GraphQL requests (#478) 2026-03-06 19:49:13 +00:00
tests fix: Misleading 'Tax Paid' label — value includes unpaid tax due (#374) 2026-03-06 11:51:45 +00:00
tools fix: Push3 evolution: mutation operators for bytecode programs (#544) 2026-03-11 16:24:24 +00:00
web-app fix: unstakePosition() has no error handling at all (#482) 2026-03-06 18:15:30 +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 docs: scope engineering principles to infra/tests, not frontend polling (#470) 2026-03-06 11:17:50 +01: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
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