6.0 KiB
Network Permissions Resolution Guide
Date: 2025-01-12
Purpose: Complete guide to resolving contract deployment issues on ChainID 138
Executive Summary
Status: ⚠️ ALL contract deployments are failing despite:
- ✅ Account permissioning is DISABLED on Core RPC
- ✅ permissions-accounts.toml is EMPTY (all accounts allowed)
- ✅ Deployer has sufficient balance (999M+ ETH)
- ✅ Network is operational (blocks are being produced)
Root Cause: Unknown - requires network administrator investigation
Diagnostic Results
1. RPC Endpoint Status
| RPC Type | IP Address | Status | Account Permissioning |
|---|---|---|---|
| Core RPC | 192.168.11.250 | ✅ Accessible | DISABLED |
| Permissioned RPC | 192.168.11.251 | ❌ Not accessible | ENABLED |
| Public RPC | 192.168.11.252 | ❌ Not accessible | DISABLED |
2. Configuration Analysis
Account Permissioning
- File:
smom-dbis-138/config/permissions-accounts.toml - Status: EMPTY (all accounts allowed)
- Note: Empty allowlist means all accounts are permitted
RPC Node Configurations
- Core RPC:
permissions-accounts-config-file-enabled=false✅ - Permissioned RPC:
permissions-accounts-config-file-enabled=true⚠️ - Public RPC:
permissions-accounts-config-file-enabled=false✅
3. Deployment Test Results
All deployment attempts have failed:
- MockLinkToken (5M gas): ❌ FAILED
- MockLinkToken (10M gas): ❌ FAILED
- MinimalLink (10M gas): ❌ FAILED
- Minimal Test Contract (204 bytes, 1M gas): ❌ FAILED
Pattern: All transactions use all available gas and revert (status 0x0)
Resolution Steps
Step 1: Verify RPC Node Configuration
Check if the actual RPC node configuration matches the expected settings:
# SSH into RPC node (if accessible)
ssh root@192.168.11.250
# Check Besu configuration
cat /etc/besu/config-rpc-core.toml | grep permissions-accounts
# Check if permissions-accounts.toml exists and is empty
cat /etc/besu/permissions-accounts.toml
Expected Result:
permissions-accounts-config-file-enabled=false(Core RPC)permissions-accounts.tomlshould be empty or not exist
Step 2: Check Besu Logs
Review Besu logs for deployment errors:
# Check Besu service logs
journalctl -u besu-rpc -n 200 --no-pager
# Or if using Docker
docker logs besu-rpc --tail 200
# Look for transaction-related errors
journalctl -u besu-rpc | grep -iE "transaction|reject|invalid|revert|gas"
What to Look For:
- Transaction rejection messages
- Gas limit errors
- Permission denied errors
- Contract creation restrictions
Step 3: Verify Network-Level Restrictions
Check if contract creation is restricted at the network level:
# Check genesis file for restrictions
jq '.config' smom-dbis-138-proxmox/config/genesis.json
# Check for any network-level restrictions
grep -i "restrict\|permission\|allowlist" smom-dbis-138-proxmox/config/genesis.json
Step 4: Test with Different Deployment Methods
Try alternative deployment methods:
Method 1: Direct Validator Deployment
# Deploy via validator node (if accessible)
# Validators typically have full permissions
Method 2: Remix IDE
# Use Remix IDE with network admin access
# Connect to RPC: http://192.168.11.250:8545
# Deploy contract via Remix interface
Method 3: Network Administrator
# Request network administrator to deploy
# Provide contract bytecode and constructor parameters
Step 5: Add Deployer to Account Allowlist (If Needed)
If account permissioning is enabled on the actual RPC node:
# Edit permissions-accounts.toml
nano /etc/besu/permissions-accounts.toml
# Add deployer address:
accounts-allowlist=[
"0x4A666F96fC8764181194447A7dFdb7d471b301C8"
]
# Restart Besu service
systemctl restart besu-rpc
Troubleshooting Checklist
- Verify RPC node configuration matches expected settings
- Check Besu logs for deployment errors
- Verify network allows contract creation
- Test with minimal contract (204 bytes)
- Check if deployer account needs whitelisting
- Verify RPC node is fully synced
- Check network genesis for restrictions
- Test with alternative RPC endpoint
- Contact network administrators
Network Administrator Contact
If the issue persists after completing all troubleshooting steps:
-
Provide Diagnostic Report:
- Run
scripts/comprehensive-network-diagnostic.sh - Share output with network administrators
- Run
-
Request Investigation:
- Verify if contract creation is restricted
- Check if deployer account needs whitelisting
- Review network policies and Besu configuration
-
Request Deployment:
- Provide contract bytecode
- Request network administrator to deploy
- Verify deployment after completion
Alternative Solutions
Solution 1: Use Pre-deployed Contracts
If contract creation is permanently restricted:
- Use existing contracts on the network
- Deploy contracts on a different network
- Use proxy contracts for upgrades
Solution 2: Network Fork
If contract creation is required:
- Fork the network with contract creation enabled
- Deploy contracts on the fork
- Merge changes back to main network
Solution 3: Validator Deployment
If validators have deployment permissions:
- Request validator to deploy contracts
- Provide contract bytecode and parameters
- Verify deployment after completion
Scripts Created
-
scripts/verify-rpc-permissions.sh- Verifies RPC node account permissioning configuration
- Checks if deployer is whitelisted
-
scripts/comprehensive-network-diagnostic.sh- Complete network diagnostic
- Tests all RPC endpoints
- Analyzes configuration and recent transactions
Documentation
docs/NETWORK_PERMISSIONS_CHECK.md- Initial analysisdocs/NETWORK_PERMISSIONS_FINAL_ANALYSIS.md- Complete analysisdocs/NETWORK_PERMISSIONS_RESOLUTION_GUIDE.md- This guide
Last Updated: 2025-01-12