# Bidirectional Bridge Configuration - Requirements

**Date**: 2025-01-18  
**Status**: ⚠️ **PREREQUISITES NEEDED**

## Required Prerequisites

### 1. PRIVATE_KEY ✅ Required

**Status**: ⚠️ **NOT SET**

**Required**: Private key for bridge admin account

**Bridge Admin Address** (from deployment verification):
```
0x4a666f96fc8764181194447a7dfdb7d471b301c8
```

**To Set**:
```bash
# Add to .env file
echo "PRIVATE_KEY=0x<your-private-key-for-admin-address>" >> .env

# Or set as environment variable
export PRIVATE_KEY=0x<your-private-key-for-admin-address>
```

**Note**: This private key must correspond to the admin address `0x4a666f96fc8764181194447a7dfdb7d471b301c8` that controls all bridges on both chains.

### 2. RPC Endpoints ✅ Required

**Mainnet RPC**: 
- Default: `https://eth.llamarpc.com`
- Or set: `ETHEREUM_MAINNET_RPC=<rpc-url>` in `.env`

**ChainID 138 RPC**:
- Default: `http://192.168.11.211:8545` (VMID 2101)
- Or set: `RPC_URL_138=<rpc-url>` in `.env`

**Status**: ⚠️ **Need verification** - RPCs may need configuration

### 3. ChainID 138 Selector ✅ Available

**Status**: ✅ **FOUND**

**Value**: `5009297550715157269` (from `networks.json`)

**Auto-detection**: Scripts will automatically use this value from `networks.json`

---

## Setup Instructions

### Step 1: Set PRIVATE_KEY

```bash
cd /home/intlc/projects/proxmox/smom-dbis-138

# Add PRIVATE_KEY to .env (replace with actual private key)
echo "PRIVATE_KEY=0x<your-admin-private-key>" >> .env

# Verify it's set
grep PRIVATE_KEY .env
```

### Step 2: Verify RPC Endpoints

```bash
# Test Mainnet RPC
cast chain-id --rpc-url https://eth.llamarpc.com

# Test ChainID 138 RPC  
cast chain-id --rpc-url http://192.168.11.211:8545
```

### Step 3: Check Prerequisites

```bash
./scripts/configuration/check-prerequisites.sh
```

This will verify:
- PRIVATE_KEY is set
- RPC endpoints are accessible
- ChainID 138 selector is available
- Admin address matches bridge admin

### Step 4: Run Configuration

Once prerequisites are met:

```bash
./scripts/configuration/execute-full-bidirectional-config.sh
```

---

## Admin Address Verification

**All bridges use the same admin**: `0x4a666f96fc8764181194447a7dfdb7d471b301c8`

**Verify admin on Mainnet**:
```bash
cast call 0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6 "admin()" --rpc-url https://eth.llamarpc.com
# Expected: 0x0000000000000000000000004a666f96fc8764181194447a7dfdb7d471b301c8
```

**Verify admin on ChainID 138**:
```bash
cast call 0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6 "admin()" --rpc-url http://192.168.11.211:8545
# Expected: 0x0000000000000000000000004a666f96fc8764181194447a7dfdb7d471b301c8
```

---

## Current Status

| Requirement | Status | Action Needed |
|-------------|--------|---------------|
| PRIVATE_KEY | ⚠️ Not set | Add to .env |
| Mainnet RPC | ⚠️ Needs check | Verify accessibility |
| ChainID 138 RPC | ⚠️ Needs check | Verify accessibility |
| ChainID 138 Selector | ✅ Available | Auto-detected |

---

## Next Steps

1. **Set PRIVATE_KEY** in `.env` for admin address
2. **Verify RPC endpoints** are accessible
3. **Run prerequisites check**: `./scripts/configuration/check-prerequisites.sh`
4. **Execute configuration**: `./scripts/configuration/execute-full-bidirectional-config.sh`

---

**Status**: ⚠️ **AWAITING PRIVATE_KEY CONFIGURATION**
