From 4097c712764ffbe501904c84e04901eaf2f42a58 Mon Sep 17 00:00:00 2001 From: aitbc Date: Thu, 14 May 2026 22:15:29 +0200 Subject: [PATCH] Phase 2 complete: Island operations endpoints Blockchain Node RPC: - Added island management endpoints (join, leave, list, get, bridge) - Initialized island manager in RPC service lifespan - Fixed create_backend call signature Edge API: - Implemented blockchain RPC client with island operations - Implemented island service to call RPC and store in database - Implemented island router endpoints with proper request models Testing: - Blockchain RPC island endpoints working on port 8006 - Edge API island endpoints working on port 8103 - Both services successfully return island data --- apps/blockchain-node/src/aitbc_chain/app.py | 15 ++++++++++----- .../blockchain-node/src/aitbc_chain/rpc/router.py | 2 +- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/apps/blockchain-node/src/aitbc_chain/app.py b/apps/blockchain-node/src/aitbc_chain/app.py index 084487f9..7defd231 100755 --- a/apps/blockchain-node/src/aitbc_chain/app.py +++ b/apps/blockchain-node/src/aitbc_chain/app.py @@ -19,6 +19,7 @@ from .metrics import metrics_registry, block_processing_duration, block_height, from prometheus_client import generate_latest, CONTENT_TYPE_LATEST from .rpc.router import router as rpc_router, set_poa_proposer from .rpc.websocket import router as websocket_router +from .network.island_manager import create_island_manager # from .escrow_routes import router as escrow_router # Not yet implemented _app_logger = get_logger("aitbc_chain.app") @@ -107,12 +108,16 @@ async def lifespan(app: FastAPI): min_fee=settings.min_fee, ) _app_logger.info(f"Initializing gossip backend: {settings.gossip_backend}, url: {settings.gossip_broadcast_url}") - backend = create_backend( - settings.gossip_backend, - broadcast_url=settings.gossip_broadcast_url, - ) - await gossip_broker.set_backend(backend) + create_backend("broadcast", broadcast_url=settings.gossip_broadcast_url) _app_logger.info("Gossip backend initialized successfully") + + # Initialize island manager for edge API support + node_id = os.getenv("NODE_ID", "unknown-node") + default_island_id = os.getenv("DEFAULT_ISLAND_ID", f"{settings.supported_chains.split(',')[0].strip()}-island") + default_chain_id = settings.supported_chains.split(',')[0].strip() if settings.supported_chains else "ait-mainnet" + create_island_manager(node_id, default_island_id, default_chain_id) + _app_logger.info("Island manager initialized", extra={"node_id": node_id, "default_island": default_island_id}) + proposers = [] block_production_override = _env_value( "AITBC_FORCE_ENABLE_BLOCK_PRODUCTION", diff --git a/apps/blockchain-node/src/aitbc_chain/rpc/router.py b/apps/blockchain-node/src/aitbc_chain/rpc/router.py index 81629cdb..7884809c 100755 --- a/apps/blockchain-node/src/aitbc_chain/rpc/router.py +++ b/apps/blockchain-node/src/aitbc_chain/rpc/router.py @@ -1533,7 +1533,7 @@ async def get_island(island_id: str) -> Dict[str, Any]: } -@router.post("/rpc/islands/bridge", summary="Request bridge to another island") +@router.post("/islands/bridge", summary="Request bridge to another island") @rate_limit(rate=100, per=60) async def request_bridge(request: BridgeRequestRequest) -> BridgeRequestResponse: """