Files
explorer-monorepo/docs/FIX_BRIDGE_ERRORS.md

179 lines
4.1 KiB
Markdown

# Fix Bridge Errors Guide
**Date**: $(date)
**Purpose**: Guide to fix all errors found in bridge dry run
---
## Errors Found in Dry Run
### ❌ Critical Error: Ethereum Mainnet Destination Not Configured
**Issue**: The WETH9 bridge contract does not have Ethereum Mainnet configured as a destination.
**Impact**: Bridge transactions to Ethereum Mainnet will fail.
**Solution**: Configure the destination using the fix script.
---
## Fix Script
### Script: `scripts/fix-bridge-errors.sh`
**Purpose**: Configures Ethereum Mainnet as a destination in the bridge contract.
**Usage**:
```bash
./scripts/fix-bridge-errors.sh [private_key] [weth9_mainnet_bridge_address]
```
**Example**:
```bash
./scripts/fix-bridge-errors.sh 0xYourPrivateKey 0xEthereumMainnetBridgeAddress
```
**What it does**:
1. Checks current bridge configuration
2. Configures WETH9 bridge for Ethereum Mainnet (if needed)
3. Verifies configuration was successful
4. Reports status
---
## Prerequisites
### Required Information
1. **Private Key**: With permissions to configure bridge (usually deployer/admin)
2. **Ethereum Mainnet Bridge Address**: The address of the CCIPWETH9Bridge contract on Ethereum Mainnet
### Finding Ethereum Mainnet Bridge Address
The Ethereum Mainnet bridge address should be:
- The deployed CCIPWETH9Bridge contract address on Ethereum Mainnet
- Should match the bridge contract pattern used on other chains
- Check deployment records or contract verification
**Note**: If you don't have the Ethereum Mainnet bridge address, you may need to:
1. Deploy the bridge contract on Ethereum Mainnet first
2. Or use an existing bridge address if one was already deployed
---
## Step-by-Step Fix
### Step 1: Check Current Configuration
```bash
# Check WETH9 bridge
cast call 0x89dd12025bfCD38A168455A44B400e913ED33BE2 \
"destinations(uint64)" \
5009297550715157269 \
--rpc-url http://192.168.11.250:8545
```
If this returns `0x0000000000000000000000000000000000000000`, the destination is not configured.
### Step 2: Run Fix Script
```bash
./scripts/fix-bridge-errors.sh [private_key] [ethereum_mainnet_bridge_address]
```
### Step 3: Verify Fix
```bash
# Re-run dry run to verify
./scripts/dry-run-bridge-to-ethereum.sh 0.1 [address]
```
All checks should now pass.
---
## Alternative: Manual Configuration
If you prefer to configure manually:
```bash
# Get current nonce
NONCE=$(cast nonce [your_address] --rpc-url http://192.168.11.250:8545)
# Configure destination
cast send 0x89dd12025bfCD38A168455A44B400e913ED33BE2 \
"addDestination(uint64,address)" \
5009297550715157269 \
[ethereum_mainnet_bridge_address] \
--rpc-url http://192.168.11.250:8545 \
--private-key [your_private_key] \
--gas-price 5000000000 \
--nonce $NONCE
```
---
## Verification
After running the fix script, verify the configuration:
```bash
# Check WETH9 bridge destination
cast call 0x89dd12025bfCD38A168455A44B400e913ED33BE2 \
"destinations(uint64)" \
5009297550715157269 \
--rpc-url http://192.168.11.250:8545
```
Should return the Ethereum Mainnet bridge address (not zero address).
---
## Other Issues
### CCIP Fee Calculation Failed
**Issue**: Could not calculate CCIP fee in dry run.
**Possible Causes**:
1. Bridge contract may require LINK tokens for fees
2. Fee calculation function may have different signature
3. Network/RPC issues
**Solution**:
1. Check if LINK tokens are needed
2. Verify bridge contract fee mechanism
3. Check LINK balance if required
**Note**: This is a warning, not a critical error. The actual bridge transaction will show the required fee.
---
## After Fixing
Once the destination is configured:
1. **Re-run Dry Run**: Verify all checks pass
```bash
./scripts/dry-run-bridge-to-ethereum.sh 0.1 [address]
```
2. **Bridge Tokens**: Execute actual bridge
```bash
./scripts/wrap-and-bridge-to-ethereum.sh 0.1 [private_key]
```
---
## Summary
**Error**: Ethereum Mainnet destination not configured
**Fix**: Run `./scripts/fix-bridge-errors.sh [private_key] [bridge_address]`
**Verify**: Re-run dry run script
**Status**: Ready to bridge after fix
---
**Last Updated**: $(date)