A BSV Overlay Service that enables developers to create and claim bounties for GitHub issues.
This project allows:
- Repository owners/contributors to create bounties for GitHub issues
- Developers to claim bounties by solving issues
- Identity verification using GitHub credentials
The system uses:
- BSV blockchain for secure bounty storage and payment
- Overlay Services Engine for transaction processing
- GitHub OAuth for identity verification
- GitCert certificates for linking GitHub identities to BSV keys
- Node.js v16+ and npm
- Docker and Docker Compose
- Git
- A GitHub account
- MetaNet Client (for wallet funding)
- Clone the repository
git clone https://github.com/yourusername/github-bounty-overlay.git
cd github-bounty-overlay- Install dependencies
npm install- Configure LARS
npm run lars:configFollow the prompts to set up a server private key and configure LARS.
- Set up GitHub OAuth
Create a GitHub OAuth application at https://github.com/settings/developers and set the following environment variables in your .env file:
GITHUB_CLIENT_ID=your_client_id
GITHUB_CLIENT_SECRET=your_client_secret
GITHUB_CALLBACK_URL=http://localhost:3002/auth/github/callback
- Start the development environment
npm run startThis will start LARS with both the backend and frontend.
- Log in with your GitHub account.
- Get a GitHub identity certificate.
- Navigate to "Create Bounty" in the UI.
- Enter the GitHub issue ID (format: "owner/repo#issue_number").
- Enter the repository owner's GitHub username.
- Set the bounty amount (in satoshis) and deadline.
- Click "Create Bounty" to submit.
- Log in with your GitHub account.
- Get a GitHub identity certificate.
- Navigate to "View Bounties" to see available bounties.
- Solve the GitHub issue and submit a Pull Request.
- Click "Claim" on the bounty and enter your PR ID.
- The backend will verify your identity and the PR, then release the funds.
- BountyContract: sCrypt smart contract that locks funds until conditions are met.
- BountyTopicManager: Manages bounty transactions on the BSV blockchain.
- BountyLookupService: Allows querying bounties by various criteria.
- GitHubIdentityService: Verifies GitHub identities and manages certificates.
- MongoDB: Stores bounty data and GitHub identity information.
github-bounty-overlay/
├── backend/
│ ├── src/
│ │ ├── contracts/ # sCrypt smart contracts
│ │ ├── topic-managers/ # Overlay topic managers
│ │ ├── lookup-services/ # Overlay lookup services
│ │ ├── services/ # Business logic services
│ │ └── api/ # API routes
│ └── artifacts/ # Compiled contracts
├── frontend/
│ ├── src/ # React frontend code
│ └── public/ # Static assets
├── local-data/ # LARS local data (generated)
└── deployment-info.json # LARS configuration
You can test the system locally using LARS:
npm run startThe UI will be available at http://localhost:5173 (or the port configured by Vite).
See LICENSE.txt for details.