feat: add browser-based Miner Setup Wizard (bounty #47)#1949
Merged
Scottcjn merged 65 commits intoScottcjn:mainfrom Mar 28, 2026
Merged
feat: add browser-based Miner Setup Wizard (bounty #47)#1949Scottcjn merged 65 commits intoScottcjn:mainfrom
Scottcjn merged 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>
…tatus badge
Adds a shields.io-compatible JSON badge endpoint inline to the main
server (rustchain_v2_integrated_v2.2.1_rip200.py), not as a separate
Flask app. The endpoint queries miner_attest_recent to determine real
mining status based on last attestation timestamp.
Endpoint: GET /api/badge/<miner_id>
Returns:
{schemaVersion: 1, label: '⛏ <miner_id>', message: 'Active (2.5x)', color: 'brightgreen'}
Status logic:
- Active: attested within 20 minutes (green)
- Idle: attested within 1 hour (yellow)
- Inactive: no recent attestation (grey)
Shows antiquity multiplier for active miners with vintage hardware.
GitHub Action (.github/workflows/mining-status.yml):
- Runs every 15 minutes
- Verifies badge endpoint health
- Ensures badge markdown is present in README
- Uses shields.io/endpoint for live rendering (no SVG generation)
Usage in any README:

Refs: Scottcjn#256
… issue templates - Welcome bot greets first-time contributors with bounty info - Auto-labeler tags PRs by file path (security, consensus, miner, wallet, etc.) - PR size labeler (XS/S/M/L/XL) with XL warning message - Stale bot cleans abandoned PRs (14d) and issues (30d), exempts bounty/security - Issue templates: Bounty Claim, Bug Report, Feature Request (all YAML forms) - CODEOWNERS: auto-request @Scottcjn for security-critical paths Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Replace static badges with live shields.io counters (stars, contributors, last commit, issues) - Add Bounties and Discussions badges - Add "Contribute & Earn RTC" section with bounty tiers and getting started steps Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Bounty Scottcjn#344 (5 RTC) — @Pitrat-wav
Bounty Scottcjn#304 docs — @Pitrat-wav
Bounty Scottcjn#345 (8 RTC) — @Pitrat-wav
Bounty Scottcjn#346 (10 RTC) — @Pitrat-wav
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
- Single HTML file wizard with 7 steps - Platform auto-detection via User-Agent - Ed25519 keypair generation using Web Crypto API - BIP39 24-word seed phrase display - Copy-paste commands for Linux and macOS - Node connectivity and attestation test - Dark theme, mobile responsive, zero external dependencies Resolves Scottcjn/rustchain-bounties#47
|
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! |
Closed
7 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Implements a browser-based Setup Wizard for RustChain miners — resolving bounty #47 (50 RTC).
Files Added
Features
Acceptance Criteria Met
Bounty
Resolves Scottcjn/rustchain-bounties#47
Wallet: eB51DWp1uECrLZRLsE2cnyZUzfRWvzUzaJzkatTpQV9