diff --git a/apps/blockchain-node/.env.example b/apps/blockchain-node/.env.example index 0ee2f6f2..1ce07928 100644 --- a/apps/blockchain-node/.env.example +++ b/apps/blockchain-node/.env.example @@ -10,6 +10,7 @@ rpc_bind_port=8006 # Network p2p_bind_host=0.0.0.0 p2p_bind_port=8001 +p2p_node_id=aitbc1-node proposer_id=aitbc1-proposer diff --git a/apps/blockchain-node/src/aitbc_chain/config.py b/apps/blockchain-node/src/aitbc_chain/config.py index 9a7f2518..268c9043 100755 --- a/apps/blockchain-node/src/aitbc_chain/config.py +++ b/apps/blockchain-node/src/aitbc_chain/config.py @@ -31,6 +31,7 @@ class ChainSettings(BaseSettings): p2p_bind_host: str = "0.0.0.0" p2p_bind_port: int = 8001 + p2p_node_id: str = "" proposer_id: str = "" proposer_key: Optional[str] = None diff --git a/apps/blockchain-node/src/aitbc_chain/p2p_network.py b/apps/blockchain-node/src/aitbc_chain/p2p_network.py index d147425f..78255c28 100644 --- a/apps/blockchain-node/src/aitbc_chain/p2p_network.py +++ b/apps/blockchain-node/src/aitbc_chain/p2p_network.py @@ -683,7 +683,7 @@ def main(): parser = argparse.ArgumentParser(description="AITBC Direct TCP P2P Mesh Network") parser.add_argument("--host", default="0.0.0.0", help="Bind host") parser.add_argument("--port", type=int, default=7070, help="Bind port") - parser.add_argument("--node-id", required=True, help="Node identifier (required for handshake)") + parser.add_argument("--node-id", default="", help="Node identifier (defaults to settings.p2p_node_id)") parser.add_argument("--peers", default="", help="Comma separated list of initial peers to dial (ip:port)") args = parser.parse_args() @@ -708,8 +708,12 @@ def main(): max_size=settings.mempool_max_size, min_fee=settings.min_fee ) - - asyncio.run(run_p2p_service(args.host, args.port, args.node_id, args.peers)) + + node_id = args.node_id or settings.p2p_node_id or settings.proposer_id + if not node_id: + raise ValueError("p2p node_id is required") + + asyncio.run(run_p2p_service(args.host, args.port, node_id, args.peers)) except KeyboardInterrupt: logger.info("P2P service stopped by user") diff --git a/systemd/aitbc-blockchain-p2p.service b/systemd/aitbc-blockchain-p2p.service index 8e80915a..0c112a4d 100644 --- a/systemd/aitbc-blockchain-p2p.service +++ b/systemd/aitbc-blockchain-p2p.service @@ -10,7 +10,7 @@ WorkingDirectory=/opt/aitbc/apps/blockchain-node Environment=PATH=/usr/bin:/usr/local/bin:/usr/bin:/bin Environment=PYTHONPATH=/opt/aitbc/apps/blockchain-node/src:/opt/aitbc/apps/blockchain-node/scripts EnvironmentFile=/etc/aitbc/blockchain.env -ExecStart=/opt/aitbc/venv/bin/python -m aitbc_chain.p2p_network --host ${p2p_bind_host} --port ${p2p_bind_port} --peers ${p2p_peers} --node-id ${proposer_id} +ExecStart=/opt/aitbc/venv/bin/python -m aitbc_chain.p2p_network --host ${p2p_bind_host} --port ${p2p_bind_port} --peers ${p2p_peers} --node-id ${p2p_node_id} Restart=always RestartSec=5 StandardOutput=journal