diff --git a/apps/blockchain-node/src/aitbc_chain/app.py b/apps/blockchain-node/src/aitbc_chain/app.py index d0fe6f9c..2e80fd84 100755 --- a/apps/blockchain-node/src/aitbc_chain/app.py +++ b/apps/blockchain-node/src/aitbc_chain/app.py @@ -23,6 +23,14 @@ from .rpc.websocket import router as websocket_router _app_logger = get_logger("aitbc_chain.app") +def _env_value(*names: str) -> str | None: + for name in names: + value = os.getenv(name) + if value is not None: + return value + return None + + class RateLimitMiddleware(BaseHTTPMiddleware): """Simple in-memory rate limiter per client IP.""" @@ -105,9 +113,11 @@ async def lifespan(app: FastAPI): await gossip_broker.set_backend(backend) _app_logger.info("Gossip backend initialized successfully") proposers = [] - block_production_override = os.getenv("enable_block_production") - if block_production_override is None: - block_production_override = os.getenv("ENABLE_BLOCK_PRODUCTION") + block_production_override = _env_value( + "AITBC_FORCE_ENABLE_BLOCK_PRODUCTION", + "ENABLE_BLOCK_PRODUCTION", + "enable_block_production", + ) block_production_enabled = settings.enable_block_production if block_production_override is not None: block_production_enabled = block_production_override.strip().lower() in {"1", "true", "yes", "on"} diff --git a/cli/aitbc_cli.py b/cli/aitbc_cli.py index 9a994111..7958bb57 100755 --- a/cli/aitbc_cli.py +++ b/cli/aitbc_cli.py @@ -760,15 +760,27 @@ def get_balance(wallet_name: str, rpc_url: str = DEFAULT_RPC_URL, chain_id_overr # Get account info from RPC try: - http_client = AITBCHTTPClient(base_url=rpc_url, timeout=30) - account_info = http_client.get(f"/rpc/account/{address}?chain_id={chain_id}") + response = requests.get( + f"{rpc_url.rstrip('/')}/rpc/account/{address}", + params={"chain_id": chain_id}, + timeout=10, + ) + if response.status_code == 404: + return { + "wallet_name": wallet_name, + "address": address, + "balance": 0, + "nonce": 0 + } + response.raise_for_status() + account_info = response.json() return { "wallet_name": wallet_name, "address": address, "balance": account_info["balance"], "nonce": account_info["nonce"] } - except NetworkError as e: + except requests.RequestException as e: print(f"Error getting balance: {e}") return None except Exception as e: diff --git a/scripts/wrappers/aitbc-blockchain-rpc-wrapper.py b/scripts/wrappers/aitbc-blockchain-rpc-wrapper.py index d8df2e40..bb906f90 100755 --- a/scripts/wrappers/aitbc-blockchain-rpc-wrapper.py +++ b/scripts/wrappers/aitbc-blockchain-rpc-wrapper.py @@ -20,6 +20,9 @@ os.environ["AITBC_NODE_ENV_FILE"] = str(NODE_ENV_FILE) os.environ["PYTHONPATH"] = f"{REPO_DIR}/apps/blockchain-node/src:{REPO_DIR}/apps/blockchain-node/scripts" os.environ["DATA_DIR"] = str(DATA_DIR) os.environ["LOG_DIR"] = str(LOG_DIR) +os.environ["AITBC_FORCE_ENABLE_BLOCK_PRODUCTION"] = "false" +os.environ["ENABLE_BLOCK_PRODUCTION"] = "false" +os.environ["enable_block_production"] = "false" # Get RPC configuration from environment or use defaults rpc_host = os.getenv("rpc_bind_host", "0.0.0.0") diff --git a/systemd/aitbc-blockchain-rpc.service b/systemd/aitbc-blockchain-rpc.service index 94a77860..e981e47a 100644 --- a/systemd/aitbc-blockchain-rpc.service +++ b/systemd/aitbc-blockchain-rpc.service @@ -12,6 +12,7 @@ ExecStartPre=/opt/aitbc/scripts/utils/load-keystore-secrets.sh EnvironmentFile=/run/aitbc/secrets/.env EnvironmentFile=/etc/aitbc/.env EnvironmentFile=/etc/aitbc/node.env +Environment=AITBC_FORCE_ENABLE_BLOCK_PRODUCTION=false Environment=enable_block_production=false ExecStart=/opt/aitbc/venv/bin/python /opt/aitbc/scripts/wrappers/aitbc-blockchain-rpc-wrapper.py Restart=always