# Quick Reference: Wrap ETH to WETH9 and Bridge to Ethereum Mainnet ## One-Line Command ```bash ./scripts/wrap-and-bridge-to-ethereum.sh [private_key] ``` ## Example ```bash # With PRIVATE_KEY in .env file ./scripts/wrap-and-bridge-to-ethereum.sh 1.0 # With private key as argument ./scripts/wrap-and-bridge-to-ethereum.sh 1.0 0xYourPrivateKeyHere ``` ## Manual Commands ### 1. Wrap ETH to WETH9 ```bash cast send "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" "deposit()" \ --value $(cast --to-wei 1.0 ether) \ --rpc-url "http://192.168.11.250:8545" \ --private-key "0xYourPrivateKey" \ --gas-price 5000000000 ``` ### 2. Approve Bridge ```bash cast send "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" \ "approve(address,uint256)" \ "0x89dd12025bfCD38A168455A44B400e913ED33BE2" \ "115792089237316195423570985008687907853269984665640564039457584007913129639935" \ --rpc-url "http://192.168.11.250:8545" \ --private-key "0xYourPrivateKey" \ --gas-price 5000000000 ``` ### 3. Bridge to Ethereum Mainnet ```bash cast send "0x89dd12025bfCD38A168455A44B400e913ED33BE2" \ "sendCrossChain(uint64,address,uint256)" \ "5009297550715157269" \ "$(cast wallet address --private-key 0xYourPrivateKey)" \ $(cast --to-wei 1.0 ether) \ --rpc-url "http://192.168.11.250:8545" \ --private-key "0xYourPrivateKey" \ --gas-price 5000000000 ``` ## Contract Addresses | Contract | Address | |----------|---------| | WETH9 | `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2` | | WETH9 Bridge | `0x89dd12025bfCD38A168455A44B400e913ED33BE2` | | Ethereum Mainnet Selector | `5009297550715157269` | | RPC URL | `http://192.168.11.250:8545` | ## Process Flow ``` ETH Balance ↓ [Wrap ETH] → deposit() with value ↓ WETH9 Balance ↓ [Approve Bridge] → approve(bridge, max) ↓ Bridge Allowance ↓ [Bridge] → sendCrossChain(selector, recipient, amount) ↓ Ethereum Mainnet ``` ## Check Status ```bash # Get address from private key DEPLOYER=$(cast wallet address --private-key "0xYourPrivateKey") # Check ETH balance cast balance "$DEPLOYER" --rpc-url "http://192.168.11.250:8545" # Check WETH9 balance cast call "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" \ "balanceOf(address)" "$DEPLOYER" \ --rpc-url "http://192.168.11.250:8545" # Check bridge allowance cast call "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" \ "allowance(address,address)" \ "$DEPLOYER" \ "0x89dd12025bfCD38A168455A44B400e913ED33BE2" \ --rpc-url "http://192.168.11.250:8545" ``` ## Requirements - **Foundry** (`cast` command) - **Private key** with sufficient ETH - **Amount + 0.01 ETH** for gas fees ## Time Estimates - Wrap ETH: ~15 seconds - Approve Bridge: ~15 seconds - Bridge Transfer: 5-15 minutes (CCIP processing) ## Troubleshooting | Issue | Solution | |-------|----------| | Insufficient balance | Check ETH balance, need amount + gas | | Transaction failed | Check gas price, nonce, or network | | Bridge not approved | Run approve step first | | Bridge failed | Check CCIP fee, ensure sufficient LINK if required | ## Full Documentation See [WRAP_AND_BRIDGE_TO_ETHEREUM.md](./WRAP_AND_BRIDGE_TO_ETHEREUM.md) for detailed instructions and code examples.