From fd7a04cc2729949a63f82788f498f8e91dddf90c Mon Sep 17 00:00:00 2001 From: aitbc Date: Thu, 14 May 2026 12:07:11 +0200 Subject: [PATCH] Fix cross-chain bridge web3 import and RPC URL configuration - Move web3 import to top of web3_utils.py to resolve import context issue - Add direct Web3Client import to aitbc/__init__.py for early loading - Replace all mock RPC URLs with actual AITBC blockchain RPC endpoint (http://localhost:8006) - Note: Bridge service still has fundamental incompatibility - uses Ethereum web3 but AITBC is not Ethereum-compatible - This blocks Scenario 27 cross-chain trading test until AITBC-specific adapter is implemented --- aitbc/__init__.py | 5 ++++ aitbc/network/web3_utils.py | 15 ++++++++---- .../routers/cross_chain_integration.py | 22 +++++++++++------- .../data/__pycache__/__init__.cpython-313.pyc | Bin 301 -> 0 bytes .../consumer_gpu_profiles.cpython-313.pyc | Bin 2429 -> 0 bytes 5 files changed, 28 insertions(+), 14 deletions(-) delete mode 100644 apps/gpu-service/src/gpu_service/data/__pycache__/__init__.cpython-313.pyc delete mode 100644 apps/gpu-service/src/gpu_service/data/__pycache__/consumer_gpu_profiles.cpython-313.pyc diff --git a/aitbc/__init__.py b/aitbc/__init__.py index 750f0968..bab5326e 100644 --- a/aitbc/__init__.py +++ b/aitbc/__init__.py @@ -65,6 +65,11 @@ from .utils.paths import ( get_repo_path, resolve_path, ) +try: + from .network.web3_utils import Web3Client, create_web3_client + _WEB3_AVAILABLE = True +except ImportError: + _WEB3_AVAILABLE = False _LAZY_EXPORTS: dict[str, tuple[str, str]] = { "load_json": ("utils.json_utils", "load_json"), diff --git a/aitbc/network/web3_utils.py b/aitbc/network/web3_utils.py index d927ef2e..d7783f96 100644 --- a/aitbc/network/web3_utils.py +++ b/aitbc/network/web3_utils.py @@ -6,16 +6,23 @@ Provides Ethereum blockchain interaction utilities using web3.py from typing import Any, Optional from decimal import Decimal +try: + from web3 import Web3 + from web3.middleware import geth_poa_middleware + WEB3_AVAILABLE = True +except ImportError: + WEB3_AVAILABLE = False + class Web3Client: """Web3 client wrapper for blockchain operations""" def __init__(self, rpc_url: str, timeout: int = 30): """Initialize Web3 client with RPC URL""" + if not WEB3_AVAILABLE: + raise ImportError("web3 is required for blockchain operations. Install with: pip install web3") + try: - from web3 import Web3 - from web3.middleware import geth_poa_middleware - self.w3 = Web3(Web3.HTTPProvider(rpc_url, request_kwargs={'timeout': timeout})) # Add POA middleware for chains like Polygon, BSC, etc. @@ -23,8 +30,6 @@ class Web3Client: if not self.w3.is_connected(): raise ConnectionError(f"Failed to connect to RPC URL: {rpc_url}") - except ImportError: - raise ImportError("web3 is required for blockchain operations. Install with: pip install web3") except Exception as e: raise ConnectionError(f"Failed to initialize Web3 client: {e}") diff --git a/apps/coordinator-api/src/app/contexts/cross_chain/routers/cross_chain_integration.py b/apps/coordinator-api/src/app/contexts/cross_chain/routers/cross_chain_integration.py index 7e509fe9..832274e4 100755 --- a/apps/coordinator-api/src/app/contexts/cross_chain/routers/cross_chain_integration.py +++ b/apps/coordinator-api/src/app/contexts/cross_chain/routers/cross_chain_integration.py @@ -66,7 +66,7 @@ async def create_enhanced_wallet( raise HTTPException(status_code=404, detail="Identity not found for address") # Create wallet adapter - adapter = WalletAdapterFactory.create_adapter(chain_id, "mock_rpc_url", security_level) + adapter = WalletAdapterFactory.create_adapter(chain_id, "http://localhost:8006", security_level) # Create wallet wallet_data = await adapter.create_wallet(owner_address, security_config) @@ -261,7 +261,11 @@ async def create_bridge_request( bridge_service = CrossChainBridgeService(session) # Initialize bridge if not already done - chain_configs = {source_chain_id: {"rpc_url": "mock_rpc_url"}, target_chain_id: {"rpc_url": "mock_rpc_url"}} + # Use actual RPC URLs for AITBC blockchain nodes + chain_configs = { + source_chain_id: {"rpc_url": "http://localhost:8006"}, + target_chain_id: {"rpc_url": "http://localhost:8006"} + } await bridge_service.initialize_bridge(chain_configs) # Create bridge request @@ -390,7 +394,7 @@ async def submit_transaction( tx_manager = MultiChainTransactionManager(session) # Initialize with mock configs - chain_configs = {chain_id: {"rpc_url": "mock_rpc_url"}} + chain_configs = {chain_id: {"rpc_url": "http://localhost:8006"}} await tx_manager.initialize(chain_configs) # Submit transaction @@ -428,7 +432,7 @@ async def get_transaction_status(request: Request, transaction_id: str, session: tx_manager = MultiChainTransactionManager(session) # Initialize with mock configs - chain_configs = {1: {"rpc_url": "mock_rpc_url"}, 137: {"rpc_url": "mock_rpc_url"}} + chain_configs = {1: {"rpc_url": "http://localhost:8006"}, 137: {"rpc_url": "http://localhost:8006"}} await tx_manager.initialize(chain_configs) # Get transaction status @@ -450,7 +454,7 @@ async def cancel_transaction(request: Request, transaction_id: str, reason: str, tx_manager = MultiChainTransactionManager(session) # Initialize with mock configs - chain_configs = {1: {"rpc_url": "mock_rpc_url"}, 137: {"rpc_url": "mock_rpc_url"}} + chain_configs = {1: {"rpc_url": "http://localhost:8006"}, 137: {"rpc_url": "http://localhost:8006"}} await tx_manager.initialize(chain_configs) # Cancel transaction @@ -484,7 +488,7 @@ async def get_transaction_history( tx_manager = MultiChainTransactionManager(session) # Initialize with mock configs - chain_configs = {1: {"rpc_url": "mock_rpc_url"}, 137: {"rpc_url": "mock_rpc_url"}} + chain_configs = {1: {"rpc_url": "http://localhost:8006"}, 137: {"rpc_url": "http://localhost:8006"}} await tx_manager.initialize(chain_configs) # Get transaction history @@ -521,7 +525,7 @@ async def get_transaction_statistics( tx_manager = MultiChainTransactionManager(session) # Initialize with mock configs - chain_configs = {1: {"rpc_url": "mock_rpc_url"}, 137: {"rpc_url": "mock_rpc_url"}} + chain_configs = {1: {"rpc_url": "http://localhost:8006"}, 137: {"rpc_url": "http://localhost:8006"}} await tx_manager.initialize(chain_configs) # Get statistics @@ -551,7 +555,7 @@ async def optimize_transaction_routing( tx_manager = MultiChainTransactionManager(session) # Initialize with mock configs - chain_configs = {1: {"rpc_url": "mock_rpc_url"}, 137: {"rpc_url": "mock_rpc_url"}} + chain_configs = {1: {"rpc_url": "http://localhost:8006"}, 137: {"rpc_url": "http://localhost:8006"}} await tx_manager.initialize(chain_configs) # Optimize routing @@ -623,7 +627,7 @@ async def get_cross_chain_health(request: Request, session: Session = Depends(ge tx_manager = MultiChainTransactionManager(session) # Initialize with mock configs - chain_configs = {chain_id: {"rpc_url": "mock_rpc_url"} for chain_id in supported_chains} + chain_configs = {chain_id: {"rpc_url": "http://localhost:8006"} for chain_id in supported_chains} await bridge_service.initialize_bridge(chain_configs) await tx_manager.initialize(chain_configs) diff --git a/apps/gpu-service/src/gpu_service/data/__pycache__/__init__.cpython-313.pyc b/apps/gpu-service/src/gpu_service/data/__pycache__/__init__.cpython-313.pyc deleted file mode 100644 index e36f974c8d0df3d582714a825e03e3f6b6d10d1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 301 zcmey&%ge<81iozlGwXo#V-N=hn4pZ$Qb5L3hG2#whG52ECT~VBrXnTu9u8Jt(uItM4kQpfgW`b-;{$^H z-8_9Un1tt24nI%cd`iTVv#ri-ky2TJT=oc3ygZS|+RilQb=DW0N=`C9nFIREW!HZEu{VyWZ9A zI)6o6zU*MBl}S6(LzF@DA2?PKTB@ zKL{meX5yxY*YZ1}A>@s+CYY|xt?csJlF7+}tY`#tv>(^jKS7O8z00cMiofc1~ALQFNne z^>_T9=~I+ovYDONV zQ)b7unw+G@wxqnW=eJiAGv`+$DU%aR#w;~n@0?1R-IB6LB_6}cAJ{qEG`nRbhZ&~| zI+Mjip|EIPYS=P%G{rC^u~eiiSGvKM@mCu~&bqRzt$iNr+QX2Ry=p>q}&5Q#Il zB=Isoej|6*F5{~jFQKl5l2TH|q&-gOir;<9#;C(-? z*AHr?&Tx*D14RNoLgO6VJF>N)ySP*2m@^S=_f1JGkl$3>G@2RogtD`!|J0?QX*-=rLWwG3WxXx@6fva zOx^X@n+;KD2qR@1o<&a9sz1%V&qP~o+gcdEb6EF&Bc9VDZ0^moU)XMuAYuD%{u#qB!@T(z7ipSgoaZmSiQjuxU^-aa-^+9#;ewBKtDorsrVVS5=^^G})4Ig;FyRJ|7OcxmhnUV-BTSDHZtSVg z3Zs4zA(7javGJ$nZ$s^DDs6M9LQ`pjO{M)mLM=CycI%BxYemSF>rWR?!pVAl&G1K+q0y$& SJ}){}9Q`fdlYlmkZT=^KC%3);