feat(sdk): RustChain Python SDK — Bounty #2297 — 100 RTC#1882
feat(sdk): RustChain Python SDK — Bounty #2297 — 100 RTC#1882sungdark wants to merge 65 commits intoScottcjn:mainfrom
Conversation
Co-authored-by: xr <xr@xrdeMac-mini-2.local>
Co-authored-by: nicepopo86-lang <nicepopo86>
Co-authored-by: xr <xr@xrdeMac-mini-2.local>
Translation of README.md to Simplified Chinese for Chinese-speaking community. Bounty: Issue Scottcjn#176 (5 RTC) Key sections translated: - Project overview and core concept (Proof-of-Antiquity) - Quick start guide and installation instructions - Hardware multipliers and supported platforms - Network architecture and API endpoints - Security model and anti-VM detection - Related projects and attribution All technical terms, links, code blocks, and formatting preserved. Native Chinese speaker translation - natural and accurate.
* feat: implement decentralized GPU render protocol Scottcjn#30 * docs: add BCOS-L1 headers and compliance metadata Scottcjn#30 * fix: harden gpu escrow auth and race safety --------- Co-authored-by: xr <xr@xrdeMac-mini-2.local>
* feat: wRTC Telegram price ticker bot with alerts and auto-posting Scottcjn#162 * docs: add BCOS-L1 headers to price bot Scottcjn#162 --------- Co-authored-by: xr <xr@xrdeMac-mini-2.local>
* feat: Add Docker deployment with nginx and SSL support (Bounty Scottcjn#20) Implements complete Docker deployment solution for RustChain node: Files Added: - Dockerfile: Python 3.11-slim base with Flask + health checks - docker-compose.yml: Multi-service setup (node + nginx) - nginx.conf: Reverse proxy config with HTTP/HTTPS support - requirements-node.txt: Python dependencies - .env.example: Environment configuration template - DOCKER_DEPLOYMENT.md: Comprehensive deployment guide - docker-entrypoint.py: Health check endpoint wrapper Features: ✅ Single command deployment: docker-compose up -d ✅ Persistent SQLite database storage (Docker volumes) ✅ Nginx reverse proxy with SSL support ✅ Health checks and auto-restart ✅ Security: non-root user, resource limits ✅ Production-ready: logging, backups, monitoring Acceptance Criteria Met: ✅ Single command: docker-compose up -d ✅ Works on fresh Ubuntu 22.04 VPS ✅ Volume persistence for SQLite ✅ Health checks & auto-restart ✅ .env.example with config options Tested deployment flow and verified health endpoint. Resolves: Scottcjn#20 * fix: address security review feedback (Scottcjn#244) Fixes requested by @createkr: 1. **HTTPS block now disabled by default** - Moved SSL server block to commented section - Prevents nginx startup failure when certs are missing - Clear instructions to uncomment after mounting certs 2. **Remove direct port 8099 exposure** - Commented out 8099:8099 host mapping by default - Service remains accessible via nginx on 80/443 - Prevents bypassing nginx security headers/rate-limits - Added comment explaining how to re-enable for debugging 3. **Security hardening** - Added `server_tokens off;` to hide nginx version - Pinned dependency versions (Flask 3.0.2, requests 2.31.0, psutil 5.9.8) - Ensures reproducible builds Changes maintain backward compatibility while improving production security. Ready for re-review.
* feat: Add Grafana monitoring dashboard (Bounty Scottcjn#21) - WIP Initial commit with Prometheus exporter and monitoring stack. Complete dashboard JSON and documentation to follow in next commit. * feat: Complete Grafana monitoring dashboard (Bounty Scottcjn#21) Complete monitoring stack with Grafana + Prometheus + RustChain exporter. Files Added: - rustchain-exporter.py: Prometheus metrics exporter (9100) - Dockerfile.exporter: Exporter container - docker-compose.yml: 3-service stack (exporter + prometheus + grafana) - prometheus.yml: Scrape config (30s interval) - grafana-datasource.yml: Auto-provision Prometheus - grafana-dashboard.json: Full dashboard (11 panels) - requirements.txt: Python deps - README.md: Complete deployment guide Dashboard Panels: ✅ Node health indicator ✅ Active miners counter ✅ Current epoch display ✅ Epoch pot (RTC) ✅ 24h miner graph ✅ Total supply graph ✅ Hardware type pie chart ✅ Architecture pie chart ✅ Antiquity multiplier gauge ✅ Uptime graph ✅ Scrape duration with alerts Alerts: ✅ Node down (health = 0) ✅ Miner drop (>20% in 5min) ✅ Slow scrape (>5s) Single Command Deploy: cd monitoring && docker-compose up -d Access: http://localhost:3000 (admin/rustchain) Resolves: Scottcjn#21 * fix: address security and correctness issues (Scottcjn#245) Fixes requested by @createkr: 1. **Remove missing alerts.yml reference** - Commented out `rule_files` in prometheus.yml - Prevents Prometheus startup failure - Added note for future alert rule addition 2. **Enable TLS verification by default** - Changed `verify=False` to respect TLS_VERIFY env var - Defaults to `verify=True` for production security - Supports custom CA bundle via TLS_CA_BUNDLE - Current deployment uses `TLS_VERIFY=false` (documented) 3. **Make node URL configurable** - Load RUSTCHAIN_NODE from environment - Fallback: https://50.28.86.131 (current deployment) - Supports EXPORTER_PORT and SCRAPE_INTERVAL env vars - Documented in docker-compose.yml All settings configurable via environment variables for portability. Production-safe defaults with backward compatibility.
* docs: add comprehensive API reference Scottcjn#213 * ci(sbom): fix cyclonedx cli flag for environment export --------- Co-authored-by: xr <xr@xrdeMac-mini-2.local>
…jn#219) * feat: implement multi-node database sync protocol Scottcjn#36 * docs: add BCOS-L1 headers Scottcjn#36 * fix(sync): harden payload upsert, schema checks, and bounded sync endpoints * test(security): replace md5 in mock address helper * fix(sync): enforce signed push payload with nonce/timestamp replay guard --------- Co-authored-by: xr <xr@xrdeMac-mini-2.local>
Co-authored-by: xr <xr@xrdeMac-mini-2.local>
security: don't trust X-Forwarded-For except from trusted proxies
fix(windows miner): run without tkinter (headless mode)
…ottcjn#257) (Scottcjn#266) * docs: complete SEO overhaul and technical documentation expansion (Scottcjn#257) - Added robots.txt, sitemap.xml, and JSON-LD structured data - Created 4 technical pages (About, Mining, Tokenomics, Hardware) with 500+ words each - Implemented vintage hardware multiplier tables (PowerPC 2.5x focus) - Enhanced meta tags, Open Graph, and Twitter Cards across all pages - Strictly scoped to SEO and content - no infrastructure/Go changes. * refactor: SEO overhaul and HTML5 standards compliance - Replace deprecated <marquee> tags with modern CSS @Keyframes animations - Fix malformed meta tags and HTML validation errors in docs - Standardize canonical URLs and sitemap paths for SEO consistency - Verify 'Elyan Labs' branding across codebase and documentation - Maintain vintage terminal aesthetic while removing legacy elements
Co-authored-by: liu971227-sys <248239659+liu971227-sys@users.noreply.github.com>
Bounty Scottcjn#304 docs (5 RTC) — @nicepopo86-lang
GitHub Action for dynamic RustChain mining badge. Bounty Scottcjn#304 — @nicepopo86-lang
Example Python client for BoTTube API. Bounty Scottcjn#303 — @nicepopo86-lang
…erprint-fstring-syntax-origin fix: resolve SyntaxError in node/hardware_fingerprint.py __main__ output
…e-fail-closed security: fail closed on mock-signature mode outside test runtime
…-disclosure-409-origin security: harden public endpoints against sensitive disclosure
…n#372) * fix: validate limit query params to avoid 500s * fix: resolve upstream main conflict for limit validation PR * refactor: move query-int helper to shared utility section --------- Co-authored-by: autonomy <autonomous@localhost>
…ecks Co-authored-by: createkr <createkr@users.noreply.github.com>
* Add RustChain Telegram Bot (Bounty Scottcjn#249) - Implemented /price, /miners, /epoch, /balance, /health commands - Added Dockerfile and systemd service - Created setup instructions Bounty: 50 RTC * Add RustChain Telegram Bot (Bounty Scottcjn#249) - /price, /miners, /epoch, /balance, /health commands - Simple Python implementation - Requirements: python-telegram-bot, requests Bounty: 50 RTC
Fixes YAML parsing error in action.yml caused by Python heredoc at column 0. Reduces notification spam from every-15-min failures to daily runs.
Fixes YAML parsing error in action.yml caused by Python heredoc at column 0. Reduces notification spam from every-15-min failures to daily runs.
Fixes YAML parsing error in action.yml caused by Python heredoc at column 0. Reduces notification spam from every-15-min failures to daily runs.
External contributors cannot add labels, so the BCOS check failed 100% of the time. Now: - Auto-labeler applies BCOS-L1 (code) or BCOS-L2 (security) labels - Label gate warns instead of failing when no label present - SBOM/attestation always generates (no longer blocked by label gate) - Default tier is L1 when no explicit label set
External contributors cannot add labels, so the BCOS check failed 100% of the time. Now: - Auto-labeler applies BCOS-L1 (code) or BCOS-L2 (security) labels - Label gate warns instead of failing when no label present - SBOM/attestation always generates (no longer blocked by label gate) - Default tier is L1 when no explicit label set
Implements a full Python SDK for RustChain installable via 'pip install rustchain'. Features: - Async + sync clients (RustChainClient, AsyncRustChainClient) - Full type hints throughout - Ed25519 signing via SigningKey (cryptography or ed25519-blake2b) - Typed exceptions (APIError, ValidationError, WalletError, etc.) - Explorer API: blocks(), transactions(), block_by_height(), etc. - CLI: rustchain health|epoch|miners|balance|transfer|wallet - 46 unit tests passing Methods per bounty spec: - client.health() - client.epoch() - client.miners() - client.balance(wallet_id) - client.transfer(from, to, amount, signature) - client.attestation_status(miner_id) - client.explorer.blocks() - client.explorer.transactions() - Bonus: client.transfer_signed() for one-call signed xfer - Bonus: wallet generate/sign CLI commands Wallet: eB51DWp1uECrLZRLsE2cnyZUzfRWvzUzaJzkatTpQV9
|
Welcome to RustChain! Thanks for your first pull request. Before we review, please make sure:
Bounty tiers: Micro (1-10 RTC) | Standard (20-50) | Major (75-100) | Critical (100-150) A maintainer will review your PR soon. Thanks for contributing! |
|
The SDK code itself is decent — async client, typed exceptions, Ed25519 crypto. Two issues:
Fix the README issue (revert root README changes, move SDK docs to |
|
@sungdark — Thanks for the SDK work! We merged #1895 which covers the core SDK requirements for bounty #2297. Your PR has merge conflicts with main now. However, your async client architecture and explorer module are solid — we'd like to award you 40 RTC for the work done here. The sync+async dual-client pattern and explorer abstraction are good additions. If you'd like to rebase and submit the explorer/crypto modules as a follow-up PR on top of the merged SDK, we'll review and potentially award additional RTC. Closing this PR — please provide your RTC wallet address to receive the 40 RTC. |
Bounty #2297: RustChain Python SDK — pip install rustchain
Implementation Summary
Full Python SDK for RustChain with all bounty requirements:
Methods implemented:
Bonus features:
Files
Wallet Address
RTC: eB51DWp1uECrLZRLsE2cnyZUzfRWvzUzaJzkatTpQV9
Closes #2297