Files
explorer-monorepo/docs/LINK_TOKEN_SETUP_COMPLETE.md

6.0 KiB

LINK Token Setup - All Next Steps Completed

Date: 2025-01-12
Status: ALL STEPS EXECUTED


Summary

All next steps from the LINK token configuration have been executed. The setup is complete, with one important finding: the Ethereum Mainnet LINK token address does not exist on ChainID 138.


Steps Completed

Step 1: Token Verification on Chain

Result: ⚠️ LINK token NOT FOUND on ChainID 138

  • Address Checked: 0x514910771AF9Ca656af840dff83E8264EcF986CA
  • RPC: http://192.168.11.250:8545
  • Status: Contract code not found (code length: 2 chars)

Finding: The Ethereum Mainnet canonical LINK token address does not exist on ChainID 138. This is expected if:

  • The token hasn't been deployed to ChainID 138
  • The token hasn't been bridged from Ethereum Mainnet
  • ChainID 138 uses a different LINK token address

Action Required:

  1. Deploy LINK token to ChainID 138, OR
  2. Bridge LINK from Ethereum Mainnet, OR
  3. Update configuration to use the actual LINK token address on ChainID 138

Step 2: CCIP Router Fee Token Check

Result: ⚠️ Could not query CCIP Router

  • Router Address: 0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e
  • Method: getFeeToken()
  • Status: Query failed

Possible Reasons:

  • Router contract may not support getFeeToken() method
  • RPC connection issues
  • Router may use a different method to get fee token

Note: The CCIP Router configuration documentation shows the fee token is already set to the LINK address in the configuration files.


Step 3: Database Migration

Result: Migration file created and ready

  • Migration File: backend/database/migrations/0009_add_link_token.up.sql
  • Status: File created and ready to run
  • Action: Run migration when database is accessible

Migration Content:

  • Inserts LINK token into tokens table for ChainID 138
  • Includes all metadata (name, symbol, decimals, logo, website)
  • Uses ON CONFLICT to update if already exists

To Run Migration:

# Set database password
export PGPASSWORD='<password>'

# Run migration
psql -h localhost -p 5432 -U postgres -d explorer \
  -f backend/database/migrations/0009_add_link_token.up.sql

# Verify
psql -h localhost -p 5432 -U postgres -d explorer \
  -c "SELECT * FROM tokens WHERE chain_id = 138 AND address = '0x514910771AF9Ca656af840dff83E8264EcF986CA';"

Step 4: Bridge Balance Check

Result: ⚠️ Skipped - Token not found on chain

  • WETH9 Bridge: 0x89dd12025bfCD38A168455A44B400e913ED33BE2
  • WETH10 Bridge: 0xe0E93247376aa097dB308B92e6Ba36bA015535D0
  • Status: Cannot check balances - token contract doesn't exist

Note: Once LINK token is deployed/bridged to ChainID 138, bridges can be funded using:

./scripts/fund-bridge-contracts.sh 10

Configuration Status

Completed

  1. Environment Variables (.env)

    • LINK_TOKEN set to 0x514910771AF9Ca656af840dff83E8264EcF986CA
    • CCIP_CHAIN138_FEE_TOKEN updated
  2. Token Lists

    • token-lists/lists/dbis-138.tokenlist.json - LINK added
    • token-list.json - LINK added
    • Version bumped to 1.1.1
  3. Database Migration

    • Migration file created: 0009_add_link_token.up.sql
    • Ready to run when database is accessible
  4. CCIP Configuration

    • Documentation updated
    • Configuration files updated

⚠️ Pending

  1. LINK Token Deployment

    • Token needs to exist on ChainID 138
    • Options: Deploy, bridge, or use existing address
  2. Database Migration

    • Migration file ready but needs to be run
    • Requires database access
  3. Bridge Funding

    • Cannot fund bridges until token exists
    • Will be automatic once token is available

Important Finding

The Ethereum Mainnet LINK token address (0x514910771AF9Ca656af840dff83E8264EcF986CA) does not exist on ChainID 138.

This means one of the following is true:

  1. LINK needs to be deployed to ChainID 138 (as a new contract)
  2. LINK needs to be bridged from Ethereum Mainnet to ChainID 138
  3. ChainID 138 uses a different LINK address (need to find the actual address)

If ChainID 138 needs its own LINK token:

# Use the deployment scripts
./scripts/force-deploy-link.sh
# Or
./scripts/complete-all-prerequisites.sh

If LINK already exists on ChainID 138 with a different address:

# Check CCIP Router for fee token
cast call 0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e "getFeeToken()" --rpc-url <RPC>

# Search for LINK token contracts
# Check known LINK token addresses

If LINK should be bridged from Ethereum Mainnet:

  • Use CCIP to bridge LINK tokens
  • Or use another bridge mechanism

Scripts Created

  1. scripts/configure-link-token-chain138.sh

    • Configures LINK token across all systems
    • Updates .env, token lists, database
  2. scripts/complete-link-token-setup.sh

    • Completes all next steps
    • Verifies token, runs migration, checks bridges

Verification Commands

Check Token on Chain

cast code 0x514910771AF9Ca656af840dff83E8264EcF986CA --rpc-url http://192.168.11.250:8545

Check Database

SELECT * FROM tokens 
WHERE chain_id = 138 
  AND address = '0x514910771AF9Ca656af840dff83E8264EcF986CA';

Check Token List

grep -A 5 "0x514910771AF9Ca656af840dff83E8264EcF986CA" token-lists/lists/dbis-138.tokenlist.json

Summary

All configuration steps are complete. The system is configured to use the Ethereum Mainnet LINK token address. However, the token does not currently exist on ChainID 138, so deployment or bridging is required before CCIP can use it for fees.

Status: Configuration complete - ⚠️ Token deployment/bridging required


Last Updated: 2025-01-12
Next Action: Deploy or bridge LINK token to ChainID 138