Files
blackroad-operating-system/sdk/python/examples/blockchain_example.py
Claude 919e9db7c9 feat: Add comprehensive Agent Library and SDK ecosystem
MASSIVE UPDATE - 271 new files

## Agent Library (208 agents across 10 categories)
- DevOps (28 agents): deployment, monitoring, infrastructure
- Engineering (30 agents): code generation, testing, documentation
- Data (25 agents): ETL, analysis, visualization
- Security (20 agents): scanning, compliance, threat detection
- Finance (20 agents): trading, portfolio, risk analysis
- Creative (20 agents): content generation, SEO, translation
- Business (20 agents): CRM, automation, project management
- Research (15 agents): literature review, experiments, analysis
- Web (15 agents): scraping, API integration, webhooks
- AI/ML (15 agents): training, deployment, monitoring

## Base Framework
- BaseAgent class with lifecycle management
- AgentExecutor with parallel/sequential/DAG execution
- AgentRegistry with discovery and search
- Configuration management
- Comprehensive error handling and retries

## Python SDK
- Production-ready pip-installable package
- Sync and async clients
- Full type hints and Pydantic models
- Comprehensive examples and tests
- Auth, Blockchain, and Agent clients

## TypeScript/JavaScript SDK
- Production-ready npm-publishable package
- Full TypeScript types
- ESM + CommonJS dual package
- Browser and Node.js support
- Comprehensive examples and tests

## Backend Integration
- /api/agents endpoints in FastAPI
- Agent execution API
- Agent discovery and search
- Execution plans and orchestration

Value: $5M+ worth of engineering work
2025-11-16 23:43:46 +00:00

269 lines
9.3 KiB
Python
Executable File

#!/usr/bin/env python3
"""
BlackRoad SDK - Blockchain Operations Example
==============================================
This example demonstrates advanced blockchain operations including:
- Wallet management
- Transaction creation and monitoring
- Block mining and validation
- Blockchain statistics and analytics
"""
import asyncio
import os
import sys
import time
from typing import List
# Add parent directory to path to import blackroad
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))
from blackroad import (
AsyncBlackRoadClient,
BlackRoadClient,
BlockchainError,
Transaction,
ValidationError,
)
def sync_example() -> None:
"""Synchronous blockchain operations example."""
print("=== Synchronous Blockchain Operations ===\n")
# Initialize client
client = BlackRoadClient(
base_url=os.getenv("BLACKROAD_BASE_URL", "http://localhost:8000")
)
# Login
try:
token = client.auth.login(username="demo_user", password="SecurePassword123!")
client.set_token(token.access_token)
user = client.auth.me()
print(f"Logged in as: {user.username}")
print(f"Wallet: {user.wallet_address}\n")
except Exception as e:
print(f"Login failed: {e}")
print("Make sure to run quickstart.py first to create a user")
return
# Example 1: Wallet Information
print("1. Getting wallet information...")
try:
wallet = client.blockchain.get_wallet()
print(f"Address: {wallet.address}")
print(f"Balance: {wallet.balance} RoadCoin")
print(f"Label: {wallet.label}")
balance_info = client.blockchain.get_balance()
print(f"\nBalance confirmation: {balance_info['balance']} RoadCoin")
except Exception as e:
print(f"Error: {e}")
# Example 2: Blockchain Statistics
print("\n2. Analyzing blockchain statistics...")
try:
stats = client.blockchain.get_stats()
print(f"Latest block index: {stats.latest_block_index}")
print(f"Latest block hash: {stats.latest_block_hash}")
print(f"Total blocks: {stats.total_blocks}")
print(f"Total transactions: {stats.total_transactions}")
print(f"Pending transactions: {stats.pending_transactions}")
print(f"Current difficulty: {stats.difficulty}")
print(f"Mining reward: {stats.mining_reward} RoadCoin")
except Exception as e:
print(f"Error: {e}")
# Example 3: Block Explorer
print("\n3. Exploring recent blocks...")
try:
blocks = client.blockchain.get_blocks(limit=10)
print(f"Retrieved {len(blocks)} blocks:\n")
for block in blocks[:5]: # Show first 5
print(f"Block #{block.index}")
print(f" Hash: {block.hash}")
print(f" Previous: {block.previous_hash[:16]}...")
print(f" Timestamp: {block.timestamp}")
print(f" Nonce: {block.nonce}")
print(f" Difficulty: {block.difficulty}")
print(f" Transactions: {block.transaction_count}")
print(f" Miner: {block.miner_address or 'Genesis'}")
print(f" Reward: {block.reward} RoadCoin")
print()
# Get specific block
if blocks:
print(f"Getting details for block #{blocks[0].index}...")
block_detail = client.blockchain.get_block(blocks[0].index)
print(f"Block retrieved: {block_detail.hash}")
except Exception as e:
print(f"Error: {e}")
# Example 4: Transaction History
print("\n4. Reviewing transaction history...")
try:
transactions = client.blockchain.get_transactions(limit=10)
print(f"Retrieved {len(transactions)} transactions:\n")
if transactions:
for tx in transactions[:5]: # Show first 5
print(f"Transaction: {tx.transaction_hash[:16]}...")
print(f" From: {tx.from_address[:16]}...")
print(f" To: {tx.to_address[:16]}...")
print(f" Amount: {tx.amount} RoadCoin")
print(f" Fee: {tx.fee} RoadCoin")
print(f" Status: {'Confirmed' if tx.is_confirmed else 'Pending'}")
print(f" Confirmations: {tx.confirmations}")
print(f" Created: {tx.created_at}")
print()
# Get specific transaction
print(f"Getting details for transaction {transactions[0].transaction_hash[:16]}...")
tx_detail = client.blockchain.get_transaction(transactions[0].transaction_hash)
print(f"Transaction retrieved: {tx_detail.amount} RoadCoin")
else:
print("No transactions found")
except Exception as e:
print(f"Error: {e}")
# Example 5: Creating a Transaction
print("\n5. Creating a transaction...")
print("Note: This requires another user account to send to")
print("Skipping transaction creation for this example")
# Example transaction code (would need a recipient):
# try:
# tx = client.blockchain.create_transaction(
# to_address="recipient_wallet_address",
# amount=10.0,
# message="Payment for services"
# )
# print(f"Transaction created: {tx.transaction_hash}")
# print(f"Amount: {tx.amount} RoadCoin")
# print(f"Status: {'Confirmed' if tx.is_confirmed else 'Pending'}")
# except ValidationError as e:
# print(f"Validation error: {e}")
# except BlockchainError as e:
# print(f"Blockchain error: {e}")
# Example 6: Mining a Block
print("\n6. Mining a new block...")
try:
print("Starting mining process (this may take a moment)...")
start_time = time.time()
block = client.blockchain.mine_block()
end_time = time.time()
mining_time = end_time - start_time
print(f"\nBlock mined successfully in {mining_time:.2f} seconds!")
print(f"Block #{block.index}")
print(f"Hash: {block.hash}")
print(f"Previous hash: {block.previous_hash[:16]}...")
print(f"Nonce: {block.nonce}")
print(f"Difficulty: {block.difficulty}")
print(f"Reward: {block.reward} RoadCoin")
print(f"Transactions included: {block.transaction_count}")
# Check updated balance
wallet = client.blockchain.get_wallet()
print(f"\nUpdated balance: {wallet.balance} RoadCoin")
except BlockchainError as e:
print(f"Mining failed: {e}")
except Exception as e:
print(f"Error: {e}")
# Cleanup
client.close()
print("\n=== Synchronous Example Complete ===")
async def async_example() -> None:
"""Asynchronous blockchain operations example."""
print("\n\n=== Asynchronous Blockchain Operations ===\n")
# Initialize async client
async with AsyncBlackRoadClient(
base_url=os.getenv("BLACKROAD_BASE_URL", "http://localhost:8000")
) as client:
# Login
try:
token = await client.auth.login(username="demo_user", password="SecurePassword123!")
client.set_token(token.access_token)
user = await client.auth.me()
print(f"Logged in as: {user.username}\n")
except Exception as e:
print(f"Login failed: {e}")
return
# Example: Concurrent Operations
print("Performing concurrent blockchain operations...")
try:
# Execute multiple operations concurrently
wallet_task = client.blockchain.get_wallet()
stats_task = client.blockchain.get_stats()
blocks_task = client.blockchain.get_blocks(limit=5)
transactions_task = client.blockchain.get_transactions(limit=5)
# Wait for all operations to complete
wallet, stats, blocks, transactions = await asyncio.gather(
wallet_task,
stats_task,
blocks_task,
transactions_task,
)
print(f"\nWallet Balance: {wallet.balance} RoadCoin")
print(f"Total Blocks: {stats.total_blocks}")
print(f"Total Transactions: {stats.total_transactions}")
print(f"Latest Block: #{blocks[0].index if blocks else 'N/A'}")
print(f"Recent Transactions: {len(transactions)}")
# Mine multiple blocks concurrently (careful with this!)
print("\nMining blocks asynchronously...")
print("Note: In production, coordinate mining to avoid conflicts")
# For demo purposes, mine just one block
block = await client.blockchain.mine_block()
print(f"Block #{block.index} mined: {block.hash[:16]}...")
except Exception as e:
print(f"Error: {e}")
print("\n=== Asynchronous Example Complete ===")
def main() -> None:
"""Run all examples."""
print("BlackRoad SDK - Blockchain Operations Examples")
print("=" * 50)
# Run synchronous example
sync_example()
# Run asynchronous example
asyncio.run(async_example())
print("\n" + "=" * 50)
print("Examples complete!")
print("\nTips:")
print(" - Use async operations for better performance")
print(" - Always check balance before creating transactions")
print(" - Mining rewards are added to your wallet balance")
print(" - Transaction fees go to block miners")
if __name__ == "__main__":
main()