diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4fa01540..ea59952d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,28 +1,52 @@ # Contributing to Rustchain +[![Bounties](https://img.shields.io/github/issues/Scottcjn/rustchain-bounties/bounty?label=open%20bounties&color=brightgreen)](https://github.com/Scottcjn/rustchain-bounties/issues?q=is%3Aissue+is%3Aopen+label%3Abounty) +[![RTC Pool](https://img.shields.io/badge/RTC%20Pool-5%2C900%2B%20RTC-gold)](https://github.com/Scottcjn/rustchain-bounties/issues?q=is%3Aissue+is%3Aopen+label%3Abounty) + Thank you for your interest in contributing to Rustchain! Every contribution helps build a stronger Proof-of-Antiquity blockchain ecosystem. +**All contributions earn RTC tokens** โ€” browse [open bounties](https://github.com/Scottcjn/rustchain-bounties/issues?q=is%3Aissue+is%3Aopen+label%3Abounty) to find paid tasks. + ## ๐Ÿš€ Quick Start -1. **Fork** the repository -2. **Clone** your fork locally -3. **Create a branch** for your changes (`git checkout -b feature/my-contribution`) -4. **Make your changes** and test them -5. **Commit** with a clear message -6. **Push** to your fork and open a **Pull Request** +1. **Browse bounties**: Check [open bounties](https://github.com/Scottcjn/rustchain-bounties/issues?q=is%3Aissue+is%3Aopen+label%3Abounty) for paid tasks +2. **Claim**: Comment "I would like to work on this" on an issue +3. **Fork** the repository +4. **Clone** your fork locally +5. **Create a branch** for your changes (`git checkout -b feature/my-contribution`) +6. **Make your changes** and test them +7. **Commit** with a clear message +8. **Push** to your fork and open a **Pull Request** +9. **Get paid**: RTC tokens sent after merge! + +### ๐Ÿ’ฌ Need Help? + +- **Discord**: [Join our server](https://discord.gg/VqVVS2CW9Q) for real-time help +- **GitHub Issues**: Ask questions on the bounty issue +- **First time?** Comment on any bounty and we'll help you set up an RTC wallet ## ๐Ÿ’ฐ Earning RTC Tokens -All merged contributions earn RTC tokens! See the bounty tiers: +All merged contributions earn RTC tokens! **Reference rate: 1 RTC = $0.10 USD** + +### Bounty Tiers + +| Tier | Reward (RTC) | USD Value | Examples | +| ---- | ------ | ------ | -------- | +| Micro | 1-10 RTC | $0.10-$1.00 | Typo fix, small docs, simple test, star bounty | +| Standard | 10-50 RTC | $1-$5 | Feature, refactor, new endpoint, tutorial | +| Major | 50-200 RTC | $5-$20 | Security fix, consensus improvement, integration | +| Critical | 200-500 RTC | $20-$50 | Vulnerability patch, protocol upgrade, red team | + +### How to Claim Bounties -| Tier | Reward | Examples | -| ---- | ------ | -------- | -| Micro | 1-10 RTC | Typo fix, small docs, simple test | -| Standard | 20-50 RTC | Feature, refactor, new endpoint | -| Major | 75-100 RTC | Security fix, consensus improvement | -| Critical | 100-150 RTC | Vulnerability patch, protocol upgrade | +1. Find an [open bounty](https://github.com/Scottcjn/rustchain-bounties/issues?q=is%3Aissue+is%3Aopen+label%3Abounty) +2. Comment: **"I would like to work on this"** +3. Complete the work per acceptance criteria +4. Submit PR or proof links +5. Receive RTC after verification -Browse [open bounties](https://github.com/Scottcjn/rustchain-bounties/issues) to find tasks with specific RTC rewards. +**Wallet setup**: RTC wallets are simple string names (e.g., `my-cool-wallet`). First-time contributors: comment on any bounty and we'll help you get started! ## ๐Ÿ“‹ Types of Contributions diff --git a/README.md b/README.md index 9b94f562..4a9b62ea 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ [![Total Paid](https://img.shields.io/badge/Total%20Paid-22%2C756%20RTC-gold)](BOUNTY_LEDGER.md) -[Browse All Bounties](https://github.com/Scottcjn/rustchain-bounties/issues?q=is%3Aissue+is%3Aopen+label%3Abounty) ยท [Easy Bounties](https://github.com/Scottcjn/rustchain-bounties/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) ยท [Red Team](https://github.com/Scottcjn/rustchain-bounties/issues?q=is%3Aissue+is%3Aopen+label%3Ared-team) ยท [Payout Ledger](BOUNTY_LEDGER.md) ยท [What is RustChain?](https://github.com/Scottcjn/RustChain) +[Browse All Bounties](https://github.com/Scottcjn/rustchain-bounties/issues?q=is%3Aissue+is%3Aopen+label%3Abounty) ยท [Easy Bounties](https://github.com/Scottcjn/rustchain-bounties/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) ยท [Red Team](https://github.com/Scottcjn/rustchain-bounties/issues?q=is%3Aissue+is%3Aopen+label%3Ared-team) ยท [Payout Ledger](BOUNTY_LEDGER.md) ยท [Contributing Guide](CONTRIBUTING.md) ยท [What is RustChain?](https://github.com/Scottcjn/RustChain) @@ -76,6 +76,7 @@ Once verified, RTC is sent to your wallet. First time? We will help you set one | **RustChain** | [github.com/Scottcjn/RustChain](https://github.com/Scottcjn/RustChain) | | **Block Explorer** | [50.28.86.131/explorer](https://50.28.86.131/explorer) | | **Traction Report** | [Q1 2026 Developer Traction](https://github.com/Scottcjn/RustChain/blob/main/docs/DEVELOPER_TRACTION_Q1_2026.md) | +| **Contributing Guide** | [CONTRIBUTING.md](CONTRIBUTING.md) | | **Discord** | [discord.gg/VqVVS2CW9Q](https://discord.gg/VqVVS2CW9Q) | | **Wallet Setup** | Comment on any bounty and we will help | diff --git a/docs/POSTMAN_COLLECTION_GUIDE.md b/docs/POSTMAN_COLLECTION_GUIDE.md new file mode 100644 index 00000000..671ef1d3 --- /dev/null +++ b/docs/POSTMAN_COLLECTION_GUIDE.md @@ -0,0 +1,251 @@ +# RustChain Postman Collection Guide + +## Overview + +This Postman Collection provides a complete set of API requests for testing and interacting with the RustChain blockchain platform. The collection is generated from the official OpenAPI 3.0 specification and includes pre-configured tests, environment variables, and authentication setup. + +## Installation + +### Step 1: Import the Collection + +1. Open Postman +2. Click **Import** (top left) +3. Select `RustChain_Postman_Collection.json` +4. Click **Import** + +### Step 2: Configure Environment Variables + +The collection uses the following variables: + +| Variable | Default Value | Description | +|----------|--------------|-------------| +| `base_url` | `https://api.rustchain.org/v1` | Production API endpoint | +| `testnet_url` | `https://testnet-api.rustchain.org/v1` | Testnet API endpoint | +| `api_key` | (empty) | Your API key for authenticated requests | +| `wallet_address` | (empty) | Wallet address for balance/transaction queries | +| `block_number` | `1` | Block number for block queries | +| `limit` | `20` | Pagination limit for list endpoints | +| `offset` | `0` | Pagination offset for list endpoints | + +### Step 3: Set Up Authentication + +The collection supports two authentication methods: + +#### API Key Authentication (Default) +- Header: `X-API-Key: {{api_key}}` +- Set your API key in the `api_key` environment variable + +#### Bearer Token Authentication +- Header: `Authorization: Bearer ` +- Replace the auth type in specific requests as needed + +## Collection Structure + +### ๐Ÿ“ System +System health and status endpoints. + +- **Health Check** - Verify node health and version + - Method: `GET /health` + - Response: Status, version, timestamp + +### ๐Ÿ“ Blockchain +Blockchain data endpoints. + +- **Get Current Epoch** - Retrieve current epoch information + - Method: `GET /epoch` + - Response: Epoch number, block height, timestamp + +- **Get Block by Number** - Fetch specific block details + - Method: `GET /block/{block_number}` + - Parameters: `block_number` (path) + - Response: Block hash, transactions, miner info + +### ๐Ÿ“ Mining +Mining-related endpoints. + +- **List Miners** - Get active miners on the network + - Method: `GET /api/miners` + - Parameters: `limit`, `offset` (query) + - Response: Array of miners with address, hashrate, blocks mined + +### ๐Ÿ“ Wallet +Wallet and transaction endpoints. + +- **Get Wallet Balance** - Check wallet balance + - Method: `GET /wallet/balance` + - Parameters: `address` (query, required) + - Response: Balance in RTC and wei + +- **List Transactions** - Get transaction history + - Method: `GET /transactions` + - Parameters: `address` (required), `limit` (query) + - Response: Array of transactions with hash, from, to, value, timestamp + +### ๐Ÿ“ Attestation +Attestation-related endpoints. + +- **Submit Attestation** - Submit new attestation to network + - Method: `POST /attest/submit` + - Body: JSON with `data` and `signature` + - Response: Transaction hash and status + +## Usage Examples + +### Example 1: Check Node Health + +```bash +curl -X GET "https://api.rustchain.org/v1/health" +``` + +Expected Response: +```json +{ + "status": "healthy", + "version": "1.0.0", + "timestamp": 1640000000 +} +``` + +### Example 2: Get Wallet Balance + +1. Set `wallet_address` variable to your wallet address +2. Send request to **Get Wallet Balance** +3. View balance in RTC and wei + +### Example 3: Submit Attestation + +1. Prepare your attestation data and signature +2. Update the request body with your data: +```json +{ + "data": { + "type": "your_attestation_type", + "payload": "your_payload" + }, + "signature": "0x_your_signature" +} +``` +3. Send POST request +4. Receive transaction hash + +## Automated Tests + +Each request includes built-in test scripts that validate: +- โœ… HTTP status code (200) +- โœ… Required response fields exist +- โœ… Data type correctness +- โœ… Expected value ranges + +### Running Tests + +1. Select the collection or folder +2. Click **Runner** (bottom left) +3. Configure iterations and delay +4. Click **Run** + +### Test Results + +Tests will show: +- โœ… Passed tests (green) +- โŒ Failed tests (red) +- โฑ๏ธ Response times +- ๐Ÿ“Š Response sizes + +## Environment Switching + +### Production +```json +{ + "base_url": "https://api.rustchain.org/v1" +} +``` + +### Testnet +```json +{ + "base_url": "https://testnet-api.rustchain.org/v1" +} +``` + +To switch environments: +1. Click environment selector (top right) +2. Choose **Production** or **Testnet** +3. Variables update automatically + +## Troubleshooting + +### Issue: 401 Unauthorized +**Solution:** Set your API key in the `api_key` variable + +### Issue: 404 Not Found +**Solution:** +- Verify `base_url` is correct +- Check that the endpoint path matches the API version + +### Issue: 400 Bad Request +**Solution:** +- Verify required parameters are set +- Check request body JSON syntax +- Ensure wallet addresses are valid format + +### Issue: Tests Failing +**Solution:** +- Check response structure matches expected schema +- Verify API endpoint is returning valid JSON +- Review test script for custom validation logic + +## Advanced Usage + +### Collection Variables + +Use collection variables for dynamic values: +```javascript +// In pre-request script +pm.collectionVariables.set("last_block", pm.response.json().number); +``` + +### Chaining Requests + +Use response data in subsequent requests: +```javascript +// In test script +var jsonData = pm.response.json(); +pm.collectionVariables.set("tx_hash", jsonData.tx_hash); +``` + +### Custom Test Scripts + +Add custom validations in the **Tests** tab: +```javascript +pm.test("Balance is positive", function () { + var jsonData = pm.response.json(); + pm.expect(parseFloat(jsonData.balance)).to.be.above(0); +}); +``` + +## API Reference + +For complete API documentation, see: +- [OpenAPI Specification](./openapi.yaml) +- [API Reference](./API_REFERENCE.md) + +## Support + +- **Issues:** https://github.com/Scottcjn/rustchain-bounties/issues +- **Documentation:** https://rustchain.org/docs +- **Community:** Discord/Telegram channels + +## Version History + +| Version | Date | Changes | +|---------|------|---------| +| 1.0.0 | 2026-03-13 | Initial release from OpenAPI 3.0 spec | + +## License + +MIT License - See [LICENSE](../LICENSE) for details. + +--- + +**Generated from OpenAPI 3.0 Specification** +**Compatible with Postman v8.0+** diff --git a/docs/RustChain_Postman_Collection.json b/docs/RustChain_Postman_Collection.json new file mode 100644 index 00000000..5dc25fe4 --- /dev/null +++ b/docs/RustChain_Postman_Collection.json @@ -0,0 +1,295 @@ +{ + "info": { + "name": "RustChain REST API", + "description": "Complete Postman Collection for RustChain blockchain platform API endpoints", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", + "version": "1.0.0" + }, + "auth": { + "type": "apikey", + "apikey": [ + { + "key": "key", + "value": "X-API-Key", + "type": "string" + }, + { + "key": "value", + "value": "{{api_key}}", + "type": "string" + } + ] + }, + "variable": [ + { + "key": "base_url", + "value": "https://api.rustchain.org/v1", + "type": "string" + }, + { + "key": "testnet_url", + "value": "https://testnet-api.rustchain.org/v1", + "type": "string" + }, + { + "key": "api_key", + "value": "", + "type": "string" + } + ], + "item": [ + { + "name": "System", + "description": "System health and status endpoints", + "item": [ + { + "name": "Health Check", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{base_url}}/health", + "host": ["{{base_url}}"], + "path": ["health"] + }, + "description": "Returns the health status of the node" + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "pm.test(\"Response has status field\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.status).to.exist;", + "});" + ], + "type": "text/javascript" + } + } + ] + } + ] + }, + { + "name": "Blockchain", + "description": "Blockchain data endpoints", + "item": [ + { + "name": "Get Current Epoch", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{base_url}}/epoch", + "host": ["{{base_url}}"], + "path": ["epoch"] + }, + "description": "Returns information about the current epoch" + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "pm.test(\"Response has epoch field\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.epoch).to.exist;", + "});" + ], + "type": "text/javascript" + } + } + ] + }, + { + "name": "Get Block by Number", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{base_url}}/block/{{block_number}}", + "host": ["{{base_url}}"], + "path": ["block", "{{block_number}}"] + }, + "description": "Returns information about a specific block" + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "pm.test(\"Response has block number\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.number).to.eql(parseInt(pm.variables.replaceIn(\"{{block_number}}\")));", + "});" + ], + "type": "text/javascript" + } + } + ] + } + ] + }, + { + "name": "Mining", + "description": "Mining-related endpoints", + "item": [ + { + "name": "List Miners", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{base_url}}/api/miners?limit={{limit}}&offset={{offset}}", + "host": ["{{base_url}}"], + "path": ["api", "miners"], + "query": [ + { + "key": "limit", + "value": "{{limit}}", + "description": "Number of miners to return" + }, + { + "key": "offset", + "value": "{{offset}}", + "description": "Offset for pagination" + } + ] + }, + "description": "Returns a list of active miners on the network" + }, + "response": [] + } + ] + }, + { + "name": "Wallet", + "description": "Wallet and transaction endpoints", + "item": [ + { + "name": "Get Wallet Balance", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{base_url}}/wallet/balance?address={{wallet_address}}", + "host": ["{{base_url}}"], + "path": ["wallet", "balance"], + "query": [ + { + "key": "address", + "value": "{{wallet_address}}", + "description": "Wallet address to query" + } + ] + }, + "description": "Returns the balance of a specified wallet address" + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "pm.test(\"Response has balance field\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.balance).to.exist;", + "});" + ], + "type": "text/javascript" + } + } + ] + }, + { + "name": "List Transactions", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{base_url}}/transactions?address={{wallet_address}}&limit={{limit}}", + "host": ["{{base_url}}"], + "path": ["transactions"], + "query": [ + { + "key": "address", + "value": "{{wallet_address}}", + "description": "Wallet address to query transactions for" + }, + { + "key": "limit", + "value": "{{limit}}", + "description": "Number of transactions to return" + } + ] + }, + "description": "Returns transactions for a given address" + }, + "response": [] + } + ] + }, + { + "name": "Attestation", + "description": "Attestation-related endpoints", + "item": [ + { + "name": "Submit Attestation", + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"data\": {\n \"type\": \"example_attestation\",\n \"payload\": \"sample_data\"\n },\n \"signature\": \"0x...\"\n}" + }, + "url": { + "raw": "{{base_url}}/attest/submit", + "host": ["{{base_url}}"], + "path": ["attest", "submit"] + }, + "description": "Submit a new attestation to the network" + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "pm.test(\"Response has tx_hash\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.tx_hash).to.exist;", + "});" + ], + "type": "text/javascript" + } + } + ] + } + ] + } + ] +} diff --git a/docs/installation-recordings/1615/README.md b/docs/installation-recordings/1615/README.md new file mode 100644 index 00000000..7a937556 --- /dev/null +++ b/docs/installation-recordings/1615/README.md @@ -0,0 +1,64 @@ +# RustChain Installation Recording - Issue #1615 + +## Overview +This directory contains the installation recording for RustChain miner as requested in issue #1615. + +## Files +- `installation.cast` - Asciinema recording of the complete installation process +- `installation.svg` - Visual representation of the terminal session +- `install.sh` - Installation script used in the recording + +## Installation Steps Recorded + +1. **Check prerequisites** - Verify Rust/Cargo installation +2. **Clone repository** - Download rustchain-bounties from GitHub +3. **Build miner** - Compile with `cargo build --release` +4. **Verify binary** - Confirm the executable was created +5. **Test run** - Execute fingerprint test with `--test-only` flag +6. **Show help** - Display available command-line options + +## How to View + +### Option 1: Play locally with asciinema +```bash +asciinema play installation.cast +``` + +### Option 2: View SVG +Open `installation.svg` in any web browser. + +### Option 3: Upload to asciinema.org +```bash +asciinema upload installation.cast +``` + +## Installation Commands + +```bash +# Clone the repository +git clone https://github.com/Scottcjn/rustchain-bounties.git +cd rustchain-bounties/rustchain-miner + +# Build the miner +cargo build --release + +# Test the installation +./target/release/rustchain-miner --test-only + +# Start mining (replace with your wallet name) +./target/release/rustchain-miner --wallet YOUR_WALLET +``` + +## System Requirements +- Rust 1.70+ (cargo, rustc) +- Git +- Linux/macOS/Windows + +## Recording Details +- Duration: ~2 minutes +- Terminal: 80x24 +- Shell: bash +- Recorded: 2026-03-13 + +## Notes +The recording demonstrates a clean installation from scratch, showing all steps needed for a new user to get started with RustChain mining. diff --git a/docs/installation-recordings/1615/install.sh b/docs/installation-recordings/1615/install.sh new file mode 100755 index 00000000..d74d33f1 --- /dev/null +++ b/docs/installation-recordings/1615/install.sh @@ -0,0 +1,70 @@ +#!/bin/bash +# RustChain Miner Installation Demo +# This script demonstrates the complete installation process + +set -e + +echo "โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—" +echo "โ•‘ RustChain Miner Installation Demo โ•‘" +echo "โ•‘ Recording for Issue #1615 โ•‘" +echo "โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•" +echo "" + +# Step 1: Check prerequisites +echo "๐Ÿ“‹ Step 1: Checking prerequisites..." +export PATH="$HOME/.cargo/bin:$PATH" + +if command -v cargo &> /dev/null; then + echo "โœ… Rust/Cargo installed:" + cargo --version + rustc --version +else + echo "โŒ Rust not found. Please install Rust first:" + echo " curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh" + exit 1 +fi +echo "" + +# Step 2: Clone repository +echo "๐Ÿ“ฆ Step 2: Cloning RustChain repository..." +if [ ! -d "rustchain-bounties" ]; then + git clone https://github.com/Scottcjn/rustchain-bounties.git + echo "โœ… Repository cloned successfully" +else + echo "โœ… Repository already exists" +fi +cd rustchain-bounties/rustchain-miner +echo "" + +# Step 3: Build the miner +echo "๐Ÿ”จ Step 3: Building rustchain-miner (release mode)..." +echo " This may take a few minutes..." +cargo build --release 2>&1 | tail -5 +echo "โœ… Build complete!" +echo "" + +# Step 4: Verify binary +echo "๐Ÿ“ Step 4: Verifying binary..." +ls -lh target/release/rustchain-miner +echo "โœ… Binary created successfully" +echo "" + +# Step 5: Test run +echo "๐Ÿงช Step 5: Running fingerprint test..." +./target/release/rustchain-miner --test-only 2>&1 | head -20 +echo "" + +# Step 6: Show help +echo "โ“ Step 6: Showing available options..." +./target/release/rustchain-miner --help 2>&1 | head -30 +echo "" + +echo "โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—" +echo "โ•‘ โœ… Installation Complete! โ•‘" +echo "โ•‘ The miner is ready to use. โ•‘" +echo "โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•" +echo "" +echo "Next steps:" +echo " - Run with: ./target/release/rustchain-miner --wallet YOUR_WALLET" +echo " - For production: sudo cp target/release/rustchain-miner /usr/local/bin/" +echo "" diff --git a/docs/installation-recordings/1615/installation.cast b/docs/installation-recordings/1615/installation.cast new file mode 100644 index 00000000..05184d43 --- /dev/null +++ b/docs/installation-recordings/1615/installation.cast @@ -0,0 +1,156 @@ +{"version": 2, "width": 80, "height": 24, "timestamp": 1773334313, "env": {"SHELL": "/bin/bash", "TERM": "xterm"}} +[0.002105, "o", "โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—\r\nโ•‘ RustChain Miner Installation Demo โ•‘\r\nโ•‘ Recording for Issue #1615 โ•‘\r\nโ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•\r\n\r\n๐Ÿ“‹ Step 1: Checking prerequisites...\r\n"] +[0.002497, "o", "โœ… Rust/Cargo installed:\r\n"] +[0.031382, "o", "cargo 1.94.0 (85eff7c80 2026-01-15)\r\n"] +[0.067293, "o", "rustc 1.94.0 (4a4ef493e 2026-03-02)\r\n"] +[0.068601, "o", "\r\n๐Ÿ“ฆ Step 2: Cloning RustChain repository...\r\n"] +[0.069652, "o", "Cloning into 'rustchain-bounties'...\r\n"] +[51.686326, "o", "remote: Enumerating objects: 807, done. \r\nremote: Counting objects: 0% (1/330) \rremote: Counting objects: 1% (4/330) \rremote: Counting objects: 2% (7/330) \rremote: Counting objects: 3% (10/330) \rremote: Counting objects: 4% (14/330) \rremote: Counting objects: 5% (17/330) \rremote: Counting objects: 6% (20/330) \rremote: Counting objects: 7% (24/330) \rremote: Counting objects: 8% (27/330) \rremote: Counting objects: 9% (30/330) \rremote: Counting objects: 10% (33/330) \rremote: Counting objects: 11% (37/330) \rremote: Counting objects: 12% (40/330) \rremote: Counting objects: 13% (43/330) \rremote: Counting objects: 14% (47/330) \rremote: Counting objects: 15% (50/330) \rremote: Counting objects: 16% (53/330) \rremote: Counting objects: 17% (57/330) \rremote: Counting objects: 18% (60/330) \rremote: Counting objects: 19% (63/330) \rremote: Counting objects: 20% (66/330) \rremote: Counting objects: 21% (70/330) \rremote: Counting objects: 22% (73/330) \rremote: Counting objects: 23% (76/330) \rremote: Counting objects: 24% (80/330) \rremote: Counting objects: 25% (83/330) \rremote: Counting objects: 26% (86/330) \rremote: Counting objects: 27% (90/330) \rremote: Counting objects: 28% (93/330) \rremote: Counting objects: 29% (96/330) \rremote: Counting objects: 30% (99/330) \rremote: Counting objects: 31% (103/330) \rremote: Counting objects: 32% (106/330) \rremote: Counting objects: 33% (109/330) \rremote: Counting objects: 34% (113/330) \rremote: Counting objects: 35% (116/330) \rremote: Counting objects: 36% (119/330) \rremote: Counting objects: 37% (123/330) \rremote: Counting objects: 38% (126/330) \rremote: Counting objects: 39% (129/330) \rremote: Counting objects: 40% (132/330) \rremote: Counting objects: 41% (136/330) \rremote: Counting objects: 42% (139/330) \rremote: Counting objects: 43% (142/330) \rremote: Counting objects: 44% (146/330) \rremote: Counting objects: 45% (149/330) \rremote: Counting objects: 46% (152/330) \rremote: Counting objects: 47% (156/330) \rremote: Counting objects: 48% (159/330) \rremote: Counting objects: 49% (162/330) \rremote: Counting objects: 50% (165/330) \rremote: Counting objects: 51% (169/330) \rremote: Counting objects: 52% (172/330) \rremote: Counting objects: 53% (175/330) \rremote: Counting objects: 54% (179/330) \rremote: Counting objects: 55% (182/330) \rremote: Counting objects: 56% (185/330) \rremote: Counting objects: 57% (189/330) \rremote: Counting objects: 58% (192/330) \rremote: Counting objects: 59% (195/330) \rremote: Counting objects: 60% (198/330) \rremote: Counting objects: 61% (202/330) \rremote: Counting objects: 62% (205/330) \rremote: Counting objects: 63% (208/330) \r"] +[51.686389, "o", "remote: Counting objects: 64% (212/330) \rremote: Counting objects: 65% (215/330) \rremote: Counting objects: 66% (218/330) \rremote: Counting objects: 67% (222/330) \rremote: Counting objects: 68% (225/330) \rremote: Counting objects: 69% (228/330) \rremote: Counting objects: 70% (231/330) \rremote: Counting objects: 71% (235/330) \rremote: Counting objects: 72% (238/330) \rremote: Counting objects: 73% (241/330) \rremote: Counting objects: 74% (245/330) \rremote: Counting objects: 75% (248/330) \rremote: Counting objects: 76% (251/330) \rremote: Counting objects: 77% (255/330) \rremote: Counting objects: 78% (258/330) \rremote: Counting objects: 79% (261/330) \rremote: Counting objects: 80% (264/330) \rremote: Counting objects: 81% (268/330) \rremote: Counting objects: 82% (271/330) \rremote: Counting objects: 83% (274/330) \rremote: Counting objects: 84% (278/330) \rremote: Counting objects: 85% (281/330) \rremote: Counting objects: 86% (284/330) \rremote: Counting objects: 87% (288/330) \rremote: Counting objects: 88% (291/330) \rremote: Counting objects: 89% (294/330) \rremote: Counting objects: 90% (297/330) \rremote: Counting objects: 91% (301/330) \rremote: Counting objects: 92% (304/330) \rremote: Counting objects: 93% (307/330) \rremote: Counting objects: 94% (311/330) \rremote: Counting objects: 95% (314/330) \rremote: Counting objects: 96% (317/330) \rremote: Counting objects: 97% (321/330) \rremote: Counting objects: 98% (324/330) \rremote: Counting objects: 99% (327/330) \rremote: Counting objects: 100% (330/330) \rremote: Counting objects: 100% (330/330), done. \r\nremote: Compressing objects: 0% (1/178) \rremote: Compressing objects: 1% (2/178) \rremote: Compressing objects: 2% (4/178) \rremote: Compressing objects: 3% (6/178) \rremote: Compressing objects: 4% (8/178) \rremote: Compressing objects: 5% (9/178) \rremote: Compressing objects: 6% (11/178) \rremote: Compressing objects: 7% (13/178) \rremote: Compressing objects: 8% (15/178) \rremote: Compressing objects: 9% (17/178) \rremote: Compressing objects: 10% (18/178) \rremote: Compressing objects: 11% (20/178) \rremote: Compressing objects: 12% (22/178) \rremote: Compressing objects: 13% (24/178) \rremote: Compressing objects: 14% (25/178) \rremote: Compressing objects: 15% (27/178) \rremote: Compressing objects: 16% (29/178) \r"] +[51.6864, "o", "remote: Compressing objects: 17% (31/178) \rremote: Compressing objects: 18% (33/178) \rremote: Compressing objects: 19% (34/178) \rremote: Compressing objects: 20% (36/178) \rremote: Compressing objects: 21% (38/178) \rremote: Compressing objects: 22% (40/178) \rremote: Compressing objects: 23% (41/178) \rremote: Compressing objects: 24% (43/178) \rremote: Compressing objects: 25% (45/178) \r"] +[51.686556, "o", "remote: Compressing objects: 26% (47/178) \rremote: Compressing objects: 27% (49/178) \rremote: Compressing objects: 28% (50/178) \rremote: Compressing objects: 29% (52/178) \r"] +[51.686671, "o", "remote: Compressing objects: 30% (54/178) \rremote: Compressing objects: 31% (56/178) \rremote: Compressing objects: 32% (57/178) \rremote: Compressing objects: 33% (59/178) \rremote: Compressing objects: 34% (61/178) \rremote: Compressing objects: 35% (63/178) \rremote: Compressing objects: 36% (65/178) \rremote: Compressing objects: 37% (66/178) \rremote: Compressing objects: 38% (68/178) \rremote: Compressing objects: 39% (70/178) \rremote: Compressing objects: 40% (72/178) \rremote: Compressing objects: 41% (73/178) \rremote: Compressing objects: 42% (75/178) \rremote: Compressing objects: 43% (77/178) \rremote: Compressing objects: 44% (79/178) \rremote: Compressing objects: 45% (81/178) \rremote: Compressing objects: 46% (82/178) \rremote: Compressing objects: 47% (84/178) \rremote: Compressing objects: 48% (86/178) \rremote: Compressing objects: 49% (88/178) \rremote: Compressing objects: 50% (89/178) \rremote: Compressing objects: 51% (91/178) \rremote: Compressing objects: 52% (93/178) \r"] +[51.708155, "o", "remote: Compressing objects: 53% (95/178) \rremote: Compressing objects: 54% (97/178) \rremote: Compressing objects: 55% (98/178) \rremote: Compressing objects: 56% (100/178) \rremote: Compressing objects: 57% (102/178) \rremote: Compressing objects: 58% (104/178) \rremote: Compressing objects: 59% (106/178) \rremote: Compressing objects: 60% (107/178) \rremote: Compressing objects: 61% (109/178) \rremote: Compressing objects: 62% (111/178) \rremote: Compressing objects: 63% (113/178) \rremote: Compressing objects: 64% (114/178) \rremote: Compressing objects: 65% (116/178) \rremote: Compressing objects: 66% (118/178) \rremote: Compressing objects: 67% (120/178) \rremote: Compressing objects: 68% (122/178) \rremote: Compressing objects: 69% (123/178) \rremote: Compressing objects: 70% (125/178) \rremote: Compressing objects: 71% (127/178) \rremote: Compressing objects: 72% (129/178) \rremote: Compressing objects: 73% (130/178) \rremote: Compressing objects: 74% (132/178) \rremote: Compressing objects: 75% (134/178) \rremote: Compressing objects: 76% (136/178) \rremote: Compressing objects: 77% (138/178) \rremote: Compressing objects: 78% (139/178) \rremote: Compressing objects: 79% (141/178) \rremote: Compressing objects: 80% (143/178) \rremote: Compressing objects: 81% (145/178) \rremote: Compressing objects: 82% (146/178) \rremote: Compressing objects: 83% (148/178) \rremote: Compressing objects: 84% (150/178) \rremote: Compressing objects: 85% (152/178) \rremote: Compressing objects: 86% (154/178) \rremote: Compressing objects: 87% (155/178) \rremote: Compressing objects: 88% (157/178) \rremote: Compressing objects: 89% (159/178) \rremote: Compressing objects: 90% (161/178) \rremote: Compressing objects: 91% (162/178) \rremote: Compressing objects: 92% (164/178) \rremote: Compressing objects: 93% (166/178) \rremote: Compressing objects: 94% (168/178) \rremote: Compressing objects: 95% (170/178) \rremote: Compressing objects: 96% (171/178) \rremote: Compressing objects: 97% (173/178) \rremote: Compressing objects: 98% (175/178) \rremote: Compressing objects: 99% (177/178) \rremote: Compressing objects: 100% (178/178) \rremote: Compressing objects: 100% (178/178), done. \r\n"] +[51.762743, "o", "Receiving objects: 0% (1/807)\rReceiving objects: 1% (9/807)\r"] +[51.763146, "o", "Receiving objects: 2% (17/807)\r"] +[51.763553, "o", "Receiving objects: 3% (25/807)\r"] +[51.763655, "o", "Receiving objects: 4% (33/807)\r"] +[51.763732, "o", "Receiving objects: 5% (41/807)\r"] +[51.784056, "o", "Receiving objects: 6% (49/807)\r"] +[51.78418, "o", "Receiving objects: 7% (57/807)\r"] +[51.838164, "o", "Receiving objects: 8% (65/807)\rReceiving objects: 9% (73/807)\r"] +[51.8383, "o", "Receiving objects: 10% (81/807)\r"] +[51.838439, "o", "Receiving objects: 11% (89/807)\rReceiving objects: 12% (97/807)\r"] +[51.838626, "o", "Receiving objects: 13% (105/807)\r"] +[51.838801, "o", "Receiving objects: 14% (113/807)\r"] +[51.862044, "o", "Receiving objects: 15% (122/807)\rReceiving objects: 16% (130/807)\r"] +[51.862071, "o", "Receiving objects: 17% (138/807)\rReceiving objects: 18% (146/807)\rReceiving objects: 19% (154/807)\r"] +[51.862162, "o", "Receiving objects: 20% (162/807)\rReceiving objects: 21% (170/807)\r"] +[51.862264, "o", "Receiving objects: 22% (178/807)\r"] +[51.862377, "o", "Receiving objects: 23% (186/807)\r"] +[51.862443, "o", "Receiving objects: 24% (194/807)\r"] +[51.914997, "o", "Receiving objects: 25% (202/807)\r"] +[51.915327, "o", "Receiving objects: 26% (210/807)\r"] +[51.917318, "o", "Receiving objects: 27% (218/807)\r"] +[51.917453, "o", "Receiving objects: 28% (226/807)\r"] +[51.918072, "o", "Receiving objects: 29% (235/807)\r"] +[51.918448, "o", "Receiving objects: 30% (243/807)\r"] +[51.918838, "o", "Receiving objects: 31% (251/807)\r"] +[51.91894, "o", "Receiving objects: 32% (259/807)\rReceiving objects: 33% (267/807)\r"] +[51.938521, "o", "Receiving objects: 34% (275/807)\r"] +[51.938689, "o", "Receiving objects: 35% (283/807)\r"] +[51.938946, "o", "Receiving objects: 36% (291/807)\r"] +[51.939544, "o", "Receiving objects: 37% (299/807)\r"] +[51.93975, "o", "Receiving objects: 38% (307/807)\r"] +[51.991131, "o", "Receiving objects: 39% (315/807)\r"] +[51.992993, "o", "Receiving objects: 40% (323/807)\r"] +[51.99338, "o", "Receiving objects: 41% (331/807)\r"] +[51.993707, "o", "Receiving objects: 42% (339/807)\r"] +[51.993856, "o", "Receiving objects: 43% (348/807)\r"] +[51.994321, "o", "Receiving objects: 44% (356/807)\r"] +[51.994566, "o", "Receiving objects: 45% (364/807)\r"] +[51.994662, "o", "Receiving objects: 46% (372/807)\r"] +[51.994756, "o", "Receiving objects: 47% (380/807)\r"] +[51.995028, "o", "Receiving objects: 48% (388/807)\r"] +[51.995117, "o", "Receiving objects: 49% (396/807)\r"] +[51.995294, "o", "Receiving objects: 50% (404/807)\r"] +[51.99544, "o", "Receiving objects: 51% (412/807)\r"] +[51.995603, "o", "Receiving objects: 52% (420/807)\r"] +[51.99571, "o", "Receiving objects: 53% (428/807)\r"] +[51.99583, "o", "Receiving objects: 54% (436/807)\r"] +[51.99591, "o", "Receiving objects: 55% (444/807)\r"] +[51.99602, "o", "Receiving objects: 56% (452/807)\r"] +[51.996135, "o", "Receiving objects: 57% (460/807)\r"] +[52.014539, "o", "Receiving objects: 58% (469/807)\r"] +[52.014681, "o", "Receiving objects: 59% (477/807)\r"] +[52.014765, "o", "Receiving objects: 60% (485/807)\r"] +[52.014806, "o", "Receiving objects: 61% (493/807)\rReceiving objects: 62% (501/807)\r"] +[52.014813, "o", "Receiving objects: 63% (509/807)\r"] +[52.014852, "o", "Receiving objects: 64% (517/807)\rReceiving objects: 65% (525/807)\rReceiving objects: 66% (533/807)\r"] +[52.01486, "o", "Receiving objects: 67% (541/807)\r"] +[52.014948, "o", "Receiving objects: 68% (549/807)\rReceiving objects: 69% (557/807)\rReceiving objects: 70% (565/807)\rReceiving objects: 71% (573/807)\rReceiving objects: 72% (582/807)\rReceiving objects: 73% (590/807)\rReceiving objects: 74% (598/807)\rReceiving objects: 75% (606/807)\rReceiving objects: 76% (614/807)\r"] +[52.015135, "o", "Receiving objects: 77% (622/807)\rReceiving objects: 78% (630/807)\rReceiving objects: 79% (638/807)\rReceiving objects: 80% (646/807)\rReceiving objects: 81% (654/807)\rReceiving objects: 82% (662/807)\rReceiving objects: 83% (670/807)\rReceiving objects: 84% (678/807)\rReceiving objects: 85% (686/807)\r"] +[52.015204, "o", "Receiving objects: 86% (695/807)\r"] +[52.015373, "o", "Receiving objects: 87% (703/807)\r"] +[52.015439, "o", "Receiving objects: 88% (711/807)\r"] +[52.015503, "o", "Receiving objects: 89% (719/807)\r"] +[52.015636, "o", "Receiving objects: 90% (727/807)\r"] +[52.015799, "o", "Receiving objects: 91% (735/807)\r"] +[52.015808, "o", "Receiving objects: 92% (743/807)\r"] +[52.017675, "o", "Receiving objects: 93% (751/807)\r"] +[52.071148, "o", "Receiving objects: 94% (759/807)\r"] +[52.071278, "o", "remote: Total 807 (delta 240), reused 152 (delta 152), pack-reused 477 (from 2) \r\n"] +[52.07134, "o", "Receiving objects: 95% (767/807)\rReceiving objects: 96% (775/807)\r"] +[52.071434, "o", "Receiving objects: 97% (783/807)\r"] +[52.071652, "o", "Receiving objects: 98% (791/807)\rReceiving objects: 99% (799/807)\r"] +[52.071792, "o", "Receiving objects: 100% (807/807)\rReceiving objects: 100% (807/807), 454.85 KiB | 1.44 MiB/s, done.\r\n"] +[52.07193, "o", "Resolving deltas: 0% (0/337)\r"] +[52.072015, "o", "Resolving deltas: 1% (4/337)\r"] +[52.072101, "o", "Resolving deltas: 2% (7/337)\r"] +[52.072138, "o", "Resolving deltas: 3% (11/337)\rResolving deltas: 4% (14/337)\rResolving deltas: 5% (17/337)\r"] +[52.072182, "o", "Resolving deltas: 6% (21/337)\r"] +[52.07225, "o", "Resolving deltas: 7% (25/337)\r"] +[52.072263, "o", "Resolving deltas: 8% (27/337)\r"] +[52.072372, "o", "Resolving deltas: 9% (32/337)\rResolving deltas: 10% (34/337)\r"] +[52.072379, "o", "Resolving deltas: 11% (38/337)\r"] +[52.072463, "o", "Resolving deltas: 12% (42/337)\rResolving deltas: 13% (44/337)\r"] +[52.072534, "o", "Resolving deltas: 14% (49/337)\rResolving deltas: 15% (51/337)\r"] +[52.072582, "o", "Resolving deltas: 16% (54/337)\r"] +[52.072653, "o", "Resolving deltas: 17% (58/337)\r"] +[52.072787, "o", "Resolving deltas: 18% (61/337)\rResolving deltas: 19% (65/337)\rResolving deltas: 20% (68/337)\r"] +[52.072867, "o", "Resolving deltas: 21% (71/337)\rResolving deltas: 22% (75/337)\rResolving deltas: 23% (79/337)\rResolving deltas: 24% (81/337)\r"] +[52.072924, "o", "Resolving deltas: 25% (85/337)\r"] +[52.073062, "o", "Resolving deltas: 26% (89/337)\r"] +[52.073327, "o", "Resolving deltas: 27% (91/337)\r"] +[52.073645, "o", "Resolving deltas: 28% (95/337)\rResolving deltas: 29% (98/337)\rResolving deltas: 30% (103/337)\rResolving deltas: 31% (105/337)\rResolving deltas: 32% (109/337)\rResolving deltas: 33% (112/337)\rResolving deltas: 34% (115/337)\rResolving deltas: 35% (120/337)\r"] +[52.073675, "o", "Resolving deltas: 36% (122/337)\rResolving deltas: 37% (125/337)\r"] +[52.073832, "o", "Resolving deltas: 38% (129/337)\rResolving deltas: 39% (132/337)\rResolving deltas: 40% (135/337)\rResolving deltas: 41% (139/337)\rResolving deltas: 42% (142/337)\rResolving deltas: 43% (146/337)\r"] +[52.073844, "o", "Resolving deltas: 44% (149/337)\r"] +[52.073888, "o", "Resolving deltas: 45% (153/337)\r"] +[52.073896, "o", "Resolving deltas: 46% (156/337)\r"] +[52.073927, "o", "Resolving deltas: 47% (160/337)\rResolving deltas: 48% (162/337)\r"] +[52.07396, "o", "Resolving deltas: 49% (166/337)\rResolving deltas: 50% (169/337)\r"] +[52.07402, "o", "Resolving deltas: 51% (172/337)\rResolving deltas: 52% (176/337)\r"] +[52.074038, "o", "Resolving deltas: 53% (180/337)\r"] +[52.074248, "o", "Resolving deltas: 54% (183/337)\rResolving deltas: 55% (186/337)\rResolving deltas: 56% (189/337)\rResolving deltas: 57% (193/337)\rResolving deltas: 58% (196/337)\rResolving deltas: 59% (199/337)\rResolving deltas: 60% (205/337)\rResolving deltas: 61% (206/337)\rResolving deltas: 62% (210/337)\rResolving deltas: 63% (213/337)\rResolving deltas: 64% (216/337)\rResolving deltas: 65% (220/337)\rResolving deltas: 66% (223/337)\r"] +[52.074294, "o", "Resolving deltas: 67% (226/337)\rResolving deltas: 68% (230/337)\rResolving deltas: 69% (233/337)\r"] +[52.074337, "o", "Resolving deltas: 70% (236/337)\rResolving deltas: 71% (240/337)\r"] +[52.074443, "o", "Resolving deltas: 72% (244/337)\rResolving deltas: 73% (248/337)\r"] +[52.074459, "o", "Resolving deltas: 74% (250/337)\rResolving deltas: 75% (253/337)\rResolving deltas: 76% (257/337)\rResolving deltas: 77% (260/337)\r"] +[52.074519, "o", "Resolving deltas: 78% (263/337)\r"] +[52.0746, "o", "Resolving deltas: 79% (268/337)\r"] +[52.074688, "o", "Resolving deltas: 80% (272/337)\r"] +[52.074699, "o", "Resolving deltas: 81% (273/337)\r"] +[52.074867, "o", "Resolving deltas: 82% (277/337)\r"] +[52.074939, "o", "Resolving deltas: 83% (280/337)\r"] +[52.075049, "o", "Resolving deltas: 84% (286/337)\rResolving deltas: 85% (287/337)\r"] +[52.075113, "o", "Resolving deltas: 86% (290/337)\r"] +[52.075163, "o", "Resolving deltas: 87% (294/337)\r"] +[52.075292, "o", "Resolving deltas: 88% (299/337)\rResolving deltas: 89% (301/337)\r"] +[52.075349, "o", "Resolving deltas: 90% (304/337)\rResolving deltas: 91% (308/337)\r"] +[52.075398, "o", "Resolving deltas: 92% (311/337)\r"] +[52.075481, "o", "Resolving deltas: 93% (314/337)\r"] +[52.07556, "o", "Resolving deltas: 94% (317/337)\rResolving deltas: 95% (321/337)\r"] +[52.075633, "o", "Resolving deltas: 96% (325/337)\r"] +[52.075709, "o", "Resolving deltas: 97% (327/337)\r"] +[52.075749, "o", "Resolving deltas: 98% (331/337)\r"] +[52.075881, "o", "Resolving deltas: 99% (334/337)\r"] +[52.075959, "o", "Resolving deltas: 100% (337/337)\r"] +[52.076036, "o", "Resolving deltas: 100% (337/337), done.\r\n"] +[52.114363, "o", "โœ… Repository cloned successfully\r\n\r\n๐Ÿ”จ Step 3: Building rustchain-miner (release mode)...\r\n This may take a few minutes...\r\n"] +[113.785488, "o", " Compiling tokio-rustls v0.26.4\r\n Compiling hyper-rustls v0.27.7\r\n Compiling reqwest v0.12.28\r\n Compiling rustchain-miner v0.1.0 (/tmp/rustchain-install-demo/rustchain-bounties/rustchain-miner)\r\n Finished `release` profile [optimized] target(s) in 1m 01s\r\n"] +[113.785736, "o", "โœ… Build complete!\r\n\r\n๐Ÿ“ Step 4: Verifying binary...\r\n"] +[113.78666, "o", "-rwxrwxr-x 2 moonma moonma 4.9M Mar 13 00:53 target/release/rustchain-miner\r\n"] +[113.786815, "o", "โœ… Binary created successfully\r\n\r\n๐Ÿงช Step 5: Running fingerprint test...\r\n"] +[113.787638, "o", "โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—\r\nโ•‘ RustChain Fingerprint Test Suite โ•‘\r\nโ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•\r\n\r\n"] +[113.848359, "o", "Hardware: Intel(R) Core(TM) Ultra 7 255HX (x86_64 / modern)\r\nCores: 20 | RAM: 15 GB | OS: Ubuntu 6.6.87.2-microsoft-standard-WSL2\r\n\r\nRunning all 6 RIP-PoA fingerprint checks...\r\nโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\r\n[2026-03-12T16:53:48Z INFO rustchain_miner::fingerprint] Running fingerprint check 1/6: Clock-Skew & Oscillator Drift\r\n[2026-03-12T16:53:48Z INFO rustchain_miner::fingerprint] Running fingerprint check 2/6: Cache Timing Fingerprint\r\n"] +[113.855659, "o", "[2026-03-12T16:53:48Z INFO rustchain_miner::fingerprint] Running fingerprint check 3/6: SIMD Unit Identity\r\n"] +[113.856804, "o", "[2026-03-12T16:53:48Z INFO rustchain_miner::fingerprint] Running fingerprint check 4/6: Thermal Drift Entropy\r\n"] +[113.896885, "o", "[2026-03-12T16:53:48Z INFO rustchain_miner::fingerprint] Running fingerprint check 5/6: Instruction Path Jitter\r\n"] +[113.933069, "o", "[2026-03-12T16:53:48Z INFO rustchain_miner::fingerprint] Running fingerprint check 6/6: Anti-Emulation / VM Detection\r\n"] +[113.976148, "o", "[2026-03-12T16:53:48Z WARN rustchain_miner::fingerprint::anti_emulation] VM/emulation indicators detected: [\"cpuinfo:hypervisor_flag\", \"/proc/scsi/scsi:virtual\"]\r\n [โœ“ PASS] Clock-Skew & Oscillator Drift\r\n [โœ“ PASS] Cache Timing Fingerprint\r\n [โœ“ PASS] SIMD Unit Identity\r\n [โœ“ PASS] Thermal Drift Entropy\r\n"] +[113.976999, "o", "\r\nโ“ Step 6: Showing available options...\r\n"] +[113.977932, "o", "Native Rust miner for the RustChain Proof-of-Antiquity blockchain\r\n\r\nUsage: rustchain-miner [OPTIONS]\r\n\r\nOptions:\r\n --wallet Wallet / miner ID to mine with\r\n --node RustChain node URL [default: https://50.28.86.131]\r\n --dry-run Build and display the attestation payload without submitting\r\n --show-payload Print the exact JSON payload that would be sent\r\n --test-only Run fingerprint checks only (no attestation)\r\n -h, --help Print help\r\n -V, --version Print version\r\n"] +[113.978144, "o", "\r\nโ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—\r\n"] +[113.978158, "o", "โ•‘ โœ… Installation Complete! โ•‘\r\nโ•‘ The miner is ready to use. โ•‘\r\nโ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•\r\n\r\nNext steps:\r\n - Run with: ./target/release/rustchain-miner --wallet YOUR_WALLET\r\n"] +[113.978288, "o", " - For production: sudo cp target/release/rustchain-miner /usr/local/bin/\r\n\r\n"] diff --git a/docs/installation-recordings/1615/installation.svg b/docs/installation-recordings/1615/installation.svg new file mode 100644 index 00000000..6a37c4f5 --- /dev/null +++ b/docs/installation-recordings/1615/installation.svg @@ -0,0 +1 @@ +โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—โ•‘RustChainMinerInstallationDemoโ•‘โ•‘RecordingforIssue#1615โ•‘โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•๐Ÿ“‹Step1:Checkingprerequisites...โœ…Rust/Cargoinstalled:cargo1.94.0(85eff7c802026-01-15)rustc1.94.0(4a4ef493e2026-03-02)๐Ÿ“ฆStep2:CloningRustChainrepository...Cloninginto'rustchain-bounties'...remote:Enumeratingobjects:807,done.remote:Countingobjects:100%(330/330),done.remote:Compressingobjects:100%(178/178),done.remote:Total807(delta240),reused152(delta152),pack-reused477(from2)Receivingobjects:100%(807/807),454.85KiB|1.44MiB/s,done.Resolvingdeltas:100%(337/337),done.โœ…Repositoryclonedsuccessfully๐Ÿ”จStep3:Buildingrustchain-miner(releasemode)...Thismaytakeafewminutes...Compilingtokio-rustlsv0.26.4Compilinghyper-rustlsv0.27.7Compilingreqwestv0.12.28Compilingrustchain-minerv0.1.0(/tmp/rustchain-install-demo/rustchain-bounties/rustchain-miner)Finished`release`profile[optimized]target(s)in1m01sโœ…Buildcomplete!๐Ÿ“Step4:Verifyingbinary...-rwxrwxr-x2moonmamoonma4.9MMar1300:53target/release/rustchain-minerโœ…Binarycreatedsuccessfully๐ŸงชStep5:Runningfingerprinttest...โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—โ•‘RustChainFingerprintTestSuiteโ•‘โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•Hardware:Intel(R)Core(TM)Ultra7255HX(x86_64/modern)Cores:20|RAM:15GB|OS:Ubuntu6.6.87.2-microsoft-standard-WSL2Runningall6RIP-PoAfingerprintchecks...โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€[2026-03-12T16:53:48ZINFOrustchain_miner::fingerprint]Runningfingerprintcheck1/6:Clock-Skew&OscillatorDrifteck2/6:CacheTimingFingerprinteck3/6:SIMDUnitIdentityeck4/6:ThermalDriftEntropyeck5/6:InstructionPathJittereck6/6:Anti-Emulation/VMDetection[2026-03-12T16:53:48ZWARNrustchain_miner::fingerprint::anti_emulation]VM/emulationindicatorsdetected:["cpuinfo:hypervisor_flag","/proc/scsi/scsi:virtual"][โœ“PASS]Clock-Skew&OscillatorDrift[โœ“PASS]CacheTimingFingerprint[โœ“PASS]SIMDUnitIdentity[โœ“PASS]ThermalDriftEntropyโ“Step6:Showingavailableoptions...NativeRustminerfortheRustChainProof-of-AntiquityblockchainUsage:rustchain-miner[OPTIONS]Options:--wallet<WALLET>Wallet/minerIDtominewith--node<NODE>RustChainnodeURL[default:https://50.28.86.131]--dry-runBuildanddisplaytheattestationpayloadwithoutsubmitting--show-payloadPrinttheexactJSONpayloadthatwouldbesent--test-onlyRunfingerprintchecksonly(noattestation)-h,--helpPrinthelp-V,--versionPrintversionโ•‘โœ…InstallationComplete!โ•‘โ•‘Theminerisreadytouse.โ•‘Nextsteps:-Runwith:./target/release/rustchain-miner--walletYOUR_WALLETremote:Countingobjects:63%(208/330)remote:Compressingobjects:16%(29/178)remote:Compressingobjects:25%(45/178)remote:Compressingobjects:29%(52/178)remote:Compressingobjects:52%(93/178)Receivingobjects:1%(9/807)Receivingobjects:2%(17/807)Receivingobjects:3%(25/807)Receivingobjects:4%(33/807)Receivingobjects:5%(41/807)Receivingobjects:6%(49/807)Receivingobjects:7%(57/807)Receivingobjects:9%(73/807)Receivingobjects:10%(81/807)Receivingobjects:12%(97/807)Receivingobjects:13%(105/807)Receivingobjects:14%(113/807)Receivingobjects:16%(130/807)Receivingobjects:19%(154/807)Receivingobjects:21%(170/807)Receivingobjects:22%(178/807)Receivingobjects:23%(186/807)Receivingobjects:24%(194/807)Receivingobjects:25%(202/807)Receivingobjects:26%(210/807)Receivingobjects:27%(218/807)Receivingobjects:28%(226/807)Receivingobjects:29%(235/807)Receivingobjects:30%(243/807)Receivingobjects:31%(251/807)Receivingobjects:33%(267/807)Receivingobjects:34%(275/807)Receivingobjects:35%(283/807)Receivingobjects:36%(291/807)Receivingobjects:37%(299/807)Receivingobjects:38%(307/807)Receivingobjects:39%(315/807)Receivingobjects:40%(323/807)Receivingobjects:41%(331/807)Receivingobjects:42%(339/807)Receivingobjects:43%(348/807)Receivingobjects:44%(356/807)Receivingobjects:45%(364/807)Receivingobjects:46%(372/807)Receivingobjects:47%(380/807)Receivingobjects:48%(388/807)Receivingobjects:49%(396/807)Receivingobjects:50%(404/807)Receivingobjects:51%(412/807)Receivingobjects:52%(420/807)Receivingobjects:53%(428/807)Receivingobjects:54%(436/807)Receivingobjects:55%(444/807)Receivingobjects:56%(452/807)Receivingobjects:57%(460/807)Receivingobjects:58%(469/807)Receivingobjects:59%(477/807)Receivingobjects:60%(485/807)Receivingobjects:62%(501/807)Receivingobjects:63%(509/807)Receivingobjects:66%(533/807)Receivingobjects:67%(541/807)Receivingobjects:76%(614/807)Receivingobjects:85%(686/807)Receivingobjects:86%(695/807)Receivingobjects:87%(703/807)Receivingobjects:88%(711/807)Receivingobjects:89%(719/807)Receivingobjects:90%(727/807)Receivingobjects:91%(735/807)Receivingobjects:92%(743/807)Receivingobjects:93%(751/807)Receivingobjects:94%(759/807)Receivingobjects:96%(775/807)Receivingobjects:97%(783/807)Receivingobjects:99%(799/807)Resolvingdeltas:0%(0/337)Resolvingdeltas:1%(4/337)Resolvingdeltas:2%(7/337)Resolvingdeltas:5%(17/337)Resolvingdeltas:6%(21/337)Resolvingdeltas:7%(25/337)Resolvingdeltas:8%(27/337)Resolvingdeltas:10%(34/337)Resolvingdeltas:11%(38/337)Resolvingdeltas:13%(44/337)Resolvingdeltas:15%(51/337)Resolvingdeltas:16%(54/337)Resolvingdeltas:17%(58/337)Resolvingdeltas:20%(68/337)Resolvingdeltas:24%(81/337)Resolvingdeltas:25%(85/337)Resolvingdeltas:26%(89/337)Resolvingdeltas:27%(91/337)Resolvingdeltas:35%(120/337)Resolvingdeltas:37%(125/337)Resolvingdeltas:43%(146/337)Resolvingdeltas:44%(149/337)Resolvingdeltas:45%(153/337)Resolvingdeltas:46%(156/337)Resolvingdeltas:48%(162/337)Resolvingdeltas:50%(169/337)Resolvingdeltas:52%(176/337)Resolvingdeltas:53%(180/337)Resolvingdeltas:66%(223/337)Resolvingdeltas:69%(233/337)Resolvingdeltas:71%(240/337)Resolvingdeltas:73%(248/337)Resolvingdeltas:77%(260/337)Resolvingdeltas:78%(263/337)Resolvingdeltas:79%(268/337)Resolvingdeltas:80%(272/337)Resolvingdeltas:81%(273/337)Resolvingdeltas:82%(277/337)Resolvingdeltas:83%(280/337)Resolvingdeltas:85%(287/337)Resolvingdeltas:86%(290/337)Resolvingdeltas:87%(294/337)Resolvingdeltas:89%(301/337)Resolvingdeltas:91%(308/337)Resolvingdeltas:92%(311/337)Resolvingdeltas:93%(314/337)Resolvingdeltas:95%(321/337)Resolvingdeltas:96%(325/337)Resolvingdeltas:97%(327/337)Resolvingdeltas:98%(331/337)Resolvingdeltas:99%(334/337)Resolvingdeltas:100%(337/337)-Forproduction:sudocptarget/release/rustchain-miner/usr/local/bin/ \ No newline at end of file