# Prerequisites Completion Guide **Date**: 2025-01-12 **Purpose**: Complete guide for completing all prerequisites for bridge funding --- ## Prerequisites Overview Before funding bridge contracts, you need: 1. ✅ **LINK Token Contract Deployed** - Address: `0x326C977E6efc84E512bB9C30f76E30c160eD06FB` - Status: ⚠️ Not deployed 2. ⚠️ **Account Has LINK Tokens** - Required: 20 LINK minimum - Current: 0 LINK (token not deployed) 3. ⚠️ **Bridge Contracts Funded** - WETH9 Bridge: 10 LINK - WETH10 Bridge: 10 LINK --- ## Step 1: Deploy LINK Token Contract ### Option A: Automated Deployment (Recommended) ```bash cd /home/intlc/projects/proxmox/explorer-monorepo ./scripts/deploy-link-token.sh ``` **What it does**: - Checks if LINK token already exists - Creates a standard ERC20 LINK token contract - Deploys to ChainID 138 - Verifies deployment - Mints initial supply to deployer **Requirements**: - Foundry installed (`forge`) - OpenZeppelin contracts available - Sufficient ETH for gas ### Option B: Manual Deployment If automated deployment fails, you can deploy manually: 1. **Using Remix IDE**: - Go to https://remix.ethereum.org - Create new file: `LinkToken.sol` - Use standard ERC20 contract - Deploy to ChainID 138 2. **Using Hardhat**: ```bash npx hardhat deploy --network chain138 ``` 3. **Using Foundry**: ```bash forge create LinkToken --rpc-url http://192.168.11.250:8545 --private-key $PRIVATE_KEY ``` ### LINK Token Contract Specification **Standard ERC20 Token**: - **Name**: "Chainlink Token" - **Symbol**: "LINK" - **Decimals**: 18 - **Initial Supply**: 1,000,000,000 LINK (1 billion) - **Expected Address**: `0x326C977E6efc84E512bB9C30f76E30c160eD06FB` **Note**: The expected address may not match if not using CREATE2. Update `.env` with the actual deployed address. --- ## Step 2: Acquire LINK Tokens ### Option A: Initial Supply (If You Deployed) If you deployed the LINK token contract, you should have received the initial supply (1 billion LINK) in your deployer account. **Check balance**: ```bash cast call 0x326C977E6efc84E512bB9C30f76E30c160eD06FB \ "balanceOf(address)" \ $(cast wallet address $PRIVATE_KEY) \ --rpc-url http://192.168.11.250:8545 ``` ### Option B: Transfer from Another Account If LINK exists on another account: ```bash cast send 0x326C977E6efc84E512bB9C30f76E30c160eD06FB \ "transfer(address,uint256)" \ \ $(cast --to-wei 20 ether) \ --rpc-url http://192.168.11.250:8545 \ --private-key \ --gas-price $(./scripts/get-optimal-gas-from-api.sh proposed) ``` ### Option C: Bridge from Another Chain If LINK exists on another chain (Ethereum, BSC, etc.), you can bridge it: 1. Use a cross-chain bridge 2. Select LINK token 3. Bridge to ChainID 138 4. Receive LINK on ChainID 138 ### Option D: Use a Faucet (If Available) Some test networks provide faucets. Check if ChainID 138 has a LINK faucet. --- ## Step 3: Fund Bridge Contracts ### Automated Funding ```bash ./scripts/fund-bridge-contracts.sh 10 ``` This will: - Check account LINK balance - Transfer 10 LINK to WETH9 Bridge - Transfer 10 LINK to WETH10 Bridge - Verify funding ### Manual Funding **Fund WETH9 Bridge**: ```bash cast send 0x326C977E6efc84E512bB9C30f76E30c160eD06FB \ "transfer(address,uint256)" \ 0x89dd12025bfCD38A168455A44B400e913ED33BE2 \ 10000000000000000000 \ --rpc-url http://192.168.11.250:8545 \ --private-key $PRIVATE_KEY \ --gas-price $(./scripts/get-optimal-gas-from-api.sh proposed) ``` **Fund WETH10 Bridge**: ```bash cast send 0x326C977E6efc84E512bB9C30f76E30c160eD06FB \ "transfer(address,uint256)" \ 0xe0E93247376aa097dB308B92e6Ba36bA015535D0 \ 10000000000000000000 \ --rpc-url http://192.168.11.250:8545 \ --private-key $PRIVATE_KEY \ --gas-price $(./scripts/get-optimal-gas-from-api.sh proposed) ``` --- ## Complete All Prerequisites (Automated) Run the complete prerequisites script: ```bash ./scripts/complete-prerequisites.sh ``` This script will: 1. ✅ Check/deploy LINK token 2. ✅ Verify account has sufficient LINK 3. ✅ Fund bridge contracts 4. ✅ Verify funding --- ## Verification ### Check LINK Token Deployment ```bash # Check if contract exists cast code 0x326C977E6efc84E512bB9C30f76E30c160eD06FB --rpc-url http://192.168.11.250:8545 # Check token name cast call 0x326C977E6efc84E512bB9C30f76E30c160eD06FB "name()" --rpc-url http://192.168.11.250:8545 # Check token symbol cast call 0x326C977E6efc84E512bB9C30f76E30c160eD06FB "symbol()" --rpc-url http://192.168.11.250:8545 ``` ### Check Account Balance ```bash cast call 0x326C977E6efc84E512bB9C30f76E30c160eD06FB \ "balanceOf(address)" \ $(cast wallet address $PRIVATE_KEY) \ --rpc-url http://192.168.11.250:8545 ``` ### Check Bridge Contract Balances ```bash # WETH9 Bridge cast call 0x326C977E6efc84E512bB9C30f76E30c160eD06FB \ "balanceOf(address)" \ 0x89dd12025bfCD38A168455A44B400e913ED33BE2 \ --rpc-url http://192.168.11.250:8545 # WETH10 Bridge cast call 0x326C977E6efc84E512bB9C30f76E30c160eD06FB \ "balanceOf(address)" \ 0xe0E93247376aa097dB308B92e6Ba36bA015535D0 \ --rpc-url http://192.168.11.250:8545 ``` ### Generate Full Report ```bash ./scripts/get-funding-report.sh ``` --- ## Troubleshooting ### LINK Token Not Deploying **Issue**: Deployment script fails **Solutions**: 1. Check Foundry installation: `forge --version` 2. Check OpenZeppelin contracts: `forge install OpenZeppelin/openzeppelin-contracts` 3. Check ETH balance for gas 4. Try manual deployment using Remix IDE ### Insufficient LINK Balance **Issue**: Account doesn't have enough LINK **Solutions**: 1. If you deployed, check deployer account balance 2. Transfer from another account 3. Bridge from another chain 4. Use faucet (if available) ### Bridge Funding Fails **Issue**: Transfer to bridge contracts fails **Solutions**: 1. Check LINK token is deployed 2. Check account has sufficient LINK 3. Check gas price is appropriate 4. Verify bridge contract addresses are correct --- ## Next Steps After completing prerequisites: 1. ✅ Verify funding: `./scripts/get-funding-report.sh` 2. ✅ Test bridge operations: `./scripts/wrap-and-bridge-to-ethereum.sh 0.001` 3. ✅ Monitor fees: `./scripts/monitor-fees.sh 1.0` 4. ✅ Check bridge config: `./scripts/check-bridge-config.sh` --- ## Summary ### Prerequisites Checklist - [ ] LINK token contract deployed - [ ] Account has 20+ LINK tokens - [ ] WETH9 Bridge funded with 10 LINK - [ ] WETH10 Bridge funded with 10 LINK - [ ] All funding verified ### Quick Commands ```bash # Complete all prerequisites ./scripts/complete-prerequisites.sh # Or step by step: ./scripts/deploy-link-token.sh # Step 1 # Acquire LINK tokens manually # Step 2 ./scripts/fund-bridge-contracts.sh 10 # Step 3 ./scripts/get-funding-report.sh # Verify ``` --- **Last Updated**: 2025-01-12