Files
proxmox/docs/archive/tests/WETH_USDT_BRIDGE_VERIFICATION_REPORT.md
defiQUG cb47cce074 Complete markdown files cleanup and organization
- Organized 252 files across project
- Root directory: 187 → 2 files (98.9% reduction)
- Moved configuration guides to docs/04-configuration/
- Moved troubleshooting guides to docs/09-troubleshooting/
- Moved quick start guides to docs/01-getting-started/
- Moved reports to reports/ directory
- Archived temporary files
- Generated comprehensive reports and documentation
- Created maintenance scripts and guides

All files organized according to established standards.
2026-01-06 01:46:25 -08:00

8.2 KiB

WETH → USDT Bridge Verification Report

ChainID 138 → Ethereum Mainnet via thirdweb Bridge

Date: 2025-01-27
Purpose: Verify feasibility of bridging WETH from ChainID 138 to USDT on Ethereum Mainnet using thirdweb Bridge


Executive Summary

Critical Finding: WETH Address Mismatch

⚠️ IMPORTANT: WETH9 is NOT at the canonical Ethereum Mainnet address on ChainID 138.

  • Canonical Address (Mainnet): 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
  • Actual Deployed Address (ChainID 138): 0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6

Reason: The canonical address was deployed using CREATE on Ethereum Mainnet, which cannot be recreated using CREATE2 on ChainID 138. Therefore, WETH9 was deployed at a different address.


Verification Results

Step 1: Bytecode Verification

Canonical Address (0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2)

  • Status: No bytecode found
  • Expected: Yes (this is expected - cannot recreate CREATE-deployed contracts)
  • Method: eth_getCode via RPC

Actual Deployed Address (0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6)

  • Status: Bytecode exists
  • Bytecode Length: Verified via eth_getCode
  • Method: eth_getCode via RPC

Conclusion: WETH contract exists at the actual deployed address, not the canonical address.


Step 2: ERC-20 Compliance Verification

Contract Address: 0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6

Function Tests

  1. symbol()

    • Status: Pass
    • Result: Returns valid symbol string
    • Method: Direct contract call
  2. decimals()

    • Status: Pass
    • Result: Returns 18 (expected)
    • Method: Direct contract call
  3. totalSupply()

    • Status: Pass
    • Result: Returns valid total supply value
    • Method: Direct contract call

Conclusion: Contract behaves as a valid ERC-20 token with all required functions working correctly.


Step 3: thirdweb Bridge Route Verification

Route Details

  • From Chain: ChainID 138
  • From Token: WETH at 0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6
  • To Chain: Ethereum Mainnet (ChainID 1)
  • To Token: USDT at 0xdAC17F958D2ee523a2206206994597C13D831ec7

API Verification Attempts

Endpoints Tested:

  1. https://api.thirdweb.com/v1/bridge/quote
  2. https://bridge.thirdweb.com/api/quote

Results:

  • Route verification inconclusive
  • Reasons:
    1. ChainID 138 may not be supported by thirdweb Bridge
    2. WETH token at non-canonical address may not be recognized
    3. API requires authentication/API key
    4. No liquidity available for WETH → USDT route
    5. Token address differs from canonical (thirdweb may only recognize canonical addresses)

Conclusion: Direct route verification via thirdweb Bridge API was not successful. Manual verification using thirdweb SDK or dashboard is required.


Alternative Routes

Since direct thirdweb Bridge route verification was inconclusive, here are alternative bridging options:

Why: CCIP Bridge is already deployed and configured for ChainID 138.

Route:

  1. Bridge WETH from ChainID 138 → Ethereum Mainnet using CCIP
  2. Swap WETH → USDT on Ethereum Mainnet

CCIP Bridge Contract (ChainID 138):

  • CCIPWETH9Bridge: 0x89dd12025bfCD38A168455A44B400e913ED33BE2

Pros:

  • Already deployed and configured
  • Secure, audited bridge (Chainlink CCIP)
  • Supports ChainID 138
  • Works with actual WETH address

Cons:

  • Requires additional swap step on destination chain

Implementation:

// On ChainID 138
CCIPWETH9Bridge.bridge(
    amount,
    destinationChainSelector,
    recipient
);

Option 2: Swap to Native Asset → Bridge → Swap

Route:

  1. Swap WETH → ETH on ChainID 138 (if DEX available)
  2. Bridge ETH to Ethereum Mainnet
  3. Swap ETH → USDT on Ethereum Mainnet

Pros:

  • Native asset bridging often has better support
  • More bridge options available for ETH

Cons:

  • Multiple steps (3 transactions)
  • Additional fees at each step
  • Requires DEX on ChainID 138

Option 3: Bridge via Intermediate L2

Route:

  1. Bridge WETH from ChainID 138 → Arbitrum/Optimism/Base
  2. Swap WETH → USDT on L2
  3. Bridge USDT from L2 → Ethereum Mainnet

Pros:

  • Lower fees on L2
  • Better liquidity on L2 DEXs
  • More bridge options

Cons:

  • More complex route (3 steps)
  • Longer execution time
  • Additional fees

Option 4: Request thirdweb Support

Action: Contact thirdweb to request:

  1. ChainID 138 support in Bridge
  2. WETH token recognition at 0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6
  3. Route configuration for WETH → USDT

Pros:

  • Enables direct route in future
  • Better user experience

Cons:

  • May take time for implementation
  • Not immediate solution

Go / No-Go Conclusion

Verdict: ⚠️ CONDITIONAL GO

Contract Verification: PASSED

  • WETH contract exists at actual deployed address
  • Contract implements ERC-20 correctly
  • All required functions work as expected

Bridge Route Verification: ⚠️ INCONCLUSIVE

  • thirdweb Bridge route verification failed
  • Manual verification required via SDK or dashboard
  • Token address differs from canonical (may cause recognition issues)

Recommendations

Immediate Action: Use CCIP Bridge

Recommended Route: Use Chainlink CCIP Bridge instead of thirdweb Bridge

Why:

  1. CCIP Bridge is already deployed on ChainID 138
  2. Supports the actual WETH address (0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6)
  3. Secure and audited
  4. Already configured for cross-chain transfers

Implementation Steps:

  1. Use CCIPWETH9Bridge contract at 0x89dd12025bfCD38A168455A44B400e913ED33BE2 on ChainID 138
  2. Bridge WETH to Ethereum Mainnet
  3. Swap WETH → USDT on Ethereum Mainnet using Uniswap or similar DEX

Alternative: Manual thirdweb Bridge Verification

If you must use thirdweb Bridge:

  1. Use thirdweb SDK to verify route:

    import { ThirdwebSDK } from "@thirdweb-dev/sdk";
    
    const sdk = new ThirdwebSDK(provider, { chainId: 138 });
    // Use Bridge.getQuote() with actual WETH address
    
  2. Check thirdweb Bridge Dashboard:

    • Navigate to thirdweb Bridge UI
    • Test route manually with actual token address
    • Verify ChainID 138 support
  3. Contact thirdweb Support:

    • Request ChainID 138 support
    • Request token recognition for 0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6

Technical Details

Address Mapping

According to smom-dbis-138/config/address-mapping.json:

{
  "WETH9": {
    "genesisAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
    "deployedAddress": "0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6",
    "reason": "Genesis address is Ethereum mainnet WETH9 (deployed with CREATE, not CREATE2). Cannot recreate with CREATE2.",
    "status": "mapped"
  }
}

RPC Endpoints

  • Public RPC: https://rpc-http-pub.d-bis.org
  • Permissioned RPC: https://rpc-http-prv.d-bis.org
  • Internal RPC: http://192.168.11.250:8545 (internal only)

Verification Scripts

  1. Bash Script: scripts/verify-weth-usdt-bridge-enhanced.sh

    • Checks bytecode using eth_getCode
    • Verifies ERC-20 functions
    • Attempts thirdweb Bridge API verification
  2. Node.js Script: scripts/verify-weth-usdt-bridge.js

    • Uses ethers.js for contract interaction
    • Uses thirdweb SDK for bridge verification
    • More comprehensive error handling

Summary

Check Status Details
Bytecode at canonical address No bytecode (expected)
Bytecode at actual address Bytecode exists
ERC-20 symbol() Works correctly
ERC-20 decimals() Returns 18
ERC-20 totalSupply() Works correctly
thirdweb Bridge route ⚠️ Inconclusive - manual verification needed

Final Recommendation: Use CCIP Bridge for immediate bridging needs. For thirdweb Bridge, perform manual verification using SDK or contact thirdweb support for ChainID 138 and token address recognition.


Last Updated: 2025-01-27
Status: Verification Complete - Conditional GO (Use CCIP Bridge)