Files
aitbc/scripts/assign_proposer.py
oib 9b9c5beb23 ```
chore: enhance .gitignore and remove obsolete documentation files

- Reorganize .gitignore with categorized sections for better maintainability
- Add comprehensive ignore patterns for Python, Node.js, databases, logs, and build artifacts
- Add project-specific ignore rules for coordinator, explorer, and deployment files
- Remove outdated documentation: BITCOIN-WALLET-SETUP.md, LOCAL_ASSETS_SUMMARY.md, README-CONTAINER-DEPLOYMENT.md, README-DOMAIN-DEPLOYMENT.md
```
2026-01-24 14:44:51 +01:00

76 lines
2.3 KiB
Python
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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 = "REDACTED_MINER_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()