From f4c91564ec36bd85d34c1ca25ddc0a6bd5d436a2 Mon Sep 17 00:00:00 2001 From: Anukul Pandey Date: Fri, 13 Feb 2026 10:31:58 +0000 Subject: [PATCH 1/3] docs: Add wRTC Quickstart Guide (Fixes #58) --- README.md | 2 +- docs/wrtc.md | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 docs/wrtc.md diff --git a/README.md b/README.md index 7e485e03..e4214e22 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ RustChain Token (RTC) is now available as **wRTC** on Solana via the BoTTube Bri | **Swap wRTC** | [Raydium DEX](https://raydium.io/swap/?inputMint=sol&outputMint=12TAdKXxcGf6oCv4rqDz2NkgxjyHq6HQKoxKZYGf5i4X) | | **Price Chart** | [DexScreener](https://dexscreener.com/solana/8CF2Q8nSCxRacDShbtF86XTSrYjueBMKmfdR3MLdnYzb) | | **Bridge RTC ↔ wRTC** | [BoTTube Bridge](https://bottube.ai/bridge) | -| **Onboarding Tutorial** | [wRTC Bridge + Swap Safety Guide](docs/WRTC_ONBOARDING_TUTORIAL.md) | +| **Onboarding Tutorial** | [wRTC Bridge + Swap Safety Guide](docs/wrtc.md) | | **External Reference** | [Grokipedia Search: RustChain](https://grokipedia.com/search?q=RustChain) | | **Token Mint** | `12TAdKXxcGf6oCv4rqDz2NkgxjyHq6HQKoxKZYGf5i4X` | diff --git a/docs/wrtc.md b/docs/wrtc.md new file mode 100644 index 00000000..df5240d8 --- /dev/null +++ b/docs/wrtc.md @@ -0,0 +1,50 @@ +# wRTC Quickstart Guide: Buy, Verify, Bridge + +This guide covers how to safely obtain wRTC (Wrapped RustChain), verify its authenticity, and bridge it for use in the ecosystem (BoTTube credits, RTC tipping, etc.). + +## ⚠️ Anti-Scam Checklist (READ FIRST) + +Before trading, **always** verify the token Mint Address. Do not trust ticker symbols alone (anyone can create a token named "wRTC"). + +- **Official Mint Address:** `12TAdKXxcGf6oCv4rqDz2NkgxjyHq6HQKoxKZYGf5i4X` +- **Decimals:** 6 +- **Network:** Solana + +If the Mint Address does not match exactly, **IT IS A SCAM**. + +--- + +## 1. How to Buy wRTC + +The primary liquidity pool for wRTC is on Raydium. + +### Step-by-Step +1. Go to the [Raydium Swap Link](https://raydium.io/swap/?inputMint=sol&outputMint=12TAdKXxcGf6oCv4rqDz2NkgxjyHq6HQKoxKZYGf5i4X). +2. Connect your Solana wallet (Phantom, Solflare, etc.). +3. Ensure the output token shows the correct Mint Address: `12TAdKXxcGf6oCv4rqDz2NkgxjyHq6HQKoxKZYGf5i4X`. +4. Enter the amount of SOL you wish to swap. +5. Confirm the transaction. + +--- + +## 2. Bridging to BoTTube Credits + +wRTC can be bridged to BoTTube to be used for tipping creators and paying for compute. + +### Bridging IN (wRTC -> Credits) +1. Navigate to the [BoTTube Bridge](https://bottube.ai/bridge/wrtc). +2. Connect your Solana wallet. +3. Enter the amount of wRTC you want to deposit. +4. Confirm the transfer. +5. Your credits should appear in your BoTTube balance shortly. + +### Bridging OUT (Credits -> wRTC) +1. Go to your BoTTube Wallet dashboard. +2. Select "Withdraw". +3. Enter the amount of credits to withdraw. +4. Provide your Solana wallet address. +5. Confirm. (Note: Withdrawals may take time depending on network congestion). + +--- + +*This document is maintained by the community. Always double-check contract addresses.* From 3e58a08c445727e91b60df19bb53ed7df725e00b Mon Sep 17 00:00:00 2001 From: Anukul Pandey Date: Sat, 14 Feb 2026 14:52:10 +0000 Subject: [PATCH 2/3] feat: Add Discord Rich Presence script (Fixes #25) --- README.md | 8 +++++ tools/discord_rpc.py | 83 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 91 insertions(+) create mode 100644 tools/discord_rpc.py diff --git a/README.md b/README.md index e4214e22..db5db968 100644 --- a/README.md +++ b/README.md @@ -137,6 +137,14 @@ pip install -r requirements.txt python3 rustchain_universal_miner.py --wallet YOUR_WALLET_NAME ``` +### 🎮 Discord Rich Presence +Show off your vintage hardware and earnings in your Discord status! + +```bash +pip install pypresence +python3 tools/discord_rpc.py --wallet YOUR_WALLET_NAME --hardware "PowerPC G4" +``` + ## 💰 Antiquity Multipliers Your hardware's age determines your mining rewards: diff --git a/tools/discord_rpc.py b/tools/discord_rpc.py new file mode 100644 index 00000000..dba9f62c --- /dev/null +++ b/tools/discord_rpc.py @@ -0,0 +1,83 @@ +import time +import requests +import argparse +from pypresence import Presence +from datetime import datetime + +# Default Client ID for RustChain RPC (Ideally the maintainer creates an official App) +# Users can override this +DEFAULT_CLIENT_ID = '123456789012345678' + +def get_miner_stats(node_url, wallet): + """Fetch miner stats from the node API""" + try: + # Check balance/earnings + # Note: This is an estimation based on available API endpoints + resp = requests.get(f"{node_url}/wallet/balance?miner_id={wallet}", verify=False, timeout=5) + if resp.status_code == 200: + data = resp.json() + return data + except Exception as e: + # print(f"API Error: {e}") + pass + return None + +def main(): + parser = argparse.ArgumentParser(description="RustChain Discord Rich Presence") + parser.add_argument("--wallet", required=True, help="Your Miner Wallet Name") + parser.add_argument("--node", default="https://50.28.86.131", help="Node URL") + parser.add_argument("--client-id", default=DEFAULT_CLIENT_ID, help="Discord App Client ID") + parser.add_argument("--hardware", default="Vintage CPU", help="Your Hardware Type (e.g. G4, POWER8)") + + args = parser.parse_args() + + print(f"🎮 Starting Discord RPC for wallet: {args.wallet}") + print(f"🔌 Hardware: {args.hardware}") + + try: + RPC = Presence(args.client_id) + RPC.connect() + print("✅ Connected to Discord!") + except Exception as e: + print(f"❌ Could not connect to Discord: {e}") + print("Make sure the Discord Desktop App is running.") + return + + start_time = int(time.time()) + + while True: + try: + stats = get_miner_stats(args.node, args.wallet) + + # Default values if API fails + balance = "0.00" + if stats and 'balance' in stats: + balance = f"{stats['balance']:.2f}" + + # Update Presence + RPC.update( + state=f"💰 Earned: {balance} RTC", + details=f"🔨 Mining on {args.hardware}", + start=start_time, + large_image="rustchain_logo", # Requires asset uploaded to Discord App + large_text="RustChain: Proof of Antiquity", + small_image="mining_active", + small_text="Mining Active", + buttons=[ + {"label": "Join RustChain", "url": "https://rustchain.org"}, + {"label": "View Explorer", "url": "https://rustchain.org/explorer"} + ] + ) + + # Update every 15s (Discord rate limit) + time.sleep(15) + + except KeyboardInterrupt: + print("Stopping RPC...") + break + except Exception as e: + print(f"Error: {e}") + time.sleep(15) + +if __name__ == "__main__": + main() From 064315eb2601c30b642725e536564d537120b7f0 Mon Sep 17 00:00:00 2001 From: Anukul Pandey Date: Sat, 14 Feb 2026 17:49:38 +0000 Subject: [PATCH 3/3] feat: Add Discord Rich Presence script for miners (Fixes #25) --- tools/rustchain_rpc.py | 76 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 tools/rustchain_rpc.py diff --git a/tools/rustchain_rpc.py b/tools/rustchain_rpc.py new file mode 100644 index 00000000..20a667cc --- /dev/null +++ b/tools/rustchain_rpc.py @@ -0,0 +1,76 @@ +import time +import requests +import argparse +from pypresence import Presence +from datetime import datetime + +# RustChain Application ID (Placeholder - Maintainer needs to register this on Discord Dev Portal) +CLIENT_ID = "123456789012345678" + +def get_miner_stats(wallet_address, node_url="https://50.28.86.131"): + """Fetch miner stats from the node API.""" + try: + # Get miner info (mocking the endpoint structure based on README) + response = requests.get(f"{node_url}/api/miners", verify=False) + if response.status_code == 200: + miners = response.json() + # Find our miner + for m in miners: + if m.get('wallet') == wallet_address: + return m + return None + except Exception as e: + print(f"Error fetching stats: {e}") + return None + +def main(): + parser = argparse.ArgumentParser(description="RustChain Discord Rich Presence") + parser.add_argument("--wallet", required=True, help="Your RustChain wallet address") + parser.add_argument("--node", default="https://50.28.86.131", help="Node URL") + args = parser.parse_args() + + print(f"Starting Discord RPC for wallet: {args.wallet}") + + try: + RPC = Presence(CLIENT_ID) + RPC.connect() + print("Connected to Discord!") + except Exception as e: + print(f"Failed to connect to Discord: {e}") + print("Make sure Discord is running on this machine.") + return + + start_time = time.time() + + while True: + stats = get_miner_stats(args.wallet, args.node) + + if stats: + hardware = stats.get('hardware', 'Unknown Hardware') + epoch_score = stats.get('score', 0) + + details = f"Mining on {hardware}" + state = f"Score: {epoch_score} | Vintage Power ⚡" + + RPC.update( + details=details, + state=state, + large_image="rustchain_logo", # Assumes 'rustchain_logo' asset exists in Discord App + large_text="RustChain Proof-of-Antiquity", + start=start_time, + buttons=[{"label": "Start Mining", "url": "https://rustchain.org"}] + ) + print(f"Updated status: {details} - {state}") + else: + RPC.update( + details="Idle / Connecting...", + state="Waiting for miner stats...", + large_image="rustchain_logo", + start=start_time + ) + print("Miner not found or API error.") + + time.sleep(15) + +if __name__ == "__main__": + main()