-
-
Notifications
You must be signed in to change notification settings - Fork 48
Open
Labels
bountyRTC bounty rewardRTC bounty rewardhelp wantedExtra attention is neededExtra attention is needed
Description
CI/CD Pipeline — 75 RTC Bounty
Set up a GitHub Actions CI pipeline that runs on every PR. This is a force multiplier — it makes every future contribution better.
Requirements
Workflow: .github/workflows/ci.yml
Must run on every push to main and every PR:
- Linting — flake8 or ruff with reasonable config (not overly strict on existing code)
- Type checking — mypy on new code (gradual adoption, not whole repo)
- Unit tests — pytest suite with at least 10 meaningful tests covering:
_compute_hardware_id()— verify different inputs produce different hashesvalidate_fingerprint_data()— VM detection, clock drift thresholdscurrent_slot()— epoch calculation from genesis timestamp- Balance operations — credit, debit, transfer validation
- API endpoint responses — health, epoch, miners (mocked)
- Address validation — RTC address format
- Hardware multiplier lookup — correct values for G4, G5, modern, etc.
- Attestation TTL — expired vs valid attestations
- Fee calculation — withdrawal fees, transfer fees
- Nonce replay protection — duplicate detection
- Security scan — bandit or safety for known vulnerability patterns
- PR status checks — Block merge if CI fails
Badge:
Add CI status badge to README:
[](https://github.com/Scottcjn/Rustchain/actions/workflows/ci.yml)Payout Structure
| Milestone | RTC |
|---|---|
| Working CI workflow (lint + tests run on PR) | 30 |
| 10+ meaningful tests passing | 25 |
| Security scan + PR status checks + badge | 20 |
Partial credit available.
Key Files to Test
rustchain_v2_integrated_v2.2.1_rip200.py— Main node serverrewards_implementation_rip200.py— Reward calculationrip_200_round_robin_1cpu1vote.py— Consensus logicfingerprint_checks.py— Hardware fingerprinting
Constraints
- Tests must be self-contained (no live API dependency in CI)
- Use mocking/fixtures for database and network calls
- Keep CI run under 5 minutes
- Don't break existing code — the linter config should be lenient on legacy code
Submission
- Comment on this issue that you're working on it
- Submit a PR with the workflow file + test suite
- Show the CI passing on your fork before submitting
- Include screenshot of green CI checks
What Gets Rejected
- Empty workflow files that just echo "tests pass"
- Tests that don't actually test anything (
assert True) - Overly strict linting that flags 500+ existing issues
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bountyRTC bounty rewardRTC bounty rewardhelp wantedExtra attention is neededExtra attention is needed