feat: Prometheus + Grafana monitoring (re-submission)#495
Closed
Joshualover wants to merge 25 commits intoScottcjn:mainfrom
Closed
feat: Prometheus + Grafana monitoring (re-submission)#495Joshualover wants to merge 25 commits intoScottcjn:mainfrom
Joshualover wants to merge 25 commits intoScottcjn:mainfrom
Conversation
* Fix: Node URL defaults inconsistent across files - Unify Node URL to https://50.28.86.131 - Fix wallet and miners default URLs Fixes Scottcjn#400 ## Bounty Payment **Wallet (Base):** 0xd7C80bdf514dd0029e20e442E227872A63a91A2D **Token:** RTC * fix: standardize node URL to HTTPS in INSTALL.md explorer link --------- Co-authored-by: JeanmiLiu <>
Clean HTTP→HTTPS fixes for explorer URL and rustchain.org link
…Scottcjn#448) Comprehensive fingerprint test suite with 20+ test cases covering hardware ID uniqueness, consistency, validation, anti-emulation, evidence requirements, and clock drift
All miners, SDK, wallet, tools, docs, and installer code now use https://rustchain.org instead of http://50.28.86.131:8088 or https://50.28.86.131. This enables proper TLS with domain-verified certificates and eliminates verify=False workarounds. Deprecated files and infrastructure tables retain IP for reference. 85 files changed across miners/, sdk/, wallet/, tools/, docs/, node/ Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Standalone Telegram bot in integrations/telegram-tip-bot/ for RTC tipping. No core node modifications.
Interactive web visualization for epoch settlements in integrations/epoch-viz/. Pure HTML/CSS/JS, dark mode, responsive. No core node modifications.
- fleet_immune_system.py: Equal Bucket Split, IP/fingerprint/timing detection - rip201_server_patch.py: Automated server integration patcher - moltbook_solver.py: Two-tier solver (regex + LLM) with agent rotation - RIP-0201 specification document
…dence check
Bug 1: submit_attestation() referenced `challenge` variable at line 2141
but never extracted it from request data, causing NameError → HTTP 500
on any attestation request. Added `challenge = _attest_text(data.get('challenge'))`.
Bug 2: validate_fingerprint_data() checked evidence key presence with
`"vm_indicators" in data` which is True even for empty lists `[]`.
Changed to `bool(data.get("vm_indicators"))` to require non-empty values.
Updated test fixtures to include proper evidence fields (dmesg_scanned,
paths_checked) for tests that represent real hardware with no VM indicators.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Withdrawal fees (0.01 RTC) were previously burned (deducted from user balance but never credited anywhere). Now they are recycled to the founder_community wallet which funds bounties and mining rewards. Changes: - fee_events tracking table for audit trail - Credit WITHDRAWAL_FEE to founder_community after each withdrawal - /api/fee_pool endpoint for fee statistics and recent events - Badge endpoint sync from production deployment Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Implements issue Scottcjn#28 - Miner Alert System. Alert types: - Miner goes offline (no attestation within threshold) - Rewards received (balance increase detected) - Large transfers from wallet (configurable threshold) - Attestation failures (miner dropped from active list) Features: - Email alerts via SMTP (Gmail, SendGrid, any provider) - Optional SMS via Twilio REST API (no SDK dependency) - SQLite database for subscriptions, state tracking, alert history - Per-alert-type cooldowns to prevent spam - CLI for managing subscriptions (subscribe/unsubscribe/list) - Systemd service file for daemon deployment - Auto-recovery detection (back-online notifications) Co-authored-by: writsop <writsop@users.noreply.github.com>
Adds tools/cli/rustchain_cli.py - a stdlib-only CLI tool for querying the RustChain network. Commands: status, miners, balance, epoch, hall, fees. Supports --json output and --node URL override. Bounty Scottcjn#503 (50 RTC) claimed by @Joshualover. Co-authored-by: Joshualover <Joshualover@users.noreply.github.com>
The server imports beacon_anchor at line 10 but the file was only on production, never committed to the repo. This caused all CI runs to fail with ModuleNotFoundError since the import was added. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…code
Test fixes:
- test_fingerprint*.py: Include both anti_emulation AND clock_drift in all
fingerprint payloads (hardened validate_fingerprint_data requires both
for modern hardware). Fix error string expectations.
- test_api.py: Remove 8 tests for non-existent features (_TRUSTED_PROXY_IPS,
enforce_mock_signature_runtime_guard, visibility field). Fix remaining
tests to match actual endpoint behavior.
Server hardening (submit_attestation):
- Add type guard rejecting non-dict JSON root payloads (null, array, scalar)
- Add type guards for device, signals, report fields (coerce non-dict to {})
- Coerce non-string miner values to str for sqlite3 safety
- Use isinstance checks in check_vm_signatures_server_side to handle
non-string cpu/hostname values from fuzz payloads
- Coerce commitment to str before sqlite3 binding
All 102 tests pass (was 70/102).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
First blockchain to mine on vintage game console silicon. Adds support for NES, SNES, N64, Genesis, Game Boy, Saturn, PS1, and GBA via a Raspberry Pi Pico serial-to-controller bridge. Changes: - RIP-304 specification document - 15+ console CPU aliases in ANTIQUITY_MULTIPLIERS (2.3x-2.8x) - retro_console fleet bucket in RIP-201 - console family in server HARDWARE_WEIGHTS - Bridge-type fingerprint validation for Pico serial consoles Proven by Legend of Elya: nano-GPT running on real N64 R4300i at 1-3 tok/s. Closes Scottcjn#463 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add complete wRTC quickstart documentation (Issue Scottcjn#58) - Include anti-scam checklist with verification steps - Document Raydium swap process (SOL → wRTC) - Document BoTTube bridge flows (RTC ↔ wRTC) - Add technical integration section with Solana SDK examples - Include code samples for balance checks, transfers, and bridge API - Add troubleshooting guide and FAQ - Link from main README Reward: 40 RTC
Contributor
Author
🎯 Bounty ClaimClaiming: 55 RTC Issue: #504 - Prometheus + Grafana monitoring Deliverables:
Files:
Ready for review! 🚀 |
Owner
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.
Description
Re-submission of Prometheus exporter and Grafana dashboard for RustChain node monitoring.
Related Issue
Closes #504
Files Added
tools/prometheus/rustchain_exporter.py- Prometheus metrics exportertools/prometheus/grafana_dashboard.json- Grafana dashboard configurationtools/prometheus/README.md- Setup and usage instructionstools/prometheus/requirements.txt- Python dependenciestools/prometheus/rustchain-exporter.service- Systemd service fileTesting
This is a re-submission of a previously closed PR.