harb/kraiken-lib
openhands 85350caf52 feat: OptimizerV3 with direct 2D staking-to-LP parameter mapping
Core protocol changes for launch readiness:

- OptimizerV3: binary bear/bull mapping from (staking%, avgTax) — avoids
  exploitable AW 30-90 kill zone. Bear: AS=30%, AW=100, CI=0, DD=0.3e18.
  Bull: AS=100%, AW=20, CI=0, DD=1e18. UUPS upgradeable with __gap[48].
- Directional VWAP: only records prices on ETH inflow (buys), preventing
  sell-side dilution of price memory
- Floor formula: unified max(scarcity, mirror, clamp) — VWAP mirror uses
  distance from adjusted VWAP as floor distance, no branching
- PriceOracle (M-1 fix): correct fallback TWAP divisor (60000s, not 300s)
- Access control (M-2 fix): deployer-only guard on one-time setters
- Recenter rate limit (M-3 fix): 60-second cooldown for open recenters
- Safe fallback params: recenter() optimizer-failure defaults changed from
  exploitable CI=50%/AW=50 to safe bear-mode CI=0/AW=100
- Recentered event for monitoring and indexing
- VERSION bump to 2, kraiken-lib COMPATIBLE_CONTRACT_VERSIONS updated

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 18:21:18 +00:00
..
src feat: OptimizerV3 with direct 2D staking-to-LP parameter mapping 2026-02-13 18:21:18 +00:00
.gitignore Complete project rename from HARB/Harberg to KRAIKEN with KRK token symbol 2025-07-11 13:47:42 +02:00
.lintstagedrc.json tax rate, version and compose (#70) 2025-10-07 19:26:08 +02:00
.prettierignore tax rate, version and compose (#70) 2025-10-07 19:26:08 +02:00
.prettierrc lint/lib (#49) 2025-10-03 11:57:01 +02:00
AGENTS.md refactor: migrate kraiken-lib to explicit subpath imports (BREAKING CHANGE) (#89) 2025-11-20 18:54:53 +01:00
codegen.yml health checks (#39) 2025-10-02 14:37:59 +02:00
eslint.config.js tax rate, version and compose (#70) 2025-10-07 19:26:08 +02:00
jest.config.cjs fix: configure Jest for ES modules in kraiken-lib (#88) 2025-11-08 12:03:48 +01:00
jest.resolver.cjs fix: configure Jest for ES modules in kraiken-lib (#88) 2025-11-08 12:03:48 +01:00
package-lock.json improve web-app config 2025-10-11 10:55:49 +00:00
package.json fix(web-app): position ID, issuance earned (#96) 2025-11-20 19:44:10 +01:00
README.md refactor: migrate kraiken-lib to explicit subpath imports (BREAKING CHANGE) (#89) 2025-11-20 18:54:53 +01:00
tsconfig.json fix/podman-postgres-integration (#37) 2025-10-01 20:26:49 +02:00
yarn.lock improve web-app config 2025-10-11 10:55:49 +00:00

Test

yarn test

Import

yarn add kraiken-lib

then

import { bytesToUint256LittleEndian, uint256ToBytesLittleEndian } from "kraiken-lib/subgraph";

uint256ToBytesLittleEndian(3n);

get Snatch List

import { getSnatchList } from "kraiken-lib/snatch";

const positionIds = getSnatchList(positions, neededShares, maxTaxRateDecimal, stakeTotalSupply);