Skip to content

feat: add browser-based Miner Setup Wizard (bounty #47)#1949

Merged
Scottcjn merged 65 commits intoScottcjn:mainfrom
sungdark:wizard-bounty-47
Mar 28, 2026
Merged

feat: add browser-based Miner Setup Wizard (bounty #47)#1949
Scottcjn merged 65 commits intoScottcjn:mainfrom
sungdark:wizard-bounty-47

Conversation

@sungdark
Copy link
Copy Markdown
Contributor

Summary

Implements a browser-based Setup Wizard for RustChain miners — resolving bounty #47 (50 RTC).

Files Added

  • web/wizard/setup-wizard.html — Single HTML file wizard (7 steps)
  • web/wizard/README.md — Usage documentation

Features

  • 7-step wizard: Platform Detection → Python Check → Wallet Setup → Download → Configure → Test Connection → First Attestation
  • Platform auto-detection (Linux, macOS, Raspberry Pi) via User-Agent
  • Ed25519 keypair generation using Web Crypto API (browser-native)
  • BIP39 24-word seed phrase display for wallet backup
  • Copy-paste commands for every step
  • Node health and attestation test
  • Dark theme, mobile responsive, zero external dependencies

Acceptance Criteria Met

  • Single HTML file (no build step)
  • Detects OS/architecture via User-Agent
  • Generates valid wallet with seed phrase display
  • Provides correct commands for Linux and macOS
  • Tests node connectivity
  • README with usage instructions
  • Mobile friendly

Bounty

Resolves Scottcjn/rustchain-bounties#47
Wallet: eB51DWp1uECrLZRLsE2cnyZUzfRWvzUzaJzkatTpQV9

createkr and others added 30 commits February 16, 2026 18:15
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>
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>
AdnanMehr8 and others added 25 commits February 22, 2026 09:44
…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:
  ![Mining](https://img.shields.io/endpoint?url=https://rustchain.org/api/badge/MINER_ID)

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>
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
@github-actions
Copy link
Copy Markdown

Welcome to RustChain! Thanks for your first pull request.

Before we review, please make sure:

  • Your PR has a BCOS-L1 or BCOS-L2 label
  • New code files include an SPDX license header
  • You've tested your changes against the live node

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!

@github-actions github-actions bot added the documentation Improvements or additions to documentation label Mar 28, 2026
@github-actions github-actions bot added the size/L PR: 201-500 lines label Mar 28, 2026
@Scottcjn Scottcjn merged commit 50b1da5 into Scottcjn:main Mar 28, 2026
7 of 9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation size/L PR: 201-500 lines

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BOUNTY] Miner Setup Wizard - Browser-Based Installation Guide