Installation Guide¶
Get your Verdikta Arbiter Node up and running with our automated installer. This comprehensive guide walks you through every step, from prerequisites to final configuration.
Prerequisites¶
Before starting, ensure you have:
System Requirements¶
- OS: Ubuntu 20.04+, macOS 11+, or Windows WSL2
- Hardware: 8GB+ RAM, 200GB+ storage, 2+ CPU cores
- Software: Git, Docker, Node.js (auto-installed if missing)
Required API Keys¶
- OpenAI API Key: For AI-powered arbitration (Get API Key)
- Web3 Provider: Choose Infura, Alchemy, or QuickNode (Infura, Alchemy)
- IPFS Service: For document storage (Pinata recommended)
- Optional: Anthropic API Key for Claude AI (Anthropic Console)
Network Funds¶
For Testing: - Base Sepolia ETH (free from Base Sepolia Faucet) - Queries are paid for with Base Sepolia LINK (free from Chainlink Faucet)
For Production: - Base Mainnet ETH (~\(50-100 USD) - Queries are paid for with Base Mainnet LINK (Users can purchase on exchanges--querries cost ~\)1 of LINK)
Wallet Setup¶
- Create a separate test wallet (never use your main wallet!)
- Export the private key (remove 0x prefix)
- Fund with testnet tokens for safe testing
Security Warning
Always use a separate test wallet for oracle deployment. Never use your main wallet's private key.
Preliminary Steps¶
Step A: Clone Repository¶
Clone the Verdikta Arbiter repository and navigate to the installer:
Step B: Run the Automated Installer¶
Start the installation process:
The installer will guide you through 9 main steps. Here's what happens in each step:
The 9 Main Installation Steps¶
Step 1: System Prerequisites Check¶
The installer first verifies your system meets all requirements.
What It Checks¶
- Operating System: Ubuntu 20.04+, macOS 11+, or WSL2
- Hardware: Minimum 8GB RAM, 200GB storage
- Software: Node.js, Docker, Git
- Network: Internet connectivity
If Prerequisites Fail¶
The installer will offer to install missing components automatically:
Would you like to install Node.js v20.18.0 using nvm? (y/n): y
Would you like to install Docker? (y/n): y
Response: Type y
to install automatically, or n
to skip (not recommended).
Step 2: Environment Setup¶
Configure your installation directory, network selection, and API keys.
Installation Directory¶
Prompt: Installation directory [~/verdikta-arbiter-node]:
What to do: - Press Enter for the default location - Or type a custom path like /opt/verdikta-arbiter
Network Selection¶
Prompt: Select deployment network:
1) Base Sepolia (Testnet) - Recommended for testing
2) Base Mainnet - Production (requires real ETH)
What to choose: - Option 1: Base Sepolia testnet (free, recommended for learning) - Option 2: Base Mainnet (production, requires real ETH, payments to node made in LINK)
Network Recommendations
For development or testing: Choose Base Sepolia (testnet) to learn the system without spending real money.
Production deployments: Choose Base Mainnet only after testing thoroughly on testnet.
API Keys Configuration¶
OpenAI API Key¶
Prompt: Enter your OpenAI API Key (leave blank to skip):
How to get it:
-
Go to OpenAI Platform
-
Sign up or log in
-
Navigate to API Keys → "+ Create new secret key"
-
Name it "Verdikta Arbiter" and copy the key
Example: sk-1234567890abcdef...
Important
Fund your OpenAI account with credits. The API requires payment for usage.
Anthropic API Key (Optional)¶
Prompt: Enter your Anthropic API Key (leave blank to skip):
How to get it:
-
Go to Anthropic Console
-
Sign up → API Keys → "Create Key"
-
Copy the key
Example: sk-ant-...
Infura API Key (Required)¶
Prompt: Enter your Infura API Key:
How to get it:
-
Go to Infura.io and sign up (free)
-
Create a new project → Select Ethereum
-
Copy the Project ID from your dashboard
Example: 1234567890abcdef1234567890abcdef
Free Tier
Infura's free tier provides 100,000 requests/day - perfect for testing.
Pinata JWT (Optional)¶
Prompt: Enter your Pinata JWT (leave blank to skip):
How to get it:
-
Go to Pinata.cloud and sign up
-
API Keys → "New Key" → Give admin permissions
-
Copy the JWT token
Wallet Private Key (Required)¶
Prompt: Enter your wallet private key for contract deployment (without 0x prefix):
⚠️ CRITICAL SECURITY STEPS:
-
Create a NEW test wallet in MetaMask (never use your main wallet)
-
Get Network Funds:
- Base Sepolia: Go to Base Sepolia Faucet for free ETH
-
Base Mainnet: Purchase ETH and transfer to your test wallet (~$50-100 recommended)
-
Export the private key:
- MetaMask → Account menu (3 dots) → Account Details
- Export Private Key → Enter MetaMask password
- Remove the
0x
prefix from the key
Format: Exactly 64 hexadecimal characters (no 0x
)
Example: a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456
Security Warning
- Never use your main wallet with real funds
- For testnet: Only fund test wallet with Base Sepolia ETH
- For mainnet: Use a dedicated wallet with minimal funds for contract deployment
- Private key should be exactly 64 characters without
0x
Step 3: AI Node Installation¶
The installer downloads and sets up the AI arbitration service: - Configures with your API keys - Sets up AI model connections - Duration: ~5 minutes
Step 4: External Adapter Installation¶
Sets up the blockchain-AI bridge service: - Configures communication endpoints - Sets up bridge for Chainlink integration - Duration: ~4 minutes
Step 5: Docker & PostgreSQL Setup¶
Installs Docker containers and database: - Sets up PostgreSQL database for Chainlink - Configures container networking
Prompt: Please enter the existing PostgreSQL password (leave blank to generate a new one):
What to do: Press Enter to auto-generate a secure password (recommended)
Step 6: Chainlink Node Setup¶
Downloads and configures Chainlink node: - Sets up blockchain connectivity with your Web3 provider - Generates node credentials
Prompt: Enter email for Chainlink node login [admin@example.com]:
What to do: - Press Enter for default email - Or enter your preferred email for the UI login
Step 7: Smart Contract Deployment¶
Deploy the oracle contracts to your selected blockchain network.
Automated Contract Deployment¶
The installer automatically handles the complete deployment process:
- Retrieves Chainlink node addresses automatically using the key management system
- Compiles the ArbiterOperator smart contract
- Deploys it to your selected network using your private key
- Authorizes all Chainlink keys to interact with the contract
- Saves all contract addresses and key information
What You'll See¶
[7/9] Deploying Smart Contracts...
✓ Automatically retrieving Chainlink node addresses
✓ Found 2 Chainlink keys to authorize
✓ Compiling contracts
✓ Deploying to Base Sepolia
✓ Contract deployed at: 0x1234567890abcdef...
✓ Authorizing all keys with operator contract
✓ Smart Contract deployment completed
If Deployment Fails¶
Check these common issues: - Insufficient funds: Your node needs Base Sepolia ETH (Testnet) or Base ETH (Mainnet) - Invalid private key: Should be 64 characters without 0x
prefix - Network connectivity: Ensure stable internet connection - RPC endpoint: Verify your Web3 provider is working
Step 8: Job Configuration¶
Configure the number of arbiters for your node with automatic key management.
Arbiter Count Selection¶
Prompt: How many arbiters would you like to configure? (1-10)
What to choose: - 1 arbiter: Simple setup, good for getting started - 2-4 arbiters: Balanced load distribution - 5-10 arbiters: Maximum throughput for high-demand scenarios
Arbiter Recommendations
First time setup: Start with 1 arbiter to understand the system
Production use: Consider 2-4 arbiters for optimal performance vs complexity
High volume: Use 5-10 arbiters if you expect heavy request volume
Automatic Key Management¶
The installer automatically:
- Calculates required keys: Creates 1 key for every 2 arbiters
- 1-2 arbiters → 1 key
- 3-4 arbiters → 2 keys
- 5-6 arbiters → 3 keys
-
etc.
-
Generates keys: Creates new Ethereum keys in your Chainlink node
-
Assigns jobs: Maps arbiters to keys following the pattern:
- Arbiters 1-2 → Key 1
- Arbiters 3-4 → Key 2
-
Arbiters 5-6 → Key 3
-
Authorizes keys: All keys are automatically authorized with your operator contract
Sample Output:
Creating jobs for 4 arbiters...
✓ Job 1 created successfully with ID: 12345678-1234-1234-1234-123456789012
✓ Job 2 created successfully with ID: 23456789-2345-2345-2345-234567890123
✓ Job 3 created successfully with ID: 34567890-3456-3456-3456-345678901234
✓ Job 4 created successfully with ID: 45678901-4567-4567-4567-456789012345
Step 9: Oracle Registration¶
Register your oracle with the Verdikta dispatcher network to receive arbitration requests.
Registration Process¶
Prompt: Register with dispatcher? (y/n):
What to choose: - y
: Register to participate in live arbitration requests from the network - n
: Skip for local testing and development only
Aggregator Address Configuration¶
If registering, you'll be prompted for:
Prompt: Enter aggregator address:
What to provide: The dispatcher contract address provided by the Verdikta team - Base Sepolia: 0xE75426Ed0491a8290fC55CAA71ab5e1d95F4BaF6
(example) - Base Mainnet: Contact Verdikta team for current address
Class IDs Configuration¶
Prompt: Enter class IDs (comma-separated or space-separated) [128]:
What to provide: Arbitration categories your oracle can handle
Common Class IDs: - 128
- General arbitration (default) - Uses OpenAI and Anthropic providers - 129
- OS Arbitration - Uses open-source models installed during installation process (no paid providers required)
- 130
- TBD - 131
- TBD
Examples: - Single class: 128
- Multiple classes: 128,129,130
- Multiple classes (space-separated)): 128 129 130 131
Registration Verification¶
After registration, the installer will: 1. Submit registration to the dispatcher contract 2. Verify oracle capabilities with provided class IDs 3. Confirm network connectivity 4. Save registration details to configuration files
Post-Installation: Fund Chainlink Keys¶
⚠️ CRITICAL STEP: Your Chainlink node keys must be funded with Base on ETH (or Base on ETH Sepolia for testnet) tokens to process arbitration requests.
Why Funding is Required¶
- Chainlink jobs require native tokens for oracle services gas fees
- Without native token funding for gas , your oracle cannot process requests.
- Each arbitration request consumes LINK tokens. LINK will be acculated by the arbiter node as query requests are made, but the node need not hold any LINK initially to operate.
How to Fund Your Keys¶
-
Get your key addresses from the installation summary or:
-
Transfer Base on ETH tokens to each key address:
For Base Sepolia (Testing): - Get free Base Sepolia from Base Sepolia Faucet - Send ~10 LINK to each key address
For Base Mainnet (Production): - Purchase Base on ETH tokens from an exchange - Send \(50-\)100 of Base to each key address (depending on expected usage)
- Verify funding in Chainlink UI:
- Open http://localhost:6688
- Go to Key Management → EVM Chain Accounts
- Check LINK balance for each key
Recommended Funding Amounts¶
Network | Per Key | Total (4 arbiters) | Purpose |
---|---|---|---|
Base Sepolia | 0.005 | 0.010 Base Sepolia ETH | Testing & development |
Base Mainnet | 0.002 | 0.005 Base ETH | Production deployment |
Required for Operation
Your oracle will not process arbitration requests until the Chainlink keys are funded with native tokens. This is a blockchain requirement, not a Verdikta limitation.
Installation Complete! 🎉¶
Upon successful completion, you'll see:
============================================================
MULTI-ARBITER CONFIGURATION COMPLETED SUCCESSFULLY
============================================================
Configuration Summary:
✓ Bridge created/updated: verdikta-ai
✓ Arbiters configured: [Your selected number]
✓ Jobs created: [Number of successful jobs]
✓ Keys configured: [Number of keys]
✓ Configuration files updated
Access your services:
- Chainlink Node UI: http://localhost:6688
- External Adapter: http://[your-ip]:8080
- AI Node: http://localhost:3000
Final Installation Summary¶
Upon successful completion, you'll see the final summary:
====================================================
Verdikta Arbiter Node Installation Complete!
====================================================
Access your services at:
- AI Node: http://localhost:3000
- External Adapter: http://localhost:8080
- Chainlink Node: http://localhost:6688
Verify Everything is Working¶
1. Check Service Status¶
Expected output:
[AI Node] Running on port 3000 ✓
[External Adapter] Running on port 8080 ✓
[Chainlink Node] Running on port 6688 ✓
[PostgreSQL] Running on port 5432 ✓
2. Test AI Node Health¶
Expected response:
3. Verify Chainlink Jobs (Multi-Arbiter)¶
-
Log in with saved credentials
-
Go to Jobs → Verify all your arbiter jobs are Active
- Look for jobs named "Verdikta AI Arbiter 1", "Verdikta AI Arbiter 2", etc.
-
Each job should show as Active with unique job IDs
-
Check Key Management → EVM Chain Accounts
- Verify all generated keys are present and funded
- Each key should have the correct
fromAddress
assignments
Important Files & Credentials¶
After installation, save these critical files:
Multi-Arbiter Contract Information¶
File: ~/verdikta-arbiter-node/installer/.contracts
# Network Configuration
DEPLOYMENT_NETWORK=base_sepolia
NETWORK_TYPE=testnet
# Contract Information
OPERATOR_ADDR=0x1234...
NODE_ADDRESS=0x5678...
# Multi-Arbiter Job IDs
ARBITER_COUNT=4
JOB_ID_1=abcd1234-5678-90ef-ghij-klmnopqrstuv
JOB_ID_2=bcde2345-6789-01fe-ghij-klmnopqrstuv
JOB_ID_3=cdef3456-7890-12fe-ghij-klmnopqrstuv
JOB_ID_4=defa4567-8901-23fe-ghij-klmnopqrstuv
# Key Management
KEYS_LIST=key1:0xabc...|key2:0xdef...
Chainlink Credentials¶
File Network-Specific Location: - Testnet: ~/.chainlink-testnet/.api
- Mainnet: ~/.chainlink-mainnet/.api
Contents:
Multi-Arbiter Job Information¶
File: ~/verdikta-arbiter-node/chainlink-node/info/multi_arbiter_job_info.txt
Verdikta Multi-Arbiter Chainlink Node Configuration
==================================================
Configuration Date: [timestamp]
Number of Arbiters: 4
Jobs Created: 4
Bridge Configuration:
- Bridge Name: verdikta-ai
- Bridge URL: http://[your-ip]:8080/evaluate
Job Details:
Arbiter 1: Job ID abc..., Key 0x123...
Arbiter 2: Job ID def..., Key 0x123...
Arbiter 3: Job ID ghi..., Key 0x456...
Arbiter 4: Job ID jkl..., Key 0x456...
Critical Backup Files
Essential files to backup: - ~/verdikta-arbiter-node/installer/.contracts
(contract addresses and job IDs) - ~/.chainlink-[network]/.api
(login credentials) - ~/verdikta-arbiter-node/chainlink-node/info/
(job information)
Without these files, you'll lose access to your node and be unable to manage your arbiters.
Management Commands¶
Control your arbiter node with these commands:
cd ~/verdikta-arbiter-node
# Start all services
./start-arbiter.sh
# Stop all services
./stop-arbiter.sh
# Check status
./arbiter-status.sh
Troubleshooting Quick Fixes¶
Common Installation Issues¶
Base Sepolia (Testnet):
Base Mainnet:
Base Sepolia (Testnet): 1. Visit Base Sepolia Faucet 2. Request more test ETH for your wallet 3. Retry contract deployment: bash bin/deploy-contracts.sh
Base Mainnet: 1. Add more ETH to your deployment wallet 2. Ensure you have sufficient funds for gas fees 3. Monitor transaction fees during deployment
Next Steps & Scaling¶
🎯 Getting Started (New Users)¶
- Test with 1 Arbiter: Understand the system basics
- Submit Test Requests: Use the testing tools to validate functionality
- Monitor Performance: Check logs and metrics
- Scale Gradually: Add more arbiters as you gain confidence
📈 Scaling Your Multi-Arbiter Setup¶
Performance Considerations¶
- 1-2 Arbiters: Good for learning and light workloads
- 3-5 Arbiters: Balanced performance for medium workloads
- 6-10 Arbiters: High-performance setup for heavy workloads
Resource Planning¶
- RAM: Add ~1GB per additional arbiter
- Storage: Add ~20GB per additional arbiter
- CPU: Monitor utilization and scale accordingly
🛠️ Advanced Configuration¶
For advanced configurations, see: - Multi-Arbiter Design Guide - Management & Monitoring - Troubleshooting Guide
💡 Production Deployment Tips¶
- Start on Testnet: Always test thoroughly before mainnet
- Monitor Costs: Track gas fees and optimize if needed
- Backup Critical Files: Regularly backup configuration and keys
- Monitor Health: Set up alerts for service availability
- Scale Incrementally: Add arbiters gradually based on demand
🎉 Congratulations! Your Verdikta Multi-Arbiter Node is now running. Welcome to the future of decentralized dispute resolution!
Getting Help¶
- Complete Troubleshooting: Troubleshooting Guide
- GitHub Issues: Report problems or ask questions
- Discord: Get community help in real-time
- Email: Contact support for urgent issues
You're Ready!
Your Verdikta Multi-Arbiter Node is operational and ready to process arbitration requests. Welcome to the decentralized dispute resolution network!