Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
402b214
docs: fix manual install commands and repository structure paths
autonomy414941 Feb 22, 2026
46cb78d
feat: add /api/badge/<miner_id> endpoint + GitHub Action for mining s…
AdnanMehr8 Feb 22, 2026
938f05e
feat: add GitHub gamification β€” welcome bot, auto-labeler, stale bot,…
Feb 22, 2026
fa6a648
feat: add dynamic badges and contributor engagement section to README
Feb 22, 2026
f654c21
feat: add --version flag to all miners
Pitrat-wav Feb 23, 2026
696429c
docs: add requirements.txt
Pitrat-wav Feb 23, 2026
8becd34
feat: add colored output to all miners
Pitrat-wav Feb 23, 2026
b656fd3
feat: add JSON output mode to universal miner
Pitrat-wav Feb 23, 2026
7e8a271
docs: add installation troubleshooting section
nicepopo86-lang Feb 23, 2026
5b9de27
feat: add reusable mining status badge action
nicepopo86-lang Feb 23, 2026
0caf5c5
feat: add BoTTube API integration example
nicepopo86-lang Feb 23, 2026
6da30da
fix: correct f-string quoting in hardware_fingerprint output
Feb 23, 2026
fb2f3ea
Merge pull request #363 from autonomy414941/fix/hardware-fingerprint-…
Scottcjn Feb 23, 2026
248948b
fix: fail closed on mock signature mode outside test runtime
Feb 23, 2026
c6dcea2
fix: prevent unauthenticated sensitive API disclosure
Feb 23, 2026
29d5a32
Merge pull request #366 from autonomy414941/fix/mock-signature-fail-c…
Scottcjn Feb 23, 2026
6e1b71a
Merge pull request #368 from autonomy414941/fix/api-sensitive-disclos…
Scottcjn Feb 23, 2026
ac9679b
security: validate limit query params to avoid endpoint 500s (#372)
autonomy414941 Feb 24, 2026
c573672
[BOUNTY] GitHub Action: RustChain Mining Status Badge β€” 40 RTC
Feb 24, 2026
da28fd6
[BOUNTY] GitHub Action: RustChain Mining Status Badge β€” 40 RTC
Feb 24, 2026
8432daa
[BOUNTY] GitHub Action: RustChain Mining Status Badge β€” 40 RTC
Feb 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# RustChain Code Owners
# These users will be auto-requested for review on PRs touching these paths

# Core node & consensus β€” security-critical
rustchain_v2_integrated*.py @Scottcjn
rip_200_round_robin_1cpu1vote.py @Scottcjn
rewards_implementation_rip200.py @Scottcjn

# Security & fingerprinting
fingerprint_checks.py @Scottcjn
hardware_fingerprint.py @Scottcjn
rustchain_crypto.py @Scottcjn

# Wallet & transfers
rustchain_wallet_*.py @Scottcjn

# CI/CD & repo config
.github/ @Scottcjn

# Documentation β€” community can review
# docs/ (no owner = anyone can review)
59 changes: 59 additions & 0 deletions .github/ISSUE_TEMPLATE/bounty-claim.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
name: Bounty Claim
description: Claim an RTC bounty for your contribution
title: "[Bounty Claim] "
labels: [bounty-claim]
body:
- type: markdown
attributes:
value: |
## Claim an RTC Bounty
Fill out this form after your PR is merged to receive your RTC payment.
**Reference rate: 1 RTC = $0.10 USD**

- type: input
id: pr-link
attributes:
label: Merged PR Link
description: Link to your merged pull request
placeholder: https://github.com/Scottcjn/Rustchain/pull/123
validations:
required: true

- type: input
id: bounty-issue
attributes:
label: Bounty Issue Link
description: Link to the bounty issue you completed
placeholder: https://github.com/Scottcjn/rustchain-bounties/issues/123
validations:
required: true

- type: input
id: wallet
attributes:
label: RTC Wallet Name
description: Your RustChain wallet name (create one at rustchain.org/wallet.html)
placeholder: my-wallet-name
validations:
required: true

- type: dropdown
id: tier
attributes:
label: Bounty Tier
options:
- Micro (1-10 RTC)
- Standard (20-50 RTC)
- Major (75-100 RTC)
- Critical (100-150 RTC)
validations:
required: true

- type: textarea
id: summary
attributes:
label: What did you do?
description: Brief summary of your contribution
placeholder: Fixed the epoch settlement calculation for edge cases...
validations:
required: true
82 changes: 82 additions & 0 deletions .github/ISSUE_TEMPLATE/bug-report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
name: Bug Report
description: Report a bug in RustChain node, miner, or wallet
title: "[Bug] "
labels: [bug]
body:
- type: markdown
attributes:
value: |
## Report a Bug
Thanks for helping improve RustChain! Bug fixes can earn RTC bounties.

- type: dropdown
id: component
attributes:
label: Component
options:
- Node (rustchain_v2_integrated)
- Miner (rustchain_*_miner)
- Wallet (rustchain_wallet_*)
- Consensus (RIP-200)
- API Endpoint
- Block Explorer
- Documentation
- Other
validations:
required: true

- type: textarea
id: description
attributes:
label: What happened?
description: Clear description of the bug
placeholder: When I run the miner with --wallet flag, it crashes with...
validations:
required: true

- type: textarea
id: expected
attributes:
label: Expected behavior
description: What should have happened?
validations:
required: true

- type: textarea
id: reproduce
attributes:
label: Steps to reproduce
description: How can we reproduce this?
placeholder: |
1. Run `python3 rustchain_linux_miner.py --wallet test`
2. Wait for attestation cycle
3. See error in log
validations:
required: true

- type: input
id: version
attributes:
label: Version / Commit
description: Which version or commit hash?
placeholder: v2.2.1-rip200 or commit abc1234

- type: dropdown
id: os
attributes:
label: Operating System
options:
- Linux (x86_64)
- Linux (ARM/aarch64)
- Linux (PowerPC)
- macOS (Apple Silicon)
- macOS (Intel)
- Windows
- Other

- type: textarea
id: logs
attributes:
label: Relevant logs
description: Paste any error messages or logs
render: shell
51 changes: 51 additions & 0 deletions .github/ISSUE_TEMPLATE/feature-request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
name: Feature Request
description: Suggest a new feature or improvement
title: "[Feature] "
labels: [enhancement]
body:
- type: markdown
attributes:
value: |
## Suggest a Feature
Great ideas can become bounties! Feature implementations earn RTC.

- type: textarea
id: problem
attributes:
label: Problem or motivation
description: What problem does this solve?
placeholder: Currently there's no way to...
validations:
required: true

- type: textarea
id: solution
attributes:
label: Proposed solution
description: How should this work?
validations:
required: true

- type: textarea
id: alternatives
attributes:
label: Alternatives considered
description: Other approaches you thought about

- type: dropdown
id: scope
attributes:
label: Scope
options:
- Small (few hours)
- Medium (1-2 days)
- Large (week+)
- Not sure

- type: checkboxes
id: willing
attributes:
label: Contribution
options:
- label: I'd like to implement this myself (for RTC bounty)
- label: I need help implementing this
31 changes: 31 additions & 0 deletions .github/actions/mining-status-badge/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# RustChain Mining Status Badge Action

A reusable GitHub Action that writes a RustChain mining status badge into a README file.

## Usage

```yaml
- uses: ./.github/actions/mining-status-badge
with:
wallet: my-wallet-name
readme-path: README.md
badge-style: flat-square
```

## Inputs

- `wallet` (required): RustChain wallet used in `/api/badge/{wallet}`.
- `readme-path` (default: `README.md`): Target file.
- `badge-style` (default: `flat-square`): Shields.io badge style.

## Behavior

If the marker block exists, it is replaced:

```md
<!-- rustchain-mining-badge-start -->
![RustChain Mining Status](https://img.shields.io/endpoint?...)
<!-- rustchain-mining-badge-end -->
```

If missing, a new section `## Mining Status` is appended to the file.
68 changes: 68 additions & 0 deletions .github/actions/mining-status-badge/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
name: RustChain Mining Status Badge
description: Updates a README badge for RustChain mining status
author: Scottcjn
branding:
icon: cpu
color: blue

inputs:
wallet:
description: RustChain wallet identifier for /api/badge/{wallet}
required: true
readme-path:
description: Path to README file to update
required: false
default: README.md
badge-style:
description: Shields.io badge style for the endpoint URL
required: false
default: flat-square

runs:
using: composite
steps:
- name: Update mining badge block
shell: bash
run: |
set -euo pipefail

WALLET="${{ inputs.wallet }}"
README="${{ inputs.readme-path }}"
STYLE="${{ inputs.badge-style }}"
BADGE_URL="https://img.shields.io/endpoint?url=https://rustchain.org/api/badge/${WALLET}&style=${STYLE}"
BLOCK_START="<!-- rustchain-mining-badge-start -->"
BLOCK_END="<!-- rustchain-mining-badge-end -->"
MARKDOWN="${BLOCK_START}\n![RustChain Mining Status](${BADGE_URL})${BLOCK_END}"

if [ ! -f "$README" ]; then
echo "README file not found: $README"
exit 1
fi

WALLET_ENV="$WALLET"
STYLE_ENV="$STYLE"
export WALLET="$WALLET_ENV"
export STYLE="$STYLE_ENV"
python3 - "$README" <<'PY'
import sys
from pathlib import Path
readme = Path(sys.argv[1])
text = readme.read_text(encoding="utf-8")
start = "<!-- rustchain-mining-badge-start -->"
end = "<!-- rustchain-mining-badge-end -->"
wallet = __import__('os').environ['WALLET']
style = __import__('os').environ.get('STYLE', 'flat-square')
badge_url = f"https://img.shields.io/endpoint?url=https://rustchain.org/api/badge/{wallet}&style={style}"
block = f"{start}\n![RustChain Mining Status]({badge_url}){end}"

start_idx = text.find(start)
end_idx = text.find(end)
if start_idx != -1 and end_idx != -1 and end_idx > start_idx:
new = text[:start_idx] + block + text[end_idx + len(end):]
else:
new = text.rstrip() + "\n\n## Mining Status\n" + block + "\n"

readme.write_text(new, encoding="utf-8")
PY

echo "Updated $README with mining badge for wallet: $WALLET"
71 changes: 71 additions & 0 deletions .github/labeler.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
# Auto-label PRs based on changed file paths
# Used by .github/workflows/labeler.yml

security:
- changed-files:
- any-glob-to-any-file:
- 'fingerprint_checks.py'
- 'hardware_fingerprint.py'
- 'rustchain_crypto.py'
- '**/auth*'
- '**/crypto*'
- '**/security*'

consensus:
- changed-files:
- any-glob-to-any-file:
- 'rip_200_round_robin_1cpu1vote.py'
- 'rewards_implementation_rip200.py'
- '**/consensus*'
- '**/epoch*'

miner:
- changed-files:
- any-glob-to-any-file:
- 'rustchain_*_miner.py'
- 'rustchain_universal_miner.py'
- '**/miner*'

wallet:
- changed-files:
- any-glob-to-any-file:
- 'rustchain_wallet_*.py'
- 'rustchain_crypto.py'
- '**/wallet*'
- '**/transfer*'

documentation:
- changed-files:
- any-glob-to-any-file:
- '**/*.md'
- 'docs/**'
- 'README*'

tests:
- changed-files:
- any-glob-to-any-file:
- 'tests/**'
- 'test_*'
- '*_test.py'
- 'node/tests/**'

ci:
- changed-files:
- any-glob-to-any-file:
- '.github/**'
- 'Dockerfile'
- 'docker-compose*'

node:
- changed-files:
- any-glob-to-any-file:
- 'rustchain_v2_integrated*.py'
- 'ergo_*'
- 'node/**'

api:
- changed-files:
- any-glob-to-any-file:
- 'rustchain_v2_integrated*.py'
- '**/api*'
- '**/endpoint*'
Loading
Loading