Deploy and manage Midnight smart contracts to local or preview network. Use this skill when deploying contracts, starting local infrastructure, or connecting to testnet. Triggers on "deploy contract", "start local node", "setup standalone", "deploy to preview", or "midnight infrastructure".
Resources
1Install
npx skillscat add uvroxx/midnight-agent-skills/midnight-deploy Install via the SkillsCat registry.
Midnight Deploy
Deploy Midnight smart contracts to local development environment or preview network (testnet).
When to Use
Use this skill when:
- Deploying a new Compact contract
- Starting local Midnight infrastructure
- Connecting to preview network (testnet)
- Troubleshooting deployment issues
- Setting up development environment
How It Works
- Compiles Compact contract to WebAssembly + ZK circuits
- Starts required infrastructure (node, indexer, proof server)
- Deploys contract with initial state
- Returns contract address for frontend integration
Prerequisites
Before deploying, ensure you have:
# Check Compact compiler
compact check
# Check Node.js
node -v # v23+
# Check Docker (for local infrastructure)
docker -vLocal Development (Standalone)
Start Local Infrastructure
# From project root
npm run setup-standaloneThis starts:
- Midnight Node:
ws://127.0.0.1:9944 - Indexer:
http://127.0.0.1:8088 - Proof Server:
http://127.0.0.1:6300
Deploy to Local
# Build contract first
cd counter-contract
npm run build
# Deploy via CLI
cd ../counter-cli
npm run deploy:localPreview Network (Testnet)
Configure Environment
Create counter-cli/.env:
MY_PREVIEW_MNEMONIC="your twelve word mnemonic phrase here"
MY_UNDEPLOYED_UNSHIELDED_ADDRESS=""Get Test Tokens
- Visit Midnight Faucet
- Enter your wallet address
- Receive tSTAR tokens
Deploy to Preview
# Build contract
cd counter-contract
npm run build
# Deploy to testnet
cd ../counter-cli
npm run deploy:previewDeployment Output
Successful deployment returns:
{
"contractAddress": "0x1234567890abcdef...",
"deploymentTxHash": "0xabcdef1234567890...",
"network": "preview",
"timestamp": "2024-01-15T10:30:00Z"
}Configure Frontend
After deployment, update frontend environment:
# frontend-vite-react/.env
VITE_CONTRACT_ADDRESS="0x1234567890abcdef..."Network Configuration
Local (Standalone)
const config = {
node: "ws://127.0.0.1:9944",
indexer: "http://127.0.0.1:8088",
proofServer: "http://127.0.0.1:6300",
};Preview (Testnet)
const config = {
node: "wss://rpc.preview.midnight.network",
indexer: "https://indexer.preview.midnight.network",
proofServer: "https://proof.preview.midnight.network",
};Deployment Script
For automated deployments, use:
bash /path/to/skills/midnight-deploy/scripts/deploy.sh [network] [contract-path]Arguments:
network- Target network:localorpreview(default:local)contract-path- Path to contract directory (default: current directory)
Examples:
# Deploy to local
bash scripts/deploy.sh local ./counter-contract
# Deploy to preview testnet
bash scripts/deploy.sh preview ./counter-contractPresent Results to User
After successful deployment:
Deployment successful!
Contract Address: 0x1234567890abcdef1234567890abcdef12345678
Network: preview
Transaction: 0xabcdef1234567890abcdef1234567890abcdef12
Next steps:
1. Update VITE_CONTRACT_ADDRESS in frontend-vite-react/.env
2. Start frontend: npm run dev:frontend
3. Connect wallet and interact with contractTroubleshooting
Docker Not Running
Error: Cannot connect to Docker daemonSolution: Start Docker Desktop or Docker daemon
Compact Compiler Not Found
Error: compact: command not foundSolution: Install Compact compiler:
curl --proto '=https' --tlsv1.2 -LsSf \
https://github.com/midnightntwrk/compact/releases/latest/download/compact-installer.sh | sh
compact update +0.27.0Insufficient Funds
Error: Insufficient balance for transactionSolution: Get test tokens from faucet
Proof Server Timeout
Error: Proof generation timeoutSolution:
- Check proof server is running
- Simplify circuit complexity
- Increase timeout in config
Contract Already Deployed
Error: Contract at address already existsSolution: Use a new deployment or join existing contract
Deployment Checklist
- Contract compiled successfully (
npm run build) - Tests passing (
npm run test) - Environment variables configured (
.env) - Wallet funded with tSTAR (for preview)
- Infrastructure running (for local)
- Contract address saved
- Frontend configured