Files
no_five/docs/DEPLOYMENT.md
2025-11-20 15:35:25 -08:00

5.1 KiB

Deployment Guide

Prerequisites

  1. Node.js >= 18.0.0
  2. Foundry (Forge) installed
  3. Environment variables configured
  4. Testnet tokens for testing

Environment Setup

1. Install Dependencies

# Install Node.js dependencies
npm install

# Install Foundry dependencies
forge install

2. Configure Environment

Create .env file:

# RPC URLs
RPC_URL=https://eth-mainnet.g.alchemy.com/v2/YOUR_KEY
TESTNET_RPC_URL=https://eth-sepolia.g.alchemy.com/v2/YOUR_KEY

# Private Keys
PRIVATE_KEY=your_private_key_here
MULTISIG_ADDRESS=your_multisig_address

# Contract Addresses (will be filled after deployment)
VAULT_ADDRESS=
KERNEL_ADDRESS=
FLASH_ROUTER_ADDRESS=
CONFIG_REGISTRY_ADDRESS=
POLICY_ENGINE_ADDRESS=
GOVERNANCE_GUARD_ADDRESS=
ORACLE_ADAPTER_ADDRESS=
COLLATERAL_MANAGER_ADDRESS=

# Protocol Addresses (Mainnet)
AAVE_POOL_ADDRESS=0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2
UNISWAP_ROUTER_ADDRESS=0xE592427A0AEce92De3Edee1F18E0157C05861564
BALANCER_VAULT_ADDRESS=0xBA12222222228d8Ba445958a75a0704d566BF2C8
DAI_FLASH_MINT_ADDRESS=0x1EB4CF3A948E7D72A198fe073cCb8C7a948cD853

# Chainlink Feeds
CHAINLINK_WETH_USD=0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419
CHAINLINK_WBTC_USD=0xF4030086522a5bEEa4988F8cA5B36dbC97BeE88c

Deployment Order

Deploy contracts in this order (respects dependencies):

Step 1: Oracle Adapter

forge script scripts/deploy.ts:DeployOracleAdapter --rpc-url $TESTNET_RPC_URL --broadcast

Step 2: Config Registry

forge script scripts/deploy.ts:DeployConfigRegistry --rpc-url $TESTNET_RPC_URL --broadcast

Step 3: Policy Modules

Deploy all 4 policy modules:

forge script scripts/deploy.ts:DeployPolicyHFTrend --rpc-url $TESTNET_RPC_URL --broadcast
forge script scripts/deploy.ts:DeployPolicyFlashVolume --rpc-url $TESTNET_RPC_URL --broadcast
forge script scripts/deploy.ts:DeployPolicyLiquiditySpread --rpc-url $TESTNET_RPC_URL --broadcast
forge script scripts/deploy.ts:DeployPolicyProviderConcentration --rpc-url $TESTNET_RPC_URL --broadcast

Step 4: Policy Engine

forge script scripts/deploy.ts:DeployPolicyEngine --rpc-url $TESTNET_RPC_URL --broadcast

Step 5: Vault

forge script scripts/deploy.ts:DeployVault --rpc-url $TESTNET_RPC_URL --broadcast

Step 6: Flash Router

forge script scripts/deploy.ts:DeployFlashRouter --rpc-url $TESTNET_RPC_URL --broadcast

Step 7: Collateral Manager

forge script scripts/deploy.ts:DeployCollateralManager --rpc-url $TESTNET_RPC_URL --broadcast

Step 8: Governance Guard

forge script scripts/deploy.ts:DeployGovernanceGuard --rpc-url $TESTNET_RPC_URL --broadcast

Step 9: Kernel

forge script scripts/deploy.ts:DeployKernel --rpc-url $TESTNET_RPC_URL --broadcast

Configuration

After deployment, configure all contracts:

tsx scripts/configure.ts

This script will:

  1. Set Config Registry parameters
  2. Register policy modules with Policy Engine
  3. Configure Oracle Adapter with price feeds
  4. Grant roles (Kernel, Operator)
  5. Set allowed assets
  6. Configure provider caps

Verification

1. Verify Contracts on Etherscan

forge verify-contract --chain-id 1 --num-of-optimizations 200 \
  --compiler-version v0.8.24 \
  CONTRACT_ADDRESS CONTRACT_NAME \
  --constructor-args $(cast abi-encode "constructor(...)" ARG1 ARG2 ...)

2. Run Tests

# Unit tests
forge test

# Fork tests (on mainnet fork)
forge test --fork-url $RPC_URL

# Coverage
forge coverage

3. Run Simulations

tsx scripts/simulate.ts

Multi-Chain Deployment

Arbitrum

export ARBITRUM_RPC_URL=https://arb1.arbitrum.io/rpc
forge script scripts/deploy.ts --rpc-url $ARBITRUM_RPC_URL --broadcast

Polygon

export POLYGON_RPC_URL=https://polygon-rpc.com
forge script scripts/deploy.ts --rpc-url $POLYGON_RPC_URL --broadcast

Update protocol addresses for each chain in .env.

Mainnet Deployment Checklist

  • All contracts tested on testnet
  • All parameters verified
  • Multi-sig wallet configured
  • Emergency pause mechanism ready
  • Monitoring dashboard setup
  • Alert system configured
  • Documentation reviewed
  • Security audit completed (if applicable)
  • Gas optimization verified
  • Backup deployment scripts ready

Post-Deployment

  1. Monitor closely for first 24-48 hours
  2. Start with conservative parameters
  3. Gradually increase limits after stability
  4. Enable MEV bot after verification
  5. Set up alerts for all critical metrics

Emergency Procedures

Pause System

# Call pause on all contracts
cast send $VAULT_ADDRESS "pause()" --private-key $PRIVATE_KEY

Upgrade Contracts

# Upgrade via UUPS proxy
cast send $PROXY_ADDRESS "upgradeTo(address)" $NEW_IMPL_ADDRESS --private-key $PRIVATE_KEY

Update Parameters

# Reduce limits immediately
cast send $CONFIG_REGISTRY_ADDRESS "setMaxLoops(uint256)" 1 --private-key $PRIVATE_KEY

Monitoring

Set up monitoring for:

  • Position health factors
  • Flash loan execution rates
  • Policy denial rates
  • Gas costs
  • Contract events