#!/usr/bin/env python3 """ Script to assign a proposer to a block by polling for it """ import httpx import json # Configuration COORDINATOR_URL = "http://localhost:8001" MINER_API_KEY = "${MINER_API_KEY}" MINER_ID = "localhost-gpu-miner" def assign_proposer_to_latest_block(): """Poll for the latest unassigned job to become the proposer""" # First register the miner print("šŸ“ Registering miner...") register_response = httpx.post( f"{COORDINATOR_URL}/v1/miners/register?miner_id={MINER_ID}", headers={ "Content-Type": "application/json", "X-Api-Key": MINER_API_KEY }, json={ "capabilities": { "gpu": {"model": "RTX 4060 Ti", "memory_gb": 16} } } ) if register_response.status_code != 200: print(f"āŒ Registration failed: {register_response.text}") return print("āœ… Miner registered") # Poll for a job print("\nšŸ” Polling for jobs...") poll_response = httpx.post( f"{COORDINATOR_URL}/v1/miners/poll", headers={ "Content-Type": "application/json", "X-Api-Key": MINER_API_KEY }, json={"max_wait_seconds": 1} ) if poll_response.status_code == 200: job = poll_response.json() print(f"āœ… Received job: {job['job_id']}") print(f" This job is now assigned to miner: {MINER_ID}") # Check the block print("\nšŸ“¦ Checking block...") blocks_response = httpx.get(f"{COORDINATOR_URL}/v1/explorer/blocks") if blocks_response.status_code == 200: blocks = blocks_response.json() for block in blocks['items']: if block['hash'] == job['job_id']: print(f"āœ… Block updated!") print(f" Height: {block['height']}") print(f" Hash: {block['hash']}") print(f" Proposer: {block['proposer']}") break elif poll_response.status_code == 204: print("ā„¹ļø No jobs available to poll") else: print(f"āŒ Poll failed: {poll_response.text}") if __name__ == "__main__": print("šŸŽÆ Assign Proposer to Latest Block") print("=" * 40) assign_proposer_to_latest_block()