This guide covers the deployment process for all components of the UBI system, including the Cartesi coprocessor, smart contracts, and frontend application.
- Node.js v20.11+
- Docker Desktop
- Foundry
- Git
# Install Cartesi Coprocessor CLI
# Download from https://github.com/Mugen-Builders/co-processor-cli/releases
tar -xzf cartesi-coprocessor-aarch64-apple-darwin.tar.gz
sudo mv cartesi-coprocessor /usr/local/bin/
sudo chmod +x /usr/local/bin/cartesi-coprocessor
# Install Cartesi CLI
npm i -g @cartesi/cli
# Enable RISC-V support in Docker
docker run --privileged --rm tonistiigi/binfmt --install allCreate .env file in project root:
# Network Configuration
RPC_URL="https://arbitrum-sepolia.infura.io/v3/your-api-key"
CHAIN_ID="421614"
NETWORK="arbitrum-sepolia"
# Contract Deployment
PRIVATE_KEY="your-private-key"
ETHERSCAN_API_KEY="your-etherscan-api-key"
# DIMO Integration
DIMO_NFT_ADDRESS="0xcB96C5e74cc38C9e4989AEfCAb94e9873182a7d5"
DIMO_DEVELOPER_JWT="your-jwt-token"# Start local devnet
cartesi-coprocessor start-devnet
# Build and publish coprocessor
cd coprocessor/ubi-risk
cartesi-coprocessor publish --network devnet
cartesi-coprocessor publish-status --network devnet
# Get deployment addresses
cartesi-coprocessor address-book
# Note down Task Issuer Address and Machine Hash# Build and publish
cd coprocessor/ubi-risk
cartesi-coprocessor publish --network testnet
cartesi-coprocessor publish-status --network testnet
# Get deployment addresses
cartesi-coprocessor address-book# Build and publish
cd coprocessor/ubi-risk
cartesi-coprocessor publish --network mainnet
cartesi-coprocessor publish-status --network mainnet
# Get deployment addresses
cartesi-coprocessor address-book# Deploy contract
cd contracts
cartesi-coprocessor deploy --contract-name InsurancePolicy --network devnet --constructor-args <Coprocessor_Address> <Machine_Hash># Deploy contract
cd contracts
cartesi-coprocessor deploy --contract-name InsurancePolicy --network testnet --constructor-args <Coprocessor_Address> <Machine_Hash># Deploy contract
cd contracts
cartesi-coprocessor deploy --contract-name InsurancePolicy --network mainnet --constructor-args <Coprocessor_Address> <Machine_Hash>Update frontend environment variables in frontend/.env:
VITE_RPC_URL=${RPC_URL}
VITE_CHAIN_ID=${CHAIN_ID}
VITE_INSURANCE_CONTRACT_ADDRESS="deployed-contract-address"
VITE_DIMO_NFT_ADDRESS=${DIMO_NFT_ADDRESS}
VITE_DIMO_DEVELOPER_JWT=${DIMO_DEVELOPER_JWT}cd frontend
npm install
npm run build- Check coprocessor status using
cartesi-coprocessor publish-status - Verify machine hash matches deployment
- Test input/output with sample data
- Verify contract deployment on block explorer
- Check contract initialization parameters
- Test basic functionality (create policy, update premium)
- Verify coprocessor integration
- Test connection to blockchain
- Verify DIMO integration
- Test policy creation flow
- Check premium calculations
- Watch for processing errors
- Monitor resource usage
- Track calculation accuracy
- Check input/output patterns
- Track gas usage
- Monitor event emissions
- Watch for failed transactions
- Check state changes
- Track user interactions
- Monitor API responses
- Watch for UI/UX issues
- Check performance metrics
- Update dependencies
- Review logs
- Backup configurations
- Monitor performance
- Update risk coefficients
- Contract pause mechanism
- Rollback procedures
- Incident response plan
- Communication protocol
- Private key management
- Environment variable security
- API key protection
- Role-based access
- Input validation
- Output verification
- Error handling
- Rate limiting
- RPC endpoint security
- API endpoint protection
- CORS configuration
- SSL/TLS setup
- Check Docker logs
- Verify network connectivity
- Validate input format
- Check resource limits
- Review transaction logs
- Check gas settings
- Verify input parameters
- Debug state changes
- Check browser console
- Verify network settings
- Test API endpoints
- Debug user flows