Files
explorer-monorepo/docs/ENV_PRIVATE_KEY_CHECK.md

156 lines
3.3 KiB
Markdown

# Environment Variable Check - PRIVATE_KEY
**Date**: 2025-12-24
**Purpose**: Check for PRIVATE_KEY in .env files
---
## Check Results
### .env File Status
**Location**: `/home/intlc/projects/proxmox/smom-dbis-138/.env`
**Status**: ⚠️ **.env file not found in repository**
**Note**: `.env` files are typically excluded from version control for security reasons.
---
## How to Check PRIVATE_KEY
### Method 1: Check if .env exists and contains PRIVATE_KEY
```bash
cd /home/intlc/projects/proxmox/smom-dbis-138
# Check if .env exists
if [ -f .env ]; then
echo "✅ .env file exists"
# Check if PRIVATE_KEY is set (without showing the value)
if grep -q "^PRIVATE_KEY=" .env; then
echo "✅ PRIVATE_KEY is set in .env"
# Show first few characters for verification (optional)
grep "^PRIVATE_KEY=" .env | sed 's/\(.\{10\}\).*/PRIVATE_KEY=\1...***HIDDEN***/'
else
echo "⚠️ PRIVATE_KEY is NOT set in .env"
fi
else
echo "⚠️ .env file does not exist"
echo "Create it from .env.template if available"
fi
```
### Method 2: Check environment variable directly
```bash
# Check if PRIVATE_KEY is set in current environment
if [ -z "$PRIVATE_KEY" ]; then
echo "⚠️ PRIVATE_KEY is not set in environment"
else
echo "✅ PRIVATE_KEY is set in environment"
# Get deployer address from private key
cast wallet address $PRIVATE_KEY 2>/dev/null || echo "Invalid PRIVATE_KEY format"
fi
```
### Method 3: Check from deployment scripts
The deployment scripts expect PRIVATE_KEY to be set via:
- Environment variable: `export PRIVATE_KEY=<key>`
- .env file: `PRIVATE_KEY=<key>`
- Foundry's `vm.envUint("PRIVATE_KEY")` in scripts
---
## Expected Format
PRIVATE_KEY should be:
- **Without 0x prefix**: `1234567890abcdef...` (64 hex characters)
- **Or with 0x prefix**: `0x1234567890abcdef...` (66 characters total)
**Example**:
```bash
PRIVATE_KEY=1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef
```
---
## Security Notes
⚠️ **NEVER commit .env files to version control**
The `.env` file should be in `.gitignore`:
```
.env
.env.local
.env.*.local
```
---
## Creating .env File
If `.env` doesn't exist, create it:
```bash
cd /home/intlc/projects/proxmox/smom-dbis-138
# Create .env file
cat > .env <<EOF
# Chain 138 RPC
RPC_URL_138=http://192.168.11.250:8545
RPC_URL=http://192.168.11.250:8545
# Deployer Private Key (REQUIRED)
PRIVATE_KEY=<your_private_key_here>
# Optional: Admin addresses (defaults to deployer if not set)
COMPLIANCE_ADMIN=
TOKEN_REGISTRY_OWNER=
FEE_COLLECTOR_OWNER=
EOF
# Set permissions (read-only for owner)
chmod 600 .env
```
---
## Verification
After setting PRIVATE_KEY, verify it works:
```bash
# Load .env
source .env
# Verify deployer address
DEPLOYER=$(cast wallet address $PRIVATE_KEY 2>/dev/null)
if [ -z "$DEPLOYER" ]; then
echo "❌ Invalid PRIVATE_KEY"
else
echo "✅ PRIVATE_KEY is valid"
echo "Deployer address: $DEPLOYER"
# Check balance
BALANCE=$(cast balance $DEPLOYER --rpc-url $RPC_URL 2>/dev/null)
echo "Balance: $BALANCE wei"
fi
```
---
## Next Steps
1. **If .env doesn't exist**: Create it with PRIVATE_KEY
2. **If PRIVATE_KEY not set**: Add it to .env or export it
3. **Verify**: Run verification commands above
4. **Deploy**: Run `./scripts/deploy-and-integrate-all.sh`
---
**Last Updated**: 2025-12-24