Deployment
Contract Deployment
Prerequisites
- Scarb 2.9.2 installed
- Funded deployer account on target network
- Environment variables configured:
export STARKNET_RPC_URL=https://starknet-sepolia.public.blastapi.io
export DEPLOYER_ADDRESS=0x...
export DEPLOYER_PRIVATE_KEY=0x...Deploy to Sepolia
# Build contracts first
cd packages/contracts && scarb build && cd ../..
# Deploy all contracts
pnpm tsx scripts/deploy-contracts.tsThe deployment script:
- Declares all contract classes
- Deploys contracts in dependency order
- Saves addresses to
deployments/sepolia-latest.json
Wire Permissions
After deployment, set up cross-contract permissions:
DEPLOYER_PRIVATE_KEY=0x... DEPLOYER_ADDRESS=0x... pnpm tsx scripts/wire-permissions.tsThis executes a multicall that:
- Adds CDPManager as MoonUSD minter/burner
- Sets CDPManager on PositionNFT, StabilityPool, RedemptionManager
- Configures PriceOracle with Pragma address and asset keys
- Sets max staleness to 3600 seconds
Deployment Order
1. MoonUSD (no deps)
2. PositionNFT (no deps)
3. PriceOracle (no deps)
4. ProtocolConfig (no deps)
5. StabilityPool (needs MoonUSD)
6. RedemptionManager (needs MoonUSD, PriceOracle)
7. CDPManager (needs all above)Frontend Deployment (Vercel)
The frontend is deployed to Vercel as a Next.js app:
cd packages/frontend
vercel --prodEnvironment Variables (Vercel Dashboard)
NEXT_PUBLIC_STARKNET_NETWORK=sepolia
NEXT_PUBLIC_CDP_MANAGER=0x300a5714...
NEXT_PUBLIC_MOONUSD=0x4f939a71...
NEXT_PUBLIC_PRICE_ORACLE=0x381e4748...
NEXT_PUBLIC_STABILITY_POOL=0x56220005...
NEXT_PUBLIC_POSITION_NFT=0x2750ea20...
NEXT_PUBLIC_REDEMPTION_MANAGER=0x78e7d3ce...
NEXT_PUBLIC_PROTOCOL_CONFIG=0x0b49bd86...
NEXT_PUBLIC_BACKEND_URL=https://api.sepolia.moonight.funBackend Deployment (Docker)
cd packages/backend
docker build -t moonight-backend .
docker run -p 3001:3001 --env-file .env moonight-backendOr using Docker Compose from the repo root:
docker compose up -dCI/CD Pipeline
| Trigger | Action |
|---|---|
Push to main (contracts changed) | Build + deploy to Sepolia |
Push to main (frontend changed) | Deploy to Vercel |
| Pull request | Build + test all packages |
Current Deployment
All contracts are deployed on Starknet Sepolia. Addresses are in deployments/sepolia-latest.json.
View on Starkscan: