Skip to Content
Getting Started

Getting Started

Go from zero to first build in minutes. This page covers repo setup, local development, and key integration rules.

Integration rules (must follow)

  1. Never hardcode addresses. Load from deployments/<network>.json.
  2. Never invent event signatures. Use src/lib/Events.sol + ABIs in abis/.
  3. Use correct UI verbs. ETH payouts = “Collect” | CLAIM rewards = “Harvest”

Prerequisites

ToolVersion
Foundry1.6.0 (CI pinned)
Node.jsUse repo .nvmrc
Python 3For lint/sync scripts
GitStandard

Repo setup

make deps # Foundry libraries (pinned) make build # Build contracts make test # Run tests

Run local stack

npm run local

Starts Anvil → deploys contracts → runs the two-step local wiring flow (WireMaintenanceHubWire) → writes synced manifests → starts frontend dev server. The runner simulates both DeployLocal.s.sol and DeployLocalDexHarness.s.sol before broadcasting so a late local constructor or pool-registration revert cannot leave a partial local stack behind, pins the same local signer into both wire passes, explicitly sets GUARDIAN to that same deployer during those wire passes, pins LOCAL_GENESIS_BURN_GUARDIAN to that same deployer address, and relies on Wire.s.sol preflight simulation so ambient shell keys or stale guardian overrides cannot create partial local wiring / finalize drift. DeployLocalDexHarness.s.sol also checks its freshly deployed WETH / factory / pool roots before success. The standard local finalize helpers also pin that same local deployer into GUARDIAN.

EIP-170 code size limits are enforced by default. To temporarily allow oversized local deploys, run with LOCAL_ALLOW_OVERSIZE=1 (or --allow-oversize).

Variants:

CommandWhat it does
npm run local:deployDeploy + write manifests only
npm run local:frontendFrontend only (manifests must exist)

CI-parity gates

make gates

Run before shipping changes. Checks: deployment sync, manifest parity, docs lint, ABI lint/sanity, subgraph lint, Solidity policy lint, analytics SQL lint.

Supported environments

EnvironmentNetwork
localAnvil (Foundry)
base_sepoliaBase Sepolia (staging)
base_mainnetBase mainnet (production)

Manifests: deployments/<network>.json (canonical) | frontend/public/deployments/<network>.json (UI runtime copy)

Deployed addresses

TypePath
Canonicaldeployments/<network>.json
Human-readabledeployments/<network>.md

Rule: Filter logs by evt_block_number >= startBlock from manifest.

Repo map

PathContents
src/Solidity contracts; src/lib/Constants.sol, src/lib/Events.sol
docs/Spec, security, analytics, UI notes
deployments/<network>.json (canonical manifests)
abis/Versioned exported ABIs for indexers
frontend/Next.js app (proprietary; not released)
subgraph/The Graph mappings + schema
analytics/Dune integration pack + SQL templates
workers/Offchain services (chat, etc)

Key params (v1.0.0)

Quick reference for the most common constants. See Constants Reference for the full list.

Crown pricing (MineCore)

ParamValue
Floor0.001 ETH
Decay1 hour
Reference updatereferencePrice = pricePaid * 2

Emissions

Linear decay over 2 years.

StreamStartFloor
Crown (King)50 CLAIM/s~5.56 CLAIM/s
Furnace reserve5 CLAIM/s~0.56 CLAIM/s

Locks (VeClaimNFT)

ParamValue
Min amount1,000 CLAIM
Duration7–365 days
Max per wallet32

Barons activation (ShareholderRoyalties)

MIN_VE_FLUSH = 100e18 — manual / residual shareholder flushes below the threshold no-op, but takeover allocations are auto-attempted immediately and index as soon as a processed shareholder denominator exists and the ve checkpoint is current in that block.

See also