Three defensive layers so every Push3 program runs without reverting:
Layer A (transpiler/index.ts): assign bear defaults (CI=0, AS=0.3e18,
AW=100, DD=0.3e18) to all four outputs at the top of calculateParams.
Any output the evolved program does not overwrite keeps the safe default.
Layer B (transpiler/transpiler.ts): graceful stack underflow — dpop/bpop
return '0'/'false' instead of throwing, and the final output-pop falls
back to bear-default literals when fewer than 4 values remain on the
stack. Wrong output count no longer aborts transpilation.
Layer C (transpiler/transpiler.ts + index.ts): wrap the entire function
body in `unchecked {}` so integer overflow wraps (matching Push3), and
emit `(b == 0 ? 0 : a / b)` for every DYADIC./ (div-by-zero → 0,
matching Push3 no-op semantics).
Layer 2 (Optimizer.sol getLiquidityParams): clamp the three fraction
outputs (capitalInefficiency, anchorShare, discoveryDepth) to [0, 1e18]
after abi.decode so a buggy evolved program cannot produce out-of-range
values even if it runs without reverting.
Regenerated OptimizerV3Push3.sol with the updated transpiler; all 193
tests pass (34 Optimizer/OptimizerV3Push3 tests explicitly).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||
|---|---|---|
| .. | ||
| .claude | ||
| .github/workflows | ||
| .husky | ||
| analysis | ||
| lib | ||
| script | ||
| src | ||
| test | ||
| .claude-code-supervisor.yml | ||
| .gas-snapshot | ||
| .gitignore | ||
| .lintstagedrc.json | ||
| .secret.local | ||
| .solhint.json | ||
| .solhintignore | ||
| AGENTS.md | ||
| deployments-local.json | ||
| foundry.toml | ||
| hAIrberger.md | ||
| lcov.info | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| remappings.txt | ||
| UNISWAP_V3_MATH.md | ||
KRAIKEN Onchain
Solidity contracts for the KRAIKEN protocol. Built with Foundry.
Contracts
| Contract | Description |
|---|---|
Kraiken.sol |
ERC20 token with mint/burn controlled by LiquidityManager. VERSION=2. |
LiquidityManager.sol |
Three-position Uniswap V3 strategy (Anchor, Discovery, Floor). |
Stake.sol |
Harberger-tax staking with snatching auctions and discrete tax brackets. |
OptimizerV3.sol |
UUPS upgradeable. Binary bear/bull parameter selection from staking sentiment. |
VWAPTracker.sol |
Volume-weighted average price with directional recording and compression. |
Setup
git submodule update --init --recursive
cd lib/uni-v3-lib && npm install && cd ../..
forge build
forge test
Deploy
source .env
forge script script/BaseSepoliaDeploy.sol:BaseSepoliaDeploy --slow --broadcast --verify --rpc-url ${BASE_SEPOLIA_RPC_URL}
See docs/DEPLOYMENT_RUNBOOK.md for production deployment.
Deployments
Base Mainnet
| Contract | Address |
|---|---|
| Kraiken | 0x45caa5929f6ee038039984205bdecf968b954820 |
| Stake | 0xed70707fab05d973ad41eae8d17e2bcd36192cfc |
| LiquidityManager | 0x7fd4e645ce258dd3942eddbeb2f99137da8ba13b |
Base Sepolia
| Contract | Address |
|---|---|
| Kraiken | 0x22c264Ecf8D4E49D1E3CabD8DD39b7C4Ab51C1B8 |
| Stake | 0xe28020BCdEeAf2779dd47c670A8eFC2973316EE2 |
| LiquidityManager | 0x3d6a8797693a0bC598210782B6a889E11A2340Cd |
Research & Analysis
The analysis/ directory contains fuzzing scripts, parameter sweep tools, and security analysis:
- SECURITY_REVIEW.md — Security analysis and vulnerability assessment
- KRAIKEN_RESEARCH_REPORT.md — Comprehensive research report
- README.md — Analysis tool usage guide
Key findings: critical sqrt price bug fixed, 1050-combo 4D parameter sweep completed, floor ratchet vulnerability identified. See the research report for details.
ABI Architecture
Contract ABIs flow through the stack via kraiken-lib/src/abis.ts, which imports directly from out/ (forge build artifacts). Run forge build to update ABIs across all consumers (ponder, web-app).
References
- AGENTS.md — Agent guide for onchain development
- UNISWAP_V3_MATH.md — Uniswap V3 math reference
- hAIrberger.md — Dynamic LP strategy design document