| name | midnight-deploy |
| description | 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". |
| license | MIT |
| metadata | {"author":"webisoft","version":"1.0.0","midnight-version":"0.27.0"} |
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:
compact check
node -v
docker -v
Local Development (Standalone)
Start Local Infrastructure
npm run setup-standalone
This 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
cd counter-contract
npm run build
cd ../counter-cli
npm run deploy:local
Preview 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
cd counter-contract
npm run build
cd ../counter-cli
npm run deploy:preview
Deployment 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: local or preview (default: local)
contract-path - Path to contract directory (default: current directory)
Examples:
bash scripts/deploy.sh local ./counter-contract
bash scripts/deploy.sh preview ./counter-contract
Troubleshooting
Docker Not Running
Error: Cannot connect to Docker daemon
Solution: Start Docker Desktop or Docker daemon
Compact Compiler Not Found
Error: compact: command not found
Solution: 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.0
Insufficient Funds
Error: Insufficient balance for transaction
Solution: Get test tokens from faucet
Proof Server Timeout
Error: Proof generation timeout
Solution:
- Check proof server is running
- Simplify circuit complexity
- Increase timeout in config
Contract Already Deployed
Error: Contract at address already exists
Solution: Use a new deployment or join existing contract
Deployment Checklist
References