Open Net Worth
Open Net Worth는 직접 운영하는 오픈소스 개인 AI 자산 비서로, 전체 재무를 하나의 원장에 기록하고 사용자가 제어하는 AI가 관리
Robinhood 체인 NAV 기준 인덱스 주식, Uniswap v4 30포지션 토큰화 주식 및 오라클·중단 없는 상환 경로 제공
A NAV-floored index share on Robinhood Chain: thirty Uniswap v4 positions in tokenised equities, and a redemption path with no oracle and no pause.
금융Solidity · TypeScriptGitHub @camdengrieh온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
Amplestock is a Token backed by Stock based Protocol Owned Liquidity (POL), powered by Uniswap V4
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
AMPS is a fixed-balance ERC-20 share of a protocol-owned index of tokenised equities on Robinhood
Chain (4663). One immutable Uniswap v4 hook serves 32 protocol-owned-liquidity pools: 30
AMPS/ spokes plus AMPS/WETH and AMPS/USDG entry pools. The vault holds the basket,
prices it from Chainlink equity feeds, and publishes a fully diluted NAV per share; pro-rata
redemption at NAV minus a 2.5% fee is unpausable, so NAV is a hard floor while the market sets any
premium above it. All 32 pools are POL-only, so 100% of swap fees accrue to NAV.README 전문 보기 ↗AMPS is a fixed-balance ERC-20 share of a protocol-owned index of tokenised equities on Robinhood
Chain (4663). One immutable Uniswap v4 hook serves 32 protocol-owned-liquidity pools: 30
AMPS/<stock> spokes plus AMPS/WETH and AMPS/USDG entry pools. The vault holds the basket,
prices it from Chainlink equity feeds, and publishes a fully diluted NAV per share; pro-rata
redemption at NAV minus a 2.5% fee is unpausable, so NAV is a hard floor while the market sets any
premium above it. All 32 pools are POL-only, so 100% of swap fees accrue to NAV. A 5% AMPS fee (band
1–6%) is charged on both directions of every pool, in the swap's input currency; at compound()
the creator takes 1% of the volume in each currency in kind, the whole AMPS-side remainder is burned
and the counter side is re-placed as bids. There is no staking. The cheap pass-through fee (5–30 bp)
is reachable only through AmpsRouter.rotate, which moves between two constituents through AMPS
without entering or leaving the index. Genesis is 5,000 AMPS against $5,000 of seed liquidity —
$1.00 per share — with 5% vesting to the team and 95% placed as a 1.25×-per-doubling ask ladder.
After genesis the only path that increases supply is discounted, vesting bonds against registered
collateral. The constituent set, fees and bond parameters are timelocked state; the contracts
themselves are immutable bytecode.
Status: Phase 1 (monorepo scaffold). No production Solidity is written yet, no contract is
deployed, and every address in packages/config is marked for on-chain re-verification.
amplestock/
├─ contracts/ Foundry workspace — solc 0.8.30, evm_version=cancun, tests run --isolate
│ ├─ src/ production Solidity (token, vault, hook, bonds, periphery, policy, oracle, registry)
│ ├─ script/ deploy and preflight scripts
│ ├─ test/ unit / fuzz / invariant / fork / attack / gas
│ └─ lib/ git submodules: forge-std, uniswap-hooks (+ v4-core, v4-periphery), OZ, hookmate
├─ packages/
│ ├─ config/ @amplestocks/config — chains, address book, launch token list, launch parameters
│ ├─ abis/ @amplestocks/abis — wagmi CLI codegen from contracts/out (no output committed yet)
│ └─ quant/ amplestocks-quant — Phase 0B backtests and parameter sweeps (Python)
├─ apps/
│ ├─ web/ dApp (Next.js + wagmi + viem) — placeholder
│ ├─ indexer/ Ponder indexer — placeholder
│ └─ keeper/ compound / rollout / bounty keeper (viem) — placeholder
├─ scripts/
│ └─ licence-gate.py SPDX gate over the production import graph
└─ .github/workflows/ci.yml
Requires Node 22 (.nvmrc), pnpm 10.33, Python 3.11 and Foundry.
# JS/TS workspace
pnpm install
pnpm build # turbo run build (^build ordering)
pnpm test # turbo run test
pnpm typecheck
pnpm lint
# contracts
cd contracts
forge build --sizes
forge fmt --check
FOUNDRY_PROFILE=ci forge test --isolate --no-match-path 'test/gas/*'
forge test --match-path 'test/gas/*' # gas gate: NEVER --isolate (see below)
forge coverage --no-match-path 'test/gas/*' --report lcov
# licence gate — builds its own --build-info artifacts if none are usable
pnpm licence-gate # == --out out-licence --cache cache-licence
python3 scripts/licence-gate.py --out out-mono # read an artifacts dir you already built
python3 scripts/licence-gate.py --no-build # never shell out to forge (exit 2 if unusable)
The gas suite is the one thing that must not run under --isolate: isolation changes
storage warm/cold accounting, so isolated numbers cannot be compared against
contracts/gas/baseline.json, which is measured from a normal transaction. The suite fails if any
measurement exceeds baseline x 1.2, and logs SKIP if the baseline file is absent.
If you run Foundry while another agent or process is building the same tree, use a private artifacts
directory so you do not share out/ and cache/:
FOUNDRY_OUT=out-mono FOUNDRY_CACHE_PATH=cache-mono forge build --build-info
Everything in this repository is MIT (LICENSE, copyright 2026 Amplestocks contributors), and
every source file carries an SPDX header.
The hard rule: no BUSL-1.1, AGPL-3.0, GPL-2.0 or GPL-3.0 code may be reachable from
contracts/src/** — not by import, not by copy, not by line-by-line port. Mechanisms described in
such projects (Olympus v2 and Bond Protocol bond markets, both AGPL-3.0) are used as reference only
and reimplemented from scratch. Uniswap v4-core is a mixed-licence repository: its interfaces,
types and libraries are MIT and we import them; its PoolManager implementation is BUSL-1.1 and we
only ever talk to the already-deployed instance through the MIT IPoolManager interface. Tests may
use hookmate's prebuilt v4 artefacts (MIT wrapper, compiled Uniswap bytecode inside) — test/ and
script/ are exempt from the rule, but the gate still reports what they pull in.
scripts/licence-gate.py enforces this mechanically: it reads Foundry's --build-info output,
walks the real import graph out of contracts/src/**, reads each file's SPDX header, and exits
non-zero on a forbidden licence or a missing header. It runs on every push and pull request. See
NOTICES.md for the full attribution record.
Known trap. Two convenient v4-core helpers are MIT but import BUSL-1.1 files, so importing
either from contracts/src/** fails the gate:
| MIT helper | pulls in (BUSL-1.1) |
|---|---|
v4-core/src/libraries/StateLibrary.sol | libraries/Position.sol |
v4-core/src/libraries/TransientStateLibrary.sol | libraries/Lock.sol, CurrencyReserves.sol, NonzeroDeltaCount.sol |
Production code must read pool state through extsload/exttload against the MIT IExtsload /
IExttload interfaces with our own slot arithmetic in PriceLib, and keep StateLibrary to
test/ and script/. The BUSL files in v4-core are PoolManager.sol, libraries/{Pool, Position, Lock, CurrencyDelta, CurrencyReserves, NonzeroDeltaCount}.sol and test/ProxyPoolManager.sol;
everything else we import is MIT.