UvRoxx

midnight-deploy

3
2
# Install this skill:
npx skills add UvRoxx/midnight-agent-skills --skill "midnight-deploy"

Install specific skill from multi-skill repository

# 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".

# SKILL.md


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

  1. Compiles Compact contract to WebAssembly + ZK circuits
  2. Starts required infrastructure (node, indexer, proof server)
  3. Deploys contract with initial state
  4. 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 -v

Local Development (Standalone)

Start Local Infrastructure

# From project root
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

# Build contract first
cd counter-contract
npm run build

# Deploy via CLI
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

  1. Visit Midnight Faucet
  2. Enter your wallet address
  3. Receive tSTAR tokens

Deploy to Preview

# Build contract
cd counter-contract
npm run build

# Deploy to testnet
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:

# Deploy to local
bash scripts/deploy.sh local ./counter-contract

# Deploy to preview testnet
bash scripts/deploy.sh preview ./counter-contract

Present 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 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

  • [ ] 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

References

# Supported AI Coding Agents

This skill is compatible with the SKILL.md standard and works with all major AI coding agents:

Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.